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@10:6fe476ec05aa, 2015-08-01 (annotated)
- Committer:
- captaingoujon
- Date:
- Sat Aug 01 23:57:06 2015 +0000
- Branch:
- dev-RFM69
- Revision:
- 10:6fe476ec05aa
- Parent:
- 9:2a26eec46988
- Child:
- 11:8f3e72f6a1e0
Functions finished (may need more in future)
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 | 10:6fe476ec05aa | 102 | struct ModulationSetting{ |
| captaingoujon | 10:6fe476ec05aa | 103 | char mode; |
| captaingoujon | 10:6fe476ec05aa | 104 | char modulation; |
| captaingoujon | 10:6fe476ec05aa | 105 | char shaping; |
| captaingoujon | 10:6fe476ec05aa | 106 | }; |
| captaingoujon | 10:6fe476ec05aa | 107 | |
| captaingoujon | 10:6fe476ec05aa | 108 | struct ocpSetting{ |
| captaingoujon | 10:6fe476ec05aa | 109 | bool enabled; |
| captaingoujon | 10:6fe476ec05aa | 110 | char maxCurrent; |
| captaingoujon | 10:6fe476ec05aa | 111 | }; |
| captaingoujon | 10:6fe476ec05aa | 112 | |
| captaingoujon | 10:6fe476ec05aa | 113 | struct lnaSetting{ |
| captaingoujon | 10:6fe476ec05aa | 114 | char ZIn; |
| captaingoujon | 10:6fe476ec05aa | 115 | bool agc; |
| captaingoujon | 10:6fe476ec05aa | 116 | char gain; |
| captaingoujon | 10:6fe476ec05aa | 117 | }; |
| captaingoujon | 10:6fe476ec05aa | 118 | |
| captaingoujon | 10:6fe476ec05aa | 119 | struct syncSetting{ |
| captaingoujon | 10:6fe476ec05aa | 120 | bool syncOn; |
| captaingoujon | 10:6fe476ec05aa | 121 | bool fifoFillCondition; |
| captaingoujon | 10:6fe476ec05aa | 122 | char syncSize; |
| captaingoujon | 10:6fe476ec05aa | 123 | char syncTol; |
| captaingoujon | 10:6fe476ec05aa | 124 | }; |
| captaingoujon | 10:6fe476ec05aa | 125 | |
| captaingoujon | 10:6fe476ec05aa | 126 | struct packetSetting{ |
| captaingoujon | 10:6fe476ec05aa | 127 | bool variableLength; |
| captaingoujon | 10:6fe476ec05aa | 128 | char dcFree; |
| captaingoujon | 10:6fe476ec05aa | 129 | bool crcOn; |
| captaingoujon | 10:6fe476ec05aa | 130 | bool crcAutoClearOff; |
| captaingoujon | 10:6fe476ec05aa | 131 | char addressFiltering; |
| captaingoujon | 10:6fe476ec05aa | 132 | char interPacketRxDelay; |
| captaingoujon | 10:6fe476ec05aa | 133 | bool restartRx; |
| captaingoujon | 10:6fe476ec05aa | 134 | bool autoRxRestartOn; |
| captaingoujon | 10:6fe476ec05aa | 135 | bool aesOn; |
| captaingoujon | 10:6fe476ec05aa | 136 | }; |
| captaingoujon | 10:6fe476ec05aa | 137 | |
| captaingoujon | 10:6fe476ec05aa | 138 | struct fifoThresholdSetting{ |
| captaingoujon | 10:6fe476ec05aa | 139 | char txStartCondition; |
| captaingoujon | 10:6fe476ec05aa | 140 | char threshold; |
| captaingoujon | 10:6fe476ec05aa | 141 | }; |
| captaingoujon | 10:6fe476ec05aa | 142 | |
| captaingoujon | 9:2a26eec46988 | 143 | SPI radio(PB_15, PB_14, PB_13); |
| captaingoujon | 9:2a26eec46988 | 144 | DigitalOut radioCS(PB_12,1); |
| captaingoujon | 9:2a26eec46988 | 145 | Serial pc(USBTX,USBRX); |
| captaingoujon | 9:2a26eec46988 | 146 | |
| captaingoujon | 9:2a26eec46988 | 147 | int getVersion(){ |
| captaingoujon | 9:2a26eec46988 | 148 | int version; |
| captaingoujon | 9:2a26eec46988 | 149 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 150 | radio.write(REG_VERSION); |
| captaingoujon | 9:2a26eec46988 | 151 | version = radio.write(0x00); |
| captaingoujon | 9:2a26eec46988 | 152 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 153 | return version; |
| captaingoujon | 9:2a26eec46988 | 154 | } |
| captaingoujon | 9:2a26eec46988 | 155 | |
| captaingoujon | 9:2a26eec46988 | 156 | void setFreq(int freq){ |
| captaingoujon | 9:2a26eec46988 | 157 | freq /= FSTEP; |
| captaingoujon | 9:2a26eec46988 | 158 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 159 | radio.write(REG_FREQ_MSB | 0x80); |
| captaingoujon | 9:2a26eec46988 | 160 | radio.write((freq>>16)&0xFF); |
| captaingoujon | 9:2a26eec46988 | 161 | radio.write((freq>>8)&0xFF); |
| captaingoujon | 9:2a26eec46988 | 162 | radio.write((freq)&0xFF); |
| captaingoujon | 9:2a26eec46988 | 163 | radioCS=1; |
| captaingoujon | 9:2a26eec46988 | 164 | } |
| captaingoujon | 9:2a26eec46988 | 165 | |
| captaingoujon | 9:2a26eec46988 | 166 | int getFreq(){ |
| captaingoujon | 9:2a26eec46988 | 167 | int freq; |
| captaingoujon | 9:2a26eec46988 | 168 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 169 | radio.write(REG_FREQ_MSB); |
| captaingoujon | 9:2a26eec46988 | 170 | freq = radio.write(0x00)<<16; |
| captaingoujon | 9:2a26eec46988 | 171 | freq|= radio.write(0x00)<<8; |
| captaingoujon | 9:2a26eec46988 | 172 | freq|= radio.write(0x00); |
| captaingoujon | 9:2a26eec46988 | 173 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 174 | return freq*FSTEP; |
| captaingoujon | 9:2a26eec46988 | 175 | } |
| captaingoujon | 9:2a26eec46988 | 176 | |
| captaingoujon | 9:2a26eec46988 | 177 | void setMode(char mode){ |
| captaingoujon | 9:2a26eec46988 | 178 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 179 | radio.write(REG_OP_MODE|0x80); |
| captaingoujon | 9:2a26eec46988 | 180 | radio.write(mode); |
| captaingoujon | 9:2a26eec46988 | 181 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 182 | } |
| captaingoujon | 9:2a26eec46988 | 183 | |
| captaingoujon | 9:2a26eec46988 | 184 | char getMode(){ |
| captaingoujon | 9:2a26eec46988 | 185 | char mode; |
| captaingoujon | 9:2a26eec46988 | 186 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 187 | radio.write(REG_OP_MODE); |
| captaingoujon | 9:2a26eec46988 | 188 | mode = radio.write(0x00); |
| captaingoujon | 9:2a26eec46988 | 189 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 190 | return mode; |
| captaingoujon | 9:2a26eec46988 | 191 | } |
| captaingoujon | 9:2a26eec46988 | 192 | |
| captaingoujon | 9:2a26eec46988 | 193 | void setFdev(int fdev){ |
| captaingoujon | 9:2a26eec46988 | 194 | fdev /= FSTEP; |
| captaingoujon | 9:2a26eec46988 | 195 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 196 | radio.write(REG_FDEV_MSB | 0x80); |
| captaingoujon | 9:2a26eec46988 | 197 | radio.write((fdev >> 8) & 0x1F); |
| captaingoujon | 9:2a26eec46988 | 198 | radio.write(fdev & 0xFF); |
| captaingoujon | 9:2a26eec46988 | 199 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 200 | } |
| captaingoujon | 9:2a26eec46988 | 201 | |
| captaingoujon | 9:2a26eec46988 | 202 | int getFdev(){ |
| captaingoujon | 9:2a26eec46988 | 203 | int fdev; |
| captaingoujon | 9:2a26eec46988 | 204 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 205 | radio.write(REG_FDEV_MSB); |
| captaingoujon | 9:2a26eec46988 | 206 | fdev = radio.write(0x00)<<8; |
| captaingoujon | 9:2a26eec46988 | 207 | fdev |= radio.write(fdev)&0xFF; |
| captaingoujon | 9:2a26eec46988 | 208 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 209 | fdev *= FSTEP; |
| captaingoujon | 9:2a26eec46988 | 210 | return fdev; |
| captaingoujon | 9:2a26eec46988 | 211 | } |
| captaingoujon | 9:2a26eec46988 | 212 | |
| captaingoujon | 10:6fe476ec05aa | 213 | void setModulation(ModulationSetting settings){ |
| captaingoujon | 9:2a26eec46988 | 214 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 215 | radio.write(REG_DATA_MODULATION | 0x80); |
| captaingoujon | 10:6fe476ec05aa | 216 | radio.write((settings.mode << 5)&0x60 | ((settings.modulation <<3)&0x18) | (settings.shaping&0x03)); |
| captaingoujon | 10:6fe476ec05aa | 217 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 218 | } |
| captaingoujon | 9:2a26eec46988 | 219 | |
| captaingoujon | 10:6fe476ec05aa | 220 | ModulationSetting getModulation(){ |
| captaingoujon | 10:6fe476ec05aa | 221 | ModulationSetting settings; |
| captaingoujon | 10:6fe476ec05aa | 222 | char reg; |
| captaingoujon | 10:6fe476ec05aa | 223 | radioCS = 0; |
| captaingoujon | 10:6fe476ec05aa | 224 | radio.write(REG_DATA_MODULATION); |
| captaingoujon | 10:6fe476ec05aa | 225 | reg= radio.write(0x00)&0xFF; |
| captaingoujon | 10:6fe476ec05aa | 226 | radioCS = 1; |
| captaingoujon | 10:6fe476ec05aa | 227 | settings.mode = (reg&0x60) >> 5; |
| captaingoujon | 10:6fe476ec05aa | 228 | settings.modulation = (reg&0x18) >>3; |
| captaingoujon | 10:6fe476ec05aa | 229 | settings.shaping = (reg&0x03); |
| captaingoujon | 10:6fe476ec05aa | 230 | return settings; |
| captaingoujon | 9:2a26eec46988 | 231 | } |
| captaingoujon | 9:2a26eec46988 | 232 | |
| captaingoujon | 9:2a26eec46988 | 233 | void setBitrate(int bitrate){ |
| captaingoujon | 9:2a26eec46988 | 234 | bitrate /= FXOSC; |
| captaingoujon | 9:2a26eec46988 | 235 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 236 | radio.write(REG_BITRATE_MSB | 0x80); |
| captaingoujon | 9:2a26eec46988 | 237 | radio.write((bitrate>>8)&0xFF); |
| captaingoujon | 9:2a26eec46988 | 238 | radio.write(bitrate&0xFF); |
| captaingoujon | 9:2a26eec46988 | 239 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 240 | } |
| captaingoujon | 9:2a26eec46988 | 241 | |
| captaingoujon | 9:2a26eec46988 | 242 | void getBitrate(){ |
| captaingoujon | 9:2a26eec46988 | 243 | int bitrate; |
| captaingoujon | 9:2a26eec46988 | 244 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 245 | radio.write(REG_BITRATE_MSB | 0x80); |
| captaingoujon | 9:2a26eec46988 | 246 | bitrate = radio.write(0x00)<<8; |
| captaingoujon | 9:2a26eec46988 | 247 | bitrate |= radio.write(0x00)&0xFF; |
| captaingoujon | 9:2a26eec46988 | 248 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 249 | bitrate *= FXOSC; |
| captaingoujon | 9:2a26eec46988 | 250 | } |
| captaingoujon | 9:2a26eec46988 | 251 | |
| captaingoujon | 9:2a26eec46988 | 252 | void setPALevel(int level){ |
| captaingoujon | 9:2a26eec46988 | 253 | char regPALevel; |
| captaingoujon | 9:2a26eec46988 | 254 | if(level <= -2){//PA0 |
| captaingoujon | 9:2a26eec46988 | 255 | regPALevel = 0x80; |
| captaingoujon | 9:2a26eec46988 | 256 | regPALevel |= (level + 18)&0xFF; |
| captaingoujon | 9:2a26eec46988 | 257 | }else if(level <= 13){//PA1 |
| captaingoujon | 9:2a26eec46988 | 258 | regPALevel = 0x40; |
| captaingoujon | 9:2a26eec46988 | 259 | regPALevel |= (level + 18)&0xFF; |
| captaingoujon | 9:2a26eec46988 | 260 | }else if(level<=17){//PA1,PA2 |
| captaingoujon | 9:2a26eec46988 | 261 | regPALevel = 0xA0; |
| captaingoujon | 9:2a26eec46988 | 262 | regPALevel |= (level + 14)&0xFF; |
| captaingoujon | 9:2a26eec46988 | 263 | }else{ |
| captaingoujon | 9:2a26eec46988 | 264 | return; |
| captaingoujon | 9:2a26eec46988 | 265 | } |
| captaingoujon | 9:2a26eec46988 | 266 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 267 | radio.write(REG_PA_LEVEL | 0x80); |
| captaingoujon | 9:2a26eec46988 | 268 | radio.write(regPALevel); |
| captaingoujon | 9:2a26eec46988 | 269 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 270 | } |
| captaingoujon | 9:2a26eec46988 | 271 | |
| captaingoujon | 9:2a26eec46988 | 272 | int getPALevel(){ |
| captaingoujon | 9:2a26eec46988 | 273 | int level = 0; |
| captaingoujon | 9:2a26eec46988 | 274 | char regPALevel; |
| captaingoujon | 9:2a26eec46988 | 275 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 276 | radio.write(REG_PA_LEVEL); |
| captaingoujon | 9:2a26eec46988 | 277 | regPALevel = radio.write(0x00); |
| captaingoujon | 9:2a26eec46988 | 278 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 279 | if((regPALevel&0x80) || (regPALevel&0x40)){//PA1,PA2 |
| captaingoujon | 9:2a26eec46988 | 280 | regPALevel = 0xA0; |
| captaingoujon | 9:2a26eec46988 | 281 | regPALevel |= (level + 14)&0xFF; |
| captaingoujon | 9:2a26eec46988 | 282 | }else if(regPALevel&0x80){//PA0 |
| captaingoujon | 9:2a26eec46988 | 283 | level |= (regPALevel&0x1F - 18); |
| captaingoujon | 9:2a26eec46988 | 284 | }else if(regPALevel&0x40){//PA1 |
| captaingoujon | 9:2a26eec46988 | 285 | regPALevel = 0x40; |
| captaingoujon | 9:2a26eec46988 | 286 | regPALevel |= (level&0x1F - 18); |
| captaingoujon | 9:2a26eec46988 | 287 | }else{ |
| captaingoujon | 9:2a26eec46988 | 288 | return 0; |
| captaingoujon | 9:2a26eec46988 | 289 | } |
| captaingoujon | 9:2a26eec46988 | 290 | return level; |
| captaingoujon | 9:2a26eec46988 | 291 | } |
| captaingoujon | 9:2a26eec46988 | 292 | |
| captaingoujon | 10:6fe476ec05aa | 293 | void setOCP(ocpSetting ocp){ |
| captaingoujon | 9:2a26eec46988 | 294 | char regOCP = 0; |
| captaingoujon | 10:6fe476ec05aa | 295 | if(ocp.enabled){ |
| captaingoujon | 9:2a26eec46988 | 296 | regOCP = 0x10; |
| captaingoujon | 9:2a26eec46988 | 297 | } |
| captaingoujon | 10:6fe476ec05aa | 298 | regOCP |= ((ocp.maxCurrent - 45)/5) & 0x0F; |
| captaingoujon | 9:2a26eec46988 | 299 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 300 | radio.write(REG_OCP | 0x80); |
| captaingoujon | 9:2a26eec46988 | 301 | radio.write(regOCP); |
| captaingoujon | 9:2a26eec46988 | 302 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 303 | } |
| captaingoujon | 9:2a26eec46988 | 304 | |
| captaingoujon | 10:6fe476ec05aa | 305 | ocpSetting getOCP(){ |
| captaingoujon | 10:6fe476ec05aa | 306 | char reg; |
| captaingoujon | 10:6fe476ec05aa | 307 | ocpSetting ocp; |
| captaingoujon | 10:6fe476ec05aa | 308 | radioCS = 0; |
| captaingoujon | 10:6fe476ec05aa | 309 | radio.write(REG_OCP); |
| captaingoujon | 10:6fe476ec05aa | 310 | reg = radio.write(0x00); |
| captaingoujon | 10:6fe476ec05aa | 311 | radioCS = 1; |
| captaingoujon | 10:6fe476ec05aa | 312 | ocp.enabled = reg>>4; |
| captaingoujon | 10:6fe476ec05aa | 313 | ocp.maxCurrent = (reg & 0x0F)*5+45; |
| captaingoujon | 10:6fe476ec05aa | 314 | return ocp; |
| captaingoujon | 9:2a26eec46988 | 315 | } |
| captaingoujon | 9:2a26eec46988 | 316 | |
| captaingoujon | 10:6fe476ec05aa | 317 | void setLNA(lnaSetting lna){ |
| captaingoujon | 9:2a26eec46988 | 318 | char regLNA = 0; |
| captaingoujon | 10:6fe476ec05aa | 319 | if(lna.ZIn == 200){ |
| captaingoujon | 9:2a26eec46988 | 320 | regLNA = 0x80; |
| captaingoujon | 9:2a26eec46988 | 321 | } |
| captaingoujon | 10:6fe476ec05aa | 322 | if(!lna.agc){ |
| captaingoujon | 10:6fe476ec05aa | 323 | if(lna.gain>48){ |
| captaingoujon | 9:2a26eec46988 | 324 | regLNA |= 0x01; |
| captaingoujon | 9:2a26eec46988 | 325 | }else{ |
| captaingoujon | 10:6fe476ec05aa | 326 | regLNA |= (lna.gain&0x07); |
| captaingoujon | 9:2a26eec46988 | 327 | } |
| captaingoujon | 9:2a26eec46988 | 328 | } |
| captaingoujon | 9:2a26eec46988 | 329 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 330 | radio.write(REG_LNA | 0x80); |
| captaingoujon | 9:2a26eec46988 | 331 | radio.write(regLNA); |
| captaingoujon | 9:2a26eec46988 | 332 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 333 | } |
| captaingoujon | 9:2a26eec46988 | 334 | |
| captaingoujon | 10:6fe476ec05aa | 335 | lnaSetting getLNA(){ |
| captaingoujon | 10:6fe476ec05aa | 336 | char reg; |
| captaingoujon | 10:6fe476ec05aa | 337 | lnaSetting lna; |
| captaingoujon | 10:6fe476ec05aa | 338 | radioCS = 0; |
| captaingoujon | 10:6fe476ec05aa | 339 | radio.write(REG_LNA); |
| captaingoujon | 10:6fe476ec05aa | 340 | reg = radio.write(0x00); |
| captaingoujon | 10:6fe476ec05aa | 341 | radioCS = 1; |
| captaingoujon | 10:6fe476ec05aa | 342 | if(reg&0x80){ |
| captaingoujon | 10:6fe476ec05aa | 343 | lna.ZIn = 200; |
| captaingoujon | 10:6fe476ec05aa | 344 | }else{ |
| captaingoujon | 10:6fe476ec05aa | 345 | lna.ZIn = 50; |
| captaingoujon | 10:6fe476ec05aa | 346 | } |
| captaingoujon | 10:6fe476ec05aa | 347 | if(reg&0x07==0){ |
| captaingoujon | 10:6fe476ec05aa | 348 | lna.agc = 1; |
| captaingoujon | 10:6fe476ec05aa | 349 | }else{ |
| captaingoujon | 10:6fe476ec05aa | 350 | lna.agc = 0; |
| captaingoujon | 10:6fe476ec05aa | 351 | } |
| captaingoujon | 10:6fe476ec05aa | 352 | lna.gain = (reg&0x1A)>>3; |
| captaingoujon | 10:6fe476ec05aa | 353 | return lna; |
| captaingoujon | 9:2a26eec46988 | 354 | } |
| captaingoujon | 9:2a26eec46988 | 355 | |
| captaingoujon | 9:2a26eec46988 | 356 | void setDIOMapping(int regValue){ |
| captaingoujon | 9:2a26eec46988 | 357 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 358 | radio.write(REG_DIO_MAPPING_1|0x80); |
| captaingoujon | 9:2a26eec46988 | 359 | radio.write((regValue>>8)&0xFF); |
| captaingoujon | 9:2a26eec46988 | 360 | radio.write(regValue&0xFF); |
| captaingoujon | 9:2a26eec46988 | 361 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 362 | } |
| captaingoujon | 9:2a26eec46988 | 363 | |
| captaingoujon | 10:6fe476ec05aa | 364 | int getDIOMapping(){ |
| captaingoujon | 9:2a26eec46988 | 365 | int regValue; |
| captaingoujon | 9:2a26eec46988 | 366 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 367 | radio.write(REG_DIO_MAPPING_1|0x80); |
| captaingoujon | 9:2a26eec46988 | 368 | regValue = radio.write(0x00)<<8; |
| captaingoujon | 9:2a26eec46988 | 369 | regValue |= radio.write(0x00)&0xFF; |
| captaingoujon | 9:2a26eec46988 | 370 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 371 | return regValue; |
| captaingoujon | 9:2a26eec46988 | 372 | } |
| captaingoujon | 9:2a26eec46988 | 373 | |
| captaingoujon | 10:6fe476ec05aa | 374 | void setSyncConfig(syncSetting sync){ |
| captaingoujon | 9:2a26eec46988 | 375 | char regSync = 0; |
| captaingoujon | 10:6fe476ec05aa | 376 | if(sync.syncOn){ |
| captaingoujon | 9:2a26eec46988 | 377 | regSync |= 0x80; |
| captaingoujon | 9:2a26eec46988 | 378 | } |
| captaingoujon | 10:6fe476ec05aa | 379 | if(sync.fifoFillCondition){ |
| captaingoujon | 9:2a26eec46988 | 380 | regSync |= 0x40; |
| captaingoujon | 9:2a26eec46988 | 381 | } |
| captaingoujon | 10:6fe476ec05aa | 382 | regSync |= ((sync.syncSize&0x07)<<3); |
| captaingoujon | 10:6fe476ec05aa | 383 | regSync |= (sync.syncTol&0x07); |
| captaingoujon | 10:6fe476ec05aa | 384 | radioCS = 0; |
| captaingoujon | 10:6fe476ec05aa | 385 | radio.write(REG_SYNC_CONFIG); |
| captaingoujon | 10:6fe476ec05aa | 386 | radio.write(regSync); |
| captaingoujon | 10:6fe476ec05aa | 387 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 388 | } |
| captaingoujon | 9:2a26eec46988 | 389 | |
| captaingoujon | 10:6fe476ec05aa | 390 | syncSetting getSyncConfig(){ |
| captaingoujon | 10:6fe476ec05aa | 391 | char reg; |
| captaingoujon | 10:6fe476ec05aa | 392 | syncSetting sync; |
| captaingoujon | 10:6fe476ec05aa | 393 | radioCS = 0; |
| captaingoujon | 10:6fe476ec05aa | 394 | radio.write(REG_SYNC_CONFIG); |
| captaingoujon | 10:6fe476ec05aa | 395 | reg = radio.write(0x00); |
| captaingoujon | 10:6fe476ec05aa | 396 | radioCS = 1; |
| captaingoujon | 10:6fe476ec05aa | 397 | if(reg &= 0x80){ |
| captaingoujon | 10:6fe476ec05aa | 398 | sync.syncOn = 1; |
| captaingoujon | 10:6fe476ec05aa | 399 | }else{ |
| captaingoujon | 10:6fe476ec05aa | 400 | sync.syncOn = 0; |
| captaingoujon | 10:6fe476ec05aa | 401 | } |
| captaingoujon | 10:6fe476ec05aa | 402 | if(reg&0x40){ |
| captaingoujon | 10:6fe476ec05aa | 403 | sync.fifoFillCondition = 1; |
| captaingoujon | 10:6fe476ec05aa | 404 | }else{ |
| captaingoujon | 10:6fe476ec05aa | 405 | sync.fifoFillCondition = 0; |
| captaingoujon | 10:6fe476ec05aa | 406 | } |
| captaingoujon | 10:6fe476ec05aa | 407 | sync.syncSize = (reg&0x1A)>>3; |
| captaingoujon | 10:6fe476ec05aa | 408 | sync.syncTol = (reg&0x07); |
| captaingoujon | 10:6fe476ec05aa | 409 | return sync; |
| captaingoujon | 9:2a26eec46988 | 410 | } |
| captaingoujon | 9:2a26eec46988 | 411 | |
| captaingoujon | 9:2a26eec46988 | 412 | void setSyncValue(long long value){ |
| captaingoujon | 9:2a26eec46988 | 413 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 414 | radio.write(REG_SYNC_VALUE_1 | 0x80); |
| captaingoujon | 9:2a26eec46988 | 415 | radio.write((value>>55)&0xFF); |
| captaingoujon | 9:2a26eec46988 | 416 | radio.write((value>>47)&0xFF); |
| captaingoujon | 9:2a26eec46988 | 417 | radio.write((value>>39)&0xFF); |
| captaingoujon | 9:2a26eec46988 | 418 | radio.write((value>>31)&0xFF); |
| captaingoujon | 9:2a26eec46988 | 419 | radio.write((value>>23)&0xFF); |
| captaingoujon | 9:2a26eec46988 | 420 | radio.write((value>>15)&0xFF); |
| captaingoujon | 9:2a26eec46988 | 421 | radio.write((value>>7)&0xFF); |
| captaingoujon | 9:2a26eec46988 | 422 | radio.write((value)&0xFF); |
| captaingoujon | 9:2a26eec46988 | 423 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 424 | } |
| captaingoujon | 9:2a26eec46988 | 425 | |
| captaingoujon | 9:2a26eec46988 | 426 | long long getSyncValue(){ |
| captaingoujon | 9:2a26eec46988 | 427 | long long value; |
| captaingoujon | 9:2a26eec46988 | 428 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 429 | radio.write(REG_SYNC_VALUE_1 | 0x80); |
| captaingoujon | 9:2a26eec46988 | 430 | value = (radio.write(0x00)&0xFF)<<55; |
| captaingoujon | 9:2a26eec46988 | 431 | value |= (radio.write(0x00)&0xFF)<<47; |
| captaingoujon | 9:2a26eec46988 | 432 | value |= (radio.write(0x00)&0xFF)<<39; |
| captaingoujon | 9:2a26eec46988 | 433 | value |= (radio.write(0x00)&0xFF)<<31; |
| captaingoujon | 9:2a26eec46988 | 434 | value |= (radio.write(0x00)&0xFF)<<23; |
| captaingoujon | 9:2a26eec46988 | 435 | value |= (radio.write(0x00)&0xFF)<<15; |
| captaingoujon | 9:2a26eec46988 | 436 | value |= (radio.write(0x00)&0xFF)<<7; |
| captaingoujon | 9:2a26eec46988 | 437 | value |= (radio.write(0x00)&0xFF); |
| captaingoujon | 9:2a26eec46988 | 438 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 439 | return value; |
| captaingoujon | 9:2a26eec46988 | 440 | } |
| captaingoujon | 9:2a26eec46988 | 441 | |
| captaingoujon | 10:6fe476ec05aa | 442 | void setPacketConfig(packetSetting packetConfig){ |
| captaingoujon | 9:2a26eec46988 | 443 | char regPacketConfig1 = 0x00; |
| captaingoujon | 9:2a26eec46988 | 444 | char regPacketConfig2 = 0x00; |
| captaingoujon | 10:6fe476ec05aa | 445 | if(packetConfig.variableLength){ |
| captaingoujon | 9:2a26eec46988 | 446 | regPacketConfig1 |= 0x80; |
| captaingoujon | 9:2a26eec46988 | 447 | } |
| captaingoujon | 10:6fe476ec05aa | 448 | regPacketConfig1 |= (packetConfig.dcFree&0x03)<<5; |
| captaingoujon | 10:6fe476ec05aa | 449 | if(packetConfig.crcOn){ |
| captaingoujon | 9:2a26eec46988 | 450 | regPacketConfig1 |= 0x10; |
| captaingoujon | 9:2a26eec46988 | 451 | } |
| captaingoujon | 10:6fe476ec05aa | 452 | if(packetConfig.crcAutoClearOff){ |
| captaingoujon | 9:2a26eec46988 | 453 | regPacketConfig1 |= 0x08; |
| captaingoujon | 9:2a26eec46988 | 454 | } |
| captaingoujon | 10:6fe476ec05aa | 455 | regPacketConfig1 |= ((packetConfig.addressFiltering & 0x03)<<1); |
| captaingoujon | 9:2a26eec46988 | 456 | |
| captaingoujon | 9:2a26eec46988 | 457 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 458 | radio.write(REG_PACKET_CONFIG_1|0x80); |
| captaingoujon | 9:2a26eec46988 | 459 | radio.write(regPacketConfig1); |
| captaingoujon | 9:2a26eec46988 | 460 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 461 | |
| captaingoujon | 10:6fe476ec05aa | 462 | regPacketConfig2 |= ((packetConfig.interPacketRxDelay&0x0F)<<4); |
| captaingoujon | 10:6fe476ec05aa | 463 | if(packetConfig.restartRx){ |
| captaingoujon | 9:2a26eec46988 | 464 | regPacketConfig2 |= (1<<2); |
| captaingoujon | 9:2a26eec46988 | 465 | } |
| captaingoujon | 10:6fe476ec05aa | 466 | if(packetConfig.autoRxRestartOn){ |
| captaingoujon | 9:2a26eec46988 | 467 | regPacketConfig2 |= (1<<1); |
| captaingoujon | 9:2a26eec46988 | 468 | } |
| captaingoujon | 10:6fe476ec05aa | 469 | if(packetConfig.aesOn){ |
| captaingoujon | 9:2a26eec46988 | 470 | regPacketConfig2 |= 0x01; |
| captaingoujon | 9:2a26eec46988 | 471 | } |
| captaingoujon | 9:2a26eec46988 | 472 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 473 | radio.write(REG_PACKET_CONFIG_2|0x80); |
| captaingoujon | 9:2a26eec46988 | 474 | radio.write(regPacketConfig2); |
| captaingoujon | 9:2a26eec46988 | 475 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 476 | } |
| captaingoujon | 9:2a26eec46988 | 477 | |
| captaingoujon | 10:6fe476ec05aa | 478 | packetSetting getPacketConfig(){ |
| captaingoujon | 10:6fe476ec05aa | 479 | packetSetting packetConfig; |
| captaingoujon | 10:6fe476ec05aa | 480 | char regPacketConfig1; |
| captaingoujon | 10:6fe476ec05aa | 481 | char regPacketConfig2; |
| captaingoujon | 10:6fe476ec05aa | 482 | radioCS = 0; |
| captaingoujon | 10:6fe476ec05aa | 483 | radio.write(REG_PACKET_CONFIG_1|0x80); |
| captaingoujon | 10:6fe476ec05aa | 484 | regPacketConfig1 = radio.write(0x00); |
| captaingoujon | 10:6fe476ec05aa | 485 | radioCS = 1; |
| captaingoujon | 10:6fe476ec05aa | 486 | radioCS = 0; |
| captaingoujon | 10:6fe476ec05aa | 487 | radio.write(REG_PACKET_CONFIG_2|0x80); |
| captaingoujon | 10:6fe476ec05aa | 488 | regPacketConfig2 = radio.write(0x00); |
| captaingoujon | 10:6fe476ec05aa | 489 | radioCS = 1; |
| captaingoujon | 10:6fe476ec05aa | 490 | if(regPacketConfig1 & 0x80){ |
| captaingoujon | 10:6fe476ec05aa | 491 | packetConfig.variableLength = 1; |
| captaingoujon | 10:6fe476ec05aa | 492 | }else{ |
| captaingoujon | 10:6fe476ec05aa | 493 | packetConfig.variableLength = 0; |
| captaingoujon | 10:6fe476ec05aa | 494 | } |
| captaingoujon | 10:6fe476ec05aa | 495 | packetConfig.dcFree = (regPacketConfig1&0x60)>>5; |
| captaingoujon | 10:6fe476ec05aa | 496 | if(regPacketConfig1 & 0x10){ |
| captaingoujon | 10:6fe476ec05aa | 497 | packetConfig.crcOn = 1; |
| captaingoujon | 10:6fe476ec05aa | 498 | }else{ |
| captaingoujon | 10:6fe476ec05aa | 499 | packetConfig.crcOn = 0; |
| captaingoujon | 10:6fe476ec05aa | 500 | } |
| captaingoujon | 10:6fe476ec05aa | 501 | if(regPacketConfig1 & 0x08){ |
| captaingoujon | 10:6fe476ec05aa | 502 | packetConfig.crcAutoClearOff = 1; |
| captaingoujon | 10:6fe476ec05aa | 503 | }else{ |
| captaingoujon | 10:6fe476ec05aa | 504 | packetConfig.crcAutoClearOff = 1; |
| captaingoujon | 10:6fe476ec05aa | 505 | } |
| captaingoujon | 10:6fe476ec05aa | 506 | packetConfig.addressFiltering = (regPacketConfig1&0x06)>>1; |
| captaingoujon | 10:6fe476ec05aa | 507 | |
| captaingoujon | 10:6fe476ec05aa | 508 | packetConfig.interPacketRxDelay = (regPacketConfig2&0xF0)>>4; |
| captaingoujon | 10:6fe476ec05aa | 509 | if(regPacketConfig2 & 0x04){ |
| captaingoujon | 10:6fe476ec05aa | 510 | packetConfig.restartRx = 1; |
| captaingoujon | 10:6fe476ec05aa | 511 | }else{ |
| captaingoujon | 10:6fe476ec05aa | 512 | packetConfig.restartRx = 0; |
| captaingoujon | 10:6fe476ec05aa | 513 | } |
| captaingoujon | 10:6fe476ec05aa | 514 | if(regPacketConfig2 & 0x02){ |
| captaingoujon | 10:6fe476ec05aa | 515 | packetConfig.autoRxRestartOn = 1; |
| captaingoujon | 10:6fe476ec05aa | 516 | }else{ |
| captaingoujon | 10:6fe476ec05aa | 517 | packetConfig.autoRxRestartOn = 0; |
| captaingoujon | 10:6fe476ec05aa | 518 | } |
| captaingoujon | 10:6fe476ec05aa | 519 | if(regPacketConfig2 & 0x01){ |
| captaingoujon | 10:6fe476ec05aa | 520 | packetConfig.aesOn = 1; |
| captaingoujon | 10:6fe476ec05aa | 521 | }else{ |
| captaingoujon | 10:6fe476ec05aa | 522 | packetConfig.aesOn = 0; |
| captaingoujon | 10:6fe476ec05aa | 523 | } |
| captaingoujon | 10:6fe476ec05aa | 524 | return packetConfig; |
| captaingoujon | 9:2a26eec46988 | 525 | } |
| captaingoujon | 9:2a26eec46988 | 526 | |
| captaingoujon | 9:2a26eec46988 | 527 | void setPayloadLength(char payloadLength){ |
| captaingoujon | 9:2a26eec46988 | 528 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 529 | radio.write(REG_PAYLOAD_LENGTH | 0x80); |
| captaingoujon | 9:2a26eec46988 | 530 | radio.write(payloadLength); |
| captaingoujon | 9:2a26eec46988 | 531 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 532 | } |
| captaingoujon | 9:2a26eec46988 | 533 | |
| captaingoujon | 9:2a26eec46988 | 534 | |
| captaingoujon | 9:2a26eec46988 | 535 | char setPayloadLength(){ |
| captaingoujon | 9:2a26eec46988 | 536 | char payloadLength; |
| captaingoujon | 9:2a26eec46988 | 537 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 538 | radio.write(REG_PAYLOAD_LENGTH); |
| captaingoujon | 9:2a26eec46988 | 539 | payloadLength = radio.write(0x00); |
| captaingoujon | 9:2a26eec46988 | 540 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 541 | return payloadLength; |
| captaingoujon | 9:2a26eec46988 | 542 | } |
| captaingoujon | 9:2a26eec46988 | 543 | |
| captaingoujon | 10:6fe476ec05aa | 544 | void setFifoThreshold(fifoThresholdSetting fifo){ |
| captaingoujon | 9:2a26eec46988 | 545 | radioCS = 0; |
| captaingoujon | 9:2a26eec46988 | 546 | radio.write(REG_FIFO_THRESH | 0x80); |
| captaingoujon | 10:6fe476ec05aa | 547 | radio.write((fifo.txStartCondition<<7)|(fifo.threshold&0x7F)); |
| captaingoujon | 9:2a26eec46988 | 548 | radioCS = 1; |
| captaingoujon | 9:2a26eec46988 | 549 | } |
| captaingoujon | 9:2a26eec46988 | 550 | |
| captaingoujon | 10:6fe476ec05aa | 551 | fifoThresholdSetting getFifoThreshold(){ |
| captaingoujon | 10:6fe476ec05aa | 552 | fifoThresholdSetting fifo; |
| captaingoujon | 10:6fe476ec05aa | 553 | char reg; |
| captaingoujon | 10:6fe476ec05aa | 554 | radioCS = 0; |
| captaingoujon | 10:6fe476ec05aa | 555 | radio.write(REG_FIFO_THRESH); |
| captaingoujon | 10:6fe476ec05aa | 556 | reg = radio.write(0x00); |
| captaingoujon | 10:6fe476ec05aa | 557 | radioCS = 1; |
| captaingoujon | 10:6fe476ec05aa | 558 | fifo.txStartCondition = reg >> 7; |
| captaingoujon | 10:6fe476ec05aa | 559 | fifo.threshold = reg &0x7F; |
| captaingoujon | 10:6fe476ec05aa | 560 | return fifo; |
| captaingoujon | 9:2a26eec46988 | 561 | } |
| captaingoujon | 9:2a26eec46988 | 562 | |
| captaingoujon | 0:27c53e093a59 | 563 | int main(){ |
| captaingoujon | 5:f7c32f548d53 | 564 | //Radio Dev branch |
| captaingoujon | 9:2a26eec46988 | 565 | radio.format(8,0); |
| captaingoujon | 9:2a26eec46988 | 566 | //radio.frequency(1000000); |
| captaingoujon | 9:2a26eec46988 | 567 | setMode(0x04); |
| captaingoujon | 9:2a26eec46988 | 568 | wait(1); |
| captaingoujon | 9:2a26eec46988 | 569 | pc.printf("Start\n\r"); |
| captaingoujon | 9:2a26eec46988 | 570 | pc.printf("%d\n\r",getFreq()); |
| captaingoujon | 9:2a26eec46988 | 571 | //wait(1); |
| captaingoujon | 9:2a26eec46988 | 572 | setFreq(434650000); |
| captaingoujon | 9:2a26eec46988 | 573 | wait(1); |
| captaingoujon | 9:2a26eec46988 | 574 | pc.printf("%d\n\r",getFreq()); |
| captaingoujon | 9:2a26eec46988 | 575 | while(1){ |
| captaingoujon | 9:2a26eec46988 | 576 | //pc.printf("%d\n\r",getFreq()); |
| captaingoujon | 9:2a26eec46988 | 577 | //wait(1); |
| captaingoujon | 9:2a26eec46988 | 578 | __WFI(); |
| captaingoujon | 9:2a26eec46988 | 579 | } |
| captaingoujon | 0:27c53e093a59 | 580 | } |

