May 2021 Tests

Dependencies:   SX127x sx12xx_hal

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