Exportable version of WizziLab's modem driver.

Dependents:   modem_ref_helper

Committer:
marin_wizzi
Date:
Fri Oct 29 13:54:43 2021 +0000
Revision:
67:e458db8402dc
Parent:
65:c7749f9b6009
had to be commited for Scanner test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jeej 19:701d5669f2e9 1 /// @copyright
Jeej 19:701d5669f2e9 2 /// ========================================================================={{{
Jeej 19:701d5669f2e9 3 /// Copyright (c) 2013-2016 WizziLab /
Jeej 19:701d5669f2e9 4 /// All rights reserved /
Jeej 19:701d5669f2e9 5 /// =========================================================================}}}
Jeej 19:701d5669f2e9 6 /// @endcopyright
Jeej 19:701d5669f2e9 7
Jeej 19:701d5669f2e9 8 // =======================================================================
Jeej 19:701d5669f2e9 9 /// @file modem_ref.h
Jeej 19:701d5669f2e9 10 /// @brief Wizzilab Modem Reference Driver Implementation
Jeej 19:701d5669f2e9 11 /// Source code should be disclosable and easily portable to
Jeej 19:701d5669f2e9 12 /// any architecture.
Jeej 19:701d5669f2e9 13 // =======================================================================
Jeej 19:701d5669f2e9 14
Jeej 56:67e3d9608403 15 #ifndef __MODEM_REF_H__
Jeej 56:67e3d9608403 16 #define __MODEM_REF_H__
Jeej 19:701d5669f2e9 17
Jeej 56:67e3d9608403 18 #include "mbed.h"
Jeej 19:701d5669f2e9 19 #include "hal_types.h"
Jeej 19:701d5669f2e9 20
Jeej 19:701d5669f2e9 21 #include "alp_spec.h"
Jeej 19:701d5669f2e9 22 #include "alp_helpers.h"
Jeej 59:3b38b5f499db 23 #include "alp_payload.h"
Jeej 19:701d5669f2e9 24
Jeej 19:701d5669f2e9 25 // Stuff depending on implementation
Jeej 19:701d5669f2e9 26 #ifdef _ARCH_WIZZILAB_
Jeej 19:701d5669f2e9 27 // Map debug features on Wizzilab's kernel
Jeej 19:701d5669f2e9 28 #include "kal.h"
Jeej 19:701d5669f2e9 29 #define L_API (1 << 1)
Jeej 19:701d5669f2e9 30 #define L_URC (1 << 2)
Jeej 19:701d5669f2e9 31 #define L_SER (1 << 3)
Jeej 19:701d5669f2e9 32 #define ASSERT(c,...) kal_dbg_assert(c, ##__VA_ARGS__)
Jeej 19:701d5669f2e9 33 #define DPRINT(l,...) do {kal_dbg_cprintf(TLEV(7,l), ##__VA_ARGS__);} while(0)
Jeej 19:701d5669f2e9 34 #define MALLOC(s) kal_malloc(s)
Jeej 19:701d5669f2e9 35 #define FREE(s) kal_free(s)
Jeej 19:701d5669f2e9 36 #else
Jeej 19:701d5669f2e9 37 // TODO Map on host architecture
Jeej 19:701d5669f2e9 38 #endif
Jeej 19:701d5669f2e9 39
Jeej 19:701d5669f2e9 40 // Maximum number of concurrent 'users'
Jeej 19:701d5669f2e9 41 #define MAX_USER_NB (8)
Jeej 19:701d5669f2e9 42
Jeej 19:701d5669f2e9 43 // Depending on Host needs/capacities, choose variable-size buffer allocation style
Jeej 19:701d5669f2e9 44 #if 1 // Auto stack alloc
Jeej 19:701d5669f2e9 45 #define MAX_CMD_BUFFER_SIZE 256
Jeej 19:701d5669f2e9 46 #define ALLOC_BUFFER(_t,_b,_size) _t _b[MAX_CMD_BUFFER_SIZE];
Jeej 19:701d5669f2e9 47 //#define ALLOC_BUFFER(_t,_b,_size) _t _b[_size]; // If VLA available...
Jeej 19:701d5669f2e9 48 #define DEALLOC_BUFFER(_b)
Jeej 19:701d5669f2e9 49 #else // Dynamic alloc
Jeej 19:701d5669f2e9 50 #define ALLOC_BUFFER(_t,_b,_size) _t* _b = MALLOC(_size);
Jeej 19:701d5669f2e9 51 #define DEALLOC_BUFFER(_b) FREE(_b);
Jeej 19:701d5669f2e9 52 #endif
Jeej 19:701d5669f2e9 53
Jeej 19:701d5669f2e9 54 //======================================================================
Jeej 19:701d5669f2e9 55 // Modem Serial Link input/output functions
Jeej 19:701d5669f2e9 56 //==================================================================={{{
Jeej 19:701d5669f2e9 57 // ALP protocol is conveyed on serial link encapsulated in WizziCom (WC)
Jeej 19:701d5669f2e9 58 // packets.
Jeej 19:701d5669f2e9 59 // WC Serial protocol:
Jeej 19:701d5669f2e9 60 // +--------------+--------+--------+--------+---- - - - - - - - - - - --------+
Jeej 19:701d5669f2e9 61 // | SYNC | LEN | SEQ | FLOWID | PAYLOAD |
Jeej 19:701d5669f2e9 62 // +--------------+--------+--------+--------+---- - - - - - - - - - - --------+
Jeej 19:701d5669f2e9 63 // | 2 bytes | 1 byte | 1 byte | 1 byte | LEN bytes |
Jeej 19:701d5669f2e9 64 // |<------------>|<------>|<------>|<------>|<--- - - - - - - - - - - ------->|
Jeej 19:701d5669f2e9 65 #define WC_SYNC_BYTE_0 0x01
Jeej 19:701d5669f2e9 66 #define WC_SYNC_BYTE_1 0x1F
Jeej 19:701d5669f2e9 67 #define WC_HEADER_SIZE 5
Jeej 19:701d5669f2e9 68
Jeej 19:701d5669f2e9 69 #define WC_SYNC0_OFFSET 0
Jeej 19:701d5669f2e9 70 #define WC_SYNC1_OFFSET 1
Jeej 19:701d5669f2e9 71 #define WC_LEN_OFFSET 2
Jeej 19:701d5669f2e9 72 #define WC_SEQ_OFFSET 3
Jeej 19:701d5669f2e9 73 #define WC_FLOWID_OFFSET 4
Jeej 19:701d5669f2e9 74
Jeej 32:0d95f66f654a 75 // =======================================================================
Jeej 32:0d95f66f654a 76 // wm_cfg_t
Jeej 32:0d95f66f654a 77 // -----------------------------------------------------------------------
Jeej 32:0d95f66f654a 78 /// Modem Configuration
Jeej 32:0d95f66f654a 79 // ===================================================================={{{
Jeej 32:0d95f66f654a 80 TYPEDEF_STRUCT_PACKED
Jeej 32:0d95f66f654a 81 {
Jeej 32:0d95f66f654a 82 /// Automatic openning of D7A stack
Jeej 57:5444cfda9889 83 u8 autostart_d7a;
Jeej 32:0d95f66f654a 84 /// Automatic 'Join' of LoRaWAN stack
Jeej 57:5444cfda9889 85 u8 autostart_lwan;
Jeej 32:0d95f66f654a 86 /// Automatic procedure start time (sec)
Jeej 57:5444cfda9889 87 u16 autostart_delay_s;
Jeej 32:0d95f66f654a 88 /// Debug COM port number (N/A:KAL_COM_NULL)
Jeej 57:5444cfda9889 89 u8 dbg_com;
Jeej 32:0d95f66f654a 90 } wm_cfg_t;
Jeej 32:0d95f66f654a 91 //}}}
Jeej 32:0d95f66f654a 92
Jeej 19:701d5669f2e9 93 // Input:Serial-traffic coming from Modem must be packetized in WC chuncks
Jeej 19:701d5669f2e9 94 // before being sent to modem-driver through 'modem_input'.
Jeej 19:701d5669f2e9 95 // An example deserializer can be found in "wc_deserialized.c".
Jeej 19:701d5669f2e9 96 //======================================================================
Jeej 56:67e3d9608403 97 // modem_ref_input
Jeej 19:701d5669f2e9 98 //----------------------------------------------------------------------
Jeej 19:701d5669f2e9 99 /// @brief Parse packets and handles calls to relevant callbacks.
Jeej 19:701d5669f2e9 100 /// @param flowid : WizziCom FlowID.
Jeej 19:701d5669f2e9 101 /// @param payload : pointer to payload buffer.
Jeej 19:701d5669f2e9 102 /// @param size : payload size in bytes.
Jeej 19:701d5669f2e9 103 //======================================================================
Jeej 57:5444cfda9889 104 void modem_ref_input(u8 flowid, u8* payload, u8 size);
Jeej 19:701d5669f2e9 105
Jeej 19:701d5669f2e9 106 // Output:Modem-driver sends data to Modem through calls to the 'send'
Jeej 56:67e3d9608403 107 // function passed in 'modem_ref_open'.
Jeej 19:701d5669f2e9 108 // 'send' must be provided by the host application.
Jeej 19:701d5669f2e9 109 //======================================================================
Jeej 19:701d5669f2e9 110 // fx_serial_send_t
Jeej 19:701d5669f2e9 111 //----------------------------------------------------------------------
Jeej 19:701d5669f2e9 112 /// @brief Send concatenation of 2 buffers of given size over serial link.
Jeej 19:701d5669f2e9 113 /// @param buffer1 : Pointer to the 1st data buffer to be sent
Jeej 19:701d5669f2e9 114 /// @param size1 : Size in bytes of the 1st buffer to be sent
Jeej 19:701d5669f2e9 115 /// @param buffer2 : Pointer to the 2nd data buffer to be sent
Jeej 19:701d5669f2e9 116 /// @param size2 : Size in bytes of the 2nd buffer to be sent
Jeej 19:701d5669f2e9 117 /// @return number of bytes sent.
Jeej 19:701d5669f2e9 118 /// @note either buffers can be of size zero.
Jeej 19:701d5669f2e9 119 /// @note buffer1 is used for WC header
Jeej 19:701d5669f2e9 120 /// @note buffer2 is used actual payload
Jeej 19:701d5669f2e9 121 //======================================================================
Jeej 57:5444cfda9889 122 typedef int (fx_serial_send_t) (u8 type, u8* buffer2, u8 size2);
Jeej 19:701d5669f2e9 123
Jeej 19:701d5669f2e9 124 //======================Low-Level-API================================}}}
Jeej 19:701d5669f2e9 125
Jeej 19:701d5669f2e9 126 //======================================================================
Jeej 19:701d5669f2e9 127 // High-level API that must be provided by the host application
Jeej 19:701d5669f2e9 128 //==================================================================={{{
Jeej 19:701d5669f2e9 129
Jeej 19:701d5669f2e9 130 //======================================================================
Jeej 19:701d5669f2e9 131 // fx_read_t
Jeej 19:701d5669f2e9 132 //----------------------------------------------------------------------
Jeej 19:701d5669f2e9 133 /// @brief Called when ALP-Read is requested by the modem.
Jeej 19:701d5669f2e9 134 /// Function must perform required actions to fullfil the request
Jeej 19:701d5669f2e9 135 /// then should call 'respond_read' (or 'respond' in case of error)
Jeej 19:701d5669f2e9 136 /// @param fid : File ID
Jeej 19:701d5669f2e9 137 /// @param offset : Access Offset in bytes
Jeej 19:701d5669f2e9 138 /// @param length : Access Size in bytes
Jeej 19:701d5669f2e9 139 /// @param id : ID of the request
Jeej 19:701d5669f2e9 140 //======================================================================
Jeej 57:5444cfda9889 141 typedef void (fx_read_t) (u8 action, u8 fid, u32 offset, u32 length, int id);
Jeej 19:701d5669f2e9 142
Jeej 19:701d5669f2e9 143 //======================================================================
Jeej 19:701d5669f2e9 144 // fx_write_t
Jeej 19:701d5669f2e9 145 //----------------------------------------------------------------------
Jeej 19:701d5669f2e9 146 /// @brief Called when ALP-Write is requested by the modem.
Jeej 19:701d5669f2e9 147 /// Function must perform required actions to fullfil the request
Jeej 19:701d5669f2e9 148 /// then should call 'respond'
Jeej 19:701d5669f2e9 149 /// @param fid : File ID
Jeej 19:701d5669f2e9 150 /// @param data : Pointer to the destination data buffer
Jeej 19:701d5669f2e9 151 /// @param offset : Access Offset in bytes
Jeej 19:701d5669f2e9 152 /// @param length : Access Size in bytes
Jeej 19:701d5669f2e9 153 /// @param id : ID of the request
Jeej 19:701d5669f2e9 154 //======================================================================
Jeej 57:5444cfda9889 155 typedef void (fx_write_t) (u8 action, u8 fid, void* data, u32 offset, u32 length, int id);
Jeej 19:701d5669f2e9 156
Jeej 19:701d5669f2e9 157 //======================================================================
Jeej 19:701d5669f2e9 158 // fx_read_fprop_t
Jeej 19:701d5669f2e9 159 //----------------------------------------------------------------------
Jeej 19:701d5669f2e9 160 /// @brief Called when ALP-Read-file-properties is requested by the modem.
Jeej 19:701d5669f2e9 161 /// Function must perform required actions to fullfil the request
Jeej 19:701d5669f2e9 162 /// then should call 'respond_fprop' (or 'respond' in case of error)
Jeej 19:701d5669f2e9 163 /// @param fid : File ID
Jeej 19:701d5669f2e9 164 /// @param id : ID of the request
Jeej 19:701d5669f2e9 165 //======================================================================
Jeej 57:5444cfda9889 166 typedef void (fx_read_fprop_t) (u8 action, u8 fid, int id);
Jeej 19:701d5669f2e9 167
Jeej 19:701d5669f2e9 168 //======================================================================
Jeej 19:701d5669f2e9 169 // fx_flush_t
Jeej 19:701d5669f2e9 170 //----------------------------------------------------------------------
Jeej 19:701d5669f2e9 171 /// @brief Called when ALP-Flush is requested by the modem.
Jeej 19:701d5669f2e9 172 /// Function must perform required actions to fullfil the request
Jeej 19:701d5669f2e9 173 /// then should call 'respond'
Jeej 19:701d5669f2e9 174 /// @param fid : File ID
Jeej 19:701d5669f2e9 175 /// @param id : ID of the request
Jeej 19:701d5669f2e9 176 //======================================================================
Jeej 57:5444cfda9889 177 typedef void (fx_flush_t) (u8 action, u8 fid, int id);
Jeej 19:701d5669f2e9 178
Jeej 19:701d5669f2e9 179 //======================================================================
Jeej 19:701d5669f2e9 180 // fx_delete_t
Jeej 19:701d5669f2e9 181 //----------------------------------------------------------------------
Jeej 19:701d5669f2e9 182 /// @brief Called when ALP-Delete is requested by the modem.
Jeej 19:701d5669f2e9 183 /// Function must perform required actions to fullfil the request
Jeej 19:701d5669f2e9 184 /// then should call 'respond'
Jeej 19:701d5669f2e9 185 /// @param fid : File ID
Jeej 19:701d5669f2e9 186 /// @param id : ID of the request
Jeej 19:701d5669f2e9 187 //======================================================================
Jeej 57:5444cfda9889 188 typedef void (fx_delete_t) (u8 action, u8 fid, int id);
Jeej 19:701d5669f2e9 189
Jeej 19:701d5669f2e9 190 //======================================================================
Jeej 19:701d5669f2e9 191 // fx_udata_t
Jeej 19:701d5669f2e9 192 //----------------------------------------------------------------------
Jeej 19:701d5669f2e9 193 /// @brief Called when Unsollicited Data is received by the Modem (i.e.
Jeej 19:701d5669f2e9 194 /// peer notifications etc).
Jeej 19:701d5669f2e9 195 /// @param data : Pointer to the data buffer
Jeej 19:701d5669f2e9 196 /// @param length : Data Size in bytes
Jeej 19:701d5669f2e9 197 //======================================================================
Jeej 57:5444cfda9889 198 typedef void (fx_udata_t) (alp_payload_t*);
Jeej 19:701d5669f2e9 199
Jeej 19:701d5669f2e9 200 //======================================================================
Jeej 19:701d5669f2e9 201 // fx_reset_t
Jeej 19:701d5669f2e9 202 //----------------------------------------------------------------------
Jeej 19:701d5669f2e9 203 /// @brief Called when RESET URC is generated by the modem.
Jeej 56:67e3d9608403 204 /// LDOWN URC is setup by the user through 'modem_ref_enable_urc'
Jeej 19:701d5669f2e9 205 /// @param ifid : Interface File ID from which LDOWN is issued
Jeej 19:701d5669f2e9 206 //======================================================================
Jeej 19:701d5669f2e9 207 typedef void (fx_reset_t) (void);
Jeej 19:701d5669f2e9 208
Jeej 19:701d5669f2e9 209 //======================================================================
Jeej 19:701d5669f2e9 210 // fx_boot_t
Jeej 19:701d5669f2e9 211 //----------------------------------------------------------------------
Jeej 19:701d5669f2e9 212 /// @brief Called when BOOT URC is generated by the modem.
Jeej 19:701d5669f2e9 213 /// @param cause : Cause of the boot 'H':Pin/Hardware reset
Jeej 19:701d5669f2e9 214 /// 'P':POR reset
Jeej 19:701d5669f2e9 215 /// 'S':Software reset
Jeej 19:701d5669f2e9 216 /// 'L':Low-power reset
Jeej 19:701d5669f2e9 217 /// 'W':Watchdog reset
Jeej 19:701d5669f2e9 218 /// @param nb_boot : Number of boots since last POR
Jeej 19:701d5669f2e9 219 //======================================================================
Jeej 57:5444cfda9889 220 typedef void (fx_boot_t) (u8 cause, u16 nb_boot);
Jeej 19:701d5669f2e9 221
Jeej 19:701d5669f2e9 222 // Set of functions passed together at modem openning
Jeej 19:701d5669f2e9 223 typedef struct {
Jeej 19:701d5669f2e9 224 // ALP File 'Action' callbacks
Jeej 19:701d5669f2e9 225 fx_read_t* read;
Jeej 19:701d5669f2e9 226 fx_write_t* write;
Jeej 19:701d5669f2e9 227 fx_read_fprop_t* read_fprop;
Jeej 19:701d5669f2e9 228 fx_flush_t* flush;
Jeej 19:701d5669f2e9 229 fx_delete_t* remove;
Jeej 19:701d5669f2e9 230 // 'URC' callbacks
Jeej 19:701d5669f2e9 231 fx_udata_t* udata;
Jeej 19:701d5669f2e9 232 fx_reset_t* reset;
Jeej 19:701d5669f2e9 233 fx_boot_t* boot;
Jeej 56:67e3d9608403 234 } modem_ref_callbacks_t;
Jeej 56:67e3d9608403 235
Jeej 19:701d5669f2e9 236 //======================High-Level-API===============================}}}
Jeej 19:701d5669f2e9 237
Jeej 19:701d5669f2e9 238 //======================================================================
Jeej 19:701d5669f2e9 239 // action_callback_t
Jeej 19:701d5669f2e9 240 //----------------------------------------------------------------------
Jeej 19:701d5669f2e9 241 /// @brief Type of function called on response(s) generated by an
Jeej 19:701d5669f2e9 242 /// 'action' function. Different functions of this kind can be
Jeej 19:701d5669f2e9 243 /// associated to different IDs through 'get_id'.
Jeej 19:701d5669f2e9 244 /// 'Action' function are subsequently called with relevant ID.
Jeej 19:701d5669f2e9 245 /// @param terminal : '1' at the last call for this ID, '0' otherwise
Jeej 19:701d5669f2e9 246 /// @param err : ALP Error code
Jeej 19:701d5669f2e9 247 /// @param id : ID of the request
Jeej 19:701d5669f2e9 248 //======================================================================
Jeej 65:c7749f9b6009 249 typedef void (action_callback_t) (u8 id);
Jeej 19:701d5669f2e9 250
Jeej 19:701d5669f2e9 251 //======================================================================
Jeej 56:67e3d9608403 252 // modem_ref_open
Jeej 19:701d5669f2e9 253 //----------------------------------------------------------------------
Jeej 19:701d5669f2e9 254 /// @brief Open Wizzilab Modem Driver
Jeej 19:701d5669f2e9 255 /// @param send : User function implementing serial output.
Jeej 19:701d5669f2e9 256 /// @param callbacks : Set of functions called by the driver upon
Jeej 19:701d5669f2e9 257 /// reception of commands
Jeej 19:701d5669f2e9 258 /// @return 0
Jeej 19:701d5669f2e9 259 //======================================================================
Jeej 57:5444cfda9889 260 void modem_ref_open(fx_serial_send_t* send, modem_ref_callbacks_t* callbacks);
Jeej 56:67e3d9608403 261 void modem_ref_close(void);
Jeej 61:820395fc5572 262 void modem_ref_set_boot_cb(fx_boot_t* boot_cb);
Jeej 19:701d5669f2e9 263
Jeej 19:701d5669f2e9 264 //======================================================================
Jeej 56:67e3d9608403 265 // modem_ref_get_id
Jeej 19:701d5669f2e9 266 //----------------------------------------------------------------------
Jeej 19:701d5669f2e9 267 /// @brief Request an ID to perform modem operations
Jeej 19:701d5669f2e9 268 /// @param cb : Function called on responses generated for
Jeej 19:701d5669f2e9 269 /// this ID.
Jeej 19:701d5669f2e9 270 /// @return Positive ID value, -1 if no more IDs available.
Jeej 19:701d5669f2e9 271 //======================================================================
Jeej 56:67e3d9608403 272 int modem_ref_get_id(action_callback_t* cb);
Jeej 19:701d5669f2e9 273
Jeej 19:701d5669f2e9 274 //======================================================================
Jeej 56:67e3d9608403 275 // modem_ref_free_id
Jeej 19:701d5669f2e9 276 //----------------------------------------------------------------------
Jeej 19:701d5669f2e9 277 /// @brief Release an ID
Jeej 19:701d5669f2e9 278 /// @param id : ID to release.
Jeej 19:701d5669f2e9 279 /// @return ID value, -1 if ID was not in use.
Jeej 19:701d5669f2e9 280 //======================================================================
Jeej 57:5444cfda9889 281 int modem_ref_free_id(u8 id);
Jeej 19:701d5669f2e9 282
Jeej 19:701d5669f2e9 283 //======================================================================
Jeej 19:701d5669f2e9 284 // "Action" functions performing requests to the modem
Jeej 19:701d5669f2e9 285 //==================================================================={{{
Jeej 19:701d5669f2e9 286
Jeej 57:5444cfda9889 287 void modem_ref_alp(void* itf, alp_payload_t* alp_user, alp_payload_t** alp_rsp, int id);
Jeej 19:701d5669f2e9 288
Jeej 19:701d5669f2e9 289 //==========================Action===================================}}}
Jeej 19:701d5669f2e9 290
Jeej 19:701d5669f2e9 291 //======================================================================
Jeej 19:701d5669f2e9 292 // "Response" functions to be called-back on requests from the modem
Jeej 19:701d5669f2e9 293 //==================================================================={{{
Jeej 57:5444cfda9889 294 void modem_ref_respond(u8 action, s8 status, int id);
Jeej 57:5444cfda9889 295 void modem_ref_respond_fprop(u8 fid, alp_file_header_t* hdr, int id);
Jeej 57:5444cfda9889 296 void modem_ref_respond_read(u8 fid, void* data, u32 offset, u32 length, int id);
Jeej 19:701d5669f2e9 297 //==========================Response=================================}}}
Jeej 19:701d5669f2e9 298
Jeej 19:701d5669f2e9 299
Jeej 19:701d5669f2e9 300 //=======================================================================
Jeej 19:701d5669f2e9 301 // Modem File IDs are mapped from 64 to 127
Jeej 19:701d5669f2e9 302 // These files are mandatory when building an application that
Jeej 19:701d5669f2e9 303 // uses Wizzilab's D7A Stack, so it will be included in all "Modem"
Jeej 19:701d5669f2e9 304 // applications.
Jeej 19:701d5669f2e9 305 //=======================================================================
Jeej 30:74aa36420c61 306 // Modem Config/Status
Jeej 56:67e3d9608403 307 #define FID_WM_REV 2 // aka D7A_FID_FIRMWARE_VERSION
Jeej 56:67e3d9608403 308 #define FID_WM_RFU_64 64
Jeej 56:67e3d9608403 309 #define FID_HOST_REV 65
Jeej 56:67e3d9608403 310 #define FID_WM_SCRATCH 66
Jeej 56:67e3d9608403 311 #define FID_WM_STATUS 67
Jeej 56:67e3d9608403 312 #define FID_WM_CFG 68
Jeej 56:67e3d9608403 313 #define FID_WM_HWCFG 69
Jeej 56:67e3d9608403 314 #define FID_WM_CTRL 70
Jeej 56:67e3d9608403 315 #define FID_WM_LED_CFG 71
Jeej 56:67e3d9608403 316 #define FID_WM_DEBUG 72
Jeej 56:67e3d9608403 317 #define FID_WM_POWER_STATUS 73 // For GW power supervisor reporting
Jeej 56:67e3d9608403 318 #define FID_WM_TLEV 74 // Trace levels
Jeej 56:67e3d9608403 319 #define FID_WM_USER_STORAGE 75 // Big generic file for APPs to store data since we can't create permanent files on NRF52.
Jeej 56:67e3d9608403 320 #define FID_WM_INVT 76 // Inventory commands
Jeej 56:67e3d9608403 321 #define FID_WM_RFU_77 77
Jeej 56:67e3d9608403 322 #define FID_WM_RFU_78 78
Jeej 56:67e3d9608403 323 #define FID_WM_RFU_79 79
Jeej 19:701d5669f2e9 324
Jeej 56:67e3d9608403 325 // LORAWAN Stack
Jeej 56:67e3d9608403 326 #define FID_LWAN_CFG 96
Jeej 56:67e3d9608403 327 #define FID_LWAN_NLS 97
Jeej 56:67e3d9608403 328 #define FID_LWAN_ITF 98 // XXX useless
Jeej 56:67e3d9608403 329 #define FID_LWAN_STATUS 99
Jeej 30:74aa36420c61 330
Jeej 19:701d5669f2e9 331 // Action files
Jeej 56:67e3d9608403 332 #define FID_ACTP_RPT_FULL 100
Jeej 56:67e3d9608403 333 #define FID_ACTP_RPT_PART 101
Jeej 30:74aa36420c61 334
Jeej 56:67e3d9608403 335 // Unallocated FIDs
Jeej 56:67e3d9608403 336 #define FID_UNUSED_102 102
Jeej 56:67e3d9608403 337 #define FID_UNUSED_103 103
Jeej 56:67e3d9608403 338 #define FID_UNUSED_104 104
Jeej 56:67e3d9608403 339 #define FID_UNUSED_105 105
Jeej 56:67e3d9608403 340 #define FID_UNUSED_106 106
Jeej 56:67e3d9608403 341 #define FID_UNUSED_107 107
Jeej 56:67e3d9608403 342 #define FID_UNUSED_108 108
Jeej 56:67e3d9608403 343 #define FID_UNUSED_109 109
Jeej 56:67e3d9608403 344
Jeej 56:67e3d9608403 345 #define IFID_REPORT 110
Jeej 30:74aa36420c61 346
Jeej 56:67e3d9608403 347 // Unallocated FIDs
Jeej 56:67e3d9608403 348 #define FID_UNUSED_111 111
Jeej 56:67e3d9608403 349 #define FID_UNUSED_112 112
Jeej 56:67e3d9608403 350 #define FID_UNUSED_113 113
Jeej 56:67e3d9608403 351 #define FID_UNUSED_114 114
Jeej 56:67e3d9608403 352 #define FID_UNUSED_115 115
Jeej 56:67e3d9608403 353 #define FID_UNUSED_116 116
Jeej 56:67e3d9608403 354 #define FID_UNUSED_117 117
Jeej 56:67e3d9608403 355 #define FID_UNUSED_118 118
Jeej 56:67e3d9608403 356 #define FID_UNUSED_119 119
Jeej 56:67e3d9608403 357 #define FID_UNUSED_120 120
Jeej 56:67e3d9608403 358 #define FID_UNUSED_121 121
Jeej 56:67e3d9608403 359 #define FID_UNUSED_122 122
Jeej 56:67e3d9608403 360 #define FID_UNUSED_123 123
Jeej 30:74aa36420c61 361
Jeej 30:74aa36420c61 362 // Modem Security protocols
Jeej 56:67e3d9608403 363 #define FID_WM_CHALLENGE 124
Jeej 30:74aa36420c61 364
Jeej 30:74aa36420c61 365 // Modem CUP
Jeej 56:67e3d9608403 366 #define FID_CUP_CFG_BCAST 125
Jeej 56:67e3d9608403 367 #define FID_CUP_CFG 126
Jeej 56:67e3d9608403 368 #define FID_CUP_CODE 127
Jeej 30:74aa36420c61 369
Jeej 30:74aa36420c61 370 // HST CUP
Jeej 56:67e3d9608403 371 #define FID_APP_CUP_CFG_BCAST 252
Jeej 56:67e3d9608403 372 #define FID_APP_CUP_CFG 253
Jeej 56:67e3d9608403 373 #define FID_APP_CUP_CODE 254
Jeej 56:67e3d9608403 374
Jeej 56:67e3d9608403 375 // System status
Jeej 56:67e3d9608403 376 #define FID_SYS_STATUS 255
Jeej 30:74aa36420c61 377
Jeej 30:74aa36420c61 378 #endif
Jeej 30:74aa36420c61 379
Jeej 56:67e3d9608403 380 // vim:fdm=marker:fdc=2