Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@9:2a26eec46988, 2015-08-01 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |

