fota lib for mdot

Dependents:   UQ_LoraWAN

Committer:
Jenkins@KEILDM1.dc.multitech.prv
Date:
Fri Sep 14 15:39:09 2018 -0500
Revision:
3:63d10f2375ea
fota lib updates

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 1 #include "mbed.h"
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 2 #if defined (TARGET_MTS_MDOT_F411RE)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 3 #include "spiffs.h"
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 4 #include "SpiFlash25.h"
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 5 #else
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 6 #include "xdot_eeprom.h"
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 7 #endif /* TARGET_MTS_MDOT_F411RE */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 8 #include "mDot.h"
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 9 #include "ChannelPlan.h"
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 10 #include <stdint.h>
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 11 #include <string>
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 12 #include <vector>
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 13
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 14 #ifndef __LORA_CONFIG_H__
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 15 #define __LORA_CONFIG_H__
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 16
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 17 #if defined (TARGET_MTS_MDOT_F411RE)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 18 // this value represents the number of files you can have open at the same time
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 19 // adjust it according to your requirements
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 20 #define MAX_CONCURRENT_FDS 5
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 21
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 22 #define PAGE_SIZE 256
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 23 #define SECTOR_SIZE 64*1024
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 24 #define MEM_SIZE 2*1024*1024
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 25 #else
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 26 #define SETTINGS_ADDR 0x0000 // configuration is 1024 bytes (0x000-0x3FF)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 27 #define PROTECTED_ADDR 0x0400 // protected configuration is 256 bytes (0x400-0x4FF)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 28 #define SESSION_ADDR 0x0500 // session is 256 bytes (0x500-0x5FF)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 29 #define USER_ADDR 0x0800 // user space is 6*1024 bytes (0x800 - 0x1FFF)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 30 #endif /* TARGET_MTS_MDOT_F411RE */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 31
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 32 #define MULTICAST_SESSIONS 3
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 33 #define EUI_LENGTH 8
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 34 #define KEY_LENGTH 16
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 35 #define PASSPHRASE_LENGTH 128
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 36
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 37 // DON'T CHANGE THIS UNLESS YOU REALLY WANT TO
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 38 #define PROTECTED_RFU_SIZE 223
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 39
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 40 // PROTECTED SETTINGS SHOULD ALWAYS HAVE SIZE OF 256 BYTES
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 41 typedef struct {
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 42 uint8_t FrequencyBand;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 43 uint8_t DeviceEUI[EUI_LENGTH];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 44 uint8_t AppEUI[EUI_LENGTH];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 45 uint8_t AppKey[KEY_LENGTH];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 46 uint8_t RFU[PROTECTED_RFU_SIZE];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 47 } ProtectedSettings_t;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 48
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 49 // DON'T CHANGE THIS UNLESS YOU REALLY WANT TO
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 50 #define CONFIG_RFU_SIZE 361
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 51
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 52 // SETTINGS SHOULD ALWAYS HAVE SIZE OF 1024 BYTES
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 53 typedef struct {
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 54 uint8_t ConfigVersion;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 55
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 56 uint32_t SerialBaudRate;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 57 uint32_t DebugBaudRate;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 58 uint8_t StartUpMode;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 59
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 60 /* Network Settings */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 61 uint8_t NetworkEUI[EUI_LENGTH];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 62 uint8_t NetworkEUIPassphrase[PASSPHRASE_LENGTH];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 63 uint8_t NetworkKey[KEY_LENGTH];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 64 uint8_t NetworkKeyPassphrase[PASSPHRASE_LENGTH];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 65
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 66 uint32_t NetworkAddress;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 67 uint8_t NetworkSessionKey[KEY_LENGTH];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 68 uint8_t DataSessionKey[KEY_LENGTH];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 69
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 70 uint8_t JoinMode;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 71 uint8_t JoinRetries;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 72
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 73 /* Radio Settings */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 74
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 75 uint8_t ForwardErrorCorrection;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 76 uint8_t ACKAttempts;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 77 bool EnableEncryption;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 78 bool EnableCRC;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 79 bool EnableADR;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 80 bool EnableEcho;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 81 bool EnableVerbose;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 82
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 83 uint32_t TxFrequency;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 84 uint8_t TxDataRate;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 85 bool TxInverted;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 86 uint8_t TxPower;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 87 bool TxWait;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 88 uint8_t FrequencySubBand;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 89
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 90 uint32_t RxFrequency;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 91 uint8_t RxDataRate;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 92 bool RxInverted;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 93 uint8_t RxOutput;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 94
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 95 /* Serial Settings */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 96 uint32_t WakeInterval;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 97 uint16_t WakeTimeout;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 98 uint32_t WakeDelay;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 99
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 100 uint8_t PublicNetwork;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 101 uint8_t LinkCheckCount;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 102 uint8_t LinkCheckThreshold;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 103
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 104 uint8_t LogLevel;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 105 uint8_t JoinByteOrder;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 106
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 107 uint8_t WakePin;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 108 uint8_t WakeMode;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 109
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 110 uint8_t PreserveSessionOverReset;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 111
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 112 uint8_t JoinDelay;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 113 uint8_t RxDelay;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 114 uint8_t Port;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 115
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 116 uint8_t Class;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 117 int8_t AntennaGain;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 118
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 119 bool FlowControl;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 120 uint8_t Repeat;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 121
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 122 bool SerialClearOnError;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 123 uint8_t Rx2Datarate;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 124 uint8_t JoinRx1DatarateOffset; //!< Offset for datarate for first window
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 125 uint8_t JoinRx2DatarateIndex; //!< Datarate for second window
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 126
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 127 uint32_t Channels[16];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 128 uint8_t ChannelRanges[16];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 129
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 130 uint32_t JoinRx2Frequency; //!< Frequency used in second window
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 131
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 132 uint8_t MaxEIRP;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 133 uint8_t UlDwellTime;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 134 uint8_t DlDwellTime;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 135
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 136 uint8_t padding;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 137
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 138 uint32_t DlChannels[16];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 139
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 140 uint8_t LastPlan; //!< Channel plan from last saved configuration
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 141
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 142 int8_t lbtThreshold; //!< Listen before talk threshold
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 143 uint16_t lbtTimeUs; //!< Listen before talk time
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 144
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 145 // Multicast session address and keys
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 146 uint32_t MulticastAddress[MULTICAST_SESSIONS];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 147 uint8_t MulticastNetSessionKey[MULTICAST_SESSIONS][KEY_LENGTH];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 148 uint8_t MulticastAppSessionKey[MULTICAST_SESSIONS][KEY_LENGTH];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 149
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 150 uint8_t AutoSleep;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 151
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 152 uint8_t RFU[CONFIG_RFU_SIZE];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 153 } LoRaSettings_t;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 154
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 155 // DON'T CHANGE THIS UNLESS YOU REALLY WANT TO
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 156 #define SESSION_RFU_SIZE 2
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 157
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 158 // SESSION SETTINGS SHOULD ALWAYS HAVE SIZE OF 256 BYTES
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 159 typedef struct {
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 160 bool Joined;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 161 uint8_t Rx1DatarateOffset;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 162 uint8_t Rx2Datarate;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 163 uint8_t ChannelMask500k;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 164
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 165 uint32_t NetworkAddress;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 166
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 167 uint8_t NetworkKey[KEY_LENGTH];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 168 uint8_t DataKey[KEY_LENGTH];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 169
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 170 uint64_t ChannelMask;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 171
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 172 uint32_t Channels[16];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 173 uint8_t ChannelRanges[16];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 174
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 175 uint32_t UplinkCounter;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 176
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 177 uint8_t Rx1Delay;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 178 uint8_t Datarate;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 179 uint8_t TxPower;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 180 uint8_t Repeat;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 181
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 182 uint32_t Rx2Frequency;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 183
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 184 uint32_t DownlinkCounter;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 185
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 186 uint8_t MaxDutyCycle;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 187 uint8_t AdrAckCounter;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 188 uint8_t LinkFailCount;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 189 uint8_t FrequencySubBand;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 190
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 191 uint32_t NetworkId;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 192
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 193 bool ServerAckRequested;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 194 uint8_t DeviceClass;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 195
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 196 uint8_t CommandBufferIndex;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 197
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 198 uint8_t CommandBuffer[15];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 199
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 200 uint8_t UlDwellTime;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 201 uint8_t DlDwellTime;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 202
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 203 uint32_t DlChannels[16];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 204
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 205 uint8_t MaxEIRP;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 206
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 207 // Multicast session counter values
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 208 uint32_t MulticastCounters[MULTICAST_SESSIONS];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 209
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 210 uint8_t RFU[SESSION_RFU_SIZE];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 211
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 212 uint8_t LastPlan; //!< Channel plan from last saved session
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 213
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 214 } NetworkSession_t;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 215
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 216 class LoRaConfig {
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 217
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 218 public:
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 219
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 220 static const uint8_t EuiLength = EUI_LENGTH;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 221 static const uint8_t KeyLength = KEY_LENGTH;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 222 static const uint8_t PassPhraseLength = PASSPHRASE_LENGTH;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 223
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 224 enum JoinMode {
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 225 MANUAL,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 226 OTA,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 227 AUTO_OTA,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 228 PEER_TO_PEER
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 229 };
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 230
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 231 enum Mode {
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 232 COMMAND_MODE,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 233 SERIAL_MODE
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 234 };
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 235
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 236 enum RX_Output {
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 237 HEXADECIMAL,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 238 BINARY
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 239 };
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 240
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 241 enum DataRates {
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 242 DR0,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 243 DR1,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 244 DR2,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 245 DR3,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 246 DR4,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 247 DR5,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 248 DR6,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 249 DR7,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 250 DR8,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 251 DR9,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 252 DR10,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 253 DR11,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 254 DR12,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 255 DR13,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 256 DR14,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 257 DR15
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 258 };
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 259
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 260 enum FrequencySubBands {
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 261 FSB_ALL,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 262 FSB_1,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 263 FSB_2,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 264 FSB_3,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 265 FSB_4,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 266 FSB_5,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 267 FSB_6,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 268 FSB_7,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 269 FSB_8
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 270 };
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 271
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 272 enum JoinByteOrder {
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 273 LSB,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 274 MSB
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 275 };
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 276
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 277 static const uint32_t BaudRates[];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 278 static const std::string DRS[];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 279 static const uint32_t DefaultBaudRate;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 280
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 281 uint32_t ValidateBaudRate(uint32_t rate);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 282
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 283 LoRaConfig(lora::ChannelPlan *plan);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 284 ~LoRaConfig();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 285
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 286 bool Save();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 287 bool SaveSession();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 288 bool SaveProtected();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 289
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 290 #if defined (TARGET_MTS_MDOT_F411RE)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 291 void EnablePVD();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 292 bool PVDO();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 293 #endif /* TARGET_MTS_MDOT_F411RE */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 294
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 295 void Mount();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 296 void Load();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 297 void Default();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 298 void DefaultSession();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 299 void DefaultProtected();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 300
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 301 uint8_t PublicNetwork();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 302 void PublicNetwork(uint8_t val);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 303
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 304 uint8_t* DeviceEUI();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 305 void DeviceEUI(uint8_t* devEUI);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 306
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 307 const uint8_t* AppEUI();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 308 void AppEUI(const uint8_t* appEUI);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 309
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 310 const uint8_t* AppKey();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 311 void AppKey(const uint8_t* appKey);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 312
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 313 uint8_t* NetworkEUI();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 314 void NetworkEUI(const uint8_t* networkEUI);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 315
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 316 uint8_t* NetworkEUIPassphrase();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 317 void NetworkEUIPassphrase(uint8_t* networkEUIPassphrase, uint8_t length);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 318
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 319 uint8_t* NetworkKey();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 320 void NetworkKey(const uint8_t* networkKey);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 321
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 322 uint8_t* NetworkKeyPassphrase();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 323 void NetworkKeyPassphrase(uint8_t* networkKeyPassphrase, uint8_t length);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 324
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 325 uint32_t NetworkAddress();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 326 void NetworkAddress(uint32_t addr);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 327
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 328 uint8_t* NetworkSessionKey();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 329 void NetworkSessionKey(uint8_t* networkSessionKey);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 330
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 331 uint8_t* DataSessionKey();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 332 void DataSessionKey(uint8_t* dataSessionKey);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 333
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 334 uint8_t JoinMode();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 335 void JoinMode(uint8_t mode);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 336
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 337 uint8_t JoinRetries();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 338 void JoinRetries(uint8_t retries);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 339
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 340 uint8_t LinkCheckCount();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 341 void LinkCheckCount(uint8_t count);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 342
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 343 uint8_t LinkCheckThreshold();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 344 void LinkCheckThreshold(uint8_t count);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 345
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 346 uint8_t ForwardErrorCorrection();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 347 void ForwardErrorCorrection(uint8_t bytes);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 348
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 349 uint8_t ACKAttempts();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 350 void ACKAttempts(uint8_t attempts);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 351
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 352 bool EnableEncryption();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 353 void EnableEncryption(uint8_t enable);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 354
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 355 bool EnableCRC();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 356 void EnableCRC(uint8_t enable);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 357
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 358 bool EnableADR();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 359 void EnableADR(uint8_t enable);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 360
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 361 bool EnableEcho();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 362 void EnableEcho(uint8_t enable);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 363
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 364 bool EnableVerbose();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 365 void EnableVerbose(uint8_t enable);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 366
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 367 uint8_t TxDataRate();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 368 void TxDataRate(uint8_t rate);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 369
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 370 uint8_t TxPower();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 371 void TxPower(uint8_t power);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 372
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 373 uint8_t FrequencyBand();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 374 void FrequencyBand(uint8_t band);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 375
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 376 uint8_t FrequencySubBand();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 377 void FrequencySubBand(uint8_t band);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 378
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 379 uint32_t TxFrequency();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 380 void TxFrequency(uint32_t freq);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 381
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 382 bool TxInverted();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 383 void TxInverted(bool enable);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 384
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 385 bool TxWait();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 386 void TxWait(bool timeout);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 387
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 388 uint32_t RxFrequency();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 389 void RxFrequency(uint32_t freq);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 390
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 391 bool RxInverted();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 392 void RxInverted(bool enable);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 393
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 394 uint8_t RxOutput();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 395 void RxOutput(uint8_t type);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 396
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 397 uint8_t RxDataRate();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 398 void RxDataRate(uint8_t rate);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 399
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 400 uint8_t Rx2DataRate();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 401 void Rx2DataRate(uint8_t rate);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 402
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 403 uint8_t StartUpMode();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 404 void StartUpMode(uint8_t mode);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 405
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 406 /* Serial Settings */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 407 uint32_t SerialBaudRate();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 408 void SerialBaudRate(uint32_t rate);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 409
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 410 uint32_t WakeInterval();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 411 void WakeInterval(uint32_t interval);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 412
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 413 uint32_t WakeDelay();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 414 void WakeDelay(uint32_t delay);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 415
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 416 uint16_t WakeTimeout();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 417 void WakeTimeout(uint16_t timeout);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 418
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 419 uint8_t WakePin();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 420 void WakePin(uint8_t pin);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 421
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 422 uint8_t WakeMode();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 423 void WakeMode(uint8_t mode);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 424
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 425 uint32_t DebugBaudRate();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 426 void DebugBaudRate(uint32_t baud);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 427
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 428 bool Joined();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 429 void Joined(bool val);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 430
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 431 uint32_t* Channels();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 432
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 433 uint32_t* DownlinkChannels();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 434
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 435 uint8_t* ChannelRanges();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 436
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 437 uint8_t* SessionDataKey();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 438 void SessionDataKey(uint8_t* key);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 439
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 440 uint8_t* SessionNetworkKey();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 441 void SessionNetworkKey(uint8_t* key);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 442
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 443 uint32_t SessionNetworkAddress();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 444 void SessionNetworkAddress(uint32_t addr);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 445
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 446 uint8_t SessionDatarate();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 447 void SessionDatarate(uint8_t datarate);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 448
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 449 uint8_t SessionTxPower();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 450 void SessionTxPower(uint8_t power);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 451
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 452 uint8_t SessionRepeat();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 453 void SessionRepeat(uint8_t repeat);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 454
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 455 uint8_t SessionRxDelay();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 456 void SessionRxDelay(uint8_t delay);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 457
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 458 uint8_t SessionRx1DatarateOffset();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 459 void SessionRx1DatarateOffset(uint8_t offset);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 460
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 461 uint8_t SessionRx2Datarate();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 462 void SessionRx2Datarate(uint8_t datarate);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 463
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 464 uint32_t SessionRx2Frequency();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 465 void SessionRx2Frequency(uint32_t frequency);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 466
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 467 uint64_t SessionChannelMask();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 468 void SessionChannelMask(uint64_t mask);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 469
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 470 uint8_t Session500kMask();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 471 void Session500kMask(uint8_t mask);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 472
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 473 uint32_t* SessionChannels();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 474
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 475 uint32_t* SessionDownlinkChannels();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 476
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 477 uint8_t* SessionChannelRanges();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 478
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 479 uint32_t SessionUplinkCounter();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 480 void SessionUplinkCounter(uint32_t count);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 481
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 482 uint32_t SessionDownlinkCounter();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 483 void SessionDownlinkCounter(uint32_t count);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 484
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 485 uint8_t SessionAdrAckCounter();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 486 void SessionAdrAckCounter(uint8_t count);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 487
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 488 uint8_t SessionLinkFailCount();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 489 void SessionLinkFailCount(uint8_t count);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 490
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 491 uint8_t SessionFrequencySubBand();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 492 void SessionFrequencySubBand(uint8_t band);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 493
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 494 bool SessionServerAckRequested();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 495 void SessionServerAckRequested(bool val);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 496
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 497 uint32_t SessionNetworkId();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 498 void SessionNetworkId(uint32_t id);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 499
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 500 uint8_t SessionDeviceClass();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 501 void SessionDeviceClass(uint8_t cls);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 502
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 503 uint8_t* SessionCommandBuffer();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 504 void SessionCommandBuffer(uint8_t* buffer);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 505
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 506 uint8_t SessionCommandBufferIndex();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 507 void SessionCommandBufferIndex(uint8_t index);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 508
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 509 uint8_t SessionMaxDutyCycle();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 510 void SessionMaxDutyCycle(uint8_t duty);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 511
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 512 uint8_t SessionUplinkDwelltime();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 513 void SessionUplinkDwelltime(uint8_t dwell);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 514
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 515 uint8_t SessionDownlinkDwelltime();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 516 void SessionDownlinkDwelltime(uint8_t dwell);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 517
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 518 uint8_t SessionMaxEIRP();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 519 void SessionMaxEIRP(uint8_t pow);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 520
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 521 uint8_t LogLevel();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 522 void LogLevel(uint8_t level);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 523
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 524 uint8_t JoinByteOrder();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 525 void JoinByteOrder(uint8_t order);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 526
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 527 uint8_t PreserveSessionOverReset();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 528 void PreserveSessionOverReset(uint8_t);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 529
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 530 uint8_t JoinDelay();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 531 void JoinDelay(uint8_t delay);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 532
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 533 uint8_t JoinRx1DatarateOffset();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 534 void JoinRx1DatarateOffset(uint8_t offset);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 535
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 536 uint8_t JoinRx2DatarateIndex();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 537 void JoinRx2DatarateIndex(uint8_t datarate);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 538
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 539 uint32_t JoinRx2Frequency();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 540 void JoinRx2Frequency(uint32_t freq);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 541
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 542 uint8_t RxDelay();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 543 void RxDelay(uint8_t delay);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 544
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 545 uint8_t Port();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 546 void Port(uint8_t port);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 547
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 548 uint8_t Class();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 549 void Class(uint8_t cls);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 550
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 551 int8_t AntennaGain();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 552 void AntennaGain(int8_t gain);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 553
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 554 bool FlowControl();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 555 void FlowControl(bool enable);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 556
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 557 uint8_t Repeat();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 558 void Repeat(uint8_t repeat);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 559
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 560 bool SerialClearOnError();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 561 void SerialClearOnError(bool val);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 562
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 563 uint8_t LastPlan();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 564 uint8_t SessionLastPlan();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 565
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 566 void LbtTimeUs(uint16_t us);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 567 uint16_t LbtTimeUs();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 568 void LbtThreshold(int8_t rssi);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 569 int8_t LbtThreshold();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 570
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 571 uint32_t GetMulticastAddress(int i);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 572 uint8_t* GetMulticastNetSessionKey(int i);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 573 uint8_t* GetMulticastAppSessionKey(int i);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 574 uint32_t GetMulticastCounter(int i);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 575
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 576
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 577 void SetMulticastAddress(int i, uint32_t addr);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 578 void SetMulticastNetSessionKey(int i, const uint8_t* key);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 579 void SetMulticastAppSessionKey(int i, const uint8_t* key);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 580 void SetMulticastCounter(int i, uint32_t count);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 581
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 582 void AutoSleep(uint8_t enable);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 583 uint8_t AutoSleep();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 584
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 585 /*!
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 586 * AES encryption/decryption cipher network app ieee eui
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 587 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 588 static const uint8_t defaultNetworkEUI[EUI_LENGTH];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 589 /*!
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 590 * AES encryption/decryption cipher application key
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 591 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 592 static const uint8_t defaultNetworkKey[KEY_LENGTH];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 593
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 594 /*!
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 595 * AES encryption/decryption cipher network session key
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 596 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 597 static const uint8_t defaultNetworkSessionKey[KEY_LENGTH];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 598
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 599 /*!
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 600 * AES encryption/decryption cipher application session key
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 601 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 602 static const uint8_t defaultDataSessionKey[KEY_LENGTH];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 603
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 604 void Sleep();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 605 void Wakeup();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 606
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 607 void SetChannelPlan(lora::ChannelPlan *plan);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 608
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 609 #if defined (TARGET_MTS_MDOT_F411RE)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 610 mDot::mdot_file OpenUserFile(const char* file, int mode);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 611 bool SeekUserFile(mDot::mdot_file& file, size_t offset, int whence);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 612 int ReadUserFile(mDot::mdot_file& file, void* data, size_t length);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 613 int WriteUserFile(mDot::mdot_file& file, void* data, size_t length);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 614 bool CloseUserFile(mDot::mdot_file& file);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 615 bool MoveUserFile(mDot::mdot_file& file, const char* new_name);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 616
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 617 bool MoveUserFile(const char* file, const char* new_name);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 618 bool SaveUserFile(const char* file, void* data, uint32_t size);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 619 bool AppendUserFile(const char* file, void* data, uint32_t size);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 620 bool ReadUserFile(const char* file, void* data, uint32_t size);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 621 bool DeleteUserFile(const char* file);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 622 bool DeleteFile(const char* file);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 623
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 624 bool MoveUserFileToFirwareUpgrade(const char* file);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 625
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 626 std::vector<mDot::mdot_file> ListUserFiles();
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 627 #endif /* TARGET_MTS_MDOT_F411RE */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 628
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 629 private:
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 630 LoRaSettings_t _settings;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 631 ProtectedSettings_t _protected;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 632 NetworkSession_t _session;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 633 bool _dirty_settings;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 634
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 635 uint32_t _frequencyMin;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 636 uint32_t _frequencyMax;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 637
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 638 lora::ChannelPlan *_plan;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 639
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 640 #if defined (TARGET_MTS_MDOT_F411RE)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 641 // SpiFlash25 flash(MOSI, MISO, SCK, CS, W, HOLD);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 642 static SpiFlash25 _flash;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 643
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 644 mDot::mdot_file OpenFile(spiffs *fs, const char* file, int mode);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 645 bool SeekFile(spiffs *fs, mDot::mdot_file& file, size_t offset, int whence);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 646
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 647 int ReadFile(spiffs *fs, mDot::mdot_file& file, void* data, size_t length);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 648 int WriteFile(spiffs *fs, mDot::mdot_file& file, void* data, size_t length);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 649 int MoveFile(spiffs* fs, mDot::mdot_file& file, const char* new_name);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 650 bool CloseFile(spiffs *fs, mDot::mdot_file& file);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 651
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 652 bool AppendFile(spiffs *fs, const char* file, void* data, uint32_t size);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 653 bool SaveFile(spiffs *fs, const char* file, void* data, uint32_t size);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 654 bool ReadFile(spiffs *fs, const char* file, void* dest, uint32_t size);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 655 bool MoveFile(spiffs *fs, const char* file, const char* new_name);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 656
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 657 // glue code between SPI driver and filesystem
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 658 static int spi_read(unsigned int addr, unsigned int size, unsigned char* data);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 659 static int spi_write(unsigned int addr, unsigned int size, unsigned char* data);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 660 static int spi_erase(unsigned int addr, unsigned int size);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 661
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 662 static u8_t spiffs_work_buf[PAGE_SIZE * 2];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 663 static u8_t spiffs_fds[32 * MAX_CONCURRENT_FDS];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 664 static u8_t spiffs_cache_buf[(PAGE_SIZE + 32) * 4];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 665
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 666 u8_t _openFds;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 667
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 668 static spiffs _fs;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 669
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 670 static char file[];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 671 static char protected_file[];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 672 static char session_file[];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 673 static char user_dir[];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 674 #endif /* TARGET_MTS_MDOT_F411RE */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 675
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 676 };
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 677
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 678 #endif // __LORA_CONFIG_H__