May 2021 Tests

Dependencies:   SX127x sx12xx_hal

Committer:
lightshow
Date:
Sun May 09 19:58:45 2021 +0000
Revision:
2:2ab3ddbe5e7f
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:2ab3ddbe5e7f 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:2ab3ddbe5e7f 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:2ab3ddbe5e7f 19 DigitalOut myled(LED1);
lightshow 2:2ab3ddbe5e7f 20 DigitalOut signalPin[8] = {PB_1,PB_15,D4,D7,D5,PB_14,D9,D14};
LoRaToolbox 1:b277f5a65c1c 21
lightshow 2:2ab3ddbe5e7f 22 /**********************************************************************/
LoRaToolbox 0:44fb2db84011 23
LoRaToolbox 0:44fb2db84011 24 void txDoneCB()
LoRaToolbox 0:44fb2db84011 25 {
LoRaToolbox 0:44fb2db84011 26 }
LoRaToolbox 0:44fb2db84011 27
LoRaToolbox 0:44fb2db84011 28 void rxDoneCB(uint8_t size, float rssi, float snr)
LoRaToolbox 0:44fb2db84011 29 {
lightshow 2:2ab3ddbe5e7f 30 unsigned i;
lightshow 2:2ab3ddbe5e7f 31 printf("%.1fdBm snr:%.1fdB\t", rssi, snr);
lightshow 2:2ab3ddbe5e7f 32 uint8_t maxShift = 7;
lightshow 2:2ab3ddbe5e7f 33
lightshow 2:2ab3ddbe5e7f 34 myled.write(!myled.read()); // toggle LED
LoRaToolbox 0:44fb2db84011 35
lightshow 2:2ab3ddbe5e7f 36 //write first received byte as state of pins
lightshow 2:2ab3ddbe5e7f 37 uint8_t byte = Radio::radio.rx_buf[0];
lightshow 2:2ab3ddbe5e7f 38 uint8_t tempByte = byte;
lightshow 2:2ab3ddbe5e7f 39 uint8_t bit[8] = {0};
lightshow 2:2ab3ddbe5e7f 40 for (int i = 0; i<8; i++)
lightshow 2:2ab3ddbe5e7f 41 {
lightshow 2:2ab3ddbe5e7f 42 tempByte = tempByte << (maxShift - i);
lightshow 2:2ab3ddbe5e7f 43 tempByte = tempByte >> (maxShift);
lightshow 2:2ab3ddbe5e7f 44 tempByte = tempByte << i;
lightshow 2:2ab3ddbe5e7f 45 if(tempByte)bit[i] = 1;
lightshow 2:2ab3ddbe5e7f 46 else bit[i] = 0;
lightshow 2:2ab3ddbe5e7f 47 tempByte = byte;
lightshow 2:2ab3ddbe5e7f 48 }
lightshow 2:2ab3ddbe5e7f 49 printf("\n\r");
lightshow 2:2ab3ddbe5e7f 50 printf("byte: %d",byte);
lightshow 2:2ab3ddbe5e7f 51 for (int i = 0; i<8; i++)
lightshow 2:2ab3ddbe5e7f 52 {
lightshow 2:2ab3ddbe5e7f 53 printf("bit%d: %d\n\r",i,bit[i]);
lightshow 2:2ab3ddbe5e7f 54 }
lightshow 2:2ab3ddbe5e7f 55
lightshow 2:2ab3ddbe5e7f 56 for (int i = 0; i<8; i++)
lightshow 2:2ab3ddbe5e7f 57 {
lightshow 2:2ab3ddbe5e7f 58 signalPin[i] = bit[i];
lightshow 2:2ab3ddbe5e7f 59 }
lightshow 2:2ab3ddbe5e7f 60 ThisThread::sleep_for(200);
lightshow 2:2ab3ddbe5e7f 61 for (int i = 0; i<8; i++)
lightshow 2:2ab3ddbe5e7f 62 {
lightshow 2:2ab3ddbe5e7f 63 signalPin[i] = 0;
lightshow 2:2ab3ddbe5e7f 64 }
lightshow 2:2ab3ddbe5e7f 65
lightshow 2:2ab3ddbe5e7f 66
lightshow 2:2ab3ddbe5e7f 67 // Display payload packet information
lightshow 2:2ab3ddbe5e7f 68
lightshow 2:2ab3ddbe5e7f 69 for (i = 0; i < size; i++) {
lightshow 2:2ab3ddbe5e7f 70 printf("%02d ", Radio::radio.rx_buf[i]); // Changed to "%02d \n"
lightshow 2:2ab3ddbe5e7f 71 }
lightshow 2:2ab3ddbe5e7f 72 printf("\r\n\n");
lightshow 2:2ab3ddbe5e7f 73 }
LoRaToolbox 1:b277f5a65c1c 74
LoRaToolbox 0:44fb2db84011 75 const RadioEvents_t rev = {
LoRaToolbox 0:44fb2db84011 76 /* Dio0_top_half */ NULL,
LoRaToolbox 0:44fb2db84011 77 /* TxDone_topHalf */ NULL,
LoRaToolbox 0:44fb2db84011 78 /* TxDone_botHalf */ txDoneCB,
LoRaToolbox 0:44fb2db84011 79 /* TxTimeout */ NULL,
LoRaToolbox 0:44fb2db84011 80 /* RxDone */ rxDoneCB,
LoRaToolbox 0:44fb2db84011 81 /* RxTimeout */ NULL,
LoRaToolbox 0:44fb2db84011 82 /* RxError */ NULL,
LoRaToolbox 0:44fb2db84011 83 /* FhssChangeChannel */NULL,
LoRaToolbox 0:44fb2db84011 84 /* CadDone */ NULL
LoRaToolbox 0:44fb2db84011 85 };
LoRaToolbox 0:44fb2db84011 86
LoRaToolbox 0:44fb2db84011 87 int main()
lightshow 2:2ab3ddbe5e7f 88 {
lightshow 2:2ab3ddbe5e7f 89
lightshow 2:2ab3ddbe5e7f 90 // POR & Reset debug message
lightshow 2:2ab3ddbe5e7f 91
lightshow 2:2ab3ddbe5e7f 92 printf("\r\nreset-rx\r\n");
LoRaToolbox 1:b277f5a65c1c 93
LoRaToolbox 0:44fb2db84011 94 Radio::Init(&rev);
LoRaToolbox 0:44fb2db84011 95
lightshow 2:2ab3ddbe5e7f 96 // Radio Start
lightshow 2:2ab3ddbe5e7f 97
LoRaToolbox 0:44fb2db84011 98 Radio::Standby();
LoRaToolbox 0:44fb2db84011 99 Radio::LoRaModemConfig(BW_KHZ, SPREADING_FACTOR, 1);
LoRaToolbox 0:44fb2db84011 100 Radio::SetChannel(CF_HZ);
LoRaToolbox 0:44fb2db84011 101
lightshow 2:2ab3ddbe5e7f 102 // preambleLen, fixLen, crcOn, invIQ
LoRaToolbox 1:b277f5a65c1c 103
LoRaToolbox 0:44fb2db84011 104 Radio::LoRaPacketConfig(8, false, true, false);
LoRaToolbox 0:44fb2db84011 105
lightshow 2:2ab3ddbe5e7f 106 // Start radio receiver, wait for packets from transmitter
LoRaToolbox 0:44fb2db84011 107
lightshow 2:2ab3ddbe5e7f 108 Radio::Rx(0);
lightshow 2:2ab3ddbe5e7f 109
lightshow 2:2ab3ddbe5e7f 110 for (;;) {
lightshow 2:2ab3ddbe5e7f 111 Radio::service();
lightshow 2:2ab3ddbe5e7f 112 }
lightshow 2:2ab3ddbe5e7f 113 }