From ff7253eba0b30ef68b507dc6a0e479f5c1dc242b Mon Sep 17 00:00:00 2001 From: smckown Date: Mon, 8 Sep 2008 23:31:14 +0000 Subject: [PATCH] Replace the special-purpose Msp430UsciConfigure interface with the parameterized AsyncConfigure interface. Too bad that this interface doesn't exist in standard TOS. --- .../usci/{Msp430UsciConfigure.nc => AsyncConfigure.nc} | 8 +++----- tos/chips/msp430/usci/Msp430SpiB1C.nc | 3 ++- tos/chips/msp430/usci/Msp430SpiP.nc | 3 ++- tos/chips/msp430/usci/Msp430UartA0C.nc | 3 ++- tos/chips/msp430/usci/Msp430UartA1C.nc | 3 ++- tos/chips/msp430/usci/Msp430UartP.nc | 3 ++- tos/chips/msp430/usci/Msp430Usci.h | 9 +++++++++ 7 files changed, 22 insertions(+), 10 deletions(-) rename tos/chips/msp430/usci/{Msp430UsciConfigure.nc => AsyncConfigure.nc} (91%) diff --git a/tos/chips/msp430/usci/Msp430UsciConfigure.nc b/tos/chips/msp430/usci/AsyncConfigure.nc similarity index 91% rename from tos/chips/msp430/usci/Msp430UsciConfigure.nc rename to tos/chips/msp430/usci/AsyncConfigure.nc index 77cb87d2..0c7002d9 100644 --- a/tos/chips/msp430/usci/Msp430UsciConfigure.nc +++ b/tos/chips/msp430/usci/AsyncConfigure.nc @@ -28,13 +28,11 @@ */ /** - * Configuration interface for USCI devices. + * Generic async configuration interface. * * @author R. Steve McKown */ -#include "Msp430Usci.h" - -interface Msp430UsciConfigure { - async command const msp430_usci_config_t* get(); +interface AsyncConfigure { + async command val_t get(); } diff --git a/tos/chips/msp430/usci/Msp430SpiB1C.nc b/tos/chips/msp430/usci/Msp430SpiB1C.nc index 5d9e71c0..9464555f 100644 --- a/tos/chips/msp430/usci/Msp430SpiB1C.nc +++ b/tos/chips/msp430/usci/Msp430SpiB1C.nc @@ -48,7 +48,8 @@ generic configuration Msp430SpiB1C() { interface SpiPacket; interface ArbiterInfo; /* ??? */ } - uses interface Msp430UsciConfigure; + uses interface AsyncConfigure as + Msp430UsciConfigure; } implementation { enum { diff --git a/tos/chips/msp430/usci/Msp430SpiP.nc b/tos/chips/msp430/usci/Msp430SpiP.nc index dc59ce24..fd57695a 100644 --- a/tos/chips/msp430/usci/Msp430SpiP.nc +++ b/tos/chips/msp430/usci/Msp430SpiP.nc @@ -46,7 +46,8 @@ generic module Msp430SpiP() { interface HplMsp430GeneralIO as SIMO; interface HplMsp430GeneralIO as SOMI; interface HplMsp430GeneralIO as SCL; - interface Msp430UsciSpiConfigure; /* maybe just Msp430UsciConfigure */ + interface AsyncConfigure as + Msp430UsciConfigure; interface Counter interface ArbiterInfo; } diff --git a/tos/chips/msp430/usci/Msp430UartA0C.nc b/tos/chips/msp430/usci/Msp430UartA0C.nc index e8e66145..dd310326 100644 --- a/tos/chips/msp430/usci/Msp430UartA0C.nc +++ b/tos/chips/msp430/usci/Msp430UartA0C.nc @@ -48,7 +48,8 @@ generic configuration Msp430UartA0C() { interface UartByte; interface ArbiterInfo; /* ??? */ } - uses interface Msp430UsciConfigure; + uses interface AsyncConfigure as + Msp430UsciConfigure; } implementation { enum { diff --git a/tos/chips/msp430/usci/Msp430UartA1C.nc b/tos/chips/msp430/usci/Msp430UartA1C.nc index dd680564..a5f8a89c 100644 --- a/tos/chips/msp430/usci/Msp430UartA1C.nc +++ b/tos/chips/msp430/usci/Msp430UartA1C.nc @@ -48,7 +48,8 @@ generic configuration Msp430UartA1C() { interface UartByte; interface ArbiterInfo; /* ??? */ } - uses interface Msp430UsciConfigure; + uses interface AsyncConfigure as + Msp430UsciConfigure; } implementation { enum { diff --git a/tos/chips/msp430/usci/Msp430UartP.nc b/tos/chips/msp430/usci/Msp430UartP.nc index 2ef1736f..8fe6bee0 100644 --- a/tos/chips/msp430/usci/Msp430UartP.nc +++ b/tos/chips/msp430/usci/Msp430UartP.nc @@ -44,7 +44,8 @@ generic module Msp430UartP() { interface HplMsp430UsciInt as Interrupts; interface HplMsp430GeneralIO as RXD; interface HplMsp430GeneralIO as TXD; - interface Msp430UsciConfigure; + interface AsyncConfigure as + Msp430UsciConfigure; interface Counter; interface ArbiterInfo; } diff --git a/tos/chips/msp430/usci/Msp430Usci.h b/tos/chips/msp430/usci/Msp430Usci.h index 48299822..54131113 100644 --- a/tos/chips/msp430/usci/Msp430Usci.h +++ b/tos/chips/msp430/usci/Msp430Usci.h @@ -80,6 +80,14 @@ typedef struct { msp430_ren_t ren; } __attribute__ ((packed)) msp430_usci_uart_t; +typedef struct { + uint8_t ctl0; + uint8_t ctl1; + uint16_t brx; + uint8_t mctl; /* ??? */ + msp430_ren_t ren; +} __attribute__ ((packed)) msp430_usci_spi_t; + /* Baud rates for UART mode. Only 32KHz modes work right now. */ typedef enum { /* UCOS16=0. UMCTL = UCBRFx << 4 + UCBRSx << 1 + UCOS16. @@ -94,6 +102,7 @@ typedef enum { typedef union { msp430_usci_uart_t uart; + msp430_usci_spi_t spi; } __attribute__ ((packed)) msp430_usci_config_t; #endif -- 2.39.2