May 2021 Tests

Dependencies:   SX127x sx12xx_hal

Committer:
lightshow
Date:
Sun May 09 20:03:44 2021 +0000
Revision:
2:cfd70a2fb81f
Parent:
1:b277f5a65c1c
May 2021 Tests

Who changed what in which revision?

UserRevisionLine numberNew contents of line
LoRaToolbox 0:44fb2db84011 1 #include "radio.h"
LoRaToolbox 0:44fb2db84011 2
lightshow 2:cfd70a2fb81f 3 //InterruptIn txByte[8]={InterruptIn(D2),InterruptIn(D3),InterruptIn(D4),InterruptIn(D5),InterruptIn(D7),InterruptIn(D8),InterruptIn(D9),InterruptIn(D14)};
lightshow 2:cfd70a2fb81f 4 InterruptIn txByte0(PB_1);//D2,A1,PC_8 didn't work, PC_5
lightshow 2:cfd70a2fb81f 5 InterruptIn txByte1(PB_15);//D3 didn't work, A2 works
lightshow 2:cfd70a2fb81f 6 InterruptIn txByte2(D4);
lightshow 2:cfd70a2fb81f 7 InterruptIn txByte3(D7);
lightshow 2:cfd70a2fb81f 8 InterruptIn txByte4(D5);
lightshow 2:cfd70a2fb81f 9 InterruptIn txByte5(PB_14);//D8 didn't work, a3 works
lightshow 2:cfd70a2fb81f 10 InterruptIn txByte6(D9);//D9 didn't work, a4 works
lightshow 2:cfd70a2fb81f 11 InterruptIn txByte7(D14);//D14,PC_0(A6),PC_6 didn't work
lightshow 2:cfd70a2fb81f 12 EventQueue queue(10 * EVENTS_EVENT_SIZE);
lightshow 2:cfd70a2fb81f 13 Thread t;
lightshow 2:cfd70a2fb81f 14 Radio loRaRadio;
lightshow 2:cfd70a2fb81f 15
lightshow 2:cfd70a2fb81f 16 void transmit( uint8_t byte);
lightshow 2:cfd70a2fb81f 17
lightshow 2:cfd70a2fb81f 18 //uint8_t old_byte = 0;
lightshow 2:cfd70a2fb81f 19 void tx_event(void)
lightshow 2:cfd70a2fb81f 20 {
lightshow 2:cfd70a2fb81f 21 printf("tx_event\n\r");
lightshow 2:cfd70a2fb81f 22 uint8_t byte = 0;
lightshow 2:cfd70a2fb81f 23
lightshow 2:cfd70a2fb81f 24 uint8_t bit0 = txByte0.read();
lightshow 2:cfd70a2fb81f 25 uint8_t bit1 = txByte1.read() << 1;
lightshow 2:cfd70a2fb81f 26 uint8_t bit2 = txByte2.read() << 2;
lightshow 2:cfd70a2fb81f 27 uint8_t bit3 = txByte3.read() << 3;
lightshow 2:cfd70a2fb81f 28 uint8_t bit4 = txByte4.read() << 4;
lightshow 2:cfd70a2fb81f 29 uint8_t bit5 = txByte5.read() << 5;
lightshow 2:cfd70a2fb81f 30 uint8_t bit6 = txByte6.read() << 6;
lightshow 2:cfd70a2fb81f 31 uint8_t bit7 = txByte7.read() << 7;
lightshow 2:cfd70a2fb81f 32 if(bit0 || bit1 || bit2 || bit3 || bit4 || bit5 || bit6 || bit7)
lightshow 2:cfd70a2fb81f 33 {
lightshow 2:cfd70a2fb81f 34 byte = bit0 + bit1 + bit2 + bit3 + bit4 + bit5 + bit6 + bit7;
lightshow 2:cfd70a2fb81f 35 transmit(byte);
lightshow 2:cfd70a2fb81f 36 }
lightshow 2:cfd70a2fb81f 37 printf("bit0 :%d,\n\r",bit0);
lightshow 2:cfd70a2fb81f 38 printf("bit1 :%d,\n\r",bit1);
lightshow 2:cfd70a2fb81f 39 printf("bit2 :%d,\n\r",bit2);
lightshow 2:cfd70a2fb81f 40 printf("bit3 :%d,\n\r",bit3);
lightshow 2:cfd70a2fb81f 41 printf("bit4 :%d,\n\r",bit4);
lightshow 2:cfd70a2fb81f 42 printf("bit5 :%d,\n\r",bit5);
lightshow 2:cfd70a2fb81f 43 printf("bit6 :%d,\n\r",bit6);
lightshow 2:cfd70a2fb81f 44 printf("bit7 :%d,\n\r",bit7);
lightshow 2:cfd70a2fb81f 45 }
lightshow 2:cfd70a2fb81f 46
lightshow 2:cfd70a2fb81f 47 void rise_handler(void) {
lightshow 2:cfd70a2fb81f 48 //printf("rise_handler in context %p\r\n", Thread::gettid());
lightshow 2:cfd70a2fb81f 49 queue.call(tx_event);
lightshow 2:cfd70a2fb81f 50
lightshow 2:cfd70a2fb81f 51 }
lightshow 2:cfd70a2fb81f 52
LoRaToolbox 1:b277f5a65c1c 53 // Semtech radio definitions for SX127x, SX126x and SX128x
LoRaToolbox 1:b277f5a65c1c 54
LoRaToolbox 0:44fb2db84011 55 #if defined(SX127x_H)
LoRaToolbox 0:44fb2db84011 56 #define BW_KHZ 500
LoRaToolbox 0:44fb2db84011 57 #define SPREADING_FACTOR 11
LoRaToolbox 0:44fb2db84011 58 #define CF_HZ 912000000
lightshow 2:cfd70a2fb81f 59 #define TX_DBM 00
LoRaToolbox 0:44fb2db84011 60 #elif defined(SX126x_H)
LoRaToolbox 0:44fb2db84011 61 #define BW_KHZ 500
LoRaToolbox 0:44fb2db84011 62 #define SPREADING_FACTOR 10
LoRaToolbox 0:44fb2db84011 63 #define CF_HZ 915000000
LoRaToolbox 0:44fb2db84011 64 #define TX_DBM (Radio::chipType == CHIP_TYPE_SX1262 ? 20 : 14)
LoRaToolbox 0:44fb2db84011 65 #elif defined(SX128x_H)
LoRaToolbox 0:44fb2db84011 66 #define BW_KHZ 200
LoRaToolbox 0:44fb2db84011 67 #define SPREADING_FACTOR 7
LoRaToolbox 0:44fb2db84011 68 #define CF_HZ 2487000000
LoRaToolbox 0:44fb2db84011 69 #define TX_DBM 6
LoRaToolbox 0:44fb2db84011 70 #endif
LoRaToolbox 0:44fb2db84011 71
LoRaToolbox 1:b277f5a65c1c 72 /******************** Setup radio transmitter ****************************/
LoRaToolbox 1:b277f5a65c1c 73
LoRaToolbox 1:b277f5a65c1c 74
LoRaToolbox 0:44fb2db84011 75 volatile bool txDone;
LoRaToolbox 0:44fb2db84011 76
LoRaToolbox 0:44fb2db84011 77 void txDoneCB()
LoRaToolbox 0:44fb2db84011 78 {
LoRaToolbox 0:44fb2db84011 79 txDone = true;
LoRaToolbox 0:44fb2db84011 80 }
LoRaToolbox 0:44fb2db84011 81
LoRaToolbox 0:44fb2db84011 82 void rxDoneCB(uint8_t size, float rssi, float snr)
LoRaToolbox 0:44fb2db84011 83 {
LoRaToolbox 0:44fb2db84011 84 }
LoRaToolbox 0:44fb2db84011 85
LoRaToolbox 1:b277f5a65c1c 86 // Define radio events for transmitter
LoRaToolbox 1:b277f5a65c1c 87
LoRaToolbox 0:44fb2db84011 88 const RadioEvents_t rev = {
LoRaToolbox 0:44fb2db84011 89 /* Dio0_top_half */ NULL,
LoRaToolbox 0:44fb2db84011 90 /* TxDone_topHalf */ NULL,
LoRaToolbox 0:44fb2db84011 91 /* TxDone_botHalf */ txDoneCB,
LoRaToolbox 0:44fb2db84011 92 /* TxTimeout */ NULL,
LoRaToolbox 0:44fb2db84011 93 /* RxDone */ rxDoneCB,
LoRaToolbox 0:44fb2db84011 94 /* RxTimeout */ NULL,
LoRaToolbox 0:44fb2db84011 95 /* RxError */ NULL,
LoRaToolbox 0:44fb2db84011 96 /* FhssChangeChannel */NULL,
LoRaToolbox 0:44fb2db84011 97 /* CadDone */ NULL
LoRaToolbox 0:44fb2db84011 98 };
LoRaToolbox 0:44fb2db84011 99
LoRaToolbox 0:44fb2db84011 100 int main()
LoRaToolbox 0:44fb2db84011 101 {
lightshow 2:cfd70a2fb81f 102 // Start the event queue
lightshow 2:cfd70a2fb81f 103 t.start(callback(&queue, &EventQueue::dispatch_forever));
lightshow 2:cfd70a2fb81f 104
lightshow 2:cfd70a2fb81f 105 // The 'rise' handler will execute in the context of thread 't'
lightshow 2:cfd70a2fb81f 106 // for(int i = 0; i < 8; i++)
lightshow 2:cfd70a2fb81f 107 // {
lightshow 2:cfd70a2fb81f 108 // txByte[i].rise(queue.event(rise_handler));
lightshow 2:cfd70a2fb81f 109 // }
lightshow 2:cfd70a2fb81f 110 txByte0.rise(rise_handler);
lightshow 2:cfd70a2fb81f 111 txByte1.rise(rise_handler);
lightshow 2:cfd70a2fb81f 112 txByte2.rise(rise_handler);
lightshow 2:cfd70a2fb81f 113 txByte3.rise(rise_handler);
lightshow 2:cfd70a2fb81f 114 txByte4.rise(rise_handler);
lightshow 2:cfd70a2fb81f 115 txByte5.rise(rise_handler);
lightshow 2:cfd70a2fb81f 116 txByte6.rise(rise_handler);
lightshow 2:cfd70a2fb81f 117 txByte7.rise(rise_handler);
lightshow 2:cfd70a2fb81f 118
lightshow 2:cfd70a2fb81f 119
LoRaToolbox 1:b277f5a65c1c 120 uint8_t seq = 0; // Set initial transmit sequence to 0
LoRaToolbox 1:b277f5a65c1c 121
LoRaToolbox 0:44fb2db84011 122 printf("\r\nreset-tx ");
LoRaToolbox 1:b277f5a65c1c 123
LoRaToolbox 1:b277f5a65c1c 124 // Start radio transmitter after POR or reset
LoRaToolbox 0:44fb2db84011 125
lightshow 2:cfd70a2fb81f 126 loRaRadio.Init(&rev);
LoRaToolbox 0:44fb2db84011 127
LoRaToolbox 1:b277f5a65c1c 128 //Set radio properties for transmitter
LoRaToolbox 1:b277f5a65c1c 129
lightshow 2:cfd70a2fb81f 130 loRaRadio.Standby();
lightshow 2:cfd70a2fb81f 131 loRaRadio.LoRaModemConfig(BW_KHZ, SPREADING_FACTOR, 1);
lightshow 2:cfd70a2fb81f 132 loRaRadio.SetChannel(CF_HZ);
LoRaToolbox 0:44fb2db84011 133
LoRaToolbox 1:b277f5a65c1c 134 // Set transmitter output power
LoRaToolbox 1:b277f5a65c1c 135
lightshow 2:cfd70a2fb81f 136 loRaRadio.set_tx_dbm(TX_DBM);
LoRaToolbox 0:44fb2db84011 137
LoRaToolbox 1:b277f5a65c1c 138 // Setup transmit packet payload -> preambleLen, fixLen, crcOn, invIQ
LoRaToolbox 1:b277f5a65c1c 139
lightshow 2:cfd70a2fb81f 140 loRaRadio.LoRaPacketConfig(8, false, true, false);
LoRaToolbox 0:44fb2db84011 141
LoRaToolbox 0:44fb2db84011 142 printf("\n");
LoRaToolbox 0:44fb2db84011 143
LoRaToolbox 0:44fb2db84011 144 printf("%02d \r\n\n", seq);
LoRaToolbox 0:44fb2db84011 145
lightshow 2:cfd70a2fb81f 146 for (;;) {}
lightshow 2:cfd70a2fb81f 147
lightshow 2:cfd70a2fb81f 148 // loRaRadio.radio.tx_buf[0] = seq; // set payload
lightshow 2:cfd70a2fb81f 149 // txDone = false;
lightshow 2:cfd70a2fb81f 150 // loRaRadio.Send(10, 0, 0, 0); // begin transmission of payload
lightshow 2:cfd70a2fb81f 151
lightshow 2:cfd70a2fb81f 152 // while (!txDone) {
lightshow 2:cfd70a2fb81f 153 // loRaRadio.service();
lightshow 2:cfd70a2fb81f 154 // }
lightshow 2:cfd70a2fb81f 155
lightshow 2:cfd70a2fb81f 156 // // Transmit payload every 500mS
lightshow 2:cfd70a2fb81f 157
lightshow 2:cfd70a2fb81f 158 // wait(0.5); // throttle sending rate
lightshow 2:cfd70a2fb81f 159 // seq++; // change payload (increment sequence number)
lightshow 2:cfd70a2fb81f 160 // printf("%02d \r\n\n", seq); // Print sequence number
lightshow 2:cfd70a2fb81f 161
lightshow 2:cfd70a2fb81f 162 //}
lightshow 2:cfd70a2fb81f 163 }
lightshow 2:cfd70a2fb81f 164
lightshow 2:cfd70a2fb81f 165 void transmit( uint8_t byte)
lightshow 2:cfd70a2fb81f 166 {
lightshow 2:cfd70a2fb81f 167 //volatile bool tx_Done;
lightshow 2:cfd70a2fb81f 168 loRaRadio.radio.tx_buf[0] = byte; // set payload
LoRaToolbox 0:44fb2db84011 169 txDone = false;
lightshow 2:cfd70a2fb81f 170 loRaRadio.Send(1, 0, 0, 0); // begin transmission of payload
LoRaToolbox 0:44fb2db84011 171
LoRaToolbox 0:44fb2db84011 172 while (!txDone) {
lightshow 2:cfd70a2fb81f 173 loRaRadio.service();
LoRaToolbox 0:44fb2db84011 174 }
lightshow 2:cfd70a2fb81f 175 printf("transmission complete\n\r");
LoRaToolbox 0:44fb2db84011 176 }