CC1000Const.h
上传用户:joranyuan
上传日期:2022-06-23
资源大小:3306k
文件大小:17k
源码类别:

网络

开发平台:

Others

  1. // $Id: CC1000Const.h,v 1.1.1.1 2005/04/22 04:26:45 acwarrie Exp $
  2. /* -*- Mode: C; c-basic-indent: 2; indent-tabs-mode: nil -*- */ 
  3. /* tab:4
  4.  *  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.  By
  5.  *  downloading, copying, installing or using the software you agree to
  6.  *  this license.  If you do not agree to this license, do not download,
  7.  *  install, copy or use the software.
  8.  *
  9.  *  Intel Open Source License 
  10.  *
  11.  *  Copyright (c) 2002 Intel Corporation 
  12.  *  All rights reserved. 
  13.  *  Redistribution and use in source and binary forms, with or without
  14.  *  modification, are permitted provided that the following conditions are
  15.  *  met:
  16.  * 
  17.  * Redistributions of source code must retain the above copyright
  18.  *  notice, this list of conditions and the following disclaimer.
  19.  * Redistributions in binary form must reproduce the above copyright
  20.  *  notice, this list of conditions and the following disclaimer in the
  21.  *  documentation and/or other materials provided with the distribution.
  22.  *      Neither the name of the Intel Corporation nor the names of its
  23.  *  contributors may be used to endorse or promote products derived from
  24.  *  this software without specific prior written permission.
  25.  *  
  26.  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  27.  *  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  28.  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
  29.  *  PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE INTEL OR ITS
  30.  *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  31.  *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  32.  *  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  33.  *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  34.  *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  35.  *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  36.  *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  37.  * 
  38.  * 
  39.  */
  40. /*
  41.  *
  42.  * Authors: Phil Buonadonna
  43.  * Date last modified:  1/10/03
  44.  *
  45.  */
  46. /**
  47.  * @author Phil Buonadonna
  48.  */
  49. #ifndef _CC1KCONST_H
  50. #define _CC1KCONST_H
  51. #include <avr/pgmspace.h>
  52. /* Constants defined for CC1K */
  53. /* Register addresses */
  54. #define CC1K_MAIN            0x00
  55. #define CC1K_FREQ_2A         0x01
  56. #define CC1K_FREQ_1A         0x02
  57. #define CC1K_FREQ_0A         0x03
  58. #define CC1K_FREQ_2B         0x04
  59. #define CC1K_FREQ_1B         0x05
  60. #define CC1K_FREQ_0B         0x06
  61. #define CC1K_FSEP1           0x07
  62. #define CC1K_FSEP0           0x08
  63. #define CC1K_CURRENT         0x09
  64. #define CC1K_FRONT_END       0x0A //10
  65. #define CC1K_PA_POW          0x0B //11
  66. #define CC1K_PLL             0x0C //12
  67. #define CC1K_LOCK            0x0D //13
  68. #define CC1K_CAL             0x0E //14
  69. #define CC1K_MODEM2          0x0F //15
  70. #define CC1K_MODEM1          0x10 //16
  71. #define CC1K_MODEM0          0x11 //17
  72. #define CC1K_MATCH           0x12 //18
  73. #define CC1K_FSCTRL          0x13 //19
  74. #define CC1K_FSHAPE7         0x14 //20
  75. #define CC1K_FSHAPE6         0x15 //21
  76. #define CC1K_FSHAPE5         0x16 //22
  77. #define CC1K_FSHAPE4         0x17 //23
  78. #define CC1K_FSHAPE3         0x18 //24
  79. #define CC1K_FSHAPE2         0x19 //25
  80. #define CC1K_FSHAPE1         0x1A //26
  81. #define CC1K_FSDELAY         0x1B //27
  82. #define CC1K_PRESCALER       0x1C //28
  83. #define CC1K_TEST6           0x40 //64
  84. #define CC1K_TEST5           0x41 //66
  85. #define CC1K_TEST4           0x42 //67
  86. #define CC1K_TEST3           0x43 //68
  87. #define CC1K_TEST2           0x44 //69
  88. #define CC1K_TEST1           0x45 //70
  89. #define CC1K_TEST0           0x46 //71
  90. // MAIN Register Bit Posititions
  91. #define CC1K_RXTX 7
  92. #define CC1K_F_REG 6
  93. #define CC1K_RX_PD 5
  94. #define CC1K_TX_PD 4
  95. #define CC1K_FS_PD 3
  96. #define CC1K_CORE_PD 2
  97. #define CC1K_BIAS_PD 1
  98. #define CC1K_RESET_N 0
  99. // CURRENT Register Bit Positions
  100. #define CC1K_VCO_CURRENT 4
  101. #define CC1K_LO_DRIVE 2
  102. #define CC1K_PA_DRIVE 0
  103. // FRONT_END Register Bit Positions
  104. #define CC1K_BUF_CURRENT 5
  105. #define CC1K_LNA_CURRENT 3
  106. #define CC1K_IF_RSSI 1
  107. #define CC1K_XOSC_BYPASS 0
  108. // PA_POW Register Bit Positions
  109. #define CC1K_PA_HIGHPOWER 4
  110. #define CC1K_PA_LOWPOWER 0
  111. // PLL Register Bit Positions
  112. #define CC1K_EXT_FILTER 7
  113. #define CC1K_REFDIV 3
  114. #define CC1K_ALARM_DISABLE 2
  115. #define CC1K_ALARM_H 1
  116. #define CC1K_ALARM_L 0
  117. // LOCK Register Bit Positions
  118. #define CC1K_LOCK_SELECT 4
  119. #define CC1K_PLL_LOCK_ACCURACY 3
  120. #define CC1K_PLL_LOCK_LENGTH 2
  121. #define CC1K_LOCK_INSTANT 1
  122. #define CC1K_LOCK_CONTINUOUS 0
  123. // CAL Register Bit Positions
  124. #define CC1K_CAL_START 7
  125. #define CC1K_CAL_DUAL 6
  126. #define CC1K_CAL_WAIT 5
  127. #define CC1K_CAL_CURRENT 4
  128. #define CC1K_CAL_COMPLETE 3
  129. #define CC1K_CAL_ITERATE 0
  130. // MODEM2 Register Bit Positions
  131. #define CC1K_PEAKDETECT 7
  132. #define CC1K_PEAK_LEVEL_OFFSET 0
  133. // MODEM1 Register Bit Positions
  134. #define CC1K_MLIMIT 5
  135. #define CC1K_LOCK_AVG_IN 4
  136. #define CC1K_LOCK_AVG_MODE 3
  137. #define CC1K_SETTLING 1
  138. #define CC1K_MODEM_RESET_N 0
  139. // MODEM0 Register Bit Positions
  140. #define CC1K_BAUDRATE 4
  141. #define CC1K_DATA_FORMAT 2
  142. #define CC1K_XOSC_FREQ 0
  143. // MATCH Register Bit Positions
  144. #define CC1K_RX_MATCH 4
  145. #define CC1K_TX_MATCH 0
  146. // FSCTLR Register Bit Positions
  147. #define CC1K_DITHER1 3
  148. #define CC1K_DITHER0 2
  149. #define CC1K_SHAPE 1
  150. #define CC1K_FS_RESET_N 0
  151. // PRESCALER Register Bit Positions
  152. #define CC1K_PRE_SWING 6
  153. #define CC1K_PRE_CURRENT 4
  154. #define CC1K_IF_INPUT 3
  155. #define CC1K_IF_FRONT 2
  156. // TEST6 Register Bit Positions
  157. #define CC1K_LOOPFILTER_TP1 7
  158. #define CC1K_LOOPFILTER_TP2 6
  159. #define CC1K_CHP_OVERRIDE 5
  160. #define CC1K_CHP_CO 0
  161. // TEST5 Register Bit Positions
  162. #define CC1K_CHP_DISABLE 5
  163. #define CC1K_VCO_OVERRIDE 4
  164. #define CC1K_VCO_AO 0
  165. // TEST3 Register Bit Positions
  166. #define CC1K_BREAK_LOOP 4
  167. #define CC1K_CAL_DAC_OPEN 0
  168. /* 
  169.  * CC1K Register Parameters Table
  170.  *
  171.  * This table follows the same format order as the CC1K register 
  172.  * set EXCEPT for the last entry in the table which is the 
  173.  * CURRENT register value for TX mode.
  174.  *  
  175.  * NOTE: To save RAM space, this table resides in program memory (flash). 
  176.  * This has two important implications:
  177.  * 1) You can't write to it (duh!)
  178.  * 2) You must read it using the PRG_RDB(addr) macro. IT CANNOT BE ACCESSED AS AN ORDINARY C ARRAY.  
  179.  * 
  180.  * Add/remove individual entries below to suit your RF tastes.
  181.  * 
  182.  */
  183. #define CC1K_433_002_MHZ 0x00
  184. #define CC1K_915_998_MHZ 0x01
  185. #define CC1K_434_845_MHZ        0x02
  186. #define CC1K_914_077_MHZ        0x03
  187. #define CC1K_315_178_MHZ        0x04
  188. #ifdef CC1K_DEFAULT_FREQ
  189. #define CC1K_DEF_PRESET (CC1K_DEFAULT_FREQ)
  190. #endif
  191. #ifdef CC1K_MANUAL_FREQ
  192. #define CC1K_DEF_FREQ (CC1K_MANUAL_FREQ)
  193. #endif
  194. #ifndef CC1K_DEF_PRESET
  195. #define CC1K_DEF_PRESET (CC1K_433_002_MHZ)
  196. #endif 
  197. //#define CC1K_SquelchInit        0x02F8 // 0.90V using the bandgap reference
  198. #define CC1K_SquelchInit        0x120
  199. #define CC1K_SquelchTableSize   9     
  200. #define CC1K_MaxRSSISamples     5
  201. #define CC1K_Settling           1
  202. #define CC1K_ValidPrecursor     2
  203. #define CC1K_SquelchIntervalFast 128
  204. #define CC1K_SquelchIntervalSlow 2560
  205. #define CC1K_SquelchCount       30
  206. #define CC1K_SquelchBuffer      16
  207. #define CC1K_LPL_STATES         9
  208. #define CC1K_LPL_PACKET_TIME    16
  209. typedef struct syncMsgType{
  210.   uint16_t mticks;
  211.   uint16_t sticks;
  212.   uint8_t trust;
  213.   uint16_t sender;
  214. } syncMsgType;
  215. typedef struct ecnMsgType{
  216.   uint8_t hopCount;
  217.   uint16_t nextHop;
  218.   uint16_t senderAddress;
  219. } ecnMsgType;
  220. typedef struct ecnForwardMsgType{
  221.   uint8_t hopCount;
  222.   uint16_t nextHop;
  223.   uint16_t senderAddress;
  224. } ecnForwardMsgType;
  225. static const prog_uchar CC1K_LPL_PreambleLength[CC1K_LPL_STATES*2] = {
  226.     0, 6,       // Always on, 6 byte preamble
  227.     0x0, 48,    // 10ms check interval
  228.     0x0, 60,    // 25ms 
  229.     0x0, 144,   // 50ms 
  230.     0x1, 0x0f,  // 100ms
  231.     0x1, 0xf8,  // 200ms
  232.     0x3, 0xd9,  // 400ms
  233.     0x7, 0x9b,  // 800ms
  234.     0xf, 0x06,  // 1600ms
  235. };
  236. static const prog_uchar CC1K_LPL_SleepTime[CC1K_LPL_STATES*2] = {
  237.     0, 0,       //0
  238.     0x0, 10,    // 10ms
  239.     0x0, 25,    // 25ms
  240.     0x0, 50,    // 50ms
  241.     0x0, 100,   // 100ms
  242.     0x0, 200,   // 200ms
  243.     0x1, 0x90,  // 400ms
  244.     0x3, 0x20,  // 800ms
  245.     0x6, 0x40,  // 1600ms
  246. };
  247. static const prog_uchar CC1K_LPL_SleepPreamble[CC1K_LPL_STATES] = {
  248.     0, 
  249.     8,
  250.     8,
  251.     8, 
  252.     8,
  253.     8,
  254.     8,
  255.     8
  256. };
  257. static const prog_uchar CC1K_Params[6][31] = {
  258.   // (0) 433.002 MHz channel, 19.2 Kbps data, Manchester Encoding, High Side LO
  259.   { // MAIN   0x00
  260.     0x31,
  261.     // FREQ2A,FREQ1A,FREQ0A  0x01-0x03
  262.     0x58,0x00,0x00,
  263.     // FREQ2B,FREQ1B,FREQ0B  0x04-0x06
  264.     0x57,0xf6,0x85,    //XBOW
  265.     // FSEP1, FSEP0     0x07-0x08
  266.     0X03,0x55,
  267.     // CURRENT (RX MODE VALUE)   0x09 (also see below)
  268.     ((4<<CC1K_VCO_CURRENT) | (1<<CC1K_LO_DRIVE)),
  269.     // FRONT_END  0x0a
  270.     ((1<<CC1K_IF_RSSI)),
  271.     // PA_POW  0x0b
  272.     ((0x0<<CC1K_PA_HIGHPOWER) | (0xf<<CC1K_PA_LOWPOWER)), 
  273.     // PLL  0x0c
  274.     ((12<<CC1K_REFDIV)),
  275.     // LOCK  0x0d
  276.     ((0xe<<CC1K_LOCK_SELECT)),
  277.     // CAL  0x0e
  278.     ((1<<CC1K_CAL_WAIT) | (6<<CC1K_CAL_ITERATE)),
  279.     // MODEM2  0x0f
  280.     ((0<<CC1K_PEAKDETECT) | (28<<CC1K_PEAK_LEVEL_OFFSET)),
  281.     // MODEM1  0x10
  282.     ((3<<CC1K_MLIMIT) | (1<<CC1K_LOCK_AVG_MODE) | (CC1K_Settling<<CC1K_SETTLING) | (1<<CC1K_MODEM_RESET_N)), 
  283.     // MODEM0  0x11
  284.     ((5<<CC1K_BAUDRATE) | (1<<CC1K_DATA_FORMAT) | (1<<CC1K_XOSC_FREQ)),
  285.     // MATCH  0x12
  286.     ((0x7<<CC1K_RX_MATCH) | (0x0<<CC1K_TX_MATCH)),
  287.     // FSCTRL 0x13
  288.     ((1<<CC1K_FS_RESET_N)),
  289.     // FSHAPE7 - FSHAPE1   0x14-0x1a
  290.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  291.     // FSDELAY   0x1b
  292.     0x00,
  293.     // PRESCALER    0x1c
  294.     0x00,
  295.     // CURRENT (TX MODE VALUE)  0x1d
  296.     ((8<<CC1K_VCO_CURRENT) | (1<<CC1K_PA_DRIVE)),
  297.     // High side LO  0x1e (i.e. do we need to invert the data?)
  298.     TRUE
  299.   },
  300.   // (1) 915.9988 MHz channel, 19.2 Kbps data, Manchester Encoding, High Side LO
  301.   { // MAIN   0x00 
  302.     0x31,
  303.     // FREQ2A,FREQ1A,FREQ0A  0x01-0x03
  304.     0x7c,0x00,0x00,
  305.     // FREQ2B,FREQ1B,FREQ0B  0x04-0x06
  306.     0x7b,0xf9,0xae,
  307.     // FSEP1, FSEP0     0x07-0x8
  308.     0x02,0x38,
  309.     // CURRENT (RX MODE VALUE)   0x09 (also see below)
  310.     ((8<<CC1K_VCO_CURRENT) | (3<<CC1K_LO_DRIVE)),
  311.     //0x8C,
  312.     // FRONT_END  0x0a
  313.     ((1<<CC1K_BUF_CURRENT) | (2<<CC1K_LNA_CURRENT) | (1<<CC1K_IF_RSSI)),
  314.     //0x32,
  315.     // PA_POW  0x0b
  316.     ((0x8<<CC1K_PA_HIGHPOWER) | (0x0<<CC1K_PA_LOWPOWER)), 
  317.     //0xff,
  318.     // PLL  0xc
  319.     ((8<<CC1K_REFDIV)),
  320.     //0x40,
  321.     // LOCK  0xd
  322.     ((0x1<<CC1K_LOCK_SELECT)),
  323.     //0x10,
  324.     // CAL  0xe
  325.     ((1<<CC1K_CAL_WAIT) | (6<<CC1K_CAL_ITERATE)),
  326.     //0x26,
  327.     // MODEM2  0xf
  328.     ((1<<CC1K_PEAKDETECT) | (33<<CC1K_PEAK_LEVEL_OFFSET)),
  329.     //0xA1,
  330.     // MODEM1  0x10
  331.     ((3<<CC1K_MLIMIT) | (1<<CC1K_LOCK_AVG_MODE) | (CC1K_Settling<<CC1K_SETTLING) | (1<<CC1K_MODEM_RESET_N)), 
  332.     //0x6f, 
  333.     // MODEM0  0x11
  334.     ((5<<CC1K_BAUDRATE) | (1<<CC1K_DATA_FORMAT) | (1<<CC1K_XOSC_FREQ)),
  335.     //0x55,
  336.     // MATCH 0x12
  337.     ((0x1<<CC1K_RX_MATCH) | (0x0<<CC1K_TX_MATCH)),
  338.     //0x10,
  339.     // FSCTRL  0x13
  340.     ((1<<CC1K_FS_RESET_N)),
  341.     //0x01,
  342.     // FSHAPE7 - FSHAPE1   0x14..0x1a
  343.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  344.     // FSDELAY   0x1b
  345.     0x00,
  346.     // PRESCALER    0x1c
  347.     0x00,
  348.     // CURRENT (TX MODE VALUE)  0x1d
  349.     ((15<<CC1K_VCO_CURRENT) | (3<<CC1K_PA_DRIVE)),
  350.     //0xf3,
  351.     // High side LO  0x1e (i.e. do we need to invert the data?)
  352.     TRUE
  353.   },
  354.   // (2) 434.845200 MHz channel, 19.2 Kbps data, Manchester Encoding, High Side LO
  355.   { // MAIN   0x00
  356.     0x31,
  357.     // FREQ2A,FREQ1A,FREQ0A  0x01-0x03
  358.     0x51,0x00,0x00,
  359.     // FREQ2B,FREQ1B,FREQ0B  0x04-0x06
  360.     0x50,0xf7,0x4F,    //XBOW
  361.     // FSEP1, FSEP0     0x07-0x08
  362.     0X03,0x0E,
  363.     // CURRENT (RX MODE VALUE)   0x09 (also see below)
  364.     ((4<<CC1K_VCO_CURRENT) | (1<<CC1K_LO_DRIVE)),
  365.     // FRONT_END  0x0a
  366.     ((1<<CC1K_IF_RSSI)),
  367.     // PA_POW  0x0b
  368.     ((0x0<<CC1K_PA_HIGHPOWER) | (0xf<<CC1K_PA_LOWPOWER)), 
  369.     // PLL  0x0c
  370.     ((11<<CC1K_REFDIV)),
  371.     // LOCK  0x0d
  372.     ((0xe<<CC1K_LOCK_SELECT)),
  373.     // CAL  0x0e
  374.     ((1<<CC1K_CAL_WAIT) | (6<<CC1K_CAL_ITERATE)),
  375.     // MODEM2  0x0f
  376.     ((1<<CC1K_PEAKDETECT) | (33<<CC1K_PEAK_LEVEL_OFFSET)),
  377.     // MODEM1  0x10
  378.     ((3<<CC1K_MLIMIT) | (1<<CC1K_LOCK_AVG_MODE) | (CC1K_Settling<<CC1K_SETTLING) | (1<<CC1K_MODEM_RESET_N)), 
  379.     // MODEM0  0x11
  380.     ((5<<CC1K_BAUDRATE) | (1<<CC1K_DATA_FORMAT) | (1<<CC1K_XOSC_FREQ)),
  381.     // MATCH  0x12
  382.     ((0x7<<CC1K_RX_MATCH) | (0x0<<CC1K_TX_MATCH)),
  383.     // FSCTRL 0x13
  384.     ((1<<CC1K_FS_RESET_N)),
  385.     // FSHAPE7 - FSHAPE1   0x14-0x1a
  386.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  387.     // FSDELAY   0x1b
  388.     0x00,
  389.     // PRESCALER    0x1c
  390.     0x00,
  391.     // CURRENT (TX MODE VALUE)  0x1d
  392.     ((8<<CC1K_VCO_CURRENT) | (1<<CC1K_PA_DRIVE)),
  393.     // High side LO  0x1e (i.e. do we need to invert the data?)
  394.     TRUE
  395.   },
  396.  
  397.   // (3) 914.077 MHz channel, 19.2 Kbps data, Manchester Encoding, High Side LO
  398.   { // MAIN   0x00 
  399.     0x31,
  400.     // FREQ2A,FREQ1A,FREQ0A  0x01-0x03
  401.     0x5c,0xe0,0x00,
  402.     // FREQ2B,FREQ1B,FREQ0B  0x04-0x06
  403.     0x5c,0xdb,0x42,
  404.     // FSEP1, FSEP0     0x07-0x8
  405.     0x01,0xAA,
  406.     // CURRENT (RX MODE VALUE)   0x09 (also see below)
  407.     ((8<<CC1K_VCO_CURRENT) | (3<<CC1K_LO_DRIVE)),
  408.     //0x8C,
  409.     // FRONT_END  0x0a
  410.     ((1<<CC1K_BUF_CURRENT) | (2<<CC1K_LNA_CURRENT) | (1<<CC1K_IF_RSSI)),
  411.     //0x32,
  412.     // PA_POW  0x0b
  413.     ((0x8<<CC1K_PA_HIGHPOWER) | (0x0<<CC1K_PA_LOWPOWER)), 
  414.     //0xff,
  415.     // PLL  0xc
  416.     ((6<<CC1K_REFDIV)),
  417.     //0x40,
  418.     // LOCK  0xd
  419.     ((0x1<<CC1K_LOCK_SELECT)),
  420.     //0x10,
  421.     // CAL  0xe
  422.     ((1<<CC1K_CAL_WAIT) | (6<<CC1K_CAL_ITERATE)),
  423.     //0x26,
  424.     // MODEM2  0xf
  425.     ((1<<CC1K_PEAKDETECT) | (33<<CC1K_PEAK_LEVEL_OFFSET)),
  426.     //0xA1,
  427.     // MODEM1  0x10
  428.     ((3<<CC1K_MLIMIT) | (1<<CC1K_LOCK_AVG_MODE) | (CC1K_Settling<<CC1K_SETTLING) | (1<<CC1K_MODEM_RESET_N)), 
  429.     //0x6f, 
  430.     // MODEM0  0x11
  431.     ((5<<CC1K_BAUDRATE) | (1<<CC1K_DATA_FORMAT) | (1<<CC1K_XOSC_FREQ)),
  432.     //0x55,
  433.     // MATCH 0x12
  434.     ((0x1<<CC1K_RX_MATCH) | (0x0<<CC1K_TX_MATCH)),
  435.     //0x10,
  436.     // FSCTRL  0x13
  437.     ((1<<CC1K_FS_RESET_N)),
  438.     //0x01,
  439.     // FSHAPE7 - FSHAPE1   0x14..0x1a
  440.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  441.     // FSDELAY   0x1b
  442.     0x00,
  443.     // PRESCALER    0x1c
  444.     0x00,
  445.     // CURRENT (TX MODE VALUE)  0x1d
  446.     ((15<<CC1K_VCO_CURRENT) | (3<<CC1K_PA_DRIVE)),
  447.     //0xf3,
  448.     // High side LO  0x1e (i.e. do we need to invert the data?)
  449.     TRUE 
  450.   },
  451.   // (4) 315.178985 MHz channel, 38.4 Kbps data, Manchester Encoding, High Side LO
  452.   { // MAIN   0x00
  453.     0x31,
  454.     // FREQ2A,FREQ1A,FREQ0A  0x01-0x03
  455.     0x45,0x60,0x00,
  456.     // FREQ2B,FREQ1B,FREQ0B  0x04-0x06
  457.     0x45,0x55,0xBB,
  458.     // FSEP1, FSEP0     0x07-0x08
  459.     0X03,0x9C,
  460.     // CURRENT (RX MODE VALUE)   0x09 (also see below)
  461.     ((8<<CC1K_VCO_CURRENT) | (0<<CC1K_LO_DRIVE)),
  462.     // FRONT_END  0x0a
  463.     ((1<<CC1K_IF_RSSI)),
  464.     // PA_POW  0x0b
  465.     ((0x0<<CC1K_PA_HIGHPOWER) | (0xf<<CC1K_PA_LOWPOWER)), 
  466.     // PLL  0x0c
  467.     ((13<<CC1K_REFDIV)),
  468.     // LOCK  0x0d
  469.     ((0xe<<CC1K_LOCK_SELECT)),
  470.     // CAL  0x0e
  471.     ((1<<CC1K_CAL_WAIT) | (6<<CC1K_CAL_ITERATE)),
  472.     // MODEM2  0x0f
  473.     ((1<<CC1K_PEAKDETECT) | (33<<CC1K_PEAK_LEVEL_OFFSET)),
  474.     // MODEM1  0x10
  475.     ((3<<CC1K_MLIMIT) | (1<<CC1K_LOCK_AVG_MODE) | (CC1K_Settling<<CC1K_SETTLING) | (1<<CC1K_MODEM_RESET_N)), 
  476.     // MODEM0  0x11
  477.     ((5<<CC1K_BAUDRATE) | (1<<CC1K_DATA_FORMAT) | (0<<CC1K_XOSC_FREQ)),
  478.     // MATCH  0x12
  479.     ((0x7<<CC1K_RX_MATCH) | (0x0<<CC1K_TX_MATCH)),
  480.     // FSCTRL 0x13
  481.     ((1<<CC1K_FS_RESET_N)),
  482.     // FSHAPE7 - FSHAPE1   0x14-0x1a
  483.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  484.     // FSDELAY   0x1b
  485.     0x00,
  486.     // PRESCALER    0x1c
  487.     0x00,
  488.     // CURRENT (TX MODE VALUE)  0x1d
  489.     ((8<<CC1K_VCO_CURRENT) | (1<<CC1K_PA_DRIVE)),
  490.     // High side LO  0x1e (i.e. do we need to invert the data?)
  491.     TRUE
  492.   },
  493.   // (5) Spare
  494.   { // MAIN   0x00
  495.     0x31,
  496.     // FREQ2A,FREQ1A,FREQ0A  0x01-0x03
  497.     0x58,0x00,0x00,
  498.     // FREQ2B,FREQ1B,FREQ0B  0x04-0x06
  499.     0x57,0xf6,0x85,    //XBOW
  500.     // FSEP1, FSEP0     0x07-0x08
  501.     0X03,0x55,
  502.     // CURRENT (RX MODE VALUE)   0x09 (also see below)
  503.     ((8<<CC1K_VCO_CURRENT) | (4<<CC1K_LO_DRIVE)),
  504.     // FRONT_END  0x0a
  505.     ((1<<CC1K_IF_RSSI)),
  506.     // PA_POW  0x0b
  507.     ((0x0<<CC1K_PA_HIGHPOWER) | (0xf<<CC1K_PA_LOWPOWER)), 
  508.     // PLL  0x0c
  509.     ((12<<CC1K_REFDIV)),
  510.     // LOCK  0x0d
  511.     ((0xe<<CC1K_LOCK_SELECT)),
  512.     // CAL  0x0e
  513.     ((1<<CC1K_CAL_WAIT) | (6<<CC1K_CAL_ITERATE)),
  514.     // MODEM2  0x0f
  515.     ((1<<CC1K_PEAKDETECT) | (33<<CC1K_PEAK_LEVEL_OFFSET)),
  516.     // MODEM1  0x10
  517.     ((3<<CC1K_MLIMIT) | (1<<CC1K_LOCK_AVG_MODE) | (CC1K_Settling<<CC1K_SETTLING) | (1<<CC1K_MODEM_RESET_N)),    // MODEM0  0x11
  518.     ((5<<CC1K_BAUDRATE) | (1<<CC1K_DATA_FORMAT) | (1<<CC1K_XOSC_FREQ)),
  519.     // MATCH  0x12
  520.     ((0x7<<CC1K_RX_MATCH) | (0x0<<CC1K_TX_MATCH)),
  521.     // FSCTRL 0x13
  522.     ((1<<CC1K_FS_RESET_N)),
  523.     // FSHAPE7 - FSHAPE1   0x14-0x1a
  524.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  525.     // FSDELAY   0x1b
  526.     0x00,
  527.     // PRESCALER    0x1c
  528.     0x00,
  529.     // CURRENT (TX MODE VALUE)  0x1d
  530.     ((8<<CC1K_VCO_CURRENT) | (1<<CC1K_PA_DRIVE)),
  531.     // High side LO  0x1e (i.e. do we need to invert the data?)
  532.     TRUE
  533.   },
  534. };
  535. #endif /* _CC1KCONST_H */