May 2021 Tests

Dependencies:   SX127x sx12xx_hal

Committer:
lightshow
Date:
Sun May 09 19:56:00 2021 +0000
Revision:
2:0666202b51f9
Parent:
1:b277f5a65c1c
May 2021 Tests

Who changed what in which revision?

UserRevisionLine numberNew contents of line
LoRaToolbox 0:44fb2db84011 1 #include "radio.h"
lightshow 2:0666202b51f9 2 #define MASK_XXXXXXX_ 15
LoRaToolbox 1:b277f5a65c1c 3 // Semtech radio definitions for SX127x, SX126x and SX128x
LoRaToolbox 1:b277f5a65c1c 4
LoRaToolbox 0:44fb2db84011 5 #if defined(SX127x_H)
LoRaToolbox 0:44fb2db84011 6 #define BW_KHZ 500
LoRaToolbox 0:44fb2db84011 7 #define SPREADING_FACTOR 11
LoRaToolbox 0:44fb2db84011 8 #define CF_HZ 912000000
LoRaToolbox 0:44fb2db84011 9 #elif defined(SX126x_H)
LoRaToolbox 0:44fb2db84011 10 #define BW_KHZ 500
LoRaToolbox 0:44fb2db84011 11 #define SPREADING_FACTOR 10
lightshow 2:0666202b51f9 12 #define CF_HZ 913000000
LoRaToolbox 0:44fb2db84011 13 #elif defined(SX128x_H)
LoRaToolbox 0:44fb2db84011 14 #define BW_KHZ 200
LoRaToolbox 0:44fb2db84011 15 #define SPREADING_FACTOR 7
LoRaToolbox 0:44fb2db84011 16 #define CF_HZ 2487000000
LoRaToolbox 0:44fb2db84011 17 #endif
LoRaToolbox 0:44fb2db84011 18
lightshow 2:0666202b51f9 19 DigitalOut myled(LED1);
lightshow 2:0666202b51f9 20 DigitalOut signalPin[8] = {PB_1,PB_15,D4,D7,D5,PB_14,D9,D14};
lightshow 2:0666202b51f9 21 DigitalOut syncPin(PC_4);
lightshow 2:0666202b51f9 22 Timeout resetTrip;
LoRaToolbox 1:b277f5a65c1c 23
lightshow 2:0666202b51f9 24 /**********************************************************************/
LoRaToolbox 0:44fb2db84011 25
LoRaToolbox 0:44fb2db84011 26 void txDoneCB()
LoRaToolbox 0:44fb2db84011 27 {
lightshow 2:0666202b51f9 28 }
lightshow 2:0666202b51f9 29
lightshow 2:0666202b51f9 30 void turnOffSyncPin() {
lightshow 2:0666202b51f9 31 syncPin = 0;
LoRaToolbox 0:44fb2db84011 32 }
LoRaToolbox 0:44fb2db84011 33
LoRaToolbox 0:44fb2db84011 34 void rxDoneCB(uint8_t size, float rssi, float snr)
LoRaToolbox 0:44fb2db84011 35 {
lightshow 2:0666202b51f9 36 unsigned i;
lightshow 2:0666202b51f9 37 printf("%.1fdBm snr:%.1fdB\t", rssi, snr);
lightshow 2:0666202b51f9 38 uint8_t maxShift = 7;
LoRaToolbox 0:44fb2db84011 39
lightshow 2:0666202b51f9 40 myled.write(!myled.read()); // toggle LED
lightshow 2:0666202b51f9 41
lightshow 2:0666202b51f9 42 //verify ID, in this case ID is 42
lightshow 2:0666202b51f9 43 uint8_t byte = Radio::radio.rx_buf[0];
lightshow 2:0666202b51f9 44 if(byte != 42)return;
lightshow 2:0666202b51f9 45
lightshow 2:0666202b51f9 46 //write first received byte as state of pins
lightshow 2:0666202b51f9 47 byte = Radio::radio.rx_buf[1];
lightshow 2:0666202b51f9 48 uint8_t tempByte = byte;
lightshow 2:0666202b51f9 49 uint8_t bit[8] = {0};
lightshow 2:0666202b51f9 50 for (int i = 0; i<8; i++)
lightshow 2:0666202b51f9 51 {
lightshow 2:0666202b51f9 52 tempByte = tempByte << (maxShift - i);
lightshow 2:0666202b51f9 53 tempByte = tempByte >> (maxShift);
lightshow 2:0666202b51f9 54 tempByte = tempByte << i;
lightshow 2:0666202b51f9 55 if(tempByte)bit[i] = 1;
lightshow 2:0666202b51f9 56 else bit[i] = 0;
lightshow 2:0666202b51f9 57 tempByte = byte;
lightshow 2:0666202b51f9 58 }
lightshow 2:0666202b51f9 59 printf("\n\r");
lightshow 2:0666202b51f9 60 printf("byte: %d",byte);
lightshow 2:0666202b51f9 61 for (int i = 0; i<8; i++)
lightshow 2:0666202b51f9 62 {
lightshow 2:0666202b51f9 63 printf("bit%d: %d\n\r",i,bit[i]);
lightshow 2:0666202b51f9 64 }
lightshow 2:0666202b51f9 65
lightshow 2:0666202b51f9 66 for (int i = 0; i<8; i++)
lightshow 2:0666202b51f9 67 {
lightshow 2:0666202b51f9 68 signalPin[i] = bit[i];
lightshow 2:0666202b51f9 69 }
lightshow 2:0666202b51f9 70 if(bit[0])
lightshow 2:0666202b51f9 71 {
lightshow 2:0666202b51f9 72 syncPin = 1;
lightshow 2:0666202b51f9 73 resetTrip.attach(&turnOffSyncPin, .01);
lightshow 2:0666202b51f9 74 }
lightshow 2:0666202b51f9 75 ThisThread::sleep_for(200);
lightshow 2:0666202b51f9 76
lightshow 2:0666202b51f9 77 for (int i = 0; i<8; i++)
lightshow 2:0666202b51f9 78 {
lightshow 2:0666202b51f9 79 signalPin[i] = 0;
lightshow 2:0666202b51f9 80 }
lightshow 2:0666202b51f9 81
lightshow 2:0666202b51f9 82
lightshow 2:0666202b51f9 83 // Display payload packet information
lightshow 2:0666202b51f9 84
lightshow 2:0666202b51f9 85 for (i = 0; i < size; i++) {
lightshow 2:0666202b51f9 86 printf("%02d ", Radio::radio.rx_buf[i]); // Changed to "%02d \n"
lightshow 2:0666202b51f9 87 }
lightshow 2:0666202b51f9 88 printf("\r\n\n");
lightshow 2:0666202b51f9 89 }
LoRaToolbox 1:b277f5a65c1c 90
LoRaToolbox 0:44fb2db84011 91 const RadioEvents_t rev = {
LoRaToolbox 0:44fb2db84011 92 /* Dio0_top_half */ NULL,
LoRaToolbox 0:44fb2db84011 93 /* TxDone_topHalf */ NULL,
LoRaToolbox 0:44fb2db84011 94 /* TxDone_botHalf */ txDoneCB,
LoRaToolbox 0:44fb2db84011 95 /* TxTimeout */ NULL,
LoRaToolbox 0:44fb2db84011 96 /* RxDone */ rxDoneCB,
LoRaToolbox 0:44fb2db84011 97 /* RxTimeout */ NULL,
LoRaToolbox 0:44fb2db84011 98 /* RxError */ NULL,
LoRaToolbox 0:44fb2db84011 99 /* FhssChangeChannel */NULL,
LoRaToolbox 0:44fb2db84011 100 /* CadDone */ NULL
LoRaToolbox 0:44fb2db84011 101 };
LoRaToolbox 0:44fb2db84011 102
LoRaToolbox 0:44fb2db84011 103 int main()
lightshow 2:0666202b51f9 104 {
lightshow 2:0666202b51f9 105
lightshow 2:0666202b51f9 106 // POR & Reset debug message
lightshow 2:0666202b51f9 107
lightshow 2:0666202b51f9 108 printf("\r\nreset-rx\r\n");
LoRaToolbox 1:b277f5a65c1c 109
LoRaToolbox 0:44fb2db84011 110 Radio::Init(&rev);
LoRaToolbox 0:44fb2db84011 111
lightshow 2:0666202b51f9 112 // Radio Start
lightshow 2:0666202b51f9 113
LoRaToolbox 0:44fb2db84011 114 Radio::Standby();
LoRaToolbox 0:44fb2db84011 115 Radio::LoRaModemConfig(BW_KHZ, SPREADING_FACTOR, 1);
LoRaToolbox 0:44fb2db84011 116 Radio::SetChannel(CF_HZ);
LoRaToolbox 0:44fb2db84011 117
lightshow 2:0666202b51f9 118 // preambleLen, fixLen, crcOn, invIQ
LoRaToolbox 1:b277f5a65c1c 119
LoRaToolbox 0:44fb2db84011 120 Radio::LoRaPacketConfig(8, false, true, false);
LoRaToolbox 0:44fb2db84011 121
lightshow 2:0666202b51f9 122 // Start radio receiver, wait for packets from transmitter
LoRaToolbox 0:44fb2db84011 123
lightshow 2:0666202b51f9 124 Radio::Rx(0);
lightshow 2:0666202b51f9 125
lightshow 2:0666202b51f9 126 for (;;) {
lightshow 2:0666202b51f9 127 Radio::service();
lightshow 2:0666202b51f9 128 }
lightshow 2:0666202b51f9 129 }