From 5aba05920122b890f6f8c25f5dd1e43d11bb6133 Mon Sep 17 00:00:00 2001 From: "md.jamal" Date: Mon, 11 Aug 2014 10:07:39 +0530 Subject: [PATCH 01/10] Missing Separator Problem Solved --- apps/tests/TestRPL/udp/Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/tests/TestRPL/udp/Makefile b/apps/tests/TestRPL/udp/Makefile index a9c2dba7a1..ca7d1388a5 100644 --- a/apps/tests/TestRPL/udp/Makefile +++ b/apps/tests/TestRPL/udp/Makefile @@ -80,14 +80,14 @@ CFLAGS+=-DPACKET_INTERVAL=5120UL CFLAGS+=-DRPL_ROOT_ADDR=11 -<<<<<<< HEAD -# enable printf -CFLAGS += -DNEW_PRINTF_SEMANTICS -DPRINTFUART_ENABLED -DPRINTF_BUFFER_SIZE=1024 -======= + + + + GOALS += blip rpl ->>>>>>> BLIP+RPL: updating /apps + TINYOS_ROOT_DIR?=../../../.. include $(TINYOS_ROOT_DIR)/Makefile.include From a61fb51a1a9fd8c045068b056061c4b4487ce1b8 Mon Sep 17 00:00:00 2001 From: "md.jamal" Date: Mon, 11 Aug 2014 10:08:29 +0530 Subject: [PATCH 02/10] Solved the compiling problem of TestLinkLocal Application --- apps/tests/blip/TestLinkLocal/Makefile | 2 ++ apps/tests/blip/TestLinkLocal/TestLinkLocalAppC.nc | 1 + apps/tests/blip/TestLinkLocal/TestLinkLocalC.nc | 11 +++++------ 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/apps/tests/blip/TestLinkLocal/Makefile b/apps/tests/blip/TestLinkLocal/Makefile index 9d8daec918..4cd7bcfb0b 100644 --- a/apps/tests/blip/TestLinkLocal/Makefile +++ b/apps/tests/blip/TestLinkLocal/Makefile @@ -1,5 +1,7 @@ COMPONENT=TestLinkLocalAppC +GOALS += blip TINYOS_ROOT_DIR?=../../../.. include $(TINYOS_ROOT_DIR)/Makefile.include CFLAGS += -DIN6_NO_GLOBAL -DLIB6LOWPAN_HC_VERSION=-1 CFLAGS += -DPRINTFUART_ENABLED +PFLAGS += -DIN6_PREFIX=\"fec0::\" diff --git a/apps/tests/blip/TestLinkLocal/TestLinkLocalAppC.nc b/apps/tests/blip/TestLinkLocal/TestLinkLocalAppC.nc index 1690b2c06c..9727ec3d77 100644 --- a/apps/tests/blip/TestLinkLocal/TestLinkLocalAppC.nc +++ b/apps/tests/blip/TestLinkLocal/TestLinkLocalAppC.nc @@ -15,6 +15,7 @@ configuration TestLinkLocalAppC { TestLinkLocalC.Timer -> TimerMilliC; TestLinkLocalC.Leds -> LedsC; + components PrintfC,SerialStartC; components StaticIPAddressTosIdC; // Use TOS_NODE_ID in address //components StaticIPAddressC; // Use LocalIeee154 in address } diff --git a/apps/tests/blip/TestLinkLocal/TestLinkLocalC.nc b/apps/tests/blip/TestLinkLocal/TestLinkLocalC.nc index 29c484d45e..0dcdf41438 100644 --- a/apps/tests/blip/TestLinkLocal/TestLinkLocalC.nc +++ b/apps/tests/blip/TestLinkLocal/TestLinkLocalC.nc @@ -1,5 +1,5 @@ -#include +#include "blip_printf.h" #include module TestLinkLocalC { @@ -23,7 +23,6 @@ module TestLinkLocalC { }; event void Boot.booted() { - printfUART_init(); call SplitControl.start(); m_data.seqno = 0; } @@ -51,16 +50,16 @@ module TestLinkLocalC { event void Sock.recvfrom(struct sockaddr_in6 *src, void *payload, uint16_t len, struct ip6_metadata *meta) { nx_struct echo_state *cmd = payload; - printfUART("TestLinkLocalC: recv from: "); - printfUART_in6addr(&src->sin6_addr); - printfUART("\n"); + printf("TestLinkLocalC: recv from: "); + printf_in6addr(&src->sin6_addr); + printf("\n"); if (cmd->cmd == CMD_ECHO) { cmd->cmd = CMD_REPLY; call Sock.sendto(src, payload, len); call Leds.led1Toggle(); } else { - printfUART("TestLinkLocalC: reply seqno: %li\n", cmd->seqno); + printf("TestLinkLocalC: reply seqno: %li\n", cmd->seqno); call Leds.led2Toggle(); } } From cc4a2263f2e83de1fe73f9449486200504f98ed8 Mon Sep 17 00:00:00 2001 From: "md.jamal" Date: Mon, 11 Aug 2014 10:12:43 +0530 Subject: [PATCH 03/10] Printf Component added in the Configuration File --- apps/PppRouter/PppRouterC.nc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/PppRouter/PppRouterC.nc b/apps/PppRouter/PppRouterC.nc index bdf27b8e3e..9741e9be25 100644 --- a/apps/PppRouter/PppRouterC.nc +++ b/apps/PppRouter/PppRouterC.nc @@ -34,6 +34,10 @@ configuration PppRouterC { PppDaemonC.HdlcUart -> HdlcUartC; PppDaemonC.UartControl -> HdlcUartC; +#if defined(PRINTFUART_ENABLED) + components PrintfC,SerialStartC; +#endif + // SDH : don't bother including the PppPrintfC by default // components PppPrintfC, PppC;; // PppPrintfC.Ppp -> PppDaemonC; From e2329850584b5268b8236172361c2c7a72d46493 Mon Sep 17 00:00:00 2001 From: "md.jamal" Date: Tue, 12 Aug 2014 08:50:16 +0530 Subject: [PATCH 04/10] Commenting the Printf Line from Makefile --- apps/PppRouter/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/PppRouter/Makefile b/apps/PppRouter/Makefile index d20dc8f2d4..557b9a8d7e 100644 --- a/apps/PppRouter/Makefile +++ b/apps/PppRouter/Makefile @@ -79,7 +79,7 @@ PFLAGS += -DPPP_HDLC_TX_FRAME_LIMIT=8 ### Configure printf() output ################################################################################ -PFLAGS += -DNEW_PRINTF_SEMANTICS -DPRINTFUART_ENABLED +#PFLAGS += -DNEW_PRINTF_SEMANTICS -DPRINTFUART_ENABLED ################################################################################ ### Configure this application From e67eee3cf669f6bb4ad1a51c8309d9dd8de7f0d2 Mon Sep 17 00:00:00 2001 From: Mohammad Jamal Date: Fri, 23 Jan 2015 12:56:58 +0530 Subject: [PATCH 05/10] Printf logging levels --- apps/tests/TestPrintf/Makefile | 7 +++---- apps/tests/TestPrintf/TestPrintfC.nc | 15 ++++++++++----- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/apps/tests/TestPrintf/Makefile b/apps/tests/TestPrintf/Makefile index 0be6b263bb..871e52ea75 100644 --- a/apps/tests/TestPrintf/Makefile +++ b/apps/tests/TestPrintf/Makefile @@ -1,5 +1,4 @@ COMPONENT=TestPrintfAppC -CFLAGS += -I$(TINYOS_OS_DIR)/lib/printf - -TINYOS_ROOT_DIR?=../../.. -include $(TINYOS_ROOT_DIR)/Makefile.include +CFLAGS += -I$(TOSDIR)/lib/printf +CFLAGS += -DDEFAULT_LOG_LEVEL=3 +include $(MAKERULES) diff --git a/apps/tests/TestPrintf/TestPrintfC.nc b/apps/tests/TestPrintf/TestPrintfC.nc index 676e0d7d27..5f9e42de10 100644 --- a/apps/tests/TestPrintf/TestPrintfC.nc +++ b/apps/tests/TestPrintf/TestPrintfC.nc @@ -60,11 +60,16 @@ implementation { } event void Timer.fired() { - printf("Hi I am writing to you from my TinyOS application!!\n"); - printf("Here is a uint8: %u\n", dummyVar1); - printf("Here is a uint16: %u\n", dummyVar2); - printf("Here is a uint32: %lu\n", dummyVar3); - printfflush(); + int i=32; + + pr_emergency("Emergency value:%d\n",i); + pr_alert("Alert value:%d\n",i); + pr_critical("Critical value:%d\n",i); + pr_error("Error value:%d\n",i); + pr_warning("Warning value:%d\n",i); + pr_info("Info value:%d\n",i); + pr_debug("Debug value:%d\n",i); + printfflush(); } } From 41a094165ca160a49cc29d000ac1cf4d3a12fdb9 Mon Sep 17 00:00:00 2001 From: Mohammad Jamal Date: Fri, 23 Jan 2015 13:03:49 +0530 Subject: [PATCH 06/10] printf debugging levels --- debug.h | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 debug.h diff --git a/debug.h b/debug.h new file mode 100644 index 0000000000..d619adf2d1 --- /dev/null +++ b/debug.h @@ -0,0 +1,49 @@ + +#ifndef DEBUG_H +#define DEBUG_H + + +#ifndef DEFAULT_LOG_LEVEL +#define DEFAULT_LOG_LEVEL 5 +#endif + +#define NOP (void)0 + + +#define print(log_level, ...) (log_level > DEFAULT_LOG_LEVEL) ? NOP : printf(__VA_ARGS__) + +#define pr_emergency(...) print(EMERGENCY, __VA_ARGS__) + +#define pr_alert(...) print(ALERT, __VA_ARGS__) + +#define pr_critical(...) print(CRITICAL, __VA_ARGS__) + +#define pr_error(...) print(ERROR, __VA_ARGS__) + +#define pr_warning(...) print(WARNING, __VA_ARGS__) + +#define pr_info(...) print(INFO, __VA_ARGS__) + +#define pr_debug(...) print(DEBUG, __VA_ARGS__) + + + + + +//Various Log Levels: (Names copied from kernel logging levels) + + +enum { + EMERGENCY = 0, //System is about to crash or is unstable + ALERT = 1, //Something bad happened and action must be taken immediately + CRITICAL = 2, //Critical condition occured like serious hardware/software issue + ERROR = 3, //Often used to indicate difficulties with the hardware + WARNING = 4, //Nothing serious by itself but might indicate problems + INFO = 5, //Informational Messages,e.g: startup information + DEBUG = 6, //Debug Information +}; + + + + +#endif From be7ca320f90f3589f478d5bd90e68d72cd6b5ff3 Mon Sep 17 00:00:00 2001 From: Mohammad Jamal Date: Fri, 23 Jan 2015 13:04:09 +0530 Subject: [PATCH 07/10] printf debugging levels --- printf.h | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 printf.h diff --git a/printf.h b/printf.h new file mode 100644 index 0000000000..9f114dcca9 --- /dev/null +++ b/printf.h @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2006 Washington University in St. Louis. + * 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 copyright holders 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 HOLDER 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. + */ + +/** + * + * @author Kevin Klues (klueska@cs.wustl.edu) + * @version $Revision: 1.17 $ + * @date $Date: 2010-06-29 22:07:50 $ + */ + +#ifndef PRINTF_H +#define PRINTF_H + +#ifndef NEW_PRINTF_SEMANTICS +#warning \ +" *************************** PRINTF SEMANTICS HAVE CHANGED! ********************************************* Make sure you now include the following two components in your top level application file: PrintfC and SerialStartC. To supress this warning in the future, #define the variable NEW_PRINTF_SEMANTICS. Take a look at the updated tutorial application under apps/tutorials/printf for an example. ************************************************************************************" +#endif + +#ifndef PRINTF_BUFFER_SIZE +#define PRINTF_BUFFER_SIZE 250 +#endif + +#if PRINTF_BUFFER_SIZE > 255 + #define PrintfQueueC BigQueueC + #define PrintfQueue BigQueue +#else + #define PrintfQueueC QueueC + #define PrintfQueue Queue +#endif + +#if defined (_H_msp430hardware_h) || defined (_H_atmega128hardware_H) + #include +#else +#ifdef __M16C60HARDWARE_H__ + #include "m16c60_printf.h" +#else + #include "generic_printf.h" +#endif +#endif +#undef putchar + +#include "message.h" +#include "debug.h" +int printfflush(); + +#ifndef PRINTF_MSG_LENGTH +#define PRINTF_MSG_LENGTH 28 +#endif +typedef nx_struct printf_msg { + nx_uint8_t buffer[PRINTF_MSG_LENGTH]; +} printf_msg_t; + +enum { + AM_PRINTF_MSG = 100, +}; + + + + +#endif //PRINTF_H + From aa118569868bddf2f9a950d3640676efd643603c Mon Sep 17 00:00:00 2001 From: Mohammad Jamal Date: Fri, 23 Jan 2015 13:07:13 +0530 Subject: [PATCH 08/10] printf logging levels --- printf.h | 90 ------------------------------- debug.h => tos/lib/printf/debug.h | 0 tos/lib/printf/printf.h | 4 ++ 3 files changed, 4 insertions(+), 90 deletions(-) delete mode 100644 printf.h rename debug.h => tos/lib/printf/debug.h (100%) diff --git a/printf.h b/printf.h deleted file mode 100644 index 9f114dcca9..0000000000 --- a/printf.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2006 Washington University in St. Louis. - * 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 copyright holders 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 HOLDER 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. - */ - -/** - * - * @author Kevin Klues (klueska@cs.wustl.edu) - * @version $Revision: 1.17 $ - * @date $Date: 2010-06-29 22:07:50 $ - */ - -#ifndef PRINTF_H -#define PRINTF_H - -#ifndef NEW_PRINTF_SEMANTICS -#warning \ -" *************************** PRINTF SEMANTICS HAVE CHANGED! ********************************************* Make sure you now include the following two components in your top level application file: PrintfC and SerialStartC. To supress this warning in the future, #define the variable NEW_PRINTF_SEMANTICS. Take a look at the updated tutorial application under apps/tutorials/printf for an example. ************************************************************************************" -#endif - -#ifndef PRINTF_BUFFER_SIZE -#define PRINTF_BUFFER_SIZE 250 -#endif - -#if PRINTF_BUFFER_SIZE > 255 - #define PrintfQueueC BigQueueC - #define PrintfQueue BigQueue -#else - #define PrintfQueueC QueueC - #define PrintfQueue Queue -#endif - -#if defined (_H_msp430hardware_h) || defined (_H_atmega128hardware_H) - #include -#else -#ifdef __M16C60HARDWARE_H__ - #include "m16c60_printf.h" -#else - #include "generic_printf.h" -#endif -#endif -#undef putchar - -#include "message.h" -#include "debug.h" -int printfflush(); - -#ifndef PRINTF_MSG_LENGTH -#define PRINTF_MSG_LENGTH 28 -#endif -typedef nx_struct printf_msg { - nx_uint8_t buffer[PRINTF_MSG_LENGTH]; -} printf_msg_t; - -enum { - AM_PRINTF_MSG = 100, -}; - - - - -#endif //PRINTF_H - diff --git a/debug.h b/tos/lib/printf/debug.h similarity index 100% rename from debug.h rename to tos/lib/printf/debug.h diff --git a/tos/lib/printf/printf.h b/tos/lib/printf/printf.h index 10f7bc8e45..9f114dcca9 100644 --- a/tos/lib/printf/printf.h +++ b/tos/lib/printf/printf.h @@ -69,6 +69,7 @@ #undef putchar #include "message.h" +#include "debug.h" int printfflush(); #ifndef PRINTF_MSG_LENGTH @@ -82,5 +83,8 @@ enum { AM_PRINTF_MSG = 100, }; + + + #endif //PRINTF_H From 2c708db1ccd41100cada63e8946cb2a2fd2ba46f Mon Sep 17 00:00:00 2001 From: Mohammad Jamal Date: Wed, 11 Feb 2015 16:15:23 +0530 Subject: [PATCH 09/10] security implementation of cc2520 --- cc2520/CC2520.h | 870 ++++++++++++++++++++ cc2520/CC2520ActiveMessageC _unedit.nc | 118 +++ cc2520/CC2520ActiveMessageC.nc | 99 +++ cc2520/CC2520ActiveMessageP.nc | 291 +++++++ cc2520/CC2520ActiveMessageP_unedit.nc | 261 ++++++ cc2520/CC2520RadioC.nc | 79 ++ cc2520/CC2520TimeSyncMessage.h | 30 + cc2520/CC2520TimeSyncMessageC.nc | 79 ++ cc2520/CC2520TimeSyncMessageP.nc | 177 ++++ cc2520/IEEE802154.h | 40 + cc2520/README.txt | 119 +++ cc2520/alarm/AlarmMultiplexC.nc | 57 ++ cc2520/control/CC2520ControlC.nc | 151 ++++ cc2520/control/CC2520ControlP.nc | 832 +++++++++++++++++++ cc2520/control/CC2520ControlP_mam.nc | 860 ++++++++++++++++++++ cc2520/control/CC2520ControlP_orig.nc | 693 ++++++++++++++++ cc2520/csma/CC2520CsmaC.nc | 85 ++ cc2520/csma/CC2520CsmaP.nc | 319 ++++++++ cc2520/htmlreport.tar.gz | Bin 0 -> 995670 bytes cc2520/interfaces/123.nc | 74 ++ cc2520/interfaces/CC2520Config.nc | 120 +++ cc2520/interfaces/CC2520Fifo.nc | 93 +++ cc2520/interfaces/CC2520Key.nc | 24 + cc2520/interfaces/CC2520Packet.nc | 78 ++ cc2520/interfaces/CC2520PacketBody.nc | 56 ++ cc2520/interfaces/CC2520Power.nc | 99 +++ cc2520/interfaces/CC2520Ram.nc | 65 ++ cc2520/interfaces/CC2520Receive.nc | 66 ++ cc2520/interfaces/CC2520Register.nc | 59 ++ cc2520/interfaces/CC2520Strobe.nc | 47 ++ cc2520/interfaces/CC2520Transmit.nc | 87 ++ cc2520/interfaces/ChipSpiResource.nc | 41 + cc2520/interfaces/LowPowerListening.nc | 129 +++ cc2520/interfaces/PacketTimeSyncOffset.nc | 62 ++ cc2520/interfaces/PowerCycle.nc | 58 ++ cc2520/interfaces/RadioBackoff.nc | 97 +++ cc2520/interfaces/ReceiveIndicator.nc | 46 ++ cc2520/link/PacketLinkC.nc | 68 ++ cc2520/link/PacketLinkDummyC.nc | 59 ++ cc2520/link/PacketLinkDummyP.nc | 92 +++ cc2520/link/PacketLinkP.nc | 226 ++++++ cc2520/link/readme.txt | 6 + cc2520/lowpan/CC2520TinyosNetworkC.nc | 102 +++ cc2520/lowpan/CC2520TinyosNetworkP.nc | 259 ++++++ cc2520/lowpan/readme.txt | 1 + cc2520/lpl/DefaultLpl.h | 103 +++ cc2520/lpl/DefaultLplC.nc | 99 +++ cc2520/lpl/DefaultLplP.nc | 520 ++++++++++++ cc2520/lpl/DummyLplC.nc | 68 ++ cc2520/lpl/DummyLplP.nc | 84 ++ cc2520/lpl/PowerCycleC.nc | 82 ++ cc2520/lpl/PowerCycleP.nc | 313 ++++++++ cc2520/lpl/readme.txt | 98 +++ cc2520/packet/CC2520PacketC.nc | 72 ++ cc2520/packet/CC2520PacketP.nc | 254 ++++++ cc2520/receive/CC2520ReceiveC.nc | 96 +++ cc2520/receive/CC2520ReceiveP.nc | 655 +++++++++++++++ cc2520/security/CC2520KeyC.nc | 29 + cc2520/security/CC2520KeyP.nc | 175 ++++ cc2520/spi/CC2520SpiC.nc | 247 ++++++ cc2520/spi/CC2520SpiP.nc | 449 +++++++++++ cc2520/spi/CC2520SpiP_edited.nc | 459 +++++++++++ cc2520/spi/CC2520SpiWireC.nc | 69 ++ cc2520/transmit/CC2520TransmitC.nc | 119 +++ cc2520/transmit/CC2520TransmitP.nc | 932 ++++++++++++++++++++++ cc2520/transmit/CC2520TransmitP2.nc | 723 +++++++++++++++++ cc2520/unique/UniqueReceiveC.nc | 65 ++ cc2520/unique/UniqueReceiveP.nc | 162 ++++ cc2520/unique/UniqueSendC.nc | 65 ++ cc2520/unique/UniqueSendP.nc | 110 +++ 70 files changed, 13322 insertions(+) create mode 100644 cc2520/CC2520.h create mode 100644 cc2520/CC2520ActiveMessageC _unedit.nc create mode 100644 cc2520/CC2520ActiveMessageC.nc create mode 100644 cc2520/CC2520ActiveMessageP.nc create mode 100644 cc2520/CC2520ActiveMessageP_unedit.nc create mode 100644 cc2520/CC2520RadioC.nc create mode 100644 cc2520/CC2520TimeSyncMessage.h create mode 100644 cc2520/CC2520TimeSyncMessageC.nc create mode 100644 cc2520/CC2520TimeSyncMessageP.nc create mode 100644 cc2520/IEEE802154.h create mode 100644 cc2520/README.txt create mode 100644 cc2520/alarm/AlarmMultiplexC.nc create mode 100644 cc2520/control/CC2520ControlC.nc create mode 100644 cc2520/control/CC2520ControlP.nc create mode 100644 cc2520/control/CC2520ControlP_mam.nc create mode 100644 cc2520/control/CC2520ControlP_orig.nc create mode 100644 cc2520/csma/CC2520CsmaC.nc create mode 100644 cc2520/csma/CC2520CsmaP.nc create mode 100644 cc2520/htmlreport.tar.gz create mode 100644 cc2520/interfaces/123.nc create mode 100644 cc2520/interfaces/CC2520Config.nc create mode 100644 cc2520/interfaces/CC2520Fifo.nc create mode 100644 cc2520/interfaces/CC2520Key.nc create mode 100644 cc2520/interfaces/CC2520Packet.nc create mode 100644 cc2520/interfaces/CC2520PacketBody.nc create mode 100644 cc2520/interfaces/CC2520Power.nc create mode 100644 cc2520/interfaces/CC2520Ram.nc create mode 100644 cc2520/interfaces/CC2520Receive.nc create mode 100644 cc2520/interfaces/CC2520Register.nc create mode 100644 cc2520/interfaces/CC2520Strobe.nc create mode 100644 cc2520/interfaces/CC2520Transmit.nc create mode 100644 cc2520/interfaces/ChipSpiResource.nc create mode 100644 cc2520/interfaces/LowPowerListening.nc create mode 100644 cc2520/interfaces/PacketTimeSyncOffset.nc create mode 100644 cc2520/interfaces/PowerCycle.nc create mode 100644 cc2520/interfaces/RadioBackoff.nc create mode 100644 cc2520/interfaces/ReceiveIndicator.nc create mode 100644 cc2520/link/PacketLinkC.nc create mode 100644 cc2520/link/PacketLinkDummyC.nc create mode 100644 cc2520/link/PacketLinkDummyP.nc create mode 100644 cc2520/link/PacketLinkP.nc create mode 100644 cc2520/link/readme.txt create mode 100644 cc2520/lowpan/CC2520TinyosNetworkC.nc create mode 100644 cc2520/lowpan/CC2520TinyosNetworkP.nc create mode 100644 cc2520/lowpan/readme.txt create mode 100644 cc2520/lpl/DefaultLpl.h create mode 100644 cc2520/lpl/DefaultLplC.nc create mode 100644 cc2520/lpl/DefaultLplP.nc create mode 100644 cc2520/lpl/DummyLplC.nc create mode 100644 cc2520/lpl/DummyLplP.nc create mode 100644 cc2520/lpl/PowerCycleC.nc create mode 100644 cc2520/lpl/PowerCycleP.nc create mode 100644 cc2520/lpl/readme.txt create mode 100644 cc2520/packet/CC2520PacketC.nc create mode 100644 cc2520/packet/CC2520PacketP.nc create mode 100644 cc2520/receive/CC2520ReceiveC.nc create mode 100644 cc2520/receive/CC2520ReceiveP.nc create mode 100644 cc2520/security/CC2520KeyC.nc create mode 100644 cc2520/security/CC2520KeyP.nc create mode 100644 cc2520/spi/CC2520SpiC.nc create mode 100644 cc2520/spi/CC2520SpiP.nc create mode 100644 cc2520/spi/CC2520SpiP_edited.nc create mode 100644 cc2520/spi/CC2520SpiWireC.nc create mode 100644 cc2520/transmit/CC2520TransmitC.nc create mode 100644 cc2520/transmit/CC2520TransmitP.nc create mode 100644 cc2520/transmit/CC2520TransmitP2.nc create mode 100644 cc2520/unique/UniqueReceiveC.nc create mode 100644 cc2520/unique/UniqueReceiveP.nc create mode 100644 cc2520/unique/UniqueSendC.nc create mode 100644 cc2520/unique/UniqueSendP.nc diff --git a/cc2520/CC2520.h b/cc2520/CC2520.h new file mode 100644 index 0000000000..47047ed7e4 --- /dev/null +++ b/cc2520/CC2520.h @@ -0,0 +1,870 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + * + * @author Jonathan Hui + * @author David Moss + * @version $Revision: 1.12 $ $Date: 2008/06/23 23:40:21 $ + */ + +#ifndef __CC2520_H__ +#define __CC2520_H__ + + + + +typedef uint8_t cc2520_status_t; + +#ifndef TFRAMES_ENABLED +#define CC2520_IFRAME_TYPE +#endif + +#ifndef PRINTF_ENABLED +#define PRINTF_ENABLED 0 +#endif + + +/* + *Security Header: + * --------------------------------------------------------- + * |Bytes:1 | 4 | 0/1/5/9 | + * |-------------------------------------------------------| + * |Security Control | Frame Counter | Key Identifier | + * -------------------------------------------------------- + * Security Control : Specifies the Security Level(bit 0-2) and key identifier mode(bit 3-4) + * Frame Counter : It is used to ensure the freshness(uniqueness) of each frame.Used + * to provide protection from Replay Attack + * + */ + +/* + *Security Levels + *---------------------------------------------------------------------- + *|Security Level | Security Suite Name | Description | + *---------------------------------------------------------------------- + *|0 | None | No security | + *---------------------------------------------------------------------- + *|1 | MIC-32 | 32 Bit Authentication | + *---------------------------------------------------------------------- + *|2 | MIC-64 | 64 Bit Authentication | + *---------------------------------------------------------------------- + *|3 | MIC-128 | 128 Bit Authentication| + *---------------------------------------------------------------------- + *|4 | ENC | Encryption | + *---------------------------------------------------------------------- + *|5 | ENC-MIC-32 | Encryption and 32bit | + *| | | Authentication | + *---------------------------------------------------------------------- + *|6 | ENC-MIC-64 | Encryption and 64bit | + *| | | Authentication | + *---------------------------------------------------------------------- + *|7 | ENC-MIC-128 | Encryption and 128bit | + *| | | Authentication | + *---------------------------------------------------------------------- + */ + +/*Key Identifier Modes + * --------------------------------------------------------------------- + *|Key Identifer Mode| Description | + *---------------------------------------------------------------------- + *|00 | Key is determined implicitly from the originator | + *| | and recipient(s) of the frame,as indicated in the| + *| | frame header | + *---------------------------------------------------------------------- + *|01 | Key is determined from the 1-octet key Index | + *| | subfield of the keyidentifier field of the | + *| | auxiliary security header in conjunction with | + *| | macDefaultKeySource | + *---------------------------------------------------------------------- + *|10 | Key is determined from the 4-octet key source | + *| | subfield and the 1-octet key index subfield of | + *| | of the keyidentifier field | + *---------------------------------------------------------------------- + *|11 | Key is determined from the 8-octet key source | + *| | subfield and the 1-octet key index subfield of | + *| | of the keyidentifier field | + *---------------------------------------------------------------------- + */ + +/* + *Key Identifier Field: + * The key Identifier field has a variable length and identifies the key that is used + * for cryptographic protection of outgoing frames,either explicitly or in conjunction + * with implicitly defined side information.The key identifier field shall be present + * only if the key identifier mode subfield of the security control field of the + * auxiliary security header is set to a value different than 0x00. + * ------------------------- + * |Octets:0/4/8|1 | + * ------------------------- + * |Key Source |Key Index | + * ------------------------- + * + * Key Source : Indicates the originator of a group key + * Key Index : Allows unique identification of different keys with the same + * originator. + * + */ + + +typedef nx_struct security_header_t { + nx_uint8_t secLevel:3; + nx_uint8_t keyMode:2; //This will fix it to 0x00 + nx_uint8_t reserved:3; + nx_uint32_t frameCounter; +} security_header_t; + + +/** + * CC2520 header. An I-frame (interoperability frame) header has an + * extra network byte specified by 6LowPAN + */ +typedef nx_struct cc2520_header_t { + nxle_uint8_t length; + nxle_uint16_t fcf; + nxle_uint8_t dsn; + nxle_uint16_t destpan; + nxle_uint16_t dest; + nxle_uint16_t src; + /** CC2420 802.15.4 header ends here */ +#ifdef CC2520_HW_SECURITY + security_header_t secHdr; +#endif + /** I-Frame 6LowPAN interoperability byte */ +#ifdef CC2520_IFRAME_TYPE + nxle_uint8_t network; +#endif + nxle_uint8_t type; + +} cc2520_header_t; + +/** + * CC2420 Packet Footer + */ +typedef nx_struct cc2520_footer_t { +} cc2520_footer_t; + +/** + * CC2520 Packet metadata. Contains extra information about the message + * that will not be transmitted. + * + * Note that the first two bytes automatically take in the values of the + * FCS when the payload is full. Do not modify the first two bytes of metadata. + */ +typedef nx_struct cc2520_metadata_t { + nx_uint8_t rssi; + nx_uint8_t lqi; + nx_uint8_t tx_power; + nx_bool crc; + nx_bool ack; + nx_bool timesync; + nx_uint32_t timestamp; + nx_uint16_t rxInterval; + + /** Packet Link Metadata */ +//#ifdef PACKET_LINK + nx_uint16_t maxRetries; + nx_uint16_t retryDelay; +//#endif + +} cc2520_metadata_t; + + +typedef nx_struct cc2520_packet_t { + cc2520_header_t packet; + nx_uint8_t data[]; +} cc2520_packet_t; + + +#ifndef TOSH_DATA_LENGTH +#define TOSH_DATA_LENGTH 28//28 +#endif + +#ifndef CC2520_DEF_CHANNEL +#define CC2520_DEF_CHANNEL 26 +#endif + +#ifndef CC2520_DEF_RFPOWER +#define CC2520_DEF_RFPOWER 31 +#endif + + + + +/** + * Ideally, your receive history size should be equal to the number of + * RF neighbors your node will have + */ +#ifndef RECEIVE_HISTORY_SIZE +#define RECEIVE_HISTORY_SIZE 4 +#endif + +/** + * The 6LowPAN NALP ID for a TinyOS network is 63 (TEP 125). + */ +#ifndef TINYOS_6LOWPAN_NETWORK_ID +#define TINYOS_6LOWPAN_NETWORK_ID 0x3f +#endif + + +enum { + // size of the header not including the length byte + MAC_HEADER_SIZE = sizeof( cc2520_header_t ) - 1, + // size of the footer (FCS field) + MAC_FOOTER_SIZE = sizeof( uint16_t ), + // MDU + MAC_PACKET_SIZE = MAC_HEADER_SIZE + TOSH_DATA_LENGTH + MAC_FOOTER_SIZE, + + CC2520_SIZE = MAC_HEADER_SIZE + MAC_FOOTER_SIZE, +}; + +enum cc2520_enums { + CC2520_TIME_ACK_TURNAROUND = 7, // jiffies + CC2520_TIME_VREN = 200, // jiffies CC2520_VREG_MAX_STARTUP_TIME -- lijo + CC2520_TIME_SYMBOL = 16,//2, // 2 symbols / jiffy + CC2520_BACKOFF_PERIOD = ( 20 / CC2520_TIME_SYMBOL ), // symbols + CC2520_MIN_BACKOFF = ( 20 / CC2520_TIME_SYMBOL ), // platform specific? + CC2520_ACK_WAIT_DELAY = 256, // jiffies +}; + +enum cc2420_status_enums { + /* CC2420_STATUS_RSSI_VALID = 1 << 1, + CC2420_STATUS_LOCK = 1 << 2, + CC2420_STATUS_TX_ACTIVE = 1 << 3, + CC2420_STATUS_ENC_BUSY = 1 << 4, + CC2420_STATUS_TX_UNDERFLOW = 1 << 5, + CC2420_STATUS_XOSC16M_STABLE = 1 << 6,*/ + + // modified by lijo on 03/12/2009 + + CC2520_STATUS_RX_ACTIVE = 1 << 0, + CC2520_STATUS_TX_ACTIVE = 1 << 1, + CC2520_STATUS_DPUL_ACTIVE = 1 << 2, + CC2520_STATUS_DPUH_ACTIVE = 1 << 3, + CC2520_STATUS_EXCEP_CHANNEL_B = 1 << 4, + CC2520_STATUS_EXCEP_CHANNEL_A = 1 << 5, + CC2520_STATUS_RSSI_VALID = 1 << 6, + CC2520_STATUS_XOSC16M_STABLE = 1 << 7, +}; + +/* +enum cc2420_config_reg_enums { + CC2420_SNOP = 0x00, + CC2420_SXOSCON = 0x01, + CC2420_STXCAL = 0x02, + CC2420_SRXON = 0x03, + CC2420_STXON = 0x04, + CC2420_STXONCCA = 0x05, + CC2420_SRFOFF = 0x06, + CC2420_SXOSCOFF = 0x07, + CC2420_SFLUSHRX = 0x08, + CC2420_SFLUSHTX = 0x09, + CC2420_SACK = 0x0a, + CC2420_SACKPEND = 0x0b, + CC2420_SRXDEC = 0x0c, + CC2420_STXENC = 0x0d, + CC2420_SAES = 0x0e, + CC2420_MAIN = 0x10, + CC2420_MDMCTRL0 = 0x11, + CC2420_MDMCTRL1 = 0x12, + CC2420_RSSI = 0x13, + CC2420_SYNCWORD = 0x14, + CC2420_TXCTRL = 0x15, + CC2420_RXCTRL0 = 0x16, + CC2420_RXCTRL1 = 0x17, + CC2420_FSCTRL = 0x18, + CC2420_SECCTRL0 = 0x19, + CC2420_SECCTRL1 = 0x1a, + CC2420_BATTMON = 0x1b, + CC2420_IOCFG0 = 0x1c, + CC2420_IOCFG1 = 0x1d, + CC2420_MANFIDL = 0x1e, + CC2420_MANFIDH = 0x1f, + CC2420_FSMTC = 0x20, + CC2420_MANAND = 0x21, + CC2420_MANOR = 0x22, + CC2420_AGCCTRL = 0x23, + CC2420_AGCTST0 = 0x24, + CC2420_AGCTST1 = 0x25, + CC2420_AGCTST2 = 0x26, + CC2420_FSTST0 = 0x27, + CC2420_FSTST1 = 0x28, + CC2420_FSTST2 = 0x29, + CC2420_FSTST3 = 0x2a, + CC2420_RXBPFTST = 0x2b, + CC2420_FMSTATE = 0x2c, + CC2420_ADCTST = 0x2d, + CC2420_DACTST = 0x2e, + CC2420_TOPTST = 0x2f, + CC2420_TXFIFO = 0x3e, + CC2420_RXFIFO = 0x3f, +}; */ + +enum cc2520_config_reg_enums { + + // FREG Registers + + CC2520_FRMFILT0 = 0x00, + CC2520_FRMFILT1 = 0x01, + CC2520_SRCMATCH = 0x02, + CC2520_SRCSHORTEN0 = 0x04, + CC2520_SRCSHORTEN1 = 0x05, + CC2520_SRCSHORTEN2 = 0x06, + CC2520_SRCEXTEN0 = 0x08, + CC2520_SRCEXTEN1 = 0x09, + CC2520_SRCEXTEN2 = 0x0A, + CC2520_FRMCTRL0 = 0x0C, + CC2520_FRMCTRL1 = 0x0D, + CC2520_RXENABLE0 = 0x0E, + CC2520_RXENABLE1 = 0x0F, + CC2520_EXCFLAG0 = 0x10, + CC2520_EXCFLAG1 = 0x11, + CC2520_EXCFLAG2 = 0x12, + CC2520_EXCMASKA0 = 0x14, + CC2520_EXCMASKA1 = 0x15, + CC2520_EXCMASKA2 = 0x16, + CC2520_EXCMASKB0 = 0x18, + CC2520_EXCMASKB1 = 0x19, + CC2520_EXCMASKB2 = 0x1A, + CC2520_EXCBINDX0 = 0x1C, + CC2520_EXCBINDX1 = 0x1D, + CC2520_EXCBINDY0 = 0x1E, + CC2520_EXCBINDY1 = 0x1F, + CC2520_GPIOCTRL0 = 0x20, + CC2520_GPIOCTRL1 = 0x21, + CC2520_GPIOCTRL2 = 0x22, + CC2520_GPIOCTRL3 = 0x23, + CC2520_GPIOCTRL4 = 0x24, + CC2520_GPIOCTRL5 = 0x25, + CC2520_GPIOPOLARITY = 0x26, + CC2520_GPIOCTRL = 0x28, + CC2520_DPUCON = 0x2A, + CC2520_DPUSTAT = 0x2C, + CC2520_FREQCTRL = 0x2E, + CC2520_FREQTUNE = 0x2F, + CC2520_TXPOWER = 0x30, + CC2520_TXCTRL = 0x31, + CC2520_FSMSTAT0 = 0x32, + CC2520_FSMSTAT1 = 0x33, + CC2520_FIFOPCTRL = 0x34, + CC2520_FSMCTRL = 0x35, + CC2520_CCACTRL0 = 0x36, + CC2520_CCACTRL1 = 0x37, + CC2520_RSSI = 0x38, + CC2520_RSSISTAT = 0x39, + CC2520_RXFIRST = 0x3C, + CC2520_RXFIFOCNT = 0x3E, + CC2520_TXFIFOCNT = 0x3F, + + // SREG registers + CC2520_CHIPID = 0x40, + CC2520_VERSION = 0x42, + CC2520_EXTCLOCK = 0x44, + CC2520_MDMCTRL0 = 0x46, + CC2520_MDMCTRL1 = 0x47, + CC2520_FREQEST = 0x48, + CC2520_RXCTRL = 0x4A, + CC2520_FSCTRL = 0x4C, + CC2520_FSCAL0 = 0x4E, + CC2520_FSCAL1 = 0x4F, + CC2520_FSCAL2 = 0x50, + CC2520_FSCAL3 = 0x51, + CC2520_AGCCTRL0 = 0x52, + CC2520_AGCCTRL1 = 0x53, + CC2520_AGCCTRL2 = 0x54, + CC2520_AGCCTRL3 = 0x55, + CC2520_ADCTEST0 = 0x56, + CC2520_ADCTEST1 = 0x57, + CC2520_ADCTEST2 = 0x58, + CC2520_MDMTEST0 = 0x5A, + CC2520_MDMTEST1 = 0x5B, + CC2520_DACTEST0 = 0x5C, + CC2520_DACTEST1 = 0x5D, + CC2520_ATEST = 0x5E, + CC2520_DACTEST2 = 0x5F, + CC2520_PTEST0 = 0x60, + CC2520_PTEST1 = 0x61, + CC2520_RESERVED = 0x62, + CC2520_DPUBIST = 0x7A, + CC2520_ACTBIST = 0x7C, + CC2520_RAMBIST = 0x7E, + +}; + +enum cc2520_spi_command_enums +{ + CC2520_CMD_SNOP = 0x00, // + CC2520_CMD_IBUFLD = 0x02, // + CC2520_CMD_SIBUFEX = 0x03, // + CC2520_CMD_SSAMPLECCA = 0x04, // + CC2520_CMD_SRES = 0x0f, // + CC2520_CMD_MEMORY_MASK = 0x0f, // + CC2520_CMD_MEMORY_READ = 0x10, // MEMRD + CC2520_CMD_MEMORY_WRITE = 0x20, // MEMWR + CC2520_CMD_RXBUF = 0x30, // + CC2520_CMD_RXBUFCP = 0x38, // + CC2520_CMD_RXBUFMOV = 0x32, // + CC2520_CMD_TXBUF = 0x3A, // + CC2520_CMD_TXBUFCP = 0x3E, // + CC2520_CMD_RANDOM = 0x3C, // + CC2520_CMD_SXOSCON = 0x40, // + CC2520_CMD_STXCAL = 0x41, // + CC2520_CMD_SRXON = 0x42, // + CC2520_CMD_STXON = 0x43, // + CC2520_CMD_STXONCCA = 0x44, // + CC2520_CMD_SRFOFF = 0x45, // + CC2520_CMD_SXOSCOFF = 0x46, // + CC2520_CMD_SFLUSHRX = 0x47, // + CC2520_CMD_SFLUSHTX = 0x48, // + CC2520_CMD_SACK = 0x49, // + CC2520_CMD_SACKPEND = 0x4A, // + CC2520_CMD_SNACK = 0x4B, // + CC2520_CMD_SRXMASKBITSET = 0x4C, // + CC2520_CMD_SRXMASKBITCLR = 0x4D, // + CC2520_CMD_RXMASKAND = 0x4E, // + CC2520_CMD_RXMASKOR = 0x4F, // + CC2520_CMD_MEMCP = 0x50, // + CC2520_CMD_MEMCPR = 0x52, // + CC2520_CMD_MEMXCP = 0x54, // + CC2520_CMD_MEMXWR = 0x56, // + CC2520_CMD_BCLR = 0x58, // + CC2520_CMD_BSET = 0x59, // + CC2520_CMD_CTR_UCTR = 0x60, // + CC2520_CMD_CBCMAC = 0x64, // + CC2520_CMD_UCBCMAC = 0x66, // + CC2520_CMD_CCM = 0x68, // + CC2520_CMD_UCCM = 0x6A, // + CC2520_CMD_ECB = 0x70, // + CC2520_CMD_ECBO = 0x72, // + CC2520_CMD_ECBX = 0x74, // + CC2520_CMD_INC = 0x78, // + CC2520_CMD_ABORT = 0x7F, // + CC2520_CMD_REGISTER_READ = 0x80, // + CC2520_CMD_REGISTER_WRITE = 0xC0, // +}; + +enum cc2520_security_enums{ + CC2520_NO_SEC = 0, + CC2520_CBC_MAC = 1, + CC2520_CTR = 2, + CC2520_CCM = 3, + NO_SEC = 0, + CBC_MAC_4 = 1, + CBC_MAC_8 = 2, + CBC_MAC_16 = 3, + CTR = 4, + CCM_4 = 5, + CCM_8 = 6, + CCM_16 = 7 +}; + + +//Different Security Levels + +enum security_levels { + SEC_NONE = 0x00, + SEC_MIC_32 = 0x01, + SEC_MIC_64 = 0x02, + SEC_MIC_128 = 0x03, + SEC_ENC = 0x04, + SEC_ENC_MIC_32 = 0x05, + SEC_ENC_MIC_64 = 0x06, + SEC_ENC_MIC_128 = 0x07, +}; + +//Different Flags +enum initialization_flags{ + FLAG_NONE = 0x00, + FLAG_MIC_32 = 0x09, + FLAG_MIC_64 = 0x19, + FLAG_MIC_128 = 0x39, + FLAG_ENC = 0x01, + FLAG_ENC_MIC_32 = 0x09, + FLAG_ENC_MIC_64 = 0x19, + FLAG_ENC_MIC_128 = 0x39, +}; + +/* +enum cc2520_exception_enums { + + CC2520_EXC_RF_IDLE = 0x00, + CC2520_EXC_TX_FRM_DONE = 0x01, + CC2520_EXC_TX_ACK_DONE = 0x02, + CC2520_EXC_TX_UNDERFLOW = 0x03, + CC2520_EXC_TX_OVERFLOW = 0x04, + CC2520_EXC_RX_UNDERFLOW = 0x05, + CC2520_EXC_RX_OVERFLOW = 0x06, + CC2520_EXC_RXENABLE_ZERO = 0x07, + CC2520_EXC_RX_FRM_DONE = 0x08, + CC2520_EXC_RX_FRM_ACCEPTED = 0x09, + CC2520_EXC_SRC_MATCH_DONE = 0x0A, + CC2520_EXC_SRC_MATCH_FOUND = 0x0B, + CC2520_EXC_FIFOP = 0x0C, + CC2520_EXC_SFD = 0x0D, + CC2520_EXC_DPU_DONE_L = 0x0E, + CC2520_EXC_DPU_DONE_H = 0x0F, + CC2520_EXC_MEMADDR_ERROR = 0x10, + CC2520_EXC_USAGE_ERROR = 0x11, + CC2520_EXC_OPERAND_ERROR = 0x12, + CC2520_EXC_SPI_ERROR = 0x13, + CC2520_EXC_RF_NO_LOCK = 0x14, + CC2520_EXC_RX_FRM_ABORTED = 0x15, + CC2520_EXC_RXBUFMOV_TIMEOUT = 0x16, +};*/ + +enum cc2520_exception_enums { + + CC2520_EXC_RF_IDLE = 0x01, + CC2520_EXC_TX_FRM_DONE = 0x02, + CC2520_EXC_TX_ACK_DONE = 0x03, + CC2520_EXC_TX_UNDERFLOW = 0x04, + CC2520_EXC_TX_OVERFLOW = 0x05, + CC2520_EXC_RX_UNDERFLOW = 0x06, + CC2520_EXC_RX_OVERFLOW = 0x07, + CC2520_EXC_RXENABLE_ZERO = 0x08, + CC2520_EXC_RX_FRM_DONE = 0x09, + CC2520_EXC_RX_FRM_ACCEPTED = 0x0A, + CC2520_EXC_SRC_MATCH_DONE = 0x0B, + CC2520_EXC_SRC_MATCH_FOUND = 0x0C, + CC2520_EXC_FIFOP = 0x0D, + CC2520_EXC_SFD = 0x0E, + CC2520_EXC_DPU_DONE_L = 0x0F, + CC2520_EXC_DPU_DONE_H = 0x10, + CC2520_EXC_MEMADDR_ERROR = 0x11, + CC2520_EXC_USAGE_ERROR = 0x12, + CC2520_EXC_OPERAND_ERROR = 0x13, + CC2520_EXC_SPI_ERROR = 0x14, + CC2520_EXC_RF_NO_LOCK = 0x15, + CC2520_EXC_RX_FRM_ABORTED = 0x16, + CC2520_EXC_RXBUFMOV_TIMEOUT = 0x17, +}; + +enum cc2520_GPIO_output_enums { + + CC2520_GPIO_EXC_CH_A = 0x21, + CC2520_GPIO_EXC_CH_B = 0x22, + CC2520_GPIO_EXC_CH_INVA = 0x23, + CC2520_GPIO_EXC_CH_INVB = 0x24, + CC2520_GPIO_EXC_CH_RX = 0x25, + C2520_GPIO_EXC_CH_ERR = 0x26, + CC2520_GPIO_FIFO = 0x27, + CC2520_GPIO_FIFOP = 0x28, + CC2520_GPIO_CCA = 0x29, + CC2520_GPIO_SFD = 0x2A, + CC2520_GPIO_RSSI_VALID = 0x2C, + CC2520_GPIO_SAMPLED_CCA = 0x2D, + CC2520_GPIO_SNIFFER_CLK = 0x31, + CC2520_GPIO_SNIFFER_DATA = 0x32, + CC2520_GPIO_RX_ACTIVE = 0x43, + CC2520_GPIO_TX_ACTIVE = 0x44, + CC2520_GPIO_LOW = 0x7E, + CC2520_GPIO_HIGH = 0x7F, +}; + +enum cc2520_reg_access_enums { + CC2520_FREG_MASK = 0x3F, // highest address in FREG + CC2520_SREG_MASK = 0x7F, // highest address in SREG + //CC2520_CMD_REGISTER_WRITE = 0xC0, +}; +/* + CC2420_RAM_TXFIFO = 0x000, + CC2420_RAM_RXFIFO = 0x080, + CC2420_RAM_KEY0 = 0x100, + CC2420_RAM_RXNONCE = 0x110, + CC2420_RAM_SABUF = 0x120, + CC2420_RAM_KEY1 = 0x130, + CC2420_RAM_TXNONCE = 0x140, + CC2420_RAM_CBCSTATE = 0x150, + CC2420_RAM_IEEEADR = 0x160, + CC2420_RAM_PANID = 0x168, + CC2420_RAM_SHORTADR = 0x16a, +*/ + +enum cc2520_ram_addr_enums { + + CC2520_RAM_TXFIFO = 0x100, + CC2520_RAM_RXFIFO = 0x180, + CC2520_RAM_TXFRAME = 0x200, //Allocate 127 Bytes MTU to a Frame + CC2520_RAM_RXFRAME = 0x280, + CC2520_RAM_KEY0 = 0x300, + CC2520_RAM_TXNONCE = 0x310, + CC2520_RAM_RXNONCE = 0x320, + CC2520_RAM_SABUF = 0x220, + CC2520_RAM_CBCSTATE = 0x360, + + + + CC2520_RAM_PANID = 0x3F2, + CC2520_RAM_SHORTADR = 0x3F4, + CC2520_RAM_IEEEADR = 0x3EA, +}; + +enum cc2520_nonce_enums { + CC2520_NONCE_BLOCK_COUNTER = 0, + CC2520_NONCE_KEY_SEQ_COUNTER = 2, + CC2520_NONCE_FRAME_COUNTER = 3, + CC2520_NONCE_SOURCE_ADDRESS = 7, + CC2520_NONCE_FLAGS = 15, +}; + + + +enum cc2520_mdmctrl0_enums { + + CC2520_MDMCTRL0_DEM_NUM_ZEROS = 6, + CC2520_MDMCTRL0_DEMOD_AVG_MODE = 5, + CC2520_MDMCTRL0_PREAMBLE_LENGTH = 1, + CC2520_MDMCTRL0_TX_FILTER = 0, +}; + +enum cc2520_mdmctrl1_enums { + + CC2520_MDMCTRL1_RESERVED = 6, + CC2520_MDMCTRL1_CORR_THR_SFD = 5, + CC2520_MDMCTRL1_CORR_THR = 0, +}; + + +enum cc2520_frmctrl0_enums { + + CC2520_FMCTRL0_APPEND_DATA_MODE = 7, + CC2520_FMCTRL0_AUTOCRC = 6, + CC2520_FMCTRL0_AUTOACK = 5, + CC2520_FMCTRL0_ENERGY_SCAN = 4, + CC2520_FMCTRL0_RX_MODE = 2, + CC2520_FMCTRL0_TX_MODE = 0, + + +}; + +enum cc2520_freqctrl_enums { + + CC2520_FREQCTRL_RESERVED = 7, + CC2520_FREQCTRL_FREQ = 0, +}; + +enum cc2520_txpower_enums { + CC2520_TXPOWER_PA_POWER = 0, +}; + +enum cc2520_frmfilt0_enums { + + CC2520_FRMFILT0_RESERVED = 7, + CC2520_FRMFILT0_FCF_RESERVED_MASK = 4, + CC2520_FRMFILT0_MAX_FRAME_VERSION = 2, + CC2520_FRMFILT0_PAN_COORDINATOR = 1, + CC2520_FRMFILT0_FRAME_FILTER_EN = 0, + +}; + +enum cc2520_frmfilt1_enums { + + CC2520_FRMFILT1_ACCEPT_FT_4TO7 = 7, + CC2520_FRMFILT1_ACCEPT_FT_3_MAC_CMD = 6, + CC2520_FRMFILT1_ACCEPT_FT_2_ACK = 5, + CC2520_FRMFILT1_ACCEPT_FT_1_DATA = 4, + CC2520_FRMFILT1_ACCEPT_FT_0_BEACON = 3, + C2520_FRMFILT1_MODIFY_FT_FILTER = 1, + C2520_FRMFILT1_RESERVED = 0, +}; + +enum cc2520_srcmatch_enums { + CC2520_SRCMATCH_RESERVED = 3, + CC2520_SRCMATCH_PEND_DATAREQ_ONLY = 2, + CC2520_SRCMATCH_AUTOPEND = 1, + CC2520_SRCMATCH_ENABLE = 0, +}; + +enum cc2520_fifopctrl_enums { + + CC2520_FIFOPCTRL_RESERVED = 7, + CC2520_FIFOPCTRL_FIFOP_THR = 0, +}; + + +enum cc2520_ccactrl0_enums { + + CC2520_CCACTRL0_CCA_THR = 0, +}; + +typedef union cc2520_rxctrl { + uint8_t value; +} cc2520_rxctrl_t; +static cc2520_rxctrl_t cc2520_rxctrl_default = {.value = 0x32}; + +enum +{ + CC2520_INVALID_TIMESTAMP = 0x80000000L, +}; + + +/* +enum cc2420_main_enums { + CC2420_MAIN_RESETn = 15, + CC2420_MAIN_ENC_RESETn = 14, + CC2420_MAIN_DEMOD_RESETn = 13, + CC2420_MAIN_MOD_RESETn = 12, + CC2420_MAIN_FS_RESETn = 11, + CC2420_MAIN_XOSC16M_BYPASS = 0, +}; + +enum cc2420_mdmctrl0_enums { + CC2420_MDMCTRL0_RESERVED_FRAME_MODE = 13, + CC2420_MDMCTRL0_PAN_COORDINATOR = 12, + CC2420_MDMCTRL0_ADR_DECODE = 11, + CC2420_MDMCTRL0_CCA_HYST = 8, + CC2420_MDMCTRL0_CCA_MOD = 6, + CC2420_MDMCTRL0_AUTOCRC = 5, + CC2420_MDMCTRL0_AUTOACK = 4, + CC2420_MDMCTRL0_PREAMBLE_LENGTH = 0, +}; + +enum cc2420_mdmctrl1_enums { + CC2420_MDMCTRL1_CORR_THR = 6, + CC2420_MDMCTRL1_DEMOD_AVG_MODE = 5, + CC2420_MDMCTRL1_MODULATION_MODE = 4, + CC2420_MDMCTRL1_TX_MODE = 2, + CC2420_MDMCTRL1_RX_MODE = 0, +}; + +enum cc2420_rssi_enums { + CC2420_RSSI_CCA_THR = 8, + CC2420_RSSI_RSSI_VAL = 0, +}; + +enum cc2420_syncword_enums { + CC2420_SYNCWORD_SYNCWORD = 0, +}; + +enum cc2420_txctrl_enums { + CC2420_TXCTRL_TXMIXBUF_CUR = 14, + CC2420_TXCTRL_TX_TURNAROUND = 13, + CC2420_TXCTRL_TXMIX_CAP_ARRAY = 11, + CC2420_TXCTRL_TXMIX_CURRENT = 9, + CC2420_TXCTRL_PA_CURRENT = 6, + CC2420_TXCTRL_RESERVED = 5, + CC2420_TXCTRL_PA_LEVEL = 0, +}; + +enum cc2420_rxctrl0_enums { + CC2420_RXCTRL0_RXMIXBUF_CUR = 12, + CC2420_RXCTRL0_HIGH_LNA_GAIN = 10, + CC2420_RXCTRL0_MED_LNA_GAIN = 8, + CC2420_RXCTRL0_LOW_LNA_GAIN = 6, + CC2420_RXCTRL0_HIGH_LNA_CURRENT = 4, + CC2420_RXCTRL0_MED_LNA_CURRENT = 2, + CC2420_RXCTRL0_LOW_LNA_CURRENT = 0, +}; + +enum cc2420_rxctrl1_enums { + CC2420_RXCTRL1_RXBPF_LOCUR = 13, + CC2420_RXCTRL1_RXBPF_MIDCUR = 12, + CC2420_RXCTRL1_LOW_LOWGAIN = 11, + CC2420_RXCTRL1_MED_LOWGAIN = 10, + CC2420_RXCTRL1_HIGH_HGM = 9, + CC2420_RXCTRL1_MED_HGM = 8, + CC2420_RXCTRL1_LNA_CAP_ARRAY = 6, + CC2420_RXCTRL1_RXMIX_TAIL = 4, + CC2420_RXCTRL1_RXMIX_VCM = 2, + CC2420_RXCTRL1_RXMIX_CURRENT = 0, +}; + +enum cc2420_rsctrl_enums { + CC2420_FSCTRL_LOCK_THR = 14, + CC2420_FSCTRL_CAL_DONE = 13, + CC2420_FSCTRL_CAL_RUNNING = 12, + CC2420_FSCTRL_LOCK_LENGTH = 11, + CC2420_FSCTRL_LOCK_STATUS = 10, + CC2420_FSCTRL_FREQ = 0, +}; + +enum cc2420_secctrl0_enums { + CC2420_SECCTRL0_RXFIFO_PROTECTION = 9, + CC2420_SECCTRL0_SEC_CBC_HEAD = 8, + CC2420_SECCTRL0_SEC_SAKEYSEL = 7, + CC2420_SECCTRL0_SEC_TXKEYSEL = 6, + CC2420_SECCTRL0_SEC_RXKEYSEL = 5, + CC2420_SECCTRL0_SEC_M = 2, + CC2420_SECCTRL0_SEC_MODE = 0, +}; + +enum cc2420_secctrl1_enums { + CC2420_SECCTRL1_SEC_TXL = 8, + CC2420_SECCTRL1_SEC_RXL = 0, +}; + +enum cc2420_battmon_enums { + CC2420_BATTMON_BATT_OK = 6, + CC2420_BATTMON_BATTMON_EN = 5, + CC2420_BATTMON_BATTMON_VOLTAGE = 0, +}; + +enum cc2420_iocfg0_enums { + CC2420_IOCFG0_BCN_ACCEPT = 11, + CC2420_IOCFG0_FIFO_POLARITY = 10, + CC2420_IOCFG0_FIFOP_POLARITY = 9, + CC2420_IOCFG0_SFD_POLARITY = 8, + CC2420_IOCFG0_CCA_POLARITY = 7, + CC2420_IOCFG0_FIFOP_THR = 0, +}; + +enum cc2420_iocfg1_enums { + CC2420_IOCFG1_HSSD_SRC = 10, + CC2420_IOCFG1_SFDMUX = 5, + CC2420_IOCFG1_CCAMUX = 0, +}; + +enum cc2420_manfidl_enums { + CC2420_MANFIDL_PARTNUM = 12, + CC2420_MANFIDL_MANFID = 0, +}; + +enum cc2420_manfidh_enums { + CC2420_MANFIDH_VERSION = 12, + CC2420_MANFIDH_PARTNUM = 0, +}; + +enum cc2420_fsmtc_enums { + CC2420_FSMTC_TC_RXCHAIN2RX = 13, + CC2420_FSMTC_TC_SWITCH2TX = 10, + CC2420_FSMTC_TC_PAON2TX = 6, + CC2420_FSMTC_TC_TXEND2SWITCH = 3, + CC2420_FSMTC_TC_TXEND2PAOFF = 0, +}; + +enum cc2420_sfdmux_enums { + CC2420_SFDMUX_SFD = 0, + CC2420_SFDMUX_XOSC16M_STABLE = 24, +}; + +enum +{ + CC2420_INVALID_TIMESTAMP = 0x80000000L, +}; +*/ +#endif diff --git a/cc2520/CC2520ActiveMessageC _unedit.nc b/cc2520/CC2520ActiveMessageC _unedit.nc new file mode 100644 index 0000000000..f82b4ea4c1 --- /dev/null +++ b/cc2520/CC2520ActiveMessageC _unedit.nc @@ -0,0 +1,118 @@ +/* + * "Copyright (c) 2005 Stanford University. All rights reserved. + * + * Permission to use, copy, modify, and distribute this software and + * its documentation for any purpose, without fee, and without written + * agreement is hereby granted, provided that the above copyright + * notice, the following two paragraphs and the author appear in all + * copies of this software. + * + * IN NO EVENT SHALL STANFORD UNIVERSITY BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF STANFORD UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * STANFORD UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE + * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND STANFORD UNIVERSITY + * HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS." + */ + +/** + * The Active Message layer for the CC2520 radio. This configuration + * just layers the AM dispatch (CC2520ActiveMessageM) on top of the + * underlying CC2520 radio packet (CC2520CsmaCsmaCC), which is + * inherently an AM packet (acknowledgements based on AM destination + * addr and group). Note that snooping may not work, due to CC2520 + * early packet rejection if acknowledgements are enabled. + * + * @author Philip Levis + * @author David Moss + * @version $Revision: 1.12 $ $Date: 2008/06/11 00:46:23 $ + */ + +#include "CC2520.h" +#include "AM.h" + +configuration CC2520ActiveMessageC { + provides { + interface SplitControl; + interface AMSend[am_id_t id]; + interface Receive[am_id_t id]; + interface Receive as Snoop[am_id_t id]; + interface AMPacket; + interface Packet; + interface CC2520Packet; + interface PacketAcknowledgements; + interface LinkPacketMetadata; + interface RadioBackoff[am_id_t amId]; + interface LowPowerListening; + interface PacketLink; + interface SendNotifier[am_id_t amId]; + } +} +implementation { + + components CC2520ActiveMessageP as AM; + components CC2520CsmaC as CsmaC; + components ActiveMessageAddressC; + components UniqueSendC; + components UniqueReceiveC; + components CC2520TinyosNetworkC; + components CC2520PacketC; + components CC2520ControlC; + +#if defined(LOW_POWER_LISTENING) || defined(ACK_LOW_POWER_LISTENING) + components DefaultLplC as LplC; +#else + components DummyLplC as LplC; +#endif + +#if defined(PACKET_LINK) + components PacketLinkC as LinkC; +#else + components PacketLinkDummyC as LinkC; +#endif + + + RadioBackoff = AM; + Packet = AM; + AMSend = AM; + SendNotifier = AM; + Receive = AM.Receive; + Snoop = AM.Snoop; + AMPacket = AM; + PacketLink = LinkC; + LowPowerListening = LplC; + CC2520Packet = CC2520PacketC; + PacketAcknowledgements = CC2520PacketC; + LinkPacketMetadata = CC2520PacketC; + + // SplitControl Layers + SplitControl = LplC; + LplC.SubControl -> CsmaC; + + // Send Layers + AM.SubSend -> UniqueSendC; + UniqueSendC.SubSend -> LinkC; + LinkC.SubSend -> LplC.Send; + LplC.SubSend -> CC2520TinyosNetworkC.Send; + CC2520TinyosNetworkC.SubSend -> CsmaC; + + // Receive Layers + AM.SubReceive -> LplC; + LplC.SubReceive -> UniqueReceiveC.Receive; + UniqueReceiveC.SubReceive -> CC2520TinyosNetworkC.Receive; + CC2520TinyosNetworkC.SubReceive -> CsmaC; + + AM.ActiveMessageAddress -> ActiveMessageAddressC; + AM.CC2520Packet -> CC2520PacketC; + AM.CC2520PacketBody -> CC2520PacketC; + AM.CC2520Config -> CC2520ControlC; + + AM.SubBackoff -> CsmaC; + +} diff --git a/cc2520/CC2520ActiveMessageC.nc b/cc2520/CC2520ActiveMessageC.nc new file mode 100644 index 0000000000..8b828c8037 --- /dev/null +++ b/cc2520/CC2520ActiveMessageC.nc @@ -0,0 +1,99 @@ +/* + * "Copyright (c) 2005 Stanford University. All rights reserved. + * + * Permission to use, copy, modify, and distribute this software and + * its documentation for any purpose, without fee, and without written + * agreement is hereby granted, provided that the above copyright + * notice, the following two paragraphs and the author appear in all + * copies of this software. + * + * IN NO EVENT SHALL STANFORD UNIVERSITY BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF STANFORD UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * STANFORD UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE + * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND STANFORD UNIVERSITY + * HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS." + */ + +/** + * The Active Message layer for the CC2520 radio. This configuration + * just layers the AM dispatch (CC2520ActiveMessageM) on top of the + * underlying CC2520 radio packet (CC2520CsmaCsmaCC), which is + * inherently an AM packet (acknowledgements based on AM destination + * addr and group). Note that snooping may not work, due to CC2520 + * early packet rejection if acknowledgements are enabled. + * + * @author Philip Levis + * @author David Moss + * @version $Revision: 1.12 $ $Date: 2008/06/11 00:46:23 $ + */ + +#include "CC2520.h" +#include "AM.h" + +configuration CC2520ActiveMessageC { + provides { + interface SplitControl; + interface AMSend[am_id_t id]; + interface Receive[am_id_t id]; + interface Receive as Snoop[am_id_t id]; + interface AMPacket; + interface Packet; + interface CC2520Packet; + interface PacketAcknowledgements; + interface LinkPacketMetadata; + interface RadioBackoff[am_id_t amId]; + interface LowPowerListening; + interface PacketLink; + interface SendNotifier[am_id_t amId]; + } +} +implementation { + + + enum { + CC2520_AM_SEND_ID = unique(RADIO_SEND_RESOURCE), + }; + + components CC2520RadioC as Radio; + components CC2520ActiveMessageP as AM; + components ActiveMessageAddressC; + components CC2520CsmaC as CsmaC; + components CC2520ControlC; + components CC2520PacketC; + + SplitControl = Radio; + RadioBackoff = AM; + Packet = AM; + AMSend = AM; + SendNotifier = AM; + Receive = AM.Receive; + Snoop = AM.Snoop; + AMPacket = AM; + PacketLink = Radio; + LowPowerListening = Radio; + CC2520Packet = Radio; + PacketAcknowledgements = Radio; + LinkPacketMetadata = Radio; + + // Radio resource for the AM layer + AM.SubSend -> Radio.ActiveSend; + AM.SubReceive -> Radio.ActiveReceive; + + AM.ActiveMessageAddress -> ActiveMessageAddressC; + AM.CC2520Packet -> CC2520PacketC; + AM.CC2520PacketBody -> CC2520PacketC; + AM.CC2520Config -> CC2520ControlC; + + AM.SubBackoff -> CsmaC; + + + + +} diff --git a/cc2520/CC2520ActiveMessageP.nc b/cc2520/CC2520ActiveMessageP.nc new file mode 100644 index 0000000000..ad1ae1eb02 --- /dev/null +++ b/cc2520/CC2520ActiveMessageP.nc @@ -0,0 +1,291 @@ +/* + * "Copyright (c) 2005 Stanford University. All rights reserved. + * + * Permission to use, copy, modify, and distribute this software and + * its documentation for any purpose, without fee, and without written + * agreement is hereby granted, provided that the above copyright + * notice, the following two paragraphs and the author appear in all + * copies of this software. + * + * IN NO EVENT SHALL STANFORD UNIVERSITY BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF STANFORD UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * STANFORD UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE + * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND STANFORD UNIVERSITY + * HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS." + */ + + +/** + * Active message implementation on top of the CC2520 radio. This + * implementation uses the 16-bit addressing mode of 802.15.4: the + * only additional byte it adds is the AM id byte, as the first byte + * of the data payload. + * + * @author Philip Levis + * @version $Revision: 1.18 $ $Date: 2008/06/24 05:32:31 $ + */ + +#include "CC2520.h" + +module CC2520ActiveMessageP @safe() { + provides { + interface AMSend[am_id_t id]; + interface Receive[am_id_t id]; + interface Receive as Snoop[am_id_t id]; + interface AMPacket; + interface Packet; + interface SendNotifier[am_id_t id]; + interface RadioBackoff[am_id_t id]; + } + + uses { + interface Send as SubSend; + interface Receive as SubReceive; + interface CC2520Packet; + interface CC2520PacketBody; + interface CC2520Config; + interface ActiveMessageAddress; + interface RadioBackoff as SubBackoff; + } +} +implementation { + + + uint32_t frameCounter = 0; + uint8_t micLength = 0; + /***************** AMSend Commands ****************/ + command error_t AMSend.send[am_id_t id](am_addr_t addr, + message_t* msg, + uint8_t len) { + cc2520_header_t* header = call CC2520PacketBody.getHeader( msg ); + #ifdef CC2520_HW_SECURITY + security_header_t* secHdr = (security_header_t*)&header->secHdr; + #endif + header->type = id; + header->dest = addr; + header->destpan = call CC2520Config.getPanAddr(); + header->src = call AMPacket.address(); + header->fcf |= ( 1 << IEEE154_FCF_INTRAPAN ) | + ( IEEE154_ADDR_SHORT << IEEE154_FCF_DEST_ADDR_MODE ) | + ( IEEE154_ADDR_SHORT << IEEE154_FCF_SRC_ADDR_MODE ) ; + header->length = len + CC2520_SIZE; + #ifdef CC2520_HW_SECURITY + /*Filling the security control byte*/ + secHdr->secLevel = SEC_ENC; + secHdr->keyMode = 0; //We will remove the key identifier field for now + secHdr->reserved = 0; + /*Filling the frame counter field*/ + secHdr->frameCounter = frameCounter; + /*Enabling the security bit in FCF*/ + header->fcf |= 1 << IEEE154_FCF_SECURITY_ENABLED; + frameCounter++; + micLength = 0; + + if(secHdr->secLevel == SEC_MIC_32 || secHdr->secLevel == SEC_ENC_MIC_32){ + micLength = 4; + }else if(secHdr->secLevel == SEC_MIC_64 || secHdr->secLevel == SEC_ENC_MIC_64){ + micLength = 8; + }else if(secHdr->secLevel == SEC_ENC_MIC_128 || secHdr->secLevel == SEC_ENC_MIC_128){ + micLength = 16; + } + len += micLength; + #endif + signal SendNotifier.aboutToSend[id](addr, msg); + return call SubSend.send( msg, len ); + } + + command error_t AMSend.cancel[am_id_t id](message_t* msg) { + return call SubSend.cancel(msg); + } + + command uint8_t AMSend.maxPayloadLength[am_id_t id]() { + return call Packet.maxPayloadLength(); + } + + command void* AMSend.getPayload[am_id_t id](message_t* m, uint8_t len) { + return call Packet.getPayload(m, len); + } + + /***************** AMPacket Commands ****************/ + command am_addr_t AMPacket.address() { + return call ActiveMessageAddress.amAddress(); + } + + command am_addr_t AMPacket.destination(message_t* amsg) { + cc2520_header_t* header = call CC2520PacketBody.getHeader(amsg); + return header->dest; + } + + command am_addr_t AMPacket.source(message_t* amsg) { + cc2520_header_t* header = call CC2520PacketBody.getHeader(amsg); + return header->src; + } + + command void AMPacket.setDestination(message_t* amsg, am_addr_t addr) { + cc2520_header_t* header = call CC2520PacketBody.getHeader(amsg); + header->dest = addr; + } + + command void AMPacket.setSource(message_t* amsg, am_addr_t addr) { + cc2520_header_t* header = call CC2520PacketBody.getHeader(amsg); + header->src = addr; + } + + command bool AMPacket.isForMe(message_t* amsg) { + return (call AMPacket.destination(amsg) == call AMPacket.address() || + call AMPacket.destination(amsg) == AM_BROADCAST_ADDR); + } + + command am_id_t AMPacket.type(message_t* amsg) { + cc2520_header_t* header = call CC2520PacketBody.getHeader(amsg); + return header->type; + } + + command void AMPacket.setType(message_t* amsg, am_id_t type) { + cc2520_header_t* header = call CC2520PacketBody.getHeader(amsg); + header->type = type; + } + + command am_group_t AMPacket.group(message_t* amsg) { + return (call CC2520PacketBody.getHeader(amsg))->destpan; + } + + command void AMPacket.setGroup(message_t* amsg, am_group_t grp) { + // Overridden intentionally when we send() + (call CC2520PacketBody.getHeader(amsg))->destpan = grp; + } + + command am_group_t AMPacket.localGroup() { + return call CC2520Config.getPanAddr(); + } + + + /***************** Packet Commands ****************/ + command void Packet.clear(message_t* msg) { + memset(call CC2520PacketBody.getHeader(msg), 0x0, sizeof(cc2520_header_t)); + memset(call CC2520PacketBody.getMetadata(msg), 0x0, sizeof(cc2520_metadata_t)); + } + + command uint8_t Packet.payloadLength(message_t* msg) { + return (call CC2520PacketBody.getHeader(msg))->length - CC2520_SIZE; + } + + command void Packet.setPayloadLength(message_t* msg, uint8_t len) { + (call CC2520PacketBody.getHeader(msg))->length = len + CC2520_SIZE; + } + + command uint8_t Packet.maxPayloadLength() { + return TOSH_DATA_LENGTH; + } + + command void* Packet.getPayload(message_t* msg, uint8_t len) { + return call SubSend.getPayload(msg, len); + } + + + /***************** SubSend Events ****************/ + event void SubSend.sendDone(message_t* msg, error_t result) { + signal AMSend.sendDone[call AMPacket.type(msg)](msg, result); + } + + + /***************** SubReceive Events ****************/ + event message_t* SubReceive.receive(message_t* msg, void* payload, uint8_t len) { + + if(!(call CC2520PacketBody.getMetadata(msg))->crc) { + return msg; + } + + if (call AMPacket.isForMe(msg)) { + return signal Receive.receive[call AMPacket.type(msg)](msg, payload, len); + } + else { + return signal Snoop.receive[call AMPacket.type(msg)](msg, payload, len); + } + } + + + /***************** ActiveMessageAddress Events ****************/ + async event void ActiveMessageAddress.changed() { + } + + /***************** CC2520Config Events ****************/ + event void CC2520Config.syncDone( error_t error ) { + } + + + /***************** RadioBackoff ***********************/ + + async event void SubBackoff.requestInitialBackoff(message_t *msg) { + signal RadioBackoff.requestInitialBackoff[(TCAST(cc2520_header_t* ONE, + (uint8_t*)msg + offsetof(message_t, data) - sizeof(cc2520_header_t)))->type](msg); + } + + async event void SubBackoff.requestCongestionBackoff(message_t *msg) { + signal RadioBackoff.requestCongestionBackoff[(TCAST(cc2520_header_t* ONE, + (uint8_t*)msg + offsetof(message_t, data) - sizeof(cc2520_header_t)))->type](msg); + } + async event void SubBackoff.requestCca(message_t *msg) { + // Lower layers than this do not configure the CCA settings + signal RadioBackoff.requestCca[(TCAST(cc2520_header_t* ONE, + (uint8_t*)msg + offsetof(message_t, data) - sizeof(cc2520_header_t)))->type](msg); + } + + async command void RadioBackoff.setInitialBackoff[am_id_t amId](uint16_t backoffTime) { + call SubBackoff.setInitialBackoff(backoffTime); + } + + /** + * Must be called within a requestCongestionBackoff event + * @param backoffTime the amount of time in some unspecified units to backoff + */ + async command void RadioBackoff.setCongestionBackoff[am_id_t amId](uint16_t backoffTime) { + call SubBackoff.setCongestionBackoff(backoffTime); + } + + + /** + * Enable CCA for the outbound packet. Must be called within a requestCca + * event + * @param ccaOn TRUE to enable CCA, which is the default. + */ + async command void RadioBackoff.setCca[am_id_t amId](bool useCca) { + call SubBackoff.setCca(useCca); + } + + + + /***************** Defaults ****************/ + default event message_t* Receive.receive[am_id_t id](message_t* msg, void* payload, uint8_t len) { + return msg; + } + + default event message_t* Snoop.receive[am_id_t id](message_t* msg, void* payload, uint8_t len) { + return msg; + } + + default event void AMSend.sendDone[uint8_t id](message_t* msg, error_t err) { + } + + default event void SendNotifier.aboutToSend[am_id_t amId](am_addr_t addr, message_t *msg) { + } + default async event void RadioBackoff.requestInitialBackoff[am_id_t id]( + message_t *msg) { + } + + default async event void RadioBackoff.requestCongestionBackoff[am_id_t id]( + message_t *msg) { + } + + default async event void RadioBackoff.requestCca[am_id_t id]( + message_t *msg) { + } + +} diff --git a/cc2520/CC2520ActiveMessageP_unedit.nc b/cc2520/CC2520ActiveMessageP_unedit.nc new file mode 100644 index 0000000000..bde24d2c03 --- /dev/null +++ b/cc2520/CC2520ActiveMessageP_unedit.nc @@ -0,0 +1,261 @@ +/* + * "Copyright (c) 2005 Stanford University. All rights reserved. + * + * Permission to use, copy, modify, and distribute this software and + * its documentation for any purpose, without fee, and without written + * agreement is hereby granted, provided that the above copyright + * notice, the following two paragraphs and the author appear in all + * copies of this software. + * + * IN NO EVENT SHALL STANFORD UNIVERSITY BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF STANFORD UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * STANFORD UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE + * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND STANFORD UNIVERSITY + * HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS." + */ + + +/** + * Active message implementation on top of the CC2520 radio. This + * implementation uses the 16-bit addressing mode of 802.15.4: the + * only additional byte it adds is the AM id byte, as the first byte + * of the data payload. + * + * @author Philip Levis + * @version $Revision: 1.18 $ $Date: 2008/06/24 05:32:31 $ + */ + +#include "CC2520.h" + +module CC2520ActiveMessageP @safe() { + provides { + interface AMSend[am_id_t id]; + interface Receive[am_id_t id]; + interface Receive as Snoop[am_id_t id]; + interface AMPacket; + interface Packet; + interface SendNotifier[am_id_t id]; + interface RadioBackoff[am_id_t id]; + } + + uses { + interface Send as SubSend; + interface Receive as SubReceive; + interface CC2520Packet; + interface CC2520PacketBody; + interface CC2520Config; + interface ActiveMessageAddress; + interface RadioBackoff as SubBackoff; + } +} +implementation { + + /***************** AMSend Commands ****************/ + command error_t AMSend.send[am_id_t id](am_addr_t addr, + message_t* msg, + uint8_t len) { + cc2520_header_t* header = call CC2520PacketBody.getHeader( msg ); + header->type = id; + header->dest = addr; + header->destpan = call CC2520Config.getPanAddr(); + header->src = call AMPacket.address(); + signal SendNotifier.aboutToSend[id](addr, msg); + + return call SubSend.send( msg, len ); + } + + command error_t AMSend.cancel[am_id_t id](message_t* msg) { + return call SubSend.cancel(msg); + } + + command uint8_t AMSend.maxPayloadLength[am_id_t id]() { + return call Packet.maxPayloadLength(); + } + + command void* AMSend.getPayload[am_id_t id](message_t* m, uint8_t len) { + return call Packet.getPayload(m, len); + } + + /***************** AMPacket Commands ****************/ + command am_addr_t AMPacket.address() { + return call ActiveMessageAddress.amAddress(); + } + + command am_addr_t AMPacket.destination(message_t* amsg) { + cc2520_header_t* header = call CC2520PacketBody.getHeader(amsg); + return header->dest; + } + + command am_addr_t AMPacket.source(message_t* amsg) { + cc2520_header_t* header = call CC2520PacketBody.getHeader(amsg); + return header->src; + } + + command void AMPacket.setDestination(message_t* amsg, am_addr_t addr) { + cc2520_header_t* header = call CC2520PacketBody.getHeader(amsg); + header->dest = addr; + } + + command void AMPacket.setSource(message_t* amsg, am_addr_t addr) { + cc2520_header_t* header = call CC2520PacketBody.getHeader(amsg); + header->src = addr; + } + + command bool AMPacket.isForMe(message_t* amsg) { + return (call AMPacket.destination(amsg) == call AMPacket.address() || + call AMPacket.destination(amsg) == AM_BROADCAST_ADDR); + } + + command am_id_t AMPacket.type(message_t* amsg) { + cc2520_header_t* header = call CC2520PacketBody.getHeader(amsg); + return header->type; + } + + command void AMPacket.setType(message_t* amsg, am_id_t type) { + cc2520_header_t* header = call CC2520PacketBody.getHeader(amsg); + header->type = type; + } + + command am_group_t AMPacket.group(message_t* amsg) { + return (call CC2520PacketBody.getHeader(amsg))->destpan; + } + + command void AMPacket.setGroup(message_t* amsg, am_group_t grp) { + // Overridden intentionally when we send() + (call CC2520PacketBody.getHeader(amsg))->destpan = grp; + } + + command am_group_t AMPacket.localGroup() { + return call CC2520Config.getPanAddr(); + } + + + /***************** Packet Commands ****************/ + command void Packet.clear(message_t* msg) { + memset(call CC2520PacketBody.getHeader(msg), 0x0, sizeof(cc2520_header_t)); + memset(call CC2520PacketBody.getMetadata(msg), 0x0, sizeof(cc2520_metadata_t)); + } + + command uint8_t Packet.payloadLength(message_t* msg) { + return (call CC2520PacketBody.getHeader(msg))->length - CC2520_SIZE; + } + + command void Packet.setPayloadLength(message_t* msg, uint8_t len) { + (call CC2520PacketBody.getHeader(msg))->length = len + CC2520_SIZE; + } + + command uint8_t Packet.maxPayloadLength() { + return TOSH_DATA_LENGTH; + } + + command void* Packet.getPayload(message_t* msg, uint8_t len) { + return call SubSend.getPayload(msg, len); + } + + + /***************** SubSend Events ****************/ + event void SubSend.sendDone(message_t* msg, error_t result) { + signal AMSend.sendDone[call AMPacket.type(msg)](msg, result); + } + + + /***************** SubReceive Events ****************/ + event message_t* SubReceive.receive(message_t* msg, void* payload, uint8_t len) { + + if(!(call CC2520PacketBody.getMetadata(msg))->crc) { + return msg; + } + + if (call AMPacket.isForMe(msg)) { + return signal Receive.receive[call AMPacket.type(msg)](msg, payload, len); + } + else { + return signal Snoop.receive[call AMPacket.type(msg)](msg, payload, len); + } + } + + + /***************** ActiveMessageAddress Events ****************/ + async event void ActiveMessageAddress.changed() { + } + + /***************** CC2520Config Events ****************/ + event void CC2520Config.syncDone( error_t error ) { + } + + + /***************** RadioBackoff ***********************/ + + async event void SubBackoff.requestInitialBackoff(message_t *msg) { + signal RadioBackoff.requestInitialBackoff[(TCAST(cc2520_header_t* ONE, + (uint8_t*)msg + offsetof(message_t, data) - sizeof(cc2520_header_t)))->type](msg); + } + + async event void SubBackoff.requestCongestionBackoff(message_t *msg) { + signal RadioBackoff.requestCongestionBackoff[(TCAST(cc2520_header_t* ONE, + (uint8_t*)msg + offsetof(message_t, data) - sizeof(cc2520_header_t)))->type](msg); + } + async event void SubBackoff.requestCca(message_t *msg) { + // Lower layers than this do not configure the CCA settings + signal RadioBackoff.requestCca[(TCAST(cc2520_header_t* ONE, + (uint8_t*)msg + offsetof(message_t, data) - sizeof(cc2520_header_t)))->type](msg); + } + + async command void RadioBackoff.setInitialBackoff[am_id_t amId](uint16_t backoffTime) { + call SubBackoff.setInitialBackoff(backoffTime); + } + + /** + * Must be called within a requestCongestionBackoff event + * @param backoffTime the amount of time in some unspecified units to backoff + */ + async command void RadioBackoff.setCongestionBackoff[am_id_t amId](uint16_t backoffTime) { + call SubBackoff.setCongestionBackoff(backoffTime); + } + + + /** + * Enable CCA for the outbound packet. Must be called within a requestCca + * event + * @param ccaOn TRUE to enable CCA, which is the default. + */ + async command void RadioBackoff.setCca[am_id_t amId](bool useCca) { + call SubBackoff.setCca(useCca); + } + + + + /***************** Defaults ****************/ + default event message_t* Receive.receive[am_id_t id](message_t* msg, void* payload, uint8_t len) { + return msg; + } + + default event message_t* Snoop.receive[am_id_t id](message_t* msg, void* payload, uint8_t len) { + return msg; + } + + default event void AMSend.sendDone[uint8_t id](message_t* msg, error_t err) { + } + + default event void SendNotifier.aboutToSend[am_id_t amId](am_addr_t addr, message_t *msg) { + } + default async event void RadioBackoff.requestInitialBackoff[am_id_t id]( + message_t *msg) { + } + + default async event void RadioBackoff.requestCongestionBackoff[am_id_t id]( + message_t *msg) { + } + + default async event void RadioBackoff.requestCca[am_id_t id]( + message_t *msg) { + } + +} diff --git a/cc2520/CC2520RadioC.nc b/cc2520/CC2520RadioC.nc new file mode 100644 index 0000000000..cc65040994 --- /dev/null +++ b/cc2520/CC2520RadioC.nc @@ -0,0 +1,79 @@ +#include "CC2520.h" + +configuration CC2520RadioC +{ + + provides { + interface SplitControl; + interface Resource[uint8_t clientId]; + + interface Send as BareSend; + interface Receive as BareReceive; + interface Packet as BarePacket; + + interface Send as ActiveSend; + interface Receive as ActiveReceive; + + interface CC2520Packet; + interface PacketAcknowledgements; + interface LinkPacketMetadata; + interface LowPowerListening; + interface PacketLink; + } + +} + + +implementation +{ + + components CC2520CsmaC as CsmaC; + components UniqueSendC; + components UniqueReceiveC; + components CC2520TinyosNetworkC; + components CC2520PacketC; + components CC2520ControlC; + +#if defined(LOW_POWER_LISTENING) || defined(ACK_LOW_POWER_LISTENING) + components DefaultLplC as LplC; +#else + components DummyLplC as LplC; +#endif + +#if defined(PACKET_LINK) + components PacketLinkC as LinkC; +#else + components PacketLinkDummyC as LinkC; +#endif + //splitcontrol layers + SplitControl=LplC; + LplC.SubControl -> CsmaC; + + + + PacketLink = LinkC; + LowPowerListening = LplC; + CC2520Packet = CC2520PacketC; + PacketAcknowledgements = CC2520PacketC; + LinkPacketMetadata = CC2520PacketC; + + + Resource = CC2520TinyosNetworkC; + BarePacket = CC2520TinyosNetworkC.BarePacket; + BareSend = CC2520TinyosNetworkC.Send; + BareReceive = CC2520TinyosNetworkC.Receive; + + ActiveSend = CC2520TinyosNetworkC.ActiveSend; + ActiveReceive = CC2520TinyosNetworkC.ActiveReceive; + + // Send Layers + CC2520TinyosNetworkC.SubSend -> UniqueSendC; + UniqueSendC.SubSend -> LinkC; + LinkC.SubSend -> LplC.Send; + LplC.SubSend -> CsmaC; + + // Receive Layers + CC2520TinyosNetworkC.SubReceive -> LplC; + LplC.SubReceive -> UniqueReceiveC.Receive; + UniqueReceiveC.SubReceive -> CsmaC; +} diff --git a/cc2520/CC2520TimeSyncMessage.h b/cc2520/CC2520TimeSyncMessage.h new file mode 100644 index 0000000000..a744fd385b --- /dev/null +++ b/cc2520/CC2520TimeSyncMessage.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2007, Vanderbilt University + * All rights reserved. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose, without fee, and without written agreement is + * hereby granted, provided that the above copyright notice, the following + * two paragraphs and the author appear in all copies of this software. + * + * IN NO EVENT SHALL THE VANDERBILT UNIVERSITY BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE VANDERBILT + * UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * THE VANDERBILT UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE VANDERBILT UNIVERSITY HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Author: Miklos Maroti + */ + +#ifndef __TIMESYNCMESSAGE_H__ +#define __TIMESYNCMESSAGE_H__ + +// this value is sent in the air +typedef nx_uint32_t timesync_radio_t; + +#endif//__TIMESYNCMESSAGE_H__ diff --git a/cc2520/CC2520TimeSyncMessageC.nc b/cc2520/CC2520TimeSyncMessageC.nc new file mode 100644 index 0000000000..4ced284522 --- /dev/null +++ b/cc2520/CC2520TimeSyncMessageC.nc @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2007, Vanderbilt University + * All rights reserved. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose, without fee, and without written agreement is + * hereby granted, provided that the above copyright notice, the following + * two paragraphs and the author appear in all copies of this software. + * + * IN NO EVENT SHALL THE VANDERBILT UNIVERSITY BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE VANDERBILT + * UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * THE VANDERBILT UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE VANDERBILT UNIVERSITY HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ + +/** + * The Active Message layer for the CC2420 radio with timesync support. This + * configuration is just layer above CC2420ActiveMessageC that supports + * TimeSyncPacket and TimeSyncAMSend interfaces (TEP 133) + * + * @author: Miklos Maroti + * @author: Brano Kusy (CC2420 port) + */ + +#include +#include + +configuration CC2520TimeSyncMessageC +{ + provides + { + interface SplitControl; + interface Receive[am_id_t id]; + interface Receive as Snoop[am_id_t id]; + interface Packet; + interface AMPacket; + + interface TimeSyncAMSend as TimeSyncAMSend32khz[am_id_t id]; + interface TimeSyncPacket as TimeSyncPacket32khz; + + interface TimeSyncAMSend as TimeSyncAMSendMilli[am_id_t id]; + interface TimeSyncPacket as TimeSyncPacketMilli; + } +} + +implementation +{ + components CC2520TimeSyncMessageP, CC2520ActiveMessageC, CC2520PacketC, LedsC; + + TimeSyncAMSend32khz = CC2520TimeSyncMessageP; + TimeSyncPacket32khz = CC2520TimeSyncMessageP; + + TimeSyncAMSendMilli = CC2520TimeSyncMessageP; + TimeSyncPacketMilli = CC2520TimeSyncMessageP; + + Packet = CC2520TimeSyncMessageP; + CC2520TimeSyncMessageP.SubSend -> CC2520ActiveMessageC.AMSend; + CC2520TimeSyncMessageP.SubPacket -> CC2520ActiveMessageC.Packet; + + CC2520TimeSyncMessageP.PacketTimeStamp32khz -> CC2520PacketC; + CC2520TimeSyncMessageP.PacketTimeStampMilli -> CC2520PacketC; + CC2520TimeSyncMessageP.PacketTimeSyncOffset -> CC2520PacketC; + components Counter32khz32C, new CounterToLocalTimeC(T32khz) as LocalTime32khzC, LocalTimeMilliC; + LocalTime32khzC.Counter -> Counter32khz32C; + CC2520TimeSyncMessageP.LocalTime32khz -> LocalTime32khzC; + CC2520TimeSyncMessageP.LocalTimeMilli -> LocalTimeMilliC; + CC2520TimeSyncMessageP.Leds -> LedsC; + + SplitControl = CC2520ActiveMessageC; + Receive = CC2520ActiveMessageC.Receive; + Snoop = CC2520ActiveMessageC.Snoop; + AMPacket = CC2520ActiveMessageC; +} diff --git a/cc2520/CC2520TimeSyncMessageP.nc b/cc2520/CC2520TimeSyncMessageP.nc new file mode 100644 index 0000000000..c7e9549e4d --- /dev/null +++ b/cc2520/CC2520TimeSyncMessageP.nc @@ -0,0 +1,177 @@ +/* + * Copyright (c) 2007, Vanderbilt University + * All rights reserved. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose, without fee, and without written agreement is + * hereby granted, provided that the above copyright notice, the following + * two paragraphs and the author appear in all copies of this software. + * + * IN NO EVENT SHALL THE VANDERBILT UNIVERSITY BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE VANDERBILT + * UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * THE VANDERBILT UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE VANDERBILT UNIVERSITY HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * @author: Miklos Maroti + * @author: Brano Kusy (CC2420 port) + */ +#include "CC2520TimeSyncMessage.h" + +module CC2520TimeSyncMessageP +{ + provides + { + interface TimeSyncAMSend as TimeSyncAMSend32khz[uint8_t id]; + interface TimeSyncAMSend as TimeSyncAMSendMilli[uint8_t id]; + interface Packet; + + interface TimeSyncPacket as TimeSyncPacket32khz; + interface TimeSyncPacket as TimeSyncPacketMilli; + } + + uses + { + interface AMSend as SubSend[uint8_t id]; + interface Packet as SubPacket; + + interface PacketTimeStamp as PacketTimeStamp32khz; + interface PacketTimeStamp as PacketTimeStampMilli; + interface PacketTimeSyncOffset; + + interface LocalTime as LocalTime32khz; + interface LocalTime as LocalTimeMilli; + interface Leds; + } +} + +implementation +{ + // TODO: change the Packet.payloadLength and Packet.maxPayloadLength commands to async + inline void* getFooter(message_t* msg) + { + // we use the payload length that we export (the smaller one) + return msg->data + call Packet.payloadLength(msg); + } + +/*----------------- Packet -----------------*/ + command void Packet.clear(message_t* msg) + { + call PacketTimeSyncOffset.cancel(msg); + call SubPacket.clear(msg); + } + + command void Packet.setPayloadLength(message_t* msg, uint8_t len) + { + call SubPacket.setPayloadLength(msg, len + sizeof(timesync_radio_t)); + } + + command uint8_t Packet.payloadLength(message_t* msg) + { + return call SubPacket.payloadLength(msg) - sizeof(timesync_radio_t); + } + + command uint8_t Packet.maxPayloadLength() + { + return call SubPacket.maxPayloadLength() - sizeof(timesync_radio_t); + } + + command void* Packet.getPayload(message_t* msg, uint8_t len) + { + return call SubPacket.getPayload(msg, len + sizeof(timesync_radio_t)); + } + +/*----------------- TimeSyncAMSend32khz -----------------*/ + command error_t TimeSyncAMSend32khz.send[am_id_t id](am_addr_t addr, message_t* msg, uint8_t len, uint32_t event_time) + { + error_t err; + void * timesync = msg->data + len; + *(timesync_radio_t*)timesync = event_time; + + err = call SubSend.send[id](addr, msg, len + sizeof(timesync_radio_t)); + call PacketTimeSyncOffset.set(msg); + return err; + } + + command error_t TimeSyncAMSend32khz.cancel[am_id_t id](message_t* msg) + { + call PacketTimeSyncOffset.cancel(msg); + return call SubSend.cancel[id](msg); + } + + default event void TimeSyncAMSend32khz.sendDone[am_id_t id](message_t* msg, error_t error) {} + + command uint8_t TimeSyncAMSend32khz.maxPayloadLength[am_id_t id]() + { + return call SubSend.maxPayloadLength[id]() - sizeof(timesync_radio_t); + } + + command void* TimeSyncAMSend32khz.getPayload[am_id_t id](message_t* msg, uint8_t len) + { + return call SubSend.getPayload[id](msg, len + sizeof(timesync_radio_t)); + } + +/*----------------- TimeSyncAMSendMilli -----------------*/ + command error_t TimeSyncAMSendMilli.send[am_id_t id](am_addr_t addr, message_t* msg, uint8_t len, uint32_t event_time) + { + // compute elapsed time in millisecond + event_time = ((event_time - call LocalTimeMilli.get()) << 5) + call LocalTime32khz.get(); + return call TimeSyncAMSend32khz.send[id](addr, msg, len, event_time); + } + + command error_t TimeSyncAMSendMilli.cancel[am_id_t id](message_t* msg) + { + return call TimeSyncAMSend32khz.cancel[id](msg); + } + + default event void TimeSyncAMSendMilli.sendDone[am_id_t id](message_t* msg, error_t error){} + + command uint8_t TimeSyncAMSendMilli.maxPayloadLength[am_id_t id]() + { + return call TimeSyncAMSend32khz.maxPayloadLength[id](); + } + + command void* TimeSyncAMSendMilli.getPayload[am_id_t id](message_t* msg, uint8_t len) + { + return call TimeSyncAMSend32khz.getPayload[id](msg, len); + } + +/*----------------- SubSend.sendDone -------------------*/ + event void SubSend.sendDone[am_id_t id](message_t* msg, error_t error) + { + signal TimeSyncAMSend32khz.sendDone[id](msg, error); + signal TimeSyncAMSendMilli.sendDone[id](msg, error); + } + +/*----------------- TimeSyncPacket32khz -----------------*/ + command bool TimeSyncPacket32khz.isValid(message_t* msg) + { + timesync_radio_t* timesync = getFooter(msg); + return call PacketTimeStamp32khz.isValid(msg) && *timesync != CC2520_INVALID_TIMESTAMP; + } + + command uint32_t TimeSyncPacket32khz.eventTime(message_t* msg) + { + timesync_radio_t* timesync = getFooter(msg); + + return (uint32_t)(*timesync) + call PacketTimeStamp32khz.timestamp(msg); + } + +/*----------------- TimeSyncPacketMilli -----------------*/ + command bool TimeSyncPacketMilli.isValid(message_t* msg) + { + timesync_radio_t* timesync = getFooter(msg); + return call PacketTimeStampMilli.isValid(msg) && *timesync != CC2520_INVALID_TIMESTAMP; + } + + command uint32_t TimeSyncPacketMilli.eventTime(message_t* msg) + { + timesync_radio_t* timesync = getFooter(msg); + return ((int32_t)(*timesync) >> 5) + call PacketTimeStampMilli.timestamp(msg); + } +} diff --git a/cc2520/IEEE802154.h b/cc2520/IEEE802154.h new file mode 100644 index 0000000000..824fe9d2b3 --- /dev/null +++ b/cc2520/IEEE802154.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + * + * @author Jonathan Hui + * @version $Revision: 1.7 $ $Date: 2007/07/04 00:37:14 $ + */ + +#ifndef __IEEE802154_H__ +#define __IEEE802154_H__ + +#include + +#endif diff --git a/cc2520/README.txt b/cc2520/README.txt new file mode 100644 index 0000000000..e9409be12f --- /dev/null +++ b/cc2520/README.txt @@ -0,0 +1,119 @@ + +To compile in the default Ack LPL version, #define the preprocessor variable: + LOW_POWER_LISTENING + +To compile in the PacketLink (auto-retransmission) layer, #define: + PACKET_LINK + +To remove all acknowledgements, #define (or use CC2420Config in 2.0.2) + CC2420_NO_ACKNOWLEDGEMENTS + +To use hardware auto-acks instead of software acks, #define: + CC2420_HW_ACKNOWLEDGEMENTS + +To stop using address recognition on the radio hardware, #define: + CC2420_NO_ADDRESS_RECOGNITION + + + +============================================================ +CC2420 2.0.2 Release Notes 7/2/07 + +Updates (Moss) +__________________________________________ +* New chip SPI bus arbitration working with Receive and Transmit. + +* Applied TUnit automated unit testing to CC2420 development + > Caught lots of bugs, especially through regression testing + > Source code in tinyos-2.x-contribs/tunit/ + +* Applied TEP115 behavior to CC2420 SplitControl in Csma and Lpl + +* Updated ActiveMessageAddressC to provide the ActiveMessageAddress interface + > Updated CC2420ConfigP to handle ActiveMessageAddress.addressChanged() and + sync automatically upon address change events. + +* Updated CC2420Config interface to enable/disable sw/hw acknowledgements + +* Updated CC2420ConfigP to share register editing through single functions + +* Acknowledge after packet length and FCF check out valid. + > The destination address is confirmed in hardware, so we don't need + to download the entire header before acking. + +* Moved the getHeader() and getMetadata() commands to an internal interface + called CC2420PacketBody, provided by CC2420PacketC + +* Separated core functionality into different sub-packages/directories + > Updated micaz, telosb, intelmote2 .platform files + > Logically organizes code + +* Updated some LPL architecture + > Removed continuous modulation because it didn't work 100% and I don't have + time to make it work. + > Decreased backoffs and decreased on-time for detects, saving energy. + +* Updated to the new AMPacket interface; made the radio set the outbound + packet's destpan after send(). + + +7/5/07: +* Added two methods to enable/disable automatic address recognition: + - Preprocessor CC2420_NO_ADDRESS_RECOGNITION to disable address recognition at + compile time + - CC2420Config.setAddressRecognition(bool on) through CC2420ControlC + +* Allowed the CC2420ReceiveP to perform software address checks to support + the case where a base station type application must sniff packets from other + address, but also SACK packets destined for its address + +* Updated CC2420Config interface to provide an async getShortAddr() and getPanAddr() + + +Known issues +__________________________________________ + + + + +============================================================ +CC2420 Release Notes 4/11/07 + +This CC2420 stack contains two low power listening strategies, +a packet retransmission layer, unique send and receive layers, +ability to specify backoff and use of clear channel assessments +on outbound messages, direct RSSI readings, ability to change +channels on the fly, an experimental 6LowPAN layer (not +implemented by default), general bug fixes, and more. + + +Known Issues +__________________________________________ + > LPL Lockups when the node is also accessing the USART. + This is a SPI bus issue, where shutting off the SPI + bus in the middle of an operation may cause the node + to hang. Look to future versions on CVS for the fix. + + > NoAck LPL doesn't ack at the end properly, and also isn't + finished being implemented. The CRC of the packet needs to + manually be loaded into TXFIFO before continuous modulation. + + > LPL stack is optimized for reliability at this point, since + SFD sampling is not implemented in this version. + + +Low Power Listening Schemes and Preprocessor Variables +__________________________________________ +There are two low power listening schemes. +The default is called "AckLpl", because it inserts acknowledgement gaps andshort backoffs during the packet retransmission process. +This allows the transmitter to stop transmitting early, but increases the +power consumption per receive check. This is better for slow receive +check, high transmission rate networks. + +The second is called "NoAckLpl", because it does not insert acknowledgement +gaps or backoffs in the retransmission process, so the receive checks are +shorter but the transmissions are longer. This is more experimental than +the Ack LPL version. The radio continuously modulates the channel when +delivering its packetized preamble. This is better for fast receive check, +low transmission rate networks. + diff --git a/cc2520/alarm/AlarmMultiplexC.nc b/cc2520/alarm/AlarmMultiplexC.nc new file mode 100644 index 0000000000..7930abeb34 --- /dev/null +++ b/cc2520/alarm/AlarmMultiplexC.nc @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * A component that multiplexes the use of an alarm. The assumption is + * that its use is mutually exclusive and users check whether the + * events are for them. + * + * @author Jonathan Hui + * @version $Revision: 1.1 $ $Date: 2007/07/04 00:37:14 $ + */ + +#include + +configuration AlarmMultiplexC { + + provides interface Init; + provides interface Alarm as Alarm32khz32; + +} + +implementation { + + components new HplCC2520AlarmC() as Alarm; + + Init = Alarm; + Alarm32khz32 = Alarm; + +} diff --git a/cc2520/control/CC2520ControlC.nc b/cc2520/control/CC2520ControlC.nc new file mode 100644 index 0000000000..4baba7c8a7 --- /dev/null +++ b/cc2520/control/CC2520ControlC.nc @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * Implementation for configuring a ChipCon CC2420 radio. + * + * @author Jonathan Hui + * @version $Revision: 1.3 $ $Date: 2008/05/14 21:33:07 $ + */ + +#include "CC2520.h" +#include "IEEE802154.h" + +configuration CC2520ControlC { + + provides interface Resource; + provides interface CC2520Config; + provides interface CC2520Power; + provides interface Read as ReadRssi; + +} + +implementation { + + components CC2520ControlP; + Resource = CC2520ControlP; + CC2520Config = CC2520ControlP; + CC2520Power = CC2520ControlP; + ReadRssi = CC2520ControlP; + + components MainC; + MainC.SoftwareInit -> CC2520ControlP; + + components AlarmMultiplexC as Alarm; + CC2520ControlP.StartupTimer -> Alarm; + + components HplCC2520PinsC as Pins; + CC2520ControlP.CSN -> Pins.CSN; + CC2520ControlP.RSTN -> Pins.RSTN; + CC2520ControlP.VREN -> Pins.VREN; + + components HplCC2520InterruptsC as Interrupts; + CC2520ControlP.InterruptCCA -> Interrupts.InterruptCCA; + + components new CC2520SpiC() as Spi; + CC2520ControlP.SpiResource -> Spi; + CC2520ControlP.SRXON -> Spi.SRXON; + CC2520ControlP.SRFOFF -> Spi.SRFOFF; + CC2520ControlP.SXOSCON -> Spi.SXOSCON; + CC2520ControlP.SXOSCOFF -> Spi.SXOSCOFF; + + CC2520ControlP.SNOP -> Spi.SNOP; + + CC2520ControlP.FSCTRL -> Spi.FSCTRL; + + + //CC2420ControlP.IOCFG0 -> Spi.IOCFG0; + //CC2420ControlP.IOCFG1 -> Spi.IOCFG1; + + // Newly Added on 15-11-10 Lijo ******************/ + + CC2520ControlP.TXPOWER -> Spi.TXPOWER; + //CC2520ControlP.TXCTRL -> Spi.TXCTRL; + + CC2520ControlP.FREQCTRL -> Spi.FREQCTRL; + + CC2520ControlP.CCACTRL0 -> Spi.CCACTRL0; + + CC2520ControlP.AGCCTRL1 -> Spi.AGCCTRL1; + + + CC2520ControlP.RXCTRL -> Spi.RXCTRL; + CC2520ControlP.FSCAL1 -> Spi.FSCAL1; + + + CC2520ControlP.ADCTEST0 -> Spi.ADCTEST0; + CC2520ControlP.ADCTEST1 -> Spi.ADCTEST1; + CC2520ControlP.ADCTEST2 -> Spi.ADCTEST2; + + CC2520ControlP.FRMCTRL0 -> Spi.FRMCTRL0; + CC2520ControlP.EXTCLOCK -> Spi.EXTCLOCK; + + CC2520ControlP.GPIOCTRL0 -> Spi.GPIOCTRL0; + CC2520ControlP.GPIOCTRL1 -> Spi.GPIOCTRL1; + CC2520ControlP.GPIOCTRL2 -> Spi.GPIOCTRL2; + CC2520ControlP.GPIOCTRL3 -> Spi.GPIOCTRL3; + CC2520ControlP.GPIOCTRL4 -> Spi.GPIOCTRL4; + CC2520ControlP.GPIOCTRL5 -> Spi.GPIOCTRL5; + + CC2520ControlP.GPIOPOLARITY -> Spi.GPIOPOLARITY; + + CC2520ControlP.FRMCTRL1 -> Spi.FRMCTRL1; + + CC2520ControlP.FRMFILT0 -> Spi.FRMFILT0; + CC2520ControlP.FRMFILT1 -> Spi.FRMFILT1; + CC2520ControlP.FIFOPCTRL -> Spi.FIFOPCTRL; + //*************************************************/ + + + + CC2520ControlP.MDMCTRL0 -> Spi.MDMCTRL0; + CC2520ControlP.MDMCTRL1 -> Spi.MDMCTRL1; + + CC2520ControlP.PANID -> Spi.PANID; + //CC2520ControlP.RXCTRL1 -> Spi.RXCTRL1; + CC2520ControlP.RSSI -> Spi.RSSI; + + components new CC2520SpiC() as SyncSpiC; + CC2520ControlP.SyncResource -> SyncSpiC; + + components new CC2520SpiC() as RssiResource; + CC2520ControlP.RssiResource -> RssiResource; + + components ActiveMessageAddressC; + CC2520ControlP.ActiveMessageAddress -> ActiveMessageAddressC; + + components LedsC as Leds; + CC2520ControlP.Leds -> Leds; + components LocalIeeeEui64C; + CC2520ControlP.LocalIeeeEui64 -> LocalIeeeEui64C; + +} + diff --git a/cc2520/control/CC2520ControlP.nc b/cc2520/control/CC2520ControlP.nc new file mode 100644 index 0000000000..e49a69e8e9 --- /dev/null +++ b/cc2520/control/CC2520ControlP.nc @@ -0,0 +1,832 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * @author Jonathan Hui + * @author David Moss + * @author Urs Hunkeler (ReadRssi implementation) + * @version $Revision: 1.7 $ $Date: 2008/06/24 04:07:28 $ + */ + +#include "Timer.h" +#include "CC2520.h" + +// IEEE 802.15.4 defined constants (2.4 GHz logical channels) +#define MIN_CHANNEL 11 // 2405 MHz +#define MAX_CHANNEL 26 // 2480 MHz +#define CHANNEL_SPACING 5 // MHz + +module CC2520ControlP @safe() { + + provides interface Init; + provides interface Resource; + provides interface CC2520Config; + provides interface CC2520Power; + provides interface Read as ReadRssi; + + uses interface Alarm as StartupTimer; + uses interface GeneralIO as CSN; + uses interface GeneralIO as RSTN; + uses interface GeneralIO as VREN; + uses interface GpioInterrupt as InterruptCCA; + uses interface ActiveMessageAddress; + + uses interface CC2520Ram as PANID; + + uses interface CC2520Register as FSCTRL; + //uses interface CC2420Register as IOCFG0; + //uses interface CC2420Register as IOCFG1; + + uses interface CC2520Register as MDMCTRL0; + uses interface CC2520Register as MDMCTRL1; + uses interface CC2520Register as RXCTRL; + uses interface CC2520Register as RSSI; + + // Newly Added on 15-11-10 Lijo ******************/ + + uses interface CC2520Register as AGCCTRL1; + uses interface CC2520Register as TXPOWER; + uses interface CC2520Register as CCACTRL0; + uses interface CC2520Register as FSCAL1; + uses interface CC2520Register as FRMCTRL1; + + uses interface CC2520Register as FREQCTRL; + + uses interface CC2520Register as ADCTEST0; + uses interface CC2520Register as ADCTEST1; + uses interface CC2520Register as ADCTEST2; + + uses interface CC2520Register as FRMCTRL0; + uses interface CC2520Register as EXTCLOCK; + + uses interface CC2520Register as GPIOCTRL0; + uses interface CC2520Register as GPIOCTRL1; + uses interface CC2520Register as GPIOCTRL2; + uses interface CC2520Register as GPIOCTRL3; + uses interface CC2520Register as GPIOCTRL4; + uses interface CC2520Register as GPIOCTRL5; + uses interface CC2520Register as GPIOPOLARITY; + + uses interface CC2520Register as FRMFILT0; + uses interface CC2520Register as FRMFILT1; + uses interface CC2520Register as FIFOPCTRL; + + + //*************************************************/ + uses interface CC2520Strobe as SRXON; + uses interface CC2520Strobe as SRFOFF; + uses interface CC2520Strobe as SXOSCOFF; + uses interface CC2520Strobe as SXOSCON; + uses interface CC2520Strobe as SNOP; + + uses interface Resource as SpiResource; + uses interface Resource as RssiResource; + uses interface Resource as SyncResource; + + uses interface Leds; + uses interface LocalIeeeEui64; +} + +implementation { + + typedef enum { + S_VREG_STOPPED, + S_VREG_STARTING, + S_VREG_STARTED, + S_XOSC_STARTING, + S_XOSC_STARTED, + } cc2520_control_state_t; + + uint8_t m_channel; + + uint8_t m_tx_power; + + uint16_t m_pan; + + // temporary LIjo.. + uint16_t *data1; + + uint16_t m_short_addr; + + ieee_eui64_t m_ext_addr; + + bool m_sync_busy; + + /** TRUE if acknowledgments are enabled */ + bool autoAckEnabled; + + /** TRUE if acknowledgments are generated in hardware only */ + bool hwAutoAckDefault; + + /** TRUE if software or hardware address recognition is enabled */ + bool addressRecognition; + + /** TRUE if address recognition should also be performed in hardware */ + bool hwAddressRecognition; + + norace cc2520_control_state_t m_state = S_VREG_STOPPED; + + /***************** Prototypes ****************/ + + void writeFreqctrl(); + void Write_Default_Registers_Value(); + void writeId(); + + task void sync(); + task void syncDone(); + + /***************** Init Commands ****************/ + command error_t Init.init() { + int i, t; + call CSN.makeOutput(); + call RSTN.makeOutput(); + call VREN.makeOutput(); + + m_short_addr = call ActiveMessageAddress.amAddress(); + m_pan = call ActiveMessageAddress.amGroup(); + m_tx_power = CC2520_DEF_RFPOWER; + m_channel = CC2520_DEF_CHANNEL; + m_ext_addr = call LocalIeeeEui64.getId(); + for (i = 0; i < 4; i++) { + t = m_ext_addr.data[i]; + m_ext_addr.data[i] = m_ext_addr.data[7-i]; + m_ext_addr.data[7-i] = t; + } + + +#if defined(CC2520_NO_ADDRESS_RECOGNITION) + addressRecognition = FALSE; +#else + addressRecognition = TRUE; +#endif + +#if defined(CC2520_HW_ADDRESS_RECOGNITION) + hwAddressRecognition = TRUE; +#else + hwAddressRecognition = FALSE; +#endif + + +#if defined(CC2520_NO_ACKNOWLEDGEMENTS) + autoAckEnabled = FALSE; +#else + autoAckEnabled = TRUE; +#endif + +#if defined(CC2520_HW_ACKNOWLEDGEMENTS) + hwAutoAckDefault = TRUE; + hwAddressRecognition = TRUE; +#else + hwAutoAckDefault = FALSE; +#endif + + + return SUCCESS; + } + + /***************** Resource Commands ****************/ + async command error_t Resource.immediateRequest() { + error_t error = call SpiResource.immediateRequest(); + if ( error == SUCCESS ) { + call CSN.clr(); + + } + + return error; + } + + async command error_t Resource.request() { + return call SpiResource.request(); + } + + async command uint8_t Resource.isOwner() { + return call SpiResource.isOwner(); + } + + async command error_t Resource.release() { + atomic { + call CSN.set(); + + return call SpiResource.release(); + } + } + + /***************** CC2420Power Commands ****************/ + async command error_t CC2520Power.startVReg() { + uint8_t i; + atomic { + if ( m_state != S_VREG_STOPPED ) { + return FAIL; + } + m_state = S_VREG_STARTING; + } + + /* + // CSN is active low + call CSN.set(); + + // start up voltage regulator + call VREN.clr(); + call VREN.set(); + // do a reset + call RSTN.clr(); + // hold line low for Tdres + call BusyWait.wait( 200 ); // typical .1ms VR startup time + + call RSTN.set(); + // wait another .2ms for xosc to stabilize + call BusyWait.wait( 200 ); + + + */ + // Newly Added on 15-11-10 Lijo ************************/ + + if(m_state == S_VREG_STARTING) + { + //printf("Vreg starting .."); + //printfflush(); + } + call RSTN.clr(); + call CSN.clr(); + call VREN.clr(); + for(i=0;i<0xFF;i++); + //call CSN.set(); + call VREN.set(); + + call RSTN.clr(); + + + //******************************************************** + for(i=0;i<0xFF;i++); + for(i=0;i<0xFF;i++); + call StartupTimer.start( CC2520_TIME_VREN ); + call RSTN.set(); + + for(i=0;i<0xFF;i++); + for(i=0;i<0xFF;i++); + call CSN.set(); + return SUCCESS; + } + + async command error_t CC2520Power.stopVReg() { + m_state = S_VREG_STOPPED; + + + call RSTN.clr(); + call VREN.clr(); + call RSTN.set(); + return SUCCESS; + } + + async command error_t CC2520Power.startOscillator() { + uint8_t i; + atomic { + if ( m_state != S_VREG_STARTED ) { + return FAIL; + } + + m_state = S_XOSC_STARTING; + + // printf("\n start the oscillator"); + // printfflush(); + + // Waiting for the Crystal Oscillator to Stabilize. + + for(i=0;i<0xFF;i++); + for(i=0;i<0xFF;i++); + + + + call InterruptCCA.enableRisingEdge(); + + call CSN.clr(); + call SXOSCON.strobe(); + call CSN.set(); + + call CSN.clr(); + call SNOP.strobe(); + call CSN.set(); + + + + + Write_Default_Registers_Value(); + + writeFreqctrl(); + + + + call CSN.clr(); + call SNOP.strobe(); + call CSN.set(); + + + call CSN.clr(); + call SRXON.strobe(); + call CSN.set(); + + + + + call CSN.clr(); + call SNOP.strobe(); + call CSN.set(); + + + + } + + + return SUCCESS; + } + + + async command error_t CC2520Power.stopOscillator() { + atomic { + if ( m_state != S_XOSC_STARTED ) { + return FAIL; + } + m_state = S_VREG_STARTED; + call CSN.clr(); + call SXOSCOFF.strobe(); + call CSN.set(); + + } + return SUCCESS; + } + + async command error_t CC2520Power.rxOn() { + atomic { + if ( m_state != S_XOSC_STARTED ) { + return FAIL; + } + call CSN.clr(); + call SRXON.strobe(); + call CSN.set(); + + } + return SUCCESS; + } + + async command error_t CC2520Power.rfOff() { + atomic { + if ( m_state != S_XOSC_STARTED ) { + return FAIL; + } + call CSN.clr(); + call SRFOFF.strobe(); + call CSN.set(); + + } + return SUCCESS; + } + + + /***************** CC2420Config Commands ****************/ + command uint8_t CC2520Config.getChannel() { + atomic return m_channel; + } + + command void CC2520Config.setChannel( uint8_t channel ) { + + atomic m_channel = channel; + } + + async command uint16_t CC2520Config.getShortAddr() { + atomic return m_short_addr; + } + + command void CC2520Config.setShortAddr( uint16_t addr ) { + atomic m_short_addr = addr; + } + + command ieee_eui64_t CC2520Config.getExtAddr() { + return m_ext_addr; + } + + + async command uint16_t CC2520Config.getPanAddr() { + atomic return m_pan; + } + + command void CC2520Config.setPanAddr( uint16_t pan ) { + atomic m_pan = pan; + } + + /** + * Sync must be called to commit software parameters configured on + * the microcontroller (through the CC2420Config interface) to the + * CC2420 radio chip. + */ + command error_t CC2520Config.sync() { + atomic { + if ( m_sync_busy ) { + return FAIL; + } + + m_sync_busy = TRUE; + if ( m_state == S_XOSC_STARTED ) { + call SyncResource.request(); + } else { + post syncDone(); + } + } + + return SUCCESS; + } + + /** + * @param enableAddressRecognition TRUE to turn address recognition on + * @param useHwAddressRecognition TRUE to perform address recognition first + * in hardware. This doesn't affect software address recognition. The + * driver must sync with the chip after changing this value. + */ + command void CC2520Config.setAddressRecognition(bool enableAddressRecognition, bool useHwAddressRecognition) { + atomic { + addressRecognition = enableAddressRecognition; + hwAddressRecognition = useHwAddressRecognition; + } + } + + /** + * @return TRUE if address recognition is enabled + */ + async command bool CC2520Config.isAddressRecognitionEnabled() { + atomic return addressRecognition; + } + + /** + * @return TRUE if address recognition is performed first in hardware. + */ + async command bool CC2520Config.isHwAddressRecognitionDefault() { + atomic return hwAddressRecognition; + } + + + /** + * Sync must be called for acknowledgement changes to take effect + * @param enableAutoAck TRUE to enable auto acknowledgements + * @param hwAutoAck TRUE to default to hardware auto acks, FALSE to + * default to software auto acknowledgements + */ + command void CC2520Config.setAutoAck(bool enableAutoAck, bool hwAutoAck) { + atomic autoAckEnabled = enableAutoAck; + atomic hwAutoAckDefault = hwAutoAck; + } + + /** + * @return TRUE if hardware auto acks are the default, FALSE if software + * acks are the default + */ + async command bool CC2520Config.isHwAutoAckDefault() { + atomic return hwAutoAckDefault; + } + + /** + * @return TRUE if auto acks are enabled + */ + async command bool CC2520Config.isAutoAckEnabled() { + atomic return autoAckEnabled; + } + + /***************** ReadRssi Commands ****************/ + command error_t ReadRssi.read() { + return call RssiResource.request(); + } + + /***************** Spi Resources Events ****************/ + event void SyncResource.granted() { + + call CSN.clr(); + call SRFOFF.strobe(); + call CSN.set(); + + + writeFreqctrl(); + Write_Default_Registers_Value(); + writeId(); + + call CSN.clr(); + call SRXON.strobe(); + call CSN.set(); + + call SyncResource.release(); + post syncDone(); + + + + } + + event void SpiResource.granted() { + call CSN.clr(); + + signal Resource.granted(); + } + + event void RssiResource.granted() { + uint16_t data; + call CSN.clr(); + call RSSI.read(&data); + call CSN.set(); + + call RssiResource.release(); + data += 0x7f; + data &= 0x00ff; + signal ReadRssi.readDone(SUCCESS, data); + } + + /***************** StartupTimer Events ****************/ + async event void StartupTimer.fired() { + if ( m_state == S_VREG_STARTING ) { + m_state = S_VREG_STARTED; + //call RSTN.clr(); + //call RSTN.set(); + signal CC2520Power.startVRegDone(); + } + } + + /***************** InterruptCCA Events ****************/ + async event void InterruptCCA.fired() { + m_state = S_XOSC_STARTED; + call InterruptCCA.disable(); + + writeId(); + #ifdef PRINTF + printf("cca interrupt fired");printfflush(); + #endif + signal CC2520Power.startOscillatorDone(); + + } + + /***************** ActiveMessageAddress Events ****************/ + async event void ActiveMessageAddress.changed() { + atomic { + m_short_addr = call ActiveMessageAddress.amAddress(); + m_pan = call ActiveMessageAddress.amGroup(); + } + + post sync(); + } + + /***************** Tasks ****************/ + /** + * Attempt to synchronize our current settings with the CC2420 + */ + task void sync() { + call CC2520Config.sync(); + } + + task void syncDone() { + atomic m_sync_busy = FALSE; + signal CC2520Config.syncDone( SUCCESS ); + } + + + /***************** Functions ****************/ + /** + * Write teh FSCTRL register + */ + void writeFreqctrl() { + uint8_t channel; + + atomic { + channel = m_channel; + } + + call CSN.set(); + call CSN.clr(); + call FREQCTRL.write(MIN_CHANNEL + ((channel - MIN_CHANNEL)*CHANNEL_SPACING)); + call CSN.set(); + } + + /** + * Write the Default_Register_Values register + * Disabling hardware address recognition improves acknowledgment success + * rate and low power communications reliability by causing the local node + * to do work while the real destination node of the packet is acknowledging. + */ +void Write_Default_Registers_Value() { + uint8_t ret_value; + uint16_t data; + call CSN.set(); + call CSN.clr(); + + switch ((CC2520_DEF_RFPOWER)) + { + case 0x1F : + call TXPOWER.write(0xF7); // 5dbm Powerlevel 31 + + break; + case 0x1B : + call TXPOWER.write(0xF2); // 3dbm Powerlevel 27 + break; + case 0x17 : + call TXPOWER.write(0xAB); // 2dbm Powerlevel 23 + + break; + case 0x13 : + call TXPOWER.write(0x13); // 1 dbm Powerlevel 19 + + break; + case 0x0F : + call TXPOWER.write(0x32); // 0 dbm Powerlevel 15 + + break; + case 0x0B : + call TXPOWER.write(0x81); // -2 dbm Powerlevel 11 + + break; + case 0x07 : + call TXPOWER.write(0x88); // -4 dbm Powerlevel 07 + + break; + case 0x03 : + call TXPOWER.write(0x2C); // -7 dbm Powerlevel 03 + + + break; + case 0x01 : + call TXPOWER.write(0x03); // -18 dbm Powerlevel 01 + + + break; + default : + call TXPOWER.write(0xF7); // Powerlevel default + + break; + + + } + + + call CSN.set(); + + + call CSN.clr(); + call TXPOWER.write(0xF7); + call CSN.set(); + + + call CSN.clr(); + call CCACTRL0.write(0x1A); // 0xF8 + call CSN.set(); + + call CSN.clr(); + call MDMCTRL0.write(0x85); + call CSN.set(); + + call CSN.clr(); + call MDMCTRL1.write(0x14); // 0x14 + call CSN.set(); + + call CSN.clr(); + call RXCTRL.write(0x3F); + call CSN.set(); + + call CSN.clr(); + call FSCTRL.write(0x5A); + call CSN.set(); + + + call CSN.clr(); + call FSCAL1.write(0x2B); // 0x03 + call CSN.set(); + + + call CSN.clr(); + call AGCCTRL1.write(0x11); + call CSN.set(); + + call CSN.clr(); + call ADCTEST0.write(0x10); + call CSN.set(); + + call CSN.clr(); + call ADCTEST1.write(0x0E); + call CSN.set(); + + call CSN.clr(); + call ADCTEST2.write(0x03); + call CSN.set(); + + call CSN.clr(); + call FRMCTRL0.write(0x40); // changed from 0x40 + call CSN.set(); + + call CSN.clr(); + call EXTCLOCK.write(0x00); + call CSN.set(); + + call CSN.clr(); + call GPIOCTRL1.write(CC2520_GPIO_FIFO); + call CSN.set(); + + + call CSN.clr(); + call GPIOCTRL4.write(CC2520_GPIO_FIFOP); + call CSN.set(); + + call CSN.clr(); + call GPIOCTRL2.write(CC2520_GPIO_CCA);// CC2520_GPIO_SAMPLED_CCA + call CSN.set(); + + call CSN.clr(); + call GPIOCTRL0.write(CC2520_GPIO_SFD); + call CSN.set(); + + call CSN.clr(); + call GPIOPOLARITY.write(0x0F); + call CSN.set(); + + + + call CSN.clr(); + call SNOP.strobe(); + call CSN.set(); + + call CSN.clr(); + call MDMCTRL1.read(data1); + call CSN.set(); + + call CSN.clr(); + call FRMFILT0.write(0xc0); // changed from 0xc0 + call CSN.set(); + + + call CSN.clr(); + call FRMCTRL1.write(0x03); // 0x48 0x60 + call CSN.set(); + + call CSN.clr(); + call FIFOPCTRL.write(0x7F); // 0x48 0x60 + call CSN.set(); + + call CSN.clr(); + ret_value =0x00; + ret_value = call SNOP.strobe(); + call CSN.set(); + + } + + + + + + + + + /** + * Write the PANID register + */ + void writeId() { + nxle_uint16_t id[ 2 ]; + + atomic { + id[ 0 ] = m_pan; + id[ 1 ] = m_short_addr; + } + call CSN.set(); + call CSN.clr(); + + call PANID.write(0, (uint8_t*)&id, sizeof(id)); + call CSN.set(); + } + + + + /***************** Defaults ****************/ + default event void CC2520Config.syncDone( error_t error ) { + } + + default event void ReadRssi.readDone(error_t error, uint16_t data) { + } + +} diff --git a/cc2520/control/CC2520ControlP_mam.nc b/cc2520/control/CC2520ControlP_mam.nc new file mode 100644 index 0000000000..e8e02c9645 --- /dev/null +++ b/cc2520/control/CC2520ControlP_mam.nc @@ -0,0 +1,860 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * @author Jonathan Hui + * @author David Moss + * @author Urs Hunkeler (ReadRssi implementation) + * @version $Revision: 1.7 $ $Date: 2008/06/24 04:07:28 $ + */ + +#include "Timer.h" +#include "CC2520.h" + +// IEEE 802.15.4 defined constants (2.4 GHz logical channels) +#define MIN_CHANNEL 11 // 2405 MHz +#define MAX_CHANNEL 26 // 2480 MHz +#define CHANNEL_SPACING 5 // MHz + +module CC2520ControlP @safe() { + + provides interface Init; + provides interface Resource; + provides interface CC2520Config; + provides interface CC2520Power; + provides interface Read as ReadRssi; + + uses interface Alarm as StartupTimer; + uses interface GeneralIO as CSN; + uses interface GeneralIO as RSTN; + uses interface GeneralIO as VREN; + uses interface GpioInterrupt as InterruptCCA; + uses interface ActiveMessageAddress; + + uses interface CC2520Ram as PANID; + + uses interface CC2520Register as FSCTRL; + //uses interface CC2420Register as IOCFG0; + //uses interface CC2420Register as IOCFG1; + + uses interface CC2520Register as MDMCTRL0; + uses interface CC2520Register as MDMCTRL1; + uses interface CC2520Register as RXCTRL; + uses interface CC2520Register as RSSI; + + // Newly Added on 15-11-10 Lijo ******************/ + + uses interface CC2520Register as AGCCTRL1; + uses interface CC2520Register as TXPOWER; + uses interface CC2520Register as CCACTRL0; + uses interface CC2520Register as FSCAL1; + uses interface CC2520Register as FRMCTRL1; + + uses interface CC2520Register as FREQCTRL; + + uses interface CC2520Register as ADCTEST0; + uses interface CC2520Register as ADCTEST1; + uses interface CC2520Register as ADCTEST2; + + uses interface CC2520Register as FRMCTRL0; + uses interface CC2520Register as EXTCLOCK; + + uses interface CC2520Register as GPIOCTRL0; + uses interface CC2520Register as GPIOCTRL1; + uses interface CC2520Register as GPIOCTRL2; + uses interface CC2520Register as GPIOCTRL3; + uses interface CC2520Register as GPIOCTRL4; + uses interface CC2520Register as GPIOCTRL5; + uses interface CC2520Register as GPIOPOLARITY; + + uses interface CC2520Register as FRMFILT0; + uses interface CC2520Register as FRMFILT1; + uses interface CC2520Register as FIFOPCTRL; + + + //*************************************************/ + uses interface CC2520Strobe as SRXON; + uses interface CC2520Strobe as SRFOFF; + uses interface CC2520Strobe as SXOSCOFF; + uses interface CC2520Strobe as SXOSCON; + uses interface CC2520Strobe as SNOP; + + uses interface Resource as SpiResource; + uses interface Resource as RssiResource; + uses interface Resource as SyncResource; + + uses interface Leds; + uses interface LocalIeeeEui64; +} + +implementation { + + typedef enum { + S_VREG_STOPPED, + S_VREG_STARTING, + S_VREG_STARTED, + S_XOSC_STARTING, + S_XOSC_STARTED, + } cc2520_control_state_t; + + uint8_t m_channel; + + uint8_t m_tx_power; + + uint16_t m_pan; + + // temporary LIjo.. + uint16_t *data1; + + uint16_t m_short_addr; + + ieee_eui64_t m_ext_addr; + + bool m_sync_busy; + + /** TRUE if acknowledgments are enabled */ + bool autoAckEnabled; + + /** TRUE if acknowledgments are generated in hardware only */ + bool hwAutoAckDefault; + + /** TRUE if software or hardware address recognition is enabled */ + bool addressRecognition; + + /** TRUE if address recognition should also be performed in hardware */ + bool hwAddressRecognition; + + norace cc2520_control_state_t m_state = S_VREG_STOPPED; + + /***************** Prototypes ****************/ + + void writeFreqctrl(); + void Write_Default_Registers_Value(); + void writeId(); + + task void sync(); + task void syncDone(); + + /***************** Init Commands ****************/ + command error_t Init.init() { + int i, t; + call CSN.makeOutput(); + call RSTN.makeOutput(); + call VREN.makeOutput(); + + m_short_addr = call ActiveMessageAddress.amAddress(); + m_pan = call ActiveMessageAddress.amGroup(); + m_tx_power = CC2520_DEF_RFPOWER; + m_channel = CC2520_DEF_CHANNEL; + m_ext_addr = call LocalIeeeEui64.getId(); + for (i = 0; i < 4; i++) { + t = m_ext_addr.data[i]; + m_ext_addr.data[i] = m_ext_addr.data[7-i]; + m_ext_addr.data[7-i] = t; + } + + +#if defined(CC2520_NO_ADDRESS_RECOGNITION) + addressRecognition = FALSE; +#else + addressRecognition = TRUE; +#endif + +#if defined(CC2520_HW_ADDRESS_RECOGNITION) + hwAddressRecognition = TRUE; +#else + hwAddressRecognition = FALSE; +#endif + + +#if defined(CC2520_NO_ACKNOWLEDGEMENTS) + autoAckEnabled = FALSE; +#else + autoAckEnabled = TRUE; +#endif + +#if defined(CC2520_HW_ACKNOWLEDGEMENTS) + hwAutoAckDefault = TRUE; + hwAddressRecognition = TRUE; +#else + hwAutoAckDefault = FALSE; +#endif + + + return SUCCESS; + } + + /***************** Resource Commands ****************/ + async command error_t Resource.immediateRequest() { + error_t error = call SpiResource.immediateRequest(); + if ( error == SUCCESS ) { + call CSN.clr(); + + } + + return error; + } + + async command error_t Resource.request() { + return call SpiResource.request(); + } + + async command uint8_t Resource.isOwner() { + return call SpiResource.isOwner(); + } + + async command error_t Resource.release() { + atomic { + call CSN.set(); + + return call SpiResource.release(); + } + } + + /***************** CC2420Power Commands ****************/ + async command error_t CC2520Power.startVReg() { + uint8_t i; + atomic { + if ( m_state != S_VREG_STOPPED ) { + return FAIL; + } + m_state = S_VREG_STARTING; + } + + /* + // CSN is active low + call CSN.set(); + + // start up voltage regulator + call VREN.clr(); + call VREN.set(); + // do a reset + call RSTN.clr(); + // hold line low for Tdres + call BusyWait.wait( 200 ); // typical .1ms VR startup time + + call RSTN.set(); + // wait another .2ms for xosc to stabilize + call BusyWait.wait( 200 ); + + + */ + // Newly Added on 15-11-10 Lijo ************************/ + + if(m_state == S_VREG_STARTING) + { + //printf("Vreg starting .."); + //printfflush(); + } + call RSTN.clr(); + call CSN.clr(); + call VREN.clr(); + for(i=0;i<0xFF;i++); + //call CSN.set(); + call VREN.set(); + + call RSTN.clr(); + + + //******************************************************** + for(i=0;i<0xFF;i++); + for(i=0;i<0xFF;i++); + call StartupTimer.start( CC2520_TIME_VREN ); + call RSTN.set(); + + for(i=0;i<0xFF;i++); + for(i=0;i<0xFF;i++); + call CSN.set(); + return SUCCESS; + } + + async command error_t CC2520Power.stopVReg() { + m_state = S_VREG_STOPPED; + + + call RSTN.clr(); + call VREN.clr(); + call RSTN.set(); + return SUCCESS; + } + + async command error_t CC2520Power.startOscillator() { + uint8_t i; + atomic { + if ( m_state != S_VREG_STARTED ) { + return FAIL; + } + + m_state = S_XOSC_STARTING; + + + + + // Waiting for the Crystal Oscillator to Stabilize. + + for(i=0;i<0xFF;i++); + for(i=0;i<0xFF;i++); + + + + call InterruptCCA.enableRisingEdge(); + + call CSN.clr(); + call SXOSCON.strobe(); + call CSN.set(); + + call CSN.clr(); + call SNOP.strobe(); + call CSN.set(); + + + + + Write_Default_Registers_Value(); + + writeFreqctrl(); + + + + call CSN.clr(); + call SNOP.strobe(); + call CSN.set(); + + + call CSN.clr(); + call SRXON.strobe(); + call CSN.set(); + + + + + call CSN.clr(); + call SNOP.strobe(); + call CSN.set(); + + + + } + + + return SUCCESS; + } + + + async command error_t CC2520Power.stopOscillator() { + atomic { + if ( m_state != S_XOSC_STARTED ) { + return FAIL; + } + m_state = S_VREG_STARTED; + call CSN.clr(); + call SXOSCOFF.strobe(); + call CSN.set(); + + } + return SUCCESS; + } + + async command error_t CC2520Power.rxOn() { + atomic { + if ( m_state != S_XOSC_STARTED ) { + return FAIL; + } + call CSN.clr(); + call SRXON.strobe(); + call CSN.set(); + + } + return SUCCESS; + } + + async command error_t CC2520Power.rfOff() { + atomic { + if ( m_state != S_XOSC_STARTED ) { + return FAIL; + } + call CSN.clr(); + call SRFOFF.strobe(); + call CSN.set(); + + } + return SUCCESS; + } + + + /***************** CC2420Config Commands ****************/ + command uint8_t CC2520Config.getChannel() { + atomic return m_channel; + } + + command void CC2520Config.setChannel( uint8_t channel ) { + + atomic m_channel = channel; + } + + async command uint16_t CC2520Config.getShortAddr() { + atomic return m_short_addr; + } + + command void CC2520Config.setShortAddr( uint16_t addr ) { + atomic m_short_addr = addr; + } + + command ieee_eui64_t CC2520Config.getExtAddr() { + return m_ext_addr; + } + + + async command uint16_t CC2520Config.getPanAddr() { + atomic return m_pan; + } + + command void CC2520Config.setPanAddr( uint16_t pan ) { + atomic m_pan = pan; + } + + /** + * Sync must be called to commit software parameters configured on + * the microcontroller (through the CC2420Config interface) to the + * CC2420 radio chip. + */ + command error_t CC2520Config.sync() { + atomic { + if ( m_sync_busy ) { + return FAIL; + } + + m_sync_busy = TRUE; + if ( m_state == S_XOSC_STARTED ) { + call SyncResource.request(); + } else { + post syncDone(); + } + } + + return SUCCESS; + } + + /** + * @param enableAddressRecognition TRUE to turn address recognition on + * @param useHwAddressRecognition TRUE to perform address recognition first + * in hardware. This doesn't affect software address recognition. The + * driver must sync with the chip after changing this value. + */ + command void CC2520Config.setAddressRecognition(bool enableAddressRecognition, bool useHwAddressRecognition) { + atomic { + addressRecognition = enableAddressRecognition; + hwAddressRecognition = useHwAddressRecognition; + } + } + + /** + * @return TRUE if address recognition is enabled + */ + async command bool CC2520Config.isAddressRecognitionEnabled() { + atomic return addressRecognition; + } + + /** + * @return TRUE if address recognition is performed first in hardware. + */ + async command bool CC2520Config.isHwAddressRecognitionDefault() { + atomic return hwAddressRecognition; + } + + + /** + * Sync must be called for acknowledgement changes to take effect + * @param enableAutoAck TRUE to enable auto acknowledgements + * @param hwAutoAck TRUE to default to hardware auto acks, FALSE to + * default to software auto acknowledgements + */ + command void CC2520Config.setAutoAck(bool enableAutoAck, bool hwAutoAck) { + atomic autoAckEnabled = enableAutoAck; + atomic hwAutoAckDefault = hwAutoAck; + } + + /** + * @return TRUE if hardware auto acks are the default, FALSE if software + * acks are the default + */ + async command bool CC2520Config.isHwAutoAckDefault() { + atomic return hwAutoAckDefault; + } + + /** + * @return TRUE if auto acks are enabled + */ + async command bool CC2520Config.isAutoAckEnabled() { + atomic return autoAckEnabled; + } + + /***************** ReadRssi Commands ****************/ + command error_t ReadRssi.read() { + return call RssiResource.request(); + } + + /***************** Spi Resources Events ****************/ + event void SyncResource.granted() { + + call CSN.clr(); + call SRFOFF.strobe(); + call CSN.set(); + + + writeFreqctrl(); + Write_Default_Registers_Value(); + writeId(); + + call CSN.clr(); + call SRXON.strobe(); + call CSN.set(); + + call SyncResource.release(); + post syncDone(); + + + + } + + event void SpiResource.granted() { + call CSN.clr(); + + signal Resource.granted(); + } + + event void RssiResource.granted() { + uint16_t data; + call CSN.clr(); + call RSSI.read(&data); + call CSN.set(); + + call RssiResource.release(); + data += 0x7f; + data &= 0x00ff; + signal ReadRssi.readDone(SUCCESS, data); + } + + /***************** StartupTimer Events ****************/ + async event void StartupTimer.fired() { + if ( m_state == S_VREG_STARTING ) { + m_state = S_VREG_STARTED; + //call RSTN.clr(); + //call RSTN.set(); + signal CC2520Power.startVRegDone(); + } + } + + /***************** InterruptCCA Events ****************/ + async event void InterruptCCA.fired() { + m_state = S_XOSC_STARTED; + call InterruptCCA.disable(); + + writeId(); + + signal CC2520Power.startOscillatorDone(); + + } + + /***************** ActiveMessageAddress Events ****************/ + async event void ActiveMessageAddress.changed() { + atomic { + m_short_addr = call ActiveMessageAddress.amAddress(); + m_pan = call ActiveMessageAddress.amGroup(); + } + + post sync(); + } + + /***************** Tasks ****************/ + /** + * Attempt to synchronize our current settings with the CC2420 + */ + task void sync() { + call CC2520Config.sync(); + } + + task void syncDone() { + atomic m_sync_busy = FALSE; + signal CC2520Config.syncDone( SUCCESS ); + } + + + /***************** Functions ****************/ + /** + * Write teh FSCTRL register + */ + void writeFreqctrl() { + uint8_t channel; + + atomic { + channel = m_channel; + } + + call CSN.set(); + call CSN.clr(); + call FREQCTRL.write(MIN_CHANNEL + ((channel - MIN_CHANNEL)*CHANNEL_SPACING)); + call CSN.set(); + } + + /** + * Write the Default_Register_Values register + * Disabling hardware address recognition improves acknowledgment success + * rate and low power communications reliability by causing the local node + * to do work while the real destination node of the packet is acknowledging. + */ +void Write_Default_Registers_Value() { + uint8_t ret_value; + uint16_t data; + call CSN.set(); + call CSN.clr(); + + switch ((CC2520_DEF_RFPOWER)) + { + case 0x1F : + call TXPOWER.write(0xF7); // 5dbm Powerlevel 31 + + break; + case 0x1B : + call TXPOWER.write(0xF2); // 3dbm Powerlevel 27 + break; + case 0x17 : + call TXPOWER.write(0xAB); // 2dbm Powerlevel 23 + + break; + case 0x13 : + call TXPOWER.write(0x13); // 1 dbm Powerlevel 19 + + break; + case 0x0F : + call TXPOWER.write(0x32); // 0 dbm Powerlevel 15 + + break; + case 0x0B : + call TXPOWER.write(0x81); // -2 dbm Powerlevel 11 + + break; + case 0x07 : + call TXPOWER.write(0x88); // -4 dbm Powerlevel 07 + + break; + case 0x03 : + call TXPOWER.write(0x2C); // -7 dbm Powerlevel 03 + + + break; + case 0x01 : + call TXPOWER.write(0x03); // -18 dbm Powerlevel 01 + + + break; + default : + call TXPOWER.write(0xF7); // Powerlevel default + + break; + + + } + + + call CSN.set(); + + + call CSN.clr(); + call CCACTRL0.write(0x1A); // 0xF8 + call CSN.set(); + + call CSN.clr(); + call MDMCTRL0.write(0x85); + call CSN.set(); + + call CSN.clr(); + call MDMCTRL1.write(0x14); // 0x14 + call CSN.set(); + + call CSN.clr(); + call RXCTRL.write(0x3F); + call CSN.set(); + + call CSN.clr(); + call FSCTRL.write(0x5A); + call CSN.set(); + + + call CSN.clr(); + call FSCAL1.write(0x2B); // 0x03 + call CSN.set(); + + + call CSN.clr(); + call AGCCTRL1.write(0x11); + call CSN.set(); + + call CSN.clr(); + call ADCTEST0.write(0x10); + call CSN.set(); + + call CSN.clr(); + call ADCTEST1.write(0x0E); + call CSN.set(); + + call CSN.clr(); + call ADCTEST2.write(0x03); + call CSN.set(); + + call CSN.clr(); + call FRMCTRL0.write(0x40); // 0x48 0x60 + call CSN.set(); + + call CSN.clr(); + call EXTCLOCK.write(0x00); + call CSN.set(); + + +/* Mam wrote this thing check what is there here*/ + call CSN.clr(); + //call GPIOCTRL0.write(CC2520_GPIO_FIFO); + call GPIOCTRL1.write(CC2520_GPIO_FIFO); + call CSN.set(); + + call CSN.clr(); + //call GPIOCTRL1.write(CC2520_GPIO_CCA);// CC2520_GPIO_SAMPLED_CCA + call GPIOCTRL3.write(CC2520_GPIO_CCA);// CC2520_GPIO_SAMPLED_CCA + call CSN.set(); + + call CSN.clr(); + //call GPIOCTRL2.write(CC2520_GPIO_RSSI_VALID); + call CSN.set(); + + call CSN.clr(); + call GPIOCTRL5.write(CC2520_GPIO_SFD); + //call GPIOCTRL4.write(CC2520_GPIO_SFD); + call CSN.set(); + + call CSN.clr(); + //call GPIOCTRL5.write(CC2520_GPIO_FIFOP); + call GPIOCTRL2.write(CC2520_GPIO_FIFOP); + call CSN.set(); + + +/* call CSN.clr(); + call GPIOCTRL0.write(CC2520_GPIO_FIFO); + call CSN.set(); + + call CSN.clr(); + call GPIOCTRL1.write(CC2520_GPIO_CCA);// CC2520_GPIO_SAMPLED_CCA + //call GPIOCTRL1.write(CC2520_GPIO_SAMPLED_CCA); + call CSN.set(); + + call CSN.clr(); + call GPIOCTRL2.write(CC2520_GPIO_RSSI_VALID); + call CSN.set(); + + call CSN.clr(); + call GPIOCTRL3.write(CC2520_GPIO_SFD); + call CSN.set(); + + call CSN.clr(); + call GPIOCTRL4.write(CC2520_EXC_TX_FRM_DONE); + call CSN.set(); + + call CSN.clr(); + call GPIOCTRL5.write(CC2520_GPIO_FIFOP); + call CSN.set(); + */ + + + call CSN.clr(); + call GPIOPOLARITY.write(0x0F); + call CSN.set(); + + call CSN.clr(); + call SNOP.strobe(); + call CSN.set(); + + call CSN.clr(); + call MDMCTRL1.read(data1); + call CSN.set(); + + call CSN.clr(); + call FRMFILT0.write(0xC0); // 0x48 0x60 + call CSN.set(); + + + call CSN.clr(); + call FRMCTRL1.write(0x03); // 0x48 0x60 + call CSN.set(); + + call CSN.clr(); + call FIFOPCTRL.write(0x7F); // 0x48 0x60 + call CSN.set(); + + call CSN.clr(); + ret_value =0x00; + ret_value = call SNOP.strobe(); + call CSN.set(); + + } + + + + + + + + + /** + * Write the PANID register + */ + void writeId() { + nxle_uint16_t id[ 2 ]; + + atomic { + id[ 0 ] = m_pan; + id[ 1 ] = m_short_addr; + } + call CSN.set(); + call CSN.clr(); + + call PANID.write(0, (uint8_t*)&id, sizeof(id)); + call CSN.set(); + } + + + + /***************** Defaults ****************/ + default event void CC2520Config.syncDone( error_t error ) { + } + + default event void ReadRssi.readDone(error_t error, uint16_t data) { + } + +} diff --git a/cc2520/control/CC2520ControlP_orig.nc b/cc2520/control/CC2520ControlP_orig.nc new file mode 100644 index 0000000000..6bf39f42f2 --- /dev/null +++ b/cc2520/control/CC2520ControlP_orig.nc @@ -0,0 +1,693 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * @author Jonathan Hui + * @author David Moss + * @author Urs Hunkeler (ReadRssi implementation) + * @version $Revision: 1.7 $ $Date: 2008/06/24 04:07:28 $ + */ + +#include "Timer.h" +#include "CC2520.h" +#include "printf.h" +// IEEE 802.15.4 defined constants (2.4 GHz logical channels) +#define MIN_CHANNEL 11 // 2405 MHz +#define MAX_CHANNEL 26 // 2480 MHz +#define CHANNEL_SPACING 5 // MHz + +module CC2520ControlP @safe() { + + provides interface Init; + provides interface Resource; + provides interface CC2520Config; + provides interface CC2520Power; + provides interface Read as ReadRssi; + + uses interface Alarm as StartupTimer; + uses interface GeneralIO as CSN; + uses interface GeneralIO as RSTN; + uses interface GeneralIO as VREN; + uses interface GpioInterrupt as InterruptCCA; + uses interface ActiveMessageAddress; + + uses interface CC2520Ram as PANID; + + uses interface CC2520Register as FSCTRL; + //uses interface CC2420Register as IOCFG0; + //uses interface CC2420Register as IOCFG1; + + uses interface CC2520Register as MDMCTRL0; + uses interface CC2520Register as MDMCTRL1; + uses interface CC2520Register as RXCTRL; + uses interface CC2520Register as RSSI; + + // Newly Added on 15-11-10 Lijo ******************/ + + uses interface CC2520Register as AGCCTRL1; + uses interface CC2520Register as TXPOWER; + uses interface CC2520Register as CCACTRL0; + uses interface CC2520Register as FSCAL1; + + uses interface CC2520Register as FREQCTRL; + + uses interface CC2520Register as ADCTEST0; + uses interface CC2520Register as ADCTEST1; + uses interface CC2520Register as ADCTEST2; + + uses interface CC2520Register as FRMCTRL0; + uses interface CC2520Register as EXTCLOCK; + + uses interface CC2520Register as GPIOCTRL0; + uses interface CC2520Register as GPIOCTRL1; + uses interface CC2520Register as GPIOCTRL2; + uses interface CC2520Register as GPIOCTRL3; + uses interface CC2520Register as GPIOCTRL4; + uses interface CC2520Register as GPIOCTRL5; + + + + + + //*************************************************/ + uses interface CC2520Strobe as SRXON; + uses interface CC2520Strobe as SRFOFF; + uses interface CC2520Strobe as SXOSCOFF; + uses interface CC2520Strobe as SXOSCON; + uses interface CC2520Strobe as SNOP; + + uses interface Resource as SpiResource; + uses interface Resource as RssiResource; + uses interface Resource as SyncResource; + + uses interface Leds; + +} + +implementation { + + typedef enum { + S_VREG_STOPPED, + S_VREG_STARTING, + S_VREG_STARTED, + S_XOSC_STARTING, + S_XOSC_STARTED, + } cc2520_control_state_t; + + uint8_t m_channel; + + uint8_t m_tx_power; + + uint16_t m_pan; + + // temporary LIjo.. + uint16_t *data1; + + uint16_t m_short_addr; + + bool m_sync_busy; + + /** TRUE if acknowledgments are enabled */ + bool autoAckEnabled; + + /** TRUE if acknowledgments are generated in hardware only */ + bool hwAutoAckDefault; + + /** TRUE if software or hardware address recognition is enabled */ + bool addressRecognition; + + /** TRUE if address recognition should also be performed in hardware */ + bool hwAddressRecognition; + + norace cc2520_control_state_t m_state = S_VREG_STOPPED; + + /***************** Prototypes ****************/ + + void writeFreqctrl(); + void writeDefault_Register_Values(); + void writeId(); + + task void sync(); + task void syncDone(); + + /***************** Init Commands ****************/ + command error_t Init.init() { + call CSN.makeOutput(); + call RSTN.makeOutput(); + call VREN.makeOutput(); + + m_short_addr = call ActiveMessageAddress.amAddress(); + m_pan = call ActiveMessageAddress.amGroup(); + m_tx_power = CC2520_DEF_RFPOWER; + m_channel = CC2520_DEF_CHANNEL; + + +#if defined(CC2520_NO_ADDRESS_RECOGNITION) + addressRecognition = FALSE; +#else + addressRecognition = TRUE; +#endif + +#if defined(CC2520_HW_ADDRESS_RECOGNITION) + hwAddressRecognition = TRUE; +#else + hwAddressRecognition = FALSE; +#endif + + +#if defined(CC2520_NO_ACKNOWLEDGEMENTS) + autoAckEnabled = FALSE; +#else + autoAckEnabled = TRUE; +#endif + +#if defined(CC2520_HW_ACKNOWLEDGEMENTS) + hwAutoAckDefault = TRUE; + hwAddressRecognition = TRUE; +#else + hwAutoAckDefault = FALSE; +#endif + + + return SUCCESS; + } + + /***************** Resource Commands ****************/ + async command error_t Resource.immediateRequest() { + error_t error = call SpiResource.immediateRequest(); + if ( error == SUCCESS ) { + call CSN.clr(); + + } + + return error; + } + + async command error_t Resource.request() { + return call SpiResource.request(); + } + + async command uint8_t Resource.isOwner() { + return call SpiResource.isOwner(); + } + + async command error_t Resource.release() { + atomic { + call CSN.set(); + return call SpiResource.release(); + } + } + + /***************** CC2420Power Commands ****************/ + async command error_t CC2520Power.startVReg() { + uint8_t i; + atomic { + if ( m_state != S_VREG_STOPPED ) { + return FAIL; + } + m_state = S_VREG_STARTING; + } + + /* + // CSN is active low + call CSN.set(); + + // start up voltage regulator + call VREN.clr(); + call VREN.set(); + // do a reset + call RSTN.clr(); + // hold line low for Tdres + call BusyWait.wait( 200 ); // typical .1ms VR startup time + + call RSTN.set(); + // wait another .2ms for xosc to stabilize + call BusyWait.wait( 200 ); + + + */ + // Newly Added on 15-11-10 Lijo ************************/ + + if(m_state == S_VREG_STARTING) + { + printf("Vreg starting .."); + //printfflush(); + } + call RSTN.clr(); + call CSN.clr(); + call VREN.clr(); + + call CSN.set(); + call VREN.set(); + + + call RSTN.clr(); + + for(i=0;i<0xFF;i++); + //******************************************************** + call StartupTimer.start( 1100 ); + call StartupTimer.start( CC2520_TIME_VREN ); + call RSTN.set(); + + call StartupTimer.start( 1100 ); + call CSN.set(); + + + for(i=0;i<0xFF;i++); + + for(i=0;i<0xFF;i++); + return SUCCESS; + } + + async command error_t CC2520Power.stopVReg() { + m_state = S_VREG_STOPPED; + call RSTN.clr(); + call VREN.clr(); + call RSTN.set(); + return SUCCESS; + } + + async command error_t CC2520Power.startOscillator() { + atomic { + if ( m_state != S_VREG_STARTED ) { + return FAIL; + } + + m_state = S_XOSC_STARTING; + + // Newly Added on 15-11-10 Lijo ************************/ + + + // Waiting for the Crystal Oscillator to Stabilize. + call StartupTimer.start( 1100 ); + + /*call IOCFG1.write( CC2420_SFDMUX_XOSC16M_STABLE << + CC2420_IOCFG1_CCAMUX );*/ + + call InterruptCCA.enableRisingEdge(); + + + printf("\nOSC_Status: %x\n", (call SXOSCON.strobe())); + printf("SNOP_Status: %x\n", (call SNOP.strobe())); + //printf("SRXON_Status: %x\n", (call SRXON.strobe())); + + /*call IOCFG0.write( ( 1 << CC2420_IOCFG0_FIFOP_POLARITY ) | + ( 127 << CC2420_IOCFG0_FIFOP_THR ) );*/ + + writeDefault_Register_Values(); + writeFreqctrl(); + } + + /* printf("SNOP_Status: %x\n", (call SNOP.strobe())); + printf("Register Reading .."); + printf("\n"); + call MDMCTRL0.read(data1); + printf("\n");*/ + + /*call RXCTRL1.write( ( 1 << CC2420_RXCTRL1_RXBPF_LOCUR ) | + ( 1 << CC2420_RXCTRL1_LOW_LOWGAIN ) | + ( 1 << CC2420_RXCTRL1_HIGH_HGM ) | + ( 1 << CC2420_RXCTRL1_LNA_CAP_ARRAY ) | + ( 1 << CC2420_RXCTRL1_RXMIX_TAIL ) | + ( 1 << CC2420_RXCTRL1_RXMIX_VCM ) | + ( 2 << CC2420_RXCTRL1_RXMIX_CURRENT ) ); + }*/ + + + return SUCCESS; + } + + + async command error_t CC2520Power.stopOscillator() { + atomic { + if ( m_state != S_XOSC_STARTED ) { + return FAIL; + } + m_state = S_VREG_STARTED; + call SXOSCOFF.strobe(); + } + return SUCCESS; + } + + async command error_t CC2520Power.rxOn() { + atomic { + if ( m_state != S_XOSC_STARTED ) { + return FAIL; + } + + call SRXON.strobe(); + } + return SUCCESS; + } + + async command error_t CC2520Power.rfOff() { + atomic { + if ( m_state != S_XOSC_STARTED ) { + return FAIL; + } + call SRFOFF.strobe(); + } + return SUCCESS; + } + + + /***************** CC2420Config Commands ****************/ + command uint8_t CC2520Config.getChannel() { + atomic return m_channel; + } + + command void CC2520Config.setChannel( uint8_t channel ) { + + atomic m_channel = channel; + } + + async command uint16_t CC2520Config.getShortAddr() { + atomic return m_short_addr; + } + + command void CC2520Config.setShortAddr( uint16_t addr ) { + atomic m_short_addr = addr; + } + + async command uint16_t CC2520Config.getPanAddr() { + atomic return m_pan; + } + + command void CC2520Config.setPanAddr( uint16_t pan ) { + atomic m_pan = pan; + } + + /** + * Sync must be called to commit software parameters configured on + * the microcontroller (through the CC2420Config interface) to the + * CC2420 radio chip. + */ + command error_t CC2520Config.sync() { + atomic { + if ( m_sync_busy ) { + return FAIL; + } + + m_sync_busy = TRUE; + if ( m_state == S_XOSC_STARTED ) { + call SyncResource.request(); + } else { + post syncDone(); + } + } + + return SUCCESS; + } + + /** + * @param enableAddressRecognition TRUE to turn address recognition on + * @param useHwAddressRecognition TRUE to perform address recognition first + * in hardware. This doesn't affect software address recognition. The + * driver must sync with the chip after changing this value. + */ + command void CC2520Config.setAddressRecognition(bool enableAddressRecognition, bool useHwAddressRecognition) { + atomic { + addressRecognition = enableAddressRecognition; + hwAddressRecognition = useHwAddressRecognition; + } + } + + /** + * @return TRUE if address recognition is enabled + */ + async command bool CC2520Config.isAddressRecognitionEnabled() { + atomic return addressRecognition; + } + + /** + * @return TRUE if address recognition is performed first in hardware. + */ + async command bool CC2520Config.isHwAddressRecognitionDefault() { + atomic return hwAddressRecognition; + } + + + /** + * Sync must be called for acknowledgement changes to take effect + * @param enableAutoAck TRUE to enable auto acknowledgements + * @param hwAutoAck TRUE to default to hardware auto acks, FALSE to + * default to software auto acknowledgements + */ + command void CC2520Config.setAutoAck(bool enableAutoAck, bool hwAutoAck) { + atomic autoAckEnabled = enableAutoAck; + atomic hwAutoAckDefault = hwAutoAck; + } + + /** + * @return TRUE if hardware auto acks are the default, FALSE if software + * acks are the default + */ + async command bool CC2520Config.isHwAutoAckDefault() { + atomic return hwAutoAckDefault; + } + + /** + * @return TRUE if auto acks are enabled + */ + async command bool CC2520Config.isAutoAckEnabled() { + atomic return autoAckEnabled; + } + + /***************** ReadRssi Commands ****************/ + command error_t ReadRssi.read() { + return call RssiResource.request(); + } + + /***************** Spi Resources Events ****************/ + event void SyncResource.granted() { + + call CSN.clr(); + call SRFOFF.strobe(); + writeFreqctrl(); + writeDefault_Register_Values(); + writeId(); + call CSN.set(); + call CSN.clr(); + call SRXON.strobe(); + call CSN.set(); + call SyncResource.release(); + post syncDone(); + + } + + event void SpiResource.granted() { + call CSN.clr(); + signal Resource.granted(); + } + + event void RssiResource.granted() { + uint16_t data; + call CSN.clr(); + call RSSI.read(&data); + call CSN.set(); + + call RssiResource.release(); + data += 0x7f; + data &= 0x00ff; + signal ReadRssi.readDone(SUCCESS, data); + } + + /***************** StartupTimer Events ****************/ + async event void StartupTimer.fired() { + if ( m_state == S_VREG_STARTING ) { + m_state = S_VREG_STARTED; + call RSTN.clr(); + call RSTN.set(); + signal CC2520Power.startVRegDone(); + } + } + + /***************** InterruptCCA Events ****************/ + async event void InterruptCCA.fired() { + m_state = S_XOSC_STARTED; + call InterruptCCA.disable(); + //call IOCFG1.write( 0 ); + writeId(); + call CSN.set(); + call CSN.clr(); + signal CC2520Power.startOscillatorDone(); + + } + + /***************** ActiveMessageAddress Events ****************/ + async event void ActiveMessageAddress.changed() { + atomic { + m_short_addr = call ActiveMessageAddress.amAddress(); + m_pan = call ActiveMessageAddress.amGroup(); + } + + post sync(); + } + + /***************** Tasks ****************/ + /** + * Attempt to synchronize our current settings with the CC2420 + */ + task void sync() { + call CC2520Config.sync(); + } + + task void syncDone() { + atomic m_sync_busy = FALSE; + signal CC2520Config.syncDone( SUCCESS ); + } + + + /***************** Functions ****************/ + /** + * Write teh FSCTRL register + */ + void writeFreqctrl() { + uint8_t channel; + + atomic { + channel = m_channel; + } + + call FREQCTRL.write(MIN_CHANNEL + ((channel - MIN_CHANNEL)*CHANNEL_SPACING)); + } + + /** + * Write the Default_Register_Values register + * Disabling hardware address recognition improves acknowledgment success + * rate and low power communications reliability by causing the local node + * to do work while the real destination node of the packet is acknowledging. + */ + void writeDefault_Register_Values() { + { + uint8_t i; + + call CSN.clr(); + + //ret_value = call SRFOFF.strobe(); + //printf("SRFOFF_Status: %x\n", ret_value); + for(i=0;i<0xFF;i++); + + printf("CC2520 Status 1: %x \n", call SNOP.strobe()); + + call TXPOWER.write(0x32); + + for(i=0;i<0xFF;i++); + printf("CC2520 Status 2: %x \n", call SNOP.strobe()); + for(i=0;i<0xFF;i++); + printf("CC2520 Status 3: %x \n", call SNOP.strobe()); + + for(i=0;i<0xFF;i++); + for(i=0;i<0xFF;i++); + printf("CC2520 Status 4: %x \n", call SNOP.strobe()); + for(i=0;i<0xFF;i++); + printf("CC2520 Status 5: %x \n", call SNOP.strobe()); + + call CSN.set(); + + /* + call CCACTRL0.write(0xF8); + call MDMCTRL0.write(0x85); + call MDMCTRL1.write(0x14); + call RXCTRL.write(0x3F); + call FSCTRL.write(0x5A); + call FSCAL1.write(0x03); + + call AGCCTRL1.write(0x11); + call ADCTEST0.write(0x10); + call ADCTEST1.write(0x0E); + call ADCTEST2.write(0x03); + + call FRMCTRL0.write(0x60); + call EXTCLOCK.write(0x00); + + call GPIOCTRL0.write(CC2520_GPIO_FIFO); + call GPIOCTRL1.write(CC2520_GPIO_CCA); + call GPIOCTRL2.write(CC2520_GPIO_RSSI_VALID); + call GPIOCTRL3.write(CC2520_GPIO_SFD); + call GPIOCTRL4.write(CC2520_EXC_TX_FRM_DONE); + call GPIOCTRL5.write(CC2520_GPIO_FIFOP); + + + + for(i=0;i<0xFF;i++); + for(i=0;i<0xFF;i++); + printf("CC2520 Status 4: %x \n", call SNOP.strobe()); + for(i=0;i<0xFF;i++); + printf("CC2520 Status 5: %x \n", call SNOP.strobe()); + call SNOP.strobe(); + call MDMCTRL0.read(data1); + for(i=0;i<0xFF;i++); + printf("CC2520 Status 6: %x \n", call SNOP.strobe()); + for(i=0;i<0xFF;i++); + printf("CC2520 Status 7: %x \n", call SNOP.strobe()); */ + //call CSN.set(); + + + /* + call MDMCTRL0.write( ( 1 << CC2420_MDMCTRL0_RESERVED_FRAME_MODE ) | + ( (addressRecognition && hwAddressRecognition) << CC2420_MDMCTRL0_ADR_DECODE ) | + ( 2 << CC2420_MDMCTRL0_CCA_HYST ) | + ( 3 << CC2420_MDMCTRL0_CCA_MOD ) | + ( 1 << CC2420_MDMCTRL0_AUTOCRC ) | + ( (autoAckEnabled && hwAutoAckDefault) << CC2420_MDMCTRL0_AUTOACK ) | + ( 0 << CC2420_MDMCTRL0_AUTOACK ) | + ( 2 << CC2420_MDMCTRL0_PREAMBLE_LENGTH ) );*/ + } + // Jon Green: + // MDMCTRL1.CORR_THR is defaulted to 20 instead of 0 like the datasheet says + // If we add in changes to MDMCTRL1, be sure to include this fix. + } + + /** + * Write the PANID register + */ + void writeId() { + nxle_uint16_t id[ 2 ]; + + atomic { + id[ 0 ] = m_pan; + id[ 1 ] = m_short_addr; + } + + call PANID.write(0, (uint8_t*)&id, sizeof(id)); + } + + + + /***************** Defaults ****************/ + default event void CC2520Config.syncDone( error_t error ) { + } + + default event void ReadRssi.readDone(error_t error, uint16_t data) { + } + +} diff --git a/cc2520/csma/CC2520CsmaC.nc b/cc2520/csma/CC2520CsmaC.nc new file mode 100644 index 0000000000..0cee791407 --- /dev/null +++ b/cc2520/csma/CC2520CsmaC.nc @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * Basic implementation of a CSMA MAC for the ChipCon CC2420 radio. + * + * @author Jonathan Hui + * @version $Revision: 1.2 $ $Date: 2008/05/14 21:33:07 $ + */ + +#include "CC2520.h" +#include "IEEE802154.h" + +configuration CC2520CsmaC { + + provides interface SplitControl; + provides interface Send; + provides interface Receive; + provides interface RadioBackoff; + +} + +implementation { + + components CC2520CsmaP as CsmaP; + RadioBackoff = CsmaP; + SplitControl = CsmaP; + Send = CsmaP; + + components CC2520ControlC; + CsmaP.Resource -> CC2520ControlC; + CsmaP.CC2520Power -> CC2520ControlC; + + components CC2520TransmitC; + CsmaP.SubControl -> CC2520TransmitC; + CsmaP.CC2520Transmit -> CC2520TransmitC; + CsmaP.SubBackoff -> CC2520TransmitC; + + components CC2520ReceiveC; + Receive = CC2520ReceiveC; + CC2520ReceiveC.Send -> CC2520TransmitC; + CsmaP.SubControl -> CC2520ReceiveC; + + components CC2520PacketC; + CsmaP.CC2520Packet -> CC2520PacketC; + CsmaP.CC2520PacketBody -> CC2520PacketC; + + components RandomC; + CsmaP.Random -> RandomC; + + components new StateC(); + CsmaP.SplitControlState -> StateC; + + components LedsC as Leds; + CsmaP.Leds -> Leds; + +} diff --git a/cc2520/csma/CC2520CsmaP.nc b/cc2520/csma/CC2520CsmaP.nc new file mode 100644 index 0000000000..fdaa442f7c --- /dev/null +++ b/cc2520/csma/CC2520CsmaP.nc @@ -0,0 +1,319 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * @author Jonathan Hui + * @version $Revision: 1.7 $ $Date: 2008/06/24 04:07:28 $ + */ +#ifdef PRINTF +#include "printf.h" +#endif + +module CC2520CsmaP @safe() { + + provides interface SplitControl; + provides interface Send; + provides interface RadioBackoff; + + uses interface Resource; + uses interface CC2520Power; + uses interface StdControl as SubControl; + uses interface CC2520Transmit; + uses interface RadioBackoff as SubBackoff; + uses interface Random; + uses interface Leds; + uses interface CC2520Packet; + uses interface CC2520PacketBody; + uses interface State as SplitControlState; + +} + +implementation { + + enum { + S_STOPPED, + S_STARTING, + S_STARTED, + S_STOPPING, + S_TRANSMITTING, + }; + + message_t* ONE_NOK m_msg; + + error_t sendErr = SUCCESS; + + /** TRUE if we are to use CCA when sending the current packet */ + norace bool ccaOn; + + /****************** Prototypes ****************/ + task void startDone_task(); + task void startDone_task(); + task void stopDone_task(); + task void sendDone_task(); + + void shutdown(); + + /***************** SplitControl Commands ****************/ + command error_t SplitControl.start() { + if(call SplitControlState.requestState(S_STARTING) == SUCCESS) { + call CC2520Power.startVReg(); + return SUCCESS; + + } else if(call SplitControlState.isState(S_STARTED)) { + return EALREADY; + + } else if(call SplitControlState.isState(S_STARTING)) { + return SUCCESS; + } + + return EBUSY; + } + + command error_t SplitControl.stop() { + if (call SplitControlState.isState(S_STARTED)) { + call SplitControlState.forceState(S_STOPPING); + shutdown(); + return SUCCESS; + + } else if(call SplitControlState.isState(S_STOPPED)) { + return EALREADY; + + } else if(call SplitControlState.isState(S_TRANSMITTING)) { + call SplitControlState.forceState(S_STOPPING); + // At sendDone, the radio will shut down + return SUCCESS; + + } else if(call SplitControlState.isState(S_STOPPING)) { + return SUCCESS; + } + + return EBUSY; + } + + /***************** Send Commands ****************/ + command error_t Send.cancel( message_t* p_msg ) { + + return call CC2520Transmit.cancel(); + } + + command error_t Send.send( message_t* p_msg, uint8_t len ) { + + cc2520_header_t* header = call CC2520PacketBody.getHeader( p_msg ); + cc2520_metadata_t* metadata = call CC2520PacketBody.getMetadata( p_msg ); + + atomic { + if (!call SplitControlState.isState(S_STARTED)) { + return FAIL; + } + + call SplitControlState.forceState(S_TRANSMITTING); + m_msg = p_msg; + } + + //header->length = len + CC2520_SIZE;//it is getting filled in cc2520ActiveMessage + header->fcf &= ((1 << IEEE154_FCF_ACK_REQ) | + (0x3 << IEEE154_FCF_SRC_ADDR_MODE) | + (0x3 << IEEE154_FCF_DEST_ADDR_MODE)); + + header->fcf |= ( ( IEEE154_TYPE_DATA << IEEE154_FCF_FRAME_TYPE ) | + ( 1 << IEEE154_FCF_INTRAPAN ) ); +/* + header->fcf &= 1 << IEEE154_FCF_ACK_REQ; + header->fcf |= ( ( IEEE154_TYPE_DATA << IEEE154_FCF_FRAME_TYPE ) | + ( 1 << IEEE154_FCF_INTRAPAN ) | + ( IEEE154_ADDR_SHORT << IEEE154_FCF_DEST_ADDR_MODE ) | + ( IEEE154_ADDR_SHORT << IEEE154_FCF_SRC_ADDR_MODE ) );*/ + + metadata->ack = FALSE; + metadata->rssi = 0; + metadata->lqi = 0; + metadata->timesync = FALSE; + metadata->timestamp = CC2520_INVALID_TIMESTAMP; + + ccaOn = TRUE; + signal RadioBackoff.requestCca(m_msg); + call CC2520Transmit.send( m_msg, ccaOn ); + + + return SUCCESS; + + } + + command void* Send.getPayload(message_t* m, uint8_t len) { + if (len <= call Send.maxPayloadLength()) { + return (void* COUNT_NOK(len))m->data; + } + else { + return NULL; + } + } + + command uint8_t Send.maxPayloadLength() { + return TOSH_DATA_LENGTH; + } + + /**************** RadioBackoff Commands ****************/ + /** + * Must be called within a requestInitialBackoff event + * @param backoffTime the amount of time in some unspecified units to backoff + */ + async command void RadioBackoff.setInitialBackoff(uint16_t backoffTime) { + call SubBackoff.setInitialBackoff(backoffTime); + } + + /** + * Must be called within a requestCongestionBackoff event + * @param backoffTime the amount of time in some unspecified units to backoff + */ + async command void RadioBackoff.setCongestionBackoff(uint16_t backoffTime) { + call SubBackoff.setCongestionBackoff(backoffTime); + } + + /** + * Enable CCA for the outbound packet. Must be called within a requestCca + * event + * @param ccaOn TRUE to enable CCA, which is the default. + */ + async command void RadioBackoff.setCca(bool useCca) { + ccaOn = useCca; + } + + + /**************** Events ****************/ + async event void CC2520Transmit.sendDone( message_t* p_msg, error_t err ) { + atomic sendErr = err; + post sendDone_task(); + } + + async event void CC2520Power.startVRegDone() { + #ifdef PRINTF + printf("\n resource request"); + printfflush(); + #endif + call Resource.request(); + } + + event void Resource.granted() { + uint8_t i; + + call CC2520Power.startOscillator(); + } + + async event void CC2520Power.startOscillatorDone() { + + post startDone_task(); + + } + + /***************** SubBackoff Events ****************/ + async event void SubBackoff.requestInitialBackoff(message_t *msg) { + call SubBackoff.setInitialBackoff ( call Random.rand16() + % (0x1F * CC2520_BACKOFF_PERIOD) + CC2520_MIN_BACKOFF); + + signal RadioBackoff.requestInitialBackoff(msg); + } + + async event void SubBackoff.requestCongestionBackoff(message_t *msg) { + call SubBackoff.setCongestionBackoff( call Random.rand16() + % (0x7 * CC2520_BACKOFF_PERIOD) + CC2520_MIN_BACKOFF); + + signal RadioBackoff.requestCongestionBackoff(msg); + } + + async event void SubBackoff.requestCca(message_t *msg) { + // Lower layers than this do not configure the CCA settings + signal RadioBackoff.requestCca(msg); + } + + + /***************** Tasks ****************/ + task void sendDone_task() { + error_t packetErr; + atomic packetErr = sendErr; + if(call SplitControlState.isState(S_STOPPING)) { + shutdown(); + + } else { + call SplitControlState.forceState(S_STARTED); + } + + signal Send.sendDone( m_msg, packetErr ); + } + + task void startDone_task() { + + call SubControl.start(); + + call CC2520Power.rxOn(); + //printf("\nstartdone task");printfflush(); + call Resource.release(); + call SplitControlState.forceState(S_STARTED); + signal SplitControl.startDone( SUCCESS ); + #ifdef PRINTF + printf("\n Csma-startDone.");printfflush(); + #endif + } + + task void stopDone_task() { + call SplitControlState.forceState(S_STOPPED); + signal SplitControl.stopDone( SUCCESS ); + } + + + /***************** Functions ****************/ + /** + * Shut down all sub-components and turn off the radio + */ + void shutdown() { + call SubControl.stop(); + call CC2520Power.stopVReg(); + post stopDone_task(); + } + + /***************** Defaults ***************/ + default event void SplitControl.startDone(error_t error) { + } + + default event void SplitControl.stopDone(error_t error) { + } + + default async event void RadioBackoff.requestInitialBackoff(message_t *msg) { + } + + default async event void RadioBackoff.requestCongestionBackoff(message_t *msg) { + } + + default async event void RadioBackoff.requestCca(message_t *msg) { + } + + +} + diff --git a/cc2520/htmlreport.tar.gz b/cc2520/htmlreport.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..19c8971c65b51ab12c644b80bd0e3c004cc0a5b3 GIT binary patch literal 995670 zcmaI8byOTpw=aylySqzpNsz(agF|qKAPIz^gS!*lHMnblAVGr@9D-{g!F`ziCeL}F zv(CNutdII*cK538T~&M6uHTl1HWm%;zy411(ESOApncln_a#GD!4*JS60_q)xqJBqHQ1Lreok>ILE^uuU&7C3bJ^q%Z6b5Nj3}vV(*dw`9cJk$Cq_UirJ-O(JfC081=4qgn)=2GD`vuQiJ_*Go0_ z8u&15*RJe}ymOQIgDL!)NAdDAxJ%xc60aUCBfqT#yepM@T(YOUDs4izcw}85iidT< zr~~)p7oycv+0pqzB11vCux?BmfE-gifEEaed;}Y%e1<7_h*CMd)x=G5y8ht-s}5(bYq~D!l07xJc~s)3K&cI_#8PthNAN#NQm+Q;DD(^V?(@g96nm#}n_rjew={7J4t!)cZ^=_Vc&)h!nvn3H zdyUnbeisb74+1vI#n%Pp0%Y9BJ}e~?3s!9=+)2qLR;wV5#^1CC)mpH@S7k%}>?zgj z_=0D1_cv(o~o@8XBH(&O99r-C#`Qw6pKvbQu0=C%Ev%Qlj zU!H{JKa`h{UqfGY4RQ1Utklo~1&C%klQA%zL+-4f%!Y|q0*X{>cMqa zXO`?1HCFI&*AUtg#~9t_E09q1B5bG(H#~vo=CYzDp9u2g~!YfxEK+!wBd&<%`Zqp)^zxB?L2L}N>|0jcz zJJ6mo-s2$&@V1Y%VfU++OvvC6*yFdkI^FYl3f&Fh@0$O{J =pbVV7&}$q%48CMi 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

Z;c5+XWYKfK&uuF4NG^bZi>$Oi*%? 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З;))_c;Eg5*@ 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

oV&JDwH(>*8 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

$uA8TXew|_3)#yR%qvB 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%0DOIszCvNJ=cvnhCX#hII%8xVg(b94Q=4CT6O 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

XcYPNX-JAxQmwC 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ϗ^|r2P(LhMo|zR1QypY7U-)u#x4aUE*(I-vMT|J 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 z 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 e^UlR*Z7W)rEMM(ev literal 0 HcmV?d00001 diff --git a/cc2520/interfaces/123.nc b/cc2520/interfaces/123.nc new file mode 100644 index 0000000000..f4e4399da2 --- /dev/null +++ b/cc2520/interfaces/123.nc @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * @author Jonathan Hui + * @author David Moss + * @author Chad Metcalf + */ + +#include "message.h" + +interface CC2520Packet { + + /** + * Get transmission power setting for current packet. + * + * @param the message + */ + async command uint8_t getPower( message_t* p_msg ); + + /** + * Set transmission power for a given packet. Valid ranges are + * between 0 and 31. + * + * @param p_msg the message. + * @param power transmission power. + */ + async command void setPower( message_t* p_msg, uint8_t power ); + + /** + * Get rssi value for a given packet. For received packets, it is + * the received signal strength when receiving that packet. For sent + * packets, it is the received signal strength of the ack if an ack + * was received. + */ + async command int8_t getRssi( message_t* p_msg ); + + /** + * Get lqi value for a given packet. For received packets, it is the + * link quality indicator value when receiving that packet. For sent + * packets, it is the link quality indicator value of the ack if an + * ack was received. + */ + async command uint8_t getLqi( message_t* p_msg ); + +} diff --git a/cc2520/interfaces/CC2520Config.nc b/cc2520/interfaces/CC2520Config.nc new file mode 100644 index 0000000000..70b0117a8c --- /dev/null +++ b/cc2520/interfaces/CC2520Config.nc @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * An HAL abstraction of the ChipCon CC2420 radio. This abstraction + * deals specifically with radio configurations. All get() and set() + * commands are single-phase. After setting some values, a call to + * sync() is required for the changes to propagate to the cc2420 + * hardware chip. This interface allows setting multiple parameters + * before calling sync(). + * + * @author Jonathan Hui + * @version $Revision: 1.3 $ $Date: 2008/06/16 15:33:32 $ + */ + +interface CC2520Config { + + /** + * Sync configuration changes with the radio hardware. This only + * applies to set commands below. + * + * @return SUCCESS if the request was accepted, FAIL otherwise. + */ + command error_t sync(); + event void syncDone( error_t error ); + + /** + * Change the channel of the radio, between 11 and 26 + */ + command uint8_t getChannel(); + command void setChannel( uint8_t channel ); + + + + /** + * Get the long address of the radio: set in hardware + */ + command ieee_eui64_t getExtAddr(); + /** + * Change the short address of the radio. + */ + async command uint16_t getShortAddr(); + command void setShortAddr( uint16_t address ); + + /** + * Change the PAN address of the radio. + */ + async command uint16_t getPanAddr(); + command void setPanAddr( uint16_t address ); + + + /** + * @param enableAddressRecognition TRUE to turn address recognition on + * @param useHwAddressRecognition TRUE to perform address recognition first + * in hardware. This doesn't affect software address recognition. The + * driver must sync with the chip after changing this value. + */ + command void setAddressRecognition(bool enableAddressRecognition, bool useHwAddressRecognition); + + + /** + * @return TRUE if address recognition is enabled + */ + async command bool isAddressRecognitionEnabled(); + + /** + * @return TRUE if address recognition is performed first in hardware. + */ + async command bool isHwAddressRecognitionDefault(); + + /** + * Sync must be called for acknowledgement changes to take effect + * @param enableAutoAck TRUE to enable auto acknowledgements + * @param hwAutoAck TRUE to default to hardware auto acks, FALSE to + * default to software auto acknowledgements + */ + command void setAutoAck(bool enableAutoAck, bool hwAutoAck); + + /** + * @return TRUE if hardware auto acks are the default, FALSE if software + * acks are the default + */ + async command bool isHwAutoAckDefault(); + + /** + * @return TRUE if auto acks are enabled + */ + async command bool isAutoAckEnabled(); + + + +} diff --git a/cc2520/interfaces/CC2520Fifo.nc b/cc2520/interfaces/CC2520Fifo.nc new file mode 100644 index 0000000000..11375f85d7 --- /dev/null +++ b/cc2520/interfaces/CC2520Fifo.nc @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * HAL abstraction for accessing the FIFO registers of a ChipCon + * CC2420 radio. + * + * @author Jonathan Hui + * @version $Revision: 1.2 $ $Date: 2008/06/03 04:43:03 $ + */ + +interface CC2520Fifo { + + /** + * Start reading from the FIFO. The readDone event will + * be signalled upon completion. + * + * @param data a pointer to the receive buffer. + * @param length number of bytes to read. + * @return status byte returned when sending the last address byte + * of the SPI transaction. + */ + async command cc2520_status_t beginRead( uint8_t* COUNT_NOK(length) data, uint8_t length ); + + /** + * Continue reading from the FIFO without having to send the address + * byte again. The readDone event will be signalled + * upon completion. + * + * @param data a pointer to the receive buffer. + * @param length number of bytes to read. + * @return SUCCESS always. + */ + async command error_t continueRead( uint8_t* COUNT_NOK(length) data, uint8_t length ); + + /** + * Signals the completion of a read operation. + * + * @param data a pointer to the receive buffer. + * @param length number of bytes read. + * @param error notification of how the operation went + */ + async event void readDone( uint8_t* COUNT_NOK(length) data, uint8_t length, error_t error ); + + /** + * Start writing the FIFO. The writeDone event will be + * signalled upon completion. + * + * @param data a pointer to the send buffer. + * @param length number of bytes to write. + * @return status byte returned when sending the last address byte + * of the SPI transaction. + */ + async command cc2520_status_t write( uint8_t* COUNT_NOK(length) data, uint8_t length ); + + /** + * Signals the completion of a write operation. + * + * @param data a pointer to the send buffer. + * @param length number of bytes written. + * @param error notification of how the operation went + */ + async event void writeDone( uint8_t* COUNT_NOK(length) data, uint8_t length, error_t error ); + +} diff --git a/cc2520/interfaces/CC2520Key.nc b/cc2520/interfaces/CC2520Key.nc new file mode 100644 index 0000000000..a5f48541de --- /dev/null +++ b/cc2520/interfaces/CC2520Key.nc @@ -0,0 +1,24 @@ + + +interface CC2520Key +{ + + /*Note that for all the security instructions, the key and counter should * reside in RAM in reversed byte order compare to the data. This can be done + * by reversing the byte order of the key/counter before it is written to the + * RAM,or the MEMCPR instructions can be used to reverse the byte order of + * keys/counter that are already in the RAM + */ + + command error_t setKey(uint8_t *key); + event void setKeyDone(uint8_t status); + + command error_t getKey(uint8_t *key); + event void getKeyDone(uint8_t status, uint8_t *ptr); + + /* + * Returns the pointer to the nonce + */ + command uint8_t *getTXNonce(); + + +} diff --git a/cc2520/interfaces/CC2520Packet.nc b/cc2520/interfaces/CC2520Packet.nc new file mode 100644 index 0000000000..33eb981994 --- /dev/null +++ b/cc2520/interfaces/CC2520Packet.nc @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * @author Jonathan Hui + * @author David Moss + * @author Chad Metcalf + */ + +#include "message.h" + +interface CC2520Packet { + + /** + * Get transmission power setting for current packet. + * + * @param the message + */ + async command uint8_t getPower( message_t* p_msg ); + + /** + * Set transmission power for a given packet. Valid ranges are + * between 0 and 31. + * + * @param p_msg the message. + * @param power transmission power. + */ + async command void setPower( message_t* p_msg, uint8_t power ); + + /** + * Get rssi value for a given packet. For received packets, it is + * the received signal strength when receiving that packet. For sent + * packets, it is the received signal strength of the ack if an ack + * was received. + */ + async command int8_t getRssi( message_t* p_msg ); + + /** + * Get lqi value for a given packet. For received packets, it is the + * link quality indicator value when receiving that packet. For sent + * packets, it is the link quality indicator value of the ack if an + * ack was received. + */ + async command uint8_t getLqi( message_t* p_msg ); + + async command uint8_t getNetwork( message_t* ONE p_msg ); + + async command void setNetwork( message_t* ONE p_msg, uint8_t networkId ); + +} diff --git a/cc2520/interfaces/CC2520PacketBody.nc b/cc2520/interfaces/CC2520PacketBody.nc new file mode 100644 index 0000000000..a6c8684522 --- /dev/null +++ b/cc2520/interfaces/CC2520PacketBody.nc @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * Internal interface for the CC2420 to get portions of a packet. + * @author David Moss + */ + +interface CC2520PacketBody { + + /** + * @return pointer to the cc2420_header_t of the given message + */ + async command cc2520_header_t * ONE getHeader(message_t * ONE msg); + + /** + * @return pointer to the payload region of the message, after any headers + * works with extended addressing mode + */ + async command uint8_t * getPayload( message_t* msg); + + /** + * @return pointer to the cc2420_metadata_t of the given message + */ + async command cc2520_metadata_t * ONE getMetadata(message_t * ONE msg); + +} + diff --git a/cc2520/interfaces/CC2520Power.nc b/cc2520/interfaces/CC2520Power.nc new file mode 100644 index 0000000000..6febfbcbb7 --- /dev/null +++ b/cc2520/interfaces/CC2520Power.nc @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * An HAL abstraction of the ChipCon CC2420 radio. This abstraction + * deals specifically with radio power operations (e.g. voltage + * regulator, oscillator, etc). However, it does not include + * transmission power, see the CC2420Config interface. + * + * @author Jonathan Hui + * @version $Revision: 1.1 $ $Date: 2007/07/04 00:37:14 $ + */ + +interface CC2520Power { + + /** + * Start the voltage regulator on the CC2420. On SUCCESS, + * startVReg() will be signalled when the voltage + * regulator is fully on. + * + * @return SUCCESS if the request was accepted, FAIL otherwise. + */ + async command error_t startVReg(); + + /** + * Signals that the voltage regulator has been started. + */ + async event void startVRegDone(); + + /** + * Stop the voltage regulator immediately. + * + * @return SUCCESS always + */ + async command error_t stopVReg(); + + /** + * Start the oscillator. On SUCCESS, startOscillator + * will be signalled when the oscillator has been started. + * + * @return SUCCESS if the request was accepted, FAIL otherwise. + */ + async command error_t startOscillator(); + + /** + * Signals that the oscillator has been started. + */ + async event void startOscillatorDone(); + + /** + * Stop the oscillator. + * + * @return SUCCESS if the oscillator was stopped, FAIL otherwise. + */ + async command error_t stopOscillator(); + + /** + * Enable RX. + * + * @return SUCCESS if receive mode has been enabled, FAIL otherwise. + */ + async command error_t rxOn(); + + /** + * Disable RX. + * + * @return SUCCESS if receive mode has been disabled, FAIL otherwise. + */ + async command error_t rfOff(); + +} diff --git a/cc2520/interfaces/CC2520Ram.nc b/cc2520/interfaces/CC2520Ram.nc new file mode 100644 index 0000000000..2c5225dfc3 --- /dev/null +++ b/cc2520/interfaces/CC2520Ram.nc @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * HAL abstraction for accessing theRAM of a ChipCon CC2420 radio. + * + * @author Jonathan Hui + * @version $Revision: 1.2 $ $Date: 2008/06/03 04:43:03 $ + */ + +#include "CC2520.h" + +interface CC2520Ram { + + /** + * Read data from a RAM. This operation is sychronous. + * + * @param offset within the field. + * @param data a pointer to the receive buffer. + * @param length number of bytes to read. + * @return status byte returned when sending the last byte + * of the SPI transaction. + */ + async command cc2520_status_t read( uint8_t offset, uint8_t* COUNT_NOK(length) data, uint8_t length ); + + /** + * Write data to RAM. This operation is sychronous. + * + * @param offset within the field. + * @param data a pointer to the send buffer. + * @param length number of bytes to write. + * @return status byte returned when sending the last address byte + * of the SPI transaction. + */ + async command cc2520_status_t write( uint8_t offset, uint8_t* COUNT_NOK(length) data, uint8_t length ); + +} diff --git a/cc2520/interfaces/CC2520Receive.nc b/cc2520/interfaces/CC2520Receive.nc new file mode 100644 index 0000000000..9ce2ee06e6 --- /dev/null +++ b/cc2520/interfaces/CC2520Receive.nc @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * Low-level abstraction of the receive path implementation for the + * ChipCon CC2420 radio. + * + * @author Jonathan Hui + * @version $Revision: 1.4 $ $Date: 2008/06/17 07:28:24 $ + */ + +#include "message.h" + +interface CC2520Receive { + + /** + * Notification that an SFD capture has occured. + * + * @param time at which the capture happened. + */ + async command void sfd( uint32_t time ); + + /** + * Notification that the packet has been dropped by the radio + * (e.g. due to address rejection). + */ + async command void sfd_dropped(); + + /** + * Signals that a message has been received. + * + * @param type of the message received. + * @param message pointer to message received. + */ + async event void receive( uint8_t type, message_t* ONE_NOK message ); + +} + diff --git a/cc2520/interfaces/CC2520Register.nc b/cc2520/interfaces/CC2520Register.nc new file mode 100644 index 0000000000..02ee2a8353 --- /dev/null +++ b/cc2520/interfaces/CC2520Register.nc @@ -0,0 +1,59 @@ +/* + * "Copyright (c) 2005 Stanford University. All rights reserved. + * + * Permission to use, copy, modify, and distribute this software and + * its documentation for any purpose, without fee, and without written + * agreement is hereby granted, provided that the above copyright + * notice, the following two paragraphs and the author appear in all + * copies of this software. + * + * IN NO EVENT SHALL STANFORD UNIVERSITY BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF STANFORD UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * STANFORD UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE + * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND STANFORD UNIVERSITY + * HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS." + * + */ + +/** + * Interface representing one of the Read/Write registers on the + * CC2420 radio. The return values (when appropriate) refer to the + * status byte returned on the CC2420 SO pin. A full list of RW + * registers can be found on page 61 of the CC2420 datasheet (rev + * 1.2). Page 25 of the same document describes the protocol for + * interacting with these registers over the CC2420 SPI bus. + * + * @author Philip Levis + * @version $Revision: 1.2 $ $Date: 2008/06/11 00:46:23 $ + */ + +#include "CC2520.h" + +interface CC2520Register { + + /** + * Read a 16-bit data word from the register. + * + * @param data pointer to place the register value. + * @return status byte from the read. + */ + async command cc2520_status_t read(uint16_t* data); + + /** + * Write a 16-bit data word to the register. + * + * @param data value to write to register. + * @return status byte from the write. + */ + async command cc2520_status_t write(uint16_t data); + + + +} diff --git a/cc2520/interfaces/CC2520Strobe.nc b/cc2520/interfaces/CC2520Strobe.nc new file mode 100644 index 0000000000..dd9f678e04 --- /dev/null +++ b/cc2520/interfaces/CC2520Strobe.nc @@ -0,0 +1,47 @@ +/* + * "Copyright (c) 2005 Stanford University. All rights reserved. + * + * Permission to use, copy, modify, and distribute this software and + * its documentation for any purpose, without fee, and without written + * agreement is hereby granted, provided that the above copyright + * notice, the following two paragraphs and the author appear in all + * copies of this software. + * + * IN NO EVENT SHALL STANFORD UNIVERSITY BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF STANFORD UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * STANFORD UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE + * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND STANFORD UNIVERSITY + * HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, + * ENHANCEMENTS, OR MODIFICATIONS." + * + */ + +/** + * Interface representing one of the CC2420 command strobe registers. + * Writing to one of these registers enacts a command on the CC2420, + * such as power-up, transmission, or clear a FIFO. + * + * @author Philip Levis + * @version $Revision: 1.2 $ $Date: 2008/06/11 00:46:23 $ + */ + +#include "CC2520.h" + +interface CC2520Strobe { + + /** + * Send a command strobe to the register. The return value is the + * CC2420 status register. Table 5 on page 27 of the CC2420 + * datasheet (v1.2) describes the contents of this register. + * + * @return Status byte from the CC2420. + */ + async command cc2520_status_t strobe(); + +} diff --git a/cc2520/interfaces/CC2520Transmit.nc b/cc2520/interfaces/CC2520Transmit.nc new file mode 100644 index 0000000000..1692b5b768 --- /dev/null +++ b/cc2520/interfaces/CC2520Transmit.nc @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * Low-level abstraction for the transmit path implementaiton of the + * ChipCon CC2420 radio. + * + * @author Jonathan Hui + * @version $Revision: 1.2 $ $Date: 2008/06/03 04:43:03 $ + */ + +#include "message.h" + +interface CC2520Transmit { + + /** + * Send a message + * + * @param p_msg message to send. + * @param useCca TRUE if this Tx should use clear channel assessments + * @return SUCCESS if the request was accepted, FAIL otherwise. + */ + async command error_t send( message_t* ONE p_msg, bool useCca ); + + /** + * Send the previous message again + * @param useCca TRUE if this re-Tx should use clear channel assessments + * @return SUCCESS if the request was accepted, FAIL otherwise. + */ + async command error_t resend(bool useCca); + + /** + * Cancel sending of the message. + * + * @return SUCCESS if the request was accepted, FAIL otherwise. + */ + async command error_t cancel(); + + /** + * Signal that a message has been sent + * + * @param p_msg message to send. + * @param error notifaction of how the operation went. + */ + async event void sendDone( message_t* ONE_NOK p_msg, error_t error ); + + /** + * Modify the contents of a packet. This command can only be used + * when an SFD capture event for the sending packet is signalled. + * + * @param offset in the message to start modifying. + * @param buf to data to write + * @param len of bytes to write + * @return SUCCESS if the request was accepted, FAIL otherwise. + */ + async command error_t modify( uint8_t offset, uint8_t* COUNT_NOK(len) buf, uint8_t len ); + +} + diff --git a/cc2520/interfaces/ChipSpiResource.nc b/cc2520/interfaces/ChipSpiResource.nc new file mode 100644 index 0000000000..385a0024d9 --- /dev/null +++ b/cc2520/interfaces/ChipSpiResource.nc @@ -0,0 +1,41 @@ + +/** + * Interface for the SPI resource for an entire chip. The chip accesses + * the platform SPI resource one time, but can have multiple clients + * using the SPI bus on top. When all of the clients are released, the + * chip will normally try to release itself from the platforms SPI bus. + * In some cases, this isn't desirable - so even though upper components + * aren't actively using the SPI bus, they can tell the chip to hold onto + * it so they can have immediate access when they need. + * + * Any component that aborts a release MUST attempt the release at a later + * time if they don't acquire and release the SPI bus naturally after the + * abort. + * + * @author David Moss + */ +interface ChipSpiResource { + + /** + * The SPI bus is about to be automatically released. Modules that aren't + * using the SPI bus but still want the SPI bus to stick around must call + * abortRelease() within the event. + */ + async event void releasing(); + + + /** + * Abort the release of the SPI bus. This must be called only with the + * releasing() event + */ + async command void abortRelease(); + + /** + * Release the SPI bus if there are no objections + * @return SUCCESS if the SPI bus is released from the chip. + * FAIL if the SPI bus is already in use. + * EBUSY if some component aborted the release. + */ + async command error_t attemptRelease(); + +} diff --git a/cc2520/interfaces/LowPowerListening.nc b/cc2520/interfaces/LowPowerListening.nc new file mode 100644 index 0000000000..c8649c85ed --- /dev/null +++ b/cc2520/interfaces/LowPowerListening.nc @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * Low Power Listening interface + * + * @author David Moss + * @author Jonathan Hui + */ + +interface LowPowerListening { + + /** + * Set this this node's radio sleep interval, in milliseconds. + * Once every interval, the node will sleep and perform an Rx check + * on the radio. Setting the sleep interval to 0 will keep the radio + * always on. + * + * This is the equivalent of setting the local duty cycle rate. + * + * @param sleepIntervalMs the length of this node's Rx check interval, in [ms] + */ + command void setLocalSleepInterval(uint16_t sleepIntervalMs); + + /** + * @return the local node's sleep interval, in [ms] + */ + command uint16_t getLocalSleepInterval(); + + /** + * Set this node's radio duty cycle rate, in units of [percentage*100]. + * For example, to get a 0.05% duty cycle, + * + * call LowPowerListening.setDutyCycle(5); // or equivalently... + * call LowPowerListening.setDutyCycle(00005); // for better readability? + * + * + * For a 100% duty cycle (always on), + * + * call LowPowerListening.setDutyCycle(10000); + * + * + * This is the equivalent of setting the local sleep interval explicitly. + * + * @param dutyCycle The duty cycle percentage, in units of [percentage*100] + */ + command void setLocalDutyCycle(uint16_t dutyCycle); + + /** + * @return this node's radio duty cycle rate, in units of [percentage*100] + */ + command uint16_t getLocalDutyCycle(); + + + /** + * Configure this outgoing message so it can be transmitted to a neighbor mote + * with the specified Rx sleep interval. + * @param msg Pointer to the message that will be sent + * @param sleepInterval The receiving node's sleep interval, in [ms] + */ + command void setRxSleepInterval(message_t *msg, uint16_t sleepIntervalMs); + + /** + * @return the destination node's sleep interval configured in this message + */ + command uint16_t getRxSleepInterval(message_t *msg); + + /** + * Configure this outgoing message so it can be transmitted to a neighbor mote + * with the specified Rx duty cycle rate. + * Duty cycle is in units of [percentage*100], i.e. 0.25% duty cycle = 25. + * + * @param msg Pointer to the message that will be sent + * @param dutyCycle The duty cycle of the receiving mote, in units of + * [percentage*100] + */ + command void setRxDutyCycle(message_t *msg, uint16_t dutyCycle); + + /** + * @return the destination node's duty cycle configured in this message + * in units of [percentage*100] + */ + command uint16_t getRxDutyCycle(message_t *msg); + + /** + * Convert a duty cycle, in units of [percentage*100], to + * the sleep interval of the mote in milliseconds + * @param dutyCycle The duty cycle in units of [percentage*100] + * @return The equivalent sleep interval, in units of [ms] + */ + command uint16_t dutyCycleToSleepInterval(uint16_t dutyCycle); + + /** + * Convert a sleep interval, in units of [ms], to a duty cycle + * in units of [percentage*100] + * @param sleepInterval The sleep interval in units of [ms] + * @return The duty cycle in units of [percentage*100] + */ + command uint16_t sleepIntervalToDutyCycle(uint16_t sleepInterval); + +} diff --git a/cc2520/interfaces/PacketTimeSyncOffset.nc b/cc2520/interfaces/PacketTimeSyncOffset.nc new file mode 100644 index 0000000000..d123cd87a6 --- /dev/null +++ b/cc2520/interfaces/PacketTimeSyncOffset.nc @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2007, Vanderbilt University + * All rights reserved. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose, without fee, and without written agreement is + * hereby granted, provided that the above copyright notice, the following + * two paragraphs and the author appear in all copies of this software. + * + * IN NO EVENT SHALL THE VANDERBILT UNIVERSITY BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE VANDERBILT + * UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * THE VANDERBILT UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE VANDERBILT UNIVERSITY HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Author: Miklos Maroti, Brano Kusy + * + * Interface for one hop time synchronization. Allows to modify timesync + * messages in the MAC layer with elapsed time of an event (ETA timesync + * primitive). Interface also provides a command to determine offset within + * a CC2420 packet, where the timesync ETA value is stored. word 'timestamping' + * used in describing commands does not refer to metadata.timestamp value, + * rather it refers to the timesync ETA timestamp which is part of data + * payload and is transmitted over the air. + */ + +interface PacketTimeSyncOffset +{ + /** + * @param 'message_t *ONE msg' message to examine. + * + * Returns TRUE if the current message should be timestamped. + */ + async command bool isSet(message_t* msg); + + /** + * @param 'message_t *ONE msg' message to examine. + * + * Returns the offset of where the timesync timestamp is sotred in a + * CC2420 packet + */ + async command uint8_t get(message_t* msg); + + /** + * @param 'message_t *ONE msg' message to modify. + * + * Sets the current message to be timestamped in the MAC layer. + */ + async command void set(message_t* msg); + + /** + * @param 'message_t *ONE msg' message to modify. + * + * Cancels any pending requests to timestamp the message in MAC. + */ + async command void cancel(message_t* msg); +} diff --git a/cc2520/interfaces/PowerCycle.nc b/cc2520/interfaces/PowerCycle.nc new file mode 100644 index 0000000000..aef2dab8ec --- /dev/null +++ b/cc2520/interfaces/PowerCycle.nc @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * Manage the CC2420's duty cycle and power management + * @author David Moss + */ + +interface PowerCycle { + + /** + * Set the sleep interval, in binary milliseconds + * @param sleepIntervalMs the sleep interval in [ms] + */ + command void setSleepInterval(uint16_t sleepIntervalMs); + + /** + * @return the sleep interval in [ms] + */ + command uint16_t getSleepInterval(); + + /** + * @deprecated Should be removed in the future when the PowerCycle + * component does packet-level detects and is in full control of radio + * power. + */ + event void detected(); + +} + diff --git a/cc2520/interfaces/RadioBackoff.nc b/cc2520/interfaces/RadioBackoff.nc new file mode 100644 index 0000000000..a9cb5ec867 --- /dev/null +++ b/cc2520/interfaces/RadioBackoff.nc @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * Interface to request and specify backoff periods for messages + * + * We use a call back method for setting the backoff as opposed to + * events that return backoff values. + * + * This is because of fan-out issues with multiple components wanting to + * affect backoffs for whatever they're interested in: + * If you signal out an *event* to request an initial backoff and + * several components happen to be listening, then those components + * would be required to return a backoff value. We don't want that + * behavior. + + * With this strategy, components can listen for the requests and then + * decide if they want to affect the behavior. If the component wants to + * affect the behavior, it calls back using the setXYZBackoff(..) command. + * If several components call back, then the last component to get its + * word in has the final say. + * + * @author David Moss + */ + +interface RadioBackoff { + + /** + * Must be called within a requestInitialBackoff event + * @param backoffTime the amount of time in some unspecified units to backoff + */ + async command void setInitialBackoff(uint16_t backoffTime); + + /** + * Must be called within a requestCongestionBackoff event + * @param backoffTime the amount of time in some unspecified units to backoff + */ + async command void setCongestionBackoff(uint16_t backoffTime); + + /** + * Enable CCA for the outbound packet. Must be called within a requestCca + * event + * @param ccaOn TRUE to enable CCA, which is the default. + */ + async command void setCca(bool ccaOn); + + + /** + * Request for input on the initial backoff + * Reply using setInitialBackoff(..) + * @param msg pointer to the message being sent + */ + async event void requestInitialBackoff(message_t * ONE msg); + + /** + * Request for input on the congestion backoff + * Reply using setCongestionBackoff(..) + * @param msg pointer to the message being sent + */ + async event void requestCongestionBackoff(message_t * ONE msg); + + /** + * Request for input on whether or not to use CCA on the outbound packet. + * Replies should come in the form of setCca(..) + * @param msg pointer to the message being sent + */ + async event void requestCca(message_t * ONE msg); +} + diff --git a/cc2520/interfaces/ReceiveIndicator.nc b/cc2520/interfaces/ReceiveIndicator.nc new file mode 100644 index 0000000000..db2807fc3e --- /dev/null +++ b/cc2520/interfaces/ReceiveIndicator.nc @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * Interface to obtain energy, byte, and packet receive check readings + * @author David Moss + */ + +interface ReceiveIndicator { + + /** + * @return TRUE if the indicator is showing we are actively receiving at this + * level + */ + command bool isReceiving(); + +} + diff --git a/cc2520/link/PacketLinkC.nc b/cc2520/link/PacketLinkC.nc new file mode 100644 index 0000000000..36431ebe58 --- /dev/null +++ b/cc2520/link/PacketLinkC.nc @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * Reliable Packet Link Functionality + * @author David Moss + * @author Jon Wyant + */ + +#warning "*** USING PACKET LINK LAYER" + +configuration PacketLinkC { + provides { + interface Send; + interface PacketLink; + } + + uses { + interface Send as SubSend; + } +} + +implementation { + + components PacketLinkP, + CC2520PacketC, + RandomC, + new StateC() as SendStateC, + new TimerMilliC() as DelayTimerC; + + PacketLink = PacketLinkP; + Send = PacketLinkP.Send; + SubSend = PacketLinkP.SubSend; + + PacketLinkP.SendState -> SendStateC; + PacketLinkP.DelayTimer -> DelayTimerC; + PacketLinkP.PacketAcknowledgements -> CC2520PacketC; + PacketLinkP.CC2520PacketBody -> CC2520PacketC; + +} diff --git a/cc2520/link/PacketLinkDummyC.nc b/cc2520/link/PacketLinkDummyC.nc new file mode 100644 index 0000000000..2ea159cef3 --- /dev/null +++ b/cc2520/link/PacketLinkDummyC.nc @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * Dummy configuration for PacketLink Layer + * @author David Moss + * @author Jon Wyant + */ + +configuration PacketLinkDummyC { + provides { + interface Send; + interface PacketLink; + } + + uses { + interface Send as SubSend; + } +} + +implementation { + components PacketLinkDummyP, + ActiveMessageC; + + PacketLink = PacketLinkDummyP; + Send = SubSend; + + PacketLinkDummyP.PacketAcknowledgements -> ActiveMessageC; + +} + diff --git a/cc2520/link/PacketLinkDummyP.nc b/cc2520/link/PacketLinkDummyP.nc new file mode 100644 index 0000000000..1688da6707 --- /dev/null +++ b/cc2520/link/PacketLinkDummyP.nc @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * Dummy module for Packet Link layer + * @author David Moss + * @author Jon Wyant + */ + +module PacketLinkDummyP { + provides { + interface PacketLink; + } + + uses { + interface PacketAcknowledgements; + } +} + +implementation { + + /***************** PacketLink Commands ***************/ + /** + * Set the maximum number of times attempt message delivery + * Default is 0 + * @param msg + * @param maxRetries the maximum number of attempts to deliver + * the message + */ + command void PacketLink.setRetries(message_t *msg, uint16_t maxRetries) { + } + + /** + * Set a delay between each retry attempt + * @param msg + * @param retryDelay the delay betweeen retry attempts, in milliseconds + */ + command void PacketLink.setRetryDelay(message_t *msg, uint16_t retryDelay) { + } + + /** + * @return the maximum number of retry attempts for this message + */ + command uint16_t PacketLink.getRetries(message_t *msg) { + return 0; + } + + /** + * @return the delay between retry attempts in ms for this message + */ + command uint16_t PacketLink.getRetryDelay(message_t *msg) { + return 0; + } + + /** + * @return TRUE if the message was delivered. + * This should always be TRUE if the message was sent to the + * AM_BROADCAST_ADDR + */ + command bool PacketLink.wasDelivered(message_t *msg) { + return call PacketAcknowledgements.wasAcked(msg); + } +} + diff --git a/cc2520/link/PacketLinkP.nc b/cc2520/link/PacketLinkP.nc new file mode 100644 index 0000000000..410bcf22e6 --- /dev/null +++ b/cc2520/link/PacketLinkP.nc @@ -0,0 +1,226 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * Reliable Packet Link Functionality + * @author David Moss + * @author Jon Wyant + */ + +#include "CC2520.h" + +module PacketLinkP { + provides { + interface Send; + interface PacketLink; + } + + uses { + interface Send as SubSend; + interface State as SendState; + interface PacketAcknowledgements; + interface Timer as DelayTimer; + interface CC2520PacketBody; + } +} + +implementation { + + /** The message currently being sent */ + message_t *currentSendMsg; + + /** Length of the current send message */ + uint8_t currentSendLen; + + /** The length of the current send message */ + uint16_t totalRetries; + + + /** + * Send States + */ + enum { + S_IDLE, + S_SENDING, + }; + + + /***************** Prototypes ***************/ + task void send(); + void signalDone(error_t error); + + /***************** PacketLink Commands ***************/ + /** + * Set the maximum number of times attempt message delivery + * Default is 0 + * @param msg + * @param maxRetries the maximum number of attempts to deliver + * the message + */ + command void PacketLink.setRetries(message_t *msg, uint16_t maxRetries) { + (call CC2520PacketBody.getMetadata(msg))->maxRetries = maxRetries; + } + + /** + * Set a delay between each retry attempt + * @param msg + * @param retryDelay the delay betweeen retry attempts, in milliseconds + */ + command void PacketLink.setRetryDelay(message_t *msg, uint16_t retryDelay) { + (call CC2520PacketBody.getMetadata(msg))->retryDelay = retryDelay; + } + + /** + * @return the maximum number of retry attempts for this message + */ + command uint16_t PacketLink.getRetries(message_t *msg) { + return (call CC2520PacketBody.getMetadata(msg))->maxRetries; + } + + /** + * @return the delay between retry attempts in ms for this message + */ + command uint16_t PacketLink.getRetryDelay(message_t *msg) { + return (call CC2520PacketBody.getMetadata(msg))->retryDelay; + } + + /** + * @return TRUE if the message was delivered. + */ + command bool PacketLink.wasDelivered(message_t *msg) { + return call PacketAcknowledgements.wasAcked(msg); + } + + /***************** Send Commands ***************/ + /** + * Each call to this send command gives the message a single + * DSN that does not change for every copy of the message + * sent out. For messages that are not acknowledged, such as + * a broadcast address message, the receiving end does not + * signal receive() more than once for that message. + */ + command error_t Send.send(message_t *msg, uint8_t len) { + error_t error; + if(call SendState.requestState(S_SENDING) == SUCCESS) { + + currentSendMsg = msg; + currentSendLen = len; + totalRetries = 0; + + if(call PacketLink.getRetries(msg) > 0) { + call PacketAcknowledgements.requestAck(msg); + } + + if((error = call SubSend.send(msg, len)) != SUCCESS) { + call SendState.toIdle(); + } + + return error; + } + return EBUSY; + } + + command error_t Send.cancel(message_t *msg) { + if(currentSendMsg == msg) { + call SendState.toIdle(); + return call SubSend.cancel(msg); + } + + return FAIL; + } + + + command uint8_t Send.maxPayloadLength() { + return call SubSend.maxPayloadLength(); + } + + command void *Send.getPayload(message_t* msg, uint8_t len) { + return call SubSend.getPayload(msg, len); + } + + + /***************** SubSend Events ***************/ + event void SubSend.sendDone(message_t* msg, error_t error) { + if(call SendState.getState() == S_SENDING) { + totalRetries++; + if(call PacketAcknowledgements.wasAcked(msg)) { + signalDone(SUCCESS); + return; + + } else if(totalRetries < call PacketLink.getRetries(currentSendMsg)) { + + if(call PacketLink.getRetryDelay(currentSendMsg) > 0) { + // Resend after some delay + call DelayTimer.startOneShot(call PacketLink.getRetryDelay(currentSendMsg)); + + } else { + // Resend immediately + post send(); + } + + return; + } + } + + signalDone(error); + } + + + /***************** Timer Events ****************/ + /** + * When this timer is running, that means we're sending repeating messages + * to a node that is receive check duty cycling. + */ + event void DelayTimer.fired() { + if(call SendState.getState() == S_SENDING) { + post send(); + } + } + + /***************** Tasks ***************/ + task void send() { + if(call PacketLink.getRetries(currentSendMsg) > 0) { + call PacketAcknowledgements.requestAck(currentSendMsg); + } + + if(call SubSend.send(currentSendMsg, currentSendLen) != SUCCESS) { + post send(); + } + } + + /***************** Functions ***************/ + void signalDone(error_t error) { + call DelayTimer.stop(); + call SendState.toIdle(); + signal Send.sendDone(currentSendMsg, error); + } +} + diff --git a/cc2520/link/readme.txt b/cc2520/link/readme.txt new file mode 100644 index 0000000000..6793e1d100 --- /dev/null +++ b/cc2520/link/readme.txt @@ -0,0 +1,6 @@ +PacketLink is used for link-layer retransmissions guided by your own +application requirements. It will fail if it receives false-acknowledgements, +which is completely possible in 802.15.4. + +See TEP 127 for more details. + diff --git a/cc2520/lowpan/CC2520TinyosNetworkC.nc b/cc2520/lowpan/CC2520TinyosNetworkC.nc new file mode 100644 index 0000000000..1621beeefa --- /dev/null +++ b/cc2520/lowpan/CC2520TinyosNetworkC.nc @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * Original TinyOS T-Frames use a packet header that is not compatible with + * other 6LowPAN networks. They do not include the network byte + * responsible for identifying the packing as being sourced from a TinyOS + * network. + * + * TinyOS I-Frames are interoperability packets that do include a network + * byte as defined by 6LowPAN specifications. The I-Frame header type is + * the default packet header used in TinyOS networks. + * + * Since either packet header is acceptable, this layer must do some + * preprocessing (sorry) to figure out whether or not it needs to include + * the functionality to process I-frames. If I-Frames are used, then + * the network byte is added on the way out and checked on the way in. + * If the packet came from a network different from a TinyOS network, the + * user may access it through the DispatchP's NonTinyosReceive[] Receive + * interface and process it in a different radio stack. + * + * If T-Frames are used instead, this layer is simply pass-through wiring to the + * layer beneath. + * + * Define "CC2420_IFRAME_TYPE" to use the interoperability frame and + * this layer + * + * @author David Moss + */ + +#include "CC2520.h" + +configuration CC2520TinyosNetworkC { + provides { + interface Send; + interface Resource[uint8_t clientId]; + interface Receive; + interface Packet as BarePacket; + interface Send as ActiveSend; + interface Receive as ActiveReceive; + } + + uses { + interface Receive as SubReceive; + interface Send as SubSend; + } +} + +implementation { + + + enum { + TINYOS_N_NETWORKS = uniqueCount(RADIO_SEND_RESOURCE), + }; + components MainC; + components CC2520TinyosNetworkP; + components CC2520PacketC; + components new FcfsResourceQueueC(TINYOS_N_NETWORKS); + CC2520TinyosNetworkP.BareSend = Send; + CC2520TinyosNetworkP.BareReceive = Receive; + CC2520TinyosNetworkP.SubSend = SubSend; + CC2520TinyosNetworkP.Resource = Resource; + CC2520TinyosNetworkP.SubReceive = SubReceive; + CC2520TinyosNetworkP.BarePacket=BarePacket; + CC2520TinyosNetworkP.ActiveSend = ActiveSend; + CC2520TinyosNetworkP.ActiveReceive = ActiveReceive; + + + CC2520TinyosNetworkP.CC2520Packet -> CC2520PacketC; + CC2520TinyosNetworkP.CC2520PacketBody -> CC2520PacketC; + CC2520TinyosNetworkP.Queue -> FcfsResourceQueueC; + MainC.SoftwareInit -> FcfsResourceQueueC; +} + diff --git a/cc2520/lowpan/CC2520TinyosNetworkP.nc b/cc2520/lowpan/CC2520TinyosNetworkP.nc new file mode 100644 index 0000000000..2d971677ab --- /dev/null +++ b/cc2520/lowpan/CC2520TinyosNetworkP.nc @@ -0,0 +1,259 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * Fills in the network ID byte for outgoing packets for compatibility with + * other 6LowPAN networks. Filters incoming packets that are not + * TinyOS network compatible. Provides the 6LowpanSnoop interface to + * sniff for packets that were not originated from TinyOS. + * + * @author David Moss + */ + +#include "CC2520.h" + +module CC2520TinyosNetworkP @safe() { + provides { + interface Send as BareSend; + interface Receive as BareReceive; + interface Packet as BarePacket; + interface Send as ActiveSend; + interface Receive as ActiveReceive; + interface Resource[uint8_t client]; + } + + uses { + interface Send as SubSend; + interface Receive as SubReceive; + interface CC2520Packet; + interface CC2520PacketBody; + interface ResourceQueue as Queue; + } +} + +implementation { + + enum { + CLIENT_AM, + CLIENT_BARE, + } m_busy_client; + + enum { + OWNER_NONE = 0xff, + TINYOS_N_NETWORKS = uniqueCount("RADIO_SEND_RESOURCE"), + } state; + + norace uint8_t resource_owner = OWNER_NONE, next_owner; + + command error_t ActiveSend.send(message_t* msg, uint8_t len) { + call CC2520Packet.setNetwork(msg, TINYOS_6LOWPAN_NETWORK_ID); + m_busy_client = CLIENT_AM; + return call SubSend.send(msg, len); + } + + command error_t ActiveSend.cancel(message_t* msg) { + return call SubSend.cancel(msg); + } + + command uint8_t ActiveSend.maxPayloadLength() { + return call SubSend.maxPayloadLength(); + } + + command void* ActiveSend.getPayload(message_t* msg, uint8_t len) { + if (len <= call ActiveSend.maxPayloadLength()) { + return msg->data; + } else { + return NULL; + } + } + + + /***************** Resource ****************/ + // SDH : 8-7-2009 : testing if there's more then one client allows + // the compiler to eliminate most of the logic when there's only one + // client. + task void grantTask() { + + + if (TINYOS_N_NETWORKS > 1) { + if (resource_owner == OWNER_NONE && !(call Queue.isEmpty())) { + resource_owner = call Queue.dequeue(); + + if (resource_owner != OWNER_NONE) { + signal Resource.granted[resource_owner](); + } + } + } else { + if (next_owner != resource_owner) { + resource_owner = next_owner; + signal Resource.granted[resource_owner](); + } + } + } + + async command error_t Resource.request[uint8_t id]() { + + post grantTask(); + + if (TINYOS_N_NETWORKS > 1) { + return call Queue.enqueue(id); + } else { + if (id == resource_owner) { + return EALREADY; + } else { + next_owner = id; + return SUCCESS; + } + } + } + + async command error_t Resource.immediateRequest[uint8_t id]() { + if (resource_owner == id) return EALREADY; + + if (TINYOS_N_NETWORKS > 1) { + if (resource_owner == OWNER_NONE && call Queue.isEmpty()) { + resource_owner = id; + return SUCCESS; + } + return FAIL; + } else { + resource_owner = id; + return SUCCESS; + } + } + async command error_t Resource.release[uint8_t id]() { + if (TINYOS_N_NETWORKS > 1) { + post grantTask(); + } + resource_owner = OWNER_NONE; + return SUCCESS; + } + async command bool Resource.isOwner[uint8_t id]() { + return (id == resource_owner); + } + + + /***************** BareSend Commands ****************/ + command error_t BareSend.send(message_t* msg, uint8_t len) { + call BarePacket.setPayloadLength(msg, len); + m_busy_client = CLIENT_BARE; + return call SubSend.send(msg, 0); + } + + command error_t BareSend.cancel(message_t* msg) { + return call SubSend.cancel(msg); + } + + command uint8_t BareSend.maxPayloadLength() { + return call SubSend.maxPayloadLength(); + } + + command void* BareSend.getPayload(message_t* msg, uint8_t len) { +#ifndef TFRAMES_ENABLED + cc2520_header_t *hdr = call CC2520PacketBody.getHeader(msg); + return hdr; +#else + // you really can't use BareSend with TFRAMES +#endif + } + + /***************** SubSend Events *****************/ + event void SubSend.sendDone(message_t* msg, error_t error) { + if (m_busy_client == CLIENT_AM) { + signal ActiveSend.sendDone(msg, error); + } else { + signal BareSend.sendDone(msg, error); + } + } + /***************** BarePacket Commands ****************/ + command void BarePacket.clear(message_t *msg) { + memset(msg, 0, sizeof(message_t)); + } + + command uint8_t BarePacket.payloadLength(message_t *msg) { + cc2520_header_t *hdr = call CC2520PacketBody.getHeader(msg); + return hdr->length + 1 - MAC_FOOTER_SIZE; + } + + command void BarePacket.setPayloadLength(message_t* msg, uint8_t len) { + cc2520_header_t *hdr = call CC2520PacketBody.getHeader(msg); + hdr->length = len - 1 + MAC_FOOTER_SIZE; + } + + command uint8_t BarePacket.maxPayloadLength() { + return TOSH_DATA_LENGTH + sizeof(cc2520_header_t); + } + + command void* BarePacket.getPayload(message_t* msg, uint8_t len) { + + } + /***************** SubReceive Events ***************/ + event message_t *SubReceive.receive(message_t *msg, void *payload, uint8_t len) { + + uint8_t network = call CC2520Packet.getNetwork(msg); + + if(!(call CC2520PacketBody.getMetadata(msg))->crc) { + return msg; + } +#ifndef TFRAMES_ENABLED + if (network == TINYOS_6LOWPAN_NETWORK_ID) { + return signal ActiveReceive.receive(msg, payload, len); + } else { + return signal BareReceive.receive(msg, + call BareSend.getPayload(msg, len), + len + sizeof(cc2520_header_t)); + } +#else + return signal ActiveReceive.receive(msg, payload, len); +#endif + + } + + + /***************** Defaults ****************/ + default event message_t *BareReceive.receive(message_t *msg, void *payload, uint8_t len) { + return msg; + } + default event void BareSend.sendDone(message_t *msg, error_t error) { + + } + default event message_t *ActiveReceive.receive(message_t *msg, void *payload, uint8_t len) { + return msg; + } + default event void ActiveSend.sendDone(message_t *msg, error_t error) { + + } + default event void Resource.granted[uint8_t client]() { + call Resource.release[client](); + } + + +} diff --git a/cc2520/lowpan/readme.txt b/cc2520/lowpan/readme.txt new file mode 100644 index 0000000000..708127785b --- /dev/null +++ b/cc2520/lowpan/readme.txt @@ -0,0 +1 @@ +See TEP 125 for more information. diff --git a/cc2520/lpl/DefaultLpl.h b/cc2520/lpl/DefaultLpl.h new file mode 100644 index 0000000000..f74db43b95 --- /dev/null +++ b/cc2520/lpl/DefaultLpl.h @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + + /** + * @author David Moss + * @author Tony O'Donovan + */ +#ifndef DEFAULTLPL_H +#define DEFAULTLPL_H + +/** + * Low Power Listening Send States + */ +typedef enum { + S_LPL_NOT_SENDING, // DEFAULT + S_LPL_FIRST_MESSAGE, // 1. Sending the first message + S_LPL_SENDING, // 2. Sending all other messages + S_LPL_CLEAN_UP, // 3. Clean up the transmission +} lpl_sendstate_t; + + +/** + * Amount of time, in milliseconds, to keep the radio on after + * a successful receive addressed to this node + */ +#ifndef DELAY_AFTER_RECEIVE +#define DELAY_AFTER_RECEIVE 100 +#endif + +/** + * This is a measured value of the time in ms the radio is actually on + * We round this up to err on the side of better performance ratios + * This includes the acknowledgement wait period and backoffs, + * which can typically be much longer than the transmission. + * + * Measured by Tony O'Donovan + */ +#ifndef DUTY_ON_TIME +#define DUTY_ON_TIME 11 +#endif + +/** + * The maximum number of CCA checks performed on each wakeup. + * If there are too few, the receiver may wake up between messages + * and not detect the transmitter. + * + * The on-time had to increase from the original version to allow multiple + * transmitters to co-exist. This is due to using ack's, which then requires us + * to extend the backoff period. In networks that transmit frequently, possibly + * with multiple transmitters, this power scheme makes sense. + * + * In networks that transmit very infrequently or without multiple transmitters, + * it makes more sense to go with no acks and no backoffs and make the + * receive check as short as possible. + */ +#ifndef MAX_LPL_CCA_CHECKS + +#if defined(PLATFORM_TELOSB) || defined(PLATFORM_TMOTE) +#define MAX_LPL_CCA_CHECKS 400 +#else +#define MAX_LPL_CCA_CHECKS 400 +#endif + +#endif + +/** + * The minimum number of samples that must be taken in CC2420DutyCycleP + * that show the channel is not clear before a detection event is issued + */ +#ifndef MIN_SAMPLES_BEFORE_DETECT +#define MIN_SAMPLES_BEFORE_DETECT 3 +#endif + +#endif + diff --git a/cc2520/lpl/DefaultLplC.nc b/cc2520/lpl/DefaultLplC.nc new file mode 100644 index 0000000000..0d63516464 --- /dev/null +++ b/cc2520/lpl/DefaultLplC.nc @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * Low Power Listening for the CC2420 + * @author David Moss + */ + + +#include "DefaultLpl.h" +#warning "*** USING DEFAULT LOW POWER COMMUNICATIONS ***" + +configuration DefaultLplC { + provides { + interface LowPowerListening; + interface Send; + interface Receive; + interface SplitControl; + interface State as SendState; + } + + uses { + interface Send as SubSend; + interface Receive as SubReceive; + interface SplitControl as SubControl; + } +} + +implementation { + components MainC, + DefaultLplP, + PowerCycleC, + CC2520ActiveMessageC, + CC2520CsmaC, + CC2520TransmitC, + CC2520PacketC, + RandomC, + new StateC() as SendStateC, + new TimerMilliC() as OffTimerC, + new TimerMilliC() as SendDoneTimerC, + LedsC; + + LowPowerListening = DefaultLplP; + Send = DefaultLplP; + Receive = DefaultLplP; + SplitControl = PowerCycleC; + SendState = SendStateC; + + SubControl = DefaultLplP.SubControl; + SubReceive = DefaultLplP.SubReceive; + SubSend = DefaultLplP.SubSend; + + + MainC.SoftwareInit -> DefaultLplP; + + + DefaultLplP.SplitControlState -> PowerCycleC.SplitControlState; + DefaultLplP.RadioPowerState -> PowerCycleC.RadioPowerState; + DefaultLplP.SendState -> SendStateC; + DefaultLplP.OffTimer -> OffTimerC; + DefaultLplP.SendDoneTimer -> SendDoneTimerC; + DefaultLplP.PowerCycle -> PowerCycleC; + DefaultLplP.Resend -> CC2520TransmitC; + DefaultLplP.PacketAcknowledgements -> CC2520ActiveMessageC; + DefaultLplP.AMPacket -> CC2520ActiveMessageC; + DefaultLplP.CC2520PacketBody -> CC2520PacketC; + DefaultLplP.RadioBackoff -> CC2520CsmaC; + DefaultLplP.Random -> RandomC; + DefaultLplP.Leds -> LedsC; + +} diff --git a/cc2520/lpl/DefaultLplP.nc b/cc2520/lpl/DefaultLplP.nc new file mode 100644 index 0000000000..857d728252 --- /dev/null +++ b/cc2520/lpl/DefaultLplP.nc @@ -0,0 +1,520 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * Low Power Listening for the CC2420. This component is responsible for + * delivery of an LPL packet, and for turning off the radio when the radio + * has run out of tasks. + * + * The PowerCycle component is responsible for duty cycling the radio + * and performing receive detections. + * + * @author David Moss + */ + +#include "DefaultLpl.h" +#include "AM.h" + +module DefaultLplP { + provides { + interface Init; + interface LowPowerListening; + interface Send; + interface Receive; + } + + uses { + interface Send as SubSend; + interface CC2520Transmit as Resend; + interface RadioBackoff; + interface Receive as SubReceive; + interface AMPacket; + interface SplitControl as SubControl; + interface PowerCycle; + interface CC2520PacketBody; + interface PacketAcknowledgements; + interface State as SendState; + interface State as RadioPowerState; + interface State as SplitControlState; + interface Timer as OffTimer; + interface Timer as SendDoneTimer; + interface Random; + interface Leds; + } +} + +implementation { + + /** The message currently being sent */ + norace message_t *currentSendMsg; + + /** The length of the current send message */ + uint8_t currentSendLen; + + /** TRUE if the radio is duty cycling and not always on */ + bool dutyCycling; + + /** + * Radio Power State + */ + enum { + S_OFF, // off by default + S_TURNING_ON, + S_ON, + S_TURNING_OFF, + }; + + /** + * Send States + */ + enum { + S_IDLE, + S_SENDING, + }; + + enum { + ONE_MESSAGE = 0, + }; + + /***************** Prototypes ***************/ + task void send(); + task void resend(); + task void startRadio(); + task void stopRadio(); + + void initializeSend(); + void startOffTimer(); + uint16_t getActualDutyCycle(uint16_t dutyCycle); + + /***************** Init Commands ***************/ + command error_t Init.init() { + dutyCycling = FALSE; + return SUCCESS; + } + + /***************** LowPowerListening Commands ***************/ + /** + * Set this this node's radio sleep interval, in milliseconds. + * Once every interval, the node will sleep and perform an Rx check + * on the radio. Setting the sleep interval to 0 will keep the radio + * always on. + * + * This is the equivalent of setting the local duty cycle rate. + * + * @param sleepIntervalMs the length of this node's Rx check interval, in [ms] + */ + command void LowPowerListening.setLocalSleepInterval( + uint16_t sleepIntervalMs) { + call PowerCycle.setSleepInterval(sleepIntervalMs); + } + + /** + * @return the local node's sleep interval, in [ms] + */ + command uint16_t LowPowerListening.getLocalSleepInterval() { + return call PowerCycle.getSleepInterval(); + } + + /** + * Set this node's radio duty cycle rate, in units of [percentage*100]. + * For example, to get a 0.05% duty cycle, + * + * call LowPowerListening.setDutyCycle(5); + * + * + * For a 100% duty cycle (always on), + * + * call LowPowerListening.setDutyCycle(10000); + * + * + * This is the equivalent of setting the local sleep interval explicitly. + * + * @param dutyCycle The duty cycle percentage, in units of [percentage*100] + */ + command void LowPowerListening.setLocalDutyCycle(uint16_t dutyCycle) { + call PowerCycle.setSleepInterval( + call LowPowerListening.dutyCycleToSleepInterval(dutyCycle)); + } + + /** + * @return this node's radio duty cycle rate, in units of [percentage*100] + */ + command uint16_t LowPowerListening.getLocalDutyCycle() { + return call LowPowerListening.sleepIntervalToDutyCycle( + call PowerCycle.getSleepInterval()); + } + + + /** + * Configure this outgoing message so it can be transmitted to a neighbor mote + * with the specified Rx sleep interval. + * @param msg Pointer to the message that will be sent + * @param sleepInterval The receiving node's sleep interval, in [ms] + */ + command void LowPowerListening.setRxSleepInterval(message_t *msg, + uint16_t sleepIntervalMs) { + (call CC2520PacketBody.getMetadata(msg))->rxInterval = sleepIntervalMs; + } + + /** + * @return the destination node's sleep interval configured in this message + */ + command uint16_t LowPowerListening.getRxSleepInterval(message_t *msg) { + return (call CC2520PacketBody.getMetadata(msg))->rxInterval; + } + + /** + * Configure this outgoing message so it can be transmitted to a neighbor mote + * with the specified Rx duty cycle rate. + * Duty cycle is in units of [percentage*100], i.e. 0.25% duty cycle = 25. + * + * @param msg Pointer to the message that will be sent + * @param dutyCycle The duty cycle of the receiving mote, in units of + * [percentage*100] + */ + command void LowPowerListening.setRxDutyCycle(message_t *msg, + uint16_t dutyCycle) { + (call CC2520PacketBody.getMetadata(msg))->rxInterval = + call LowPowerListening.dutyCycleToSleepInterval(dutyCycle); + } + + + /** + * @return the destination node's duty cycle configured in this message + * in units of [percentage*100] + */ + command uint16_t LowPowerListening.getRxDutyCycle(message_t *msg) { + return call LowPowerListening.sleepIntervalToDutyCycle( + (call CC2520PacketBody.getMetadata(msg))->rxInterval); + } + + /** + * Convert a duty cycle, in units of [percentage*100], to + * the sleep interval of the mote in milliseconds + * @param dutyCycle The duty cycle in units of [percentage*100] + * @return The equivalent sleep interval, in units of [ms] + */ + command uint16_t LowPowerListening.dutyCycleToSleepInterval( + uint16_t dutyCycle) { + dutyCycle = getActualDutyCycle(dutyCycle); + + if(dutyCycle == 10000) { + return 0; + } + + return (DUTY_ON_TIME * (10000 - dutyCycle)) / dutyCycle; + } + + /** + * Convert a sleep interval, in units of [ms], to a duty cycle + * in units of [percentage*100] + * @param sleepInterval The sleep interval in units of [ms] + * @return The duty cycle in units of [percentage*100] + */ + command uint16_t LowPowerListening.sleepIntervalToDutyCycle( + uint16_t sleepInterval) { + if(sleepInterval == 0) { + return 10000; + } + + return getActualDutyCycle((DUTY_ON_TIME * 10000) + / (sleepInterval + DUTY_ON_TIME)); + } + + + /***************** Send Commands ***************/ + /** + * Each call to this send command gives the message a single + * DSN that does not change for every copy of the message + * sent out. For messages that are not acknowledged, such as + * a broadcast address message, the receiving end does not + * signal receive() more than once for that message. + */ + command error_t Send.send(message_t *msg, uint8_t len) { + if(call SplitControlState.getState() == S_OFF) { + // Everything is off right now, start SplitControl and try again + return EOFF; + } + + if(call SendState.requestState(S_LPL_SENDING) == SUCCESS) { + currentSendMsg = msg; + currentSendLen = len; + + // In case our off timer is running... + call OffTimer.stop(); + call SendDoneTimer.stop(); + + if(call RadioPowerState.getState() == S_ON) { + initializeSend(); + return SUCCESS; + + } else { + post startRadio(); + } + + return SUCCESS; + } + + return EBUSY; + } + + command error_t Send.cancel(message_t *msg) { + if(currentSendMsg == msg) { + call SendState.toIdle(); + call SendDoneTimer.stop(); + startOffTimer(); + return call SubSend.cancel(msg); + } + + return FAIL; + } + + + command uint8_t Send.maxPayloadLength() { + return call SubSend.maxPayloadLength(); + } + + command void *Send.getPayload(message_t* msg, uint8_t len) { + return call SubSend.getPayload(msg, len); + } + + + /***************** RadioBackoff Events ****************/ + async event void RadioBackoff.requestInitialBackoff(message_t *msg) { + if((call CC2520PacketBody.getMetadata(msg))->rxInterval + > ONE_MESSAGE) { + call RadioBackoff.setInitialBackoff( call Random.rand16() + % (0x4 * CC2520_BACKOFF_PERIOD) + CC2520_MIN_BACKOFF); + } + } + + async event void RadioBackoff.requestCongestionBackoff(message_t *msg) { + if((call CC2520PacketBody.getMetadata(msg))->rxInterval + > ONE_MESSAGE) { + call RadioBackoff.setCongestionBackoff( call Random.rand16() + % (0x3 * CC2520_BACKOFF_PERIOD) + CC2520_MIN_BACKOFF); + } + } + + async event void RadioBackoff.requestCca(message_t *msg) { + } + + + /***************** DutyCycle Events ***************/ + /** + * A transmitter was detected. You must now take action to + * turn the radio off when the transaction is complete. + */ + event void PowerCycle.detected() { + // At this point, the duty cycling has been disabled temporary + // and it will be this component's job to turn the radio back off + // Wait long enough to see if we actually receive a packet, which is + // just a little longer in case there is more than one lpl transmitter on + // the channel. + + startOffTimer(); + } + + + /***************** SubControl Events ***************/ + event void SubControl.startDone(error_t error) { + if(!error) { + call RadioPowerState.forceState(S_ON); + + if(call SendState.getState() == S_LPL_FIRST_MESSAGE + || call SendState.getState() == S_LPL_SENDING) { + initializeSend(); + } + } + } + + event void SubControl.stopDone(error_t error) { + if(!error) { + + if(call SendState.getState() == S_LPL_FIRST_MESSAGE + || call SendState.getState() == S_LPL_SENDING) { + // We're in the middle of sending a message; start the radio back up + post startRadio(); + + } else { + call OffTimer.stop(); + call SendDoneTimer.stop(); + } + } + } + + /***************** SubSend Events ***************/ + event void SubSend.sendDone(message_t* msg, error_t error) { + + switch(call SendState.getState()) { + case S_LPL_SENDING: + if(call SendDoneTimer.isRunning()) { + if(!call PacketAcknowledgements.wasAcked(msg)) { + post resend(); + return; + } + } + break; + + case S_LPL_CLEAN_UP: + /** + * We include this state so upper layers can't send a different message + * before the last message gets done sending + */ + break; + + default: + break; + } + + call SendState.toIdle(); + call SendDoneTimer.stop(); + startOffTimer(); + signal Send.sendDone(msg, error); + } + + /***************** SubReceive Events ***************/ + /** + * If the received message is new, we signal the receive event and + * start the off timer. If the last message we received had the same + * DSN as this message, then the chances are pretty good + * that this message should be ignored, especially if the destination address + * as the broadcast address + */ + event message_t *SubReceive.receive(message_t* msg, void* payload, + uint8_t len) { + startOffTimer(); + return signal Receive.receive(msg, payload, len); + } + + /***************** Timer Events ****************/ + event void OffTimer.fired() { + /* + * Only stop the radio if the radio is supposed to be off permanently + * or if the duty cycle is on and our sleep interval is not 0 + */ + if(call SplitControlState.getState() == S_OFF + || (call PowerCycle.getSleepInterval() > 0 + && call SplitControlState.getState() != S_OFF + && call SendState.getState() == S_LPL_NOT_SENDING)) { + post stopRadio(); + } + } + + /** + * When this timer is running, that means we're sending repeating messages + * to a node that is receive check duty cycling. + */ + event void SendDoneTimer.fired() { + if(call SendState.getState() == S_LPL_SENDING) { + // The next time SubSend.sendDone is signaled, send is complete. + call SendState.forceState(S_LPL_CLEAN_UP); + } + } + + /***************** Resend Events ****************/ + /** + * Signal that a message has been sent + * + * @param p_msg message to send. + * @param error notifaction of how the operation went. + */ + async event void Resend.sendDone( message_t* p_msg, error_t error ) { + // This is actually caught by SubSend.sendDone + } + + + /***************** Tasks ***************/ + task void send() { + if(call SubSend.send(currentSendMsg, currentSendLen) != SUCCESS) { + post send(); + } + } + + task void resend() { + if(call Resend.resend(TRUE) != SUCCESS) { + post resend(); + } + } + + task void startRadio() { + if(call SubControl.start() != SUCCESS) { + post startRadio(); + } + } + + task void stopRadio() { + if(call SendState.getState() == S_LPL_NOT_SENDING) { + if(call SubControl.stop() != SUCCESS) { + post stopRadio(); + } + } + } + + /***************** Functions ***************/ + void initializeSend() { + if(call LowPowerListening.getRxSleepInterval(currentSendMsg) + > ONE_MESSAGE) { + + if(call AMPacket.destination(currentSendMsg) == AM_BROADCAST_ADDR) { + call PacketAcknowledgements.noAck(currentSendMsg); + } else { + // Send it repetitively within our transmit window + call PacketAcknowledgements.requestAck(currentSendMsg); + } + + call SendDoneTimer.startOneShot( + call LowPowerListening.getRxSleepInterval(currentSendMsg) + 20); + } + + post send(); + } + + + void startOffTimer() { + call OffTimer.startOneShot(DELAY_AFTER_RECEIVE); + } + + /** + * Check the bounds on a given duty cycle + * We're never over 100%, and we're never at 0% + */ + uint16_t getActualDutyCycle(uint16_t dutyCycle) { + if(dutyCycle > 10000) { + return 10000; + } else if(dutyCycle == 0) { + return 1; + } + + return dutyCycle; + } +} + diff --git a/cc2520/lpl/DummyLplC.nc b/cc2520/lpl/DummyLplC.nc new file mode 100644 index 0000000000..3d9683bd14 --- /dev/null +++ b/cc2520/lpl/DummyLplC.nc @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * Dummy low power listening interface used when LowPowerListening is not + * compiled in with the application. + * Sleep interval is always 0, and duty cycle is always 100% + * @author David Moss + */ + +#warning "*** LOW POWER COMMUNICATIONS DISABLED ***" + +configuration DummyLplC { + provides { + interface Send; + interface Receive; + interface LowPowerListening; + interface SplitControl; + interface State as SendState; + } + + uses { + interface Send as SubSend; + interface Receive as SubReceive; + interface SplitControl as SubControl; + } +} + +implementation { + components DummyLplP; + components new StateC(); + + Send = SubSend; + Receive = SubReceive; + SplitControl = SubControl; + LowPowerListening = DummyLplP; + SendState = StateC; + +} + diff --git a/cc2520/lpl/DummyLplP.nc b/cc2520/lpl/DummyLplP.nc new file mode 100644 index 0000000000..dbc6bb5393 --- /dev/null +++ b/cc2520/lpl/DummyLplP.nc @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * Dummy low power listening interface used when LowPowerListening is not + * compiled in with the application. + * Sleep interval is always 0, and duty cycle is always 100% + * @author David Moss + */ + +module DummyLplP { + provides { + interface LowPowerListening; + } +} + +implementation { + + command void LowPowerListening.setLocalSleepInterval(uint16_t sleepIntervalMs) { + } + + command uint16_t LowPowerListening.getLocalSleepInterval() { + return 0; + } + + command void LowPowerListening.setLocalDutyCycle(uint16_t dutyCycle) { + } + + command uint16_t LowPowerListening.getLocalDutyCycle() { + return 10000; + } + + command void LowPowerListening.setRxSleepInterval(message_t *msg, uint16_t sleepIntervalMs) { + } + + command uint16_t LowPowerListening.getRxSleepInterval(message_t *msg) { + return 0; + } + + command void LowPowerListening.setRxDutyCycle(message_t *msg, uint16_t dutyCycle) { + } + + command uint16_t LowPowerListening.getRxDutyCycle(message_t *msg) { + return 10000; + } + + command uint16_t LowPowerListening.dutyCycleToSleepInterval(uint16_t dutyCycle) { + return 0; + } + + command uint16_t LowPowerListening.sleepIntervalToDutyCycle(uint16_t sleepInterval) { + return 10000; + } + +} + diff --git a/cc2520/lpl/PowerCycleC.nc b/cc2520/lpl/PowerCycleC.nc new file mode 100644 index 0000000000..6c87dfb3cc --- /dev/null +++ b/cc2520/lpl/PowerCycleC.nc @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * Use this component to duty cycle the radio. When a message is heard, + * disable DutyCycling. + * + * @author David Moss dmm@rincon.com + */ + +configuration PowerCycleC { + provides { + interface PowerCycle; + interface SplitControl; + interface State as SplitControlState; + interface State as RadioPowerState; + } +} + +implementation { + components PowerCycleP, + CC2520TransmitC, + CC2520ReceiveC, + CC2520CsmaC, + LedsC, + new StateC() as RadioPowerStateC, + new StateC() as SplitControlStateC, + new TimerMilliC() as OnTimerC, + new TimerMilliC() as CheckTimerC; + +#if defined(LOW_POWER_LISTENING) || defined(ACK_LOW_POWER_LISTENING) + components DefaultLplC as LplC; +#else + components DummyLplC as LplC; +#endif + + PowerCycle = PowerCycleP; + SplitControl = PowerCycleP; + SplitControlState = SplitControlStateC; + RadioPowerState = RadioPowerStateC; + + PowerCycleP.EnergyIndicator -> CC2520TransmitC.EnergyIndicator; + PowerCycleP.ByteIndicator -> CC2520TransmitC.ByteIndicator; + PowerCycleP.PacketIndicator -> CC2520ReceiveC.PacketIndicator; + PowerCycleP.SubControl -> CC2520CsmaC; + PowerCycleP.SendState -> LplC; + PowerCycleP.RadioPowerState -> RadioPowerStateC; + PowerCycleP.SplitControlState -> SplitControlStateC; + PowerCycleP.OnTimer -> OnTimerC; + PowerCycleP.Leds -> LedsC; + +} + + diff --git a/cc2520/lpl/PowerCycleP.nc b/cc2520/lpl/PowerCycleP.nc new file mode 100644 index 0000000000..34099244f5 --- /dev/null +++ b/cc2520/lpl/PowerCycleP.nc @@ -0,0 +1,313 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * Module to duty cycle the radio on and off, performing CCA receive checks. + * When a carrier is sensed, this will leave the radio on. It is then up + * to higher layers to turn the radio off again. Once the radio is turned + * off, this module will automatically continue duty cycling and looking for + * a modulated signal. + * + * Suggested TODO's: + * > TransmitC and ReceiveC provide Energy, Byte, and Packet indicators. + * Tap into those to add more detection levels and granularity. Only let + * the radio turn off when we're not actively receiving bytes. Right now + * the packet indicator is a little backwards. + * > Let one component be in charge of maintaining State information about + * the power of the radio, probably lower in the stack. + * > Wire SplitControl, Send, and Receive through this component. Make it + * responsible for packet-level detections and being completely responsible + * for controlling the power of the radio without the use of upper layers + * > Remove unnecessary State components and Timers. + * + * @author David Moss + */ + +#include "DefaultLpl.h" + +module PowerCycleP { + provides { + interface PowerCycle; + interface SplitControl; + } + + uses { + interface Timer as OnTimer; + interface SplitControl as SubControl; + interface State as RadioPowerState; + interface State as SplitControlState; + interface State as SendState; + interface Leds; + interface ReceiveIndicator as EnergyIndicator; + interface ReceiveIndicator as ByteIndicator; + interface ReceiveIndicator as PacketIndicator; + } +} + +implementation { + + /** The current period of the duty cycle, equivalent of wakeup interval */ + uint16_t sleepInterval = 0; + + /** The number of times the CCA has been sampled in this wakeup period */ + uint16_t ccaChecks; + + /** + * Radio Power, Check State, and Duty Cycling State + */ + enum { + S_OFF, // off by default + S_TURNING_ON, + S_ON, + S_TURNING_OFF, + }; + + + /***************** Prototypes ****************/ + task void stopRadio(); + task void startRadio(); + task void getCca(); + + bool finishSplitControlRequests(); + bool isDutyCycling(); + + + /***************** PowerCycle Commands ****************/ + /** + * Set the sleep interval, in binary milliseconds + * @param sleepIntervalMs the sleep interval in [ms] + */ + command void PowerCycle.setSleepInterval(uint16_t sleepIntervalMs) { + if (!sleepInterval && sleepIntervalMs) { + // We were always on, now lets duty cycle + post stopRadio(); // Might want to delay turning off the radio + } + + sleepInterval = sleepIntervalMs; + + if(sleepInterval == 0 && call SplitControlState.isState(S_ON)) { + /* + * Leave the radio on permanently if sleepInterval == 0 and the radio is + * supposed to be enabled + */ + if(call RadioPowerState.getState() == S_OFF) { + call SubControl.start(); + } + } + } + + /** + * @return the sleep interval in [ms] + */ + command uint16_t PowerCycle.getSleepInterval() { + return sleepInterval; + } + + + /***************** SplitControl Commands ****************/ + command error_t SplitControl.start() { + if(call SplitControlState.isState(S_ON)) { + return EALREADY; + + } else if(call SplitControlState.isState(S_TURNING_ON)) { + return SUCCESS; + + } else if(!call SplitControlState.isState(S_OFF)) { + return EBUSY; + } + + // Radio was off, now has been told to turn on or duty cycle. + call SplitControlState.forceState(S_TURNING_ON); + + if(sleepInterval > 0) { + // Begin duty cycling + post stopRadio(); + return SUCCESS; + + } else { + post startRadio(); + return SUCCESS; + } + } + + command error_t SplitControl.stop() { + if(call SplitControlState.isState(S_OFF)) { + return EALREADY; + + } else if(call SplitControlState.isState(S_TURNING_OFF)) { + return SUCCESS; + + } else if(!call SplitControlState.isState(S_ON)) { + return EBUSY; + } + + call SplitControlState.forceState(S_TURNING_OFF); + post stopRadio(); + return SUCCESS; + } + + /***************** Timer Events ****************/ + event void OnTimer.fired() { + if(isDutyCycling()) { + if(call RadioPowerState.getState() == S_OFF) { + ccaChecks = 0; + + /* + * Turn on the radio only after the uC is fully awake. ATmega128's + * have this issue when running on an external crystal. + */ + post getCca(); + + } else { + // Someone else turned on the radio, try again in awhile + call OnTimer.startOneShot(sleepInterval); + } + } + } + + /***************** SubControl Events ****************/ + event void SubControl.startDone(error_t error) { + call RadioPowerState.forceState(S_ON); + //call Leds.led2On(); + + if(finishSplitControlRequests()) { + return; + + } else if(isDutyCycling()) { + post getCca(); + } + } + + event void SubControl.stopDone(error_t error) { + call RadioPowerState.forceState(S_OFF); + //call Leds.led2Off(); + + if(finishSplitControlRequests()) { + return; + + } else if(isDutyCycling()) { + call OnTimer.startOneShot(sleepInterval); + } + + } + + + /***************** Tasks ****************/ + task void stopRadio() { + error_t error = call SubControl.stop(); + if(error != SUCCESS) { + // Already stopped? + finishSplitControlRequests(); + call OnTimer.startOneShot(sleepInterval); + } + } + + task void startRadio() { + if(call SubControl.start() != SUCCESS) { + post startRadio(); + } + } + + task void getCca() { + uint8_t detects = 0; + if(isDutyCycling()) { + + ccaChecks++; + if(ccaChecks == 1) { + // Microcontroller is ready, turn on the radio and sample a few times + post startRadio(); + return; + } + + atomic { + for( ; ccaChecks < MAX_LPL_CCA_CHECKS && call SendState.isIdle(); ccaChecks++) { + if(call PacketIndicator.isReceiving()) { + signal PowerCycle.detected(); + return; + } + + if(call EnergyIndicator.isReceiving()) { + detects++; + if(detects > MIN_SAMPLES_BEFORE_DETECT) { + signal PowerCycle.detected(); + return; + } + // Leave the radio on for upper layers to perform some transaction + } + } + } + + if(call SendState.isIdle()) { + post stopRadio(); + } + } + } + + /** + * @return TRUE if the radio should be actively duty cycling + */ + bool isDutyCycling() { + return sleepInterval > 0 && call SplitControlState.isState(S_ON); + } + + + /** + * @return TRUE if we successfully handled a SplitControl request + */ + bool finishSplitControlRequests() { + if(call SplitControlState.isState(S_TURNING_OFF)) { + call SplitControlState.forceState(S_OFF); + signal SplitControl.stopDone(SUCCESS); + return TRUE; + + } else if(call SplitControlState.isState(S_TURNING_ON)) { + // Starting while we're duty cycling first turns off the radio + call SplitControlState.forceState(S_ON); + signal SplitControl.startDone(SUCCESS); + return TRUE; + } + + return FALSE; + } + + /**************** Defaults ****************/ + default event void PowerCycle.detected() { + } + + + default event void SplitControl.startDone(error_t error) { + } + + default event void SplitControl.stopDone(error_t error) { + } +} + + diff --git a/cc2520/lpl/readme.txt b/cc2520/lpl/readme.txt new file mode 100644 index 0000000000..4fe5dc6567 --- /dev/null +++ b/cc2520/lpl/readme.txt @@ -0,0 +1,98 @@ + +ARCHITECTURE +======================================================= +The default LPL implementation uses a packet train with acknowledgements +enabled, shortened backoffs, and a spinning energy checking loop. + +The default strategy can be improved by implementing a different architecture. +Right now the architecture looks like this: + + + +----------------------------------+ + | DefaultLplP | -> To lower level Send + | Responsible for retransmissions | -> To lower level SplitControl + | and turning the radio off when | <- From lower level Receive + | done, or on when starting to | + | transmit | + +----------------------------------+ + | PowerCycleP | + | Responsible for performing | -> To lower level SplitControl + | receive checks and leaving the | + | radio on | + +----------------------------------+ + +I think the architecture should be changed. If you're interested in doing work +in this area, there's lots of development and research to be done. + +First, take a look at tinyos-2.x-contrib/wustl/upma. The architecture of the +CC2420 stack there is implemented to define a low-level abstraction layer +which separates radio-specific functionality from radio-independent +functionality. This is nice. By providing certain interfaces from the +radio-dependant functionality, it makes it easier to maintain MAC layer +stuff independent of the radio. And that includes LPL. + +One of the things that radio stack uses is an Alarm instead of a spinning +task/while loop. Whereas the implementation here uses a static number of +loops to detect if energy is on the channel, we would be better able +to achieve the smallest radio asynchronous receive check on-time by using an +alarm. After all, the radio only has to be on to span the quiet gaps in a +transmitter's transmission, and we know approximately the duration of those +quiet gaps based on the backoff period, which the stack defines. + +I recommend we redo some of the LPL architecture to look more like this: + + +----------------------------------+ + | DefaultLplP | + | Responsible for retransmissions | + +----------------------------------+ + | | | (Send, Receive, SplitControl goes through PowerCycle) + +----------------------------------+ + | PowerCycleP | + | Responsible for managing radio | -> To lower level Send + | on/off power, and telling | -> To lower level SplitControl + | PacketDetectP when to start/stop | <- From lower level Receive + | its job | + +----------------------------------+ + | PacketDetectP | + | Responsible for detecting | <- EnergyIndicator + | energy, bytes, and/or packets. | <- ByteIndicator + | Notify PowerCycle when packets | <- PacketIndicator + | are detected | + +----------------------------------+ + +This is pretty radio independent. + +OTHER LOW POWER LISTENING STRATEGIES +============================================================= +Other low power listening layers can be implemented as well: + * Continuous modulation / No Acknowledgements: + > Allows the receiver to achieve the lowest possible receive check + on time. It's shown to be several times more efficient on the receive + check than the default. This is a radio-dependent LPL strategy + and the CC2420 can acheive it by putting some transmit register into + test mode where it continually retransmits the contents of the TXFIFO. + The CRC of the packet must be uploaded into the TXFIFO because it won't + be calculated by the CC2420. Not sure if the preamble and sync bytes + need to be uploaded as well. The transmitter takes a hit because it + cannot receive acks in the middle of its packet train. But since + the receiver's energy consumption is so low, it's possible to increase + the number of receive checks in order to lower the duration of the + transmission. + > This strategy would be a good match for networks that must get data + through quickly when there is data, but doesn't see too many + transmissions in any given geographical area of the network. Also + a good strategy where your transmitters have more power. + + * 802.15.4/ZigBee End Node: + > Queue up packets to Send to a particular destination until that node + checks in at some random time. Use fields in the ack frame to let the + node know that packets are available. Good match for networks where one + node has access to line power and other nodes are on batteries. + + * Low throughput acknowledgement LPL: + > Just like the default, only it uses the ByteIndicator to turn off + the radio as soon as it stops receiving bytes and no packet was + received. Able to get a much shorter receive check at the expense + of decreased probability that you'll receive messages in a congested + network. + diff --git a/cc2520/packet/CC2520PacketC.nc b/cc2520/packet/CC2520PacketC.nc new file mode 100644 index 0000000000..9ba0347dc7 --- /dev/null +++ b/cc2520/packet/CC2520PacketC.nc @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * @author Jonathan Hui + * @author David Moss + * @author Chad Metcalf + */ + +configuration CC2520PacketC { + + provides { + interface CC2520Packet; + interface PacketAcknowledgements as Acks; + interface CC2520PacketBody; + interface LinkPacketMetadata; + + interface PacketTimeStamp as PacketTimeStamp32khz; + interface PacketTimeStamp as PacketTimeStampMilli; + interface PacketTimeSyncOffset; + } + +} + +implementation { + components CC2520PacketP; + CC2520Packet = CC2520PacketP; + Acks = CC2520PacketP; + CC2520PacketBody = CC2520PacketP; + LinkPacketMetadata = CC2520PacketP; + PacketTimeStamp32khz = CC2520PacketP; + PacketTimeStampMilli = CC2520PacketP; + PacketTimeSyncOffset = CC2520PacketP; + + + + components Counter32khz32C, new CounterToLocalTimeC(T32khz); + CounterToLocalTimeC.Counter -> Counter32khz32C; + CC2520PacketP.LocalTime32khz -> CounterToLocalTimeC; + + //DummyTimer is introduced to compile apps that use no timers + components HilTimerMilliC, new TimerMilliC() as DummyTimer; + CC2520PacketP.LocalTimeMilli -> HilTimerMilliC; +} diff --git a/cc2520/packet/CC2520PacketP.nc b/cc2520/packet/CC2520PacketP.nc new file mode 100644 index 0000000000..dc1a21a4ed --- /dev/null +++ b/cc2520/packet/CC2520PacketP.nc @@ -0,0 +1,254 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * @author Jonathan Hui + * @author David Moss + * @author Chad Metcalf + */ + +#include "IEEE802154.h" +#include "message.h" +#include "CC2520.h" +#include "CC2520TimeSyncMessage.h" + +module CC2520PacketP @safe() { + + provides { + interface CC2520Packet; + interface PacketAcknowledgements as Acks; + interface CC2520PacketBody; + interface LinkPacketMetadata; + + interface PacketTimeStamp as PacketTimeStamp32khz; + interface PacketTimeStamp as PacketTimeStampMilli; + interface PacketTimeSyncOffset; + } + + uses interface LocalTime as LocalTime32khz; + uses interface LocalTime as LocalTimeMilli; +} + +implementation { + + + + + + /***************** PacketAcknowledgement Commands ****************/ + async command error_t Acks.requestAck( message_t* p_msg ) { + (call CC2520PacketBody.getHeader( p_msg ))->fcf |= 1 << IEEE154_FCF_ACK_REQ; + return SUCCESS; + } + + async command error_t Acks.noAck( message_t* p_msg ) { + (call CC2520PacketBody.getHeader( p_msg ))->fcf &= ~(1 << IEEE154_FCF_ACK_REQ); + return SUCCESS; + } + + async command bool Acks.wasAcked( message_t* p_msg ) { + return (call CC2520PacketBody.getMetadata( p_msg ))->ack; + } + + /***************** CC2420Packet Commands ****************/ + + int getAddressLength(int type) { + switch (type) { + case IEEE154_ADDR_SHORT: return 2; + case IEEE154_ADDR_EXT: return 8; + case IEEE154_ADDR_NONE: return 0; + default: return -100; + } + } + + uint8_t * ONE getNetwork(message_t * ONE msg) { + cc2520_header_t *hdr = (call CC2520PacketBody.getHeader( msg )); + int offset; + + offset = getAddressLength((hdr->fcf >> IEEE154_FCF_DEST_ADDR_MODE) & 0x3) + + getAddressLength((hdr->fcf >> IEEE154_FCF_SRC_ADDR_MODE) & 0x3) + + offsetof(cc2520_header_t, dest); + + return ((uint8_t *)hdr) + offset; + } + + async command void CC2520Packet.setPower( message_t* p_msg, uint8_t power ) { + if ( power > 31 ) + power = 31; + (call CC2520PacketBody.getMetadata( p_msg ))->tx_power = power; + } + + async command uint8_t CC2520Packet.getPower( message_t* p_msg ) { + return (call CC2520PacketBody.getMetadata( p_msg ))->tx_power; + } + + async command int8_t CC2520Packet.getRssi( message_t* p_msg ) { + return (call CC2520PacketBody.getMetadata( p_msg ))->rssi; + } + + async command uint8_t CC2520Packet.getLqi( message_t* p_msg ) { + return (call CC2520PacketBody.getMetadata( p_msg ))->lqi; + } + + async command uint8_t CC2520Packet.getNetwork( message_t* ONE p_msg ) { +#if defined(TFRAMES_ENABLED) + return TINYOS_6LOWPAN_NETWORK_ID; +#else + atomic + return *(getNetwork(p_msg)); +#endif + } + + async command void CC2520Packet.setNetwork( message_t* ONE p_msg , uint8_t networkId ) { +#if ! defined(TFRAMES_ENABLED) + atomic + *(getNetwork(p_msg)) = networkId; +#endif + } + + /***************** CC2420PacketBody Commands ****************/ + async command cc2520_header_t * ONE CC2520PacketBody.getHeader( message_t* ONE msg ) { + return TCAST(cc2520_header_t* ONE, (uint8_t *)msg + offsetof(message_t, data) - sizeof( cc2520_header_t )); + } + + async command uint8_t * CC2520PacketBody.getPayload( message_t* msg) { + cc2520_header_t *hdr = (call CC2520PacketBody.getHeader( msg )); + int offset; + + offset = getAddressLength((hdr->fcf >> IEEE154_FCF_DEST_ADDR_MODE) & 0x3) + + getAddressLength((hdr->fcf >> IEEE154_FCF_SRC_ADDR_MODE) & 0x3) + + offsetof(cc2520_header_t, dest); +#ifdef CC2520_HW_SECURITY + offset += 5; +#endif +#ifdef CC2520_IFRAME_TYPE + offset += 1; +#endif + return ((uint8_t *)hdr) + offset; + } + + + async command cc2520_metadata_t *CC2520PacketBody.getMetadata( message_t* msg ) { + + return (cc2520_metadata_t*)msg->metadata; + } + + async command bool LinkPacketMetadata.highChannelQuality(message_t* msg) { + return call CC2520Packet.getLqi(msg) > 105; + } + + /***************** PacketTimeStamp32khz Commands ****************/ + async command bool PacketTimeStamp32khz.isValid(message_t* msg) + { + + //call CC2520PacketBody.getMetadata( msg )->timestamp = 0; + return ((call CC2520PacketBody.getMetadata( msg ))->timestamp != CC2520_INVALID_TIMESTAMP); + } + + async command uint32_t PacketTimeStamp32khz.timestamp(message_t* msg) + { + + return (call CC2520PacketBody.getMetadata( msg ))->timestamp; + } + + async command void PacketTimeStamp32khz.clear(message_t* msg) + { + (call CC2520PacketBody.getMetadata( msg ))->timesync = FALSE; + (call CC2520PacketBody.getMetadata( msg ))->timestamp = CC2520_INVALID_TIMESTAMP; + + } + + async command void PacketTimeStamp32khz.set(message_t* msg, uint32_t value) + { + (call CC2520PacketBody.getMetadata( msg ))->timestamp = value; + + } + + /***************** PacketTimeStampMilli Commands ****************/ + // over the air value is always T32khz, which is used to capture SFD interrupt + // (Timer1 on micaZ, B1 on telos) + async command bool PacketTimeStampMilli.isValid(message_t* msg) + { + return call PacketTimeStamp32khz.isValid(msg); + } + + async command uint32_t PacketTimeStampMilli.timestamp(message_t* msg) + { + int32_t offset = call PacketTimeStamp32khz.timestamp(msg) - call LocalTime32khz.get(); + + return (offset >> 5) + call LocalTimeMilli.get(); + } + + async command void PacketTimeStampMilli.clear(message_t* msg) + { + call PacketTimeStamp32khz.clear(msg); + } + + async command void PacketTimeStampMilli.set(message_t* msg, uint32_t value) + { + int32_t offset = (value - call LocalTimeMilli.get()) << 5; + + + call PacketTimeStamp32khz.set(msg, offset + call LocalTime32khz.get()); + + } + /*----------------- PacketTimeSyncOffset -----------------*/ + async command bool PacketTimeSyncOffset.isSet(message_t* msg) + { + + return ((call CC2520PacketBody.getMetadata( msg ))->timesync); + } + + //returns offset of timestamp from the beginning of cc2420 header which is + // sizeof(cc2420_header_t)+datalen-sizeof(timesync_radio_t) + //uses packet length of the message which is + // MAC_HEADER_SIZE+MAC_FOOTER_SIZE+datalen + async command uint8_t PacketTimeSyncOffset.get(message_t* msg) + { + + return (call CC2520PacketBody.getHeader(msg))->length + + (sizeof(cc2520_header_t) - MAC_HEADER_SIZE) + - MAC_FOOTER_SIZE + - sizeof(timesync_radio_t); + } + + async command void PacketTimeSyncOffset.set(message_t* msg) + { + (call CC2520PacketBody.getMetadata( msg ))->timesync = TRUE; + + } + + async command void PacketTimeSyncOffset.cancel(message_t* msg) + { + (call CC2520PacketBody.getMetadata( msg ))->timesync = FALSE; + + } +} diff --git a/cc2520/receive/CC2520ReceiveC.nc b/cc2520/receive/CC2520ReceiveC.nc new file mode 100644 index 0000000000..46ab8b4717 --- /dev/null +++ b/cc2520/receive/CC2520ReceiveC.nc @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * Implementation of the receive path for the ChipCon CC2420 radio. + * + * @author Jonathan Hui + * @version $Revision: 1.3 $ $Date: 2008/06/17 07:28:24 $ + */ + +configuration CC2520ReceiveC { + + provides interface StdControl; + provides interface CC2520Receive; + provides interface Receive; + provides interface ReceiveIndicator as PacketIndicator; + + uses interface CC2520Transmit as Send; +} + +implementation { + components MainC; + components CC2520ReceiveP; + components CC2520PacketC; + components new CC2520SpiC() as Spi; + components CC2520ControlC; + + components HplCC2520PinsC as Pins; + components HplCC2520InterruptsC as InterruptsC; + + components LedsC as Leds; + CC2520ReceiveP.Leds -> Leds; + + StdControl = CC2520ReceiveP; + CC2520Receive = CC2520ReceiveP; + Send = CC2520ReceiveP; + Receive = CC2520ReceiveP; + PacketIndicator = CC2520ReceiveP.PacketIndicator; + + MainC.SoftwareInit -> CC2520ReceiveP; + + CC2520ReceiveP.CSN -> Pins.CSN; + CC2520ReceiveP.FIFO -> Pins.FIFO; + CC2520ReceiveP.FIFOP -> Pins.FIFOP; + CC2520ReceiveP.InterruptFIFOP -> InterruptsC.InterruptFIFOP; + CC2520ReceiveP.SpiResource -> Spi; + CC2520ReceiveP.RXFIFO -> Spi.RXFIFO; + CC2520ReceiveP.SFLUSHRX -> Spi.SFLUSHRX; + CC2520ReceiveP.SACK -> Spi.SACK; + CC2520ReceiveP.SACKPEND -> Spi.SACKPEND; + CC2520ReceiveP.CC2520Packet -> CC2520PacketC; + CC2520ReceiveP.CC2520PacketBody -> CC2520PacketC; + CC2520ReceiveP.PacketTimeStamp -> CC2520PacketC; + CC2520ReceiveP.CC2520Config -> CC2520ControlC; + + #ifdef CC2520_HW_SECURITY + CC2520ReceiveP.RXFRAME -> Spi.RXFRAME; + CC2520ReceiveP.RXNonce -> Spi.RXNONCE; + CC2520ReceiveP.SNOP -> Spi.SNOP; + + components new HplCC2520SpiC(); + CC2520ReceiveP.SpiByte -> HplCC2520SpiC; + + components CC2520ActiveMessageC; + CC2520ReceiveP.AMPacket -> CC2520ActiveMessageC; + #endif + +} diff --git a/cc2520/receive/CC2520ReceiveP.nc b/cc2520/receive/CC2520ReceiveP.nc new file mode 100644 index 0000000000..2f9f824a1b --- /dev/null +++ b/cc2520/receive/CC2520ReceiveP.nc @@ -0,0 +1,655 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * @author Jonathan Hui + * @author David Moss + * @author Jung Il Choi + * @version $Revision: 1.16 $ $Date: 2008/07/25 16:27:52 $ + */ + +#include "IEEE802154.h" +#include "message.h" +#include "AM.h" + +#ifndef FLAG_FIELD +#define FLAG_FIELD FLAG_ENC //M = 4 L = 2 +#endif + +#ifndef SECURITY_CONTROL +#define SECURITY_CONTROL SEC_ENC //MIC-64 +#endif + +module CC2520ReceiveP @safe() { + + provides interface Init; + provides interface StdControl; + provides interface CC2520Receive; + provides interface Receive; + provides interface ReceiveIndicator as PacketIndicator; + + uses interface GeneralIO as CSN; + uses interface GeneralIO as FIFO; + uses interface GeneralIO as FIFOP; + uses interface GpioInterrupt as InterruptFIFOP; + + uses interface Resource as SpiResource; + uses interface CC2520Fifo as RXFIFO; + uses interface CC2520Strobe as SACK; + uses interface CC2520Strobe as SACKPEND; + uses interface CC2520Strobe as SFLUSHRX; + uses interface CC2520Transmit as Send; + uses interface CC2520Packet; + uses interface CC2520PacketBody; + uses interface CC2520Config; + uses interface PacketTimeStamp; + #ifdef CC2520_HW_SECURITY + uses interface CC2520Ram as RXFRAME; + uses interface CC2520Ram as RXNonce; + uses interface CC2520Strobe as SNOP; + uses interface SpiByte; + uses interface AMPacket; + #endif + + + uses interface Leds; +} + +implementation { + + typedef enum { + S_STOPPED, + S_STARTED, + S_RX_LENGTH, + S_RX_FCF, + S_RX_PAYLOAD, + } cc2520_receive_state_t; + + enum { + RXFIFO_SIZE = 128, + TIMESTAMP_QUEUE_SIZE = 8, + SACK_HEADER_LENGTH = 7, + //SACK_HEADER_LENGTH = 2, + }; + + uint32_t m_timestamp_queue[ TIMESTAMP_QUEUE_SIZE ]; + + uint8_t m_timestamp_head; + + uint8_t m_timestamp_size; + + /** Number of packets we missed because we were doing something else */ + uint8_t m_missed_packets; + + /** TRUE if we are receiving a valid packet into the stack */ + bool receivingPacket; + + /** The length of the frame we're currently receiving */ + norace uint8_t rxFrameLength; + + norace uint8_t m_bytes_left; + + norace message_t* ONE_NOK m_p_rx_buf; + + message_t m_rx_buf; + message_t ack_buf; + + #ifdef CC2520_HW_SECURITY + static uint8_t nonceRx[16]; + #endif + + cc2520_receive_state_t m_state; + + /***************** Prototypes ****************/ + void reset_state(); + void beginReceive(); + void receive(); + void waitForNextPacket(); + void flush(); + #ifdef CC2520_HW_SECURITY + error_t acquireSpiResource(void); + void decryptPacket(void); + uint8_t getMICLength(uint8_t securityLevel); + void initNonce(void); + #endif + bool passesAddressCheck(message_t * ONE msg); + + task void receiveDone_task(); + + /***************** Init Commands ****************/ + command error_t Init.init() { + m_p_rx_buf = &m_rx_buf; + return SUCCESS; + } + + /***************** StdControl ****************/ + command error_t StdControl.start() { + atomic { + reset_state(); + m_state = S_STARTED; + atomic receivingPacket = FALSE; + call InterruptFIFOP.enableFallingEdge(); + + } + return SUCCESS; + } + + command error_t StdControl.stop() { + atomic { + m_state = S_STOPPED; + reset_state(); + call CSN.set(); + call InterruptFIFOP.disable(); + } + return SUCCESS; + } + + /***************** CC2420Receive Commands ****************/ + /** + * Start frame delimiter signifies the beginning/end of a packet + * See the CC2420 datasheet for details. + */ + async command void CC2520Receive.sfd( uint32_t time ) { + if ( m_timestamp_size < TIMESTAMP_QUEUE_SIZE ) { + uint8_t tail = ( ( m_timestamp_head + m_timestamp_size ) % + TIMESTAMP_QUEUE_SIZE ); + m_timestamp_queue[ tail ] = time; + m_timestamp_size++; + } + + } + + async command void CC2520Receive.sfd_dropped() { + if ( m_timestamp_size ) { + m_timestamp_size--; + } + } + + /***************** PacketIndicator Commands ****************/ + command bool PacketIndicator.isReceiving() { + bool receiving; + atomic { + receiving = receivingPacket; + } + return receiving; + } + + + /***************** InterruptFIFOP Events ****************/ + async event void InterruptFIFOP.fired() { + //call Leds.led0On(); + if ( m_state == S_STARTED ) { + m_state = S_RX_LENGTH; + beginReceive(); + + } else { + m_missed_packets++; + } + } + + + /***************** SpiResource Events ****************/ + event void SpiResource.granted() { + receive(); + } + + /***************** RXFIFO Events ****************/ + /** + * We received some bytes from the SPI bus. Process them in the context + * of the state we're in. Remember the length byte is not part of the length + */ + async event void RXFIFO.readDone( uint8_t* rx_buf, uint8_t rx_len, + error_t error ) { + cc2520_header_t* header = call CC2520PacketBody.getHeader( m_p_rx_buf ); + uint8_t tmpLen __DEPUTY_UNUSED__ = sizeof(message_t) - (offsetof(message_t, data) - sizeof(cc2520_header_t)); + uint8_t* COUNT(tmpLen) buf = TCAST(uint8_t* COUNT(tmpLen), header); + rxFrameLength = buf[ 0 ]; + + switch( m_state ) { + + case S_RX_LENGTH: + m_state = S_RX_FCF; + + if ( rxFrameLength + 1 > m_bytes_left ) { + // Length of this packet is bigger than the RXFIFO, flush it out. + flush(); + + } else { + if ( !call FIFO.get() && !call FIFOP.get() ) { + m_bytes_left -= rxFrameLength + 1; + } + + if(rxFrameLength <= MAC_PACKET_SIZE) { + if(rxFrameLength > 0) { + if(rxFrameLength > SACK_HEADER_LENGTH) { + // This packet has an FCF byte plus at least one more byte to read + call RXFIFO.continueRead(buf + 1, SACK_HEADER_LENGTH); + + } else { + // This is really a bad packet, skip FCF and get it out of here. + m_state = S_RX_PAYLOAD; + call RXFIFO.continueRead(buf + 1, rxFrameLength); + } + + } else { + // Length == 0; start reading the next packet + atomic receivingPacket = FALSE; + call CSN.set(); + call SpiResource.release(); + waitForNextPacket(); + } + + } else { + // Length is too large; we have to flush the entire Rx FIFO + flush(); + } + } + break; + + case S_RX_FCF: + m_state = S_RX_PAYLOAD; + + /* + * The destination address check here is not completely optimized. If you + * are seeing issues with dropped acknowledgements, try removing + * the address check and decreasing SACK_HEADER_LENGTH to 2. + * The length byte and the FCF byte are the only two bytes required + * to know that the packet is valid and requested an ack. The destination + * address is useful when we want to sniff packets from other transmitters + * while acknowledging packets that were destined for our local address. + */ + if(call CC2520Config.isAutoAckEnabled() && !call CC2520Config.isHwAutoAckDefault()) { + if (((( header->fcf >> IEEE154_FCF_ACK_REQ ) & 0x01) == 1) + && ((header->dest == call CC2520Config.getShortAddr()) + || (header->dest == AM_BROADCAST_ADDR)) + && ((( header->fcf >> IEEE154_FCF_FRAME_TYPE ) & 7) == IEEE154_TYPE_DATA)) { + // CSn flippage cuts off our FIFO; SACK and begin reading again + call CSN.set(); + call CSN.clr(); + call SACK.strobe(); + call Leds.led1Toggle(); + call CSN.set(); + call CSN.clr(); + call RXFIFO.beginRead(buf + 1 + SACK_HEADER_LENGTH, + rxFrameLength - SACK_HEADER_LENGTH); +// call CSN.set(); +// call CSN.clr(); + return; + } + } + + // Didn't flip CSn, we're ok to continue reading. + call RXFIFO.continueRead(buf + 1 + SACK_HEADER_LENGTH, + rxFrameLength - SACK_HEADER_LENGTH); + break; + + case S_RX_PAYLOAD: + call CSN.set(); + + if(!m_missed_packets) { + // Release the SPI only if there are no more frames to download + call SpiResource.release(); + } + //new packet is buffered up, or we don't have timestamp in fifo, or ack + if ( ( m_missed_packets && call FIFO.get() ) || !call FIFOP.get() + || !m_timestamp_size + || rxFrameLength <= 10) { + call PacketTimeStamp.clear(m_p_rx_buf); + } + else { + if (m_timestamp_size==1) + call PacketTimeStamp.set(m_p_rx_buf, m_timestamp_queue[ m_timestamp_head ]); + m_timestamp_head = ( m_timestamp_head + 1 ) % TIMESTAMP_QUEUE_SIZE; + m_timestamp_size--; + + if (m_timestamp_size>0) { + call PacketTimeStamp.clear(m_p_rx_buf); + m_timestamp_head = 0; + m_timestamp_size = 0; + } + } +/* + if ( m_timestamp_size ) { + if ( rxFrameLength > 10 ) { + call PacketTimeStamp.set(m_p_rx_buf, m_timestamp_queue[ m_timestamp_head ]); + m_timestamp_head = ( m_timestamp_head + 1 ) % TIMESTAMP_QUEUE_SIZE; + m_timestamp_size--; + } + } else { + call PacketTimeStamp.clear(m_p_rx_buf); + } +*/ + // We may have received an ack that should be processed by Transmit + // buf[rxFrameLength] >> 7 checks the CRC + if ( ( buf[ rxFrameLength ] >> 7 ) && rx_buf ) { + uint8_t type = ( header->fcf >> IEEE154_FCF_FRAME_TYPE ) & 7; + // if ( type == IEEE154_TYPE_ACK ) + // call Leds.led0Toggle(); + + signal CC2520Receive.receive( type, m_p_rx_buf ); + if ( type == IEEE154_TYPE_DATA ) { + post receiveDone_task(); + return; + } + } + + waitForNextPacket(); + break; + + default: + atomic receivingPacket = FALSE; + call CSN.set(); + call SpiResource.release(); + break; + + } + + } + + async event void RXFIFO.writeDone( uint8_t* tx_buf, uint8_t tx_len, error_t error ) { + } + + /***************** Tasks *****************/ + /** + * Fill in metadata details, pass the packet up the stack, and + * get the next packet. + */ + task void receiveDone_task() { + cc2520_metadata_t* metadata = call CC2520PacketBody.getMetadata( m_p_rx_buf ); + cc2520_header_t* header = call CC2520PacketBody.getHeader( m_p_rx_buf); + uint8_t length = header->length; + uint8_t tmpLen __DEPUTY_UNUSED__ = sizeof(message_t) - (offsetof(message_t, data) - sizeof(cc2520_header_t)); + uint8_t* COUNT(tmpLen) buf = TCAST(uint8_t* COUNT(tmpLen), header); + metadata->crc = buf[ length ] >> 7; + metadata->lqi = buf[ length ] & 0x7f; + metadata->rssi = buf[ length - 1 ]; + + if (passesAddressCheck(m_p_rx_buf) && length >= CC2520_SIZE) { + if(((header->fcf >> IEEE154_FCF_ACK_REQ ) & 0x01) == 1) { + cc2520_header_t* ack_hdr = call CC2520PacketBody.getHeader(&ack_buf); + ack_hdr->length = 3 + CC2520_SIZE; + ack_hdr->fcf = (IEEE154_TYPE_ACK << IEEE154_FCF_FRAME_TYPE); + ack_hdr->dsn = header->dsn; + call Send.send(&ack_buf, 1); + } + #ifdef CC2520_HW_SECURITY + decryptPacket(); + #endif + m_p_rx_buf = signal Receive.receive( m_p_rx_buf, m_p_rx_buf->data, + length - CC2520_SIZE); + } + + atomic receivingPacket = FALSE; + waitForNextPacket(); + + } + + /****************** CC2420Config Events ****************/ + event void CC2520Config.syncDone( error_t error ) { + } + + /****************** Functions ****************/ + /** + * Attempt to acquire the SPI bus to receive a packet. + */ + void beginReceive() { + m_state = S_RX_LENGTH; + + atomic receivingPacket = TRUE; + if(call SpiResource.isOwner()) { + receive(); + + } else if (call SpiResource.immediateRequest() == SUCCESS) { + receive(); + + } else { + call SpiResource.request(); + } + } + + /** + * Flush out the Rx FIFO + */ + void flush() { + reset_state(); + call CSN.set(); + call CSN.clr(); + call SFLUSHRX.strobe(); +// call CSN.set(); +// call CSN.clr(); + call SFLUSHRX.strobe(); + call CSN.set(); + call SpiResource.release(); + waitForNextPacket(); + } + + /** + * The first byte of each packet is the length byte. Read in that single + * byte, and then read in the rest of the packet. The CC2420 could contain + * multiple packets that have been buffered up, so if something goes wrong, + * we necessarily want to flush out the FIFO unless we have to. + */ + void receive() { + call CSN.clr(); + call RXFIFO.beginRead( (uint8_t*)(call CC2520PacketBody.getHeader( m_p_rx_buf )), 1 ); + //call CSN.set(); + + } + + + /* + * Decrypt the received packet + */ + #ifdef CC2520_HW_SECURITY + + error_t acquireSpiResource() { + + error_t error = call SpiResource.immediateRequest(); + + if ( error != SUCCESS ) { + // printf("\nspi error:%d",error);printfflush(); + call SpiResource.request(); + } + return error; + } + + uint8_t getMICLength(uint8_t securityLevel) { + + if(securityLevel == SEC_MIC_32 || securityLevel == SEC_ENC_MIC_32) + return 4; + else if(securityLevel == SEC_MIC_64 || securityLevel == SEC_ENC_MIC_64) + return 8; + else if(securityLevel == SEC_ENC_MIC_128 || securityLevel == SEC_ENC_MIC_128) + return 16; + return 0; + } + + void reverseArray(uint8_t *ptr,uint8_t length) + { + uint8_t i,tmp; + for(i=0; i< length/2;i++) + { + tmp = ptr[i]; + ptr[i] = ptr[length -i]; + ptr[length-i] = tmp; + } + } + + + void initNonce(void) + { + uint8_t i; + cc2520_header_t* header = call CC2520PacketBody.getHeader( m_p_rx_buf); + for(i=0;i> 8); + nonceRx[8] = (uint8_t)(call AMPacket.source( m_p_rx_buf) & 0xff); + nonceRx[13] = SECURITY_CONTROL; + nonceRx[15] = 0x01; + + reverseArray(nonceRx, 16); + call CSN.clr(); + call RXNonce.write(0, nonceRx, 16); + call CSN.set(); + } + + void decryptPacket(void) + { + cc2520_header_t* header = call CC2520PacketBody.getHeader( m_p_rx_buf); + uint8_t *ptr = (uint8_t *)header; + uint8_t micLength = getMICLength(header->secHdr.secLevel); + uint8_t decryptLength = header->length - CC2520_SIZE - micLength; + uint8_t authLength = CC2520_SIZE - MAC_FOOTER_SIZE; + uint8_t length = header->length; + + acquireSpiResource(); + call CSN.clr(); + call RXFRAME.write(0, ptr,header->length); + call CSN.set(); + + + initNonce(); + + call CSN.clr(); + call SpiByte.write(CC2520_CMD_UCCM | HIGH_PRIORITY); + call SpiByte.write(CC2520_RAM_KEY0/16); + call SpiByte.write(decryptLength); + call SpiByte.write(CC2520_RAM_RXNONCE/16); + call SpiByte.write((HI_UINT16(CC2520_RAM_RXFRAME+1)<<4)|HI_UINT16(0)); + call SpiByte.write(LO_UINT16(CC2520_RAM_RXFRAME+1)); + call SpiByte.write(LO_UINT16(0)); //For Inline Security + call SpiByte.write(authLength); + call SpiByte.write(micLength); + call CSN.set(); + + call CSN.clr(); + while(call SNOP.strobe() & 0x08); + call CSN.set(); + + header->dsn = 0xff; + + call CSN.clr(); + call RXFRAME.read(0, ptr, length); + call CSN.set(); + + call SpiResource.release(); + + } + #endif + + + + /** + * Determine if there's a packet ready to go, or if we should do nothing + * until the next packet arrives + */ + void waitForNextPacket() { + atomic { + if ( m_state == S_STOPPED ) { + call SpiResource.release(); + return; + } + + atomic receivingPacket = FALSE; + + /* + * The FIFOP pin here is high when there are 0 bytes in the RX FIFO + * and goes low as soon as there are bytes in the RX FIFO. The pin + * is inverted from what the datasheet says, and its threshold is 127. + * Whenever the FIFOP line goes low, as you can see from the interrupt + * handler elsewhere in this module, it means we received a new packet. + * If the line stays low without generating an interrupt, that means + * there's still more data to be received. + */ + if ( ( m_missed_packets && call FIFO.get() ) || !call FIFOP.get() ) { + // A new packet is buffered up and ready to go + if ( m_missed_packets ) { + m_missed_packets--; + } + + beginReceive(); + + } else { + // Wait for the next packet to arrive + m_state = S_STARTED; + m_missed_packets = 0; + call SpiResource.release(); + } + } + } + + /** + * Reset this component + */ + void reset_state() { + m_bytes_left = RXFIFO_SIZE; + atomic receivingPacket = FALSE; + m_timestamp_head = 0; + m_timestamp_size = 0; + m_missed_packets = 0; + } + + /** + * @return TRUE if the given message passes address recognition + */ + bool passesAddressCheck(message_t *msg) { + cc2520_header_t *header = call CC2520PacketBody.getHeader( msg ); + int mode = (header->fcf >> IEEE154_FCF_DEST_ADDR_MODE) & 3; + ieee_eui64_t *ext_addr; + + if(!(call CC2520Config.isAddressRecognitionEnabled())) { + + return TRUE; + } + if (mode == IEEE154_ADDR_SHORT) { + return (header->dest == call CC2520Config.getShortAddr() + || header->dest == IEEE154_BROADCAST_ADDR); + } else if (mode == IEEE154_ADDR_EXT) { + + ieee_eui64_t local_addr = (call CC2520Config.getExtAddr()); + + ext_addr = TCAST(ieee_eui64_t* ONE, &header->dest); + // printf("\n link layer address:"); + // printf_buf(ext_addr,8); + return (memcmp(ext_addr->data, local_addr.data, IEEE_EUI64_LENGTH) == 0); + } else { + /* reject frames with either no address or invalid type */ + return FALSE; + } + } + + async event void Send.sendDone(message_t *p_msg, error_t error) { return; } + +} + diff --git a/cc2520/security/CC2520KeyC.nc b/cc2520/security/CC2520KeyC.nc new file mode 100644 index 0000000000..d5316b91ba --- /dev/null +++ b/cc2520/security/CC2520KeyC.nc @@ -0,0 +1,29 @@ + + +configuration CC2520KeyC +{ + provides interface CC2520Key; +} + +implementation +{ + components CC2520KeyP; + CC2520Key = CC2520KeyP; + + components new CC2520SpiC() as Spi; + CC2520KeyP.Key -> Spi.KEY; + CC2520KeyP.TXNonce -> Spi.TXNONCE; + CC2520KeyP.SpiResource -> Spi.Resource; + + components ActiveMessageAddressC; + CC2520KeyP.ActiveMessageAddress -> ActiveMessageAddressC; + + components MainC; + components AlarmMultiplexC as Alarm; + MainC.SoftwareInit -> CC2520KeyP; + MainC.SoftwareInit -> Alarm; + + components HplCC2520PinsC as Pins; + CC2520KeyP.CSN -> Pins.CSN; + +} diff --git a/cc2520/security/CC2520KeyP.nc b/cc2520/security/CC2520KeyP.nc new file mode 100644 index 0000000000..96a034e8e5 --- /dev/null +++ b/cc2520/security/CC2520KeyP.nc @@ -0,0 +1,175 @@ +#define NONCE_SIZE 16 + +#ifndef FLAG_FIELD +#define FLAG_FIELD FLAG_ENC //M = 4 L = 2 +#endif + +#ifndef SECURITY_CONTROL +#define SECURITY_CONTROL SEC_ENC //MIC-64 +#endif + +module CC2520KeyP +{ + provides interface CC2520Key; + provides interface Init; + uses{ + interface CC2520Ram as Key; + interface CC2520Ram as TXNonce; + interface GeneralIO as CSN; + interface Resource as SpiResource; + interface ActiveMessageAddress; + } +} + +implementation +{ + uint8_t *setKey = NULL; + uint8_t *getKey = NULL; + uint8_t operation; + enum flags{ + SETKEY=4, + GETKEY=5, + }; + static uint8_t nonceTx[NONCE_SIZE]; + static uint8_t nonceRx[NONCE_SIZE]; + /* + * The nonce must be correctly initialized before receive or transmit CTR or + * CCM operations are started.The format of the nonce is + *Initialization vector: + * Flags + Nonce + Sequence Counter + * --------------------------------------------------------------------- + *|Bytes:1|8 |4 |1 |2 | + *---------------------------------------------------------------------- + *|Flags | Source Address|Frame Counter|Security Level | Sequence Cnter| + *---------------------------------------------------------------------- + * + * Flags field + * + * ------------------------------------------------------ + * |Bits:7 |6 |5..3 |2..0 | + * ------------------------------------------------------ + * |Reserved |Adata | M' |L' | + * ------------------------------------------------------ + * + * Bit 7 is Reserved and should be set to 0. Adata indicates whether there is + * additional data or not + * + * M' is the length of the size of the authentication field. M' is encoded as + * (M-2)/2 and valid values are even numbers from 4 to 16. L' is size of the + * length field and is encoded as L-1. + * + * + */ + + command error_t Init.init() + { + uint8_t i; + // Initialise nonce bytes to 0 + for(i=0;i> 8); + nonceTx[8] = (uint8_t)(call ActiveMessageAddress.amAddress() & 0xff); + + // Set Security mode field of nonces (Byte 13) + nonceTx[13] = SECURITY_CONTROL; + nonceRx[13] = SECURITY_CONTROL; + + //Setting sequence counter to 1 + nonceTx[15] = 0x01; + nonceRx[15] = 0x01; + + //While transmitting just we have to copy the frameCounter into the nonce + return SUCCESS; + } + + task void resourceReq() + { + error_t error; + error = call SpiResource.immediateRequest(); + if(error != SUCCESS){ + post resourceReq(); + } + } + + void reverseArray(uint8_t *ptr,uint8_t length) + { + uint8_t i,tmp; + for(i=0; i< length/2;i++) + { + tmp = ptr[i]; + ptr[i] = ptr[length -i]; + ptr[length-i] = tmp; + } + } + + event void SpiResource.granted() + { + uint8_t ret; + if(operation == SETKEY) + { + reverseArray(setKey, 16); + reverseArray(nonceTx, 16); + reverseArray(nonceRx, 16); + + call CSN.clr(); + /*Load and reverse the key (or reverse in software before loading)*/ + ret = call Key.write(0, setKey, 16); + call CSN.set(); + + call CSN.clr(); + call TXNonce.write(0, nonceTx, 16); + call CSN.set(); + + + signal CC2520Key.setKeyDone(ret); + }else if(operation == GETKEY) + { + call CSN.clr(); + ret = call Key.read(0, getKey, 16); + call CSN.set(); + signal CC2520Key.getKeyDone(ret,getKey); + } + call SpiResource.release(); + } + + async event void ActiveMessageAddress.changed(){ + // TODO Auto-generated method stub + } + + + command uint8_t* CC2520Key.getTXNonce() + { + return nonceTx; + } + + command error_t CC2520Key.setKey(uint8_t *key) + { + setKey = key; + operation = SETKEY; + if(call SpiResource.request() != SUCCESS){ + post resourceReq(); + } + return SUCCESS; + } + + + command error_t CC2520Key.getKey(uint8_t *key) + { + getKey = key; + operation = GETKEY; + if(call SpiResource.request() != SUCCESS){ + post resourceReq(); + } + return SUCCESS; + } + + +} diff --git a/cc2520/spi/CC2520SpiC.nc b/cc2520/spi/CC2520SpiC.nc new file mode 100644 index 0000000000..4a37024667 --- /dev/null +++ b/cc2520/spi/CC2520SpiC.nc @@ -0,0 +1,247 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * Implementation of basic SPI primitives for the ChipCon CC2520 radio. + * + * @author Jonathan Hui + * @version $Revision: 1.2 $ $Date: 2008/05/28 16:39:53 $ + */ + +generic configuration CC2520SpiC() { + + provides interface Resource; + provides interface ChipSpiResource; + + // commands + provides interface CC2520Strobe as SNOP; + provides interface CC2520Strobe as SXOSCON; + provides interface CC2520Strobe as STXCAL; + provides interface CC2520Strobe as SRXON; + provides interface CC2520Strobe as STXON; + provides interface CC2520Strobe as STXONCCA; + provides interface CC2520Strobe as SRFOFF; + provides interface CC2520Strobe as SXOSCOFF; + provides interface CC2520Strobe as SFLUSHRX; + provides interface CC2520Strobe as SFLUSHTX; + provides interface CC2520Strobe as SACK; + provides interface CC2520Strobe as SACKPEND; + //provides interface CC2520Strobe as SRXDEC; + //provides interface CC2520Strobe as STXENC; + //provides interface CC2520Strobe as SAES; + + // registers + //provides interface CC2520Register as MAIN; + provides interface CC2520Register as MDMCTRL0; + provides interface CC2520Register as MDMCTRL1; + provides interface CC2520Register as RSSI; + + //provides interface CC2520Register as TXCTRL; + provides interface CC2520Register as RXCTRL; + + provides interface CC2520Register as FSCTRL; + + provides interface CC2520Register as FRMCTRL1; + provides interface CC2520Register as RXENABLE1; + + + provides interface CC2520Register as CCACTRL0; + provides interface CC2520Register as AGCCTRL1; + provides interface CC2520Register as FSCAL1; + provides interface CC2520Register as TXPOWER; + provides interface CC2520Register as FREQCTRL; + provides interface CC2520Register as ADCTEST0; + provides interface CC2520Register as ADCTEST1; + provides interface CC2520Register as ADCTEST2; + + provides interface CC2520Register as FRMCTRL0; + provides interface CC2520Register as EXTCLOCK; + provides interface CC2520Register as GPIOCTRL0; + provides interface CC2520Register as GPIOCTRL1; + provides interface CC2520Register as GPIOCTRL2; + provides interface CC2520Register as GPIOCTRL3; + provides interface CC2520Register as GPIOCTRL4; + provides interface CC2520Register as GPIOCTRL5; + + provides interface CC2520Register as GPIOPOLARITY; + provides interface CC2520Register as EXCFLAG0; + provides interface CC2520Register as EXCFLAG1; + provides interface CC2520Register as EXCFLAG2; + provides interface CC2520Register as FSMSTAT1; + + provides interface CC2520Register as FRMFILT0; + provides interface CC2520Register as FRMFILT1; + provides interface CC2520Register as FIFOPCTRL; + + //provides interface CC2520Register as SYNCWORD; + //provides interface CC2520Register as RXCTRL1; + //provides interface CC2520Register as SECCTRL0; + //provides interface CC2520Register as SECCTRL1; + //provides interface CC2520Register as BATTMON; + //provides interface CC2520Register as IOCFG0; + //provides interface CC2520Register as IOCFG1; + // provides interface CC2520Register as MANFIDL; + //provides interface CC2520Register as MANFIDH; + //provides interface CC2520Register as FSMTC; + //provides interface CC2520Register as MANAND; + //provides interface CC2520Register as MANOR; + // provides interface CC2520Register as AGCCTRL; + + // ram + provides interface CC2520Ram as IEEEADR; + provides interface CC2520Ram as PANID; + provides interface CC2520Ram as SHORTADR; + provides interface CC2520Ram as TXFIFO_RAM; + + //Security in RAM +#ifdef CC2520_HW_SECURITY + provides interface CC2520Ram as KEY; + provides interface CC2520Ram as TXNONCE; + provides interface CC2520Ram as RXNONCE; + provides interface CC2520Ram as RXFRAME; + provides interface CC2520Ram as TXFRAME; +#endif + // fifos + provides interface CC2520Fifo as RXFIFO; + provides interface CC2520Fifo as TXFIFO; + +} + +implementation { + + enum { + CLIENT_ID = unique( "CC2520Spi.Resource" ), + }; + + components HplCC2520PinsC as Pins; + components CC2520SpiWireC as Spi; + + ChipSpiResource = Spi.ChipSpiResource; + Resource = Spi.Resource[ CLIENT_ID ]; + + // commands + SNOP = Spi.Strobe[ CC2520_CMD_SNOP ]; + SXOSCON = Spi.Strobe[ CC2520_CMD_SXOSCON ]; + STXCAL = Spi.Strobe[ CC2520_CMD_STXCAL ]; + SRXON = Spi.Strobe[ CC2520_CMD_SRXON ]; + STXON = Spi.Strobe[ CC2520_CMD_STXON ]; + STXONCCA = Spi.Strobe[ CC2520_CMD_STXONCCA ]; + SRFOFF = Spi.Strobe [ CC2520_CMD_SRFOFF ]; + SXOSCOFF = Spi.Strobe[ CC2520_CMD_SXOSCOFF ]; + SFLUSHRX = Spi.Strobe[ CC2520_CMD_SFLUSHRX ]; + SFLUSHTX = Spi.Strobe[ CC2520_CMD_SFLUSHTX ]; + SACK = Spi.Strobe[ CC2520_CMD_SACK ]; + SACKPEND = Spi.Strobe[ CC2520_CMD_SACKPEND ]; + //SRXDEC = Spi.Strobe[ CC2520_SRXDEC ]; + //STXENC = Spi.Strobe[ CC2520_STXENC ]; + //SAES = Spi.Strobe[ CC2520_SAES ]; + + // registers + //MAIN = Spi.Reg[ CC2520_MAIN ]; + + MDMCTRL0 = Spi.Reg[ CC2520_MDMCTRL0 ]; + MDMCTRL1 = Spi.Reg[ CC2520_MDMCTRL1 ]; + RSSI = Spi.Reg[ CC2520_RSSI ]; + //SYNCWORD = Spi.Reg[ CC2520_SYNCWORD ]; + //TXCTRL = Spi.Reg[ CC2520_TXCTRL ]; + //RXCTRL0 = Spi.Reg[ CC2520_RXCTRL0 ]; + //RXCTRL1 = Spi.Reg[ CC2520_RXCTRL1 ]; + //FSCTRL = Spi.Reg[ CC2520_FSCTRL ]; + //SECCTRL0 = Spi.Reg[ CC2520_SECCTRL0 ]; + //SECCTRL1 = Spi.Reg[ CC2520_SECCTRL1 ]; + //BATTMON = Spi.Reg[ CC2520_BATTMON ]; + //IOCFG0 = Spi.Reg[ CC2520_IOCFG0 ]; + //IOCFG1 = Spi.Reg[ CC2520_IOCFG1 ]; + //MANFIDL = Spi.Reg[ CC2520_MANFIDL ]; + //MANFIDH = Spi.Reg[ CC2520_MANFIDH ]; + //FSMTC = Spi.Reg[ CC2520_FSMTC ]; + //MANAND = Spi.Reg[ CC2520_MANAND ]; + //MANOR = Spi.Reg[ CC2520_MANOR ]; + //AGCCTRL = Spi.Reg[ CC2520_AGCCTRL ]; + RXCTRL = Spi.Reg[ CC2520_RXCTRL ]; + FSCTRL = Spi.Reg[ CC2520_FSCTRL ]; + FSCAL1 = Spi.Reg[ CC2520_FSCAL1 ]; + TXPOWER = Spi.Reg[ CC2520_TXPOWER ]; + FREQCTRL = Spi.Reg[ CC2520_FREQCTRL ]; + ADCTEST0 = Spi.Reg[ CC2520_ADCTEST0 ]; + ADCTEST1 = Spi.Reg[ CC2520_ADCTEST1 ]; + ADCTEST2 = Spi.Reg[ CC2520_ADCTEST2 ]; + FRMCTRL0 = Spi.Reg[ CC2520_FRMCTRL0 ]; + + + FRMCTRL1 = Spi.Reg[ CC2520_FRMCTRL1 ]; + RXENABLE1 = Spi.Reg[ CC2520_RXENABLE1 ]; + + + + CCACTRL0 = Spi.Reg[ CC2520_CCACTRL0 ]; + AGCCTRL1 = Spi.Reg[ CC2520_AGCCTRL1 ]; + + EXTCLOCK = Spi.Reg[ CC2520_EXTCLOCK ]; + GPIOCTRL0 = Spi.Reg[ CC2520_GPIOCTRL0 ]; + GPIOCTRL1 = Spi.Reg[ CC2520_GPIOCTRL1 ]; + GPIOCTRL2 = Spi.Reg[ CC2520_GPIOCTRL2 ]; + GPIOCTRL3 = Spi.Reg[ CC2520_GPIOCTRL3 ]; + GPIOCTRL4 = Spi.Reg[ CC2520_GPIOCTRL4 ]; + GPIOCTRL5 = Spi.Reg[ CC2520_GPIOCTRL5 ]; + // newly Added + GPIOPOLARITY = Spi.Reg[ CC2520_GPIOPOLARITY];//CC2520_GPIOPOLARITY ]; + FRMFILT0 = Spi.Reg[ CC2520_FRMFILT0]; + FRMFILT1 = Spi.Reg[ CC2520_FRMFILT1]; + FIFOPCTRL = Spi.Reg[ CC2520_FIFOPCTRL]; + + + EXCFLAG0 = Spi.Reg[ CC2520_EXCFLAG0]; + EXCFLAG1 = Spi.Reg[ CC2520_EXCFLAG1]; + EXCFLAG2 = Spi.Reg[ CC2520_EXCFLAG2]; + FSMSTAT1 = Spi.Reg[ CC2520_FSMSTAT1]; + // ram + IEEEADR = Spi.Ram[ CC2520_RAM_IEEEADR ]; + PANID = Spi.Ram[ CC2520_RAM_PANID ]; + SHORTADR = Spi.Ram[ CC2520_RAM_SHORTADR ]; + TXFIFO_RAM = Spi.Ram[ CC2520_RAM_TXFIFO]; + + #ifdef CC2520_HW_SECURITY + //Security + KEY = Spi.Ram[ CC2520_RAM_KEY0]; + TXNONCE = Spi.Ram[ CC2520_RAM_TXNONCE]; + RXNONCE = Spi.Ram[ CC2520_RAM_RXNONCE]; + RXFRAME = Spi.Ram[ CC2520_RAM_RXFRAME]; + TXFRAME = Spi.Ram[ CC2520_RAM_TXFRAME]; + #endif + + // fifos + RXFIFO = Spi.Fifo[ CC2520_CMD_RXBUF ]; + TXFIFO = Spi.Fifo[ CC2520_CMD_TXBUF ]; + + +} + diff --git a/cc2520/spi/CC2520SpiP.nc b/cc2520/spi/CC2520SpiP.nc new file mode 100644 index 0000000000..291587d6bd --- /dev/null +++ b/cc2520/spi/CC2520SpiP.nc @@ -0,0 +1,449 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ +// The actual Spi files are located in Msp430SpiNoDmaBP.nc & HplMsp430UsciB0P.nc--- Lijo +/** + * @author Jonathan Hui + * @author David Moss + * @author Roman Lim + * @author Razvan Musaloie-E. + * @author Jeonggil Ko + * @version $Revision: 1.4 $ $Date: 2008/06/23 20:25:15 $ + */ + + +#define HI_UINT16(a) (((int)(a) >> 8) & 0xFF) +#define LO_UINT16(a) ((int)(a) & 0xFF) + +module CC2520SpiP @safe() { + + provides { + interface ChipSpiResource; + interface Resource[ uint8_t id ]; + interface CC2520Fifo as Fifo[ uint8_t id ]; + interface CC2520Ram as Ram[ uint16_t id ]; + interface CC2520Register as Reg[ uint8_t id ]; + interface CC2520Strobe as Strobe[ uint8_t id ]; + } + + uses { + interface Resource as SpiResource; + interface SpiByte; + interface SpiPacket; + interface State as WorkingState; + + interface Leds; + } +} + +implementation { + + enum { + RESOURCE_COUNT = uniqueCount( "CC2520Spi.Resource" ), + NO_HOLDER = 0xFF, + }; + + /** WorkingStates */ + enum { + S_IDLE, + S_BUSY, + }; + + /** Address to read/write on the CC2420, also maintains caller's client id */ + norace uint16_t m_addr; + + /** Each bit represents a client ID that is requesting SPI bus access */ + uint8_t m_requests = 0; + + /** The current client that owns the SPI bus */ + uint8_t m_holder = NO_HOLDER; + + /** TRUE if it is safe to release the SPI bus after all users say ok */ + bool release; + + /***************** Prototypes ****************/ + error_t attemptRelease(); + task void grant(); + + /***************** ChipSpiResource Commands ****************/ + /** + * Abort the release of the SPI bus. This must be called only with the + * releasing() event + */ + async command void ChipSpiResource.abortRelease() { + atomic release = FALSE; + } + + /** + * Release the SPI bus if there are no objections + */ + async command error_t ChipSpiResource.attemptRelease() { + return attemptRelease(); + } + + /***************** Resource Commands *****************/ + async command error_t Resource.request[ uint8_t id ]() { + + atomic { + if ( call WorkingState.requestState(S_BUSY) == SUCCESS ) { + m_holder = id; + if(call SpiResource.isOwner()) { + post grant(); + + } else { + call SpiResource.request(); + } + + } else { + m_requests |= 1 << id; + } + } + return SUCCESS; + } + + async command error_t Resource.immediateRequest[ uint8_t id ]() { + error_t error; + + atomic { + if ( call WorkingState.requestState(S_BUSY) != SUCCESS ) { + return EBUSY; + } + + + if(call SpiResource.isOwner()) { + m_holder = id; + error = SUCCESS; + + } else if ((error = call SpiResource.immediateRequest()) == SUCCESS ) { + m_holder = id; + + } else { + call WorkingState.toIdle(); + } + } + return error; + } + + async command error_t Resource.release[ uint8_t id ]() { + uint8_t i; + atomic { + if ( m_holder != id ) { + return FAIL; + } + + m_holder = NO_HOLDER; + if ( !m_requests ) { + call WorkingState.toIdle(); + attemptRelease(); + + } else { + for ( i = m_holder + 1; ; i++ ) { + i %= RESOURCE_COUNT; + + if ( m_requests & ( 1 << i ) ) { + m_holder = i; + m_requests &= ~( 1 << i ); + post grant(); + return SUCCESS; + } + } + } + } + + return SUCCESS; + } + + async command uint8_t Resource.isOwner[ uint8_t id ]() { + atomic return (m_holder == id); + } + + + /***************** SpiResource Events ****************/ + event void SpiResource.granted() { + + + post grant(); + + } + + /***************** Fifo Commands ****************/ + async command cc2520_status_t Fifo.beginRead[ uint8_t addr ]( uint8_t* data, + uint8_t len ) { + + cc2520_status_t status = 0; + + atomic { + if(call WorkingState.isIdle()) { + return status; + } + } + + // m_addr = addr | 0x40; + //printf("\n Fifo Read"); + //m_addr = addr; + + m_addr = CC2520_CMD_RXBUF; + status = call SpiByte.write( m_addr ); + m_addr = addr | 0x40; // For Reading ...used in SpiPacket.sendDone + call Fifo.continueRead[ addr ]( data, len ); + + return status; + + } + + async command error_t Fifo.continueRead[ uint8_t addr ]( uint8_t* data, + uint8_t len ) { + return call SpiPacket.send( NULL, data, len ); + } + + async command cc2520_status_t Fifo.write[ uint8_t addr ]( uint8_t* data, + uint8_t len ) { + + uint8_t status = 0; + + atomic { + if(call WorkingState.isIdle()) { + return status; + } + } + + m_addr = CC2520_CMD_TXBUF ; //addr; // CC2520_CMD_TXBUF + + status = call SpiByte.write( m_addr ); + call SpiPacket.send( data, NULL, len ); + + return status; + + } + + /***************** RAM Commands ****************/ + async command cc2520_status_t Ram.read[ uint16_t addr ]( uint8_t offset, + uint8_t* data, + uint8_t len ) { + + cc2520_status_t status = 0; + + atomic { + if(call WorkingState.isIdle()) { + return status; + } + } + + call SpiByte.write(CC2520_CMD_MEMORY_READ | (HI_UINT16(addr))); + addr = LO_UINT16(addr); + status = call SpiByte.write( addr ); // Edited by Lijo + for ( ; len; len-- ) { + *data++ = call SpiByte.write( 0 ); + } + + return status; + + } + + + async command cc2520_status_t Ram.write[ uint16_t addr ]( uint8_t offset, + uint8_t* data, + uint8_t len ) { + + cc2520_status_t status = 0; + uint8_t tmpLen = len; + uint8_t * COUNT(tmpLen) tmpData = (uint8_t * COUNT(tmpLen))data; + + atomic { + if(call WorkingState.isIdle()) { + return status; + } + } + call SpiByte.write(CC2520_CMD_MEMORY_WRITE | (HI_UINT16(addr))); + addr = LO_UINT16(addr); + status = call SpiByte.write( addr ); // Edited by Lijo + for ( ; len; len-- ) { + call SpiByte.write( tmpData[tmpLen-len] ); + // call SpiByte.write( tmpData[len-1] ); //Jamal:Writing in reverse order + } + + return status; + + } + + /***************** Register Commands ****************/ + async command cc2520_status_t Reg.read[ uint8_t addr ]( uint16_t* data ) { + + cc2520_status_t status = 0; + + atomic { + if(call WorkingState.isIdle()) { + return status; + } + } + + //call SpiByte.write( CC2520_CMD_MEMORY_READ | (HI_UINT16(addr)) ); + //call SpiByte.write( LO_UINT16(addr) ); + //status = call SpiByte.write( addr | 0x40 ); + //printf("Memory Read: %x , Register Address : %x \n", CC2520_CMD_MEMORY_WRITE,addr); + call SpiByte.write( CC2520_CMD_MEMORY_READ ); + call SpiByte.write(addr); + //printf("Value: %x \n", call SpiByte.write( 0x00 )); + //call SpiByte.write( 0x00 ); + + //printf("CC2520 Status: %x \n", call SpiByte.write( 0x00 )); + + *data = (uint16_t)call SpiByte.write( 0 ) << 8; + *data |= call SpiByte.write( 0 ); + + //*data =0; + + + return status; + + } + + async command cc2520_status_t Reg.write[ uint8_t addr ]( uint16_t data ) { + + atomic { + if(call WorkingState.isIdle()) { + return 0; + } + } + + if(addr <= CC2520_FREG_MASK) + { + // we can use 1 byte less to write this register using the + // register write command + + //ASSERT( addr == (addr & CC2520_FREG_MASK) ); + addr = (addr & CC2520_FREG_MASK); + //printf(" Register Address : %x , Data : %x\n", (CC2520_CMD_MEMORY_WRITE ),addr); + + //status.value = call SpiByte.write(CC2520_CMD_REGISTER_WRITE | reg); + //call SpiByte.write(CC2520_CMD_REGISTER_WRITE | addr); + call SpiByte.write(CC2520_CMD_MEMORY_WRITE); + call SpiByte.write(addr); + + } + else + { + // we have to use the memory write command as the register is in + // SREG + + //ASSERT( addr == (addr & CC2520_SREG_MASK) ); + addr = (addr & CC2520_SREG_MASK); + // printf(" Register Address : %x , Data : %x\n", (addr),data); + // the register has to be below the 0x100 memory address. Thus, we + // don't have to add anything to the MEMORY_WRITE command. + call SpiByte.write(CC2520_CMD_MEMORY_WRITE); + call SpiByte.write(addr); + + } + + + //call SpiByte.write( addr ); + //call SpiByte.write( data >> 8 ); + //return call SpiByte.write( data & 0xff ); + //call SpiByte.write( CC2520_CMD_MEMORY_WRITE ); + //call SpiByte.write(addr); + // call SpiByte.write( data ); + + // printf("Memory Write: %x , Register Address : %x , Data : %x\n", CC2520_CMD_MEMORY_WRITE,addr,data); + //printf("Value 0: %x Value1: %x \n", *(data+0),*(data+1)); + //call SpiByte.write( CC2520_CMD_MEMORY_WRITE | (HI_UINT16(addr)) ); + //call SpiByte.write( LO_UINT16(addr) ); + //return call SpiByte.write( 0x32 ); + + return call SpiByte.write((data & 0xFF)); // Edited by Lijo + } + + + + + /***************** Strobe Commands ****************/ + async command cc2520_status_t Strobe.strobe[ uint8_t addr ]() { + atomic { + if(call WorkingState.isIdle()) { + return 0; + } + } + + return call SpiByte.write( addr ); + } + + /***************** SpiPacket Events ****************/ + async event void SpiPacket.sendDone( uint8_t* tx_buf, uint8_t* rx_buf, + uint16_t len, error_t error ) { + if ( m_addr & 0x40 ) { + signal Fifo.readDone[ m_addr & ~0x40 ]( rx_buf, len, error ); + } else { + signal Fifo.writeDone[ m_addr ]( tx_buf, len, error ); + } + + } + + /***************** Functions ****************/ + error_t attemptRelease() { + if(m_requests > 0 + || m_holder != NO_HOLDER + || !call WorkingState.isIdle()) { + return FAIL; + } + + atomic release = TRUE; + signal ChipSpiResource.releasing(); + atomic { + if(release) { + call SpiResource.release(); + return SUCCESS; + } + } + + return EBUSY; + } + + task void grant() { + uint8_t holder; + atomic { + holder = m_holder; + } + signal Resource.granted[ holder ](); + } + + /***************** Defaults ****************/ + default event void Resource.granted[ uint8_t id ]() { + } + + default async event void Fifo.readDone[ uint8_t addr ]( uint8_t* rx_buf, uint8_t rx_len, error_t error ) { + } + + default async event void Fifo.writeDone[ uint8_t addr ]( uint8_t* tx_buf, uint8_t tx_len, error_t error ) { + } + + default async event void ChipSpiResource.releasing() { + } + +} diff --git a/cc2520/spi/CC2520SpiP_edited.nc b/cc2520/spi/CC2520SpiP_edited.nc new file mode 100644 index 0000000000..b3830713d9 --- /dev/null +++ b/cc2520/spi/CC2520SpiP_edited.nc @@ -0,0 +1,459 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ +// The actual Spi files are located in Msp430SpiNoDmaBP.nc & HplMsp430UsciB0P.nc--- Lijo +/** + * @author Jonathan Hui + * @author David Moss + * @author Roman Lim + * @author Razvan Musaloie-E. + * @author Jeonggil Ko + * @version $Revision: 1.4 $ $Date: 2008/06/23 20:25:15 $ + */ + + +#define HI_UINT16(a) (((int)(a) >> 8) & 0xFF) +#define LO_UINT16(a) ((int)(a) & 0xFF) +#include "printf.h" +module CC2520SpiP @safe() { + + provides { + interface ChipSpiResource; + interface Resource[ uint8_t id ]; + interface CC2520Fifo as Fifo[ uint8_t id ]; + interface CC2520Ram as Ram[ uint16_t id ]; + interface CC2520Register as Reg[ uint8_t id ]; + interface CC2520Strobe as Strobe[ uint8_t id ]; + } + + uses { + interface Resource as SpiResource; + interface SpiByte; + interface SpiPacket; + interface State as WorkingState; + + interface Leds; + } +} + +implementation { + + enum { + RESOURCE_COUNT = uniqueCount( "CC2520Spi.Resource" ), + NO_HOLDER = 0xFF, + }; + + /** WorkingStates */ + enum { + S_IDLE, + S_BUSY, + }; + + /** Address to read/write on the CC2420, also maintains caller's client id */ + norace uint16_t m_addr; + + /** Each bit represents a client ID that is requesting SPI bus access */ + uint8_t m_requests = 0; + + /** The current client that owns the SPI bus */ + uint8_t m_holder = NO_HOLDER; + + /** TRUE if it is safe to release the SPI bus after all users say ok */ + bool release; + + /***************** Prototypes ****************/ + error_t attemptRelease(); + task void grant(); + + /***************** ChipSpiResource Commands ****************/ + /** + * Abort the release of the SPI bus. This must be called only with the + * releasing() event + */ + async command void ChipSpiResource.abortRelease() { + atomic release = FALSE; + } + + /** + * Release the SPI bus if there are no objections + */ + async command error_t ChipSpiResource.attemptRelease() { + return attemptRelease(); + } + + /***************** Resource Commands *****************/ + async command error_t Resource.request[ uint8_t id ]() { + + atomic { + if ( call WorkingState.requestState(S_BUSY) == SUCCESS ) { + m_holder = id; + if(call SpiResource.isOwner()) { + post grant(); + + } else { + call SpiResource.request(); + } + + } else { + m_requests |= 1 << id; + } + } + return SUCCESS; + } + + async command error_t Resource.immediateRequest[ uint8_t id ]() { + error_t error; + + atomic { + if ( call WorkingState.requestState(S_BUSY) != SUCCESS ) { + return EBUSY; + } + + + if(call SpiResource.isOwner()) { + m_holder = id; + error = SUCCESS; + + } else if ((error = call SpiResource.immediateRequest()) == SUCCESS ) { + m_holder = id; + + } else { + call WorkingState.toIdle(); + } + } + return error; + } + + async command error_t Resource.release[ uint8_t id ]() { + uint8_t i; + atomic { + if ( m_holder != id ) { + return FAIL; + } + + m_holder = NO_HOLDER; + if ( !m_requests ) { + call WorkingState.toIdle(); + attemptRelease(); + + } else { + for ( i = m_holder + 1; ; i++ ) { + i %= RESOURCE_COUNT; + + if ( m_requests & ( 1 << i ) ) { + m_holder = i; + m_requests &= ~( 1 << i ); + post grant(); + return SUCCESS; + } + } + } + } + + return SUCCESS; + } + + async command uint8_t Resource.isOwner[ uint8_t id ]() { + atomic return (m_holder == id); + } + + + /***************** SpiResource Events ****************/ + event void SpiResource.granted() { + + + post grant(); + + } + + /***************** Fifo Commands ****************/ + async command cc2520_status_t Fifo.beginRead[ uint8_t addr ]( uint8_t* data, + uint8_t len ) { + + cc2520_status_t status = 0; + + atomic { + if(call WorkingState.isIdle()) { + return status; + } + } + + // m_addr = addr | 0x40; + //printf("\n Fifo Read"); + //m_addr = addr; + + m_addr = CC2520_CMD_RXBUF; + status = call SpiByte.write( m_addr ); + m_addr = addr | 0x40; // For Reading ...used in SpiPacket.sendDone + call Fifo.continueRead[ addr ]( data, len ); + + return status; + + } + + async command error_t Fifo.continueRead[ uint8_t addr ]( uint8_t* data, + uint8_t len ) { + return call SpiPacket.send( NULL, data, len ); + } + + async command cc2520_status_t Fifo.write[ uint8_t addr ]( uint8_t* data, + uint8_t len ) { + + uint8_t status = 0; + + atomic { + if(call WorkingState.isIdle()) { + return status; + } + } + + m_addr = CC2520_CMD_TXBUF ; //addr; // CC2520_CMD_TXBUF + + status = call SpiByte.write( m_addr ); + call SpiPacket.send( data, NULL, len ); + + return status; + + } + + /***************** RAM Commands ****************/ + async command cc2520_status_t Ram.read[ uint16_t addr ]( uint8_t offset, + uint8_t* data, + uint8_t len ) { + + cc2520_status_t status = 0; + + atomic { + if(call WorkingState.isIdle()) { + return status; + } + } + + call SpiByte.write(CC2520_CMD_MEMORY_READ | (HI_UINT16(addr))); + + addr = LO_UINT16(addr); + addr += offset; + + //status = call SpiByte.write( addr | 0x80 ); + status = call SpiByte.write( addr ); // Edited by Lijo + //call SpiByte.write( ( ( addr >> 1 ) & 0xC0 ) | 0x20 ); + for ( ; len; len-- ) { + *data++ = call SpiByte.write( 0 ); + } + + return status; + + } + + + async command cc2520_status_t Ram.write[ uint16_t addr ]( uint8_t offset, + uint8_t* data, + uint8_t len ) { + + cc2520_status_t status = 0; + uint8_t tmpLen = len; + uint8_t * COUNT(tmpLen) tmpData = (uint8_t * COUNT(tmpLen))data; + + atomic { + if(call WorkingState.isIdle()) { + return status; + } + } + //printf("\n SpiP_Ram_Write"); + + //printf("\n Ram_rt : %x",call SpiByte.write(CC2520_CMD_MEMORY_WRITE | (HI_UINT16(addr)))); + call SpiByte.write(CC2520_CMD_MEMORY_WRITE | (HI_UINT16(addr))); + + addr = LO_UINT16(addr); + addr += offset; + + status = call SpiByte.write( addr ); // Edited by Lijo + // printf("\n Ram_rt : %x",call SpiByte.write( addr )); + //status = call SpiByte.write( addr | 0x80 ); + //call SpiByte.write( ( addr >> 1 ) & 0xc0 ); + for ( ; len; len-- ) { + // printf("\n Ram_rt : %x",); + (call SpiByte.write( tmpData[tmpLen-len] )); + } + + return status; + + } + + /***************** Register Commands ****************/ + async command cc2520_status_t Reg.read[ uint8_t addr ]( uint16_t* data ) { + + cc2520_status_t status = 0; + + atomic { + if(call WorkingState.isIdle()) { + return status; + } + } + + //call SpiByte.write( CC2520_CMD_MEMORY_READ | (HI_UINT16(addr)) ); + //call SpiByte.write( LO_UINT16(addr) ); + //status = call SpiByte.write( addr | 0x40 ); + //printf("Memory Read: %x , Register Address : %x \n", CC2520_CMD_MEMORY_WRITE,addr); + call SpiByte.write( CC2520_CMD_MEMORY_READ ); + call SpiByte.write(addr); + call SpiByte.write( 0x00 ); + //printf("CC2520 Status: %x \n", call SpiByte.write( 0x00 )); + + /**data = (uint16_t)call SpiByte.write( 0 ) << 8; + *data |= call SpiByte.write( 0 );*/ + + *data =0; + + + return status; + + } + + async command cc2520_status_t Reg.write[ uint8_t addr ]( uint16_t data ) { + + atomic { + if(call WorkingState.isIdle()) { + return 0; + } + } + + if(addr <= CC2520_FREG_MASK) + { + // we can use 1 byte less to write this register using the + // register write command + + //ASSERT( addr == (addr & CC2520_FREG_MASK) ); + addr = (addr & CC2520_FREG_MASK); + //printf(" Register Address : %x , Data : %x\n", (CC2520_CMD_MEMORY_WRITE ),addr); + + //status.value = call SpiByte.write(CC2520_CMD_REGISTER_WRITE | reg); + //call SpiByte.write(CC2520_CMD_REGISTER_WRITE | addr); + call SpiByte.write(CC2520_CMD_MEMORY_WRITE); + call SpiByte.write(addr); + + } + else + { + // we have to use the memory write command as the register is in + // SREG + + //ASSERT( addr == (addr & CC2520_SREG_MASK) ); + addr = (addr & CC2520_SREG_MASK); + // printf(" Register Address : %x , Data : %x\n", (addr),data); + // the register has to be below the 0x100 memory address. Thus, we + // don't have to add anything to the MEMORY_WRITE command. + call SpiByte.write(CC2520_CMD_MEMORY_WRITE); + call SpiByte.write(addr); + + } + + + //call SpiByte.write( addr ); + //call SpiByte.write( data >> 8 ); + //return call SpiByte.write( data & 0xff ); + //call SpiByte.write( CC2520_CMD_MEMORY_WRITE ); + //call SpiByte.write(addr); + // call SpiByte.write( data ); + + // printf("Memory Write: %x , Register Address : %x , Data : %x\n", CC2520_CMD_MEMORY_WRITE,addr,data); + //printf("Value 0: %x Value1: %x \n", *(data+0),*(data+1)); + //call SpiByte.write( CC2520_CMD_MEMORY_WRITE | (HI_UINT16(addr)) ); + //call SpiByte.write( LO_UINT16(addr) ); + //return call SpiByte.write( 0x32 ); + + return call SpiByte.write((data & 0xFF)); // Edited by Lijo + } + + + /***************** Strobe Commands ****************/ + async command cc2520_status_t Strobe.strobe[ uint8_t addr ]() { + atomic { + if(call WorkingState.isIdle()) { + return 0; + } + } + if(addr == CC2520_CMD_SRFOFF ) + return call SpiByte.write( addr ); + } + + /***************** SpiPacket Events ****************/ + async event void SpiPacket.sendDone( uint8_t* tx_buf, uint8_t* rx_buf, + uint16_t len, error_t error ) { + if ( m_addr & 0x40 ) { + signal Fifo.readDone[ m_addr & ~0x40 ]( rx_buf, len, error ); + } else { + signal Fifo.writeDone[ m_addr ]( tx_buf, len, error ); + } + + } + + /***************** Functions ****************/ + error_t attemptRelease() { + if(m_requests > 0 + || m_holder != NO_HOLDER + || !call WorkingState.isIdle()) { + return FAIL; + } + + atomic release = TRUE; + signal ChipSpiResource.releasing(); + atomic { + if(release) { + call SpiResource.release(); + return SUCCESS; + } + } + + return EBUSY; + } + + task void grant() { + uint8_t holder; + atomic { + holder = m_holder; + } + signal Resource.granted[ holder ](); + } + + /***************** Defaults ****************/ + default event void Resource.granted[ uint8_t id ]() { + } + + default async event void Fifo.readDone[ uint8_t addr ]( uint8_t* rx_buf, uint8_t rx_len, error_t error ) { + } + + default async event void Fifo.writeDone[ uint8_t addr ]( uint8_t* tx_buf, uint8_t tx_len, error_t error ) { + } + + default async event void ChipSpiResource.releasing() { + } + +} diff --git a/cc2520/spi/CC2520SpiWireC.nc b/cc2520/spi/CC2520SpiWireC.nc new file mode 100644 index 0000000000..575a72dbc8 --- /dev/null +++ b/cc2520/spi/CC2520SpiWireC.nc @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * @author Jonathan Hui + * @version $Revision: 1.1 $ $Date: 2007/07/04 00:37:16 $ + */ + +configuration CC2520SpiWireC { + + provides interface Resource[ uint8_t id ]; + provides interface ChipSpiResource; + provides interface CC2520Fifo as Fifo[ uint8_t id ]; + provides interface CC2520Ram as Ram[ uint16_t id ]; + provides interface CC2520Register as Reg[ uint8_t id ]; + provides interface CC2520Strobe as Strobe[ uint8_t id ]; + +} + +implementation { + + components CC2520SpiP as SpiP; + Resource = SpiP; + Fifo = SpiP; + Ram = SpiP; + Reg = SpiP; + Strobe = SpiP; + ChipSpiResource = SpiP; + + components new StateC() as WorkingStateC; + SpiP.WorkingState -> WorkingStateC; + + components new HplCC2520SpiC(); + SpiP.SpiResource -> HplCC2520SpiC; + SpiP.SpiByte -> HplCC2520SpiC; + SpiP.SpiPacket -> HplCC2520SpiC; + + components LedsC; + SpiP.Leds -> LedsC; + +} diff --git a/cc2520/transmit/CC2520TransmitC.nc b/cc2520/transmit/CC2520TransmitC.nc new file mode 100644 index 0000000000..ac09fdca79 --- /dev/null +++ b/cc2520/transmit/CC2520TransmitC.nc @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * Implementation of the transmit path for the ChipCon CC2520 radio. + * + * @author Jonathan Hui + * @version $Revision: 1.2 $ $Date: 2008/06/17 07:28:24 $ + */ + +#include "IEEE802154.h" + +configuration CC2520TransmitC { + + provides { + interface StdControl; + interface CC2520Transmit; + interface RadioBackoff; + interface ReceiveIndicator as EnergyIndicator; + interface ReceiveIndicator as ByteIndicator; + } +} + +implementation { + + components CC2520TransmitP; + StdControl = CC2520TransmitP; + CC2520Transmit = CC2520TransmitP; + RadioBackoff = CC2520TransmitP; + EnergyIndicator = CC2520TransmitP.EnergyIndicator; + ByteIndicator = CC2520TransmitP.ByteIndicator; + + components MainC; + MainC.SoftwareInit -> CC2520TransmitP; + MainC.SoftwareInit -> Alarm; + + components AlarmMultiplexC as Alarm; + CC2520TransmitP.BackoffTimer -> Alarm; + + components HplCC2520PinsC as Pins; + CC2520TransmitP.CCA -> Pins.CCA; + CC2520TransmitP.CSN -> Pins.CSN; + CC2520TransmitP.SFD -> Pins.SFD; + + components HplCC2520InterruptsC as Interrupts; + CC2520TransmitP.CaptureSFD -> Interrupts.CaptureSFD; + + components new CC2520SpiC() as Spi; + CC2520TransmitP.SpiResource -> Spi; + CC2520TransmitP.ChipSpiResource -> Spi; + CC2520TransmitP.SNOP -> Spi.SNOP; + CC2520TransmitP.STXON -> Spi.STXON; + CC2520TransmitP.STXONCCA -> Spi.STXONCCA; + CC2520TransmitP.SFLUSHTX -> Spi.SFLUSHTX; + CC2520TransmitP.TXPOWER -> Spi.TXPOWER; + CC2520TransmitP.EXCFLAG1 -> Spi.EXCFLAG1; + CC2520TransmitP.TXFIFO -> Spi.TXFIFO; + CC2520TransmitP.TXFIFO_RAM -> Spi.TXFIFO_RAM; +#ifdef CC2520_HW_SECURITY + CC2520TransmitP.TXFRAME -> Spi.TXFRAME; + CC2520TransmitP.TXNonce -> Spi.TXNONCE; + + components new HplCC2520SpiC(); + CC2520TransmitP.SpiByte -> HplCC2520SpiC; + + components CC2520KeyC; + CC2520TransmitP.CC2520Key -> CC2520KeyC; + + +#endif + // CC2520TransmitP.MDMCTRL1 -> Spi.MDMCTRL1; + + components CC2520ReceiveC; + CC2520TransmitP.CC2520Receive -> CC2520ReceiveC; + + components CC2520PacketC; + CC2520TransmitP.CC2520Packet -> CC2520PacketC; + CC2520TransmitP.CC2520PacketBody -> CC2520PacketC; + CC2520TransmitP.PacketTimeStamp -> CC2520PacketC; + CC2520TransmitP.PacketTimeSyncOffset -> CC2520PacketC; + + + components LedsC; + CC2520TransmitP.Leds -> LedsC; + + #if defined(LCD_DEBUG) + components LcdC; + CC2520TransmitP.Lcd -> LcdC; + #endif + +} diff --git a/cc2520/transmit/CC2520TransmitP.nc b/cc2520/transmit/CC2520TransmitP.nc new file mode 100644 index 0000000000..b56820542f --- /dev/null +++ b/cc2520/transmit/CC2520TransmitP.nc @@ -0,0 +1,932 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * @author Jonathan Hui + * @author David Moss + * @author Jung Il Choi Initial SACK implementation + * @version $Revision: 1.9 $ $Date: 2008/07/11 19:21:23 $ + */ + +#include "CC2520.h" +#include "CC2520TimeSyncMessage.h" +#include "crc.h" +#include "message.h" + +#ifdef CC2520_HW_SECURITY + #define LOW_PRIORITY 0 + #define HIGH_PRIORITY 1 +#endif + +module CC2520TransmitP @safe() { + + provides interface Init; + provides interface StdControl; + provides interface CC2520Transmit as Send; + provides interface RadioBackoff; + provides interface ReceiveIndicator as EnergyIndicator; + provides interface ReceiveIndicator as ByteIndicator; + + uses interface Alarm as BackoffTimer; + uses interface CC2520Packet; + uses interface CC2520PacketBody; + uses interface PacketTimeStamp; + uses interface PacketTimeSyncOffset; + uses interface GpioCapture as CaptureSFD; + uses interface GeneralIO as CCA; + uses interface GeneralIO as CSN; + uses interface GeneralIO as SFD; + + uses interface Resource as SpiResource; + uses interface ChipSpiResource; + uses interface CC2520Fifo as TXFIFO; + uses interface CC2520Ram as TXFIFO_RAM; +#ifdef CC2520_HW_SECURITY + uses interface CC2520Ram as TXFRAME; + uses interface SpiByte; + uses interface CC2520Key; + uses interface CC2520Ram as TXNonce; +#endif + uses interface CC2520Register as TXPOWER; + uses interface CC2520Register as EXCFLAG1; + uses interface CC2520Strobe as SNOP; + uses interface CC2520Strobe as STXON; + uses interface CC2520Strobe as STXONCCA; + uses interface CC2520Strobe as SFLUSHTX; + //uses interface CC2520Register as MDMCTRL1; + + uses interface CC2520Receive; + uses interface Leds; + +#if defined(LCD_DEBUG) + uses interface Lcd; +#endif +} + +implementation { + + typedef enum { + S_STOPPED, + S_STARTED, + S_LOAD, + S_SAMPLE_CCA, + S_BEGIN_TRANSMIT, + S_SFD, + S_EFD, + S_ACK_WAIT, + S_CANCEL, + } cc2520_transmit_state_t; + + // This specifies how many jiffies the stack should wait after a + // TXACTIVE to receive an SFD interrupt before assuming something is + // wrong and aborting the send. There seems to be a condition + // on the micaZ where the SFD interrupt is never handled. + enum { + CC2520_ABORT_PERIOD = 200 //320 + }; + + norace message_t * ONE_NOK m_msg; + + norace bool m_cca; + + norace uint8_t m_tx_power; + + cc2520_transmit_state_t m_state = S_STOPPED; + + bool m_receiving = FALSE; + + uint16_t m_prev_time; + + /** Byte reception/transmission indicator */ + bool sfdHigh; + + /** Let the CC2420 driver keep a lock on the SPI while waiting for an ack */ + bool abortSpiRelease; + + /** Total CCA checks that showed no activity before the NoAck LPL send */ + norace int8_t totalCcaChecks; + + /** The initial backoff period */ + norace uint16_t myInitialBackoff; + + /** The congestion backoff period */ + norace uint16_t myCongestionBackoff; + + #ifdef CC2520_HW_SECURITY + uint8_t read_memory[60]; + void encryptTXFIFO(void); + uint8_t getMICLength(uint8_t SecurityLevel) ; +#endif + + + /***************** Prototypes ****************/ + error_t send( message_t * ONE p_msg, bool cca ); + error_t resend( bool cca ); + + void loadTXFIFO(); + void attemptSend(); + void congestionBackoff(); + error_t acquireSpiResource(); + error_t releaseSpiResource(); + void signalDone( error_t err ); + + + /***************** Init Commands *****************/ + command error_t Init.init() { + call CCA.makeInput(); + call CSN.makeOutput(); + call SFD.makeInput(); + return SUCCESS; + } + + /***************** StdControl Commands ****************/ + command error_t StdControl.start() { + atomic { + call CaptureSFD.captureRisingEdge(); + m_state = S_STARTED; + m_receiving = FALSE; + abortSpiRelease = FALSE; + m_tx_power = 0; + //if(PRINTF_ENABLED) + + } + return SUCCESS; + } + + command error_t StdControl.stop() { + atomic { + m_state = S_STOPPED; + call BackoffTimer.stop(); + call CaptureSFD.disable(); + call SpiResource.release(); // REMOVE + call CSN.set(); + //if(PRINTF_ENABLED) + //printf("\n Transmit stoped.."); + } + return SUCCESS; + } + + + /**************** Send Commands ****************/ + async command error_t Send.send( message_t* ONE p_msg, bool useCca ) { + //if(PRINTF_ENABLED) + //printf("\n Send_TransmitP");printfflush(); + //return send( p_msg, useCca ); + return send(p_msg,useCca); + } + + async command error_t Send.resend(bool useCca) { + //if(PRINTF_ENABLED) + //printf("\n Resend_TransmitP"); + return resend( useCca ); + } + + async command error_t Send.cancel() { + atomic { + switch( m_state ) { + case S_LOAD: + case S_SAMPLE_CCA: + case S_BEGIN_TRANSMIT: + m_state = S_CANCEL; + break; + + default: + // cancel not allowed while radio is busy transmitting + return FAIL; + } + } + + return SUCCESS; + } + + async command error_t Send.modify( uint8_t offset, uint8_t* buf, + uint8_t len ) { + call CSN.clr(); + call TXFIFO_RAM.write( offset, buf, len ); + call CSN.set(); + //if(PRINTF_ENABLED) + //printf("\n Send.modify"); + return SUCCESS; + } + + /***************** Indicator Commands ****************/ + command bool EnergyIndicator.isReceiving() { + return !(call CCA.get()); + } + + command bool ByteIndicator.isReceiving() { + bool high; + atomic high = sfdHigh; + return high; + } + + + /***************** RadioBackoff Commands ****************/ + /** + * Must be called within a requestInitialBackoff event + * @param backoffTime the amount of time in some unspecified units to backoff + */ + async command void RadioBackoff.setInitialBackoff(uint16_t backoffTime) { + myInitialBackoff = backoffTime + 1; + } + + /** + * Must be called within a requestCongestionBackoff event + * @param backoffTime the amount of time in some unspecified units to backoff + */ + async command void RadioBackoff.setCongestionBackoff(uint16_t backoffTime) { + myCongestionBackoff = backoffTime + 1; + } + + async command void RadioBackoff.setCca(bool useCca) { + } + + + inline uint32_t time16to32(uint16_t time, uint32_t recent_time) + { + if ((recent_time&0xFFFF)data + (call PacketTimeSyncOffset.get(m_msg) - sizeof(cc2520_header_t)); + timesync_radio_t *timesync = (timesync_radio_t*)taddr; + // set timesync event time as the offset between the event time and the SFD interrupt time (TEP 133) + *timesync -= time32; + call CSN.clr(); + call TXFIFO_RAM.write( call PacketTimeSyncOffset.get(m_msg), (uint8_t*)timesync, sizeof(timesync_radio_t) ); + call CSN.set(); + // if(PRINTF_ENABLED) + //printf("\n S_SFD2"); + } + + if ( (call CC2520PacketBody.getHeader( m_msg ))->fcf & ( 1 << IEEE154_FCF_ACK_REQ ) ) { + // This is an ack packet, don't release the chip's SPI bus lock. + abortSpiRelease = TRUE; + } + releaseSpiResource(); + //if(PRINTF_ENABLED) + //printf("\n Backoff Timer Stoped"); + call BackoffTimer.stop(); + + + if ( ( ( (call CC2520PacketBody.getHeader( m_msg ))->fcf >> IEEE154_FCF_FRAME_TYPE ) & 7 ) == IEEE154_TYPE_DATA ) { + call PacketTimeStamp.set(m_msg, time32); + } + + if ( call SFD.get() ) { + //if(PRINTF_ENABLED) + // printf("\n SFD.get1"); + break; + } + /** Fall Through because the next interrupt was already received */ + + case S_EFD: + sfdHigh = FALSE; + call CaptureSFD.captureRisingEdge(); + + //printf("\n S_EFD"); + if ( (call CC2520PacketBody.getHeader( m_msg ))->fcf & ( 1 << IEEE154_FCF_ACK_REQ ) ) { + m_state = S_ACK_WAIT; + call BackoffTimer.start( CC2520_ACK_WAIT_DELAY ); + } else { +// call Leds.led0Toggle(); + signalDone(SUCCESS); + } + //if(PRINTF_ENABLED) + //printf("\n S_EFD.get2"); + if ( !call SFD.get() ) { + break; + } + /** Fall Through because the next interrupt was already received */ + + default: + if ( !m_receiving ) { + sfdHigh = TRUE; + call CaptureSFD.captureFallingEdge(); + call CC2520Receive.sfd( time32 ); + m_receiving = TRUE; + m_prev_time = time; + //if(PRINTF_ENABLED) + //printf("\n Sfd default"); + if ( call SFD.get() ) { + // wait for the next interrupt before moving on + return; + } + } + //if(PRINTF_ENABLED) + // printf("\n Sfd default1"); + sfdHigh = FALSE; + call CaptureSFD.captureRisingEdge(); + m_receiving = FALSE; + if ( time - m_prev_time < 10 ) { + call CC2520Receive.sfd_dropped(); + if (m_msg) + call PacketTimeStamp.clear(m_msg); + } + break; + + } + } + } + + /***************** ChipSpiResource Events ****************/ + async event void ChipSpiResource.releasing() { + if(abortSpiRelease) { + call ChipSpiResource.abortRelease(); + } + } + + + /***************** CC2420Receive Events ****************/ + /** + * If the packet we just received was an ack that we were expecting, + * our send is complete. + */ + async event void CC2520Receive.receive( uint8_t type, message_t* ack_msg ) { + cc2520_header_t* ack_header; + cc2520_header_t* msg_header; + cc2520_metadata_t* msg_metadata; + uint8_t* ack_buf; + uint8_t length; + //if(PRINTF_ENABLED) + //printf("\n cc2520 receive_Tx"); + if ( type == IEEE154_TYPE_ACK && m_msg) { + ack_header = call CC2520PacketBody.getHeader( ack_msg ); + msg_header = call CC2520PacketBody.getHeader( m_msg ); + + + if ( m_state == S_ACK_WAIT && msg_header->dsn == ack_header->dsn ) { + call BackoffTimer.stop(); + + msg_metadata = call CC2520PacketBody.getMetadata( m_msg ); + ack_buf = (uint8_t *) ack_header; + length = ack_header->length; + + msg_metadata->ack = TRUE; + msg_metadata->rssi = ack_buf[ length - 1 ]; + msg_metadata->lqi = ack_buf[ length ] & 0x7f; + signalDone(SUCCESS); + } + } + } + + /***************** SpiResource Events ****************/ + event void SpiResource.granted() { + uint8_t cur_state; + //printf("\n spi granted");printfflush(); + atomic { + cur_state = m_state; + } + + switch( cur_state ) { + case S_LOAD: + loadTXFIFO(); + break; + + case S_BEGIN_TRANSMIT: + attemptSend(); + break; + + case S_CANCEL: + call CSN.clr(); + call SFLUSHTX.strobe(); + call CSN.set(); + releaseSpiResource(); + atomic { + m_state = S_STARTED; + } + signal Send.sendDone( m_msg, ECANCEL ); + break; + + default: + releaseSpiResource(); + break; + } + } + + /***************** TXFIFO Events ****************/ + /** + * The TXFIFO is used to load packets into the transmit buffer on the + * chip + */ + async event void TXFIFO.writeDone( uint8_t* tx_buf, uint8_t tx_len, + error_t error ) { + // printf("\n TXFIFO writeDone");printfflush(); + call CSN.set(); + + if ( m_state == S_CANCEL ) { + atomic { + call CSN.clr(); + call SFLUSHTX.strobe(); + call CSN.set(); + //printf("\n TX FIFO SFLUSH"); + } + + releaseSpiResource(); + m_state = S_STARTED; + //printf("\n State Started"); + signal Send.sendDone( m_msg, ECANCEL ); + + } else if ( !m_cca ) { + + atomic { + m_state = S_BEGIN_TRANSMIT; + //printf("\n State Begin"); + + } + + attemptSend(); + //printf("\n TX FIFO attempt send"); + //printfflush(); + } else { + + releaseSpiResource(); + atomic { + m_state = S_SAMPLE_CCA; + //printf("\n State CCA"); + } + + signal RadioBackoff.requestInitialBackoff(m_msg); + + call BackoffTimer.start(myInitialBackoff); + //printf("\n TX FIFO back offTimer"); + //printfflush(); + } + } + + + async event void TXFIFO.readDone( uint8_t* tx_buf, uint8_t tx_len, + error_t error ) { + } + + + /***************** Timer Events ****************/ + /** + * The backoff timer is mainly used to wait for a moment before trying + * to send a packet again. But we also use it to timeout the wait for + * an acknowledgement, and timeout the wait for an SFD interrupt when + * we should have gotten one. + */ + async event void BackoffTimer.fired() { + atomic { + switch( m_state ) { + + case S_SAMPLE_CCA : + // sample CCA and wait a little longer if free, just in case we + // sampled during the ack turn-around window + if ( call CCA.get() ) { + + + m_state = S_BEGIN_TRANSMIT; + call BackoffTimer.start( CC2520_TIME_ACK_TURNAROUND ); + // printf("\nbackoff_Timer"); + } else { + + congestionBackoff(); + //printf("\n CCA Congestion"); + } + break; + + case S_BEGIN_TRANSMIT: + case S_CANCEL: + if ( acquireSpiResource() == SUCCESS ) { + attemptSend(); + + //printf("\n backoff_Send"); + }else{ + //printf("\n failed to get the resource"); + //printfflush(); + } + break; + + case S_ACK_WAIT: + + signalDone( SUCCESS ); + //printf("\n attempt Sucess"); printfflush(); + break; + + case S_SFD: + // We didn't receive an SFD interrupt within CC2420_ABORT_PERIOD + // jiffies. Assume something is wrong. + call SFLUSHTX.strobe(); + call CaptureSFD.captureRisingEdge(); + releaseSpiResource(); + + signalDone( ERETRY ); + //printf("\n S_SFD"); printfflush(); + break; + + default: + break; + } + } + } + + /***************** Functions ****************/ + /** + * Set up a message to be sent. First load it into the outbound tx buffer + * on the chip, then attempt to send it. + * @param *p_msg Pointer to the message that needs to be sent + * @param cca TRUE if this transmit should use clear channel assessment + */ + error_t send( message_t* ONE p_msg, bool cca ) { + atomic { + if (m_state == S_CANCEL) { + //printf("\n ECANCEL"); + + return ECANCEL; + } + + if ( m_state != S_STARTED ) { + //printf("\n FAIL"); + + return FAIL; + } + + m_state = S_LOAD; + m_cca = cca; + m_msg = p_msg; + totalCcaChecks = 0; + } + + + if ( acquireSpiResource() == SUCCESS ) { + + #ifdef CC2520_HW_SECURITY + encryptTXFIFO(); + #endif + loadTXFIFO(); + + + }else{ + } + + return SUCCESS; + } + + /** + * Resend a packet that already exists in the outbound tx buffer on the + * chip + * @param cca TRUE if this transmit should use clear channel assessment + */ + error_t resend( bool cca ) { + + atomic { + if (m_state == S_CANCEL) { + return ECANCEL; + } + + if ( m_state != S_STARTED ) { + return FAIL; + } + + m_cca = cca; + m_state = cca ? S_SAMPLE_CCA : S_BEGIN_TRANSMIT; + totalCcaChecks = 0; + } + + if(m_cca) { + signal RadioBackoff.requestInitialBackoff(m_msg); + call BackoffTimer.start( myInitialBackoff ); + + } else if ( acquireSpiResource() == SUCCESS ) { + attemptSend(); + } + + return SUCCESS; + } + + /** + * Attempt to send the packet we have loaded into the tx buffer on + * the radio chip. The STXONCCA will send the packet immediately if + * the channel is clear. If we're not concerned about whether or not + * the channel is clear (i.e. m_cca == FALSE), then STXON will send the + * packet without checking for a clear channel. + * + * If the packet didn't get sent, then congestion == TRUE. In that case, + * we reset the backoff timer and try again in a moment. + * + * If the packet got sent, we should expect an SFD interrupt to take + * over, signifying the packet is getting sent. + */ + void attemptSend() { + uint8_t status; + bool congestion = TRUE; + //printf("\n ReSend"); + atomic { + if (m_state == S_CANCEL) { + call CSN.set(); + call CSN.clr(); + call SFLUSHTX.strobe(); + releaseSpiResource(); + call CSN.set(); + m_state = S_STARTED; + // printf("\n S_CANCEL"); + signal Send.sendDone( m_msg, ECANCEL ); + return; + } + // printf("\n STXONCCA"); + call CSN.set(); + call CSN.clr(); + + status = m_cca ? call STXONCCA.strobe() : call STXON.strobe(); + call CSN.set(); + call CSN.clr(); + if ( !( status & CC2520_STATUS_TX_ACTIVE ) ) { + + status = call SNOP.strobe(); + if ( status & CC2520_STATUS_TX_ACTIVE ) { + + congestion = FALSE; + } + } + + m_state = congestion ? S_SAMPLE_CCA : S_SFD; + call CSN.set(); + } + + call CSN.clr(); + //printf("\n Tx status: %x",(call SNOP.strobe()));printfflush(); + call CSN.set(); + if ( congestion ) { + totalCcaChecks = 0; + releaseSpiResource(); + congestionBackoff(); + + } else { + call BackoffTimer.start(CC2520_ABORT_PERIOD); + //printf("\n Start BackoffTimer");printfflush(); + } + } + + + /** + * Congestion Backoff + */ + void congestionBackoff() { + atomic { + signal RadioBackoff.requestCongestionBackoff(m_msg); + call BackoffTimer.start(myCongestionBackoff); + } + } + + error_t acquireSpiResource() { + + error_t error = call SpiResource.immediateRequest(); + + if ( error != SUCCESS ) { + // printf("\nspi error:%d",error);printfflush(); + call SpiResource.request(); + } + return error; + } + + error_t releaseSpiResource() { + call SpiResource.release(); + return SUCCESS; + } + + #ifdef CC2520_HW_SECURITY + + uint8_t getMICLength(uint8_t securityLevel) { + + if(securityLevel == SEC_MIC_32 || securityLevel == SEC_ENC_MIC_32) + return 4; + else if(securityLevel == SEC_MIC_64 || securityLevel == SEC_ENC_MIC_64) + return 8; + else if(securityLevel == SEC_ENC_MIC_128 || securityLevel == SEC_ENC_MIC_128) + return 16; + return 0; + } + + + void reverseArray(uint8_t *ptr,uint8_t length) + { + uint8_t i,tmp; + for(i=0; i< length/2;i++) + { + tmp = ptr[i]; + ptr[i] = ptr[length -i]; + ptr[length-i] = tmp; + } + } + + void readFrame() + { + uint8_t i; + cc2520_header_t* header = call CC2520PacketBody.getHeader( m_msg ); + memset(read_memory,0,sizeof(read_memory)); + call CSN.clr(); + call TXFRAME.read(0, read_memory, header->length); + call CSN.set(); + //printf("Packet After Encryption\n"); + //for(i=0;ilength;i++) + // printf("%x\t",read_memory[i]); + //printfflush(); + } + + + + void encryptTXFIFO(void) { + cc2520_header_t* header = call CC2520PacketBody.getHeader( m_msg ); + uint8_t *ptr = (uint8_t *)header; + //uint32_t frame_counter = header->secHdr.frameCounter; + uint8_t micLength = getMICLength(header->secHdr.secLevel); + uint8_t encryptLength = header->length - CC2520_SIZE - micLength; + uint8_t authLength = CC2520_SIZE - MAC_FOOTER_SIZE; + + /* + * Step1 : Load the frame in the CC2520 RAM with MEMWR instructions + */ + + call CSN.clr(); + call TXFRAME.write(0, ptr,header->length-micLength-1); + call CSN.set(); + + /*Step 2: Perform the CCM operation on the address the frame was loaded to +1(excluding the length byte)*/ + /* + * CCM Instruction: + * + * CCM(uint8_t p, uint8_t k, uint8_t c, uint8_t n, uint16_t a,uint16_t e, + * uint8_t f, uint8_t m) + * + * p --> priority (Either 0 or 1) + * k --> Pointer to 128 bit Key Address. The key is stored in reversed byte + * order starting at address 16 * k + * c --> Number of bytes to authenticate and encrypt, typically the frame + * payload. Encrypt and authenticate c bytes starting at address a+f. * If c = 0 it will only authenticate, no encryption is + * performed + * n --> Pointer to 128 bit concatenation of flags,nonce and counter.Note + * that this value is stored in reverse byte order.value = addr/16 + * + * a --> Frame buffer,the whole frame except the length field + * + * e --> Pointer to start of output data.set to 0 for inline authentication/ + * encryption + * + * f --> Authenticate F bytes of plaintext starting at address A.This + * parameter is also used to calculate the starting address of the c * bytes that will be both encrypted and authenticated + * m --> Mic length + * + */ + call CSN.clr(); + call SpiByte.write(CC2520_CMD_CCM | HIGH_PRIORITY); + call SpiByte.write(CC2520_RAM_KEY0/16); + call SpiByte.write(encryptLength); + call SpiByte.write(CC2520_RAM_TXNONCE/16); + call SpiByte.write((HI_UINT16(CC2520_RAM_TXFRAME+1)<<4)|HI_UINT16(0)); + call SpiByte.write(LO_UINT16(CC2520_RAM_TXFRAME+1)); + call SpiByte.write(LO_UINT16(0)); //For Inline Security + call SpiByte.write(authLength); + call SpiByte.write(micLength); + call CSN.set(); + call CSN.clr(); + while(call SNOP.strobe() & 0x08); + call CSN.set(); + + call CSN.clr(); + call TXFRAME.read(0, (uint8_t *)header, header->length-1); + call CSN.set(); + + /*Step3 :Move the frame to the TXFIFO with the TXBUFCP Instruction*/ + /* Not working this instruction so we are reading directly from RAM + and writing into FIFO */ + /*call CSN.clr(); + call SpiByte.write(CC2520_CMD_TXBUFCP | HIGH_PRIORITY); + call SpiByte.write(header->length-1); + call SpiByte.write(HI_UINT16(CC2520_RAM_TXFRAME)); + call SpiByte.write(LO_UINT16(CC2520_RAM_TXFRAME)); + call CSN.set();*/ + /* Wait for the instruction to execute*/ + /* + call CSN.clr(); + while(call SNOP.strobe() & 0x08); + call CSN.set(); + */ + } + + event void CC2520Key.setKeyDone(uint8_t status) + { + } + + event void CC2520Key.getKeyDone(uint8_t status, uint8_t *ptr) + { + } + + #endif + /** + * Setup the packet transmission power and load the tx fifo buffer on + * the chip with our outbound packet. + * + * Warning: the tx_power metadata might not be initialized and + * could be a value other than 0 on boot. Verification is needed here + * to make sure the value won't overstep its bounds in the TXCTRL register + * and is transmitting at max power by default. + * + * It should be possible to manually calculate the packet's CRC here and + * tack it onto the end of the header + payload when loading into the TXFIFO, + * so the continuous modulation low power listening strategy will continually + * deliver valid packets. This would increase receive reliability for + * mobile nodes and lossy connections. The crcByte() function should use + * the same CRC polynomial as the CC2420's AUTOCRC functionality. + */ + void loadTXFIFO() { + cc2520_header_t* header = call CC2520PacketBody.getHeader( m_msg ); + uint8_t tx_power = (call CC2520PacketBody.getMetadata( m_msg ))->tx_power; + //printf("\n Transmit Power 0 : %x",tx_power ); + if ( !tx_power ) { + tx_power = CC2520_DEF_RFPOWER; + + // printf("\n Defined Power 0 : %x",CC2520_DEF_RFPOWER ); + } + + call CSN.clr(); + + if ( m_tx_power != tx_power ) { + /* call TXPOWER.write( ( 2 << CC2420_TXCTRL_TXMIXBUF_CUR ) | + ( 3 << CC2420_TXCTRL_PA_CURRENT ) | + ( 1 << CC2420_TXCTRL_RESERVED ) | + ( (tx_power & 0x1F) << CC2420_TXCTRL_PA_LEVEL ) );*/ + //call TXPOWER.write( (tx_power)); + //printf("\n Transmit Power 1 : %x",CC2520_DEF_RFPOWER ); + //printf("\n M Transmit Power 2 : %x",m_tx_power ); + } + //printf("\n Transmit Power 3 : %x",tx_power ); + //printf("\n M Transmit Power 4 : %x",m_tx_power ); + + m_tx_power = tx_power; + + { + uint8_t tmpLen __DEPUTY_UNUSED__ = header->length - 1; + call TXFIFO.write(TCAST(uint8_t * COUNT(tmpLen), header), header->length - 1); + //printf("\n write in the txfifo");printfflush(); + } + } + + void signalDone( error_t err ) { + atomic m_state = S_STARTED; + abortSpiRelease = FALSE; + // printf("\n attempting to release chipspi");printfflush(); + call ChipSpiResource.attemptRelease(); + signal Send.sendDone( m_msg, err ); + } +} + diff --git a/cc2520/transmit/CC2520TransmitP2.nc b/cc2520/transmit/CC2520TransmitP2.nc new file mode 100644 index 0000000000..14442af26f --- /dev/null +++ b/cc2520/transmit/CC2520TransmitP2.nc @@ -0,0 +1,723 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * 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 Arch Rock Corporation 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 + * ARCHED ROCK OR ITS 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 + */ + +/** + * @author Jonathan Hui + * @author David Moss + * @author Jung Il Choi Initial SACK implementation + * @version $Revision: 1.9 $ $Date: 2008/07/11 19:21:23 $ + */ + +#include "CC2520.h" +#include "CC2520TimeSyncMessage.h" +#include "crc.h" +#include "message.h" +#include "printf.h" + +module CC2520TransmitP @safe() { + + provides interface Init; + provides interface StdControl; + provides interface CC2520Transmit as Send; + provides interface RadioBackoff; + provides interface ReceiveIndicator as EnergyIndicator; + provides interface ReceiveIndicator as ByteIndicator; + + uses interface Alarm as BackoffTimer; + uses interface CC2520Packet; + uses interface CC2520PacketBody; + uses interface PacketTimeStamp; + uses interface PacketTimeSyncOffset; + uses interface GpioCapture as CaptureSFD; + uses interface GeneralIO as CCA; + uses interface GeneralIO as CSN; + uses interface GeneralIO as SFD; + + uses interface Resource as SpiResource; + uses interface ChipSpiResource; + uses interface CC2520Fifo as TXFIFO; + uses interface CC2520Ram as TXFIFO_RAM; + uses interface CC2520Register as TXPOWER; + uses interface CC2520Strobe as SNOP; + uses interface CC2520Strobe as STXON; + uses interface CC2520Strobe as STXONCCA; + uses interface CC2520Strobe as SFLUSHTX; + //uses interface CC2520Register as MDMCTRL1; + + uses interface CC2520Receive; + +} + +implementation { + + typedef enum { + S_STOPPED, + S_STARTED, + S_LOAD, + S_SAMPLE_CCA, + S_BEGIN_TRANSMIT, + S_SFD, + S_EFD, + S_ACK_WAIT, + S_CANCEL, + } cc2520_transmit_state_t; + + // This specifies how many jiffies the stack should wait after a + // TXACTIVE to receive an SFD interrupt before assuming something is + // wrong and aborting the send. There seems to be a condition + // on the micaZ where the SFD interrupt is never handled. + enum { + CC2520_ABORT_PERIOD = 320 + }; + + norace message_t * ONE_NOK m_msg; + + norace bool m_cca; + + norace uint8_t m_tx_power; + + cc2520_transmit_state_t m_state = S_STOPPED; + + bool m_receiving = FALSE; + + uint16_t m_prev_time; + + /** Byte reception/transmission indicator */ + bool sfdHigh; + + /** Let the CC2420 driver keep a lock on the SPI while waiting for an ack */ + bool abortSpiRelease; + + /** Total CCA checks that showed no activity before the NoAck LPL send */ + norace int8_t totalCcaChecks; + + /** The initial backoff period */ + norace uint16_t myInitialBackoff; + + /** The congestion backoff period */ + norace uint16_t myCongestionBackoff; + + + /***************** Prototypes ****************/ + error_t send( message_t * ONE p_msg, bool cca ); + error_t resend( bool cca ); + void loadTXFIFO(); + void attemptSend(); + void congestionBackoff(); + error_t acquireSpiResource(); + error_t releaseSpiResource(); + void signalDone( error_t err ); + + + /***************** Init Commands *****************/ + command error_t Init.init() { + call CCA.makeInput(); + call CSN.makeOutput(); + call SFD.makeInput(); + return SUCCESS; + } + + /***************** StdControl Commands ****************/ + command error_t StdControl.start() { + atomic { + call CaptureSFD.captureRisingEdge(); + m_state = S_STARTED; + m_receiving = FALSE; + abortSpiRelease = FALSE; + m_tx_power = 0; + printf("\n Transmit init.."); + } + return SUCCESS; + } + + command error_t StdControl.stop() { + atomic { + m_state = S_STOPPED; + call BackoffTimer.stop(); + call CaptureSFD.disable(); + call SpiResource.release(); // REMOVE + call CSN.set(); + printf("\n Transmit stoped.."); + } + return SUCCESS; + } + + + /**************** Send Commands ****************/ + async command error_t Send.send( message_t* ONE p_msg, bool useCca ) { + return send( p_msg, useCca ); + } + + async command error_t Send.resend(bool useCca) { + return resend( useCca ); + } + + async command error_t Send.cancel() { + atomic { + switch( m_state ) { + case S_LOAD: + case S_SAMPLE_CCA: + case S_BEGIN_TRANSMIT: + m_state = S_CANCEL; + break; + + default: + // cancel not allowed while radio is busy transmitting + return FAIL; + } + } + + return SUCCESS; + } + + async command error_t Send.modify( uint8_t offset, uint8_t* buf, + uint8_t len ) { + call CSN.clr(); + call TXFIFO_RAM.write( offset, buf, len ); + call CSN.set(); + printf("\n Send.modify"); + return SUCCESS; + } + + /***************** Indicator Commands ****************/ + command bool EnergyIndicator.isReceiving() { + return !(call CCA.get()); + } + + command bool ByteIndicator.isReceiving() { + bool high; + atomic high = sfdHigh; + return high; + } + + + /***************** RadioBackoff Commands ****************/ + /** + * Must be called within a requestInitialBackoff event + * @param backoffTime the amount of time in some unspecified units to backoff + */ + async command void RadioBackoff.setInitialBackoff(uint16_t backoffTime) { + myInitialBackoff = backoffTime + 1; + } + + /** + * Must be called within a requestCongestionBackoff event + * @param backoffTime the amount of time in some unspecified units to backoff + */ + async command void RadioBackoff.setCongestionBackoff(uint16_t backoffTime) { + myCongestionBackoff = backoffTime + 1; + } + + async command void RadioBackoff.setCca(bool useCca) { + } + + + inline uint32_t time16to32(uint16_t time, uint32_t recent_time) + { + if ((recent_time&0xFFFF)data + (call PacketTimeSyncOffset.get(m_msg) - sizeof(cc2520_header_t)); + timesync_radio_t *timesync = (timesync_radio_t*)taddr; + // set timesync event time as the offset between the event time and the SFD interrupt time (TEP 133) + *timesync -= time32; + call CSN.clr(); + call TXFIFO_RAM.write( call PacketTimeSyncOffset.get(m_msg), (uint8_t*)timesync, sizeof(timesync_radio_t) ); + call CSN.set(); + printf("\n S_SFD"); + } + + if ( (call CC2520PacketBody.getHeader( m_msg ))->fcf & ( 1 << IEEE154_FCF_ACK_REQ ) ) { + // This is an ack packet, don't release the chip's SPI bus lock. + abortSpiRelease = TRUE; + } + releaseSpiResource(); + printf("\n Stop Backoff Timer"); + call BackoffTimer.stop(); + + + if ( ( ( (call CC2520PacketBody.getHeader( m_msg ))->fcf >> IEEE154_FCF_FRAME_TYPE ) & 7 ) == IEEE154_TYPE_DATA ) { + call PacketTimeStamp.set(m_msg, time32); + } + + if ( call SFD.get() ) { + printf("\n S_SFD1"); + break; + } + /** Fall Through because the next interrupt was already received */ + + case S_EFD: + sfdHigh = FALSE; + call CaptureSFD.captureRisingEdge(); + + if ( (call CC2520PacketBody.getHeader( m_msg ))->fcf & ( 1 << IEEE154_FCF_ACK_REQ ) ) { + m_state = S_ACK_WAIT; + call BackoffTimer.start( CC2520_ACK_WAIT_DELAY ); + } else { + signalDone(SUCCESS); + } + printf("\n S_EFD.get1"); + if ( !call SFD.get() ) { + break; + } + /** Fall Through because the next interrupt was already received */ + + default: + if ( !m_receiving ) { + sfdHigh = TRUE; + call CaptureSFD.captureFallingEdge(); + call CC2520Receive.sfd( time32 ); + m_receiving = TRUE; + m_prev_time = time; + printf("\n Sfd default"); + if ( call SFD.get() ) { + // wait for the next interrupt before moving on + return; + } + } + + sfdHigh = FALSE; + call CaptureSFD.captureRisingEdge(); + m_receiving = FALSE; + if ( time - m_prev_time < 10 ) { + call CC2520Receive.sfd_dropped(); + if (m_msg) + call PacketTimeStamp.clear(m_msg); + } + break; + + } + } + } + + /***************** ChipSpiResource Events ****************/ + async event void ChipSpiResource.releasing() { + if(abortSpiRelease) { + call ChipSpiResource.abortRelease(); + } + } + + + /***************** CC2420Receive Events ****************/ + /** + * If the packet we just received was an ack that we were expecting, + * our send is complete. + */ + async event void CC2520Receive.receive( uint8_t type, message_t* ack_msg ) { + cc2520_header_t* ack_header; + cc2520_header_t* msg_header; + cc2520_metadata_t* msg_metadata; + uint8_t* ack_buf; + uint8_t length; + + if ( type == IEEE154_TYPE_ACK && m_msg) { + ack_header = call CC2520PacketBody.getHeader( ack_msg ); + msg_header = call CC2520PacketBody.getHeader( m_msg ); + + + if ( m_state == S_ACK_WAIT && msg_header->dsn == ack_header->dsn ) { + call BackoffTimer.stop(); + + msg_metadata = call CC2520PacketBody.getMetadata( m_msg ); + ack_buf = (uint8_t *) ack_header; + length = ack_header->length; + + msg_metadata->ack = TRUE; + msg_metadata->rssi = ack_buf[ length - 1 ]; + msg_metadata->lqi = ack_buf[ length ] & 0x7f; + signalDone(SUCCESS); + } + } + } + + /***************** SpiResource Events ****************/ + event void SpiResource.granted() { + uint8_t cur_state; + + atomic { + cur_state = m_state; + } + + switch( cur_state ) { + case S_LOAD: + loadTXFIFO(); + break; + + case S_BEGIN_TRANSMIT: + attemptSend(); + break; + + case S_CANCEL: + call CSN.clr(); + call SFLUSHTX.strobe(); + call CSN.set(); + releaseSpiResource(); + atomic { + m_state = S_STARTED; + } + + signal Send.sendDone( m_msg, ECANCEL ); + break; + + default: + releaseSpiResource(); + break; + } + } + + /***************** TXFIFO Events ****************/ + /** + * The TXFIFO is used to load packets into the transmit buffer on the + * chip + */ + async event void TXFIFO.writeDone( uint8_t* tx_buf, uint8_t tx_len, + error_t error ) { + printf("\n TXFIFO writeDone"); + call CSN.set(); + if ( m_state == S_CANCEL ) { + atomic { + call CSN.clr(); + call SFLUSHTX.strobe(); + call CSN.set(); + printf("\n TX FIFO SFLUSH"); + } + releaseSpiResource(); + m_state = S_STARTED; + signal Send.sendDone( m_msg, ECANCEL ); + + } else if ( !m_cca ) { + atomic { + m_state = S_BEGIN_TRANSMIT; + } + attemptSend(); + printf("\n TX FIFO attempt send"); + + } else { + releaseSpiResource(); + atomic { + m_state = S_SAMPLE_CCA; + } + + signal RadioBackoff.requestInitialBackoff(m_msg); + printf("\n TX FIFO back offTimer"); + call BackoffTimer.start(myInitialBackoff); + } + } + + + async event void TXFIFO.readDone( uint8_t* tx_buf, uint8_t tx_len, + error_t error ) { + } + + + /***************** Timer Events ****************/ + /** + * The backoff timer is mainly used to wait for a moment before trying + * to send a packet again. But we also use it to timeout the wait for + * an acknowledgement, and timeout the wait for an SFD interrupt when + * we should have gotten one. + */ + async event void BackoffTimer.fired() { + atomic { + switch( m_state ) { + + case S_SAMPLE_CCA : + // sample CCA and wait a little longer if free, just in case we + // sampled during the ack turn-around window + if ( call CCA.get() ) { + m_state = S_BEGIN_TRANSMIT; + call BackoffTimer.start( CC2520_TIME_ACK_TURNAROUND ); + printf("\n Backoff Timer"); + } else { + congestionBackoff(); + } + break; + + case S_BEGIN_TRANSMIT: + case S_CANCEL: + if ( acquireSpiResource() == SUCCESS ) { + attemptSend(); + printf("\n backoff_attempt Send"); + } + break; + + case S_ACK_WAIT: + signalDone( SUCCESS ); + printf("\n attempt Sucess"); + break; + + case S_SFD: + // We didn't receive an SFD interrupt within CC2420_ABORT_PERIOD + // jiffies. Assume something is wrong. + call SFLUSHTX.strobe(); + call CaptureSFD.captureRisingEdge(); + releaseSpiResource(); + signalDone( ERETRY ); + printf("\n Backoff S_SFD"); + break; + + default: + break; + } + } + } + + /***************** Functions ****************/ + /** + * Set up a message to be sent. First load it into the outbound tx buffer + * on the chip, then attempt to send it. + * @param *p_msg Pointer to the message that needs to be sent + * @param cca TRUE if this transmit should use clear channel assessment + */ + error_t send( message_t* ONE p_msg, bool cca ) { + atomic { + if (m_state == S_CANCEL) { + return ECANCEL; + } + + if ( m_state != S_STARTED ) { + return FAIL; + } + + m_state = S_LOAD; + m_cca = cca; + m_msg = p_msg; + totalCcaChecks = 0; + } + + if ( acquireSpiResource() == SUCCESS ) { + + printf("\n LoadTXFIFO"); + loadTXFIFO(); + + } + + return SUCCESS; + } + + /** + * Resend a packet that already exists in the outbound tx buffer on the + * chip + * @param cca TRUE if this transmit should use clear channel assessment + */ + error_t resend( bool cca ) { + + atomic { + if (m_state == S_CANCEL) { + return ECANCEL; + } + + if ( m_state != S_STARTED ) { + return FAIL; + } + + m_cca = cca; + m_state = cca ? S_SAMPLE_CCA : S_BEGIN_TRANSMIT; + totalCcaChecks = 0; + } + + if(m_cca) { + signal RadioBackoff.requestInitialBackoff(m_msg); + call BackoffTimer.start( myInitialBackoff ); + + } else if ( acquireSpiResource() == SUCCESS ) { + attemptSend(); + } + + return SUCCESS; + } + + /** + * Attempt to send the packet we have loaded into the tx buffer on + * the radio chip. The STXONCCA will send the packet immediately if + * the channel is clear. If we're not concerned about whether or not + * the channel is clear (i.e. m_cca == FALSE), then STXON will send the + * packet without checking for a clear channel. + * + * If the packet didn't get sent, then congestion == TRUE. In that case, + * we reset the backoff timer and try again in a moment. + * + * If the packet got sent, we should expect an SFD interrupt to take + * over, signifying the packet is getting sent. + */ + void attemptSend() { + uint8_t status; + bool congestion = TRUE; + printf("\n void attemptSend"); + atomic { + if (m_state == S_CANCEL) { + call CSN.set(); + call CSN.clr(); + call SFLUSHTX.strobe(); + releaseSpiResource(); + call CSN.set(); + m_state = S_STARTED; + printf("\n S_CANCEL"); + signal Send.sendDone( m_msg, ECANCEL ); + return; + } + + + call CSN.clr(); + + status = m_cca ? call STXONCCA.strobe() : call STXON.strobe(); + call CSN.set(); + call CSN.clr(); + if ( !( status & CC2520_STATUS_TX_ACTIVE ) ) { + status = call SNOP.strobe(); + if ( status & CC2520_STATUS_TX_ACTIVE ) { + congestion = FALSE; + } + } + + m_state = congestion ? S_SAMPLE_CCA : S_SFD; + call CSN.set(); + } + + call CSN.clr(); + printf("\n Tx status: %x",(call SNOP.strobe())); + call CSN.set(); + if ( congestion ) { + totalCcaChecks = 0; + releaseSpiResource(); + congestionBackoff(); + } else { + call BackoffTimer.start(CC2520_ABORT_PERIOD); + printf("\n Start BackoffTimer"); + } + } + + + /** + * Congestion Backoff + */ + void congestionBackoff() { + atomic { + signal RadioBackoff.requestCongestionBackoff(m_msg); + call BackoffTimer.start(myCongestionBackoff); + } + } + + error_t acquireSpiResource() { + error_t error = call SpiResource.immediateRequest(); + if ( error != SUCCESS ) { + call SpiResource.request(); + } + return error; + } + + error_t releaseSpiResource() { + call SpiResource.release(); + return SUCCESS; + } + + + /** + * Setup the packet transmission power and load the tx fifo buffer on + * the chip with our outbound packet. + * + * Warning: the tx_power metadata might not be initialized and + * could be a value other than 0 on boot. Verification is needed here + * to make sure the value won't overstep its bounds in the TXCTRL register + * and is transmitting at max power by default. + * + * It should be possible to manually calculate the packet's CRC here and + * tack it onto the end of the header + payload when loading into the TXFIFO, + * so the continuous modulation low power listening strategy will continually + * deliver valid packets. This would increase receive reliability for + * mobile nodes and lossy connections. The crcByte() function should use + * the same CRC polynomial as the CC2420's AUTOCRC functionality. + */ + void loadTXFIFO() { + cc2520_header_t* header = call CC2520PacketBody.getHeader( m_msg ); + uint8_t tx_power = (call CC2520PacketBody.getMetadata( m_msg ))->tx_power; + + if ( !tx_power ) { + tx_power = CC2520_DEF_RFPOWER; + } + + call CSN.clr(); + + if ( m_tx_power != tx_power ) { + /* call TXPOWER.write( ( 2 << CC2420_TXCTRL_TXMIXBUF_CUR ) | + ( 3 << CC2420_TXCTRL_PA_CURRENT ) | + ( 1 << CC2420_TXCTRL_RESERVED ) | + ( (tx_power & 0x1F) << CC2420_TXCTRL_PA_LEVEL ) );*/ + call TXPOWER.write( (tx_power)); + printf("\n Transmit Power : %x",tx_power ); + } + + m_tx_power = tx_power; + + { + uint8_t tmpLen __DEPUTY_UNUSED__ = header->length - 1; + call TXFIFO.write(TCAST(uint8_t * COUNT(tmpLen), header), header->length - 1); + } + } + + void signalDone( error_t err ) { + atomic m_state = S_STARTED; + abortSpiRelease = FALSE; + + call ChipSpiResource.attemptRelease(); + printf("\n msg" ); + signal Send.sendDone( m_msg, err ); + } +} + diff --git a/cc2520/unique/UniqueReceiveC.nc b/cc2520/unique/UniqueReceiveC.nc new file mode 100644 index 0000000000..cd92064b5f --- /dev/null +++ b/cc2520/unique/UniqueReceiveC.nc @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * This layer keeps a history of the past RECEIVE_HISTORY_SIZE received messages + * If the source address and dsn number of a newly received message matches + * our recent history, we drop the message because we've already seen it. + * This should sit at the bottom of the stack + * @author David Moss + */ + +configuration UniqueReceiveC { + provides { + interface Receive; + interface Receive as DuplicateReceive; + } + + uses { + interface Receive as SubReceive; + } +} + +implementation { + components UniqueReceiveP, + CC2520PacketC, + MainC; + + Receive = UniqueReceiveP.Receive; + DuplicateReceive = UniqueReceiveP.DuplicateReceive; + SubReceive = UniqueReceiveP.SubReceive; + + MainC.SoftwareInit -> UniqueReceiveP; + + UniqueReceiveP.CC2520PacketBody -> CC2520PacketC; + +} + diff --git a/cc2520/unique/UniqueReceiveP.nc b/cc2520/unique/UniqueReceiveP.nc new file mode 100644 index 0000000000..0e17dfa14e --- /dev/null +++ b/cc2520/unique/UniqueReceiveP.nc @@ -0,0 +1,162 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * This layer keeps a history of the past RECEIVE_HISTORY_SIZE received messages + * If the source address and dsn number of a newly received message matches + * our recent history, we drop the message because we've already seen it. + * @author David Moss + */ + +#include "CC2520.h" + +module UniqueReceiveP @safe() { + provides { + interface Receive; + interface Receive as DuplicateReceive; + interface Init; + } + + uses { + interface Receive as SubReceive; + interface CC2520PacketBody; + } +} + +implementation { + + struct { + am_addr_t source; + uint8_t dsn; + } receivedMessages[RECEIVE_HISTORY_SIZE]; + + uint8_t writeIndex = 0; + + /** History element containing info on a source previously received from */ + uint8_t recycleSourceElement; + + enum { + INVALID_ELEMENT = 0xFF, + }; + + /***************** Init Commands *****************/ + command error_t Init.init() { + int i; + for(i = 0; i < RECEIVE_HISTORY_SIZE; i++) { + receivedMessages[i].source = (am_addr_t) 0xFFFF; + receivedMessages[i].dsn = 0; + } + return SUCCESS; + } + + /***************** Prototypes Commands ***************/ + bool hasSeen(uint16_t msgSource, uint8_t msgDsn); + void insert(uint16_t msgSource, uint8_t msgDsn); + + /***************** SubReceive Events *****************/ + event message_t *SubReceive.receive(message_t* msg, void* payload, + uint8_t len) { + uint16_t msgSource = (call CC2520PacketBody.getHeader(msg))->src; + uint8_t msgDsn = (call CC2520PacketBody.getHeader(msg))->dsn; + + if(hasSeen(msgSource, msgDsn)) { + return signal DuplicateReceive.receive(msg, payload, len); + + } else { + insert(msgSource, msgDsn); + return signal Receive.receive(msg, payload, len); + } + } + + /****************** Functions ****************/ + /** + * This function does two things: + * 1. It loops through our entire receive history and detects if we've + * seen this DSN before from the given source (duplicate packet) + * 2. It detects if we've seen messages from this source before, so we know + * where to update our history if it turns out this is a new message. + * + * The global recycleSourceElement variable stores the location of the next insert + * if we've received a packet from that source before. Otherwise, it's up + * to the insert() function to decide who to kick out of our history. + */ + bool hasSeen(uint16_t msgSource, uint8_t msgDsn) { + int i; + recycleSourceElement = INVALID_ELEMENT; + + atomic { + for(i = 0; i < RECEIVE_HISTORY_SIZE; i++) { + if(receivedMessages[i].source == msgSource) { + if(receivedMessages[i].dsn == msgDsn) { + // Only exit this loop if we found a duplicate packet + return TRUE; + } + + recycleSourceElement = i; + } + } + } + + return FALSE; + } + + /** + * Insert the message into the history. If we received a message from this + * source before, insert it into the same location as last time and verify + * that the "writeIndex" is not pointing to that location. Otherwise, + * insert it into the "writeIndex" location. + */ + void insert(uint16_t msgSource, uint8_t msgDsn) { + uint8_t element = recycleSourceElement; + bool increment = FALSE; + + atomic { + if(element == INVALID_ELEMENT || writeIndex == element) { + // Use the writeIndex element to insert this new message into + element = writeIndex; + increment = TRUE; + } + + receivedMessages[element].source = msgSource; + receivedMessages[element].dsn = msgDsn; + if(increment) { + writeIndex++; + writeIndex %= RECEIVE_HISTORY_SIZE; + } + } + } + + /***************** Defaults ****************/ + default event message_t *DuplicateReceive.receive(message_t *msg, void *payload, uint8_t len) { + return msg; + } +} + diff --git a/cc2520/unique/UniqueSendC.nc b/cc2520/unique/UniqueSendC.nc new file mode 100644 index 0000000000..061525c57c --- /dev/null +++ b/cc2520/unique/UniqueSendC.nc @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * Generate a unique dsn byte for this outgoing packet + * This should sit at the top of the stack + * @author David Moss + */ + +configuration UniqueSendC { + provides { + interface Send; + } + + uses { + interface Send as SubSend; + } +} + +implementation { + components UniqueSendP, + new StateC(), + RandomC, + CC2520PacketC, + MainC; + + Send = UniqueSendP.Send; + SubSend = UniqueSendP.SubSend; + + MainC.SoftwareInit -> UniqueSendP; + + UniqueSendP.State -> StateC; + UniqueSendP.Random -> RandomC; + UniqueSendP.CC2520PacketBody -> CC2520PacketC; + +} + diff --git a/cc2520/unique/UniqueSendP.nc b/cc2520/unique/UniqueSendP.nc new file mode 100644 index 0000000000..2a8b5ba1f3 --- /dev/null +++ b/cc2520/unique/UniqueSendP.nc @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2005-2006 Rincon Research Corporation + * 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 Rincon Research Corporation 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 + * RINCON RESEARCH OR ITS 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 + */ + +/** + * This layer is responsible for supplying a unique data sequence number (dsn) + * to each outgoing message. + * @author David Moss + */ + +module UniqueSendP @safe() { + provides { + interface Send; + interface Init; + } + + uses { + interface Send as SubSend; + interface State; + interface Random; + interface CC2520PacketBody; + } +} + +implementation { + + uint8_t localSendId; + + enum { + S_IDLE, + S_SENDING, + }; + + /***************** Init Commands ****************/ + command error_t Init.init() { + localSendId = call Random.rand16(); + return SUCCESS; + } + + /***************** Send Commands ****************/ + /** + * Each call to this send command gives the message a single + * DSN that does not change for every copy of the message + * sent out. For messages that are not acknowledged, such as + * a broadcast address message, the receiving end does not + * signal receive() more than once for that message. + */ + command error_t Send.send(message_t *msg, uint8_t len) { + error_t error; + if(call State.requestState(S_SENDING) == SUCCESS) { + (call CC2520PacketBody.getHeader(msg))->dsn = localSendId++; + + if((error = call SubSend.send(msg, len)) != SUCCESS) { + call State.toIdle(); + } + + return error; + } + + return EBUSY; + } + + command error_t Send.cancel(message_t *msg) { + return call SubSend.cancel(msg); + } + + + command uint8_t Send.maxPayloadLength() { + return call SubSend.maxPayloadLength(); + } + + command void *Send.getPayload(message_t* msg, uint8_t len) { + return call SubSend.getPayload(msg, len); + } + + /***************** SubSend Events ****************/ + event void SubSend.sendDone(message_t *msg, error_t error) { + call State.toIdle(); + signal Send.sendDone(msg, error); + } + +} + From 63586d42012236d9eee9a11ab485da9453e4b6ef Mon Sep 17 00:00:00 2001 From: Mohammad Jamal Date: Wed, 11 Feb 2015 16:17:01 +0530 Subject: [PATCH 10/10] RadioCounttoLeds Security Test Application --- apps/RadioCountToLeds1/Makefile | 13 ++ apps/RadioCountToLeds1/RadioCountToLeds.h | 52 +++++ .../RadioCountToLeds1/RadioCountToLedsAppC.nc | 83 +++++++ apps/RadioCountToLeds1/RadioCountToLedsC.nc | 218 ++++++++++++++++++ 4 files changed, 366 insertions(+) create mode 100644 apps/RadioCountToLeds1/Makefile create mode 100644 apps/RadioCountToLeds1/RadioCountToLeds.h create mode 100644 apps/RadioCountToLeds1/RadioCountToLedsAppC.nc create mode 100644 apps/RadioCountToLeds1/RadioCountToLedsC.nc diff --git a/apps/RadioCountToLeds1/Makefile b/apps/RadioCountToLeds1/Makefile new file mode 100644 index 0000000000..37f0e6e996 --- /dev/null +++ b/apps/RadioCountToLeds1/Makefile @@ -0,0 +1,13 @@ +COMPONENT=RadioCountToLedsAppC +CFLAGS+=-DCC2520_HW_ACKNOWLEDGEMENTS +CFLAGS+=-DCC2520_HW_SECURITY +CFLAGS+=-DPRINTF_BUFFER_SIZE=500 +CFLAGS+=-DCC2520_DEF_CHANNEL=22 +CFLAGS+=-DTFRAMES_ENABLED +CFLAGS+=-DPACKET_LINK +CFLAGS+=-DTOSH_DATA_LENGTH=50 +#CFLAGS+=-I%T/lib/printf +CFLAGS+=-I$(TOSDIR)/lib/printf +CFLAGS+=-DPRINTFUART_ENABLED +CFLAGS+=-I./ +include $(MAKERULES) diff --git a/apps/RadioCountToLeds1/RadioCountToLeds.h b/apps/RadioCountToLeds1/RadioCountToLeds.h new file mode 100644 index 0000000000..3dcc45ad12 --- /dev/null +++ b/apps/RadioCountToLeds1/RadioCountToLeds.h @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2004-2005 The Regents of the University of California. + * 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 copyright holders 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 HOLDER 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. + * + * Copyright (c) 2002-2003 Intel Corporation + * All rights reserved. + * + * This file is distributed under the terms in the attached INTEL-LICENSE + * file. If you do not find these files, copies can be found by writing to + * Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, Berkeley, CA, + * 94704. Attention: Intel License Inquiry. + */ + +#ifndef RADIO_COUNT_TO_LEDS_H +#define RADIO_COUNT_TO_LEDS_H + +typedef nx_struct radio_count_msg { + nx_uint16_t counter; +} radio_count_msg_t; + +enum { + AM_RADIO_COUNT_MSG = 6, +}; + +#endif diff --git a/apps/RadioCountToLeds1/RadioCountToLedsAppC.nc b/apps/RadioCountToLeds1/RadioCountToLedsAppC.nc new file mode 100644 index 0000000000..215626e41b --- /dev/null +++ b/apps/RadioCountToLeds1/RadioCountToLedsAppC.nc @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2000-2005 The Regents of the University of California. + * 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 copyright holders 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 HOLDER 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. + * + * Copyright (c) 2002-2003 Intel Corporation + * All rights reserved. + * + * This file is distributed under the terms in the attached INTEL-LICENSE + * file. If you do not find these files, copies can be found by writing to + * Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, Berkeley, CA, + * 94704. Attention: Intel License Inquiry. + */ + +#include "RadioCountToLeds.h" + +/** + * Configuration for the RadioCountToLeds application. RadioCountToLeds + * maintains a 4Hz counter, broadcasting its value in an AM packet + * every time it gets updated. A RadioCountToLeds node that hears a counter + * displays the bottom three bits on its LEDs. This application is a useful + * test to show that basic AM communication and timers work. + * + * @author Philip Levis + * @date June 6 2005 + */ + +configuration RadioCountToLedsAppC {} +implementation { + components MainC, RadioCountToLedsC as App, LedsC, NoLedsC; + //components new SecAMSenderC(AM_RADIO_COUNT_MSG) as AMSenderC; + components new AMSenderC(AM_RADIO_COUNT_MSG); + components new AMReceiverC(AM_RADIO_COUNT_MSG); + components new TimerMilliC(); + components CC2520KeyC; + components ActiveMessageC; + + App.Boot -> MainC.Boot; + App.Receive -> AMReceiverC; + App.AMSend -> AMSenderC; + App.AMControl -> ActiveMessageC; + App.Leds -> LedsC; + App.MilliTimer -> TimerMilliC; + App.Packet -> AMSenderC; + App.CC2520Key -> CC2520KeyC; + + components new TimerMilliC() as SendTimer; + App.SendTimer -> SendTimer; + + components CC2520ActiveMessageC as Radio; + App.PacketLink -> Radio; + + components CC2520PacketC; + App.CC2520PacketBody -> CC2520PacketC; + + components PrintfC,SerialStartC; +} diff --git a/apps/RadioCountToLeds1/RadioCountToLedsC.nc b/apps/RadioCountToLeds1/RadioCountToLedsC.nc new file mode 100644 index 0000000000..d37e2b5102 --- /dev/null +++ b/apps/RadioCountToLeds1/RadioCountToLedsC.nc @@ -0,0 +1,218 @@ +/* + * Copyright (c) 2000-2005 The Regents of the University of California. + * 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 copyright holders 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 HOLDER 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. + * + * Copyright (c) 2002-2003 Intel Corporation + * All rights reserved. + * + * This file is distributed under the terms in the attached INTEL-LICENSE + * file. If you do not find these files, copies can be found by writing to + * Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, Berkeley, CA, + * 94704. Attention: Intel License Inquiry. + */ + +#include "Timer.h" +#include "RadioCountToLeds.h" +#include "printf.h" +/** + * Implementation of the RadioCountToLeds application. RadioCountToLeds + * maintains a 4Hz counter, broadcasting its value in an AM packet + * every time it gets updated. A RadioCountToLeds node that hears a counter + * displays the bottom three bits on its LEDs. This application is a useful + * test to show that basic AM communication and timers work. + * + * @author Philip Levis + * @date June 6 2005 + */ + +module RadioCountToLedsC { + uses { + interface Leds; + interface Boot; + interface Receive; + interface AMSend; + interface Timer as MilliTimer; + interface Timer as SendTimer; + interface SplitControl as AMControl; + interface Packet; + interface CC2520Key; + interface CC2520PacketBody; + + interface PacketLink; + } +} +implementation { + + message_t packet; + uint8_t key[16] = {0x98,0x67,0x7F,0xAF,0xD6,0xAD,0xB7,0x0C,0x59,0xE8,0xD9,0x47,0xC9,0x71,0x15,0x0F}; + uint8_t keyReady = 0; // should be set to 1 when key setting is done + + bool locked; + uint16_t counter = 0; + + event void Boot.booted() + { + call AMControl.start(); + } + + event void AMControl.startDone(error_t err) + { + if (err == SUCCESS) { + call CC2520Key.setKey(key); + // if(TOS_NODE_ID == 1) + //call MilliTimer.startPeriodic(4096); + } else { + call AMControl.start(); + } + } + + event void AMControl.stopDone(error_t err) + { + } + event void CC2520Key.setKeyDone(uint8_t status) + { + keyReady = 1; + } + + event void CC2520Key.getKeyDone(uint8_t status, uint8_t *ptr) + { + } + + event void SendTimer.fired() + { + if (call AMSend.send(AM_BROADCAST_ADDR, &packet, + sizeof(radio_count_msg_t)) == SUCCESS) { + locked = TRUE; + //printf("SendTimer fired\n"); + //printfflush(); + } + + + } + + uint8_t getMICLength(uint8_t securityLevel) { + if(securityLevel == SEC_MIC_32 || securityLevel == SEC_ENC_MIC_32) + return 4; + else if(securityLevel == SEC_MIC_64 || securityLevel == SEC_ENC_MIC_64) + return 8; + else if(securityLevel == SEC_ENC_MIC_128 || securityLevel == SEC_ENC_MIC_128) + return 16; + return 0; + } + + void readBefore() + { + uint8_t i; + cc2520_header_t* header = call CC2520PacketBody.getHeader( &packet ); + uint8_t *ptr = (uint8_t *)header; + uint8_t micLength = getMICLength(header->secHdr.secLevel); + uint8_t encryptLength = header->length - CC2520_SIZE - micLength; + printf("Packet Before Encryption\n"); + printf("header Length:%x\n", header->length); + printf("MIC Length:%x\t%x\n",micLength,encryptLength); + for(i=0;ilength - micLength -1;i++) { + printf("%x\t",ptr[i]); + } + printfflush(); + } + + event void MilliTimer.fired() + { + int ret; + counter++; + //printf("MilliTimer fired\n"); + //printfflush(); + dbg("RadioCountToLedsC", "RadioCountToLedsC: timer fired, counter is %hu.\n", counter); + if (locked) { + return; + } + else if(keyReady == 1) { + + radio_count_msg_t* rcm = (radio_count_msg_t*)call Packet.getPayload(&packet, sizeof(radio_count_msg_t)); + + if (rcm == NULL) { + return; + } + + rcm->counter = counter; + //call CC2420Security.setCtr(&packet, 0, 0); + //call CC2420Security.setCbcMac(&packet, 0, 0, 16); + //call CC2420Security.setCcm(&packet, 1, 0, 16); + call PacketLink.setRetries(&packet, 1); + //call SendTimer.startOneShot(5000); + //readBefore(); + ret= call AMSend.send(AM_BROADCAST_ADDR, &packet, + sizeof(radio_count_msg_t)); + printf("return:%x\n",ret); + printfflush(); + } + } + + event message_t* Receive.receive(message_t* bufPtr, + void* payload, uint8_t len) + { + dbg("RadioCountToLedsC", "Received packet of length %hhu.\n", len); + if (len != sizeof(radio_count_msg_t)) {return bufPtr;} + else { + radio_count_msg_t* rcm = (radio_count_msg_t*)payload; + printf("counter:%x\n",rcm->counter); + printfflush(); + if (rcm->counter & 0x1) { + call Leds.led0On(); + } + else { + call Leds.led0Off(); + } + if (rcm->counter & 0x2) { + call Leds.led1On(); + } + else { + call Leds.led1Off(); + } + if (rcm->counter & 0x4) { + call Leds.led2On(); + } + else { + call Leds.led2Off(); + } + return bufPtr; + } + } + + event void AMSend.sendDone(message_t* msg, error_t error) + { + printf("AMSend sendDone:%x\n",error); + printfflush(); + if (&packet == msg) { + locked = FALSE; + } + } + +}