X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=apps%2Ftests%2Ftkn154%2FTestData%2Fdevice%2FTestDeviceSenderC.nc;fp=apps%2Ftests%2Ftkn154%2FTestData%2Fdevice%2FTestDeviceSenderC.nc;h=0000000000000000000000000000000000000000;hb=e9bfab607e051bae6afb47b44892ce37541d1b44;hp=4534df2eb491e0b0a1814abea748c36b9ca611d6;hpb=adf1de6c009d13b7b52e68535c63b28f59c97400;p=tinyos-2.x.git diff --git a/apps/tests/tkn154/TestData/device/TestDeviceSenderC.nc b/apps/tests/tkn154/TestData/device/TestDeviceSenderC.nc deleted file mode 100644 index 4534df2e..00000000 --- a/apps/tests/tkn154/TestData/device/TestDeviceSenderC.nc +++ /dev/null @@ -1,208 +0,0 @@ -/* - * 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$ - * $Date$ - * @author: Jan Hauer - * ======================================================================== - */ - -#include "TKN154.h" -#include "app_profile.h" -module TestDeviceSenderC -{ - uses { - interface Boot; - interface MCPS_DATA; - interface MLME_RESET; - interface MLME_SET; - interface MLME_GET; - interface MLME_SCAN; - interface MLME_SYNC; - interface MLME_BEACON_NOTIFY; - interface MLME_SYNC_LOSS; - interface IEEE154Frame as Frame; - interface IEEE154BeaconFrame as BeaconFrame; - interface Leds; - interface Packet; - } -} implementation { - - message_t m_frame; - uint8_t m_payloadLen; - ieee154_PANDescriptor_t m_PANDescriptor; - bool m_ledCount; - bool m_isPANDescriptorValid; - bool m_sending; - - void startApp(); - task void packetSendTask(); - - - event void Boot.booted() { - char payload[] = "Hello Coordinator!"; - uint8_t *payloadRegion; - - m_payloadLen = strlen(payload); - payloadRegion = call Packet.getPayload(&m_frame, m_payloadLen); - if (m_payloadLen <= call Packet.maxPayloadLength()){ - memcpy(payloadRegion, payload, m_payloadLen); - call MLME_RESET.request(TRUE, BEACON_ENABLED_PAN); - } - } - - event void MLME_RESET.confirm(ieee154_status_t status) - { - if (status == IEEE154_SUCCESS) - startApp(); - } - - void startApp() - { - ieee154_phyChannelsSupported_t channelMask; - uint8_t scanDuration = BEACON_ORDER; - - m_isPANDescriptorValid = FALSE; - call MLME_SET.macShortAddress(TOS_NODE_ID); - - // scan only one channel - channelMask = ((uint32_t) 1) << RADIO_CHANNEL; - - // we want all received beacons to be signalled - // through the MLME_BEACON_NOTIFY interface, i.e. - // we set the macAutoRequest attribute to FALSE - call MLME_SET.macAutoRequest(FALSE); - call MLME_SCAN.request ( - PASSIVE_SCAN, // ScanType - channelMask, // ScanChannels - scanDuration, // ScanDuration - 0x00, // ChannelPage - 0, // EnergyDetectListNumEntries - NULL, // EnergyDetectList - 0, // PANDescriptorListNumEntries - NULL, // PANDescriptorList - 0 // security - ); - } - - event message_t* MLME_BEACON_NOTIFY.indication (message_t* frame) - { - // received a beacon frame - ieee154_phyCurrentPage_t page = call MLME_GET.phyCurrentPage(); - ieee154_macBSN_t beaconSequenceNumber = call BeaconFrame.getBSN(frame); - - if (beaconSequenceNumber & 1) - call Leds.led2On(); - else - call Leds.led2Off(); - if (!m_isPANDescriptorValid && call BeaconFrame.parsePANDescriptor( - frame, RADIO_CHANNEL, page, &m_PANDescriptor) == SUCCESS){ - // let's see if the beacon is from our coordinator... - if (m_PANDescriptor.CoordAddrMode == ADDR_MODE_SHORT_ADDRESS && - m_PANDescriptor.CoordPANId == PAN_ID && - m_PANDescriptor.CoordAddress.shortAddress == COORDINATOR_ADDRESS){ - // yes! wait until SCAN is finished, then syncronize to the beacons - m_isPANDescriptorValid = TRUE; - } - } - return frame; - } - - event void MLME_SCAN.confirm ( - ieee154_status_t status, - uint8_t ScanType, - uint8_t ChannelPage, - uint32_t UnscannedChannels, - uint8_t EnergyDetectListNumEntries, - int8_t* EnergyDetectList, - uint8_t PANDescriptorListNumEntries, - ieee154_PANDescriptor_t* PANDescriptorList - ) - { - if (m_isPANDescriptorValid){ - call MLME_SET.macCoordShortAddress(m_PANDescriptor.CoordAddress.shortAddress); - call MLME_SET.macPANId(m_PANDescriptor.CoordPANId); - call MLME_SYNC.request(m_PANDescriptor.LogicalChannel, m_PANDescriptor.ChannelPage, TRUE); - call Frame.setAddressingFields( - &m_frame, - ADDR_MODE_SHORT_ADDRESS, // SrcAddrMode, - ADDR_MODE_SHORT_ADDRESS, // DstAddrMode, - m_PANDescriptor.CoordPANId, // DstPANId, - &m_PANDescriptor.CoordAddress, // DstAddr, - NULL // security - ); - post packetSendTask(); - } else - startApp(); - } - - task void packetSendTask() - { - if (!m_sending && m_isPANDescriptorValid && - call MCPS_DATA.request ( - &m_frame, // frame, - m_payloadLen, // payloadLength, - 0, // msduHandle, - TX_OPTIONS_ACK // TxOptions, - ) == IEEE154_SUCCESS) - m_sending = TRUE; - } - - event void MCPS_DATA.confirm ( - message_t *msg, - uint8_t msduHandle, - ieee154_status_t status, - uint32_t timestamp - ) - { - m_sending = FALSE; - if (status == IEEE154_SUCCESS && m_ledCount++ == 20){ - m_ledCount = 0; - call Leds.led1Toggle(); - } - post packetSendTask(); - } - - event void MLME_SYNC_LOSS.indication( - ieee154_status_t lossReason, - uint16_t PANId, - uint8_t LogicalChannel, - uint8_t ChannelPage, - ieee154_security_t *security) - { - startApp(); - } - - event message_t* MCPS_DATA.indication (message_t* frame) - { - // we don't expect data - return frame; - } - -}