X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=tos%2Fchips%2Fmsp430%2Fusart%2FHplMsp430Usart.nc;h=fb937871d964a3126fc33e387fb34c49195713f5;hb=1a329382c4f4556fd52d85f4e3f4a67e54911682;hp=1882f5bdf3afc61caa6322883fa96952b1f35506;hpb=3837fe262225242d1629ba72bdf12f6d162ba5c0;p=tinyos-2.x.git diff --git a/tos/chips/msp430/usart/HplMsp430Usart.nc b/tos/chips/msp430/usart/HplMsp430Usart.nc index 1882f5bd..fb937871 100644 --- a/tos/chips/msp430/usart/HplMsp430Usart.nc +++ b/tos/chips/msp430/usart/HplMsp430Usart.nc @@ -1,216 +1,240 @@ /* - * Copyright (c) 2004-2005, Technische Universität Berlin + * Copyright (c) 2004-2005, Technische Universitaet Berlin * All rights reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions * are met: * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * - Neither the name of the Technische Universität Berlin nor the names + * - Neither the name of the Technische Universitaet Berlin nor the names * of its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /** - * Byte-level interface to control a USART. + * Byte-level interface to control a USART. *
The USART can be switched to SPI- or UART-mode. The interface follows
* the convention of being stateless, thus a higher layer has to maintain
* state information. I.e. calling tx will transmit a byte of
* data in the mode (SPI or UART) the USART has been set to before.
*
+ * @author Vlado Handziski (handzisk@tkn.tu-berlin.de)
* @author Jan Hauer (hauer@tkn.tu-berlin.de)
* @author Joe Polastre
* @version $Revision$ $Date$
*/
-
+
#include "msp430usart.h"
interface HplMsp430Usart {
-
+
/**
- * Returns an enum value corresponding to the current mode of the
- * USART module. Allows one to read the module mode, change it, and
- * then reset it back to its original state after use.
+ * Sets the UxCTL Control Register
*/
- async command msp430_usartmode_t getMode();
-
+ async command void setUctl(msp430_uctl_t control);
+
/**
- * Sets the USART mode to one of the options from msp430_usartmode_t
- * defined in MSP430USART.h
- *
- * @return SUCCESS if the mode was changed
+ * Reads the UxCTL Control Register
*/
- async command void setMode(msp430_usartmode_t mode);
-
+ async command msp430_uctl_t getUctl();
+
/**
- * Returns TRUE if the USART has UART TX mode enabled
+ * Sets the UxTCTL Transmit Control Register
*/
- async command bool isUARTtx();
-
+ async command void setUtctl(msp430_utctl_t control);
+
/**
- * Returns TRUE if the USART has UART RX mode enabled
+ * Reads the UxTCTL Transmit Control Register
*/
- async command bool isUARTrx();
-
+ async command msp430_utctl_t getUtctl();
+
+ /**
+ * Sets the UxRCTL Receive Control Register
+ */
+ async command void setUrctl(msp430_urctl_t control);
+
/**
- * Returns TRUE if the USART is set to UART mode (both RX and TX)
+ * Reads the UxRCTL Receive Control Register
*/
- async command bool isUART();
+ async command msp430_urctl_t getUrctl();
- /**
- * Enables both the Rx and the Tx UART modules.
+ /**
+ * Sets the UxBR0 and UxBR1 Baud Rate Control Registers
*/
- async command void enableUART();
+ async command void setUbr(uint16_t ubr);
- /**
- * Disables both the Rx and the Tx UART modules.
+ /**
+ * Reads the UxBR0 and UxBR1 Baud Rate Control Registers
*/
- async command void disableUART();
-
- /**
- * Enables the UART TX functionality of the USART module.
+ async command uint16_t getUbr();
+
+ /**
+ * Sets the UxMCTL Modulation Control Register
*/
- async command void enableUARTTx();
-
- /**
- * Disables the UART TX module.
+ async command void setUmctl(uint8_t umctl);
+
+ /**
+ * Reads the UxMCTL Modulation Control Register
*/
- async command void disableUARTTx();
-
- /**
- * Enables the UART RX functionality of the USART module.
+ async command uint8_t getUmctl();
+
+ async command void resetUsart(bool reset);
+
+ /**
+ * Returns an enum value corresponding to the current mode of the
+ * USART module.
+ */
+ async command msp430_usartmode_t getMode();
+
+ /**
+ * Returns TRUE if the USART has Uart TX mode enabled
*/
- async command void enableUARTRx();
+ async command bool isUartTx();
+
+ /**
+ * Returns TRUE if the USART has Uart RX mode enabled
+ */
+ async command bool isUartRx();
+
+ /**
+ * Returns TRUE if the USART is set to Uart mode (both RX and TX)
+ */
+ async command bool isUart();
- /**
- * Disables the UART RX module.
+ /**
+ * Enables both the Rx and the Tx Uart modules.
*/
- async command void disableUARTRx();
+ async command void enableUart();
- /**
- * Enables the USART when in SPI mode.
+ /**
+ * Disables both the Rx and the Tx Uart modules.
*/
- async command void enableSPI();
+ async command void disableUart();
- /**
- * Disables the USART when in SPI mode.
+ /**
+ * Enables the Uart TX functionality of the USART module.
*/
- async command void disableSPI();
+ async command void enableUartTx();
/**
- * Enables the I2C module (register flags)
+ * Disables the Uart TX module.
*/
- async command void enableI2C();
+ async command void disableUartTx();
/**
- * Disables the I2C module
+ * Enables the Uart RX functionality of the USART module.
*/
- async command void disableI2C();
-
+ async command void enableUartRx();
+
/**
- * Returns TRUE if the USART is set to SPI mode
+ * Disables the Uart RX module.
*/
- async command bool isSPI();
-
- /**
- * Switches USART to SPI mode.
+ async command void disableUartRx();
+
+ /**
+ * Enables the USART when in Spi mode.
*/
- async command void setModeSPI();
-
- /**
- * Switches USART to UART TX mode (RX pins disabled).
- * Interrupts disabled by default.
- */
- async command void setModeUART_TX();
-
- /**
- * Switches USART to UART RX mode (TX pins disabled)..
- * Interrupts disabled by default.
- */
- async command void setModeUART_RX();
-
- /**
- * Switches USART to UART mode (RX and TX enabled)
+ async command void enableSpi();
+
+ /**
+ * Disables the USART when in Spi mode.
+ */
+ async command void disableSpi();
+
+ /**
+ * Returns TRUE if the USART is set to Spi mode
+ */
+ async command bool isSpi();
+
+ /**
+ * Switches USART to Spi mode.
+ */
+ async command void setModeSpi(msp430_spi_config_t* config);
+
+ /**
+ * Switches USART to Uart TX mode (RX pins disabled).
* Interrupts disabled by default.
- */
- async command void setModeUART();
-
+ */
+ async command void setModeUartTx(msp430_uart_config_t* config);
+
/**
- * Returns TRUE if the module is set to I2C mode for MSP430 parts
- * that support hardware I2C.
+ * Switches USART to Uart RX mode (TX pins disabled)..
+ * Interrupts disabled by default.
*/
- async command bool isI2C();
-
+ async command void setModeUartRx(msp430_uart_config_t* config);
+
/**
- * Switches USART to I2C mode for MSP430 parts that support hardware
- * I2C. Interrupts disabled by default.
+ * Switches USART to Uart mode (RX and TX enabled)
+ * Interrupts disabled by default.
*/
- async command void setModeI2C();
-
- async command void setClockSource(uint8_t source);
-
- async command void setClockRate(uint16_t baudrate, uint8_t mctl);
-
+ async command void setModeUart(msp430_uart_config_t* config);
+
/* Dis/enabling of UTXIFG / URXIFG */
async command void disableRxIntr();
async command void disableTxIntr();
+ async command void disableIntr();
async command void enableRxIntr();
async command void enableTxIntr();
-
+ async command void enableIntr();
+
/**
* TRUE if TX interrupt pending, flag must be cleared explicitly
*/
async command bool isTxIntrPending();
-
+
/**
* TRUE if RX interrupt pending, flag must be cleared explicitly
*/
async command bool isRxIntrPending();
-
+
/**
* Clears RX interrupt pending flag
- */
- async command error_t clrRxIntr();
-
+ */
+ async command void clrRxIntr();
+
/**
* Clears TX interrupt pending flag
*/
- async command error_t clrTxIntr();
+ async command void clrTxIntr();
+ /**
+ * Clears both TX and RX interrupt pending flags
+ */
+ async command void clrIntr();
- /**
+ /**
* SUCCESS if the TX buffer is empty and all of the bits have been
* shifted out
*/
async command bool isTxEmpty();
-
- /**
+
+ /**
* Transmit a byte of data. When the transmission is completed,
*
txDone is generated. Only then a new byte may be
* transmitted, otherwise the previous byte will be overwritten.
- * The mode of transmission (UART or SPI) depends on the current
+ * The mode of transmission (Uart or Spi) depends on the current
* state of the USART, which must be managed by a higher layer.
*
* @return SUCCESS always.
*/
async command void tx(uint8_t data);
-
+
/**
* Get current value from RX-buffer.
*
@@ -219,4 +243,3 @@ interface HplMsp430Usart {
async command uint8_t rx();
}
-