mdot-examples triage

Dependencies:   libmDot-dev-mbed5-deprecated ISL29011

Committer:
Maciej Pijanowski
Date:
Thu Jun 29 19:54:41 2017 +0200
Revision:
0:f3d9c16b08d7
manual single channel example

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Maciej Pijanowski 0:f3d9c16b08d7 1 #ifndef __RADIO_EVENT_H__
Maciej Pijanowski 0:f3d9c16b08d7 2 #define __RADIO_EVENT_H__
Maciej Pijanowski 0:f3d9c16b08d7 3
Maciej Pijanowski 0:f3d9c16b08d7 4 #include "dot_util.h"
Maciej Pijanowski 0:f3d9c16b08d7 5 #include "mDotEvent.h"
Maciej Pijanowski 0:f3d9c16b08d7 6
Maciej Pijanowski 0:f3d9c16b08d7 7 class RadioEvent : public mDotEvent
Maciej Pijanowski 0:f3d9c16b08d7 8 {
Maciej Pijanowski 0:f3d9c16b08d7 9
Maciej Pijanowski 0:f3d9c16b08d7 10 public:
Maciej Pijanowski 0:f3d9c16b08d7 11 RadioEvent() {}
Maciej Pijanowski 0:f3d9c16b08d7 12
Maciej Pijanowski 0:f3d9c16b08d7 13 virtual ~RadioEvent() {}
Maciej Pijanowski 0:f3d9c16b08d7 14
Maciej Pijanowski 0:f3d9c16b08d7 15 /*!
Maciej Pijanowski 0:f3d9c16b08d7 16 * MAC layer event callback prototype.
Maciej Pijanowski 0:f3d9c16b08d7 17 *
Maciej Pijanowski 0:f3d9c16b08d7 18 * \param [IN] flags Bit field indicating the MAC events occurred
Maciej Pijanowski 0:f3d9c16b08d7 19 * \param [IN] info Details about MAC events occurred
Maciej Pijanowski 0:f3d9c16b08d7 20 */
Maciej Pijanowski 0:f3d9c16b08d7 21 virtual void MacEvent(LoRaMacEventFlags* flags, LoRaMacEventInfo* info) {
Maciej Pijanowski 0:f3d9c16b08d7 22
Maciej Pijanowski 0:f3d9c16b08d7 23 if (mts::MTSLog::getLogLevel() == mts::MTSLog::TRACE_LEVEL) {
Maciej Pijanowski 0:f3d9c16b08d7 24 std::string msg = "OK";
Maciej Pijanowski 0:f3d9c16b08d7 25 switch (info->Status) {
Maciej Pijanowski 0:f3d9c16b08d7 26 case LORAMAC_EVENT_INFO_STATUS_ERROR:
Maciej Pijanowski 0:f3d9c16b08d7 27 msg = "ERROR";
Maciej Pijanowski 0:f3d9c16b08d7 28 break;
Maciej Pijanowski 0:f3d9c16b08d7 29 case LORAMAC_EVENT_INFO_STATUS_TX_TIMEOUT:
Maciej Pijanowski 0:f3d9c16b08d7 30 msg = "TX_TIMEOUT";
Maciej Pijanowski 0:f3d9c16b08d7 31 break;
Maciej Pijanowski 0:f3d9c16b08d7 32 case LORAMAC_EVENT_INFO_STATUS_RX_TIMEOUT:
Maciej Pijanowski 0:f3d9c16b08d7 33 msg = "RX_TIMEOUT";
Maciej Pijanowski 0:f3d9c16b08d7 34 break;
Maciej Pijanowski 0:f3d9c16b08d7 35 case LORAMAC_EVENT_INFO_STATUS_RX_ERROR:
Maciej Pijanowski 0:f3d9c16b08d7 36 msg = "RX_ERROR";
Maciej Pijanowski 0:f3d9c16b08d7 37 break;
Maciej Pijanowski 0:f3d9c16b08d7 38 case LORAMAC_EVENT_INFO_STATUS_JOIN_FAIL:
Maciej Pijanowski 0:f3d9c16b08d7 39 msg = "JOIN_FAIL";
Maciej Pijanowski 0:f3d9c16b08d7 40 break;
Maciej Pijanowski 0:f3d9c16b08d7 41 case LORAMAC_EVENT_INFO_STATUS_DOWNLINK_FAIL:
Maciej Pijanowski 0:f3d9c16b08d7 42 msg = "DOWNLINK_FAIL";
Maciej Pijanowski 0:f3d9c16b08d7 43 break;
Maciej Pijanowski 0:f3d9c16b08d7 44 case LORAMAC_EVENT_INFO_STATUS_ADDRESS_FAIL:
Maciej Pijanowski 0:f3d9c16b08d7 45 msg = "ADDRESS_FAIL";
Maciej Pijanowski 0:f3d9c16b08d7 46 break;
Maciej Pijanowski 0:f3d9c16b08d7 47 case LORAMAC_EVENT_INFO_STATUS_MIC_FAIL:
Maciej Pijanowski 0:f3d9c16b08d7 48 msg = "MIC_FAIL";
Maciej Pijanowski 0:f3d9c16b08d7 49 break;
Maciej Pijanowski 0:f3d9c16b08d7 50 default:
Maciej Pijanowski 0:f3d9c16b08d7 51 break;
Maciej Pijanowski 0:f3d9c16b08d7 52 }
Maciej Pijanowski 0:f3d9c16b08d7 53 logTrace("Event: %s", msg.c_str());
Maciej Pijanowski 0:f3d9c16b08d7 54
Maciej Pijanowski 0:f3d9c16b08d7 55 logTrace("Flags Tx: %d Rx: %d RxData: %d RxSlot: %d LinkCheck: %d JoinAccept: %d",
Maciej Pijanowski 0:f3d9c16b08d7 56 flags->Bits.Tx, flags->Bits.Rx, flags->Bits.RxData, flags->Bits.RxSlot, flags->Bits.LinkCheck, flags->Bits.JoinAccept);
Maciej Pijanowski 0:f3d9c16b08d7 57 logTrace("Info: Status: %d ACK: %d Retries: %d TxDR: %d RxPort: %d RxSize: %d RSSI: %d SNR: %d Energy: %d Margin: %d Gateways: %d",
Maciej Pijanowski 0:f3d9c16b08d7 58 info->Status, info->TxAckReceived, info->TxNbRetries, info->TxDatarate, info->RxPort, info->RxBufferSize,
Maciej Pijanowski 0:f3d9c16b08d7 59 info->RxRssi, info->RxSnr, info->Energy, info->DemodMargin, info->NbGateways);
Maciej Pijanowski 0:f3d9c16b08d7 60 }
Maciej Pijanowski 0:f3d9c16b08d7 61
Maciej Pijanowski 0:f3d9c16b08d7 62 if (flags->Bits.Rx) {
Maciej Pijanowski 0:f3d9c16b08d7 63
Maciej Pijanowski 0:f3d9c16b08d7 64 logDebug("Rx %d bytes", info->RxBufferSize);
Maciej Pijanowski 0:f3d9c16b08d7 65 if (info->RxBufferSize > 0) {
Maciej Pijanowski 0:f3d9c16b08d7 66 // print RX data as string and hexadecimal
Maciej Pijanowski 0:f3d9c16b08d7 67 std::string rx((const char*)info->RxBuffer, info->RxBufferSize);
Maciej Pijanowski 0:f3d9c16b08d7 68 printf("Rx data: %s [%s]\r\n", rx.c_str(), mts::Text::bin2hexString(info->RxBuffer, info->RxBufferSize).c_str());
Maciej Pijanowski 0:f3d9c16b08d7 69 }
Maciej Pijanowski 0:f3d9c16b08d7 70 }
Maciej Pijanowski 0:f3d9c16b08d7 71 }
Maciej Pijanowski 0:f3d9c16b08d7 72 };
Maciej Pijanowski 0:f3d9c16b08d7 73
Maciej Pijanowski 0:f3d9c16b08d7 74 #endif
Maciej Pijanowski 0:f3d9c16b08d7 75