simple typeABZ test with continuous carrier option
Dependencies: SX127x LPS22HB sx12xx_hal
main.cpp@1:48040edc5d0f, 2019-02-20 (annotated)
- Committer:
- dudmuck
- Date:
- Wed Feb 20 21:12:18 2019 +0000
- Revision:
- 1:48040edc5d0f
- Parent:
- 0:77fa30d1c6b5
put mbed-os onto latest
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Wayne Roberts |
0:77fa30d1c6b5 | 1 | #include "radio.h" |
Wayne Roberts |
0:77fa30d1c6b5 | 2 | #include "LPS22HBSensor.h" |
Wayne Roberts |
0:77fa30d1c6b5 | 3 | |
dudmuck | 1:48040edc5d0f | 4 | #ifndef TARGET_DISCO_L072CZ_LRWAN1 |
dudmuck | 1:48040edc5d0f | 5 | #error only_for_L072CZ_discovery |
dudmuck | 1:48040edc5d0f | 6 | #endif |
dudmuck | 1:48040edc5d0f | 7 | |
Wayne Roberts |
0:77fa30d1c6b5 | 8 | #define BW_KHZ 125 |
Wayne Roberts |
0:77fa30d1c6b5 | 9 | #define SPREADING_FACTOR 7 |
Wayne Roberts |
0:77fa30d1c6b5 | 10 | #define CF_HZ 915000000 |
Wayne Roberts |
0:77fa30d1c6b5 | 11 | #define TX_DBM 20 |
Wayne Roberts |
0:77fa30d1c6b5 | 12 | |
Wayne Roberts |
0:77fa30d1c6b5 | 13 | /* |
Wayne Roberts |
0:77fa30d1c6b5 | 14 | DevI2C devI2c(I2C_SDA, I2C_SCL); |
Wayne Roberts |
0:77fa30d1c6b5 | 15 | LPS22HBSensor press_temp(&devI2c); |
Wayne Roberts |
0:77fa30d1c6b5 | 16 | */ |
Wayne Roberts |
0:77fa30d1c6b5 | 17 | AnalogIn pa0(PA_0); |
Wayne Roberts |
0:77fa30d1c6b5 | 18 | DigitalIn test_in_pin(PB_5, PullDown); |
Wayne Roberts |
0:77fa30d1c6b5 | 19 | DigitalOut ext_led(PB_2); |
Wayne Roberts |
0:77fa30d1c6b5 | 20 | #define EXT_LED_ON 0 |
Wayne Roberts |
0:77fa30d1c6b5 | 21 | #define EXT_LED_OFF 1 |
Wayne Roberts |
0:77fa30d1c6b5 | 22 | |
Wayne Roberts |
0:77fa30d1c6b5 | 23 | |
Wayne Roberts |
0:77fa30d1c6b5 | 24 | /**********************************************************************/ |
Wayne Roberts |
0:77fa30d1c6b5 | 25 | volatile bool txDone; |
Wayne Roberts |
0:77fa30d1c6b5 | 26 | |
Wayne Roberts |
0:77fa30d1c6b5 | 27 | void txDoneCB() |
Wayne Roberts |
0:77fa30d1c6b5 | 28 | { |
Wayne Roberts |
0:77fa30d1c6b5 | 29 | txDone = true; |
Wayne Roberts |
0:77fa30d1c6b5 | 30 | } |
Wayne Roberts |
0:77fa30d1c6b5 | 31 | |
Wayne Roberts |
0:77fa30d1c6b5 | 32 | void rxDoneCB(uint8_t size, float rssi, float snr) |
Wayne Roberts |
0:77fa30d1c6b5 | 33 | { |
Wayne Roberts |
0:77fa30d1c6b5 | 34 | } |
Wayne Roberts |
0:77fa30d1c6b5 | 35 | |
Wayne Roberts |
0:77fa30d1c6b5 | 36 | const RadioEvents_t rev = { |
Wayne Roberts |
0:77fa30d1c6b5 | 37 | /* Dio0_top_half */ NULL, |
Wayne Roberts |
0:77fa30d1c6b5 | 38 | /* TxDone_topHalf */ NULL, |
Wayne Roberts |
0:77fa30d1c6b5 | 39 | /* TxDone_botHalf */ txDoneCB, |
Wayne Roberts |
0:77fa30d1c6b5 | 40 | /* TxTimeout */ NULL, |
Wayne Roberts |
0:77fa30d1c6b5 | 41 | /* RxDone */ rxDoneCB, |
Wayne Roberts |
0:77fa30d1c6b5 | 42 | /* RxTimeout */ NULL, |
Wayne Roberts |
0:77fa30d1c6b5 | 43 | /* RxError */ NULL, |
Wayne Roberts |
0:77fa30d1c6b5 | 44 | /* FhssChangeChannel */NULL, |
Wayne Roberts |
0:77fa30d1c6b5 | 45 | /* CadDone */ NULL |
Wayne Roberts |
0:77fa30d1c6b5 | 46 | }; |
Wayne Roberts |
0:77fa30d1c6b5 | 47 | |
Wayne Roberts |
0:77fa30d1c6b5 | 48 | int main() |
Wayne Roberts |
0:77fa30d1c6b5 | 49 | { |
Wayne Roberts |
0:77fa30d1c6b5 | 50 | printf("\r\nreset-tx "); |
Wayne Roberts |
0:77fa30d1c6b5 | 51 | |
Wayne Roberts |
0:77fa30d1c6b5 | 52 | Radio::Init(&rev); |
Wayne Roberts |
0:77fa30d1c6b5 | 53 | |
Wayne Roberts |
0:77fa30d1c6b5 | 54 | Radio::Standby(); |
Wayne Roberts |
0:77fa30d1c6b5 | 55 | Radio::LoRaModemConfig(BW_KHZ, SPREADING_FACTOR, 1); |
Wayne Roberts |
0:77fa30d1c6b5 | 56 | Radio::SetChannel(CF_HZ); |
Wayne Roberts |
0:77fa30d1c6b5 | 57 | |
Wayne Roberts |
0:77fa30d1c6b5 | 58 | Radio::set_tx_dbm(TX_DBM); |
Wayne Roberts |
0:77fa30d1c6b5 | 59 | |
Wayne Roberts |
0:77fa30d1c6b5 | 60 | // preambleLen, fixLen, crcOn, invIQ |
Wayne Roberts |
0:77fa30d1c6b5 | 61 | Radio::LoRaPacketConfig(8, false, true, false); |
Wayne Roberts |
0:77fa30d1c6b5 | 62 | |
Wayne Roberts |
0:77fa30d1c6b5 | 63 | for (;;) { |
Wayne Roberts |
0:77fa30d1c6b5 | 64 | |
Wayne Roberts |
0:77fa30d1c6b5 | 65 | uint16_t samp = pa0.read_u16(); |
Wayne Roberts |
0:77fa30d1c6b5 | 66 | if (test_in_pin) { |
Wayne Roberts |
0:77fa30d1c6b5 | 67 | ext_led = EXT_LED_ON; |
Wayne Roberts |
0:77fa30d1c6b5 | 68 | printf("continuous-tx\r\n"); |
Wayne Roberts |
0:77fa30d1c6b5 | 69 | #ifdef SX127x_H |
Wayne Roberts |
0:77fa30d1c6b5 | 70 | Radio::radio.set_opmode(RF_OPMODE_SLEEP); |
Wayne Roberts |
0:77fa30d1c6b5 | 71 | Radio::fsk.enable(false); |
Wayne Roberts |
0:77fa30d1c6b5 | 72 | Radio::radio.write_u16(REG_FSK_FDEVMSB, 0); |
Wayne Roberts |
0:77fa30d1c6b5 | 73 | Radio::radio.write_u16(REG_FSK_PREAMBLEMSB, 0xffff); |
Wayne Roberts |
0:77fa30d1c6b5 | 74 | Radio::fsk.start_tx(8); |
Wayne Roberts |
0:77fa30d1c6b5 | 75 | #else |
Wayne Roberts |
0:77fa30d1c6b5 | 76 | #error tx_carrier |
Wayne Roberts |
0:77fa30d1c6b5 | 77 | #endif /* SX127x_H*/ |
Wayne Roberts |
0:77fa30d1c6b5 | 78 | } |
Wayne Roberts |
0:77fa30d1c6b5 | 79 | |
Wayne Roberts |
0:77fa30d1c6b5 | 80 | ext_led = EXT_LED_ON; |
Wayne Roberts |
0:77fa30d1c6b5 | 81 | Radio::radio.tx_buf[0] = samp; |
Wayne Roberts |
0:77fa30d1c6b5 | 82 | samp >>= 8; |
Wayne Roberts |
0:77fa30d1c6b5 | 83 | Radio::radio.tx_buf[1] = samp; |
Wayne Roberts |
0:77fa30d1c6b5 | 84 | txDone = false; |
Wayne Roberts |
0:77fa30d1c6b5 | 85 | Radio::Send(2, 0, 0, 0); /* begin transmission */ |
Wayne Roberts |
0:77fa30d1c6b5 | 86 | |
Wayne Roberts |
0:77fa30d1c6b5 | 87 | printf("Sent %04x\r\n", samp); |
Wayne Roberts |
0:77fa30d1c6b5 | 88 | while (!txDone) { |
Wayne Roberts |
0:77fa30d1c6b5 | 89 | Radio::service(); |
Wayne Roberts |
0:77fa30d1c6b5 | 90 | } |
Wayne Roberts |
0:77fa30d1c6b5 | 91 | printf("got-tx-done\r\n"); |
Wayne Roberts |
0:77fa30d1c6b5 | 92 | ext_led = EXT_LED_OFF; |
Wayne Roberts |
0:77fa30d1c6b5 | 93 | |
Wayne Roberts |
0:77fa30d1c6b5 | 94 | wait(1.0); /* throttle sending rate */ |
Wayne Roberts |
0:77fa30d1c6b5 | 95 | } |
Wayne Roberts |
0:77fa30d1c6b5 | 96 | } |
Wayne Roberts |
0:77fa30d1c6b5 | 97 |