SurreyEARS / Mbed 2 deprecated EARS-FlightCTRL

Dependencies:   mbed USBDevice

Committer:
captaingoujon
Date:
Sat Aug 01 22:59:16 2015 +0000
Branch:
dev-RFM69
Revision:
9:2a26eec46988
Parent:
5:f7c32f548d53
Child:
10:6fe476ec05aa
Functions written, some get functions need implementing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
captaingoujon 0:27c53e093a59 1 #include "mbed.h"
captaingoujon 0:27c53e093a59 2
captaingoujon 9:2a26eec46988 3 #define FSTEP 61
captaingoujon 9:2a26eec46988 4 #define FXOSC 32000000
captaingoujon 9:2a26eec46988 5
captaingoujon 9:2a26eec46988 6 enum Registers{
captaingoujon 9:2a26eec46988 7 REG_FIFO = 0x00,
captaingoujon 9:2a26eec46988 8 REG_OP_MODE = 0x01,
captaingoujon 9:2a26eec46988 9 REG_DATA_MODULATION = 0x02,
captaingoujon 9:2a26eec46988 10 REG_BITRATE_MSB = 0x03,
captaingoujon 9:2a26eec46988 11 REG_BITRATE_LSB = 0x04,
captaingoujon 9:2a26eec46988 12 REG_FDEV_MSB = 0x05,
captaingoujon 9:2a26eec46988 13 REG_FDEV_LSB = 0x06,
captaingoujon 9:2a26eec46988 14 REG_FREQ_MSB = 0x07,
captaingoujon 9:2a26eec46988 15 REG_FREQ_MID = 0x08,
captaingoujon 9:2a26eec46988 16 REG_FREQ_LSB = 0x09,
captaingoujon 9:2a26eec46988 17 REG_OSC1 = 0x0A,
captaingoujon 9:2a26eec46988 18 REG_AFC_CTRL = 0x0B,
captaingoujon 9:2a26eec46988 19 REG_LISTEN_1 = 0x0D,
captaingoujon 9:2a26eec46988 20 REG_LISTEN_2 = 0x0E,
captaingoujon 9:2a26eec46988 21 REG_LISTEN_3 = 0x0F,
captaingoujon 9:2a26eec46988 22 REG_VERSION = 0x10,
captaingoujon 9:2a26eec46988 23 REG_PA_LEVEL = 0x11,
captaingoujon 9:2a26eec46988 24 REG_PA_RAMP = 0x12,
captaingoujon 9:2a26eec46988 25 REG_OCP = 0x13,
captaingoujon 9:2a26eec46988 26 REG_LNA = 0x18,
captaingoujon 9:2a26eec46988 27 REG_RX_BW = 0x19,
captaingoujon 9:2a26eec46988 28 REG_AFC_BW = 0x1A,
captaingoujon 9:2a26eec46988 29 REG_OOK_PEAK = 0x1B,
captaingoujon 9:2a26eec46988 30 REG_OOK_AVG = 0x1C,
captaingoujon 9:2a26eec46988 31 REG_OOK_FIX = 0x1D,
captaingoujon 9:2a26eec46988 32 REG_AFC_FEI = 0x1E,
captaingoujon 9:2a26eec46988 33 REG_AFC_MSB = 0x1F,
captaingoujon 9:2a26eec46988 34 REG_AFC_LSB = 0x20,
captaingoujon 9:2a26eec46988 35 REG_FEI_MSB = 0x21,
captaingoujon 9:2a26eec46988 36 REG_FEI_LSB = 0x22,
captaingoujon 9:2a26eec46988 37 REG_RSSI_CONFIG = 0x23,
captaingoujon 9:2a26eec46988 38 REG_RSSI_VALUE = 0x24,
captaingoujon 9:2a26eec46988 39 REG_DIO_MAPPING_1 = 0x25,
captaingoujon 9:2a26eec46988 40 REG_DIO_MAPPING_2 = 0x26,
captaingoujon 9:2a26eec46988 41 REG_IRQ_FLAGS_1 = 0x27,
captaingoujon 9:2a26eec46988 42 REG_IRQ_FLAGS_2 = 0x28,
captaingoujon 9:2a26eec46988 43 REG_RSSI_THRESH = 0x29,
captaingoujon 9:2a26eec46988 44 REG_RX_TIMEOUT_1 = 0x2A,
captaingoujon 9:2a26eec46988 45 REG_RX_TIMEOUT_2 =0x2B,
captaingoujon 9:2a26eec46988 46 REG_PREAMBLE_MSB = 0x2C,
captaingoujon 9:2a26eec46988 47 REG_PREAMBLE_LSB = 0x2D,
captaingoujon 9:2a26eec46988 48 REG_SYNC_CONFIG = 0x2E,
captaingoujon 9:2a26eec46988 49 REG_SYNC_VALUE_1 = 0x2F,
captaingoujon 9:2a26eec46988 50 REG_SYNC_VALUE_2 = 0x30,
captaingoujon 9:2a26eec46988 51 REG_SYNC_VALUE_3 = 0x31,
captaingoujon 9:2a26eec46988 52 REG_SYNC_VALUE_4 = 0x32,
captaingoujon 9:2a26eec46988 53 REG_SYNC_VALUE_5 = 0x33,
captaingoujon 9:2a26eec46988 54 REG_SYNC_VALUE_6 = 0x34,
captaingoujon 9:2a26eec46988 55 REG_SYNC_VALUE_7 = 0x35,
captaingoujon 9:2a26eec46988 56 REG_SYNC_VALUE_8 = 0x36,
captaingoujon 9:2a26eec46988 57 REG_PACKET_CONFIG_1 = 0x37,
captaingoujon 9:2a26eec46988 58 REG_PAYLOAD_LENGTH = 0x38,
captaingoujon 9:2a26eec46988 59 REG_NODE_ADRS = 0x39,
captaingoujon 9:2a26eec46988 60 REG_BROADCAST_ADRS = 0x3A,
captaingoujon 9:2a26eec46988 61 REG_AUTO_MODES = 0x3B,
captaingoujon 9:2a26eec46988 62 REG_FIFO_THRESH = 0x3C,
captaingoujon 9:2a26eec46988 63 REG_PACKET_CONFIG_2 = 0x3D,
captaingoujon 9:2a26eec46988 64 REG_AES_KEY_1 = 0x3E,
captaingoujon 9:2a26eec46988 65 REG_AES_KEY_2 = 0x3F,
captaingoujon 9:2a26eec46988 66 REG_AES_KEY_3 = 0x40,
captaingoujon 9:2a26eec46988 67 REG_AES_KEY_4 = 0x41,
captaingoujon 9:2a26eec46988 68 REG_AES_KEY_5 = 0x42,
captaingoujon 9:2a26eec46988 69 REG_AES_KEY_6 = 0x43,
captaingoujon 9:2a26eec46988 70 REG_AES_KEY_7 = 0x44,
captaingoujon 9:2a26eec46988 71 REG_AES_KEY_8 = 0x45,
captaingoujon 9:2a26eec46988 72 REG_AES_KEY_9 = 0x46,
captaingoujon 9:2a26eec46988 73 REG_AES_KEY_10 = 0x47,
captaingoujon 9:2a26eec46988 74 REG_AES_KEY_11 = 0x48,
captaingoujon 9:2a26eec46988 75 REG_AES_KEY_12 = 0x49,
captaingoujon 9:2a26eec46988 76 REG_AES_KEY_13 = 0x4A,
captaingoujon 9:2a26eec46988 77 REG_AES_KEY_14 = 0x4B,
captaingoujon 9:2a26eec46988 78 REG_AES_KEY_15 = 0x4C,
captaingoujon 9:2a26eec46988 79 REG_AES_KEY_16 = 0x4D,
captaingoujon 9:2a26eec46988 80 REG_TEMP_1 = 0x4E,
captaingoujon 9:2a26eec46988 81 REG_TEMP_2 = 0x4F
captaingoujon 9:2a26eec46988 82 };
captaingoujon 9:2a26eec46988 83
captaingoujon 9:2a26eec46988 84 enum DataMode{
captaingoujon 9:2a26eec46988 85 MODE_PACKET = 0x00,
captaingoujon 9:2a26eec46988 86 MODE_CONTINUOUS_SYNC = 0x02,
captaingoujon 9:2a26eec46988 87 MODE_CONTINUOUS_NOSYNC = 0x03
captaingoujon 9:2a26eec46988 88 };
captaingoujon 9:2a26eec46988 89
captaingoujon 9:2a26eec46988 90 enum Modulation{
captaingoujon 9:2a26eec46988 91 MODULATION_FSK,
captaingoujon 9:2a26eec46988 92 MODULATION_OOK
captaingoujon 9:2a26eec46988 93 };
captaingoujon 9:2a26eec46988 94
captaingoujon 9:2a26eec46988 95 enum Shaping{
captaingoujon 9:2a26eec46988 96 NONE,
captaingoujon 9:2a26eec46988 97 GAUSSIAN_FULL,
captaingoujon 9:2a26eec46988 98 GAUSSIAN_HALF,
captaingoujon 9:2a26eec46988 99 GAUSSIAN_THIRD
captaingoujon 9:2a26eec46988 100 };
captaingoujon 9:2a26eec46988 101
captaingoujon 9:2a26eec46988 102 SPI radio(PB_15, PB_14, PB_13);
captaingoujon 9:2a26eec46988 103 DigitalOut radioCS(PB_12,1);
captaingoujon 9:2a26eec46988 104 Serial pc(USBTX,USBRX);
captaingoujon 9:2a26eec46988 105
captaingoujon 9:2a26eec46988 106 int getVersion(){
captaingoujon 9:2a26eec46988 107 int version;
captaingoujon 9:2a26eec46988 108 radioCS = 0;
captaingoujon 9:2a26eec46988 109 radio.write(REG_VERSION);
captaingoujon 9:2a26eec46988 110 version = radio.write(0x00);
captaingoujon 9:2a26eec46988 111 radioCS = 1;
captaingoujon 9:2a26eec46988 112 return version;
captaingoujon 9:2a26eec46988 113 }
captaingoujon 9:2a26eec46988 114
captaingoujon 9:2a26eec46988 115 void setFreq(int freq){
captaingoujon 9:2a26eec46988 116 freq /= FSTEP;
captaingoujon 9:2a26eec46988 117 radioCS = 0;
captaingoujon 9:2a26eec46988 118 radio.write(REG_FREQ_MSB | 0x80);
captaingoujon 9:2a26eec46988 119 radio.write((freq>>16)&0xFF);
captaingoujon 9:2a26eec46988 120 radio.write((freq>>8)&0xFF);
captaingoujon 9:2a26eec46988 121 radio.write((freq)&0xFF);
captaingoujon 9:2a26eec46988 122 radioCS=1;
captaingoujon 9:2a26eec46988 123 }
captaingoujon 9:2a26eec46988 124
captaingoujon 9:2a26eec46988 125 int getFreq(){
captaingoujon 9:2a26eec46988 126 int freq;
captaingoujon 9:2a26eec46988 127 radioCS = 0;
captaingoujon 9:2a26eec46988 128 radio.write(REG_FREQ_MSB);
captaingoujon 9:2a26eec46988 129 freq = radio.write(0x00)<<16;
captaingoujon 9:2a26eec46988 130 freq|= radio.write(0x00)<<8;
captaingoujon 9:2a26eec46988 131 freq|= radio.write(0x00);
captaingoujon 9:2a26eec46988 132 radioCS = 1;
captaingoujon 9:2a26eec46988 133 return freq*FSTEP;
captaingoujon 9:2a26eec46988 134 }
captaingoujon 9:2a26eec46988 135
captaingoujon 9:2a26eec46988 136 void setMode(char mode){
captaingoujon 9:2a26eec46988 137 radioCS = 0;
captaingoujon 9:2a26eec46988 138 radio.write(REG_OP_MODE|0x80);
captaingoujon 9:2a26eec46988 139 radio.write(mode);
captaingoujon 9:2a26eec46988 140 radioCS = 1;
captaingoujon 9:2a26eec46988 141 }
captaingoujon 9:2a26eec46988 142
captaingoujon 9:2a26eec46988 143 char getMode(){
captaingoujon 9:2a26eec46988 144 char mode;
captaingoujon 9:2a26eec46988 145 radioCS = 0;
captaingoujon 9:2a26eec46988 146 radio.write(REG_OP_MODE);
captaingoujon 9:2a26eec46988 147 mode = radio.write(0x00);
captaingoujon 9:2a26eec46988 148 radioCS = 1;
captaingoujon 9:2a26eec46988 149 return mode;
captaingoujon 9:2a26eec46988 150 }
captaingoujon 9:2a26eec46988 151
captaingoujon 9:2a26eec46988 152 void setFdev(int fdev){
captaingoujon 9:2a26eec46988 153 fdev /= FSTEP;
captaingoujon 9:2a26eec46988 154 radioCS = 0;
captaingoujon 9:2a26eec46988 155 radio.write(REG_FDEV_MSB | 0x80);
captaingoujon 9:2a26eec46988 156 radio.write((fdev >> 8) & 0x1F);
captaingoujon 9:2a26eec46988 157 radio.write(fdev & 0xFF);
captaingoujon 9:2a26eec46988 158 radioCS = 1;
captaingoujon 9:2a26eec46988 159 }
captaingoujon 9:2a26eec46988 160
captaingoujon 9:2a26eec46988 161 int getFdev(){
captaingoujon 9:2a26eec46988 162 int fdev;
captaingoujon 9:2a26eec46988 163 radioCS = 0;
captaingoujon 9:2a26eec46988 164 radio.write(REG_FDEV_MSB);
captaingoujon 9:2a26eec46988 165 fdev = radio.write(0x00)<<8;
captaingoujon 9:2a26eec46988 166 fdev |= radio.write(fdev)&0xFF;
captaingoujon 9:2a26eec46988 167 radioCS = 1;
captaingoujon 9:2a26eec46988 168 fdev *= FSTEP;
captaingoujon 9:2a26eec46988 169 return fdev;
captaingoujon 9:2a26eec46988 170 }
captaingoujon 9:2a26eec46988 171
captaingoujon 9:2a26eec46988 172 void setModulation(DataMode mode, Modulation modul, Shaping shape){
captaingoujon 9:2a26eec46988 173 radioCS = 0;
captaingoujon 9:2a26eec46988 174 radio.write(REG_DATA_MODULATION | 0x80);
captaingoujon 9:2a26eec46988 175 radio.write((mode << 5)&0x60 | ((modul <<3)&0x18) | (shape&0x03));
captaingoujon 9:2a26eec46988 176 }
captaingoujon 9:2a26eec46988 177
captaingoujon 9:2a26eec46988 178 void getModulation(DataMode mode, Modulation modul, Shaping shape){
captaingoujon 9:2a26eec46988 179 //WRITE A GOOD THING HERE
captaingoujon 9:2a26eec46988 180 }
captaingoujon 9:2a26eec46988 181
captaingoujon 9:2a26eec46988 182 void setBitrate(int bitrate){
captaingoujon 9:2a26eec46988 183 bitrate /= FXOSC;
captaingoujon 9:2a26eec46988 184 radioCS = 1;
captaingoujon 9:2a26eec46988 185 radio.write(REG_BITRATE_MSB | 0x80);
captaingoujon 9:2a26eec46988 186 radio.write((bitrate>>8)&0xFF);
captaingoujon 9:2a26eec46988 187 radio.write(bitrate&0xFF);
captaingoujon 9:2a26eec46988 188 radioCS = 1;
captaingoujon 9:2a26eec46988 189 }
captaingoujon 9:2a26eec46988 190
captaingoujon 9:2a26eec46988 191 void getBitrate(){
captaingoujon 9:2a26eec46988 192 int bitrate;
captaingoujon 9:2a26eec46988 193 radioCS = 1;
captaingoujon 9:2a26eec46988 194 radio.write(REG_BITRATE_MSB | 0x80);
captaingoujon 9:2a26eec46988 195 bitrate = radio.write(0x00)<<8;
captaingoujon 9:2a26eec46988 196 bitrate |= radio.write(0x00)&0xFF;
captaingoujon 9:2a26eec46988 197 radioCS = 1;
captaingoujon 9:2a26eec46988 198 bitrate *= FXOSC;
captaingoujon 9:2a26eec46988 199 }
captaingoujon 9:2a26eec46988 200
captaingoujon 9:2a26eec46988 201 void setPALevel(int level){
captaingoujon 9:2a26eec46988 202 char regPALevel;
captaingoujon 9:2a26eec46988 203 if(level <= -2){//PA0
captaingoujon 9:2a26eec46988 204 regPALevel = 0x80;
captaingoujon 9:2a26eec46988 205 regPALevel |= (level + 18)&0xFF;
captaingoujon 9:2a26eec46988 206 }else if(level <= 13){//PA1
captaingoujon 9:2a26eec46988 207 regPALevel = 0x40;
captaingoujon 9:2a26eec46988 208 regPALevel |= (level + 18)&0xFF;
captaingoujon 9:2a26eec46988 209 }else if(level<=17){//PA1,PA2
captaingoujon 9:2a26eec46988 210 regPALevel = 0xA0;
captaingoujon 9:2a26eec46988 211 regPALevel |= (level + 14)&0xFF;
captaingoujon 9:2a26eec46988 212 }else{
captaingoujon 9:2a26eec46988 213 return;
captaingoujon 9:2a26eec46988 214 }
captaingoujon 9:2a26eec46988 215 radioCS = 0;
captaingoujon 9:2a26eec46988 216 radio.write(REG_PA_LEVEL | 0x80);
captaingoujon 9:2a26eec46988 217 radio.write(regPALevel);
captaingoujon 9:2a26eec46988 218 radioCS = 1;
captaingoujon 9:2a26eec46988 219 }
captaingoujon 9:2a26eec46988 220
captaingoujon 9:2a26eec46988 221 int getPALevel(){
captaingoujon 9:2a26eec46988 222 int level = 0;
captaingoujon 9:2a26eec46988 223 char regPALevel;
captaingoujon 9:2a26eec46988 224 radioCS = 0;
captaingoujon 9:2a26eec46988 225 radio.write(REG_PA_LEVEL);
captaingoujon 9:2a26eec46988 226 regPALevel = radio.write(0x00);
captaingoujon 9:2a26eec46988 227 radioCS = 1;
captaingoujon 9:2a26eec46988 228 if((regPALevel&0x80) || (regPALevel&0x40)){//PA1,PA2
captaingoujon 9:2a26eec46988 229 regPALevel = 0xA0;
captaingoujon 9:2a26eec46988 230 regPALevel |= (level + 14)&0xFF;
captaingoujon 9:2a26eec46988 231 }else if(regPALevel&0x80){//PA0
captaingoujon 9:2a26eec46988 232 level |= (regPALevel&0x1F - 18);
captaingoujon 9:2a26eec46988 233 }else if(regPALevel&0x40){//PA1
captaingoujon 9:2a26eec46988 234 regPALevel = 0x40;
captaingoujon 9:2a26eec46988 235 regPALevel |= (level&0x1F - 18);
captaingoujon 9:2a26eec46988 236 }else{
captaingoujon 9:2a26eec46988 237 return 0;
captaingoujon 9:2a26eec46988 238 }
captaingoujon 9:2a26eec46988 239 return level;
captaingoujon 9:2a26eec46988 240 }
captaingoujon 9:2a26eec46988 241
captaingoujon 9:2a26eec46988 242 void setOCP(bool enabled, char maxCurrent){
captaingoujon 9:2a26eec46988 243 char regOCP = 0;
captaingoujon 9:2a26eec46988 244 if(enabled){
captaingoujon 9:2a26eec46988 245 regOCP = 0x10;
captaingoujon 9:2a26eec46988 246 }
captaingoujon 9:2a26eec46988 247 regOCP |= ((maxCurrent - 45)/5) & 0xFF;
captaingoujon 9:2a26eec46988 248 radioCS = 0;
captaingoujon 9:2a26eec46988 249 radio.write(REG_OCP | 0x80);
captaingoujon 9:2a26eec46988 250 radio.write(regOCP);
captaingoujon 9:2a26eec46988 251 radioCS = 1;
captaingoujon 9:2a26eec46988 252 }
captaingoujon 9:2a26eec46988 253
captaingoujon 9:2a26eec46988 254 void getOCP(){
captaingoujon 9:2a26eec46988 255 //SOMETHING GOOD HERE
captaingoujon 9:2a26eec46988 256 }
captaingoujon 9:2a26eec46988 257
captaingoujon 9:2a26eec46988 258 void setLNA(char lnaZIn, bool agc, char gain){
captaingoujon 9:2a26eec46988 259 char regLNA = 0;
captaingoujon 9:2a26eec46988 260 if(lnaZIn == 200){
captaingoujon 9:2a26eec46988 261 regLNA = 0x80;
captaingoujon 9:2a26eec46988 262 }
captaingoujon 9:2a26eec46988 263 if(!agc){
captaingoujon 9:2a26eec46988 264 if(gain>48){
captaingoujon 9:2a26eec46988 265 regLNA |= 0x01;
captaingoujon 9:2a26eec46988 266 }else{
captaingoujon 9:2a26eec46988 267 regLNA |= (gain&0x07);
captaingoujon 9:2a26eec46988 268 }
captaingoujon 9:2a26eec46988 269 }
captaingoujon 9:2a26eec46988 270 radioCS = 0;
captaingoujon 9:2a26eec46988 271 radio.write(REG_LNA | 0x80);
captaingoujon 9:2a26eec46988 272 radio.write(regLNA);
captaingoujon 9:2a26eec46988 273 radioCS = 1;
captaingoujon 9:2a26eec46988 274 }
captaingoujon 9:2a26eec46988 275
captaingoujon 9:2a26eec46988 276 void setLNA(char lnaZIn, bool agc, char gain){
captaingoujon 9:2a26eec46988 277 //SOMETHING GOOD HERE
captaingoujon 9:2a26eec46988 278 }
captaingoujon 9:2a26eec46988 279
captaingoujon 9:2a26eec46988 280 void setDIOMapping(int regValue){
captaingoujon 9:2a26eec46988 281 radioCS = 0;
captaingoujon 9:2a26eec46988 282 radio.write(REG_DIO_MAPPING_1|0x80);
captaingoujon 9:2a26eec46988 283 radio.write((regValue>>8)&0xFF);
captaingoujon 9:2a26eec46988 284 radio.write(regValue&0xFF);
captaingoujon 9:2a26eec46988 285 radioCS = 1;
captaingoujon 9:2a26eec46988 286 }
captaingoujon 9:2a26eec46988 287
captaingoujon 9:2a26eec46988 288 int setDIOMapping(){
captaingoujon 9:2a26eec46988 289 int regValue;
captaingoujon 9:2a26eec46988 290 radioCS = 0;
captaingoujon 9:2a26eec46988 291 radio.write(REG_DIO_MAPPING_1|0x80);
captaingoujon 9:2a26eec46988 292 regValue = radio.write(0x00)<<8;
captaingoujon 9:2a26eec46988 293 regValue |= radio.write(0x00)&0xFF;
captaingoujon 9:2a26eec46988 294 radioCS = 1;
captaingoujon 9:2a26eec46988 295 return regValue;
captaingoujon 9:2a26eec46988 296 }
captaingoujon 9:2a26eec46988 297
captaingoujon 9:2a26eec46988 298 void setSyncConfig(bool syncOn, bool fifoFillCondition, char syncSize, char syncTol){
captaingoujon 9:2a26eec46988 299 char regSync = 0;
captaingoujon 9:2a26eec46988 300 if(syncOn){
captaingoujon 9:2a26eec46988 301 regSync |= 0x80;
captaingoujon 9:2a26eec46988 302 }
captaingoujon 9:2a26eec46988 303 if(fifoFillCondition){
captaingoujon 9:2a26eec46988 304 regSync |= 0x40;
captaingoujon 9:2a26eec46988 305 }
captaingoujon 9:2a26eec46988 306 regSync |= ((syncSize&0x07)<<3);
captaingoujon 9:2a26eec46988 307 regSync |= (syncTol&0x07);
captaingoujon 9:2a26eec46988 308 }
captaingoujon 9:2a26eec46988 309
captaingoujon 9:2a26eec46988 310 void getSyncConfig(){
captaingoujon 9:2a26eec46988 311 //SOMETHING GOOD
captaingoujon 9:2a26eec46988 312 }
captaingoujon 9:2a26eec46988 313
captaingoujon 9:2a26eec46988 314 void setSyncValue(long long value){
captaingoujon 9:2a26eec46988 315 radioCS = 0;
captaingoujon 9:2a26eec46988 316 radio.write(REG_SYNC_VALUE_1 | 0x80);
captaingoujon 9:2a26eec46988 317 radio.write((value>>55)&0xFF);
captaingoujon 9:2a26eec46988 318 radio.write((value>>47)&0xFF);
captaingoujon 9:2a26eec46988 319 radio.write((value>>39)&0xFF);
captaingoujon 9:2a26eec46988 320 radio.write((value>>31)&0xFF);
captaingoujon 9:2a26eec46988 321 radio.write((value>>23)&0xFF);
captaingoujon 9:2a26eec46988 322 radio.write((value>>15)&0xFF);
captaingoujon 9:2a26eec46988 323 radio.write((value>>7)&0xFF);
captaingoujon 9:2a26eec46988 324 radio.write((value)&0xFF);
captaingoujon 9:2a26eec46988 325 radioCS = 1;
captaingoujon 9:2a26eec46988 326 }
captaingoujon 9:2a26eec46988 327
captaingoujon 9:2a26eec46988 328 long long getSyncValue(){
captaingoujon 9:2a26eec46988 329 long long value;
captaingoujon 9:2a26eec46988 330 radioCS = 0;
captaingoujon 9:2a26eec46988 331 radio.write(REG_SYNC_VALUE_1 | 0x80);
captaingoujon 9:2a26eec46988 332 value = (radio.write(0x00)&0xFF)<<55;
captaingoujon 9:2a26eec46988 333 value |= (radio.write(0x00)&0xFF)<<47;
captaingoujon 9:2a26eec46988 334 value |= (radio.write(0x00)&0xFF)<<39;
captaingoujon 9:2a26eec46988 335 value |= (radio.write(0x00)&0xFF)<<31;
captaingoujon 9:2a26eec46988 336 value |= (radio.write(0x00)&0xFF)<<23;
captaingoujon 9:2a26eec46988 337 value |= (radio.write(0x00)&0xFF)<<15;
captaingoujon 9:2a26eec46988 338 value |= (radio.write(0x00)&0xFF)<<7;
captaingoujon 9:2a26eec46988 339 value |= (radio.write(0x00)&0xFF);
captaingoujon 9:2a26eec46988 340 radioCS = 1;
captaingoujon 9:2a26eec46988 341 return value;
captaingoujon 9:2a26eec46988 342 }
captaingoujon 9:2a26eec46988 343
captaingoujon 9:2a26eec46988 344 void setPacketConfig(bool variableLength, char dcFree, bool crcOn, bool crcAutoClearOff, char addressFiltering, char interPacketRxDelay,bool restartRx,bool autoRxRestartOn, bool aesOn){
captaingoujon 9:2a26eec46988 345 char regPacketConfig1 = 0x00;
captaingoujon 9:2a26eec46988 346 char regPacketConfig2 = 0x00;
captaingoujon 9:2a26eec46988 347 if(variableLength){
captaingoujon 9:2a26eec46988 348 regPacketConfig1 |= 0x80;
captaingoujon 9:2a26eec46988 349 }
captaingoujon 9:2a26eec46988 350 regPacketConfig1 |= (dcFree&0x03)<<5;
captaingoujon 9:2a26eec46988 351 if(crcOn){
captaingoujon 9:2a26eec46988 352 regPacketConfig1 |= 0x10;
captaingoujon 9:2a26eec46988 353 }
captaingoujon 9:2a26eec46988 354 if(crcAutoClearOff){
captaingoujon 9:2a26eec46988 355 regPacketConfig1 |= 0x08;
captaingoujon 9:2a26eec46988 356 }
captaingoujon 9:2a26eec46988 357 regPacketConfig1 |= ((addressFiltering & 0x03)<<1);
captaingoujon 9:2a26eec46988 358
captaingoujon 9:2a26eec46988 359 radioCS = 0;
captaingoujon 9:2a26eec46988 360 radio.write(REG_PACKET_CONFIG_1|0x80);
captaingoujon 9:2a26eec46988 361 radio.write(regPacketConfig1);
captaingoujon 9:2a26eec46988 362 radioCS = 1;
captaingoujon 9:2a26eec46988 363
captaingoujon 9:2a26eec46988 364 regPacketConfig2 |= ((interPacketRxDelay&0x0F)<<4);
captaingoujon 9:2a26eec46988 365 if(restartRx){
captaingoujon 9:2a26eec46988 366 regPacketConfig2 |= (1<<2);
captaingoujon 9:2a26eec46988 367 }
captaingoujon 9:2a26eec46988 368 if(autoRxRestartOn){
captaingoujon 9:2a26eec46988 369 regPacketConfig2 |= (1<<1);
captaingoujon 9:2a26eec46988 370 }
captaingoujon 9:2a26eec46988 371 if(aesOn){
captaingoujon 9:2a26eec46988 372 regPacketConfig2 |= 0x01;
captaingoujon 9:2a26eec46988 373 }
captaingoujon 9:2a26eec46988 374 radioCS = 0;
captaingoujon 9:2a26eec46988 375 radio.write(REG_PACKET_CONFIG_2|0x80);
captaingoujon 9:2a26eec46988 376 radio.write(regPacketConfig2);
captaingoujon 9:2a26eec46988 377 radioCS = 1;
captaingoujon 9:2a26eec46988 378 }
captaingoujon 9:2a26eec46988 379
captaingoujon 9:2a26eec46988 380 void getPacketConfig(){
captaingoujon 9:2a26eec46988 381 //SOMETHING GOOD HERE
captaingoujon 9:2a26eec46988 382 }
captaingoujon 9:2a26eec46988 383
captaingoujon 9:2a26eec46988 384 void setPayloadLength(char payloadLength){
captaingoujon 9:2a26eec46988 385 radioCS = 0;
captaingoujon 9:2a26eec46988 386 radio.write(REG_PAYLOAD_LENGTH | 0x80);
captaingoujon 9:2a26eec46988 387 radio.write(payloadLength);
captaingoujon 9:2a26eec46988 388 radioCS = 1;
captaingoujon 9:2a26eec46988 389 }
captaingoujon 9:2a26eec46988 390
captaingoujon 9:2a26eec46988 391
captaingoujon 9:2a26eec46988 392 char setPayloadLength(){
captaingoujon 9:2a26eec46988 393 char payloadLength;
captaingoujon 9:2a26eec46988 394 radioCS = 0;
captaingoujon 9:2a26eec46988 395 radio.write(REG_PAYLOAD_LENGTH);
captaingoujon 9:2a26eec46988 396 payloadLength = radio.write(0x00);
captaingoujon 9:2a26eec46988 397 radioCS = 1;
captaingoujon 9:2a26eec46988 398 return payloadLength;
captaingoujon 9:2a26eec46988 399 }
captaingoujon 9:2a26eec46988 400
captaingoujon 9:2a26eec46988 401 void setFifoThreshold(char txStartCondition, char fifoThreshold){
captaingoujon 9:2a26eec46988 402 radioCS = 0;
captaingoujon 9:2a26eec46988 403 radio.write(REG_FIFO_THRESH | 0x80);
captaingoujon 9:2a26eec46988 404 radio.write((txStartCondition<<7)|(fifoThreshold&0x7F));
captaingoujon 9:2a26eec46988 405 radioCS = 1;
captaingoujon 9:2a26eec46988 406 }
captaingoujon 9:2a26eec46988 407
captaingoujon 9:2a26eec46988 408 void getFifoThreshold(){
captaingoujon 9:2a26eec46988 409 //SOMETHING GOOD HERE
captaingoujon 9:2a26eec46988 410 }
captaingoujon 9:2a26eec46988 411
captaingoujon 0:27c53e093a59 412 int main(){
captaingoujon 5:f7c32f548d53 413 //Radio Dev branch
captaingoujon 9:2a26eec46988 414 radio.format(8,0);
captaingoujon 9:2a26eec46988 415 //radio.frequency(1000000);
captaingoujon 9:2a26eec46988 416 setMode(0x04);
captaingoujon 9:2a26eec46988 417 wait(1);
captaingoujon 9:2a26eec46988 418 pc.printf("Start\n\r");
captaingoujon 9:2a26eec46988 419 pc.printf("%d\n\r",getFreq());
captaingoujon 9:2a26eec46988 420 //wait(1);
captaingoujon 9:2a26eec46988 421 setFreq(434650000);
captaingoujon 9:2a26eec46988 422 wait(1);
captaingoujon 9:2a26eec46988 423 pc.printf("%d\n\r",getFreq());
captaingoujon 9:2a26eec46988 424 while(1){
captaingoujon 9:2a26eec46988 425 //pc.printf("%d\n\r",getFreq());
captaingoujon 9:2a26eec46988 426 //wait(1);
captaingoujon 9:2a26eec46988 427 __WFI();
captaingoujon 9:2a26eec46988 428 }
captaingoujon 0:27c53e093a59 429 }