[Tinyos-2-commits] CVS: tinyos-2.x/tos/lib/mac/tkn154/interfaces/MLME MLME_ASSOCIATE.nc, NONE, 1.1 MLME_BEACON_NOTIFY.nc, NONE, 1.1 MLME_COMM_STATUS.nc, NONE, 1.1 MLME_DISASSOCIATE.nc, NONE, 1.1 MLME_GET.nc, NONE, 1.1 MLME_GTS.nc, NONE, 1.1 MLME_ORPHAN.nc, NONE, 1.1 MLME_POLL.nc, NONE, 1.1 MLME_RESET.nc, NONE, 1.1 MLME_RX_ENABLE.nc, NONE, 1.1 MLME_SCAN.nc, NONE, 1.1 MLME_SET.nc, NONE, 1.1 MLME_START.nc, NONE, 1.1 MLME_SYNC_LOSS.nc, NONE, 1.1 MLME_SYNC.nc, NONE, 1.1

Jan-Hinrich Hauer janhauer at users.sourceforge.net
Mon Jun 16 11:00:34 PDT 2008


Update of /cvsroot/tinyos/tinyos-2.x/tos/lib/mac/tkn154/interfaces/MLME
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv30549/tos/lib/mac/tkn154/interfaces/MLME

Added Files:
	MLME_ASSOCIATE.nc MLME_BEACON_NOTIFY.nc MLME_COMM_STATUS.nc 
	MLME_DISASSOCIATE.nc MLME_GET.nc MLME_GTS.nc MLME_ORPHAN.nc 
	MLME_POLL.nc MLME_RESET.nc MLME_RX_ENABLE.nc MLME_SCAN.nc 
	MLME_SET.nc MLME_START.nc MLME_SYNC_LOSS.nc MLME_SYNC.nc 
Log Message:
Initial version of TKN15.4, a platform-independent IEEE 802.15.4-2006 MAC implementation (see tinyos-2.x/tos/lib/mac/tkn154/README.txt)

--- NEW FILE: MLME_ASSOCIATE.nc ---
/*
 * Copyright (c) 2008, 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 
 * 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 
 *   documentation and/or other materials provided with the distribution.
 * - 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 
 * 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 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * - Revision -------------------------------------------------------------
 * $Revision: 1.1 $
 * $Date: 2008/06/16 18:00:31 $
 * @author: Jan Hauer <hauer at tkn.tu-berlin.de>
 * ========================================================================
 */

#include "TKN154.h"

interface MLME_ASSOCIATE {

  /**
   * Requests to associate with a PAN.
   * 
   * @param LogicalChannel  The logical channel on which to attempt
   *                        association
   * @param ChannelPage     The channel page on which to attempt association
   * @param CoordAddrMode   The coordinator addressing mode
   * @param CoordPANID      The 16 bit PAN identifier of the coordinator
   * @param CoordAddress    Individual device address of the coordinator as
   *                        per the CoordAddrMode
   * @param CapabilityInformation Specifies the operational capabilities
   *                        of the associating device
   * @param security        The security options (NULL means security is 
   *                        disabled)
   * @return       IEEE154_SUCCESS if the request succeeded and a confirm event
   *               will be signalled, an appropriate error code otherwise 
   *               (no confirm event will be signalled in this case)
   * @see          confirm
   */
  command ieee154_status_t request  (
                          uint8_t LogicalChannel,
                          uint8_t ChannelPage,
                          uint8_t CoordAddrMode,
                          uint16_t CoordPANID,
                          ieee154_address_t CoordAddress,
                          ieee154_CapabilityInformation_t CapabilityInformation,
                          ieee154_security_t *security
                        );

  /**
   * Notification that a device has requested to associate with a PAN.
   *
   * @param DeviceAddress the 64-bit address of the requesting device
   * @param CapabilityInformation Specifies the operational capabilities
   *                              of the associating device
   * @param security      The security options (NULL means security is 
   *                      disabled)
   */
  event void indication (
                          uint64_t DeviceAddress,
                          ieee154_CapabilityInformation_t CapabilityInformation,
                          ieee154_security_t *security
                        );

  /**
   * Send a response to a device's request to associate
   *
   * @param DeviceAddress     The 64-bit address of the device to respond to
   * @param AssocShortAddress The short device address allocated by the
   *                          coordinator on successful allocation.
   * @param status          The status of the association attempt
   * @param security        The security options (NULL means security is 
   *                        disabled)
   * @return IEEE154_SUCCESS if the request succeeded and an indication event
   *         will be signalled through the MLME_COMM_STATUS interface later,  
   *         otherwise an appropriate error code (no MLME_COMM_STATUS.indication
   *         event will be signalled in this case)
   */
  command ieee154_status_t response (
                          uint64_t DeviceAddress,
                          uint16_t AssocShortAddress,
                          ieee154_association_status_t status,
                          ieee154_security_t *security
                        );

  /**
   * Confirmation of the association attempt.
   *
   * @param AssocShortAddress The short device address allocated by the
   *                          coordinator on successful association
   * @param status          The status of the association attempt
   * @param security        The security options, NULL means security is 
   *                        disabled
   */
  event void confirm    (
                          uint16_t AssocShortAddress,
                          uint8_t status,
                          ieee154_security_t *security
                        );

}

--- NEW FILE: MLME_BEACON_NOTIFY.nc ---
/*
 * Copyright (c) 2008, 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 
 * 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 
 *   documentation and/or other materials provided with the distribution.
 * - 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 
 * 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 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * - Revision -------------------------------------------------------------
 * $Revision: 1.1 $
 * $Date: 2008/06/16 18:00:31 $
 * @author: Jan Hauer <hauer at tkn.tu-berlin.de>
 * ========================================================================
 */

#include "TKN154.h"
#include <message.h>
interface MLME_BEACON_NOTIFY {

  /**
   * A beacon frame has been received. This event is signalled only if 
   * either the PIB attribute macAutoRequest is set to FALSE or the 
   * beacon payload is not empty.
   *
   * The beacon parameters can be accessed through the 
   * <code>IEEE154BeaconFrame<\code> interface. The 
   * <code>IEEE154Frame<\code> interface can be used to
   * inspect the addressing fields in the MAC header.
   *
   * @param beacon The beacon frame
   * @return A frame buffer for the stack to use for the next received frame
   */
  event message_t* indication ( message_t *beaconFrame );
}

--- NEW FILE: MLME_COMM_STATUS.nc ---
/*
 * Copyright (c) 2008, 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 
 * 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 
 *   documentation and/or other materials provided with the distribution.
 * - 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 
 * 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 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * - Revision -------------------------------------------------------------
 * $Revision: 1.1 $
 * $Date: 2008/06/16 18:00:31 $
 * @author: Jan Hauer <hauer at tkn.tu-berlin.de>
 * ========================================================================
 */

#include "TKN154.h"
interface MLME_COMM_STATUS {

  /** 
   * Allows the MLME to indicate a communications status.
   *
   * @param PanID The 16-bit PAN identifier of the device from which the
   *              frame was received or to which the frame was being sent
   * @param SrcAddrMode The source addressing mode
   * @param SrcAddr Individual device address of the source as per SrcAddrMode
   * @param DstAddrMode The destination addressing mode
   * @param DstAddr Individual device address of the destination
   *                as per DstAddrMode
   * @param status The communications status
   * @param security The security options, NULL means security is 
   *                 disabled
   */
  event void indication (
                          uint16_t PANId,
                          uint8_t SrcAddrMode,
                          ieee154_address_t SrcAddr,
                          uint8_t DstAddrMode,
                          ieee154_address_t DstAddr,
                          ieee154_status_t status,
                          ieee154_security_t *security
                        );
}

--- NEW FILE: MLME_DISASSOCIATE.nc ---
/*
 * Copyright (c) 2008, 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 
 * 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 
 *   documentation and/or other materials provided with the distribution.
 * - 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 
 * 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 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * - Revision -------------------------------------------------------------
 * $Revision: 1.1 $
 * $Date: 2008/06/16 18:00:31 $
 * @author: Jan Hauer <hauer at tkn.tu-berlin.de>
 * ========================================================================
 */

#include "TKN154.h"
interface MLME_DISASSOCIATE {

  /**
   * Request disassociation from a PAN.
   * 
   * @param DeviceAddrMode The addressing mode of the device to which to send 
   *                       the disassociation notification command.
   * @param DevicePANID The PAN identifier of the device to which to send the
   *                    disassociation notification command.
   * @param DeviceAddress The address of the device to which to send the
   *                      disassociation notification command
   * @param DisassociateReason The reason for the disassociation
   * @param TxIndirect TRUE if disassociation notification command is to be sent
   *                   indirectly
   * @param security   The security options (NULL means security is 
   *                   disabled)
   * @return       IEEE154_SUCCESS if the request succeeded and a confirm event
   *               will be signalled, an appropriate error code otherwise 
   *               (no confirm event will be signalled in this case)
   * @see          confirm
   */
  command ieee154_status_t request  (
                          uint8_t DeviceAddrMode,
                          uint16_t DevicePANID,
                          ieee154_address_t DeviceAddress,
                          ieee154_disassociation_reason_t DisassociateReason,
                          bool TxIndirect,
                          ieee154_security_t *security
                        );

  /**
   * Signals that a device has requested disassociation.
   *
   * @param DeviceAddress the 64-bit address of the requesting device
   * @param DisassociateReason Reason for the disassociation
   * @param security      The security options (NULL means security is 
   *                      disabled)
   */
  event void indication (
                          uint64_t DeviceAddress,
                          ieee154_disassociation_reason_t DisassociateReason,
                          ieee154_security_t *security
                        );

  /**
   * Confirmation of the disassociation attempt.
   *
   * @param status The status of the disassociation attempt
   * @param DeviceAddrMode The addressing mode of the device that has either
   *                       requested disassociation or been instructed to
   *                       disassociate by its coordinator.
   * @param DevicePANID The PAN identifier of the device that has either 
   *                    requested disassociation or been instructed to 
   *                    disassociate by its coordinator.
   * @param DeviceAddress The address of the device that has either requested 
   *                       disassociation or been instructed to disassociate 
   *                       by its coordinator.
   */
  event void confirm    (
                          ieee154_status_t status,
                          uint8_t DeviceAddrMode,
                          uint16_t DevicePANID,
                          ieee154_address_t DeviceAddress
                        );

}

--- NEW FILE: MLME_GET.nc ---
/*
 * Copyright (c) 2008, 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 
 * 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 
 *   documentation and/or other materials provided with the distribution.
 * - 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 
 * 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 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * - Revision -------------------------------------------------------------
 * $Revision: 1.1 $
 * $Date: 2008/06/16 18:00:31 $
 * @author Jan Hauer <hauer at tkn.tu-berlin.de>
 * ========================================================================
 */

/** 
 * This interface can be used to read attribute values from the PHY/MAC PIB.
 * Instead of passing the PIB attribute identifier, there is a separate
 * command per attribute (and there are no confirm events). 
 *
 * NOTE: for the attributes macBeaconPayload (0x45) and
 * macBeaconPayloadLength (0x46) use the <code>IEEE154TxBeaconPayload <\code> 
 * interface; for promiscuous mode there is a separate (SplitControl)
 * interface. 
 **/

#include "TKN154.h" 
interface MLME_GET {

  /** @return PIB attribute phyCurrentChannel (0x00) */
  command ieee154_phyCurrentChannel_t phyCurrentChannel();

  /** @return PIB attribute phyChannelsSupported (0x01) */
  command ieee154_phyChannelsSupported_t phyChannelsSupported();

  /** @return PIB attribute phyTransmitPower (0x02) */
  command ieee154_phyTransmitPower_t phyTransmitPower();

  /** @return PIB attribute phyCCAMode (0x03) */
  command ieee154_phyCCAMode_t phyCCAMode();

  /** @return PIB attribute phyCurrentPage (0x04) */
  command ieee154_phyCurrentPage_t phyCurrentPage();

  /** @return PIB attribute phyMaxFrameDuration (0x05) */
  command ieee154_phyMaxFrameDuration_t phyMaxFrameDuration();

  /** @return PIB attribute phySHRDuration (0x06) */
  command ieee154_phySHRDuration_t phySHRDuration();

  /** @return PIB attribute phySymbolsPerOctet (0x07) */
  command ieee154_phySymbolsPerOctet_t phySymbolsPerOctet();

  /** @return PIB attribute macAckWaitDuration (0x40) */
  command ieee154_macAckWaitDuration_t macAckWaitDuration();

  /** @return PIB attribute macAssociationPermit (0x41) */
  command ieee154_macAssociationPermit_t macAssociationPermit();

  /** @return PIB attribute macAutoRequest (0x42) */
  command ieee154_macAutoRequest_t macAutoRequest();

  /** @return PIB attribute macBattLifeExt (0x43) */
  command ieee154_macBattLifeExt_t macBattLifeExt();

  /** @return PIB attribute macBattLifeExtPeriods (0x44) */
  command ieee154_macBattLifeExtPeriods_t macBattLifeExtPeriods();

  /* macBeaconPayload (0x45) and macBeaconPayloadLength (0x46) are read
   * through the <code>IEEE154TxBeaconPayload<\code> interface. */

  /** @return PIB attribute macBeaconOrder (0x47) */
  command ieee154_macBeaconOrder_t macBeaconOrder();

  /** @return PIB attribute macBeaconTxTime (0x48) */
  command ieee154_macBeaconTxTime_t macBeaconTxTime();

  /** @return PIB attribute macBSN (0x49) */
  command ieee154_macBSN_t macBSN();

  /** @return PIB attribute macCoordExtendedAddress (0x4A) */
  command ieee154_macCoordExtendedAddress_t macCoordExtendedAddress();

  /** @return PIB attribute macCoordShortAddress (0x4B) */
  command ieee154_macCoordShortAddress_t macCoordShortAddress();

  /** @return PIB attribute macDSN (0x4C) */
  command ieee154_macDSN_t macDSN();

  /** @return PIB attribute macGTSPermit (0x4D) */
  command ieee154_macGTSPermit_t macGTSPermit();

  /** @return PIB attribute macMaxCSMABackoffs (0x4E) */
  command ieee154_macMaxCSMABackoffs_t macMaxCSMABackoffs();

  /** @return PIB attribute macMinBE (0x4F) */
  command ieee154_macMinBE_t macMinBE();

  /** @return PIB attribute macPANId (0x50) */
  command ieee154_macPANId_t macPANId();

  /** @return PIB attribute macPromiscuousMode (0x51) */
  command ieee154_macPromiscuousMode_t macPromiscuousMode();

  /** @return PIB attribute macRxOnWhenIdle (0x52) */
  command ieee154_macRxOnWhenIdle_t macRxOnWhenIdle();

  /** @return PIB attribute macShortAddress (0x53) */
  command ieee154_macShortAddress_t macShortAddress();

  /** @return PIB attribute macSuperframeOrder (0x54) */
  command ieee154_macSuperframeOrder_t macSuperframeOrder();

  /** @return PIB attribute macTransactionPersistenceTime (0x55) */
  command ieee154_macTransactionPersistenceTime_t macTransactionPersistenceTime();

  /** @return PIB attribute macAssociatedPANCoord (0x56) */
  command ieee154_macAssociatedPANCoord_t macAssociatedPANCoord();

  /** @return PIB attribute macMaxBE (0x57) */
  command ieee154_macMaxBE_t macMaxBE();

  /** @return PIB attribute macMaxFrameTotalWaitTime (0x58) */
  command ieee154_macMaxFrameTotalWaitTime_t macMaxFrameTotalWaitTime();

  /** @return PIB attribute macMaxFrameRetries (0x59) */
  command ieee154_macMaxFrameRetries_t macMaxFrameRetries();

  /** @return PIB attribute macResponseWaitTime (0x5A) */
  command ieee154_macResponseWaitTime_t macResponseWaitTime();

  /** @return PIB attribute macSyncSymbolOffset (0x5B) */
  command ieee154_macSyncSymbolOffset_t macSyncSymbolOffset();

  /** @return PIB attribute macTimestampSupported (0x5C) */
  command ieee154_macTimestampSupported_t macTimestampSupported();

  /** @return PIB attribute macSecurityEnabled (0x5D) */
  command ieee154_macSecurityEnabled_t macSecurityEnabled();

  /** @return PIB attribute macMinLIFSPeriod */
  command ieee154_macMinLIFSPeriod_t macMinLIFSPeriod();

  /** @return PIB attribute macMinSIFSPeriod */
  command ieee154_macMinSIFSPeriod_t macMinSIFSPeriod();
}

--- NEW FILE: MLME_GTS.nc ---
/*
 * Copyright (c) 2008, 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 
 * 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 
 *   documentation and/or other materials provided with the distribution.
 * - 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 
 * 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 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * - Revision -------------------------------------------------------------
 * $Revision: 1.1 $
 * $Date: 2008/06/16 18:00:31 $
 * @author Jan Hauer <hauer at tkn.tu-berlin.de>
 * ========================================================================
 */

#include "TKN154.h"
interface MLME_GTS {

  /**
   * Request allocation of a new GTS or deallocation from the PAN
   * coordinator.
   *
   * @param GtsCharacteristics The characteristics of the GTS request
   * @param security      The security options (NULL means security is 
   *                      disabled)
   * @return       IEEE154_SUCCESS if the request succeeded and a confirm event
   *               will be signalled, an appropriate error code otherwise 
   *               (no confirm event will be signalled in this case)
   * @see          confirm
   */
  command ieee154_status_t request  (
                          uint8_t GtsCharacteristics,
                          ieee154_security_t *security
                        );

  /**
   * Reports the results of a request to allocated a new GTS or
   * deallocate an existing GTS
   *
   * @param GtsCharacteristics The characteristics of the GTS request
   * @param status The status of the GTS request
   */
  event void confirm    (
                          uint8_t GtsCharacteristics,
                          ieee154_status_t status
                        );

  /**
   * Indicates that a GTS has been allocated or that a previously allocated
   * GTS has been deallocated
   *
   * All pointers are valid only until the return of this event.
   * 
   * @param DeviceAddress Short address of the device that has been allocated
   *                   or deallocated a GTS
   * @param GtsCharacteristics The characteristics of the GTS request
   * @param security        The security options, NULL means security is 
   *                        disabled
   */   
  event void indication (
                          uint16_t DeviceAddress,
                          uint8_t GtsCharacteristics,
                          ieee154_security_t *security
                        );

}

--- NEW FILE: MLME_ORPHAN.nc ---
/*
 * Copyright (c) 2008, 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 
 * 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 
 *   documentation and/or other materials provided with the distribution.
 * - 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 
 * 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 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * - Revision -------------------------------------------------------------
 * $Revision: 1.1 $
 * $Date: 2008/06/16 18:00:31 $
 * @author Jan Hauer <hauer at tkn.tu-berlin.de>
 * ========================================================================
 */

#include "TKN154.h" 
interface MLME_ORPHAN {

  /**
   * Allows the MLME of a coordinator to notify the next higher layer of the
   * presence of an orphaned device
   * 
   * @param OrphanAddress The 64-bit extended address of the orphaned device
   * @param security        The security options (NULL means security is 
   *                        disabled)
  */
  event void indication (
                          uint64_t OrphanAddress,
                          ieee154_security_t *security
                        );

  /**
   * Allows the next higher layer of a coordinator to respond to the
   * indication primitive
   *
   * @param OrphanAddres The 64-bit extended address of the orphaned device
   * @param ShortAddress The 16-bit short address allocated to the orphaned
   *                     device if it is associated with this coordinator. The
   *                     special short address 0xfffe indicates that no short
   *                     address was allocated, and the device will use its
   *                     64-bit extended address in all communications. If the
   *                     device was not associated with this coordinator, this
   *                     field will contain the value 0xffff and be ignored on
   *                     receipt.
   * @param AssociatedMember TRUE if the orphaned device is associated 
   *                         with this coordinator
   * @param security        The security options (NULL means security is 
   *                        disabled)
   * @return       IEEE154_SUCCESS if the request succeeded and an indication event
   *               will be signalled through the MLME_COMM_STATUS interface later,  
   *               otherwise an appropriate error code (no MLME_COMM_STATUS.indication 
   *               event will be signalled in this case)
   */
  command ieee154_status_t response (
                          uint64_t OrphanAddres,
                          uint16_t ShortAddress,
                          bool AssociatedMember,
                          ieee154_security_t *security
                        );
}

--- NEW FILE: MLME_POLL.nc ---
/*
 * Copyright (c) 2008, 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 
 * 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 
 *   documentation and/or other materials provided with the distribution.
 * - 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 
 * 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 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * - Revision -------------------------------------------------------------
 * $Revision: 1.1 $
 * $Date: 2008/06/16 18:00:31 $
 * @author Jan Hauer <hauer at tkn.tu-berlin.de>
 * ========================================================================
 */
#include "TKN154.h"

interface MLME_POLL {

  /**
   * Prompts the device to request data from the coordinator.
   *
   * @param CoordAddrMode The addressing mode of the coordinator to which
   *                      the poll is intended
   * @param CoordPANID The PAN identifier of the coordinator to which the
   *                   poll is intended
   * @param CoordAddress The address of the coordinator to which the
   *                     poll is intended
   * @param security     The security options (NULL means security is 
   *                     disabled)
   * @return       IEEE154_SUCCESS if the request succeeded and a confirm event
   *               will be signalled, an appropriate error code otherwise 
   *               (no confirm event will be signalled in this case)
   * @see          confirm
   */
  command ieee154_status_t request  (
                          uint8_t CoordAddrMode,
                          uint16_t CoordPANID,
                          ieee154_address_t CoordAddress,
                          ieee154_security_t *security
                        );

  /**
   * Reports the results of a request to poll the coordinator for data
   *
   * @param status The status of the data request
   */
  event void confirm    (
                          ieee154_status_t status
                        );

}

--- NEW FILE: MLME_RESET.nc ---
/*
 * Copyright (c) 2008, 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 
 * 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 
 *   documentation and/or other materials provided with the distribution.
 * - 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 
 * 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 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * - Revision -------------------------------------------------------------
 * $Revision: 1.1 $
 * $Date: 2008/06/16 18:00:31 $
 * @author Jan Hauer <hauer at tkn.tu-berlin.de>
 * ========================================================================
 */

#include "TKN154.h"
interface MLME_RESET {

  /**
   * Allows the next higher layer to request that the MLME performs a
   * reset operation. This command initializes the MAC and must be called 
   * before calling any other MAC primitive. It extends the standard  
   * interface definition by a parameter <tt>PANType</tt>, which defines 
   * whether the device/coordinator will operate on a beacon-enabled PAN
   * or on a nonbeacon-enabled PAN.
   *
   * Two things are important:
   * (1) This command will fail while promiscuous mode is enabled 
   * (promiscuous mode is controlled through a separate SplitControl 
   * interface). (2) While the MLME_RESET.confirm is pending the next
   * higher layer MUST NOT call any MAC commands; if there are any
   * other pending request the MAC will signal their corresponding confirm 
   * events before MLME_RESET.confirm is signalled (with a status code of
   * IEEE154_TRANSACTION_OVERFLOW).
   * 
   * @param SetDefaultPIB If TRUE, the MAC sublayer is reset and all MAC PIB
   *                      attributes are set to their default values.  If
   *                      FALSE, the MAC sublayer is reset but all MAC PIB
   *                      attributes retain their values prior to the
   *                      generation of the reset primitive.
   * @param PANType       Either BEACON_ENABLED_PAN for beacon-enabled PANs
   *                      or NONBEACON_ENABLED_PAN for nonbeacon-enabled PANs
   *
   * @return       IEEE154_SUCCESS if the request succeeded and a confirm event
   *               will be signalled, an appropriate error code otherwise 
   *               (no confirm event will be signalled in this case)
   *                      
   */
  command ieee154_status_t request  (
                          bool SetDefaultPIB,
                          uint8_t PANType
                        );

  /**
   * Reports the results of the reset operation
   *
   * @param status The status of the reset operation
   */
  event void confirm    (
                          ieee154_status_t status
                        );

}

--- NEW FILE: MLME_RX_ENABLE.nc ---

/*
 * Copyright (c) 2008, 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 
 * 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 
 *   documentation and/or other materials provided with the distribution.
 * - 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 
 * 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 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * - Revision -------------------------------------------------------------
 * $Revision: 1.1 $
 * $Date: 2008/06/16 18:00:31 $
 * @author Jan Hauer <hauer at tkn.tu-berlin.de>
 * ========================================================================
 */

#include "TKN154.h"
interface MLME_RX_ENABLE {

  /**
   * Allows the next higher layer to request that the receiver is
   * enabled for a finite period of time
   * 
   * @param DeferPermit TRUE if the receiver enable can be deferred until
   *                    during the next superframe if the requested time has
   *                    already passed
   * @param RxOnTime The number of symbols from the start of the superframe 
   *                 before the receiver is to be enabled.  The precision 
   *                 of this value is a minimum of 20 bits.  This parameter 
   *                 is ignored for nonbeacon-enabled PANs
   * @param RxOnDuration The number of symbols for which the receiver 
   *                     is to be enabled
   * @return       IEEE154_SUCCESS if the request succeeded and a confirm event
   *               will be signalled, an appropriate error code otherwise 
   *               (no confirm event will be signalled in this case)
   * @see          confirm
   */
  command ieee154_status_t request  (
                          bool DeferPermit,
                          uint32_t RxOnTime,
                          uint32_t RxOnDuration
                        );

  /**
   * Reports the results of the attempt to enable the receiver
   *
   * @param status The status of the receiver enable request
   */
  event void confirm    (
                          ieee154_status_t status
                        );

}

--- NEW FILE: MLME_SCAN.nc ---
/*
 * Copyright (c) 2008, 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 
 * 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 
 *   documentation and/or other materials provided with the distribution.
 * - 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 
 * 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 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * - Revision -------------------------------------------------------------
 * $Revision: 1.1 $
 * $Date: 2008/06/16 18:00:31 $
 * @author Jan Hauer <hauer at tkn.tu-berlin.de>
 * ========================================================================
 */

#include "TKN154.h"
interface MLME_SCAN 
{

  /**
   * Initializes a channel scan over a given list of channels.
   * 
   * If the PIB attribute <tt>macAutoRequest</tt> is set to FALSE, then
   * for each received beacon a PAN descriptor is signalled to the next higher
   * layer through a separate <tt>MLME_BEACON_NOTIFY.indication()</tt> 
   * event; otherwise the result of the channel scan is stored in a user
   * allocated buffer, either <tt>EnergyDetectList</tt> or 
   * <tt>PANDescriptorList</tt> depending on <tt>ScanType</tt>, and the 
   * buffer is returned when the scan is completed.
   *
   * Both of the parameters <tt>EnergyDetectList</tt> and 
   * <tt>PANDescriptorList</tt> may be NULL, but at least one of them 
   * must be NULL.
   *
   * @param ScanType The type of scan performed: ENERGY_DETECTION_SCAN,
   *                 ACTIVE_SCAN, PASSIVE_SCAN or ORPHAN_SCAN
   * @param ScanChannels The 27 LSBs indicate which channels are to be
   *                     scanned (1 = scan, 0 = don't scan)
   * @param ScanDuration Value used to calculate the length of time to
   *                     spend scanning each channel for ED, active, and
   *                     passive scans.  This parameter is ignored for
   *                     orphan scans.
   * @param ChannelPage The channel page on which to perform the scan
   * @param EnergyDetectListNumEntries The number of entries in the 
   *                    <tt>EnergyDetectList</tt>.
   * @param EnergyDetectList An empty buffer (allocated by the caller)  
   *                    to store the result of the energy measurements  
   *                    or NULL if the result should not be stored
   * @param PANDescriptorListNumEntries The number of entries in the
   *                    <tt>PANDescriptorList</tt>.
   * @param PANDescriptorList An empty buffer (allocated by the caller)   
   *                     to store the result of the active/passive scan 
   *                     or NULL if the result should not be stored
   * @param security    The security options (NULL means security is 
   *                    disabled)
   * @return       IEEE154_SUCCESS if the request succeeded and a confirm event
   *               will be signalled, an appropriate error code otherwise 
   *               (no confirm event will be signalled in this case)
   * @see          confirm
   */
  command ieee154_status_t request  (
                          uint8_t ScanType,
                          uint32_t ScanChannels,
                          uint8_t ScanDuration,
                          uint8_t ChannelPage,
                          uint8_t EnergyDetectListNumEntries,
                          int8_t* EnergyDetectList,
                          uint8_t PANDescriptorListNumEntries,
                          ieee154_PANDescriptor_t* PANDescriptorList,
                          ieee154_security_t *security
                        );

  /**
   * Reports the results of the channel scan request, returning
   * the buffers passed in the <tt>request</tt> command.
   *
   * @param status The status of the scan request
   * @param ScanType The type of scan performed
   * @param ChannelPage The channel page on which the scan
   *                    was performed (see 6.1.2).
   * @param UnscannedChannels The 27 LSBs indicate which channels are not
   *                    scanned (0 = scanned, 1 = not scanned)
   * @param EnergyDetectNumResults The number of valid entries in the 
   *                    <tt>EnergyDetectList</tt>.
   * @param EnergyDetectList The buffer list of energy measurements, one for 
   *                    each channel searched during an ED scan
     @param PANDescriptorListNumResults The number of valid entries in the
   *                    <tt>PANDescriptorList</tt>.
   * @param PANDescriptorList The list of PAN descriptors, one for each
   *                    unique beacon found during an active or passive scan
   */
  event void confirm    (
                          ieee154_status_t status,
                          uint8_t ScanType,
                          uint8_t ChannelPage,
                          uint32_t UnscannedChannels,
                          uint8_t EnergyDetectNumResults,
                          int8_t* EnergyDetectList,
                          uint8_t PANDescriptorListNumResults,
                          ieee154_PANDescriptor_t* PANDescriptorList
                        );

}

--- NEW FILE: MLME_SET.nc ---
/*
 * Copyright (c) 2008, 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 
 * 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 
 *   documentation and/or other materials provided with the distribution.
 * - 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 
 * 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 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * - Revision -------------------------------------------------------------
 * $Revision: 1.1 $
 * $Date: 2008/06/16 18:00:31 $
 * @author Jan Hauer <hauer at tkn.tu-berlin.de>
 * ========================================================================
 */


/** 
 * This interface can be used to set attribute values in the PHY/MAC PIB.
 * Instead of passing the PIB attribute identifier, there is a separate
 * command per attribute (and there are no confirm events). 
 *
 * NOTE: for the attributes macBeaconPayload (0x45) and
 * macBeaconPayloadLength (0x46) use the <code>IEEE154TxBeaconPayload <\code> 
 * interface; for promiscuous mode there is a separate (SplitControl)
 * interface. 
 **/

#include "TKN154.h" 
interface MLME_SET {

  /** @param value new PIB attribute value for phyCurrentChannel (0x00)
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t phyCurrentChannel(ieee154_phyCurrentChannel_t value);

  /** @param value new PIB attribute value for phyTransmitPower (0x02)
   *              (2 MSBs are ignored) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t phyTransmitPower(ieee154_phyTransmitPower_t value);

  /** @param value new PIB attribute value for phyCCAMode (0x03) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t phyCCAMode(ieee154_phyCCAMode_t value);

  /** @param value new PIB attribute value for phyCurrentPage (0x04) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t phyCurrentPage(ieee154_phyCurrentPage_t value);

  /** @param value new PIB attribute value for macAssociationPermit (0x41) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macAssociationPermit(ieee154_macAssociationPermit_t value);

  /** @param value new PIB attribute value for macAutoRequest (0x42) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macAutoRequest(ieee154_macAutoRequest_t value);

  /** @param value new PIB attribute value for macBattLifeExt (0x43) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macBattLifeExt(ieee154_macBattLifeExt_t value);

  /** @param value new PIB attribute value for macBattLifeExtPeriods (0x44) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macBattLifeExtPeriods(ieee154_macBattLifeExtPeriods_t value);

  /* macBeaconPayload (0x45) and macBeaconPayloadLength (0x46) are set
   * through the <code>IEEE154TxBeaconPayload<\code> interface. */

  /** @param value new PIB attribute value for macBeaconOrder (0x47) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macBeaconOrder(ieee154_macBeaconOrder_t value);

  /** @param value new PIB attribute value for macBSN (0x49)
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macBSN(ieee154_macBSN_t value);

  /** @param value new PIB attribute value for macCoordExtendedAddress (0x4A) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macCoordExtendedAddress(ieee154_macCoordExtendedAddress_t value);

  /** @param value new PIB attribute value for macCoordShortAddress (0x4B) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macCoordShortAddress(ieee154_macCoordShortAddress_t value);

  /** @param value new PIB attribute value for macDSN (0x4C) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macDSN(ieee154_macDSN_t value);

  /** @param value new PIB attribute value for macGTSPermit (0x4D) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macGTSPermit(ieee154_macGTSPermit_t value);

  /** @param value new PIB attribute value for macMaxCSMABackoffs (0x4E) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macMaxCSMABackoffs(ieee154_macMaxCSMABackoffs_t value);

  /** @param value new PIB attribute value for macMinBE (0x4F)
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macMinBE(ieee154_macMinBE_t value);

  /** @param value new PIB attribute value for macPANId (0x50) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macPANId(ieee154_macPANId_t value);

  /* macPromiscuousMode (0x51) is (re-)set through the 
   * <code>PromiscuousMode<\code> (SplitControl) interface. */

  /** @param value new PIB attribute value for macRxOnWhenIdle (0x52) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macRxOnWhenIdle(ieee154_macRxOnWhenIdle_t value);

  /** @param value new PIB attribute value for macShortAddress (0x53) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macShortAddress(ieee154_macShortAddress_t value);

  /** @param value new PIB attribute value for macTransactionPersistenceTime (0x55) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macTransactionPersistenceTime(ieee154_macTransactionPersistenceTime_t value);

  /** @param value new PIB attribute value for macAssociatedPANCoord (0x56) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macAssociatedPANCoord(ieee154_macAssociatedPANCoord_t value);

  /** @param value new PIB attribute value for macMaxBE (0x57) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macMaxBE(ieee154_macMaxBE_t value);

  /** @param value new PIB attribute value for macMaxFrameTotalWaitTime (0x58) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macMaxFrameTotalWaitTime(ieee154_macMaxFrameTotalWaitTime_t value);

  /** @param value new PIB attribute value for macMaxFrameRetries (0x59) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macMaxFrameRetries(ieee154_macMaxFrameRetries_t value);

  /** @param value new PIB attribute value for macResponseWaitTime (0x5A) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macResponseWaitTime(ieee154_macResponseWaitTime_t value);

  /** @param value new PIB attribute value for macSecurityEnabled (0x5D) 
   *  @returns IEEE154_SUCCESS if PIB attribute was updated, INVALID_PARAMETER if 
   *           parameter value is out of valid range and PIB was not updated */
  command ieee154_status_t macSecurityEnabled(ieee154_macSecurityEnabled_t value);
}

--- NEW FILE: MLME_START.nc ---
/*
 * Copyright (c) 2008, 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 
 * 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 
 *   documentation and/or other materials provided with the distribution.
 * - 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 
 * 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 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * - Revision -------------------------------------------------------------
 * $Revision: 1.1 $
 * $Date: 2008/06/16 18:00:31 $
 * @author Jan Hauer <hauer at tkn.tu-berlin.de>
 * ========================================================================
 */

#include "TKN154.h"
interface MLME_START {

  /**
   * Requests to start using a new superframe configuration.
   * 
   * @param PANId The PAN identifier to be used by the device
   * @param LogicalChannel The logical channel on which to start transmitting
   *                       beacons
   * @param ChannelPage The channel page on which to begin using the new 
   *                    superframe configuration.
   * @param StartTime The time at which to begin transmitting beacons. If this
   *                  parameter is equal to 0x000000, beacon transmissions 
   *                  will begin immediately. Otherwise, the specified time is
   *                  relative to the received beacon of the coordinator with
   *                  which the device synchronizes.
   *                  This parameter is ignored if either the beaconOrder 
   *                  parameter has a value of 15 or the panCoordinator
   *                  parameter is TRUE.The time is specified in symbols and
   *                  is rounded to a backoff slot boundary. This is a 24-bit
   *                  value, and the precision of this value shall be a
   *                  minimum of 20 bits, with the lowest 4 bits being the 
   *                  least significant.
   * @param BeaconOrder The beacon order of the superframe
   * @param SuperframeOrder The superframe order of the superframe
   * @param PanCoordinator If TRUE, the device will become the PAN coordinator
   *                       of a new PAN.  If FALSE, the device will begin
   *                       transmitting beacons on the PAN with which it 
   *                       is associated
   * @param BatteryLifeExtension If TRUE, the receiver of the beaconing
   *                             device is disabled after the IFS period
   * @param CoordRealignment TRUE if a coordinator realignment command is to
   *                         be transmitted prior to changing the superframe
   *                         configuration
   * @param coordRealignSecurity The security options for the coordinator
   *                         realignment command (NULL means security
   *                         is disabled)
   * @param coordRealignSecurity The security options for beacon frames
   *                         (NULL means security is disabled)
   *
   * @return       IEEE154_SUCCESS if the request succeeded and a confirm event
   *               will be signalled, an appropriate error code otherwise 
   *               (no confirm event will be signalled in this case)
   * @see          confirm
  */
  command ieee154_status_t request  (
                          uint16_t PANId,
                          uint8_t LogicalChannel,
                          uint8_t ChannelPage,
                          uint32_t StartTime,
                          uint8_t BeaconOrder,
                          uint8_t SuperframeOrder,
                          bool PanCoordinator,
                          bool BatteryLifeExtension,
                          bool CoordRealignment,
                          ieee154_security_t *coordRealignSecurity,
                          ieee154_security_t *beaconSecurity
                        );

  /**
   * Signalled in response to a successful request.
   * Reports the results of the attempt to start using a new superframe
   * configuration
   *
   * @param status The result of the attempt to start using an 
   *               updated superframe configuration
   */
  event void confirm    (
                          ieee154_status_t status
                        );

}

--- NEW FILE: MLME_SYNC_LOSS.nc ---
/*
 * Copyright (c) 2008, 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 
 * 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 
 *   documentation and/or other materials provided with the distribution.
 * - 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 
 * 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 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * - Revision -------------------------------------------------------------
 * $Revision: 1.1 $
 * $Date: 2008/06/16 18:00:32 $
 * @author Jan Hauer <hauer at tkn.tu-berlin.de>
 * ========================================================================
 */

#include "TKN154.h"
interface MLME_SYNC_LOSS {

  /**
   * Indicates the loss of synchronization with a coordinator
   *
   * @param lossReason The reason that synchronization was lost
   * @param PANId The PAN identifier with which the device lost 
   *              synchronization or to which it was realigned.
   * @param LogicalChannel The logical channel on which the device lost
                           synchronization or to which it was realigned.
   * @param ChannelPage The channel page on which the device lost 
   *                    synchronization or to which it was realigned.
   * @param security        The security options, NULL means security is 
   *                        disabled.
   */
  event void indication (
                          ieee154_status_t lossReason,
                          uint16_t PANId,
                          uint8_t LogicalChannel,
                          uint8_t ChannelPage,
                          ieee154_security_t *security
                        );

}

--- NEW FILE: MLME_SYNC.nc ---
/*
 * Copyright (c) 2008, 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 
 * 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 
 *   documentation and/or other materials provided with the distribution.
 * - 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 
 * 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 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * - Revision -------------------------------------------------------------
 * $Revision: 1.1 $
 * $Date: 2008/06/16 18:00:32 $
 * @author Jan Hauer <hauer at tkn.tu-berlin.de>
 * ========================================================================
 */
interface MLME_SYNC {

  /**
   * Requests to synchronize with the coordinator by acquiring and, if
   * specified, tracking its beacons.
   * 
   * @param LogicalChannel Logical channel on which to attempt coordinator
   *                       synchronization
   * @param ChannelPage The channel page on which to attempt coordinator
   *                    synchronization.
   * @param TrackBeacon TRUE if the MLME is to synchronize with the next
   *                    beacon and attempt to track all future beacons.
   *                    FALSE if the MLME is to synchronize with only the
   *                    next beacon.
   * @return       IEEE154_SUCCESS if the request succeeded and the device
   *               is now trying to acquire synchronization with the coordinator.
   *               Note: the MLME_SYNC_LOSS interface is used to signal
   *               when synchronization was lost (or never acquired)
   */
  command ieee154_status_t request  (
                          uint8_t LogicalChannel,
                          uint8_t ChannelPage,
                          bool TrackBeacon
                        );

}



More information about the Tinyos-2-commits mailing list