simple typeABZ test with continuous carrier option

Dependencies:   SX127x LPS22HB sx12xx_hal

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?

UserRevisionLine numberNew 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