X-Git-Url: https://oss.titaniummirror.com/gitweb/?p=tinyos-2.x.git;a=blobdiff_plain;f=tos%2Fchips%2Fcc2420%2FCC2420.h;h=eae62c35b82fb2e7add4e331a2859de8264f25e2;hp=798107f0ebcb0367ee9e7822cfc8d1b5d0ca095c;hb=e9bfab607e051bae6afb47b44892ce37541d1b44;hpb=adf1de6c009d13b7b52e68535c63b28f59c97400 diff --git a/tos/chips/cc2420/CC2420.h b/tos/chips/cc2420/CC2420.h index 798107f0..eae62c35 100644 --- a/tos/chips/cc2420/CC2420.h +++ b/tos/chips/cc2420/CC2420.h @@ -38,8 +38,8 @@ typedef uint8_t cc2420_status_t; -#ifndef TFRAMES_ENABLED -#define CC2420_IFRAME_TYPE +#if defined(TFRAMES_ENABLED) && defined(IEEE154FRAMES_ENABLED) +#error "Both TFRAMES and IEEE154FRAMES enabled!" #endif /** @@ -81,6 +81,17 @@ typedef uint8_t cc2420_status_t; * All of these fields will be filled in automatically by the radio stack * when you attempt to send a message. */ +/** + * CC2420 Security Header + */ +typedef nx_struct security_header_t { + nx_uint8_t secLevel:3; + nx_uint8_t keyMode:2; + nx_uint8_t reserved:3; + nx_uint32_t frameCounter; + nx_uint8_t keyID[1]; // One byte for now +} security_header_t; + typedef nx_struct cc2420_header_t { nxle_uint8_t length; nxle_uint16_t fcf; @@ -88,18 +99,19 @@ typedef nx_struct cc2420_header_t { nxle_uint16_t destpan; nxle_uint16_t dest; nxle_uint16_t src; + /** CC2420 802.15.4 header ends here */ +#ifdef CC2420_HW_SECURITY + security_header_t secHdr; +#endif +#ifndef TFRAMES_ENABLED /** I-Frame 6LowPAN interoperability byte */ -#ifdef CC2420_IFRAME_TYPE nxle_uint8_t network; #endif -#ifndef TINYOS_IP nxle_uint8_t type; -#endif - } cc2420_header_t; - + /** * CC2420 Packet Footer */ @@ -128,7 +140,6 @@ typedef nx_struct cc2420_metadata_t { nx_uint16_t maxRetries; nx_uint16_t retryDelay; #endif - } cc2420_metadata_t; @@ -165,7 +176,6 @@ typedef nx_struct cc2420_packet_t { #define TINYOS_6LOWPAN_NETWORK_ID 0x3f #endif - enum { // size of the header not including the length byte MAC_HEADER_SIZE = sizeof( cc2420_header_t ) - 1, @@ -175,6 +185,8 @@ enum { MAC_PACKET_SIZE = MAC_HEADER_SIZE + TOSH_DATA_LENGTH + MAC_FOOTER_SIZE, CC2420_SIZE = MAC_HEADER_SIZE + MAC_FOOTER_SIZE, + + AM_OVERHEAD = 2, }; enum cc2420_enums { @@ -407,6 +419,22 @@ enum cc2420_sfdmux_enums { CC2420_SFDMUX_XOSC16M_STABLE = 24, }; +enum cc2420_security_enums{ + CC2420_NO_SEC = 0, + CC2420_CBC_MAC = 1, + CC2420_CTR = 2, + CC2420_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 +}; +norace uint8_t SECURITYLOCK = 0; + enum { CC2420_INVALID_TIMESTAMP = 0x80000000L,