libxdot LESS version

Committer:
icarballeda
Date:
Fri May 03 21:37:43 2019 +0000
Revision:
15:e098cf00f502
Parent:
2:4569491293d7
CO2 is equal to -99 when it fails.; AppEUI, AppKEY & Radio Confs edited to work with Cisco Gateways (Multitech Compatible); Smartium: Added New message, alert string as in CDFS protocol.; Fixed: Accel & ux for errors

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1 #ifndef MDOT_EVENT_H
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 2 #define MDOT_EVENT_H
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 3
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 4 #include "mDot.h"
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 5 #include "MacEvents.h"
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 6 #include "MTSLog.h"
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 7 #include "MTSText.h"
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 8
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 9 typedef union {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 10 uint8_t Value;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 11 struct {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 12 uint8_t :1;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 13 uint8_t Tx :1;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 14 uint8_t Rx :1;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 15 uint8_t RxData :1;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 16 uint8_t RxSlot :2;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 17 uint8_t LinkCheck :1;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 18 uint8_t JoinAccept :1;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 19 } Bits;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 20 } LoRaMacEventFlags;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 21
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 22 typedef enum {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 23 LORAMAC_EVENT_INFO_STATUS_OK = 0,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 24 LORAMAC_EVENT_INFO_STATUS_ERROR,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 25 LORAMAC_EVENT_INFO_STATUS_TX_TIMEOUT,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 26 LORAMAC_EVENT_INFO_STATUS_RX_TIMEOUT,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 27 LORAMAC_EVENT_INFO_STATUS_RX_ERROR,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 28 LORAMAC_EVENT_INFO_STATUS_JOIN_FAIL,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 29 LORAMAC_EVENT_INFO_STATUS_DOWNLINK_FAIL,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 30 LORAMAC_EVENT_INFO_STATUS_ADDRESS_FAIL,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 31 LORAMAC_EVENT_INFO_STATUS_MIC_FAIL,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 32 } LoRaMacEventInfoStatus;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 33
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 34 /*!
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 35 * LoRaMAC event information
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 36 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 37 typedef struct {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 38 LoRaMacEventInfoStatus Status;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 39 lora::DownlinkControl Ctrl;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 40 bool TxAckReceived;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 41 uint8_t TxNbRetries;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 42 uint8_t TxDatarate;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 43 uint8_t RxPort;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 44 uint8_t *RxBuffer;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 45 uint8_t RxBufferSize;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 46 int16_t RxRssi;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 47 uint8_t RxSnr;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 48 uint16_t Energy;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 49 uint8_t DemodMargin;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 50 uint8_t NbGateways;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 51 } LoRaMacEventInfo;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 52
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 53 class mDotEvent: public lora::MacEvents {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 54 public:
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 55
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 56 mDotEvent()
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 57 :
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 58 LinkCheckAnsReceived(false),
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 59 DemodMargin(0),
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 60 NbGateways(0),
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 61 PacketReceived(false),
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 62 RxPort(0),
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 63 RxPayloadSize(0),
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 64 PongReceived(false),
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 65 PongRssi(0),
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 66 PongSnr(0),
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 67 AckReceived(false),
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 68 TxNbRetries(0)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 69 {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 70 memset(&_flags, 0, sizeof(LoRaMacEventFlags));
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 71 memset(&_info, 0, sizeof(LoRaMacEventInfo));
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 72 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 73
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 74 virtual ~mDotEvent() {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 75 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 76
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 77 virtual void MacEvent(LoRaMacEventFlags *flags, LoRaMacEventInfo *info) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 78 if (mts::MTSLog::getLogLevel() == mts::MTSLog::TRACE_LEVEL) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 79 std::string msg = "OK";
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 80 switch (info->Status) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 81 case LORAMAC_EVENT_INFO_STATUS_ERROR:
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 82 msg = "ERROR";
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 83 break;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 84 case LORAMAC_EVENT_INFO_STATUS_TX_TIMEOUT:
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 85 msg = "TX_TIMEOUT";
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 86 break;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 87 case LORAMAC_EVENT_INFO_STATUS_RX_TIMEOUT:
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 88 msg = "RX_TIMEOUT";
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 89 break;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 90 case LORAMAC_EVENT_INFO_STATUS_RX_ERROR:
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 91 msg = "RX_ERROR";
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 92 break;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 93 case LORAMAC_EVENT_INFO_STATUS_JOIN_FAIL:
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 94 msg = "JOIN_FAIL";
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 95 break;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 96 case LORAMAC_EVENT_INFO_STATUS_DOWNLINK_FAIL:
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 97 msg = "DOWNLINK_FAIL";
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 98 break;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 99 case LORAMAC_EVENT_INFO_STATUS_ADDRESS_FAIL:
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 100 msg = "ADDRESS_FAIL";
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 101 break;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 102 case LORAMAC_EVENT_INFO_STATUS_MIC_FAIL:
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 103 msg = "MIC_FAIL";
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 104 break;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 105 default:
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 106 break;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 107 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 108 logTrace("Event: %s", msg.c_str());
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 109
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 110 logTrace("Flags Tx: %d Rx: %d RxData: %d RxSlot: %d LinkCheck: %d JoinAccept: %d",
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 111 flags->Bits.Tx, flags->Bits.Rx, flags->Bits.RxData, flags->Bits.RxSlot, flags->Bits.LinkCheck, flags->Bits.JoinAccept);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 112 logTrace("Info: Status: %d ACK: %d Retries: %d TxDR: %d RxPort: %d RxSize: %d RSSI: %d SNR: %d Energy: %d Margin: %d Gateways: %d",
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 113 info->Status, info->TxAckReceived, info->TxNbRetries, info->TxDatarate, info->RxPort, info->RxBufferSize,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 114 info->RxRssi, info->RxSnr, info->Energy, info->DemodMargin, info->NbGateways);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 115 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 116 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 117
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 118 virtual void TxDone(uint8_t dr) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 119 RxPayloadSize = 0;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 120 LinkCheckAnsReceived = false;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 121 PacketReceived = false;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 122 AckReceived = false;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 123 PongReceived = false;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 124 TxNbRetries = 0;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 125
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 126 logDebug("mDotEvent - TxDone");
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 127 memset(&_flags, 0, sizeof(LoRaMacEventFlags));
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 128 memset(&_info, 0, sizeof(LoRaMacEventInfo));
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 129
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 130 _flags.Bits.Tx = 1;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 131 _info.TxDatarate = dr;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 132 _info.Status = LORAMAC_EVENT_INFO_STATUS_OK;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 133 Notify();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 134 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 135
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 136 void Notify() {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 137 MacEvent(&_flags, &_info);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 138 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 139
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 140 virtual void TxTimeout(void) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 141 logDebug("mDotEvent - TxTimeout");
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 142
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 143 _flags.Bits.Tx = 1;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 144 _info.Status = LORAMAC_EVENT_INFO_STATUS_TX_TIMEOUT;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 145 Notify();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 146 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 147
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 148 virtual void JoinAccept(uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 149 logDebug("mDotEvent - JoinAccept");
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 150
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 151 _flags.Bits.Tx = 0;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 152 _flags.Bits.JoinAccept = 1;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 153 _info.Status = LORAMAC_EVENT_INFO_STATUS_OK;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 154 Notify();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 155 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 156
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 157 virtual void JoinFailed(uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 158 logDebug("mDotEvent - JoinFailed");
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 159
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 160 _flags.Bits.Tx = 0;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 161 _flags.Bits.JoinAccept = 1;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 162 _info.Status = LORAMAC_EVENT_INFO_STATUS_JOIN_FAIL;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 163 Notify();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 164 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 165
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 166 virtual void MissedAck(uint8_t retries) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 167 logDebug("mDotEvent - MissedAck : retries %u", retries);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 168 TxNbRetries = retries;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 169 _info.TxNbRetries = retries;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 170 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 171
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 172 virtual void PacketRx(uint8_t port, uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr, lora::DownlinkControl ctrl, uint8_t slot, uint8_t retries = 0) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 173 logDebug("mDotEvent - PacketRx");
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 174 RxPort = port;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 175 PacketReceived = true;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 176
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 177 memcpy(RxPayload, payload, size);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 178 RxPayloadSize = size;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 179
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 180 if (ctrl.Bits.Ack) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 181 AckReceived = true;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 182 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 183
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 184 if (mts::MTSLog::getLogLevel() == mts::MTSLog::TRACE_LEVEL) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 185 std::string packet = mts::Text::bin2hexString(RxPayload, size);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 186 logTrace("Payload: %s", packet.c_str());
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 187 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 188
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 189 _flags.Bits.Tx = 0;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 190 _flags.Bits.Rx = 1;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 191 _flags.Bits.RxData = size > 0;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 192 _flags.Bits.RxSlot = slot;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 193 _info.RxBuffer = payload;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 194 _info.RxBufferSize = size;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 195 _info.RxPort = port;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 196 _info.RxRssi = rssi;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 197 _info.RxSnr = snr;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 198 _info.TxAckReceived = AckReceived;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 199 _info.TxNbRetries = retries;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 200 _info.Status = LORAMAC_EVENT_INFO_STATUS_OK;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 201 Notify();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 202 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 203
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 204 virtual void RxDone(uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr, lora::DownlinkControl ctrl, uint8_t slot) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 205 logDebug("mDotEvent - RxDone");
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 206 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 207
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 208 virtual void Pong(int16_t m_rssi, int8_t m_snr, int16_t s_rssi, int8_t s_snr) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 209 logDebug("mDotEvent - Pong");
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 210 PongReceived = true;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 211 PongRssi = s_rssi;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 212 PongSnr = s_snr;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 213 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 214
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 215 virtual void NetworkLinkCheck(int16_t m_rssi, int8_t m_snr, int8_t s_snr, uint8_t s_gateways) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 216 logDebug("mDotEvent - NetworkLinkCheck");
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 217 LinkCheckAnsReceived = true;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 218 DemodMargin = s_snr;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 219 NbGateways = s_gateways;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 220
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 221 _flags.Bits.Tx = 0;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 222 _flags.Bits.LinkCheck = 1;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 223 _info.RxRssi = m_rssi;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 224 _info.RxSnr = m_snr;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 225 _info.DemodMargin = s_snr;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 226 _info.NbGateways = s_gateways;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 227 _info.Status = LORAMAC_EVENT_INFO_STATUS_OK;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 228 Notify();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 229 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 230
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 231 virtual void RxTimeout(uint8_t slot) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 232 // logDebug("mDotEvent - RxTimeout");
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 233
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 234 _flags.Bits.Tx = 0;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 235 _flags.Bits.RxSlot = slot;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 236 _info.Status = LORAMAC_EVENT_INFO_STATUS_RX_TIMEOUT;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 237 Notify();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 238 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 239
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 240 virtual void RxError(uint8_t slot) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 241 logDebug("mDotEvent - RxError");
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 242
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 243 memset(&_flags, 0, sizeof(LoRaMacEventFlags));
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 244 memset(&_info, 0, sizeof(LoRaMacEventInfo));
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 245
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 246 _flags.Bits.RxSlot = slot;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 247 _info.Status = LORAMAC_EVENT_INFO_STATUS_RX_ERROR;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 248 Notify();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 249 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 250
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 251 virtual uint8_t MeasureBattery(void) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 252 return 255;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 253 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 254
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 255 bool LinkCheckAnsReceived;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 256 uint8_t DemodMargin;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 257 uint8_t NbGateways;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 258
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 259 bool PacketReceived;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 260 uint8_t RxPort;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 261 uint8_t RxPayload[255];
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 262 uint8_t RxPayloadSize;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 263
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 264 bool PongReceived;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 265 int16_t PongRssi;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 266 int16_t PongSnr;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 267
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 268 bool AckReceived;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 269 uint8_t TxNbRetries;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 270
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 271 LoRaMacEventFlags& Flags() {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 272 return _flags;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 273 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 274 LoRaMacEventInfo& Info() {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 275 return _info;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 276 }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 277
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 278 private:
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 279
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 280 LoRaMacEventFlags _flags;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 281 LoRaMacEventInfo _info;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 282
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 283 //
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 284 // /*!
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 285 // * MAC layer event callback prototype.
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 286 // *
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 287 // * \param [IN] flags Bit field indicating the MAC events occurred
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 288 // * \param [IN] info Details about MAC events occurred
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 289 // */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 290 // virtual void MacEvent(LoRaMacEventFlags *flags, LoRaMacEventInfo *info) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 291 // logDebug("mDotEvent");
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 292 //
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 293 // if (flags->Bits.Rx) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 294 // logDebug("Rx");
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 295 //
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 296 // // Event Object must delete RxBuffer
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 297 // delete[] info->RxBuffer;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 298 // }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 299 // }
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 300 //
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 301
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 302 };
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 303
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 304 #endif // __MDOT_EVENT_H__