A Atmel RF2xx Radio Library for Mbed

Dependents:   xBedRadio MxSniffer

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers at86rf212.h Source File

at86rf212.h

Go to the documentation of this file.
00001 /* THIS FILE IS GENERATED by ds2reg.py FROM INPUT Templates/at86rf212.txt */
00002 
00003 /* Copyright (c) 2008 Axel Wachtler
00004    All rights reserved.
00005 
00006    Redistribution and use in source and binary forms, with or without
00007    modification, are permitted provided that the following conditions
00008    are met:
00009 
00010    * Redistributions of source code must retain the above copyright
00011      notice, this list of conditions and the following disclaimer.
00012    * Redistributions in binary form must reproduce the above copyright
00013      notice, this list of conditions and the following disclaimer in the
00014      documentation and/or other materials provided with the distribution.
00015    * Neither the name of the authors nor the names of its contributors
00016      may be used to endorse or promote products derived from this software
00017      without specific prior written permission.
00018 
00019    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00020    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00021    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00022    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
00023    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00024    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00025    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00026    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00027    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00028    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00029    POSSIBILITY OF SUCH DAMAGE. */
00030 
00031 /* $Id$ */
00032 /**
00033  * @file
00034  * @brief AT86RF212 - 700/868/900MHz IEEE 802.15.4-2006-Transceiver.
00035  */
00036 #ifndef AT86RF212_H
00037 #define AT86RF212_H (1)
00038 #include <stdint.h>
00039 #define _BV(bit) (1 << (bit))
00040 /* === Includes ============================================================== */
00041 
00042 /* === Externals ============================================================= */
00043 
00044 /* === Types ================================================================= */
00045 
00046 typedef uint8_t trx_ramaddr_t;
00047 typedef uint8_t trx_regval_t;
00048 typedef uint8_t trx_regaddr_t;
00049 
00050 /* === Macros ================================================================ */
00051 /** Offset for register TRX_STATUS */
00052 #define RG_TRX_STATUS (0x1)
00053   /** Access parameters for sub-register CCA_DONE in register TRX_STATUS */
00054   #define SR_CCA_DONE 0x1,0x80,7
00055   /** Access parameters for sub-register CCA_STATUS in register TRX_STATUS */
00056   #define SR_CCA_STATUS 0x1,0x40,6
00057   /** Access parameters for sub-register TRX_STATUS in register TRX_STATUS */
00058   #define SR_TRX_STATUS 0x1,0x1f,0
00059 //for rfa1 or rfr2 with rf212
00060 #undef P_ON
00061 #undef BUSY_RX
00062 #undef BUSY_TX
00063 #undef RX_ON
00064 #undef TRX_OFF
00065 #undef PLL_ON
00066 #undef TRX_SLEEP
00067 #undef BUSY_RX_AACK
00068 #undef BUSY_TX_ARET
00069 #undef RX_AACK_ON
00070 #undef TX_ARET_ON
00071 #undef RX_ON_NOCLK
00072 #undef RX_AACK_ON_NOCLK
00073 #undef BUSY_RX_AACK_NOCLK
00074 
00075 #define P_ON (0)
00076 #define BUSY_RX (1)
00077 #define BUSY_TX (2)
00078 #define RX_ON (6)
00079 #define TRX_OFF (8)
00080 #define PLL_ON (9)
00081 #define TRX_SLEEP (15)
00082 #define BUSY_RX_AACK (17)
00083 #define BUSY_TX_ARET (18)
00084 #define RX_AACK_ON (22)
00085 #define TX_ARET_ON (25)
00086 #define RX_ON_NOCLK (28)
00087 #define RX_AACK_ON_NOCLK (29)
00088 #define BUSY_RX_AACK_NOCLK (30)
00089 /** Offset for register TRX_STATE */
00090 #define RG_TRX_STATE (0x2)
00091   /** Access parameters for sub-register TRAC_STATUS in register TRX_STATE */
00092   #define SR_TRAC_STATUS 0x2,0xe0,5
00093 
00094 #undef TRAC_SUCCESS
00095 #undef TRAC_SUCCESS_DATA_PENDING
00096 #undef TRAC_SUCCESS_WAIT_FOR_ACK
00097 #undef TRAC_CHANNEL_ACCESS_FAILURE
00098 #undef TRAC_NO_ACK
00099 #undef TRAC_INVALID
00100 
00101 #define TRAC_SUCCESS (0)
00102 #define TRAC_SUCCESS_DATA_PENDING (1)
00103 #define TRAC_SUCCESS_WAIT_FOR_ACK (2)
00104 #define TRAC_CHANNEL_ACCESS_FAILURE (3)
00105 #define TRAC_NO_ACK (5)
00106 #define TRAC_INVALID (7)
00107 /** Access parameters for sub-register TRX_CMD in register TRX_STATE */
00108 #define SR_TRX_CMD 0x2,0x1f,0
00109 
00110 #undef CMD_NOP
00111 #undef CMD_TX_START
00112 #undef CMD_FORCE_TRX_OFF
00113 #undef CMD_RX_ON
00114 #undef CMD_TRX_OFF
00115 #undef CMD_PLL_ON
00116 #undef CMD_RX_AACK_ON
00117 #undef CMD_TX_ARET_ON
00118 
00119 #define CMD_NOP (0)
00120 #define CMD_TX_START (2)
00121 #define CMD_FORCE_TRX_OFF (3)
00122 #define CMD_RX_ON (6)
00123 #define CMD_TRX_OFF (8)
00124 #define CMD_PLL_ON (9)
00125 #define CMD_RX_AACK_ON (22)
00126 #define CMD_TX_ARET_ON (25)
00127 /** Offset for register TRX_CTRL_0 */
00128 #define RG_TRX_CTRL_0 (0x3)
00129   /** Access parameters for sub-register PAD_IO in register TRX_CTRL_0 */
00130   #define SR_PAD_IO 0x3,0xc0,6
00131   /** Access parameters for sub-register PAD_IO_CLKM in register TRX_CTRL_0 */
00132   #define SR_PAD_IO_CLKM 0x3,0x30,4
00133     #define CLKM_2mA (0)
00134     #define CLKM_4mA (1)
00135     #define CLKM_6mA (2)
00136     #define CLKM_8mA (3)
00137   /** Access parameters for sub-register CLKM_SHA_SEL in register TRX_CTRL_0 */
00138   #define SR_CLKM_SHA_SEL 0x3,0x8,3
00139   /** Access parameters for sub-register CLKM_CTRL in register TRX_CTRL_0 */
00140   #define SR_CLKM_CTRL 0x3,0x7,0
00141     #define CLKM_no_clock (0)
00142     #define CLKM_1MHz (1)
00143     #define CLKM_2MHz (2)
00144     #define CLKM_4MHz (3)
00145     #define CLKM_8MHz (4)
00146     #define CLKM_16MHz (5)
00147 /** Offset for register TRX_CTRL_1 */
00148 #define RG_TRX_CTRL_1 (0x4)
00149   /** Access parameters for sub-register PA_EXT_EN in register TRX_CTRL_1 */
00150   #define SR_PA_EXT_EN 0x4,0x80,7
00151   /** Access parameters for sub-register IRQ_2_EXT_EN in register TRX_CTRL_1 */
00152   #define SR_IRQ_2_EXT_EN 0x4,0x40,6
00153   /** Access parameters for sub-register TX_AUTO_CRC_ON in register TRX_CTRL_1 */
00154   #define SR_TX_AUTO_CRC_ON 0x4,0x20,5
00155   /** Access parameters for sub-register RX_BL_CTRL in register TRX_CTRL_1 */
00156   #define SR_RX_BL_CTRL 0x4,0x10,4
00157   /** Access parameters for sub-register SPI_CMD_MODE in register TRX_CTRL_1 */
00158   #define SR_SPI_CMD_MODE 0x4,0xc,2
00159   /** Access parameters for sub-register IRQ_POLARITY in register TRX_CTRL_1 */
00160   #define SR_IRQ_POLARITY 0x4,0x1,0
00161   /** Access parameters for sub-register IRQ_MASK_MODE in register TRX_CTRL_1 */
00162   #define SR_IRQ_MASK_MODE 0x4,0x2,1
00163 /** Offset for register PHY_TX_PWR */
00164 #define RG_PHY_TX_PWR (0x5)
00165   /** Access parameters for sub-register PA_BOOST in register PHY_TX_PWR */
00166   #define SR_PA_BOOST 0x5,0x80,7
00167   /** Access parameters for sub-register GC_PA in register PHY_TX_PWR */
00168   #define SR_GC_PA 0x5,0x60,5
00169   /** Access parameters for sub-register TX_PWR in register PHY_TX_PWR */
00170   #define SR_TX_PWR 0x5,0xff,0
00171 /** Offset for register PHY_RSSI */
00172 #define RG_PHY_RSSI (0x6)
00173   /** Access parameters for sub-register RX_CRC_VALID in register PHY_RSSI */
00174   #define SR_RX_CRC_VALID 0x6,0x80,7
00175   /** Access parameters for sub-register RND_VALUE in register PHY_RSSI */
00176   #define SR_RND_VALUE 0x6,0x60,5
00177   /** Access parameters for sub-register RSSI in register PHY_RSSI */
00178   #define SR_RSSI 0x6,0x1f,0
00179 /** Offset for register PHY_ED_LEVEL */
00180 #define RG_PHY_ED_LEVEL (0x7)
00181   /** Access parameters for sub-register ED_LEVEL in register PHY_ED_LEVEL */
00182   #define SR_ED_LEVEL 0x7,0xff,0
00183 /** Offset for register PHY_CC_CCA */
00184 #define RG_PHY_CC_CCA (0x8)
00185   /** Access parameters for sub-register CCA_REQUEST in register PHY_CC_CCA */
00186   #define SR_CCA_REQUEST 0x8,0x80,7
00187   /** Access parameters for sub-register CCA_MODE in register PHY_CC_CCA */
00188   #define SR_CCA_MODE 0x8,0x60,5
00189   /** Access parameters for sub-register CHANNEL in register PHY_CC_CCA */
00190   #define SR_CHANNEL 0x8,0x1f,0
00191 /** Offset for register CCA_THRES */
00192 #define RG_CCA_THRES (0x9)
00193   /** Access parameters for sub-register CCA_ED_THRES in register CCA_THRES */
00194   #define SR_CCA_ED_THRES 0x9,0xf,0
00195 /** Offset for register SFD_VALUE */
00196 #define RG_SFD_VALUE (0xb)
00197   /** Access parameters for sub-register SFD_VALUE in register SFD_VALUE */
00198   #define SR_SFD_VALUE 0xb,0xff,0
00199 /** Offset for register TRX_CTRL_2 */
00200 #define RG_TRX_CTRL_2 (0xc)
00201   /** Access parameters for sub-register RX_SAFE_MODE in register TRX_CTRL_2 */
00202   #define SR_RX_SAFE_MODE 0xc,0x80,7
00203   /** Access parameters for sub-register TRX_OFF_AVDD_EN in register TRX_CTRL_2 */
00204   #define SR_TRX_OFF_AVDD_EN 0xc,0x40,6
00205 /** Access parameters for sub-register TRX_SUB1_RC_EN in register TRX_CTRL_2 */
00206   #define SR_OQPSK_SUB1_RC_EN 0xc,0x10,4
00207   /** Access parameters for sub-register BPSK_OQPSK in register TRX_CTRL_2 */
00208   #define SR_BPSK_OQPSK 0xc,0x8,3
00209   /** Access parameters for sub-register SUB_MODE in register TRX_CTRL_2 */
00210   #define SR_SUB_MODE 0xc,0x4,2
00211   /** Access parameters for sub-register OQPSK_DATA_RATE in register TRX_CTRL_2 */
00212   #define SR_OQPSK_DATA_RATE 0xc,0x3,0
00213 /** Offset for register ANT_DIV */
00214 #define RG_ANT_DIV (0xd)
00215   /** Access parameters for sub-register ANT_SEL in register ANT_DIV */
00216   #define SR_ANT_SEL 0xd,0x80,7
00217   /** Access parameters for sub-register ANT_EXT_SW_EN in register ANT_DIV */
00218   #define SR_ANT_EXT_SW_EN 0xd,0x4,2
00219   /** Access parameters for sub-register ANT_CTRL in register ANT_DIV */
00220   #define SR_ANT_CTRL 0xd,0x3,0
00221 /** Offset for register IRQ_MASK */
00222 #define RG_IRQ_MASK (0xe)
00223   /** Access parameters for sub-register MASK_BAT_LOW in register IRQ_MASK */
00224   #define SR_MASK_BAT_LOW 0xe,0x80,7
00225   /** Access parameters for sub-register MASK_TRX_UR in register IRQ_MASK */
00226   #define SR_MASK_TRX_UR 0xe,0x40,6
00227   /** Access parameters for sub-register MASK_AMI in register IRQ_MASK */
00228   #define SR_MASK_AMI 0xe,0x20,5
00229   /** Access parameters for sub-register MASK_CCA_ED_READY in register IRQ_MASK */
00230   #define SR_MASK_CCA_ED_READY 0xe,0x10,4
00231   /** Access parameters for sub-register MASK_TRX_END in register IRQ_MASK */
00232   #define SR_MASK_TRX_END 0xe,0x8,3
00233   /** Access parameters for sub-register MASK_RX_START in register IRQ_MASK */
00234   #define SR_MASK_RX_START 0xe,0x4,2
00235   /** Access parameters for sub-register MASK_PLL_LOCK in register IRQ_MASK */
00236   #define SR_MASK_PLL_LOCK 0xe,0x1,0
00237   /** Access parameters for sub-register MASK_PLL_UNLOCK in register IRQ_MASK */
00238   #define SR_MASK_PLL_UNLOCK 0xe,0x2,1
00239 /** Offset for register IRQ_STATUS */
00240 #define RG_IRQ_STATUS (0xf)
00241   /** Access parameters for sub-register BAT_LOW in register IRQ_STATUS */
00242   #define SR_BAT_LOW 0xf,0x80,7
00243   /** Access parameters for sub-register TRX_UR in register IRQ_STATUS */
00244   #define SR_TRX_UR 0xf,0x40,6
00245   /** Access parameters for sub-register AMI in register IRQ_STATUS */
00246   #define SR_AMI 0xf,0x20,5
00247   /** Access parameters for sub-register CCA_ED_READY in register IRQ_STATUS */
00248   #define SR_CCA_ED_READY 0xf,0x10,4
00249   /** Access parameters for sub-register TRX_END in register IRQ_STATUS */
00250   #define SR_TRX_END 0xf,0x8,3
00251   /** Access parameters for sub-register RX_START in register IRQ_STATUS */
00252   #define SR_RX_START 0xf,0x4,2
00253   /** Access parameters for sub-register PLL_LOCK in register IRQ_STATUS */
00254   #define SR_PLL_LOCK 0xf,0x1,0
00255   /** Access parameters for sub-register PLL_UNLOCK in register IRQ_STATUS */
00256   #define SR_PLL_UNLOCK 0xf,0x2,1
00257 /** Offset for register VREG_CTRL */
00258 #define RG_VREG_CTRL (0x10)
00259   /** Access parameters for sub-register AVREG_EXT in register VREG_CTRL */
00260   #define SR_AVREG_EXT 0x10,0x80,7
00261   /** Access parameters for sub-register AVDD_OK in register VREG_CTRL */
00262   #define SR_AVDD_OK 0x10,0x40,6
00263   /** Access parameters for sub-register DVREG_EXT in register VREG_CTRL */
00264   #define SR_DVREG_EXT 0x10,0x8,3
00265   /** Access parameters for sub-register DVDD_OK in register VREG_CTRL */
00266   #define SR_DVDD_OK 0x10,0x4,2
00267 /** Offset for register BATMON */
00268 #define RG_BATMON (0x11)
00269   /** Access parameters for sub-register BATMON_OK in register BATMON */
00270   #define SR_BATMON_OK 0x11,0x20,5
00271   /** Access parameters for sub-register BATMON_HR in register BATMON */
00272   #define SR_BATMON_HR 0x11,0x10,4
00273   /** Access parameters for sub-register BATMON_VTH in register BATMON */
00274   #define SR_BATMON_VTH 0x11,0xf,0
00275 /** Offset for register XOSC_CTRL */
00276 #define RG_XOSC_CTRL (0x12)
00277   /** Access parameters for sub-register XTAL_MODE in register XOSC_CTRL */
00278   #define SR_XTAL_MODE 0x12,0xf0,4
00279   /** Access parameters for sub-register XTAL_TRIM in register XOSC_CTRL */
00280   #define SR_XTAL_TRIM 0x12,0xf,0
00281 /** Offset for register CC_CTRL_0 */
00282 #define RG_CC_CTRL_0 (0x13)
00283   /** Access parameters for sub-register CC_NUMBER in register CC_CTRL_0 */
00284   #define SR_CC_NUMBER 0x13,0xff,0
00285 /** Offset for register CC_CTRL_1 */
00286 #define RG_CC_CTRL_1 (0x14)
00287   /** Access parameters for sub-register CC_BAND in register CC_CTRL_1 */
00288   #define SR_CC_BAND 0x14,0x4,2
00289   /** Access parameters for sub-register BAND in register CC_CTRL_1 */
00290   #define SR_BAND 0x14,0x1,0
00291   /** Access parameters for sub-register CC_ in register CC_CTRL_1 */
00292   #define SR_CC_ 0x14,0x2,1
00293 /** Offset for register RX_SYN */
00294 #define RG_RX_SYN (0x15)
00295   /** Access parameters for sub-register RX_PDT_DIS in register RX_SYN */
00296   #define SR_RX_PDT_DIS 0x15,0x80,7
00297   /** Access parameters for sub-register RX_PDT_LEVEL in register RX_SYN */
00298   #define SR_RX_PDT_LEVEL 0x15,0xf,0
00299 /** Offset for register RF_CTRL_0 */
00300 #define RG_RF_CTRL_0 (0x16)
00301   /** Access parameters for sub-register PA_LT in register RF_CTRL_0 */
00302   #define SR_PA_LT 0x16,0xc0,6
00303   /** Access parameters for sub-register GC_TX_OFFS in register RF_CTRL_0 */
00304   #define SR_GC_TX_OFFS 0x16,0x3,0
00305 /** Offset for register XAH_CTRL_1 */
00306 #define RG_XAH_CTRL_1 (0x17)
00307   /** Access parameters for sub-register CSMA_LBT_MODE in register XAH_CTRL_1 */
00308   #define SR_CSMA_LBT_MODE 0x17,0x80,7
00309   /** Access parameters for sub-register AACK_FLTR_RES_FT in register XAH_CTRL_1 */
00310   #define SR_AACK_FLTR_RES_FT 0x17,0x20,5
00311   /** Access parameters for sub-register AACK_UPLD_RES_FT in register XAH_CTRL_1 */
00312   #define SR_AACK_UPLD_RES_FT 0x17,0x10,4
00313   /** Access parameters for sub-register AACK_ACK_TIME in register XAH_CTRL_1 */
00314   #define SR_AACK_ACK_TIME 0x17,0x4,2
00315   /** Access parameters for sub-register AACK_PROM_MODE in register XAH_CTRL_1 */
00316   #define SR_AACK_PROM_MODE 0x17,0x2,1
00317 /** Offset for register FTN_CTRL */
00318 #define RG_FTN_CTRL (0x18)
00319   /** Access parameters for sub-register FTN_START in register FTN_CTRL */
00320   #define SR_FTN_START 0x18,0x80,7
00321 /** Offset for register RF_CTRL_1 */
00322 #define RG_RF_CTRL_1 (0x19)
00323   /** Access parameters for sub-register RF_MC in register RF_CTRL_1 */
00324   #define SR_RF_MC 0x19,0xf0,4
00325 /** Offset for register PLL_CF */
00326 #define RG_PLL_CF (0x1a)
00327   /** Access parameters for sub-register PLL_CF_START in register PLL_CF */
00328   #define SR_PLL_CF_START 0x1a,0x80,7
00329 /** Offset for register PLL_DCU */
00330 #define RG_PLL_DCU (0x1b)
00331   /** Access parameters for sub-register PLL_DCU_START in register PLL_DCU */
00332   #define SR_PLL_DCU_START 0x1b,0x80,7
00333 /** Offset for register PART_NUM */
00334 #define RG_PART_NUM (0x1c)
00335   /** Access parameters for sub-register PART_NUM in register PART_NUM */
00336   #define SR_PART_NUM 0x1c,0xff,0
00337     #define RF212A_PART_NUM (7)
00338 /** Offset for register VERSION_NUM */
00339 #define RG_VERSION_NUM (0x1d)
00340   /** Access parameters for sub-register VERSION_NUM in register VERSION_NUM */
00341   #define SR_VERSION_NUM 0x1d,0xff,0
00342     #define RF212A_VERSION_NUM (1)
00343 /** Offset for register MAN_ID_0 */
00344 #define RG_MAN_ID_0 (0x1e)
00345   /** Access parameters for sub-register MAN_ID_0 in register MAN_ID_0 */
00346   #define SR_MAN_ID_0 0x1e,0xff,0
00347 /** Offset for register MAN_ID_1 */
00348 #define RG_MAN_ID_1 (0x1f)
00349   /** Access parameters for sub-register MAN_ID_1 in register MAN_ID_1 */
00350   #define SR_MAN_ID_1 0x1f,0xff,0
00351 /** Offset for register SHORT_ADDR_0 */
00352 #define RG_SHORT_ADDR_0 (0x20)
00353   /** Access parameters for sub-register SHORT_ADDR_0 in register SHORT_ADDR_0 */
00354   #define SR_SHORT_ADDR_0 0x20,0xff,0
00355 /** Offset for register SHORT_ADDR_1 */
00356 #define RG_SHORT_ADDR_1 (0x21)
00357   /** Access parameters for sub-register SHORT_ADDR_1 in register SHORT_ADDR_1 */
00358   #define SR_SHORT_ADDR_1 0x21,0xff,0
00359 /** Offset for register PAN_ID_0 */
00360 #define RG_PAN_ID_0 (0x22)
00361   /** Access parameters for sub-register PAN_ID_0 in register PAN_ID_0 */
00362   #define SR_PAN_ID_0 0x22,0xff,0
00363 /** Offset for register PAN_ID_1 */
00364 #define RG_PAN_ID_1 (0x23)
00365   /** Access parameters for sub-register PAN_ID_1 in register PAN_ID_1 */
00366   #define SR_PAN_ID_1 0x23,0xff,0
00367 /** Offset for register IEEE_ADDR_0 */
00368 #define RG_IEEE_ADDR_0 (0x24)
00369   /** Access parameters for sub-register IEEE_ADDR_0 in register IEEE_ADDR_0 */
00370   #define SR_IEEE_ADDR_0 0x24,0xff,0
00371 /** Offset for register IEEE_ADDR_1 */
00372 #define RG_IEEE_ADDR_1 (0x25)
00373   /** Access parameters for sub-register IEEE_ADDR_1 in register IEEE_ADDR_1 */
00374   #define SR_IEEE_ADDR_1 0x25,0xff,0
00375 /** Offset for register IEEE_ADDR_2 */
00376 #define RG_IEEE_ADDR_2 (0x26)
00377   /** Access parameters for sub-register IEEE_ADDR_2 in register IEEE_ADDR_2 */
00378   #define SR_IEEE_ADDR_2 0x26,0xff,0
00379 /** Offset for register IEEE_ADDR_3 */
00380 #define RG_IEEE_ADDR_3 (0x27)
00381   /** Access parameters for sub-register IEEE_ADDR_3 in register IEEE_ADDR_3 */
00382   #define SR_IEEE_ADDR_3 0x27,0xff,0
00383 /** Offset for register IEEE_ADDR_4 */
00384 #define RG_IEEE_ADDR_4 (0x28)
00385   /** Access parameters for sub-register IEEE_ADDR_4 in register IEEE_ADDR_4 */
00386   #define SR_IEEE_ADDR_4 0x28,0xff,0
00387 /** Offset for register IEEE_ADDR_5 */
00388 #define RG_IEEE_ADDR_5 (0x29)
00389   /** Access parameters for sub-register IEEE_ADDR_5 in register IEEE_ADDR_5 */
00390   #define SR_IEEE_ADDR_5 0x29,0xff,0
00391 /** Offset for register IEEE_ADDR_6 */
00392 #define RG_IEEE_ADDR_6 (0x2a)
00393   /** Access parameters for sub-register IEEE_ADDR_6 in register IEEE_ADDR_6 */
00394   #define SR_IEEE_ADDR_6 0x2a,0xff,0
00395 /** Offset for register IEEE_ADDR_7 */
00396 #define RG_IEEE_ADDR_7 (0x2b)
00397   /** Access parameters for sub-register IEEE_ADDR_7 in register IEEE_ADDR_7 */
00398   #define SR_IEEE_ADDR_7 0x2b,0xff,0
00399 /** Offset for register XAH_CTRL_0 */
00400 #define RG_XAH_CTRL_0 (0x2c)
00401   /** Access parameters for sub-register MAX_FRAME_RETRIES in register XAH_CTRL_0 */
00402   #define SR_MAX_FRAME_RETRIES 0x2c,0xf0,4
00403   /** Access parameters for sub-register SLOTTED_OPERATION in register XAH_CTRL_0 */
00404   #define SR_SLOTTED_OPERATION 0x2c,0x1,0
00405   /** Access parameters for sub-register MAX_CSMA_RETRIES in register XAH_CTRL_0 */
00406   #define SR_MAX_CSMA_RETRIES 0x2c,0xe,1
00407 /** Offset for register CSMA_SEED_0 */
00408 #define RG_CSMA_SEED_0 (0x2d)
00409   /** Access parameters for sub-register CSMA_SEED_0 in register CSMA_SEED_0 */
00410   #define SR_CSMA_SEED_0 0x2d,0xff,0
00411 /** Offset for register CSMA_SEED_1 */
00412 #define RG_CSMA_SEED_1 (0x2e)
00413   /** Access parameters for sub-register AACK_FVN_MODE in register CSMA_SEED_1 */
00414   #define SR_AACK_FVN_MODE 0x2e,0xc0,6
00415   /** Access parameters for sub-register AACK_SET_PD in register CSMA_SEED_1 */
00416   #define SR_AACK_SET_PD 0x2e,0x20,5
00417   /** Access parameters for sub-register AACK_DIS_ACK in register CSMA_SEED_1 */
00418   #define SR_AACK_DIS_ACK 0x2e,0x10,4
00419   /** Access parameters for sub-register AACK_I_AM_COORD in register CSMA_SEED_1 */
00420   #define SR_AACK_I_AM_COORD 0x2e,0x8,3
00421   /** Access parameters for sub-register CSMA_SEED_1 in register CSMA_SEED_1 */
00422   #define SR_CSMA_SEED_1 0x2e,0x7,0
00423 /** Offset for register CSMA_BE */
00424 #define RG_CSMA_BE (0x2f)
00425   /** Access parameters for sub-register MAX_BE in register CSMA_BE */
00426   #define SR_MAX_BE 0x2f,0xf0,4
00427   /** Access parameters for sub-register MIN_BE in register CSMA_BE */
00428   #define SR_MIN_BE 0x2f,0xf,0
00429 /** name string of the radio */
00430 #define RADIO_NAME "AT86RF212"
00431 /** contents of the RG_PART_NUM register */
00432 #define RADIO_PART_NUM (RF212A_PART_NUM)
00433 /** contents of the RG_VERSION_NUM register */
00434 #define RADIO_VERSION_NUM (RF212A_VERSION_NUM)
00435 
00436 /** SPI command code for register write */
00437 #define TRX_CMD_RW           (_BV(7) | _BV(6))
00438 /** SPI command code for register read */
00439 #define TRX_CMD_RR           (_BV(7))
00440 /** SPI command code for frame write */
00441 #define TRX_CMD_FW           (_BV(6) | _BV(5))
00442 /** SPI command code for frame read */
00443 #define TRX_CMD_FR           (_BV(5))
00444 /** SPI command code for sram write */
00445 #define TRX_CMD_SW           (_BV(6))
00446 /** SPI command code for sram read */
00447 #define TRX_CMD_SR           (0)
00448 
00449 #define TRX_CMD_RADDR_MASK   (0x3f)
00450 
00451 /** duration while reset=low is asserted */
00452 #define TRX_RESET_TIME_US    (6)
00453 
00454 /** duration transceiver reaches TRX_OFF for the first time */
00455 #define TRX_INIT_TIME_US     (510)
00456 
00457 /** maximum duration, which PLL needs to lock */
00458 #define TRX_PLL_LOCK_TIME_US     (180)
00459 
00460 
00461 /** duration of a CCA measurement */
00462 #define TRX_CCA_TIME_US     (140)
00463 
00464 /** Mask for PLL lock interrupt */
00465 #define TRX_IRQ_PLL_LOCK   _BV(0)
00466 
00467 /** Mask for PLL unlock interrupt */
00468 #define TRX_IRQ_PLL_UNLOCK _BV(1)
00469 
00470 /** Mask for RX Start interrupt */
00471 #define TRX_IRQ_RX_START   _BV(2)
00472 
00473 /** Mask for RX/TX end interrupt */
00474 #define TRX_IRQ_TRX_END    _BV(3)
00475 
00476 /** Mask for CCA_ED interrupt */
00477 #define TRX_IRQ_CCA_ED     _BV(4)
00478 
00479 /** Mask for AMI interrupt */
00480 #define TRX_IRQ_AMI        _BV(5)
00481 
00482 /** Mask for RX/TX underrun interrupt */
00483 #define TRX_IRQ_UR         _BV(6)
00484 
00485 /** Mask for battery low interrupt */
00486 #define TRX_IRQ_BAT_LOW    _BV(7)
00487 
00488 /** TX ARET status for successful transmission */
00489 #define TRAC_SUCCESS (0)
00490 /** TX ARET status for unsuccessful transmission due to no channel access */
00491 #define TRAC_CHANNEL_ACCESS_FAILURE (3)
00492 /** TX ARET status for unsuccessful transmission due no ACK frame was received */
00493 #define TRAC_NO_ACK (5)
00494 
00495 
00496 /** lowest supported channel number */
00497 #define TRX_MIN_CHANNEL (0)
00498 
00499 /** highest supported channel number */
00500 #ifdef CHINABAND
00501 #define TRX_MAX_CHANNEL (3)
00502 
00503 /** number of channels */
00504 #define TRX_NB_CHANNELS (4)
00505 #define TRX_SUPPORTED_CHANNELS  (0x000000fUL)
00506 #else
00507 #define TRX_MAX_CHANNEL (10)
00508 
00509 /** number of channels */
00510 #define TRX_NB_CHANNELS (11)
00511 #define TRX_SUPPORTED_CHANNELS  (0x00007ffUL)
00512 #endif
00513 /**
00514  * @brief Mask for supported channels of this radio.
00515  * The AT86RF212 supports channels 0 ... 10 of IEEE 802.15.4
00516  * (currently no support for free configurable frequencies here)
00517  */
00518 
00519 
00520 /**
00521  * @brief Mask for supported channel pages (a.k.a. modulation schemes) of this radio.
00522  * The AT86RF230 supports channel page ???? OQPSK_250
00523  */
00524 #define TRX_SUPPORTED_PAGES     (42)
00525 #define TRX_SUPPORTS_BAND_700 (1)
00526 #define TRX_SUPPORTS_BAND_800 (1)
00527 #define TRX_SUPPORTS_BAND_900 (1)
00528 
00529 /** Rate code for BPSK20, xx kchip/s, yy kbit/s */
00530 #define TRX_BPSK20    (0)
00531 
00532 /** Rate code for BPSK40, xx kchip/s, yy kbit/s */
00533 #define TRX_BPSK40    (4)
00534 
00535 /** Rate code for OQPSK100, xx kchip/s, yy kbit/s */
00536 #define TRX_OQPSK100  (8)
00537 
00538 /** Rate code for OQPSK200, xx kchip/s, yy kbit/s */
00539 #define TRX_OQPSK200  (9)
00540 
00541 /** Rate code for OQPSK400, xx kchip/s, yy kbit/s */
00542 #define TRX_OQPSK400  (10)
00543 #define TRX_OQPSK400_1  (11)
00544 
00545 /** Rate code for OQPSK250, xx kchip/s, yy kbit/s */
00546 #ifdef CHINABAND
00547 #define TRX_OQPSK250  (28)
00548 #define CCBAND  (4)
00549 #define CCNUMBER  (11)
00550 #else
00551 #define TRX_OQPSK250  (12)
00552 #endif
00553 
00554 /** Rate code for OQPSK500, xx kchip/s, yy kbit/s */
00555 #define TRX_OQPSK500  (13)
00556 
00557 /** Rate code for OQPSK1000, xx kchip/s, yy kbit/s */
00558 #define TRX_OQPSK1000 (14)
00559 #define TRX_OQPSK1000_1 (15)
00560 /** undefined data rate */
00561 #define TRX_NONE      (255)
00562 
00563 #endif /* ifndef AT86RF212_H */