]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/system/ActiveMessageAddressC.nc
Added the ActiveMessageAddress interface, letting components know when address and...
[tinyos-2.x.git] / tos / system / ActiveMessageAddressC.nc
index a6fa6dd64cb3a3b6419f5e7019169e69d6253403..098c26d0a16fd54edec1a26ef9720905c4ef3de3 100644 (file)
  */
 
 /**
- * Component that stores the node's active message address.
+ * Component that stores the node's active message address and group ID.
  *
  * @author Philip Levis
- * @date June 19 2005
+ * @author David Moss
  */
 
 module ActiveMessageAddressC  {
-  provides async command am_addr_t amAddress();
-  provides async command void setAmAddress(am_addr_t a);
+  provides {
+    interface ActiveMessageAddress;
+    async command am_addr_t amAddress();
+    async command void setAmAddress(am_addr_t a);
+  }
 }
 implementation {
+
+  /** Node address */
   am_addr_t addr = TOS_AM_ADDRESS;
 
+  /** Group address */
+  am_group_t group = TOS_AM_GROUP;
+  
+  /***************** ActiveMessageAddress Commands ****************/
+  /**
+   * @return the active message address of this node
+   */
+  async command am_addr_t ActiveMessageAddress.amAddress() {
+    return call amAddress();
+  }
+  
+  /**
+   * Set the active message address of this node
+   * @param a The target active message address
+   */
+  async command void ActiveMessageAddress.setAmAddress(am_addr_t a) {
+    call setAmAddress(a);
+  }
+  
+    
+  /**
+   * @return the group address of this node
+   */
+  async command am_group_t ActiveMessageAddress.amGroup() {
+    return group;
+  }
+  
+  /**
+   * Set the group address of this node
+   * @param group The group address
+   */
+  async command void ActiveMessageAddress.setAmGroup(am_group_t myGroup) {
+    group = myGroup;
+    signal ActiveMessageAddress.changed();
+  }
+
+  /***************** Deprecated Commands ****************/
   /**
    * Get the node's default AM address.
    * @return address
+   * @deprecated Use ActiveMessageAddress.amAddress() instead
    */
   async command am_addr_t amAddress() {
     return addr;
@@ -57,8 +101,19 @@ implementation {
    * Set the node's default AM address.
    *
    * @param a - the address.
+   * @deprecated Use ActiveMessageAddress.setAmAddress() instead
    */
   async command void setAmAddress(am_addr_t a) {
     addr = a;
+    signal ActiveMessageAddress.changed();
   }
+  
+  
+  /***************** Defaults ****************/
+  /**
+   * Notification that the address of this node changed.
+   */
+  default async event void ActiveMessageAddress.changed() {
+  }
+  
 }