mirror of
https://github.com/oliverschmidt/contiki.git
synced 2024-11-08 23:08:29 +00:00
159 lines
4.7 KiB
C
159 lines
4.7 KiB
C
/*
|
|
* Copyright (c) 2006, Swedish Institute of Computer Science
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. 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.
|
|
* 3. Neither the name of the Institute 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 INSTITUTE 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 INSTITUTE 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.
|
|
*
|
|
*/
|
|
|
|
/* @(#)$Id: cc2420_const.h,v 1.1 2006/06/17 22:41:16 adamdunkels Exp $ */
|
|
|
|
#ifndef CC2420_CONST_H
|
|
#define CC2420_CONST_H
|
|
|
|
/* Page 27. */
|
|
enum cc2420_status_byte {
|
|
CC2420_XOSC16M_STABLE = 6,
|
|
CC2420_TX_UNDERFLOW = 5,
|
|
CC2420_ENC_BUSY = 4,
|
|
CC2420_TX_ACTIVE = 3,
|
|
CC2420_LOCK = 2,
|
|
CC2420_RSSI_VALID = 1,
|
|
};
|
|
|
|
/* Page 27. */
|
|
enum cc2420_memory_size {
|
|
CC2420_RAM_SIZE = 368,
|
|
CC2420_FIFO_SIZE = 128,
|
|
};
|
|
|
|
/* Page 29. */
|
|
enum cc2420_address {
|
|
CC2420RAM_TXFIFO = 0x000,
|
|
CC2420RAM_RXFIFO = 0x080,
|
|
CC2420RAM_KEY0 = 0x100,
|
|
CC2420RAM_RXNONCE = 0x110,
|
|
CC2420RAM_SABUF = 0x120,
|
|
CC2420RAM_KEY1 = 0x130,
|
|
CC2420RAM_TXNONCE = 0x140,
|
|
CC2420RAM_CBCSTATE = 0x150,
|
|
CC2420RAM_IEEEADDR = 0x160,
|
|
CC2420RAM_PANID = 0x168,
|
|
CC2420RAM_SHORTADDR = 0x16A,
|
|
};
|
|
|
|
/* Page 60. */
|
|
enum cc2420_register {
|
|
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_foo = 0x0F,
|
|
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_FSMSTATE = 0x2C,
|
|
CC2420_ADCTST = 0x2D,
|
|
CC2420_DACTST = 0x2E,
|
|
CC2420_TOPTST = 0x2F,
|
|
CC2420_RESERVED = 0x30,
|
|
/* 0x31 - 0x3D not used */
|
|
CC2420_TXFIFO = 0x3E,
|
|
CC2420_RXFIFO = 0x3F,
|
|
};
|
|
|
|
/* Page 69. */
|
|
enum cc2420_secctrl0 {
|
|
CC2420_SECCTRL0_NO_SECURITY = 0x0000,
|
|
CC2420_SECCTRL0_CBC_MAC = 0x0001,
|
|
CC2420_SECCTRL0_CTR = 0x0002,
|
|
CC2420_SECCTRL0_CCM = 0x0003,
|
|
|
|
CC2420_SECCTRL0_SEC_M_IDX = 2,
|
|
|
|
CC2420_SECCTRL0_RXKEYSEL0 = 0x0000,
|
|
CC2420_SECCTRL0_RXKEYSEL1 = 0x0020,
|
|
|
|
CC2420_SECCTRL0_TXKEYSEL0 = 0x0000,
|
|
CC2420_SECCTRL0_TXKEYSEL1 = 0x0040,
|
|
|
|
CC2420_SECCTRL0_SEC_CBC_HEAD = 0x0100,
|
|
CC2420_SECCTRL0_RXFIFO_PROTECTION = 0x0200,
|
|
};
|
|
|
|
/* CC2420 register access functions. */
|
|
unsigned cc2420_status(void);
|
|
unsigned cc2420_getreg(enum cc2420_register regname);
|
|
void cc2420_setreg(enum cc2420_register regname, unsigned value);
|
|
void cc2420_strobe(enum cc2420_register regname);
|
|
|
|
/* Page 47. [-38, 26] --> [0, 255]:6 valid bits */
|
|
#define RSSI_OFFSET -38
|
|
#define RSSI_2_ED(rssi) ((rssi) < RSSI_OFFSET ? 0 : ((rssi) - RSSI_OFFSET))
|
|
#define ED_2_LQI(ed) (((ed) > 63 ? 255 : ((ed) << 2)))
|
|
|
|
/* Page 48. [48, 112] --> [0, 255]:6 valid bits */
|
|
#define CORR_OFFSET 48
|
|
#define CORR_2_X(corr) ((corr) < CORR_OFFSET ? 0 : ((corr) - CORR_OFFSET))
|
|
#define X_2_LQI(x) (((x) > 63) ? 255 : ((x) << 2))
|
|
|
|
#endif /* CC2420_CONST_H */
|