Wireless interface using LoRa technology
Dependencies: AlohaTransceiver RingBuffer SX1276Lib SerialInterfaceProtocol mbed L3PDU
Diff: main.cpp
- Revision:
- 2:ae85337d4ca7
- Parent:
- 0:1e42d79b42e1
- Child:
- 3:a4f6abad9378
--- a/main.cpp Thu Jul 14 04:59:41 2016 +0000 +++ b/main.cpp Thu Jul 14 11:48:52 2016 +0000 @@ -52,34 +52,9 @@ return 0; } -int sendMessage(uint8_t *payload, uint8_t payload_length, uint8_t *response, uint8_t *response_length) -{ - static uint8_t seqid = 0; - - txFrame.setType(AlohaFrame::Aloha_Data); - txFrame.setPayloadLength(0x2); - txFrame.setSourceAddress(0x1); - txFrame.setDestinationAddress(0x2); - txFrame.setFullMessageFlag(0x1); - txFrame.setSequenceID(seqid); - txFrame.setPayload(0xff, 0); - txFrame.setPayload(0xfe, 1); - txFrame.generateCrc(); - - - uint8_t buffer[20]; - memset(buffer, 0x0, sizeof(buffer)); - txFrame.serialize(buffer); - - aloha.send(buffer, 20); - - seqid += 1; - - return 0; -} - -void AlohaDataHandler(AlohaFrame *frame) -{ +void AlohaDataEcho(AlohaFrame *frame) +{ + // print received message printf("AlohaDataHandler invoked\r\n"); printf(" Type: 0x%x, PayloadLength: 0x%x\r\n", frame->getType(), frame->getPayloadLength()); printf(" SrcAddr: 0x%x, DestAddr: 0x%x\r\n", frame->getSourceAddress(), frame->getDestinationAddress()); @@ -90,6 +65,32 @@ } printf(" CRC: 0x%x\r\n", frame->getCrc()); + // get rssi and snr + uint16_t rssi = aloha.getRssi(); + uint8_t snr = aloha.getSnr(); + + uint8_t rssi_h = (rssi & 0xff00) >> 8; + uint8_t rssi_l = rssi & 0xff; + + // Transmit RSSI and SNR back to sender + txFrame.setType(AlohaFrame::Aloha_Data); + txFrame.setPayloadLength(3); + txFrame.setSourceAddress(frame->getDestinationAddress()); + txFrame.setDestinationAddress(frame->getSourceAddress()); + txFrame.setFullMessageFlag(frame->getFullMessageFlag()); + txFrame.setSequenceID(frame->getSequenceID() + 1); + txFrame.setPayload(snr, 0); + txFrame.setPayload(rssi_h, 1); + txFrame.setPayload(rssi_l, 2); + txFrame.generateCrc(); + + + uint8_t buffer[20]; + memset(buffer, 0x0, sizeof(buffer)); + txFrame.serialize(buffer); + + aloha.send(buffer, 20); + } int main() { @@ -101,10 +102,9 @@ // register callback functions for SIP SIP.registerCommand(0x00, toggleChecksum); - SIP.registerCommand(0x01, sendMessage); // register callback functions for aloha transceiver - aloha.registerType(AlohaFrame::Aloha_Data, AlohaDataHandler); + aloha.registerType(AlohaFrame::Aloha_Data, AlohaDataEcho); while(1) { SIP.poll();