From 1ceef3ee04b43779a5de62e1cd6e8046ed71a403 Mon Sep 17 00:00:00 2001 From: rincon Date: Tue, 19 Jun 2007 17:30:08 +0000 Subject: [PATCH] Updated the ActiveMessageAddress interface after discovering issues with calling setAmGroup() and setAmAddress() separately and having the radio try to split-phase sync() with each one of those. --- tos/interfaces/ActiveMessageAddress.nc | 19 +++++++------------ tos/system/ActiveMessageAddressC.nc | 21 +++++++++------------ 2 files changed, 16 insertions(+), 24 deletions(-) diff --git a/tos/interfaces/ActiveMessageAddress.nc b/tos/interfaces/ActiveMessageAddress.nc index 7d43d7f8..c622a5aa 100644 --- a/tos/interfaces/ActiveMessageAddress.nc +++ b/tos/interfaces/ActiveMessageAddress.nc @@ -34,29 +34,24 @@ * @author David Moss */ interface ActiveMessageAddress { + /** - * @return the active message address of this node + * Set the active message address of this node + * @param group The node's group ID + * @param addr The node's active message address */ - async command am_addr_t amAddress(); + async command void setAddress(am_group_t group, am_addr_t addr); /** - * Set the active message address of this node - * @param addr The target active message address + * @return the active message address of this node */ - async command void setAmAddress(am_addr_t addr); + async command am_addr_t amAddress(); /** * @return the group address of this node */ async command am_group_t amGroup(); - /** - * Set the group address of this node - * @param group The group address - */ - async command void setAmGroup(am_group_t group); - - /** * Notification that the address or group settings changed. */ diff --git a/tos/system/ActiveMessageAddressC.nc b/tos/system/ActiveMessageAddressC.nc index 40f0c0fe..7f1abb91 100644 --- a/tos/system/ActiveMessageAddressC.nc +++ b/tos/system/ActiveMessageAddressC.nc @@ -64,10 +64,15 @@ implementation { /** * Set the active message address of this node - * @param a The target active message address + * @param group The node's group ID + * @param addr The node's active message address */ - async command void ActiveMessageAddress.setAmAddress(am_addr_t a) { - call setAmAddress(a); + async command void ActiveMessageAddress.setAddress(am_group_t myGroup, am_addr_t myAddr) { + atomic { + addr = myAddr; + group = myGroup; + } + signal ActiveMessageAddress.changed(); } @@ -80,14 +85,6 @@ implementation { return myGroup; } - /** - * Set the group address of this node - * @param group The group address - */ - async command void ActiveMessageAddress.setAmGroup(am_group_t myGroup) { - atomic group = myGroup; - signal ActiveMessageAddress.changed(); - } /***************** Deprecated Commands ****************/ /** @@ -105,7 +102,7 @@ implementation { * Set the node's default AM address. * * @param a - the address. - * @deprecated Use ActiveMessageAddress.setAmAddress() instead + * @deprecated Use ActiveMessageAddress.setAddress() instead */ async command void setAmAddress(am_addr_t a) { atomic addr = a; -- 2.39.2