// $Id$
-/* tab:4
+/*
* "Copyright (c) 2004-5 The Regents of the University of California.
* All rights reserved.
*
* Return the AM address of the destination of the AM packet.
* If <tt>amsg</tt> is not an AM packet, the results of this command
* are undefined.
- * @param amsg the packet
+ * @param 'message_t* ONE amsg' the packet
* @return the destination address of the packet.
*/
* Return the AM address of the source of the AM packet.
* If <tt>amsg</tt> is not an AM packet, the results of this command
* are undefined.
- * @param amsg the packet
+ * @param 'message_t* ONE amsg' the packet
* @return the source address of the packet.
*/
* and then recover it when actually sending. If <tt>amsg</tt> is
* not an AM packet, the results of this command are undefined.
*
- * @param amsg the packet
+ * @param 'message_t* ONE amsg' the packet
* @param addr the address
*/
* layer (e.g., a protocol bridge). If <tt>amsg</tt> is
* not an AM packet, the results of this command are undefined.
*
- * @param amsg the packet
+ * @param 'message_t* ONE amsg' the packet
* @param addr the address
*/
* the mote's local address. If <tt>amsg</tt> is not an AM packet,
* the results of this command are undefined.
*
- * @param amsg the packet
+ * @param 'message_t* ONE amsg' the packet
* @return whether the packet is addressed to this AM stack
*/
command bool isForMe(message_t* amsg);
* If <tt>amsg</tt> is not an AM packet, the results of this command
* are undefined.
*
- * @param amsg the packet
+ * @param 'message_t* ONE amsg' the packet
* @return the AM type
*/
* sending. If <tt>amsg</tt> is not an AM packet, the results of
* this command are undefined.
*
- * @param amsg the packet
+ * @param 'message_t* ONE amsg' the packet
* @param t the AM type
*/
command void setType(message_t* amsg, am_id_t t);
+ /**
+ * Get the AM group of the AM packet. The AM group is a logical
+ * identifier that distinguishes sets of nodes which may share
+ * a physical communication medium but wish to not communicate.
+ * The AM group logically separates the sets of nodes. When
+ * a node sends a packet, it fills in its AM group, and typically
+ * nodes only receive packets whose AM group field matches their
+ * own.
+ *
+ * @param 'message_t* ONE amsg' the packet
+ * @return the AM group of this packet
+ */
+
+ command am_group_t group(message_t* amsg);
+
+ /**
+ * Set the AM group field of a packet. Note that most data link
+ * stacks will set this field automatically on a send request, which
+ * may overwrite changes made with this command.
+ *
+ * @param 'message_t* ONE amsg' the packet
+ * @param group the packet's new AM group value
+ */
+ command void setGroup(message_t* amsg, am_group_t grp);
+
+ /**
+ * Provides the current AM group of this communication interface.
+ *
+ * @return The AM group.
+ */
+
+ command am_group_t localGroup();
}