]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/chips/msp430/usci/HplMsp430UsciReg.nc
msp430 usci: add setIfgTx(), setIfgRx()
[tinyos-2.x.git] / tos / chips / msp430 / usci / HplMsp430UsciReg.nc
index 1d3384854eca679b8f01e96db6a9dae7ca2a526d..4a61bbbd89bb4f4021f15f207ca8efdc8df33097 100644 (file)
@@ -10,7 +10,7 @@
  * - 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 Titanium Mirror, Inc. nor the names
  *   of its contributors may be used to endorse or promote products derived
  *   from this software without specific prior written permission.
  *
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
  * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
+
 /**
  * HPL interface to a USCI peripheral device in UART mode.
  *
- * @author R. Steve McKown <smckown@gmail.com>
+ * @author R. Steve McKown <rsmckown@gmail.com>
  */
+
 #include "Msp430Usci.h"
 
 interface HplMsp430UsciReg {
   /**
    * Return the current mode.
    */
-  command msp430usci_mode_t getMode();
+  async command msp430_usci_mode_t getMode();
 
   /**
    * Prepare to set the mode.  If the device supports the requested mode, its
@@ -50,14 +50,14 @@ interface HplMsp430UsciReg {
    * @param msp430usci_mode_t The desired USCI mode.
    * @return bool TRUE if the device supports the requested mode, else FALSE.
    */
-  command bool setMode(msp430_usci_mode_t mode);
+  async command bool setMode(msp430_usci_mode_t mode);
 
   /**
    * Get pointer to the UCxxCTL0 register associated with the USCI device.
    *
    * @return The pointer to the device's UCxxCTL0 register.
    */
-  command uint8_t* ptrCtl0();
+  async command volatile uint8_t* ptrCtl0();
 
   /**
    * Get bits from the UCxxCTL0 register associated with the USCI device.
@@ -67,7 +67,7 @@ interface HplMsp430UsciReg {
    * @return The value of the device's UCxxCTL0 register ANDed with
    * <t>mask</t>.
    */
-  command uint8_t getCtl0(uint8_t mask);
+  async command uint8_t getCtl0(uint8_t mask);
 
   /**
    * Set bits in the UCxxCTL0 register associated with the USCI device.
@@ -75,7 +75,7 @@ interface HplMsp430UsciReg {
    *
    * @parm mask The bits in set in <t>mask</t> to set in UCxxCTL0.
    */
-  command void setCtl0(uint8_t mask);
+  async command void setCtl0(uint8_t mask);
 
   /**
    * Clear bits in the UCxxCTL0 register associated with the USCI device.
@@ -83,175 +83,179 @@ interface HplMsp430UsciReg {
    *
    * @parm mask The bits in set in <t>mask</t> to clear in UCxxCTL0.
    */
-  command void clrCtl0(uint8_t mask);
+  async command void clrCtl0(uint8_t mask);
 
   /**
    * Assign the values of the bits in <t>value</t>, whose corresponding bits in
    * <t>mask</t> are set, in the UCxxCTL0 register.  The operation is
    * equivalent to: <t>UCxxCTL0 = (UCxxCTL0 & ~mask) | (value & mask)</t>.
    */
-  command void assignCtl0(uint8_t mask, uint8_t value);
+  //async command void assignCtl0(uint8_t mask, uint8_t value);
+  async command void assignCtl0(uint8_t value);
 
   /**
    * Manipulate bits in the UCxxCTL1 register.  See the methods that manipulate
    * UCxxCTL0 for more information.
    */
-  command uint8_t* ptrCtl1(uint8_t mask);
-  command uint8_t getCtl1(uint8_t mask);
-  command void setCtl1(uint8_t mask);
-  command void clrCtl1(uint8_t mask);
-  command void assignCtl1(uint8_t mask, uint8_t value);
+  async command volatile uint8_t* ptrCtl1();
+  async command uint8_t getCtl1(uint8_t mask);
+  async command void setCtl1(uint8_t mask);
+  async command void clrCtl1(uint8_t mask);
+  //async command void assignCtl1(uint8_t mask, uint8_t value);
+  async command void assignCtl1(uint8_t value);
 
   /**
    * Manipulate bits in the UCxxBR0 register.  See the methods that manipulate
    * UCxxCTL0 for more information.
    */
-  command uint8_t* ptrBr0(uint8_t mask);
-  command uint8_t getBr0(uint8_t mask);
-  command void setBr0(uint8_t mask);
-  command void clrBr0(uint8_t mask);
-  command void assignBr0(uint8_t mask, uint8_t value);
+  async command volatile uint8_t* ptrBr0();
+  async command uint8_t getBr0(uint8_t mask);
+  async command void setBr0(uint8_t mask);
+  async command void clrBr0(uint8_t mask);
+  //async command void assignBr0(uint8_t mask, uint8_t value);
+  async command void assignBr0(uint8_t value);
 
   /**
    * Manipulate bits in the UCxxBR1 register.  See the methods that manipulate
    * UCxxCTL0 for more information.
    */
-  command uint8_t* ptrBr1(uint8_t mask);
-  command uint8_t getBr1(uint8_t mask);
-  command void setBr1(uint8_t mask);
-  command void clrBr1(uint8_t mask);
-  command void assignBr1(uint8_t mask, uint8_t value);
+  async command volatile uint8_t* ptrBr1();
+  async command uint8_t getBr1(uint8_t mask);
+  async command void setBr1(uint8_t mask);
+  async command void clrBr1(uint8_t mask);
+  //async command void assignBr1(uint8_t mask, uint8_t value);
+  async command void assignBr1(uint8_t value);
 
   /**
    * Manipulate bits in the UCxxMCTL register.  See the methods that manipulate
    * UCxxCTL0 for more information.  These methods perform no operation on
    * providers implementing a USCI_Bx device.
    */
-  command uint8_t* ptrMctl(uint8_t mask);
-  command uint8_t getMctl(uint8_t mask);
-  command void setMctl(uint8_t mask);
-  command void clrMctl(uint8_t mask);
-  command void assignMctl(uint8_t mask, uint8_t value);
+  async command volatile uint8_t* ptrMctl();
+  async command uint8_t getMctl(uint8_t mask);
+  async command void setMctl(uint8_t mask);
+  async command void clrMctl(uint8_t mask);
+  //async command void assignMctl(uint8_t mask, uint8_t value);
+  async command void assignMctl(uint8_t value);
 
   /**
    * Manipulate bits in the UCxxI2CIE register.  See the methods that
    * manipulate UCxxCTL0 for more information.  These methods perform no
    * operation on providers implementing a USCI_Ax device.
    */
-  command uint8_t* ptrI2Cie(uint8_t mask);
-  command uint8_t getI2Cie(uint8_t mask);
-  command void setI2Cie(uint8_t mask);
-  command void clrI2Cie(uint8_t mask);
-  command void assignI2Cie(uint8_t mask, uint8_t value);
+  async command volatile uint8_t* ptrI2Cie();
+  async command uint8_t getI2Cie(uint8_t mask);
+  async command void setI2Cie(uint8_t mask);
+  async command void clrI2Cie(uint8_t mask);
+  //async command void assignI2Cie(uint8_t mask, uint8_t value);
+  async command void assignI2Cie(uint8_t value);
 
   /**
    * Manipulate bits in the UCxxSTAT register.  See the methods that manipulate
    * UCxxCTL0 for more information.
    */
-  command uint8_t* ptrStat(uint8_t mask);
-  command uint8_t getStat(uint8_t mask);
-  command void setStat(uint8_t mask);
-  command void clrStat(uint8_t mask);
-  command void assignStat(uint8_t mask, uint8_t value);
+  async command volatile uint8_t* ptrStat();
+  async command uint8_t getStat(uint8_t mask);
+  async command void setStat(uint8_t mask);
+  async command void clrStat(uint8_t mask);
+  //async command void assignStat(uint8_t mask, uint8_t value);
+  async command void assignStat(uint8_t value);
 
   /**
    * Return pointer to the UCAxxRXBUF register used by the USCI device.
    */
-  command uint8_t* ptrRxbuf();
+  async command volatile uint8_t* ptrRxbuf();
 
   /**
    * Read the contents of the UCAxxRXBUF register.  This register cannot be
    * written.
    */
-  command uint8_t getRxbuf();
+  async command uint8_t getRxbuf();
 
   /**
    * Return pointer to the UCAxxTXBUF register used by the USCI device.
    */
-  command uint8_t* ptrTxbuf();
+  async command volatile uint8_t* ptrTxbuf();
 
   /**
    * Read the contents of the UCAxxTXBUF register.
    */
-  command uint8_t getTxbuf();
+  async command uint8_t getTxbuf();
 
   /**
    * Write a byte to the UCAxxTXBUF register.
    */
-  command void setTxbuf(uint8_t byte);
+  async command void setTxbuf(uint8_t byte);
 
   /**
    * Manipulate bits in the UCxxABCTL register.  See the methods that
    * manipulate UCxxCTL0 for more information.  These methods perform no
    * operation on providers implementing a USCI_Bx device.
    */
-  command uint8_t* ptrAbctl(uint8_t mask);
-  command uint8_t getAbctl(uint8_t mask);
-  command void setAbctl(uint8_t mask);
-  command void clrAbctl(uint8_t mask);
-  command void assignAbctl(uint8_t mask, uint8_t value);
+  async command volatile uint8_t* ptrAbctl();
+  async command uint8_t getAbctl(uint8_t mask);
+  async command void setAbctl(uint8_t mask);
+  async command void clrAbctl(uint8_t mask);
+  //async command void assignAbctl(uint8_t mask, uint8_t value);
+  async command void assignAbctl(uint8_t value);
 
   /**
    * Manipulate bits in the UCxxIRTCTL register.  See the methods that
    * manipulate UCxxCTL0 for more information.  These methods perform no
    * operation on providers implementing a USCI_Bx device.
    */
-  command uint8_t* ptrIrtctl(uint8_t mask);
-  command uint8_t getIrtctl(uint8_t mask);
-  command void setIrtctl(uint8_t mask);
-  command void clrIrtctl(uint8_t mask);
-  command void assignIrtctl(uint8_t mask, uint8_t value);
+  async command volatile uint8_t* ptrIrtctl();
+  async command uint8_t getIrtctl(uint8_t mask);
+  async command void setIrtctl(uint8_t mask);
+  async command void clrIrtctl(uint8_t mask);
+  //async command void assignIrtctl(uint8_t mask, uint8_t value);
+  async command void assignIrtctl(uint8_t value);
 
   /**
    * Manipulate bits in the UCxxIRRCTL register.  See the methods that
    * manipulate UCxxCTL0 for more information.  These methods perform no
    * operation on providers implementing a USCI_Bx device.
    */
-  command uint8_t* ptrIrrctl(uint8_t mask);
-  command uint8_t getIrrctl(uint8_t mask);
-  command void setIrrctl(uint8_t mask);
-  command void clrIrrctl(uint8_t mask);
-  command void assignIrrctl(uint8_t mask, uint8_t value);
+  async command volatile uint8_t* ptrIrrctl();
+  async command uint8_t getIrrctl(uint8_t mask);
+  async command void setIrrctl(uint8_t mask);
+  async command void clrIrrctl(uint8_t mask);
+  //async command void assignIrrctl(uint8_t mask, uint8_t value);
+  async command void assignIrrctl(uint8_t value);
 
   /**
-   * Manipulate bits in the UCxxI2COA register.  See the methods that
-   * manipulate UCxxCTL0 for more information.  These methods perform no
-   * operation on providers implementing a USCI_Ax device.
+   * Access to the UCBxI2COA register.
    */
-  command uint8_t* ptrI2Coa(uint8_t mask);
-  command uint8_t getI2Coa(uint8_t mask);
-  command void setI2Coa(uint8_t mask);
-  command void clrI2Coa(uint8_t mask);
-  command void assignI2Coa(uint8_t mask, uint8_t value);
+  async command volatile uint8_t* ptrI2Coa();
+  async command uint16_t readI2Coa();
+  async command void assignI2Coa(uint16_t addr);
 
   /**
-   * Manipulate bits in the UCxxI2COA register.  See the methods that
-   * manipulate UCxxCTL0 for more information.  These methods perform no
-   * operation on providers implementing a USCI_Ax device.
+   * Access to the UCBxI2SA register.
    */
-  command uint8_t* ptrI2Csa(uint8_t mask);
-  command uint8_t getI2Csa(uint8_t mask);
-  command void setI2Csa(uint8_t mask);
-  command void clrI2Csa(uint8_t mask);
-  command void assignI2Csa(uint8_t mask, uint8_t value);
+  async command volatile uint8_t* ptrI2Csa();
+  async command uint16_t readI2Csa();
+  async command void assignI2Csa(uint16_t addr);
 
   /**
    * Manipulate bits in the UCxxIE register.  See the methods that manipulate
    * UCxxCTL0 for more information.
    */
-  command uint8_t* ptrIe(uint8_t mask);
-  command uint8_t getIe(uint8_t mask);
-  command void setIe(uint8_t mask);
-  command void clrIe(uint8_t mask);
-  command void assignIe(uint8_t mask, uint8_t value);
+  async command bool getIeRx();
+  async command void setIeRx();
+  async command void clrIeRx();
+  async command bool getIeTx();
+  async command void setIeTx();
+  async command void clrIeTx();
 
   /**
    * Manipulate bits in the UCxxIFG register.  See the methods that manipulate
    * UCxxCTL0 for more information.
    */
-  command uint8_t* ptrIfg(uint8_t mask);
-  command uint8_t getIfg(uint8_t mask);
-  command void setIfg(uint8_t mask);
-  command void clrIfg(uint8_t mask);
-  command void assignIfg(uint8_t mask, uint8_t value);
+  async command bool getIfgRx();
+  async command void setIfgRx();
+  async command void clrIfgRx();
+  async command bool getIfgTx();
+  async command void setIfgTx();
+  async command void clrIfgTx();
 }