Stable version of the xDot library for mbed 5. This version of the library is suitable for deployment scenarios.

Dependents:   Dot-Examples XDOT-Devicewise Dot-Examples-delujoc Dot-Examples_receive ... more

Fork of libxDot-dev-mbed5-deprecated by MultiTech

The Dot library provides a LoRaWan certified stack for LoRa communication using MultiTech mDot and xDot devices. The stack is compatible with mbed 5.

The name of the repository can be used to determine which device the stack was compiled for and if it's a development or production-ready build:

A changelog for the Dot library can be found here.

The Dot library version and the version of mbed-os it was compiled against can both be found in the commit message for that revision of the Dot library. Building your application with the same version of mbed-os as what was used to build the Dot library is highly recommended!

The Dot-Examples repository demonstrates how to use the Dot library in a custom application.

The mDot and xDot platform pages have lots of platform specific information and document potential issues, gotchas, etc, and provide instructions for getting started with development. Please take a look at the platform page before starting development as they should answer many questions you will have.

FOTA

Full FOTA support is only available with mDot, xDot does not have the required external flash. xDot can use the FOTA example to dynamically join a multicast session only. After joining the multicast session the received Fragmentation packets could be handed to a host MCU for processing and at completion the firmware can be loaded into the xDot using the bootloader and y-modem. See xDot Developer Guide.

  • Add the following code to allow Fota to use the Dot instance

examples/src/fota_example.cpp

    // Initialize FOTA singleton
    Fota::getInstance(dot);
  • Add fragmentation handling the the PacketRx event

examples/inc/RadioEvent.h

    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, uint32_t address, bool dupRx) {
        mDotEvent::PacketRx(port, payload, size, rssi, snr, ctrl, slot, retries, address, dupRx);

#if ACTIVE_EXAMPLE == FOTA_EXAMPLE
        if(port == 200 || port == 201 || port == 202) {
            Fota::getInstance()->processCmd(payload, port, size);
        }
#endif
    }

The FOTA implementation has a few differences from the LoRaWAN Protocol

  • Fragmentation Indexing starts at 0
  • McKEKey is 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
  • Start Time is a count-down in seconds to start of session
Committer:
Jenkins@KEILDM1.dc.multitech.prv
Date:
Thu Aug 29 08:40:49 2019 -0500
Revision:
18:d7332302f5f1
Parent:
16:4a382fe8f51b
Child:
19:aa5b1fcd05be
xdot-library revision 3.2.2-19-g285e497 and mbed-os revision mbed-os-5.13.4

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1 /**********************************************************************
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 2 * COPYRIGHT 2015 MULTI-TECH SYSTEMS, INC.
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 3 *
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 4 * Redistribution and use in source and binary forms, with or without modification,
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 5 * are permitted provided that the following conditions are met:
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 6 * 1. Redistributions of source code must retain the above copyright notice,
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 7 * this list of conditions and the following disclaimer.
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 8 * 2. Redistributions in binary form must reproduce the above copyright notice,
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 9 * this list of conditions and the following disclaimer in the documentation
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 10 * and/or other materials provided with the distribution.
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 11 * 3. Neither the name of MULTI-TECH SYSTEMS, INC. nor the names of its contributors
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 12 * may be used to endorse or promote products derived from this software
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 13 * without specific prior written permission.
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 14 *
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 18 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 21 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 22 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 23 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 25 *
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 26 ******************************************************************************
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 27 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 28
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 29 #ifndef MDOT_H
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 30 #define MDOT_H
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 31
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 32 #include "mbed.h"
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 33 #include "rtos.h"
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 34 #include "Mote.h"
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 35 #include <vector>
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 36 #include <map>
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 37 #include <string>
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 38
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 39 class mDotEvent;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 40 class LoRaConfig;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 41
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 42
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 43 class mDot {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 44 friend class mDotEvent;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 45
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 46 private:
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 47
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 48 mDot(lora::ChannelPlan* plan);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 49 ~mDot();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 50
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 51 void initLora();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 52
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 53 void setLastError(const std::string& str);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 54
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 55 static bool validateBaudRate(const uint32_t& baud);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 56 static bool validateFrequencySubBand(const uint8_t& band);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 57 bool validateDataRate(const uint8_t& dr);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 58
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 59 int32_t joinBase(const uint32_t& retries);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 60 int32_t sendBase(const std::vector<uint8_t>& data, const bool& confirmed = false, const bool& blocking = true, const bool& highBw = false);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 61 void waitForPacket();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 62 void waitForLinkCheck();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 63
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 64 mDot(const mDot&);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 65 mDot& operator=(const mDot&);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 66
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 67 uint32_t RTC_ReadBackupRegister(uint32_t RTC_BKP_DR);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 68 void RTC_WriteBackupRegister(uint32_t RTC_BKP_DR, uint32_t Data);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 69
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 70 void RTC_DisableWakeupTimer();
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 71 void RTC_EnableWakeupTimer();
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 72
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 73 void enterStopMode(const uint32_t& interval, const uint8_t& wakeup_mode = RTC_ALARM);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 74 void enterStandbyMode(const uint32_t& interval, const uint8_t& wakeup_mode = RTC_ALARM);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 75
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 76 static mDot* _instance;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 77
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 78 lora::Mote* _mote;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 79 LoRaConfig* _config;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 80 lora::Settings _settings;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 81 mDotEvent* _events;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 82
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 83 std::string _last_error;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 84 static const uint32_t _baud_rates[];
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 85
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 86 uint8_t _linkFailCount;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 87 uint8_t _class;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 88 InterruptIn* _wakeup;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 89 PinName _wakeup_pin;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 90
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 91 typedef enum {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 92 OFF,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 93 ON,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 94 BLINK,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 95 } state;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 96
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 97 public:
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 98
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 99 #if defined(TARGET_MTS_MDOT_F411RE)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 100 typedef enum {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 101 FM_APPEND = (1 << 0),
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 102 FM_TRUNC = (1 << 1),
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 103 FM_CREAT = (1 << 2),
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 104 FM_RDONLY = (1 << 3),
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 105 FM_WRONLY = (1 << 4),
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 106 FM_RDWR = (FM_RDONLY | FM_WRONLY),
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 107 FM_DIRECT = (1 << 5)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 108 } FileMode;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 109 #endif /* TARGET_MTS_MDOT_F411RE */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 110
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 111 typedef enum {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 112 MDOT_OK = 0,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 113 MDOT_INVALID_PARAM = -1,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 114 MDOT_TX_ERROR = -2,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 115 MDOT_RX_ERROR = -3,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 116 MDOT_JOIN_ERROR = -4,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 117 MDOT_TIMEOUT = -5,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 118 MDOT_NOT_JOINED = -6,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 119 MDOT_ENCRYPTION_DISABLED = -7,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 120 MDOT_NO_FREE_CHAN = -8,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 121 MDOT_TEST_MODE = -9,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 122 MDOT_NO_ENABLED_CHAN = -10,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 123 MDOT_AGGREGATED_DUTY_CYCLE = -11,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 124 MDOT_MAX_PAYLOAD_EXCEEDED = -12,
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 125 MDOT_LBT_CHANNEL_BUSY = -13,
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 126 MDOT_NOT_IDLE = -14,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 127 MDOT_ERROR = -1024,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 128 } mdot_ret_code;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 129
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 130 enum JoinMode {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 131 MANUAL = 0,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 132 OTA,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 133 AUTO_OTA,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 134 PEER_TO_PEER
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 135 };
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 136
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 137 enum Mode {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 138 COMMAND_MODE,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 139 SERIAL_MODE
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 140 };
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 141
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 142 enum RX_Output {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 143 HEXADECIMAL,
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 144 BINARY,
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 145 EXTENDED,
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 146 EXTENDED_HEX
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 147 };
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 148
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 149 enum DataRates {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 150 DR0,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 151 DR1,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 152 DR2,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 153 DR3,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 154 DR4,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 155 DR5,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 156 DR6,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 157 DR7,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 158 DR8,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 159 DR9,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 160 DR10,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 161 DR11,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 162 DR12,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 163 DR13,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 164 DR14,
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 165 DR15
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 166 };
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 167
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 168 enum FrequencySubBands {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 169 FSB_ALL,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 170 FSB_1,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 171 FSB_2,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 172 FSB_3,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 173 FSB_4,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 174 FSB_5,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 175 FSB_6,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 176 FSB_7,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 177 FSB_8
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 178 };
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 179
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 180 enum wakeup_mode {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 181 RTC_ALARM,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 182 INTERRUPT,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 183 RTC_ALARM_OR_INTERRUPT
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 184 };
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 185
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 186 enum UserBackupRegs {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 187 UBR0,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 188 UBR1,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 189 UBR2,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 190 UBR3,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 191 UBR4,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 192 UBR5,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 193 UBR6,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 194 UBR7,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 195 UBR8,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 196 UBR9
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 197 #if defined (TARGET_XDOT_L151CC)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 198 ,UBR10,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 199 UBR11,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 200 UBR12,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 201 UBR13,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 202 UBR14,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 203 UBR15,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 204 UBR16,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 205 UBR17,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 206 UBR18,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 207 UBR19,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 208 UBR20,
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 209 UBR21
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 210 #endif /* TARGET_XDOT_L151CC */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 211 };
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 212
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 213 #if defined(TARGET_MTS_MDOT_F411RE)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 214 typedef struct {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 215 int16_t fd;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 216 char name[33];
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 217 uint32_t size;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 218 } mdot_file;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 219 #endif /* TARGET_MTS_MDOT_F411RE */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 220
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 221 typedef struct {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 222 uint32_t Up;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 223 uint32_t Down;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 224 uint32_t Joins;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 225 uint32_t JoinFails;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 226 uint32_t MissedAcks;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 227 uint32_t CRCErrors;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 228 } mdot_stats;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 229
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 230 typedef struct {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 231 int16_t last;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 232 int16_t min;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 233 int16_t max;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 234 int16_t avg;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 235 } rssi_stats;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 236
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 237 typedef struct {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 238 int16_t last;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 239 int16_t min;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 240 int16_t max;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 241 int16_t avg;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 242 } snr_stats;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 243
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 244 typedef struct {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 245 bool status;
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 246 uint8_t dBm;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 247 uint32_t gateways;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 248 std::vector<uint8_t> payload;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 249 } link_check;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 250
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 251 typedef struct {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 252 int32_t status;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 253 int16_t rssi;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 254 int16_t snr;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 255 } ping_response;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 256
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 257 static std::string JoinModeStr(uint8_t mode);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 258 static std::string ModeStr(uint8_t mode);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 259 static std::string RxOutputStr(uint8_t format);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 260 static std::string DataRateStr(uint8_t rate);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 261 static std::string FrequencyBandStr(uint8_t band);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 262 static std::string FrequencySubBandStr(uint8_t band);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 263
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 264 #if defined(TARGET_MTS_MDOT_F411RE)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 265 uint32_t UserRegisters[10];
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 266 #else
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 267 uint32_t UserRegisters[22];
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 268 #endif /* TARGET_MTS_MDOT_F411RE */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 269
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 270 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 271 * Get a handle to the singleton object
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 272 * @param plan the channel plan to use
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 273 * @returns pointer to mDot object
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 274 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 275 static mDot* getInstance(lora::ChannelPlan* plan);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 276
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 277 /**
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 278 * Can only be used after a dot has
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 279 * configured with a plan
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 280 * @returns pointer to mDot object
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 281 */
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 282 static mDot* getInstance();
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 283
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 284 void setEvents(mDotEvent* events);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 285
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 286 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 287 *
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 288 * Get library version information
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 289 * @returns string containing library version information
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 290 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 291 std::string getId();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 292
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 293 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 294 * Get MTS LoRa version information
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 295 * @returns string containing MTS LoRa version information
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 296 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 297 std::string getMtsLoraId();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 298
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 299 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 300 * Perform a soft reset of the system
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 301 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 302 void resetCpu();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 303
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 304 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 305 * Reset config to factory default
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 306 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 307 void resetConfig();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 308
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 309 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 310 * Save config data to non volatile memory
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 311 * @returns true if success, false if failure
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 312 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 313 bool saveConfig();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 314
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 315 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 316 * Set the log level for the library
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 317 * options are:
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 318 * NONE_LEVEL - logging is off at this level
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 319 * FATAL_LEVEL - only critical errors will be reported
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 320 * ERROR_LEVEL
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 321 * WARNING_LEVEL
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 322 * INFO_LEVEL
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 323 * DEBUG_LEVEL
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 324 * TRACE_LEVEL - every detail will be reported
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 325 * @param level the level to log at
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 326 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 327 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 328 int32_t setLogLevel(const uint8_t& level);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 329
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 330 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 331 * Get the current log level for the library
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 332 * @returns current log level
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 333 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 334 uint8_t getLogLevel();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 335
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 336 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 337 * Seed pseudo RNG in LoRaMac layer, uses random value from radio RSSI reading by default
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 338 * @param seed for RNG
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 339 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 340 void seedRandom(uint32_t seed);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 341
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 342 /**
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 343 * @returns true if MAC command answers are ready to be sent
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 344 */
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 345 bool hasMacCommands();
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 346
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 347
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 348 uint8_t setChannelPlan(lora::ChannelPlan* plan);
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 349
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 350 lora::Settings* getSettings();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 351
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 352 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 353 * Returns boolean indicative of start-up from standby mode
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 354 * @returns true if dot woke from standby
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 355 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 356 bool getStandbyFlag();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 357
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 358 std::vector<uint16_t> getChannelMask();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 359
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 360 int32_t setChannelMask(uint8_t offset, uint16_t mask);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 361
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 362 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 363 * Add a channel
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 364 * @returns MDOT_OK
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 365 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 366 int32_t addChannel(uint8_t index, uint32_t frequency, uint8_t datarateRange);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 367
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 368 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 369 * Add a downlink channel
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 370 * @returns MDOT_OK
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 371 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 372 int32_t addDownlinkChannel(uint8_t index, uint32_t frequency);
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 373
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 374 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 375 * Get list of channel frequencies currently in use
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 376 * @returns vector of channels currently in use
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 377 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 378 std::vector<uint32_t> getChannels();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 379
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 380 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 381 * Get list of downlink channel frequencies currently in use
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 382 * @returns vector of channels currently in use
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 383 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 384 std::vector<uint32_t> getDownlinkChannels();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 385
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 386 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 387 * Get list of channel datarate ranges currently in use
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 388 * @returns vector of datarate ranges currently in use
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 389 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 390 std::vector<uint8_t> getChannelRanges();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 391
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 392 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 393 * Get list of channel frequencies in config file to be used as session defaults
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 394 * @returns vector of channels in config file
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 395 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 396 std::vector<uint32_t> getConfigChannels();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 397
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 398 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 399 * Get list of channel datarate ranges in config file to be used as session defaults
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 400 * @returns vector of datarate ranges in config file
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 401 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 402 std::vector<uint8_t> getConfigChannelRanges();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 403
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 404 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 405 * Get default frequency band
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 406 * @returns frequency band the device was manufactured for
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 407 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 408 uint8_t getDefaultFrequencyBand();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 409
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 410 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 411 * Set frequency sub band
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 412 * only applicable if frequency band is set for United States (FB_915)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 413 * sub band 0 will allow the radio to use all 64 channels
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 414 * sub band 1 - 8 will allow the radio to use the 8 channels in that sub band
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 415 * for use with Conduit gateway and MTAC_LORA, use sub bands 1 - 8, not sub band 0
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 416 * @param band the sub band to use (0 - 8)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 417 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 418 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 419 int32_t setFrequencySubBand(const uint8_t& band);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 420
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 421 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 422 * Get frequency sub band
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 423 * @returns frequency sub band currently in use
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 424 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 425 uint8_t getFrequencySubBand();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 426
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 427 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 428 * Get frequency band
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 429 * @returns frequency band (channel plan) currently in use
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 430 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 431 uint8_t getFrequencyBand();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 432
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 433 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 434 * Get channel plan name
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 435 * @returns name of channel plan currently in use
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 436 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 437 std::string getChannelPlanName();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 438
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 439 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 440 * Get the datarate currently in use within the MAC layer
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 441 * returns 0-15
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 442 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 443 uint8_t getSessionDataRate();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 444
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 445
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 446 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 447 * Get the current max EIRP used in the channel plan
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 448 * May be changed by the network server
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 449 * returns 0-36
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 450 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 451 uint8_t getSessionMaxEIRP();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 452
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 453 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 454 * Set the current max EIRP used in the channel plan
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 455 * May be changed by the network server
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 456 * accepts 0-36
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 457 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 458 void setSessionMaxEIRP(uint8_t max);
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 459
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 460 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 461 * Get the current downlink dwell time used in the channel plan
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 462 * May be changed by the network server
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 463 * returns 0-1
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 464 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 465 uint8_t getSessionDownlinkDwelltime();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 466
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 467 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 468 * Set the current downlink dwell time used in the channel plan
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 469 * May be changed by the network server
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 470 * accepts 0-1
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 471 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 472 void setSessionDownlinkDwelltime(uint8_t dwell);
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 473
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 474 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 475 * Get the current uplink dwell time used in the channel plan
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 476 * May be changed by the network server
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 477 * returns 0-1
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 478 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 479 uint8_t getSessionUplinkDwelltime();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 480
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 481 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 482 * Set the current uplink dwell time used in the channel plan
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 483 * May be changed by the network server
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 484 * accepts 0-1
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 485 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 486 void setSessionUplinkDwelltime(uint8_t dwell);
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 487
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 488 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 489 * Set the current downlink dwell time used in the channel plan
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 490 * May be changed by the network server
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 491 * accepts 0-1
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 492 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 493 uint32_t getListenBeforeTalkTime(uint8_t ms);
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 494
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 495 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 496 * Set the current downlink dwell time used in the channel plan
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 497 * May be changed by the network server
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 498 * accepts 0-1
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 499 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 500 void setListenBeforeTalkTime(uint32_t ms);
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 501
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 502 /**
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 503 * Set public network mode
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 504 * 0:PRIVATE_MTS, 1:PUBLIC_LORAWAN, 2:PRIVATE_LORAWAN
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 505 * PRIVATE_MTS - Sync Word 0x12, US/AU Downlink frequencies per Frequency Sub Band
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 506 * PUBLIC_LORAWAN - Sync Word 0x34
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 507 * PRIVATE_LORAWAN - Sync Word 0x12
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 508 *
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 509 * The default Join Delay is 5 seconds
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 510 * The default Join Delay for PRIVATE_MTS was 1 second in the previous release
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 511 * The Join Delay must be changed independently of Public Network setting
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 512 *
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 513 * @see lora::NetworkType
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 514 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 515 */
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 516 int32_t setPublicNetwork(const uint8_t& val);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 517
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 518 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 519 * Get public network mode
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 520 *
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 521 * The default Join Delay is 5 seconds
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 522 * The default Join Delay for PRIVATE_MTS was 1 second in the previous release
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 523 * The Join Delay must be changed independently of Public Network setting
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 524 *
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 525 * @see lora:NetworkType
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 526 * @returns 0:PRIVATE_MTS, 1:PUBLIC_LORAWAN, 2:PRIVATE_LORAWAN
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 527 */
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 528 uint8_t getPublicNetwork();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 529
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 530 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 531 * Get the device ID
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 532 * @returns vector containing the device ID (size 8)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 533 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 534 std::vector<uint8_t> getDeviceId();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 535
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 536 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 537 * Get the device port to be used for lora application data (1-223)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 538 * @returns port
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 539 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 540 uint8_t getAppPort();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 541
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 542 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 543 * Set the device port to be used for lora application data (1-223)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 544 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 545 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 546 int32_t setAppPort(uint8_t port);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 547
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 548 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 549 * Set the device class A, B or C
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 550 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 551 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 552 int32_t setClass(std::string newClass);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 553
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 554 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 555 * Get the device class A, B or C
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 556 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 557 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 558 std::string getClass();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 559
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 560 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 561 * Get the max packet length with current settings
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 562 * @returns max packet length
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 563 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 564 uint8_t getMaxPacketLength();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 565
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 566 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 567 * Set network address
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 568 * for use with MANUAL network join mode, will be assigned in OTA & AUTO_OTA modes
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 569 * @param addr a vector of 4 bytes
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 570 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 571 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 572 int32_t setNetworkAddress(const std::vector<uint8_t>& addr);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 573
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 574 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 575 * Get network address
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 576 * @returns vector containing network address (size 4)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 577 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 578 std::vector<uint8_t> getNetworkAddress();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 579
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 580 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 581 * Set network session key
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 582 * for use with MANUAL network join mode, will be assigned in OTA & AUTO_OTA modes
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 583 * @param key a vector of 16 bytes
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 584 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 585 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 586 int32_t setNetworkSessionKey(const std::vector<uint8_t>& key);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 587
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 588 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 589 * Get network session key
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 590 * @returns vector containing network session key (size 16)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 591 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 592 std::vector<uint8_t> getNetworkSessionKey();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 593
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 594 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 595 * Set data session key
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 596 * for use with MANUAL network join mode, will be assigned in OTA & AUTO_OTA modes
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 597 * @param key a vector of 16 bytes
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 598 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 599 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 600 int32_t setDataSessionKey(const std::vector<uint8_t>& key);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 601
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 602 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 603 * Get data session key
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 604 * @returns vector containing data session key (size 16)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 605 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 606 std::vector<uint8_t> getDataSessionKey();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 607
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 608 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 609 * Set network name
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 610 * for use with OTA & AUTO_OTA network join modes
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 611 * generates network ID (crc64 of name) automatically
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 612 * @param name a string of of at least 8 bytes and no more than 128 bytes
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 613 * @return MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 614 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 615 int32_t setNetworkName(const std::string& name);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 616
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 617 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 618 * Get network name
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 619 * @return string containing network name (size 8 to 128)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 620 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 621 std::string getNetworkName();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 622
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 623 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 624 * Set network ID
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 625 * for use with OTA & AUTO_OTA network join modes
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 626 * setting network ID via this function sets network name to empty
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 627 * @param id a vector of 8 bytes
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 628 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 629 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 630 int32_t setNetworkId(const std::vector<uint8_t>& id);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 631
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 632 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 633 * Get network ID
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 634 * @returns vector containing network ID (size 8)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 635 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 636 std::vector<uint8_t> getNetworkId();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 637
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 638 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 639 * Set network passphrase
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 640 * for use with OTA & AUTO_OTA network join modes
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 641 * generates network key (cmac of passphrase) automatically
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 642 * @param name a string of of at least 8 bytes and no more than 128 bytes
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 643 * @return MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 644 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 645 int32_t setNetworkPassphrase(const std::string& passphrase);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 646
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 647 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 648 * Get network passphrase
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 649 * @return string containing network passphrase (size 8 to 128)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 650 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 651 std::string getNetworkPassphrase();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 652
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 653 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 654 * Set network key
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 655 * for use with OTA & AUTO_OTA network join modes
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 656 * setting network key via this function sets network passphrase to empty
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 657 * @param id a vector of 16 bytes
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 658 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 659 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 660 int32_t setNetworkKey(const std::vector<uint8_t>& id);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 661
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 662 /**
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 663 * Get generic app key
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 664 * @returns a vector containing key (size 16)
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 665 */
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 666 std::vector<uint8_t> getGenAppKey();
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 667
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 668 /**
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 669 * Set generic app key
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 670 * for use with Multicast key exchange
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 671 * @param id a vector of 16 bytes
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 672 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 673 */
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 674 int32_t setGenAppKey(const std::vector<uint8_t>& id);
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 675
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 676 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 677 * Get network key
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 678 * @returns a vector containing network key (size 16)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 679 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 680 std::vector<uint8_t> getNetworkKey();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 681
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 682 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 683 * Set lorawan application EUI
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 684 * equivalent to setNetworkId
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 685 * @param eui application EUI (size 8)
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 686 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 687 int32_t setAppEUI(const uint8_t* eui);
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 688
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 689 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 690 * Get lorawan application EUI
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 691 * equivalent to getNetworkId
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 692 * @returns vector containing application EUI (size 8)
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 693 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 694 const uint8_t* getAppEUI();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 695
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 696 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 697 * Set lorawan application key
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 698 * equivalent to setNetworkKey
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 699 * @param eui application key (size 16)
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 700 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 701 int32_t setAppKey(const uint8_t* key);
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 702
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 703 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 704 * Set lorawan application key
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 705 * equivalent to getNetworkKey
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 706 * @returns eui application key (size 16)
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 707 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 708 const uint8_t* getAppKey();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 709
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 710 /**
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 711 * Set join nonce counter incremented with each Join Request
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 712 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 713 */
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 714 int32_t setJoinNonce(const uint16_t& nonce);
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 715
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 716 /**
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 717 * Get join nonce counter incremented with each Join Request
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 718 * @returns join nonce
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 719 */
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 720 uint16_t getJoinNonce();
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 721
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 722 /**
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 723 * Add a multicast session address and keys
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 724 * Downlink counter is set to 0
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 725 * Up to 8 MULTICAST_SESSIONS can be set
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 726 */
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 727 int32_t setMulticastSession(uint8_t index, uint32_t addr, const uint8_t* nsk, const uint8_t* ask);
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 728
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 729 /**
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 730 * Set multicast session info
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 731 * Up to 8 MULTICAST_SESSIONS
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 732 */
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 733 int32_t setMulticastAddress(uint8_t index, uint32_t addr);
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 734 int32_t setMulticastNetworkSessionKey(uint8_t index, const uint8_t* nsk);
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 735 int32_t setMulticastApplicationSessionKey(uint8_t index, const uint8_t* ask);
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 736
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 737 /**
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 738 * Set a multicast session counter
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 739 * Up to 8 MULTICAST_SESSIONS
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 740 */
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 741 int32_t setMulticastDownlinkCounter(uint8_t index, uint32_t count);
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 742
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 743 /**
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 744 * Get multicast session info
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 745 * Up to 8 MULTICAST_SESSIONS
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 746 */
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 747 uint32_t getMulticastAddress(uint8_t index);
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 748 int32_t getMulticastNetworkSessionKey(uint8_t index, uint8_t* nsk);
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 749 int32_t getMulticastApplicationSessionKey(uint8_t index, uint8_t* ask);
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 750 uint32_t getMulticastDownlinkCounter(uint8_t index);
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 751
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 752 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 753 * Attempt to join network
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 754 * each attempt will be made with a random datarate up to the configured datarate
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 755 * JoinRequest backoff between tries is enforced to 1% for 1st hour, 0.1% for 1-10 hours and 0.01% after 10 hours
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 756 * Check getNextTxMs() for time until next join attempt can be made
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 757 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 758 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 759 int32_t joinNetwork();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 760
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 761 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 762 * Attempts to join network once
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 763 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 764 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 765 int32_t joinNetworkOnce();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 766
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 767 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 768 * Resets current network session, essentially disconnecting from the network
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 769 * has no effect for MANUAL network join mode
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 770 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 771 void resetNetworkSession();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 772
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 773 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 774 * Restore saved network session from flash
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 775 * has no effect for MANUAL network join mode
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 776 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 777 void restoreNetworkSession();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 778
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 779 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 780 * Save current network session to flash
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 781 * has no effect for MANUAL network join mode
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 782 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 783 void saveNetworkSession();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 784
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 785 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 786 * Set number of times joining will retry each sub-band before changing
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 787 * to the next subband in US915 and AU915
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 788 * @param retries must be between 0 - 255
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 789 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 790 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 791 int32_t setJoinRetries(const uint8_t& retries);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 792
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 793 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 794 * Get number of times joining will retry each sub-band
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 795 * @returns join retries (0 - 255)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 796 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 797 uint8_t getJoinRetries();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 798
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 799 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 800 * Set network join mode
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 801 * MANUAL: set network address and session keys manually
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 802 * OTA: User sets network name and passphrase, then attempts to join
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 803 * AUTO_OTA: same as OTA, but network sessions can be saved and restored
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 804 * @param mode MANUAL, OTA, or AUTO_OTA
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 805 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 806 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 807 int32_t setJoinMode(const uint8_t& mode);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 808
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 809 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 810 * Get network join mode
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 811 * @returns MANUAL, OTA, or AUTO_OTA
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 812 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 813 uint8_t getJoinMode();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 814
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 815 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 816 * Get network join status
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 817 * @returns true if currently joined to network
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 818 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 819 bool getNetworkJoinStatus();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 820
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 821 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 822 * Do a network link check
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 823 * application data may be returned in response to a network link check command
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 824 * @returns link_check structure containing success, dBm above noise floor, gateways in range, and packet payload
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 825 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 826 link_check networkLinkCheck();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 827
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 828 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 829 * Set network link check count to perform automatic link checks every count packets
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 830 * only applicable if ACKs are disabled
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 831 * @param count must be between 0 - 255
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 832 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 833 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 834 int32_t setLinkCheckCount(const uint8_t& count);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 835
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 836 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 837 * Get network link check count
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 838 * @returns count (0 - 255)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 839 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 840 uint8_t getLinkCheckCount();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 841
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 842 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 843 * Set network link check threshold, number of link check failures or missed acks to tolerate
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 844 * before considering network connection lost
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 845 * @pararm count must be between 0 - 255
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 846 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 847 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 848 int32_t setLinkCheckThreshold(const uint8_t& count);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 849
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 850 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 851 * Get network link check threshold
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 852 * @returns threshold (0 - 255)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 853 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 854 uint8_t getLinkCheckThreshold();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 855
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 856 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 857 * Get/set number of failed link checks in the current session
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 858 * @returns count (0 - 255)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 859 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 860 uint8_t getLinkFailCount();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 861 int32_t setLinkFailCount(uint8_t count);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 862
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 863 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 864 * Set UpLinkCounter number of packets sent to the gateway during this network session (sequence number)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 865 * @returns MDOT_OK
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 866 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 867 int32_t setUpLinkCounter(uint32_t count);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 868
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 869 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 870 * Get UpLinkCounter
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 871 * @returns number of packets sent to the gateway during this network session (sequence number)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 872 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 873 uint32_t getUpLinkCounter();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 874
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 875 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 876 * Set UpLinkCounter number of packets sent by the gateway during this network session (sequence number)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 877 * @returns MDOT_OK
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 878 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 879 int32_t setDownLinkCounter(uint32_t count);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 880
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 881 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 882 * Get DownLinkCounter
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 883 * @returns number of packets sent by the gateway during this network session (sequence number)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 884 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 885 uint32_t getDownLinkCounter();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 886
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 887 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 888 * Enable/disable AES encryption
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 889 * AES encryption must be enabled for use with Conduit gateway and MTAC_LORA card
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 890 * @param on true for AES encryption to be enabled
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 891 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 892 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 893 int32_t setAesEncryption(const bool& on);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 894
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 895 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 896 * Get AES encryption
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 897 * @returns true if AES encryption is enabled
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 898 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 899 bool getAesEncryption();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 900
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 901 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 902 * Get RSSI stats
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 903 * @returns rssi_stats struct containing last, min, max, and avg RSSI in dB
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 904 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 905 rssi_stats getRssiStats();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 906
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 907 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 908 * Get SNR stats
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 909 * @returns snr_stats struct containing last, min, max, and avg SNR in cB
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 910 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 911 snr_stats getSnrStats();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 912
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 913 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 914 * Get ms until next free channel
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 915 * only applicable for European models, US models return 0
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 916 * @returns time (ms) until a channel is free to use for transmitting
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 917 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 918 uint32_t getNextTxMs();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 919
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 920 /**
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 921 * Get available bytes for payload
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 922 * @returns bytes
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 923 */
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 924 uint8_t getNextTxMaxSize();
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 925
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 926 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 927 * Get join delay in seconds
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 928 * Defaults to 5 seconds
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 929 * Must match join delay setting of the network server
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 930 *
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 931 * The default Join Delay is 5 seconds
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 932 * The default Join Delay for PRIVATE_MTS was 1 second in the previous release
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 933 *
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 934 * @returns number of seconds before join accept message is expected
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 935 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 936 uint8_t getJoinDelay();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 937
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 938 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 939 * Set join delay in seconds
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 940 * Defaults to 5 seconds
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 941 * Must match join delay setting of the network server
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 942 *
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 943 * The default Join Delay is 5 seconds
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 944 * The default Join Delay for PRIVATE_MTS was 1 second in the previous release
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 945 *
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 946 * @param delay number of seconds before join accept message is expected
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 947 * @return MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 948 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 949 uint32_t setJoinDelay(uint8_t delay);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 950
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 951 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 952 * Get join Rx1 datarate offset
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 953 * defaults to 0
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 954 * @returns offset
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 955 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 956 uint8_t getJoinRx1DataRateOffset();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 957
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 958 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 959 * Set join Rx1 datarate offset
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 960 * @param offset for datarate
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 961 * @return MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 962 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 963 uint32_t setJoinRx1DataRateOffset(uint8_t offset);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 964
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 965 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 966 * Get join Rx2 datarate
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 967 * defaults to US:DR8, AU:DR8, EU:DR0
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 968 * @returns datarate
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 969 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 970 uint8_t getJoinRx2DataRate();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 971
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 972 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 973 * Set join Rx2 datarate
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 974 * @param datarate
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 975 * @return MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 976 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 977 uint32_t setJoinRx2DataRate(uint8_t datarate);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 978
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 979 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 980 * Get join Rx2 frequency
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 981 * defaults US:923.3, AU:923.3, EU:869.525
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 982 * @returns frequency
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 983 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 984 uint32_t getJoinRx2Frequency();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 985
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 986 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 987 * Set join Rx2 frequency
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 988 * @param frequency
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 989 * @return MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 990 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 991 uint32_t setJoinRx2Frequency(uint32_t frequency);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 992
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 993 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 994 * Get rx delay in seconds
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 995 * Defaults to 1 second
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 996 * @returns number of seconds before response message is expected
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 997 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 998 uint8_t getRxDelay();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 999
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1000 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1001 * Set rx delay in seconds
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1002 * Defaults to 1 second
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1003 * @param delay number of seconds before response message is expected
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1004 * @return MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1005 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1006 uint32_t setRxDelay(uint8_t delay);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1007
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1008 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1009 * Get preserve session to save network session info through reset or power down in AUTO_OTA mode
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1010 * Defaults to off
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1011 * @returns true if enabled
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1012 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1013 bool getPreserveSession();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1014
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1015 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1016 * Set preserve session to save network session info through reset or power down in AUTO_OTA mode
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1017 * Defaults to off
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1018 * @param enable
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1019 * @return MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1020 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1021 uint32_t setPreserveSession(bool enable);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1022
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1023 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1024 * Get data pending
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1025 * only valid after sending data to the gateway
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1026 * @returns true if server has available packet(s)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1027 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1028 bool getDataPending();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1029
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1030 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1031 * Get ack requested
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1032 * only valid after sending data to the gateway
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1033 * @returns true if server has requested ack
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1034 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1035 bool getAckRequested();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1036
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1037 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1038 * Get is transmitting indicator
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1039 * @returns true if currently transmitting
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1040 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1041 bool getIsTransmitting();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1042
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1043 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1044 * Get is idle indicator
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1045 * @returns true if not currently transmitting, waiting or receiving
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1046 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1047 bool getIsIdle();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1048
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1049 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1050 * Set TX data rate
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1051 * data rates affect maximum payload size
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1052 * @param dr DR0-DR7 for Europe, DR0-DR4 for United States
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1053 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1054 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1055 int32_t setTxDataRate(const uint8_t& dr);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1056
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1057 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1058 * Get TX data rate
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1059 * @returns current TX data rate (DR0-DR15)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1060 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1061 uint8_t getTxDataRate();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1062
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1063 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1064 * Get a random value from the radio based on RSSI
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1065 * @returns randome value
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1066 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1067 uint32_t getRadioRandom();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1068
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1069 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1070 * Get data rate spreading factor and bandwidth
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1071 * EU868 Datarates
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1072 * ---------------
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1073 * DR0 - SF12BW125
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1074 * DR1 - SF11BW125
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1075 * DR2 - SF10BW125
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1076 * DR3 - SF9BW125
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1077 * DR4 - SF8BW125
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1078 * DR5 - SF7BW125
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1079 * DR6 - SF7BW250
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1080 * DR7 - FSK
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1081 *
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1082 * US915 Datarates
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1083 * ---------------
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1084 * DR0 - SF10BW125
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1085 * DR1 - SF9BW125
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1086 * DR2 - SF8BW125
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1087 * DR3 - SF7BW125
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1088 * DR4 - SF8BW500
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1089 *
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1090 * AU915 Datarates
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1091 * ---------------
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 1092 * DR0 - SF12BW125
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 1093 * DR1 - SF11BW125
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 1094 * DR2 - SF10BW125
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 1095 * DR3 - SF9BW125
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 1096 * DR4 - SF8BW125
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 1097 * DR5 - SF7BW125
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 1098 * DR6 - SF8BW500
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1099 *
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1100 * @returns spreading factor and bandwidth
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1101 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1102 std::string getDataRateDetails(uint8_t rate);
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1103
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1104 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1105 * Set TX power output of radio before antenna gain, default: 14 dBm
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1106 * actual output power may be limited by local regulations for the chosen frequency
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1107 * power affects maximum range
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1108 * @param power 2 dBm - 20 dBm
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1109 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1110 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1111 int32_t setTxPower(const uint32_t& power);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1112
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1113 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1114 * Get TX power
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1115 * @returns TX power (2 dBm - 20 dBm)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1116 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1117 uint32_t getTxPower();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1118
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1119 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1120 * Get configured gain of installed antenna, default: +3 dBi
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1121 * @returns gain of antenna in dBi
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1122 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1123 int8_t getAntennaGain();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1124
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1125 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1126 * Set configured gain of installed antenna, default: +3 dBi
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1127 * @param gain -127 dBi - 128 dBi
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1128 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1129 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1130 int32_t setAntennaGain(int8_t gain);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1131
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1132 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1133 * Enable/disable TX waiting for rx windows
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1134 * when enabled, send calls will block until a packet is received or RX timeout
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1135 * @param enable set to true if expecting responses to transmitted packets
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1136 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1137 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1138 int32_t setTxWait(const bool& enable);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1139
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1140 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1141 * Get TX wait
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1142 * @returns true if TX wait is enabled
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1143 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1144 bool getTxWait();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1145
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1146 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1147 * Cancel pending rx windows
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1148 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1149 void cancelRxWindow();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1150
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1151 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1152 * Get time on air
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1153 * @returns the amount of time (in ms) it would take to send bytes bytes based on current configuration
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1154 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1155 uint32_t getTimeOnAir(uint8_t bytes);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1156
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1157 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1158 * Get min frequency
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1159 * @returns minimum frequency based on current channel plan
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1160 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1161 uint32_t getMinFrequency();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1162
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1163 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1164 * Get max frequency
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1165 * @returns maximum frequency based on current channel plan
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1166 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1167 uint32_t getMaxFrequency();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1168
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1169 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1170 * Get min datarate
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1171 * @returns minimum datarate based on current channel plan
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1172 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1173 uint8_t getMinDatarate();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1174
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1175 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1176 * Get max datarate
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1177 * @returns maximum datarate based on current channel plan
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1178 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1179 uint8_t getMaxDatarate();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1180
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1181 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1182 * Get min datarate offset
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1183 * @returns minimum datarate offset based on current channel plan
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1184 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1185 uint8_t getMinDatarateOffset();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1186
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1187 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1188 * Get max datarate offset
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1189 * @returns maximum datarate based on current channel plan
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1190 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1191 uint8_t getMaxDatarateOffset();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1192
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1193 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1194 * Get min datarate
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1195 * @returns minimum datarate based on current channel plan
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1196 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1197 uint8_t getMinRx2Datarate();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1198
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1199 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1200 * Get max rx2 datarate
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1201 * @returns maximum rx2 datarate based on current channel plan
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1202 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1203 uint8_t getMaxRx2Datarate();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1204
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1205 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1206 * Get max tx power
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1207 * @returns maximum tx power based on current channel plan
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1208 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1209 uint8_t getMaxTxPower();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1210
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1211 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1212 * Get min tx power
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1213 * @returns minimum tx power based on current channel plan
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1214 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1215 uint8_t getMinTxPower();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1216
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1217 /**
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1218 * Set ping slot periodicity
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1219 * Specify the the number of ping slots in a given beacon interval
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1220 * Note: Must switch back to class A for the change to take effect
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1221 * @param exp - number_of_pings = 2^(7 - exp) where 0 <= exp <= 7
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1222 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1223 */
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1224 uint32_t setPingPeriodicity(uint8_t exp);
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1225
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1226 /**
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1227 * Get ping slot periodicity
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1228 * @returns exp = 7 - log2(number_of_pings)
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1229 */
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1230 uint8_t getPingPeriodicity();
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1231
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1232 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1233 *
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1234 * get/set adaptive data rate
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1235 * configure data rates and power levels based on signal to noise of packets received at gateway
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1236 * true == adaptive data rate is on
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1237 * set function returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1238 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1239 int32_t setAdr(const bool& on);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1240 bool getAdr();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1241
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1242 /**
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1243 * Set the ADR ACK Limit
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1244 * @param limit - ADR ACK limit
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 1245 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1246 */
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 1247 int32_t setAdrAckLimit(uint8_t limit);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1248
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1249 /**
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1250 * Get the ADR ACK Limit
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1251 * @returns ADR ACK limit
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1252 */
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 1253 uint8_t getAdrAckLimit();
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1254
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1255 /**
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1256 * Set the ADR ACK Delay
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1257 * @param delay - ADR ACK delay
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 1258 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1259 */
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 1260 int32_t setAdrAckDelay(uint8_t delay);
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1261
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1262 /**
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1263 * Get the ADR ACK Delay
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1264 * @returns ADR ACK delay
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1265 */
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 1266 uint8_t getAdrAckDelay();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1267
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1268 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1269 * Enable/disable CRC checking of packets
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1270 * CRC checking must be enabled for use with Conduit gateway and MTAC_LORA card
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1271 * @param on set to true to enable CRC checking
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1272 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1273 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1274 int32_t setCrc(const bool& on);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1275
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1276 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1277 * Get CRC checking
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1278 * @returns true if CRC checking is enabled
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1279 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1280 bool getCrc();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1281
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1282 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1283 * Set ack
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1284 * @param retries 0 to disable acks, otherwise 1 - 8
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1285 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1286 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1287 int32_t setAck(const uint8_t& retries);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1288
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1289 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1290 * Get ack
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1291 * @returns 0 if acks are disabled, otherwise retries (1 - 8)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1292 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1293 uint8_t getAck();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1294
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1295 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1296 * Set number of packet repeats for unconfirmed frames
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1297 * @param repeat 0 or 1 for no repeats, otherwise 2-15
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1298 * @returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1299 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1300 int32_t setRepeat(const uint8_t& repeat);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1301
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1302 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1303 * Get number of packet repeats for unconfirmed frames
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1304 * @returns 0 or 1 if no repeats, otherwise 2-15
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1305 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1306 uint8_t getRepeat();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1307
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1308 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1309 * Send data to the gateway
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1310 * validates data size (based on spreading factor)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1311 * @param data a vector of up to 242 bytes (may be less based on spreading factor)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1312 * @returns MDOT_OK if packet was sent successfully (ACKs disabled), or if an ACK was received (ACKs enabled)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1313 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1314 int32_t send(const std::vector<uint8_t>& data, const bool& blocking = true, const bool& highBw = false);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1315
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1316 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1317 * Inject mac command
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1318 * @param data a vector containing mac commands
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1319 * @returns MDOT_OK
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1320 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1321 int32_t injectMacCommand(const std::vector<uint8_t>& data);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1322
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1323 /**
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1324 * Clear MAC command buffer to be sent in next uplink
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1325 * @returns MDOT_OK
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1326 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1327 int32_t clearMacCommands();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1328
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1329 /**
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1330 * Get MAC command buffer to be sent in next uplink
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1331 * @returns command bytes
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1332 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1333 std::vector<uint8_t> getMacCommands();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1334
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1335 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1336 * Fetch data received from the gateway
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1337 * this function only checks to see if a packet has been received - it does not open a receive window
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1338 * send() must be called before recv()
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1339 * @param data a vector to put the received data into
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1340 * @returns MDOT_OK if packet was successfully received
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1341 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1342 int32_t recv(std::vector<uint8_t>& data);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1343
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1344 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1345 * Ping
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1346 * status will be MDOT_OK if ping succeeded
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1347 * @returns ping_response struct containing status, RSSI, and SNR
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1348 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1349 ping_response ping();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1350
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1351 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1352 * Get return code string
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1353 * @returns string containing a description of the given error code
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1354 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1355 static std::string getReturnCodeString(const int32_t& code);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1356
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1357 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1358 * Get last error
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1359 * @returns string explaining the last error that occured
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1360 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1361 std::string getLastError();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1362
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1363 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1364 * Go to sleep
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1365 * @param interval the number of seconds to sleep before waking up if wakeup_mode == RTC_ALARM or RTC_ALARM_OR_INTERRUPT, else ignored
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1366 * @param wakeup_mode RTC_ALARM, INTERRUPT, RTC_ALARM_OR_INTERRUPT
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1367 * if RTC_ALARM the real time clock is configured to wake the device up after the specified interval
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1368 * if INTERRUPT the device will wake up on the rising edge of the interrupt pin
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1369 * if RTC_ALARM_OR_INTERRUPT the device will wake on the first event to occur
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1370 * @param deepsleep if true go into deep sleep mode (lowest power, all memory and registers are lost, peripherals turned off)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1371 * else go into sleep mode (low power, memory and registers are maintained, peripherals stay on)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1372 *
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1373 * For the MDOT
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1374 * in sleep mode, the device can be woken up on an XBEE_DI (2-8) pin or by the RTC alarm
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1375 * in deepsleep mode, the device can only be woken up using the WKUP pin (PA0, XBEE_DIO7) or by the RTC alarm
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1376 * For the XDOT
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1377 * in sleep mode, the device can be woken up on GPIO (0-3), UART1_RX, WAKE or by the RTC alarm
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1378 * in deepsleep mode, the device can only be woken up using the WKUP pin (PA0, WAKE) or by the RTC alarm
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1379 * @returns MDOT_OK on success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1380 */
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1381 int32_t sleep(const uint32_t& interval, const uint8_t& wakeup_mode = RTC_ALARM, const bool& deepsleep = true);
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1382
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1383 /**
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1384 * Set auto sleep mode
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1385 * Auto sleep mode will automatically put the MCU to sleep after tx and in between receive windows
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1386 * Note: The MCU will go into a stop mode sleep in between rx windows. This means that
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1387 * peripherals such as timers will not function during the sleep intervals.
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1388 * @param enable - Flag to enable auto sleep mode
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1389 */
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1390 void setAutoSleep(bool enable);
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1391
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1392 /**
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1393 * Get auto sleep mode
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1394 * @returns 0 if sleep mode is disabled, 1 if it is enabled
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1395 */
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1396 uint8_t getAutoSleep();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1397
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1398 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1399 * Set wake pin
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1400 * @param pin the pin to use to wake the device from sleep mode
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1401 * For MDOT, XBEE_DI (2-8)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1402 * For XDOT, GPIO (0-3), UART1_RX, or WAKE
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1403 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1404 void setWakePin(const PinName& pin);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1405
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1406 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1407 * Get wake pin
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1408 * @returns the pin to use to wake the device from sleep mode
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1409 * For MDOT, XBEE_DI (2-8)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1410 * For XDOT, GPIO (0-3), UART1_RX, or WAKE
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1411 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1412 PinName getWakePin();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1413
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1414 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1415 * Write data in a user backup register
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1416 * @param register one of UBR0 through UBR9 for MDOT, one of UBR0 through UBR21 for XDOT
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1417 * @param data user data to back up
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1418 * @returns true if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1419 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1420 bool writeUserBackupRegister(uint32_t reg, uint32_t data);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1421
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1422 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1423 * Read data in a user backup register
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1424 * @param register one of UBR0 through UBR9 for MDOT, one of UBR0 through UBR21 for XDOT
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1425 * @param data gets set to content of register
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1426 * @returns true if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1427 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1428 bool readUserBackupRegister(uint32_t reg, uint32_t& data);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1429
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1430 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1431 * Set LBT time in us
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1432 * @param ms time in us
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1433 * @returns true if success
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1434 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1435 bool setLbtTimeUs(uint16_t us);
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1436
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1437 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1438 * Get LBT time in us
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1439 * @returns LBT time in us
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1440 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1441 uint16_t getLbtTimeUs();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1442
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1443 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1444 * Set LBT threshold in dBm
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1445 * @param rssi threshold in dBm
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1446 * @returns true if success
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1447 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1448 bool setLbtThreshold(int8_t rssi);
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1449
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1450 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1451 * Get LBT threshold in dBm
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1452 * @returns LBT threshold in dBm
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1453 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1454 int8_t getLbtThreshold();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1455
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1456 /**
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1457 * Get Radio Frequency Offset
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1458 * Used for fine calibration of radio frequencies
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1459 * @returns frequency offset in MHz
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1460 */
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1461 int32_t getFrequencyOffset();
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1462 /**
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1463 * Get Radio Frequency Offset
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1464 * Used for fine calibration of radio frequencies
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1465 * @param offset frequency offset in MHz
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1466 */
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1467 void setFrequencyOffset(int32_t offset);
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1468
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1469 /**
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1470 * Get GPS time from network server
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1471 * Sends a DeviceTimeReq command to the network server
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1472 * @returns time since GPS epoch, 0 on failure
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1473 */
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1474 uint64_t getGPSTime();
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1475
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1476 #if defined(TARGET_MTS_MDOT_F411RE)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1477 ///////////////////////////////////////////////////////////////////
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1478 // Filesystem (Non Volatile Memory) Operation Functions for mDot //
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1479 ///////////////////////////////////////////////////////////////////
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1480
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1481 // Save user file data to flash
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1482 // file - name of file max 30 chars
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1483 // data - data of file
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1484 // size - size of file
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1485 // returns true if successful
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1486 bool saveUserFile(const char* file, void* data, uint32_t size);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1487
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1488 // Append user file data to flash
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1489 // file - name of file max 30 chars
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1490 // data - data of file
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1491 // size - size of file
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1492 // returns true if successful
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1493 bool appendUserFile(const char* file, void* data, uint32_t size);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1494
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1495 // Read user file data from flash
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1496 // file - name of file max 30 chars
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1497 // data - data of file
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1498 // size - size of file
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1499 // returns true if successful
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1500 bool readUserFile(const char* file, void* data, uint32_t size);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1501
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1502 // Move a user file in flash
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1503 // file - name of file
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1504 // new_name - new name of file
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1505 // returns true if successful
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1506 bool moveUserFile(const char* file, const char* new_name);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1507
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1508 // Delete user file data from flash
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1509 // file - name of file max 30 chars
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1510 // returns true if successful
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1511 bool deleteUserFile(const char* file);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1512
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1513 // Open user file in flash, max of 4 files open concurrently
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1514 // file - name of file max 30 chars
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1515 // mode - combination of FM_APPEND | FM_TRUNC | FM_CREAT |
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1516 // FM_RDONLY | FM_WRONLY | FM_RDWR | FM_DIRECT
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1517 // returns - mdot_file struct, fd field will be a negative value if file could not be opened
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1518 mDot::mdot_file openUserFile(const char* file, int mode);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1519
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1520 // Seek an open file
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1521 // file - mdot file struct
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1522 // offset - offset in bytes
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1523 // whence - where offset is based SEEK_SET, SEEK_CUR, SEEK_END
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1524 // returns true if successful
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1525 bool seekUserFile(mDot::mdot_file& file, size_t offset, int whence);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1526
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1527 // Read bytes from open file
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1528 // file - mdot file struct
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1529 // data - mem location to store data
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1530 // length - number of bytes to read
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1531 // returns - number of bytes read, negative if error
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1532 int readUserFile(mDot::mdot_file& file, void* data, size_t length);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1533
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1534 // Write bytes to open file
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1535 // file - mdot file struct
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1536 // data - data to write
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1537 // length - number of bytes to write
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1538 // returns - number of bytes written, negative if error
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1539 int writeUserFile(mDot::mdot_file& file, void* data, size_t length);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1540
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1541 // Close open file
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1542 // file - mdot file struct
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1543 // returns true if successful
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1544 bool closeUserFile(mDot::mdot_file& file);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1545
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1546 // List user files stored in flash
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1547 std::vector<mDot::mdot_file> listUserFiles();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1548
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1549 // Move file into the firmware upgrade path to be flashed on next boot
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1550 // file - name of file
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1551 // returns true if successful
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1552 bool moveUserFileToFirmwareUpgrade(const char* file);
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1553
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1554 // Return total size of all files saved in FLASH
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1555 // Does not include SPIFFS overhead
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1556 uint32_t getUsedSpace();
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 1557
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 1558 bool repairFlashFileSystem();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1559 #else
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1560 ///////////////////////////////////////////////////////////////
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1561 // EEPROM (Non Volatile Memory) Operation Functions for xDot //
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1562 ///////////////////////////////////////////////////////////////
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1563
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1564 // Write to EEPROM
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1565 // addr - address to write to (0 - 0x17FF)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1566 // data - data to write
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1567 // size - size of data
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1568 // returns true if successful
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1569 bool nvmWrite(uint16_t addr, void* data, uint16_t size);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1570
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1571 // Read from EEPROM
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1572 // addr - address to read from (0 - 0x17FF)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1573 // data - buffer for data
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1574 // size - size of buffer
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1575 // returns true if successful
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1576 bool nvmRead(uint16_t addr, void* data, uint16_t size);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1577 #endif /* TARGET_MTS_MDOT_F411RE */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1578
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1579 // get current statistics
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1580 // Join Attempts, Join Fails, Up Packets, Down Packets, Missed Acks
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1581 mdot_stats getStats();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1582
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1583 // reset statistics
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1584 // Join Attempts, Join Fails, Up Packets, Down Packets, Missed Acks
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1585 void resetStats();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1586
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1587 // Convert pin number 2-8 to pin name DIO2-DI8
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1588 static PinName pinNum2Name(uint8_t num);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1589
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1590 // Convert pin name DIO2-DI8 to pin number 2-8
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1591 static uint8_t pinName2Num(PinName name);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1592
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1593 // Convert pin name DIO2-DI8 to string
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1594 static std::string pinName2Str(PinName name);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1595
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1596 uint64_t crc64(uint64_t crc, const unsigned char *s, uint64_t l);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1597
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1598 /*************************************************************************
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1599 * The following functions are only used by the AT command application and
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1600 * should not be used by standard applications consuming the mDot library
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1601 ************************************************************************/
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1602
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1603 // set/get configured baud rate for command port
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1604 // only for use in conjunction with AT interface
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1605 // set function returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1606 int32_t setBaud(const uint32_t& baud);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1607 uint32_t getBaud();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1608
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1609 // set/get baud rate for debug port
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1610 // set function returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1611 int32_t setDebugBaud(const uint32_t& baud);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1612 uint32_t getDebugBaud();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1613
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1614 // set/get command terminal echo
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1615 // set function returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1616 int32_t setEcho(const bool& on);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1617 bool getEcho();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1618
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1619 // set/get command terminal verbose mode
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1620 // set function returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1621 int32_t setVerbose(const bool& on);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1622 bool getVerbose();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1623
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1624 // set/get startup mode
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1625 // COMMAND_MODE (default), starts up ready to accept AT commands
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1626 // SERIAL_MODE, read serial data and send it as LoRa packets
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1627 // set function returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1628 int32_t setStartUpMode(const uint8_t& mode);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1629 uint8_t getStartUpMode();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1630
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1631 int32_t setRxDataRate(const uint8_t& dr);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1632 uint8_t getRxDataRate();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1633
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1634 // get/set TX/RX frequency
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1635 // if set to 0, device will hop frequencies
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1636 // set function returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1637 int32_t setTxFrequency(const uint32_t& freq);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1638 uint32_t getTxFrequency();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1639 int32_t setRxFrequency(const uint32_t& freq);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1640 uint32_t getRxFrequency();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1641
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1642 // get/set RX output mode
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1643 // valid options are HEXADECIMAL, BINARY, and EXTENDED
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1644 // set function returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1645 int32_t setRxOutput(const uint8_t& mode);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1646 uint8_t getRxOutput();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1647
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1648 // get/set serial wake interval
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1649 // valid values are 2 s - INT_MAX (2147483647) s
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1650 // set function returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1651 int32_t setWakeInterval(const uint32_t& interval);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1652 uint32_t getWakeInterval();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1653
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1654 // get/set serial wake delay
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1655 // valid values are 2 ms - INT_MAX (2147483647) ms
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1656 // set function returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1657 int32_t setWakeDelay(const uint32_t& delay);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1658 uint32_t getWakeDelay();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1659
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1660 // get/set serial receive timeout
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1661 // valid values are 0 ms - 65000 ms
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1662 // set function returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1663 int32_t setWakeTimeout(const uint16_t& timeout);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1664 uint16_t getWakeTimeout();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1665
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1666 // get/set serial wake mode
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1667 // valid values are INTERRUPT or RTC_ALARM
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1668 // set function returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1669 int32_t setWakeMode(const uint8_t& delay);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1670 uint8_t getWakeMode();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1671
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1672 // get/set serial flow control enabled
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1673 // set function returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1674 int32_t setFlowControl(const bool& on);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1675 bool getFlowControl();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1676
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1677 // get/set serial clear on error
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1678 // if enabled the data read from the serial port will be discarded if it cannot be sent or if the send fails
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1679 // set function returns MDOT_OK if success
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1680 int32_t setSerialClearOnError(const bool& on);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1681 bool getSerialClearOnError();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1682
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1683 // MTS_RADIO_DEBUG_COMMANDS
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1684
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1685 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1686 * Disable Duty cycle
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1687 * enables or disables the duty cycle limitations
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1688 * **** ONLY TO BE USED FOR TESTINGS PURPOSES ****
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1689 * **** ALL DEPLOYABLE CODE MUST ADHERE TO LOCAL REGULATIONS ****
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1690 * **** THIS SETTING WILL NOT BE SAVED TO CONFIGURATION *****
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1691 * @param val true to disable duty-cycle (default:false)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1692 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1693 int32_t setDisableDutyCycle(bool val);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1694
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1695 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1696 * Disable Duty cycle
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1697 * **** ONLY TO BE USED FOR TESTINGS PURPOSES ****
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1698 * **** ALL DEPLOYABLE CODE MUST ADHERE TO LOCAL REGULATIONS ****
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1699 * **** THIS SETTING WILL NOT BE SAVED TO CONFIGURATION *****
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1700 * @return true if duty-cycle is disabled (default:false)
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1701 */
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1702 uint8_t getDisableDutyCycle();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1703
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1704 /**
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1705 * LBT RSSI
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1706 * @return the current RSSI on the configured frequency (SetTxFrequency) using configured LBT Time
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1707 */
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1708 int16_t lbtRssi();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1709
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1710 void openRxWindow(uint32_t timeout, uint8_t bandwidth = 0);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1711 void closeRxWindow();
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1712 void sendContinuous(bool enable=true, uint32_t timeout=0, uint32_t frequency=0, int8_t txpower=-1);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1713 int32_t setDeviceId(const std::vector<uint8_t>& id);
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1714 int32_t setProtectedAppEUI(const std::vector<uint8_t>& appEUI);
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1715 int32_t setProtectedAppKey(const std::vector<uint8_t>& appKey);
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 1716 std::vector<uint8_t> getProtectedAppEUI();
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 1717 std::vector<uint8_t> getProtectedAppKey();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1718 int32_t setDefaultFrequencyBand(const uint8_t& band);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1719 bool saveProtectedConfig();
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1720 // resets the radio/mac/link
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1721 void resetRadio();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1722 int32_t setRadioMode(const uint8_t& mode);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1723 std::map<uint8_t, uint8_t> dumpRegisters();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1724 void eraseFlash();
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1725
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1726 void setWakeupCallback(void (*function)(void));
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1727
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1728 template<typename T>
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1729 void setWakeupCallback(T *object, void (T::*member)(void)) {
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1730 _wakeup_callback.attach(object, member);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1731 }
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1732
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1733 lora::ChannelPlan* getChannelPlan(void);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1734
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1735 uint32_t setRx2DataRate(uint8_t dr);
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1736 uint8_t getRx2DataRate();
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1737
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1738 void mcGroupKeys(uint8_t *mcKeyEncrypt, uint32_t addr, uint8_t groupId, uint32_t frame_count);
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1739 private:
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1740
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1741 void sleep_ms(uint32_t interval,
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1742 uint8_t wakeup_mode = RTC_ALARM,
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1743 bool deepsleep = true);
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1744
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1745
Jenkins@KEILDM1.dc.multitech.prv 16:4a382fe8f51b 1746 void wakeup();
Jenkins@KEILDM1.dc.multitech.prv 14:f0c24ce93427 1747
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1748 mdot_stats _stats;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1749
Jenkins@KEILDM1.dc.multitech.prv 18:d7332302f5f1 1750 Callback<void()> _wakeup_callback;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1751
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1752 bool _standbyFlag;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1753 bool _testMode;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1754 uint8_t _savedPort;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1755 void handleTestModePacket();
Jenkins@KEILDM1.dc.multitech.prv 10:1e831990a669 1756 lora::ChannelPlan* _plan;
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1757 };
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1758
Jenkins@KEILDM1.dc.multitech.prv 2:4569491293d7 1759 #endif