IQ modulation on sx126x

Dependencies:   sx126x

Committer:
Wayne Roberts
Date:
Tue Jul 24 17:08:26 2018 -0700
Revision:
1:061c7250788a
add main.cpp

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Wayne Roberts 1:061c7250788a 1 #include "sx12xx.h"
Wayne Roberts 1:061c7250788a 2
Wayne Roberts 1:061c7250788a 3 RawSerial pc(USBTX, USBRX);
Wayne Roberts 1:061c7250788a 4
Wayne Roberts 1:061c7250788a 5 #ifdef TARGET_FF_ARDUINO
Wayne Roberts 1:061c7250788a 6 SPI spi(D11, D12, D13); // mosi, miso, sclk
Wayne Roberts 1:061c7250788a 7 //spi, nss, busy, dio1
Wayne Roberts 1:061c7250788a 8 SX126x radio(spi, D7, D3, D5);
Wayne Roberts 1:061c7250788a 9
Wayne Roberts 1:061c7250788a 10 DigitalOut antswPower(D8);
Wayne Roberts 1:061c7250788a 11 AnalogIn xtalSel(A3);
Wayne Roberts 1:061c7250788a 12
Wayne Roberts 1:061c7250788a 13 DigitalIn chipType(A2);
Wayne Roberts 1:061c7250788a 14
Wayne Roberts 1:061c7250788a 15 #define PINNAME_NRST A0
Wayne Roberts 1:061c7250788a 16
Wayne Roberts 1:061c7250788a 17 #define LED_ON 1
Wayne Roberts 1:061c7250788a 18 #define LED_OFF 0
Wayne Roberts 1:061c7250788a 19 DigitalOut tx_led(A4);
Wayne Roberts 1:061c7250788a 20 DigitalOut rx_led(A5);
Wayne Roberts 1:061c7250788a 21
Wayne Roberts 1:061c7250788a 22 void chipModeChange()
Wayne Roberts 1:061c7250788a 23 {
Wayne Roberts 1:061c7250788a 24 if (radio.chipMode == CHIPMODE_NONE) {
Wayne Roberts 1:061c7250788a 25 tx_led = LED_OFF;
Wayne Roberts 1:061c7250788a 26 rx_led = LED_OFF;
Wayne Roberts 1:061c7250788a 27 } else if (radio.chipMode == CHIPMODE_TX) {
Wayne Roberts 1:061c7250788a 28 tx_led = LED_ON;
Wayne Roberts 1:061c7250788a 29 rx_led = LED_OFF;
Wayne Roberts 1:061c7250788a 30 } else if (radio.chipMode == CHIPMODE_RX) {
Wayne Roberts 1:061c7250788a 31 tx_led = LED_OFF;
Wayne Roberts 1:061c7250788a 32 rx_led = LED_ON;
Wayne Roberts 1:061c7250788a 33 }
Wayne Roberts 1:061c7250788a 34 }
Wayne Roberts 1:061c7250788a 35 #endif /* TARGET_FF_ARDUINO */
Wayne Roberts 1:061c7250788a 36
Wayne Roberts 1:061c7250788a 37 volatile bool tx_done;
Wayne Roberts 1:061c7250788a 38
Wayne Roberts 1:061c7250788a 39 void txDoneBottom()
Wayne Roberts 1:061c7250788a 40 {
Wayne Roberts 1:061c7250788a 41 printf("txDone\r\n");
Wayne Roberts 1:061c7250788a 42 tx_done = true;
Wayne Roberts 1:061c7250788a 43 }
Wayne Roberts 1:061c7250788a 44
Wayne Roberts 1:061c7250788a 45 PacketParams_t pp;
Wayne Roberts 1:061c7250788a 46
Wayne Roberts 1:061c7250788a 47 void startTx()
Wayne Roberts 1:061c7250788a 48 {
Wayne Roberts 1:061c7250788a 49 uint8_t buf[2];
Wayne Roberts 1:061c7250788a 50
Wayne Roberts 1:061c7250788a 51 buf[0] = 0; // TX base address
Wayne Roberts 1:061c7250788a 52 buf[1] = 0; // RX base address
Wayne Roberts 1:061c7250788a 53 radio.xfer(OPCODE_SET_BUFFER_BASE_ADDR, 2, 0, buf);
Wayne Roberts 1:061c7250788a 54
Wayne Roberts 1:061c7250788a 55 tx_done = false;
Wayne Roberts 1:061c7250788a 56 radio.start_tx(pp.gfsk.PayloadLength);
Wayne Roberts 1:061c7250788a 57 }
Wayne Roberts 1:061c7250788a 58
Wayne Roberts 1:061c7250788a 59 unsigned lfsr;
Wayne Roberts 1:061c7250788a 60 #define LFSR_INIT 0x1ff
Wayne Roberts 1:061c7250788a 61
Wayne Roberts 1:061c7250788a 62 uint8_t get_pn9_byte()
Wayne Roberts 1:061c7250788a 63 {
Wayne Roberts 1:061c7250788a 64 uint8_t ret = 0;
Wayne Roberts 1:061c7250788a 65 int xor_out;
Wayne Roberts 1:061c7250788a 66
Wayne Roberts 1:061c7250788a 67 xor_out = ((lfsr >> 5) & 0xf) ^ (lfsr & 0xf); // four bits at a time
Wayne Roberts 1:061c7250788a 68 lfsr = (lfsr >> 4) | (xor_out << 5); // four bits at a time
Wayne Roberts 1:061c7250788a 69
Wayne Roberts 1:061c7250788a 70 ret |= (lfsr >> 5) & 0x0f;
Wayne Roberts 1:061c7250788a 71
Wayne Roberts 1:061c7250788a 72 xor_out = ((lfsr >> 5) & 0xf) ^ (lfsr & 0xf); // four bits at a time
Wayne Roberts 1:061c7250788a 73 lfsr = (lfsr >> 4) | (xor_out << 5); // four bits at a time
Wayne Roberts 1:061c7250788a 74
Wayne Roberts 1:061c7250788a 75 ret |= ((lfsr >> 1) & 0xf0);
Wayne Roberts 1:061c7250788a 76
Wayne Roberts 1:061c7250788a 77 return ret;
Wayne Roberts 1:061c7250788a 78 }
Wayne Roberts 1:061c7250788a 79
Wayne Roberts 1:061c7250788a 80 uint8_t I[2];
Wayne Roberts 1:061c7250788a 81 uint8_t Q[2];
Wayne Roberts 1:061c7250788a 82
Wayne Roberts 1:061c7250788a 83 void rx_callback()
Wayne Roberts 1:061c7250788a 84 {
Wayne Roberts 1:061c7250788a 85 uint8_t ch = pc.getc();
Wayne Roberts 1:061c7250788a 86
Wayne Roberts 1:061c7250788a 87 pc.putc(ch);
Wayne Roberts 1:061c7250788a 88
Wayne Roberts 1:061c7250788a 89 switch (ch) {
Wayne Roberts 1:061c7250788a 90 case 'q':
Wayne Roberts 1:061c7250788a 91 radio.writeReg(REG_ADDR_MODCFG+1, ++I[0], 1);
Wayne Roberts 1:061c7250788a 92 printf("I[0]:%02x\r\n", I[0]);
Wayne Roberts 1:061c7250788a 93 break;
Wayne Roberts 1:061c7250788a 94 case 'a':
Wayne Roberts 1:061c7250788a 95 radio.writeReg(REG_ADDR_MODCFG+1, --I[0], 1);
Wayne Roberts 1:061c7250788a 96 printf("I[0]:%02x\r\n", I[0]);
Wayne Roberts 1:061c7250788a 97 break;
Wayne Roberts 1:061c7250788a 98
Wayne Roberts 1:061c7250788a 99 case 'w':
Wayne Roberts 1:061c7250788a 100 radio.writeReg(REG_ADDR_MODCFG+2, ++Q[0], 1);
Wayne Roberts 1:061c7250788a 101 printf("Q[0]:%02x\r\n", Q[0]);
Wayne Roberts 1:061c7250788a 102 break;
Wayne Roberts 1:061c7250788a 103 case 's':
Wayne Roberts 1:061c7250788a 104 radio.writeReg(REG_ADDR_MODCFG+2, --Q[0], 1);
Wayne Roberts 1:061c7250788a 105 printf("Q[0]:%02x\r\n", Q[0]);
Wayne Roberts 1:061c7250788a 106 break;
Wayne Roberts 1:061c7250788a 107
Wayne Roberts 1:061c7250788a 108 case 'e':
Wayne Roberts 1:061c7250788a 109 radio.writeReg(REG_ADDR_MODCFG+3, ++I[1], 1);
Wayne Roberts 1:061c7250788a 110 printf("I[1]:%02x\r\n", I[1]);
Wayne Roberts 1:061c7250788a 111 break;
Wayne Roberts 1:061c7250788a 112 case 'd':
Wayne Roberts 1:061c7250788a 113 radio.writeReg(REG_ADDR_MODCFG+3, --I[1], 1);
Wayne Roberts 1:061c7250788a 114 printf("I[1]:%02x\r\n", I[1]);
Wayne Roberts 1:061c7250788a 115 break;
Wayne Roberts 1:061c7250788a 116
Wayne Roberts 1:061c7250788a 117 case 'r':
Wayne Roberts 1:061c7250788a 118 radio.writeReg(REG_ADDR_MODCFG+4, ++Q[1], 1);
Wayne Roberts 1:061c7250788a 119 printf("Q[1]:%02x\r\n", Q[1]);
Wayne Roberts 1:061c7250788a 120 break;
Wayne Roberts 1:061c7250788a 121 case 'f':
Wayne Roberts 1:061c7250788a 122 radio.writeReg(REG_ADDR_MODCFG+4, --Q[1], 1);
Wayne Roberts 1:061c7250788a 123 printf("Q[1]:%02x\r\n", Q[1]);
Wayne Roberts 1:061c7250788a 124 break;
Wayne Roberts 1:061c7250788a 125
Wayne Roberts 1:061c7250788a 126 default:
Wayne Roberts 1:061c7250788a 127 break;
Wayne Roberts 1:061c7250788a 128 } // ..switch (ch)
Wayne Roberts 1:061c7250788a 129 }
Wayne Roberts 1:061c7250788a 130
Wayne Roberts 1:061c7250788a 131 void
Wayne Roberts 1:061c7250788a 132 init_syncaddr(uint8_t syncNum)
Wayne Roberts 1:061c7250788a 133 {
Wayne Roberts 1:061c7250788a 134 uint32_t sa;
Wayne Roberts 1:061c7250788a 135
Wayne Roberts 1:061c7250788a 136 sa = get_pn9_byte();
Wayne Roberts 1:061c7250788a 137 sa <<= 8;
Wayne Roberts 1:061c7250788a 138 sa += get_pn9_byte();
Wayne Roberts 1:061c7250788a 139 sa <<= 8;
Wayne Roberts 1:061c7250788a 140 sa += get_pn9_byte();
Wayne Roberts 1:061c7250788a 141 sa <<= 8;
Wayne Roberts 1:061c7250788a 142 sa += get_pn9_byte();
Wayne Roberts 1:061c7250788a 143
Wayne Roberts 1:061c7250788a 144 printf("sa %08lx\r\n", sa);
Wayne Roberts 1:061c7250788a 145 radio.writeReg(REG_ADDR_SYNCADDR, sa, 4);
Wayne Roberts 1:061c7250788a 146
Wayne Roberts 1:061c7250788a 147 sa = get_pn9_byte();
Wayne Roberts 1:061c7250788a 148 sa <<= 8;
Wayne Roberts 1:061c7250788a 149 sa += get_pn9_byte();
Wayne Roberts 1:061c7250788a 150 sa <<= 8;
Wayne Roberts 1:061c7250788a 151 sa += get_pn9_byte();
Wayne Roberts 1:061c7250788a 152 sa <<= 8;
Wayne Roberts 1:061c7250788a 153 sa += get_pn9_byte();
Wayne Roberts 1:061c7250788a 154
Wayne Roberts 1:061c7250788a 155 printf("sa %08lx\r\n", sa);
Wayne Roberts 1:061c7250788a 156 radio.writeReg(REG_ADDR_SYNCADDR+4, sa, 4);
Wayne Roberts 1:061c7250788a 157 }
Wayne Roberts 1:061c7250788a 158
Wayne Roberts 1:061c7250788a 159 int main()
Wayne Roberts 1:061c7250788a 160 {
Wayne Roberts 1:061c7250788a 161 modCfg_t modCfg;
Wayne Roberts 1:061c7250788a 162 uint8_t buf[8];
Wayne Roberts 1:061c7250788a 163 unsigned svcCnt = 0;
Wayne Roberts 1:061c7250788a 164 unsigned preambleLen = 32;
Wayne Roberts 1:061c7250788a 165 ModulationParams_t mp;
Wayne Roberts 1:061c7250788a 166 uint32_t u32;
Wayne Roberts 1:061c7250788a 167 unsigned bps = 1200;
Wayne Roberts 1:061c7250788a 168 bool crcOn = true;
Wayne Roberts 1:061c7250788a 169 unsigned i, fdev_hz;
Wayne Roberts 1:061c7250788a 170
Wayne Roberts 1:061c7250788a 171 printf("\r\nreset\r\n");
Wayne Roberts 1:061c7250788a 172
Wayne Roberts 1:061c7250788a 173 lfsr = LFSR_INIT;
Wayne Roberts 1:061c7250788a 174
Wayne Roberts 1:061c7250788a 175 radio.hw_reset(PINNAME_NRST);
Wayne Roberts 1:061c7250788a 176
Wayne Roberts 1:061c7250788a 177 init_syncaddr(1);
Wayne Roberts 1:061c7250788a 178
Wayne Roberts 1:061c7250788a 179 radio.txDone = txDoneBottom;
Wayne Roberts 1:061c7250788a 180 // radio.rxDone = rx_done;
Wayne Roberts 1:061c7250788a 181 // radio.timeout = timeout_callback;
Wayne Roberts 1:061c7250788a 182 radio.chipModeChange = chipModeChange;
Wayne Roberts 1:061c7250788a 183 // radio.dio1_topHalf = dio1_top_half;
Wayne Roberts 1:061c7250788a 184
Wayne Roberts 1:061c7250788a 185 radio.SetDIO2AsRfSwitchCtrl(1);
Wayne Roberts 1:061c7250788a 186
Wayne Roberts 1:061c7250788a 187
Wayne Roberts 1:061c7250788a 188 //if (radio.getPacketType() != PACKET_TYPE_GFSK)
Wayne Roberts 1:061c7250788a 189 radio.setPacketType(PACKET_TYPE_GFSK);
Wayne Roberts 1:061c7250788a 190
Wayne Roberts 1:061c7250788a 191 /*************************************************************/
Wayne Roberts 1:061c7250788a 192 pp.gfsk.PreambleLengthHi = preambleLen >> 8;
Wayne Roberts 1:061c7250788a 193 pp.gfsk.PreambleLengthLo = preambleLen;
Wayne Roberts 1:061c7250788a 194 pp.gfsk.PreambleDetectorLength = GFSK_PREAMBLE_DETECTOR_LENGTH_16BITS;
Wayne Roberts 1:061c7250788a 195 pp.gfsk.SyncWordLength = 24; // 0xC194C1
Wayne Roberts 1:061c7250788a 196 pp.gfsk.AddrComp = 0;
Wayne Roberts 1:061c7250788a 197 pp.gfsk.PacketType = HEADER_TYPE_VARIABLE_LENGTH ;
Wayne Roberts 1:061c7250788a 198 if (crcOn)
Wayne Roberts 1:061c7250788a 199 pp.gfsk.CRCType = GFSK_CRC_2_BYTE;
Wayne Roberts 1:061c7250788a 200 else
Wayne Roberts 1:061c7250788a 201 pp.gfsk.CRCType = GFSK_CRC_OFF;
Wayne Roberts 1:061c7250788a 202
Wayne Roberts 1:061c7250788a 203 pp.gfsk.PayloadLength = 192;
Wayne Roberts 1:061c7250788a 204
Wayne Roberts 1:061c7250788a 205 radio.xfer(OPCODE_SET_PACKET_PARAMS, 8, 0, pp.buf);
Wayne Roberts 1:061c7250788a 206 /*************************************************************/
Wayne Roberts 1:061c7250788a 207
Wayne Roberts 1:061c7250788a 208 u32 = 32 * (XTAL_FREQ_HZ / bps);
Wayne Roberts 1:061c7250788a 209 mp.gfsk.bitrateHi = u32 >> 16; // param1
Wayne Roberts 1:061c7250788a 210 mp.gfsk.bitrateMid = u32 >> 8; // param2
Wayne Roberts 1:061c7250788a 211 mp.gfsk.bitrateLo = u32; // param3
Wayne Roberts 1:061c7250788a 212 mp.gfsk.PulseShape = GFSK_SHAPE_BT1_0; // param4
Wayne Roberts 1:061c7250788a 213 // param5:
Wayne Roberts 1:061c7250788a 214 /* if (bw_hz < 5800)
Wayne Roberts 1:061c7250788a 215 mp.gfsk.bandwidth = GFSK_RX_BW_4800;
Wayne Roberts 1:061c7250788a 216 else if (bw_hz < 7300)
Wayne Roberts 1:061c7250788a 217 mp.gfsk.bandwidth = GFSK_RX_BW_5800;
Wayne Roberts 1:061c7250788a 218 else if (bw_hz < 9700)
Wayne Roberts 1:061c7250788a 219 mp.gfsk.bandwidth = GFSK_RX_BW_7300;
Wayne Roberts 1:061c7250788a 220 else if (bw_hz < 11700)
Wayne Roberts 1:061c7250788a 221 mp.gfsk.bandwidth = GFSK_RX_BW_9700;
Wayne Roberts 1:061c7250788a 222 else if (bw_hz < 14600)
Wayne Roberts 1:061c7250788a 223 mp.gfsk.bandwidth = GFSK_RX_BW_11700;
Wayne Roberts 1:061c7250788a 224 else if (bw_hz < 19500)
Wayne Roberts 1:061c7250788a 225 mp.gfsk.bandwidth = GFSK_RX_BW_14600;
Wayne Roberts 1:061c7250788a 226 else if (bw_hz < 23400)
Wayne Roberts 1:061c7250788a 227 mp.gfsk.bandwidth = GFSK_RX_BW_19500;
Wayne Roberts 1:061c7250788a 228 else if (bw_hz < 29300)
Wayne Roberts 1:061c7250788a 229 mp.gfsk.bandwidth = GFSK_RX_BW_23400;
Wayne Roberts 1:061c7250788a 230 else if (bw_hz < 39000)
Wayne Roberts 1:061c7250788a 231 mp.gfsk.bandwidth = GFSK_RX_BW_29300;
Wayne Roberts 1:061c7250788a 232 else if (bw_hz < 46900)
Wayne Roberts 1:061c7250788a 233 mp.gfsk.bandwidth = GFSK_RX_BW_39000;
Wayne Roberts 1:061c7250788a 234 else if (bw_hz < 58600)
Wayne Roberts 1:061c7250788a 235 mp.gfsk.bandwidth = GFSK_RX_BW_46900;
Wayne Roberts 1:061c7250788a 236 else if (bw_hz < 78200)
Wayne Roberts 1:061c7250788a 237 mp.gfsk.bandwidth = GFSK_RX_BW_58600;
Wayne Roberts 1:061c7250788a 238 els`e if (bw_hz < 93800)
Wayne Roberts 1:061c7250788a 239 mp.gfsk.bandwidth = GFSK_RX_BW_78200;
Wayne Roberts 1:061c7250788a 240 else if (bw_hz < 117300)
Wayne Roberts 1:061c7250788a 241 mp.gfsk.bandwidth = GFSK_RX_BW_93800;
Wayne Roberts 1:061c7250788a 242 else if (bw_hz < 156200)
Wayne Roberts 1:061c7250788a 243 mp.gfsk.bandwidth = GFSK_RX_BW_117300;
Wayne Roberts 1:061c7250788a 244 else if (bw_hz < 187200)
Wayne Roberts 1:061c7250788a 245 mp.gfsk.bandwidth = GFSK_RX_BW_156200;
Wayne Roberts 1:061c7250788a 246 else if (bw_hz < 234300)
Wayne Roberts 1:061c7250788a 247 mp.gfsk.bandwidth = GFSK_RX_BW_187200;
Wayne Roberts 1:061c7250788a 248 else if (bw_hz < 312000)
Wayne Roberts 1:061c7250788a 249 mp.gfsk.bandwidth = GFSK_RX_BW_234300;
Wayne Roberts 1:061c7250788a 250 else if (bw_hz < 373600)
Wayne Roberts 1:061c7250788a 251 mp.gfsk.bandwidth = GFSK_RX_BW_312000;
Wayne Roberts 1:061c7250788a 252 else if (bw_hz < 467000)
Wayne Roberts 1:061c7250788a 253 mp.gfsk.bandwidth = GFSK_RX_BW_373600;
Wayne Roberts 1:061c7250788a 254 else
Wayne Roberts 1:061c7250788a 255 mp.gfsk.bandwidth = GFSK_RX_BW_467000;*/
Wayne Roberts 1:061c7250788a 256
Wayne Roberts 1:061c7250788a 257 mp.gfsk.bandwidth = GFSK_RX_BW_11700;
Wayne Roberts 1:061c7250788a 258 /*
Wayne Roberts 1:061c7250788a 259 fdev_hz = 10000;
Wayne Roberts 1:061c7250788a 260
Wayne Roberts 1:061c7250788a 261 u32 = fdev_hz / FREQ_STEP;
Wayne Roberts 1:061c7250788a 262 mp.gfsk.fdevHi = u32 >> 16; // param6
Wayne Roberts 1:061c7250788a 263 mp.gfsk.fdevMid = u32 >> 8; // param7
Wayne Roberts 1:061c7250788a 264 mp.gfsk.fdevLo = u32; // param8
Wayne Roberts 1:061c7250788a 265 */
Wayne Roberts 1:061c7250788a 266 mp.gfsk.fdevHi = 0; // param6
Wayne Roberts 1:061c7250788a 267 mp.gfsk.fdevMid = 0; // param7
Wayne Roberts 1:061c7250788a 268 mp.gfsk.fdevLo = 0; // param8
Wayne Roberts 1:061c7250788a 269
Wayne Roberts 1:061c7250788a 270 radio.xfer(OPCODE_SET_MODULATION_PARAMS, 8, 0, mp.buf);
Wayne Roberts 1:061c7250788a 271 /*************************************************************/
Wayne Roberts 1:061c7250788a 272
Wayne Roberts 1:061c7250788a 273 I[0] = radio.readReg(REG_ADDR_MODCFG+1, 1),
Wayne Roberts 1:061c7250788a 274 Q[0] = radio.readReg(REG_ADDR_MODCFG+2, 1),
Wayne Roberts 1:061c7250788a 275 I[1] = radio.readReg(REG_ADDR_MODCFG+3, 1),
Wayne Roberts 1:061c7250788a 276 Q[1] = radio.readReg(REG_ADDR_MODCFG+3, 1),
Wayne Roberts 1:061c7250788a 277
Wayne Roberts 1:061c7250788a 278 modCfg.octet = radio.readReg(REG_ADDR_MODCFG, 1);
Wayne Roberts 1:061c7250788a 279 modCfg.bits.mod_type = 0;
Wayne Roberts 1:061c7250788a 280 radio.writeReg(REG_ADDR_MODCFG, modCfg.octet, 1);
Wayne Roberts 1:061c7250788a 281
Wayne Roberts 1:061c7250788a 282 /*************************************************************/
Wayne Roberts 1:061c7250788a 283
Wayne Roberts 1:061c7250788a 284 radio.setMHz(915.0);
Wayne Roberts 1:061c7250788a 285 radio.set_tx_dbm(true, 14);
Wayne Roberts 1:061c7250788a 286
Wayne Roberts 1:061c7250788a 287 {
Wayne Roberts 1:061c7250788a 288 IrqFlags_t irqEnable;
Wayne Roberts 1:061c7250788a 289 irqEnable.word = 0;
Wayne Roberts 1:061c7250788a 290 irqEnable.bits.TxDone = 1;
Wayne Roberts 1:061c7250788a 291 irqEnable.bits.Timeout = 1;
Wayne Roberts 1:061c7250788a 292
Wayne Roberts 1:061c7250788a 293 buf[0] = irqEnable.word >> 8; // enable bits
Wayne Roberts 1:061c7250788a 294 buf[1] = irqEnable.word; // enable bits
Wayne Roberts 1:061c7250788a 295 buf[2] = irqEnable.word >> 8; // dio1
Wayne Roberts 1:061c7250788a 296 buf[3] = irqEnable.word; // dio1
Wayne Roberts 1:061c7250788a 297 buf[4] = 0; // dio2
Wayne Roberts 1:061c7250788a 298 buf[5] = 0; // dio2
Wayne Roberts 1:061c7250788a 299 buf[6] = 0; // dio3
Wayne Roberts 1:061c7250788a 300 buf[7] = 0; // dio3
Wayne Roberts 1:061c7250788a 301 radio.xfer(OPCODE_SET_DIO_IRQ_PARAMS, 8, 0, buf);
Wayne Roberts 1:061c7250788a 302 }
Wayne Roberts 1:061c7250788a 303
Wayne Roberts 1:061c7250788a 304 for (i = 0; i < pp.gfsk.PayloadLength; i++) {
Wayne Roberts 1:061c7250788a 305 radio.tx_buf[i] = get_pn9_byte();
Wayne Roberts 1:061c7250788a 306 }
Wayne Roberts 1:061c7250788a 307
Wayne Roberts 1:061c7250788a 308 antswPower = 1;
Wayne Roberts 1:061c7250788a 309
Wayne Roberts 1:061c7250788a 310 startTx();
Wayne Roberts 1:061c7250788a 311
Wayne Roberts 1:061c7250788a 312 for (;;) {
Wayne Roberts 1:061c7250788a 313 if (pc.readable())
Wayne Roberts 1:061c7250788a 314 rx_callback();
Wayne Roberts 1:061c7250788a 315
Wayne Roberts 1:061c7250788a 316 radio.service();
Wayne Roberts 1:061c7250788a 317
Wayne Roberts 1:061c7250788a 318 if (!tx_done) {
Wayne Roberts 1:061c7250788a 319 //
Wayne Roberts 1:061c7250788a 320 } else {
Wayne Roberts 1:061c7250788a 321 wait(0.02);
Wayne Roberts 1:061c7250788a 322
Wayne Roberts 1:061c7250788a 323 for (i = 0; i < pp.gfsk.PayloadLength; i++) {
Wayne Roberts 1:061c7250788a 324 radio.tx_buf[i] = get_pn9_byte();
Wayne Roberts 1:061c7250788a 325 }
Wayne Roberts 1:061c7250788a 326
Wayne Roberts 1:061c7250788a 327 printf("modCfg:%02x\t\t", modCfg.octet);
Wayne Roberts 1:061c7250788a 328 printf("I:%02x Q:%02x\t\t\tI:%02x Q:%02x\r\n",
Wayne Roberts 1:061c7250788a 329 (uint8_t)radio.readReg(REG_ADDR_MODCFG+1, 1),
Wayne Roberts 1:061c7250788a 330 (uint8_t)radio.readReg(REG_ADDR_MODCFG+2, 1),
Wayne Roberts 1:061c7250788a 331 (uint8_t)radio.readReg(REG_ADDR_MODCFG+3, 1),
Wayne Roberts 1:061c7250788a 332 (uint8_t)radio.readReg(REG_ADDR_MODCFG+4, 1)
Wayne Roberts 1:061c7250788a 333 );
Wayne Roberts 1:061c7250788a 334 startTx();
Wayne Roberts 1:061c7250788a 335 }
Wayne Roberts 1:061c7250788a 336 } // ..for (;;)
Wayne Roberts 1:061c7250788a 337 }
Wayne Roberts 1:061c7250788a 338