Trond Enger / d7a_1x

Fork of d7a_1x by WizziLab

Committer:
Jeej
Date:
Tue Dec 13 09:49:24 2016 +0000
Revision:
74:30180585b09e
Parent:
73:3b7353741c94
Child:
76:fda2e34ff19d
Added New field for spec 1.1 in sp_cfg

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jeej 43:28202405094d 1 #ifndef _D7A_H_
Jeej 43:28202405094d 2 #define _D7A_H_
Jeej 43:28202405094d 3
Jeej 68:d2778c6abf1a 4 #include "rtos.h"
Jeej 43:28202405094d 5 #include "d7a_common.h"
Jeej 43:28202405094d 6
Jeej 43:28202405094d 7 //======================================================================
Jeej 43:28202405094d 8 // Defines
Jeej 43:28202405094d 9 //======================================================================
Jeej 43:28202405094d 10
Jeej 43:28202405094d 11 #define D7A_UID_LEN (8)
Jeej 43:28202405094d 12
Jeej 71:f03727ff0f99 13 // Predefined Access classes
Jeej 71:f03727ff0f99 14 // Normal Rate
Jeej 71:f03727ff0f99 15 #define D7A_XCL_ENDPOINT_NO (0x01)
Jeej 71:f03727ff0f99 16 #define D7A_XCL_SUBCONTROLLER_NO (0x02)
Jeej 71:f03727ff0f99 17 #define D7A_XCL_GATEWAY_NO (0x21)
Jeej 71:f03727ff0f99 18 // Low Rate
Jeej 71:f03727ff0f99 19 #define D7A_XCL_ENDPOINT_LO (0x11)
Jeej 71:f03727ff0f99 20 #define D7A_XCL_SUBCONTROLLER_LO (0x12)
Jeej 71:f03727ff0f99 21 #define D7A_XCL_GATEWAY_LO (0x31)
Jeej 71:f03727ff0f99 22 // High Rate
Jeej 71:f03727ff0f99 23 #define D7A_XCL_ENDPOINT_HI (0x41)
Jeej 71:f03727ff0f99 24 #define D7A_XCL_SUBCONTROLLER_HI (0x42)
Jeej 71:f03727ff0f99 25 #define D7A_XCL_GATEWAY_HI (0x51)
Jeej 55:5ea18a3a01b9 26
Jeej 58:38a366236bda 27 #define D7A_CTF_VAL(mant,exp) ((uint8_t)(mant|(exp<<5)))
Jeej 58:38a366236bda 28
Jeej 58:38a366236bda 29 #define D7A_NBID(nbid) (nbid >= 32)? D7A_CTF_VAL(8,1) : D7A_CTF_VAL(nbid,0)
Jeej 58:38a366236bda 30
Jeej 67:9ac9d109b80a 31 #define D7A_ROOT_KEY_SIZE (8) // 16 bytes max
Jeej 67:9ac9d109b80a 32
Jeej 71:f03727ff0f99 33 // Predefined interface files
Jeej 71:f03727ff0f99 34 #define FIRST_IFT_FILE (108)
Jeej 71:f03727ff0f99 35
Jeej 71:f03727ff0f99 36 #define D7A_ITF_ONESHOT (108)
Jeej 71:f03727ff0f99 37 #define D7A_ITF_SINGLE (109)
Jeej 71:f03727ff0f99 38 #define D7A_ITF_REPORT (110)
Jeej 71:f03727ff0f99 39 #define D7A_ITF_REPORT_CHECKED (111)
Jeej 71:f03727ff0f99 40 #define D7A_ITF_BULK (112)
Jeej 71:f03727ff0f99 41 #define D7A_ITF_BLINK (113)
Jeej 71:f03727ff0f99 42
Jeej 73:3b7353741c94 43 #define D7A_FID_ALP_CFG (50)
Jeej 73:3b7353741c94 44
Jeej 43:28202405094d 45
Jeej 43:28202405094d 46 //======================================================================
Jeej 43:28202405094d 47 // Enums
Jeej 43:28202405094d 48 //======================================================================
Jeej 43:28202405094d 49
Jeej 43:28202405094d 50 //======================================================================
Jeej 43:28202405094d 51 // d7a_fs_storage_t
Jeej 43:28202405094d 52 //----------------------------------------------------------------------
Jeej 43:28202405094d 53 /// File "Storage Class"
Jeej 43:28202405094d 54 //======================================================================
Jeej 43:28202405094d 55 typedef enum {
Jeej 55:5ea18a3a01b9 56 /// No data is keeped. Write only!
Jeej 43:28202405094d 57 /// Ex: Use for commands.
Jeej 43:28202405094d 58 TRANSIENT = 0,
Jeej 43:28202405094d 59 /// Data is stocked in RAM and initialized at 0.
Jeej 43:28202405094d 60 /// Can not guarantee data integrity over time.
Jeej 43:28202405094d 61 /// Ex: Use for often updated data.
Jeej 43:28202405094d 62 VOLATILE,
Jeej 43:28202405094d 63 /// Data is stocked in RAM and initialized with the last flushed data from EEPROM.
Jeej 43:28202405094d 64 /// Can not guarantee data integrity over time.
Jeej 43:28202405094d 65 /// Ex: Use for temporary configurations.
Jeej 43:28202405094d 66 RESTORABLE,
Jeej 43:28202405094d 67 /// Data is stoked in EEPROM.
Jeej 43:28202405094d 68 /// Data integrity is guaranteed.
Jeej 43:28202405094d 69 /// Ex: Use for important configurations.
Jeej 43:28202405094d 70 /// /!\ Use sparingly as operations on these type of files are time and ressource consuming
Jeej 43:28202405094d 71 PERMANENT
Jeej 43:28202405094d 72 } d7a_fs_storage_t;
Jeej 43:28202405094d 73
Jeej 43:28202405094d 74 //======================================================================
Jeej 43:28202405094d 75 // d7a_fs_perm_t
Jeej 43:28202405094d 76 //----------------------------------------------------------------------
Jeej 43:28202405094d 77 /// File permissions for USER/GUEST
Jeej 43:28202405094d 78 //======================================================================
Jeej 43:28202405094d 79 typedef enum {
Jeej 66:492b1d7ba370 80 O_O = 0b11000000,
Jeej 66:492b1d7ba370 81 R_O = 0b11100000,
Jeej 66:492b1d7ba370 82 R_R = 0b11100100,
Jeej 66:492b1d7ba370 83 W_O = 0b11010000,
Jeej 66:492b1d7ba370 84 W_W = 0b11010010,
Jeej 64:49a67f36d9c5 85 RW_O = 0b11110000,
Jeej 64:49a67f36d9c5 86 RW_R = 0b11110100,
Jeej 64:49a67f36d9c5 87 RW_W = 0b11110010,
Jeej 64:49a67f36d9c5 88 RW_RW = 0b11110110,
Jeej 64:49a67f36d9c5 89 RWX_O = 0b11111000,
Jeej 64:49a67f36d9c5 90 RWX_RWX = 0b11111111,
Jeej 43:28202405094d 91 } d7a_fs_perm_t;
Jeej 43:28202405094d 92
Jeej 43:28202405094d 93 // =======================================================================
Jeej 43:28202405094d 94 // d7a_nls_t
Jeej 43:28202405094d 95 // -----------------------------------------------------------------------
Jeej 43:28202405094d 96 /// Enumerator of the NWL security modes
Jeej 43:28202405094d 97 // =======================================================================
Jeej 43:28202405094d 98 typedef enum
Jeej 43:28202405094d 99 {
Jeej 43:28202405094d 100 /// No security enabled
Jeej 43:28202405094d 101 D7A_NLS_NO = 0,
Jeej 43:28202405094d 102 /// Encryption only, Counter Mode
Jeej 43:28202405094d 103 D7A_NLS_AES_CTR,
Jeej 43:28202405094d 104 /// No encryption, Authentication, Cipher-block chaining with 128 bit MAC
Jeej 43:28202405094d 105 D7A_NLS_AES_CBC_MAC_128,
Jeej 43:28202405094d 106 /// No encryption, Authentication, Cipher-block chaining with 64 bit MAC
Jeej 43:28202405094d 107 D7A_NLS_AES_CBC_MAC_64,
Jeej 43:28202405094d 108 /// No encryption, Authentication, Cipher-block chaining with 32 bit MAC
Jeej 43:28202405094d 109 D7A_NLS_AES_CBC_MAC_32,
Jeej 43:28202405094d 110 /// Authentication with CBC-MAC-128 and Encryption with Counter Mode
Jeej 43:28202405094d 111 D7A_NLS_AES_CCM_128,
Jeej 43:28202405094d 112 /// Authentication with CBC-MAC-64 and Encryption with Counter Mode
Jeej 43:28202405094d 113 D7A_NLS_AES_CCM_64,
Jeej 43:28202405094d 114 /// Authentication with CBC-MAC-32 and Encryption with Counter Mode
Jeej 43:28202405094d 115 D7A_NLS_AES_CCM_32,
Jeej 43:28202405094d 116 /// QTY
Jeej 43:28202405094d 117 D7A_NLS_QTY
Jeej 43:28202405094d 118
Jeej 43:28202405094d 119 } d7a_nls_t;
Jeej 43:28202405094d 120
Jeej 43:28202405094d 121
Jeej 45:b85384e7d825 122 // Mimic ALP Errors
Jeej 45:b85384e7d825 123 typedef enum
Jeej 45:b85384e7d825 124 {
Jeej 45:b85384e7d825 125 D7A_ERR_ITF_FULL = 2, // 0x02: For interfaces supporting buffering, indicates buffer reached maximum capacity (no data loss)
Jeej 45:b85384e7d825 126 D7A_ERR_PARTIAL_COMPLETION = 1, // 0x01: Action received and partially completed at response. To be completed after response
Jeej 45:b85384e7d825 127
Jeej 45:b85384e7d825 128 D7A_ERR_NONE = 0, // 0x00: Action completed (OK)
Jeej 45:b85384e7d825 129 D7A_ERR_FILE_NOT_FOUND = -1, // 0xFF: Error access file: File ID does not exist
Jeej 45:b85384e7d825 130 D7A_ERR_FILE_EXIST = -2, // 0xFE: Error create file: File ID already exists
Jeej 45:b85384e7d825 131 D7A_ERR_FILE_NOT_RESTORABLE = -3, // 0xFD: Error restore file: File is not restorable
Jeej 45:b85384e7d825 132 D7A_ERR_PERMISSION_DENIED = -4, // 0xFC: Error access file: Insufficient permissions
Jeej 45:b85384e7d825 133 D7A_ERR_LENGTH_OVERFLOW = -5, // 0xFB: Error create file: Supplied length (in header) is beyond file limits
Jeej 45:b85384e7d825 134 D7A_ERR_ALLOC_OVERFLOW = -6, // 0xFA: Error create file: Supplied allocation (in header) is beyond file limits
Jeej 45:b85384e7d825 135 D7A_ERR_OFFSET_OVERFLOW = -7, // 0xF9: Error write: Supplied start offset is out of bounds of file allocation
Jeej 45:b85384e7d825 136 D7A_ERR_WRITE_OVERFLOW = -8, // 0xF8: Error complete write: Supplied data goes beyond file allocation
Jeej 45:b85384e7d825 137 D7A_ERR_WRITE_ERROR = -9, // 0xF7: Error write: impossible to write in storage location
Jeej 45:b85384e7d825 138 D7A_ERR_OPERATION_UNKNOWN = -10,// 0xF6: Error unknown Operation
Jeej 45:b85384e7d825 139 D7A_ERR_OPERAND_INCOMPLETE = -11,// 0xF5: Error incomplete Operand
Jeej 45:b85384e7d825 140 D7A_ERR_OPERAND_WRONG_FORMAT = -12,// 0xF4: Error wrong Operand format
Jeej 45:b85384e7d825 141 D7A_ERR_ITF_INVALID = -13,// 0xF3: Error invalid interface
Jeej 45:b85384e7d825 142 D7A_ERR_ITF_OVERFLOW = -14,// 0xF2: Error interface overflown (i.e. ressources exhausted, buffer full with data discarded)
Jeej 45:b85384e7d825 143 D7A_ERR_QUERY_FAIL = -15,// 0xF1: (Group of) Query result was false (Informative error code).
Jeej 45:b85384e7d825 144
Jeej 45:b85384e7d825 145 D7A_ERR_UNKNOWN = -128,// 0x80: Unknown error
Jeej 57:fd9c8b67ffdc 146 D7A_ERR_FS_TIMEOUT ,// 0x81: Internal FS Error
Jeej 57:fd9c8b67ffdc 147 D7A_ERR_ITF_UNKNOWN ,// 0x82: Unknown Interface
Jeej 45:b85384e7d825 148
Jeej 45:b85384e7d825 149 // Modem errors
Jeej 45:b85384e7d825 150 D7A_ERR_NOT_READY ,// The modem is not ready to recieve commands
Jeej 45:b85384e7d825 151 D7A_ERR_COM_LINK ,// A serial link timeout occured
Jeej 45:b85384e7d825 152 D7A_ERR_ILLEGAL_FID ,// The FID specified is illegal
Jeej 45:b85384e7d825 153 D7A_ERR_ILLEGAL_FILE_DEF ,// The FILE parameters specified are illegal
Jeej 45:b85384e7d825 154 D7A_ERR_CMD_TO ,// The command expired
Jeej 45:b85384e7d825 155 D7A_ERR_TX_FAILED ,// Transmission failed
Jeej 66:492b1d7ba370 156 D7A_ERR_STATE ,// The device is not in the right state to execute the command
Jeej 56:da34fc11e760 157
Jeej 45:b85384e7d825 158 } d7a_errors_t;
Jeej 45:b85384e7d825 159
Jeej 55:5ea18a3a01b9 160
Jeej 73:3b7353741c94 161
Jeej 73:3b7353741c94 162 TYPEDEF_STRUCT_PACKED {
Jeej 73:3b7353741c94 163 struct {
Jeej 73:3b7353741c94 164 /// Backoff time generator for retry attempts
Jeej 73:3b7353741c94 165 /// - if '0': No backoff
Jeej 73:3b7353741c94 166 /// - if '1': Linear backoff, retry every slot_time seconds
Jeej 73:3b7353741c94 167 /// - if '2': RFU
Jeej 73:3b7353741c94 168 /// - if '3': RFU
Jeej 73:3b7353741c94 169 uint8_t procedure : 4;
Jeej 73:3b7353741c94 170 /// On transmission success or at the end of the retry procedure:
Jeej 73:3b7353741c94 171 /// - if '1': a response is generated to requester (source ITF)
Jeej 73:3b7353741c94 172 /// - if '0': nothing notified to the source
Jeej 73:3b7353741c94 173 uint8_t respond : 1;
Jeej 73:3b7353741c94 174 /// On transmission success or at the end of the retry procedure:
Jeej 73:3b7353741c94 175 /// - if '1': Session fifo remains opened for further messaging
Jeej 73:3b7353741c94 176 /// - if '0': Session fifo is closed/released
Jeej 73:3b7353741c94 177 uint8_t persistant : 1;
Jeej 73:3b7353741c94 178 /// When a payload is send to an ITF that implements buffering,
Jeej 73:3b7353741c94 179 /// if 'bulk' is set the ITF should not start actual transfer until
Jeej 73:3b7353741c94 180 /// buffer is full.
Jeej 73:3b7353741c94 181 uint8_t bulk : 1;
Jeej 73:3b7353741c94 182
Jeej 73:3b7353741c94 183 uint8_t rfu : 1;
Jeej 73:3b7353741c94 184 } meta;
Jeej 73:3b7353741c94 185 /// Number of "pushed" messages that will be internally buffered
Jeej 73:3b7353741c94 186 /// until they are successfully sent. In case of overflow, the oldest
Jeej 73:3b7353741c94 187 /// message is lost.
Jeej 73:3b7353741c94 188 uint8_t depth;
Jeej 73:3b7353741c94 189 /// Maximum number of retry steps
Jeej 73:3b7353741c94 190 uint8_t retries;
Jeej 73:3b7353741c94 191 /// Unit of time (in second) used for Backoff time calculation
Jeej 73:3b7353741c94 192 uint8_t slot_time;
Jeej 73:3b7353741c94 193 } alp_retry_policy_t;
Jeej 73:3b7353741c94 194
Jeej 73:3b7353741c94 195
Jeej 55:5ea18a3a01b9 196 /// Types of retry policies
Jeej 55:5ea18a3a01b9 197 /// Respond: When finished the host will be notified
Jeej 55:5ea18a3a01b9 198 /// Persist: When finished on error data is kept in the queue for next transmission
Jeej 55:5ea18a3a01b9 199 /// Depth: Number of commands kept in the queue
Jeej 55:5ea18a3a01b9 200 /// Bulk: Notifications sent only when the queue is full
Jeej 73:3b7353741c94 201 /// Retries: Number of retries after initial transmission (if 0 no backoff, else linear backoff)
Jeej 55:5ea18a3a01b9 202 /// Slot: Time between retries (sec)
Jeej 46:665391110051 203 typedef enum {
Jeej 55:5ea18a3a01b9 204 /// Respond: true
Jeej 55:5ea18a3a01b9 205 /// Persist: false
Jeej 55:5ea18a3a01b9 206 /// Depth: 1
Jeej 55:5ea18a3a01b9 207 /// Bulk: false
Jeej 55:5ea18a3a01b9 208 /// Retries: 0
Jeej 55:5ea18a3a01b9 209 /// Slot: 0
Jeej 73:3b7353741c94 210 ALP_RPOL_ONESHOT,
Jeej 73:3b7353741c94 211
Jeej 55:5ea18a3a01b9 212 /// Respond: true
Jeej 55:5ea18a3a01b9 213 /// Persist: false
Jeej 55:5ea18a3a01b9 214 /// Depth: 1
Jeej 55:5ea18a3a01b9 215 /// Bulk: false
Jeej 55:5ea18a3a01b9 216 /// Retries: 3
Jeej 55:5ea18a3a01b9 217 /// Slot: 2
Jeej 73:3b7353741c94 218 ALP_RPOL_SINGLE,
Jeej 73:3b7353741c94 219
Jeej 55:5ea18a3a01b9 220 /// Respond: true
Jeej 55:5ea18a3a01b9 221 /// Persist: false
Jeej 55:5ea18a3a01b9 222 /// Depth: 1
Jeej 55:5ea18a3a01b9 223 /// Bulk: false
Jeej 55:5ea18a3a01b9 224 /// Retries: 3
Jeej 55:5ea18a3a01b9 225 /// Slot: 2
Jeej 73:3b7353741c94 226 ALP_RPOL_REPORT,
Jeej 73:3b7353741c94 227
Jeej 55:5ea18a3a01b9 228 /// Respond: false
Jeej 55:5ea18a3a01b9 229 /// Persist: true
Jeej 55:5ea18a3a01b9 230 /// Depth: 4
Jeej 55:5ea18a3a01b9 231 /// Bulk: false
Jeej 55:5ea18a3a01b9 232 /// Retries: 16
Jeej 55:5ea18a3a01b9 233 /// Slot: 20
Jeej 73:3b7353741c94 234 ALP_RPOL_REPORT_CHECKED,
Jeej 73:3b7353741c94 235
Jeej 55:5ea18a3a01b9 236 /// Respond: true
Jeej 55:5ea18a3a01b9 237 /// Persist: false
Jeej 55:5ea18a3a01b9 238 /// Depth: 4
Jeej 55:5ea18a3a01b9 239 /// Bulk: true
Jeej 55:5ea18a3a01b9 240 /// Retries: 0
Jeej 55:5ea18a3a01b9 241 /// Slot: 1
Jeej 73:3b7353741c94 242 ALP_RPOL_BULK,
Jeej 73:3b7353741c94 243
Jeej 73:3b7353741c94 244 ALP_RPOL_SPARE_5,
Jeej 73:3b7353741c94 245 ALP_RPOL_SPARE_6,
Jeej 73:3b7353741c94 246
Jeej 59:b42eae56b51b 247 /// Respond: false
Jeej 59:b42eae56b51b 248 /// Persist: false
Jeej 59:b42eae56b51b 249 /// Depth: 1
Jeej 59:b42eae56b51b 250 /// Bulk: false
Jeej 59:b42eae56b51b 251 /// Retries: 0
Jeej 59:b42eae56b51b 252 /// Slot: 1
Jeej 73:3b7353741c94 253 ALP_RPOL_BLINK,
Jeej 73:3b7353741c94 254
Jeej 73:3b7353741c94 255 ALP_RPOL_QTY,
Jeej 55:5ea18a3a01b9 256 } alp_rpol_t;
Jeej 46:665391110051 257
Jeej 73:3b7353741c94 258
Jeej 55:5ea18a3a01b9 259 /// Action when file notifying
Jeej 55:5ea18a3a01b9 260 typedef enum {
Jeej 55:5ea18a3a01b9 261 D7A_ACTION_NONE = 0,
Jeej 55:5ea18a3a01b9 262 /// Notify the whole file
Jeej 55:5ea18a3a01b9 263 D7A_NOTIFICATION_FULL = 100,
Jeej 55:5ea18a3a01b9 264 /// Notify only part of the file
Jeej 55:5ea18a3a01b9 265 D7A_NOTIFICATION_PART
Jeej 55:5ea18a3a01b9 266 } d7a_action_t;
Jeej 45:b85384e7d825 267
Jeej 58:38a366236bda 268
Jeej 58:38a366236bda 269 // =======================================================================
Jeej 58:38a366236bda 270 // d7a_id_t
Jeej 58:38a366236bda 271 // -----------------------------------------------------------------------
Jeej 58:38a366236bda 272 // Identifier types enumerator
Jeej 58:38a366236bda 273 // =======================================================================
Jeej 58:38a366236bda 274 typedef enum
Jeej 58:38a366236bda 275 {
Jeej 58:38a366236bda 276 // Void identifier (broadcast)
Jeej 58:38a366236bda 277 // with indication of number of reached devices
Jeej 58:38a366236bda 278 D7A_ID_NBID = 0,
Jeej 58:38a366236bda 279 // Void identifier (broadcast)
Jeej 58:38a366236bda 280 D7A_ID_NOID = 1,
Jeej 58:38a366236bda 281 // Unique Identifier
Jeej 58:38a366236bda 282 D7A_ID_UID = 2,
Jeej 58:38a366236bda 283 // Virtual identifier
Jeej 58:38a366236bda 284 D7A_ID_VID = 3,
Jeej 58:38a366236bda 285
Jeej 58:38a366236bda 286 } d7a_id_t;
Jeej 58:38a366236bda 287
Jeej 43:28202405094d 288 //======================================================================
Jeej 43:28202405094d 289 // Structures
Jeej 43:28202405094d 290 //======================================================================
Jeej 43:28202405094d 291
Jeej 43:28202405094d 292 //======================================================================
Jeej 43:28202405094d 293 // d7a_com_config_t
Jeej 43:28202405094d 294 //----------------------------------------------------------------------
Jeej 43:28202405094d 295 /// Com port configuration structure
Jeej 43:28202405094d 296 //======================================================================
Jeej 43:28202405094d 297 typedef struct {
Jeej 43:28202405094d 298 /// Tx pin
Jeej 43:28202405094d 299 PinName tx;
Jeej 43:28202405094d 300 /// RX pin
Jeej 43:28202405094d 301 PinName rx;
Jeej 43:28202405094d 302 /// WKUP pin
Jeej 43:28202405094d 303 PinName rts;
Jeej 43:28202405094d 304 /// HST_WKUP pin
Jeej 43:28202405094d 305 PinName cts;
Jeej 43:28202405094d 306 /// Size of RX buffer
Jeej 43:28202405094d 307 uint16_t rx_buffer_size;
Jeej 43:28202405094d 308 } d7a_com_config_t;
Jeej 43:28202405094d 309
Jeej 59:b42eae56b51b 310 TYPEDEF_STRUCT_PACKED {
Jeej 59:b42eae56b51b 311 uint8_t fid;
Jeej 59:b42eae56b51b 312 uint32_t length;
Jeej 59:b42eae56b51b 313 uint32_t offset;
Jeej 59:b42eae56b51b 314 uint8_t buf[1];
Jeej 59:b42eae56b51b 315 } d7a_data_t;
Jeej 59:b42eae56b51b 316
Jeej 59:b42eae56b51b 317 // =======================================================================
Jeej 59:b42eae56b51b 318 // d7a_msg_t
Jeej 59:b42eae56b51b 319 // -----------------------------------------------------------------------
Jeej 59:b42eae56b51b 320 /// Response data and meta-data from a device
Jeej 59:b42eae56b51b 321 // =======================================================================
Jeej 59:b42eae56b51b 322 typedef struct
Jeej 59:b42eae56b51b 323 {
Jeej 59:b42eae56b51b 324 /// Error code
Jeej 59:b42eae56b51b 325 int8_t err;
Jeej 59:b42eae56b51b 326 /// Responder's UID
Jeej 59:b42eae56b51b 327 uint8_t id[D7A_UID_LEN];
Jeej 59:b42eae56b51b 328 /// Transmission Link Budget
Jeej 59:b42eae56b51b 329 int8_t lb;
Jeej 61:87be16080640 330 /// Transmission RSSI
Jeej 61:87be16080640 331 int8_t rxlev;
Jeej 59:b42eae56b51b 332 /// Potential data
Jeej 59:b42eae56b51b 333 d7a_data_t* data;
Jeej 59:b42eae56b51b 334 } d7a_msg_t;
Jeej 49:81d5bddb02f0 335
Jeej 49:81d5bddb02f0 336
Jeej 43:28202405094d 337 typedef uint32_t (*WriteFileFunction)( const uint8_t file_id,
Jeej 43:28202405094d 338 const uint16_t offset,
Jeej 43:28202405094d 339 const uint16_t size,
Jeej 43:28202405094d 340 const uint8_t* const content);
Jeej 43:28202405094d 341
Jeej 43:28202405094d 342 typedef uint32_t (*ReadFileFunction)( const uint8_t file_id,
Jeej 43:28202405094d 343 const uint16_t offset,
Jeej 43:28202405094d 344 const uint16_t size,
Jeej 43:28202405094d 345 uint8_t* buf);
Jeej 43:28202405094d 346
Jeej 46:665391110051 347 typedef void (*NotifDoneFunction)( const uint8_t file_id,
Jeej 46:665391110051 348 const uint8_t error);
Jeej 59:b42eae56b51b 349
Jeej 59:b42eae56b51b 350 typedef void (*UnsolicitedMsgFunction)( d7a_msg_t** msg);
Jeej 46:665391110051 351
Jeej 43:28202405094d 352 //======================================================================
Jeej 43:28202405094d 353 // d7a_fs_callbacks_t
Jeej 43:28202405094d 354 //----------------------------------------------------------------------
Jeej 43:28202405094d 355 /// File system callbacks
Jeej 43:28202405094d 356 //======================================================================
Jeej 43:28202405094d 357 typedef struct {
Jeej 43:28202405094d 358 /// Write in local file
Jeej 43:28202405094d 359 WriteFileFunction write_file;
Jeej 43:28202405094d 360 /// Read from local file
Jeej 43:28202405094d 361 ReadFileFunction read_file;
Jeej 49:81d5bddb02f0 362 /// Is called when the notification is finished (depending on the retry policy)
Jeej 46:665391110051 363 NotifDoneFunction notif_done;
Jeej 59:b42eae56b51b 364 /// This function is called when an unsolicited message is catched
Jeej 59:b42eae56b51b 365 UnsolicitedMsgFunction unsolicited_msg;
Jeej 49:81d5bddb02f0 366 } d7a_callbacks_t;
Jeej 43:28202405094d 367
Jeej 43:28202405094d 368 //======================================================================
Jeej 43:28202405094d 369 // fw_version_t
Jeej 43:28202405094d 370 //----------------------------------------------------------------------
Jeej 43:28202405094d 371 /// Firmware version Structure
Jeej 43:28202405094d 372 /// Used within the revision structure
Jeej 43:28202405094d 373 //======================================================================
Jeej 43:28202405094d 374 TYPEDEF_STRUCT_PACKED
Jeej 43:28202405094d 375 {
Jeej 43:28202405094d 376 /// Software identifier
Jeej 43:28202405094d 377 uint8_t id;
Jeej 43:28202405094d 378 /// Version major
Jeej 43:28202405094d 379 uint8_t major;
Jeej 43:28202405094d 380 /// Version minor
Jeej 43:28202405094d 381 uint8_t minor;
Jeej 43:28202405094d 382 /// Version patch
Jeej 43:28202405094d 383 uint16_t patch;
Jeej 43:28202405094d 384 /// Version hash
Jeej 43:28202405094d 385 uint32_t hash;
Jeej 43:28202405094d 386 } fw_version_t;
Jeej 43:28202405094d 387
Jeej 43:28202405094d 388 //======================================================================
Jeej 43:28202405094d 389 // d7a_revision_t
Jeej 43:28202405094d 390 //----------------------------------------------------------------------
Jeej 43:28202405094d 391 /// Revision Structure
Jeej 43:28202405094d 392 ///
Jeej 43:28202405094d 393 /// Usage within D7B server:
Jeej 43:28202405094d 394 /// An XML describing the File system of a device is associated to a
Jeej 43:28202405094d 395 /// couple manufacturer_id/device_id (==Device).
Jeej 43:28202405094d 396 /// Different versions of the Device's XML can exist and can be mapped
Jeej 43:28202405094d 397 /// according to fw_version id/major/minor
Jeej 43:28202405094d 398 //======================================================================
Jeej 43:28202405094d 399 TYPEDEF_STRUCT_PACKED
Jeej 43:28202405094d 400 {
Jeej 43:28202405094d 401 /// Manufacturer ID: provided by Wizzilab
Jeej 43:28202405094d 402 uint32_t manufacturer_id;
Jeej 43:28202405094d 403 /// Device ID: Arbitrary number, at user/customer choice
Jeej 43:28202405094d 404 uint32_t device_id;
Jeej 43:28202405094d 405 /// Hardware Board ID:
Jeej 43:28202405094d 406 uint32_t hw_version;
Jeej 43:28202405094d 407 /// Firmware Version: made of
Jeej 43:28202405094d 408 /// - major,minor and patch indexes : comes from versioning tool
Jeej 43:28202405094d 409 /// - fw_id : "build-flavour" : comes from build setup
Jeej 43:28202405094d 410 /// FW_ID | MAJOR | MINOR | PATCH | HASH |
Jeej 43:28202405094d 411 /// 1B | 1B | 1B | 2B | 4B |
Jeej 43:28202405094d 412 fw_version_t fw_version;
Jeej 43:28202405094d 413 /// "file-system" signature XXX: to be worked out
Jeej 43:28202405094d 414 uint32_t fs_crc;
Jeej 43:28202405094d 415 } d7a_revision_t;
Jeej 43:28202405094d 416
Jeej 43:28202405094d 417
Jeej 43:28202405094d 418 // =======================================================================
Jeej 43:28202405094d 419 // d7a_addressee_ctrl_t
Jeej 43:28202405094d 420 // -----------------------------------------------------------------------
Jeej 43:28202405094d 421 /// Bitfield structure of the Addressee control byte
Jeej 43:28202405094d 422 // =======================================================================
Jeej 43:28202405094d 423 typedef union
Jeej 43:28202405094d 424 {
Jeej 53:3e4aa4b57090 425 /// bit access fields
Jeej 43:28202405094d 426 struct {
Jeej 43:28202405094d 427 /// Network security method
Jeej 43:28202405094d 428 uint8_t nls : 4;
Jeej 43:28202405094d 429 /// ID type
Jeej 43:28202405094d 430 uint8_t idf : 2;
Jeej 43:28202405094d 431 /// RFU
Jeej 43:28202405094d 432 uint8_t rfu_6 : 1;
Jeej 43:28202405094d 433 uint8_t rfu_7 : 1;
Jeej 43:28202405094d 434 } bf;
Jeej 43:28202405094d 435
Jeej 53:3e4aa4b57090 436 /// byte access
Jeej 43:28202405094d 437 uint8_t byte;
Jeej 43:28202405094d 438
Jeej 43:28202405094d 439 } d7a_addressee_ctrl_t;
Jeej 43:28202405094d 440
Jeej 43:28202405094d 441 // =======================================================================
Jeej 43:28202405094d 442 // d7a_xcl_t
Jeej 43:28202405094d 443 // -----------------------------------------------------------------------
Jeej 43:28202405094d 444 /// Bitfield structure of the Addressee Access Class
Jeej 43:28202405094d 445 // =======================================================================
Jeej 43:28202405094d 446 typedef union
Jeej 43:28202405094d 447 {
Jeej 53:3e4aa4b57090 448 /// bit access fields
Jeej 43:28202405094d 449 struct {
Jeej 43:28202405094d 450 /// Subclass mask
Jeej 43:28202405094d 451 uint8_t m : 4;
Jeej 43:28202405094d 452 /// Specifier
Jeej 43:28202405094d 453 uint8_t s : 4;
Jeej 43:28202405094d 454 } bf;
Jeej 43:28202405094d 455
Jeej 53:3e4aa4b57090 456 /// byte access
Jeej 43:28202405094d 457 uint8_t byte;
Jeej 43:28202405094d 458
Jeej 43:28202405094d 459 } d7a_xcl_t;
Jeej 43:28202405094d 460
Jeej 43:28202405094d 461 // =======================================================================
Jeej 43:28202405094d 462 // d7a_addressee_t
Jeej 43:28202405094d 463 // -----------------------------------------------------------------------
Jeej 43:28202405094d 464 /// Structure of the D7ATP Addressee byte
Jeej 43:28202405094d 465 // =======================================================================
Jeej 43:28202405094d 466 TYPEDEF_STRUCT_PACKED
Jeej 43:28202405094d 467 {
Jeej 54:540b327bfa14 468 /// Addressee control byte
Jeej 43:28202405094d 469 d7a_addressee_ctrl_t ctrl;
Jeej 54:540b327bfa14 470 /// Access Class
Jeej 43:28202405094d 471 d7a_xcl_t xcl;
Jeej 54:540b327bfa14 472 /// UID
Jeej 43:28202405094d 473 uint8_t id[D7A_UID_LEN];
Jeej 43:28202405094d 474
Jeej 43:28202405094d 475 } d7a_addressee_t;
Jeej 43:28202405094d 476
Jeej 43:28202405094d 477
Jeej 71:f03727ff0f99 478 // =======================================================================
Jeej 71:f03727ff0f99 479 // d7a_ctf_t
Jeej 71:f03727ff0f99 480 // -----------------------------------------------------------------------
Jeej 71:f03727ff0f99 481 // DLL compressed time format
Jeej 71:f03727ff0f99 482 // =======================================================================
Jeej 71:f03727ff0f99 483 typedef union
Jeej 71:f03727ff0f99 484 {
Jeej 71:f03727ff0f99 485 // bit access fields
Jeej 71:f03727ff0f99 486 struct {
Jeej 71:f03727ff0f99 487 // Mantissa
Jeej 71:f03727ff0f99 488 uint8_t mant : 5;
Jeej 71:f03727ff0f99 489 // Exponent
Jeej 71:f03727ff0f99 490 uint8_t exp : 3;
Jeej 71:f03727ff0f99 491 } bf;
Jeej 71:f03727ff0f99 492
Jeej 71:f03727ff0f99 493 // byte access
Jeej 71:f03727ff0f99 494 uint8_t byte;
Jeej 71:f03727ff0f99 495
Jeej 71:f03727ff0f99 496 } d7a_ctf_t;
Jeej 71:f03727ff0f99 497
Jeej 71:f03727ff0f99 498 // =======================================================================
Jeej 71:f03727ff0f99 499 // d7a_qos_t
Jeej 71:f03727ff0f99 500 // -----------------------------------------------------------------------
Jeej 71:f03727ff0f99 501 // Bitfield structure of the D7ASP Quality of Service control byte
Jeej 71:f03727ff0f99 502 // =======================================================================
Jeej 71:f03727ff0f99 503 typedef union
Jeej 71:f03727ff0f99 504 {
Jeej 71:f03727ff0f99 505 // bit access fields
Jeej 71:f03727ff0f99 506 struct {
Jeej 71:f03727ff0f99 507 // Response mode
Jeej 71:f03727ff0f99 508 uint8_t resp : 3;
Jeej 71:f03727ff0f99 509 // Retry mode
Jeej 71:f03727ff0f99 510 uint8_t retry : 3;
Jeej 71:f03727ff0f99 511 // Responder has to keep the ACK template (TPL status file)
Jeej 71:f03727ff0f99 512 uint8_t record : 1;
Jeej 71:f03727ff0f99 513 // Stop D7ASP on not acknowledged request
Jeej 71:f03727ff0f99 514 uint8_t stop_on_err : 1;
Jeej 71:f03727ff0f99 515
Jeej 71:f03727ff0f99 516 } bf;
Jeej 71:f03727ff0f99 517
Jeej 71:f03727ff0f99 518 // byte access
Jeej 71:f03727ff0f99 519 uint8_t byte;
Jeej 71:f03727ff0f99 520
Jeej 71:f03727ff0f99 521 } d7a_qos_t;
Jeej 71:f03727ff0f99 522
Jeej 71:f03727ff0f99 523
Jeej 71:f03727ff0f99 524 // =======================================================================
Jeej 71:f03727ff0f99 525 // d7a_sp_cfg_t
Jeej 71:f03727ff0f99 526 // -----------------------------------------------------------------------
Jeej 71:f03727ff0f99 527 // Structure of the D7ASP Configuration
Jeej 71:f03727ff0f99 528 // =======================================================================
Jeej 71:f03727ff0f99 529 TYPEDEF_STRUCT_PACKED
Jeej 71:f03727ff0f99 530 {
Jeej 71:f03727ff0f99 531 // D7ASP QoS
Jeej 71:f03727ff0f99 532 d7a_qos_t qos;
Jeej 71:f03727ff0f99 533 // Dormant Timeout (0, no timeout)
Jeej 71:f03727ff0f99 534 d7a_ctf_t dorm_to;
Jeej 74:30180585b09e 535 // Response execution delay
Jeej 74:30180585b09e 536 d7a_ctf_t te;
Jeej 71:f03727ff0f99 537 // Addressee
Jeej 71:f03727ff0f99 538 d7a_addressee_t addressee;
Jeej 71:f03727ff0f99 539
Jeej 71:f03727ff0f99 540 } d7a_sp_cfg_t;
Jeej 71:f03727ff0f99 541
Jeej 71:f03727ff0f99 542 // =======================================================================
Jeej 71:f03727ff0f99 543 // d7a_itf_t
Jeej 71:f03727ff0f99 544 // -----------------------------------------------------------------------
Jeej 71:f03727ff0f99 545 // ALP/D7A Interface file TODO:should be in alp_d7a.h when/if it exists
Jeej 71:f03727ff0f99 546 // but not in alp.h as it requires D7A
Jeej 71:f03727ff0f99 547 // ====================================================================
Jeej 71:f03727ff0f99 548 TYPEDEF_STRUCT_PACKED {
Jeej 71:f03727ff0f99 549 uint8_t type;
Jeej 71:f03727ff0f99 550 d7a_sp_cfg_t cfg;
Jeej 71:f03727ff0f99 551 } d7a_itf_t;
Jeej 71:f03727ff0f99 552
Jeej 71:f03727ff0f99 553
Jeej 71:f03727ff0f99 554 // =======================================================================
Jeej 71:f03727ff0f99 555 // d7a_resp_t
Jeej 71:f03727ff0f99 556 // -----------------------------------------------------------------------
Jeej 71:f03727ff0f99 557 // Enumerator of the D7ASP Response types
Jeej 71:f03727ff0f99 558 // =======================================================================
Jeej 71:f03727ff0f99 559 typedef enum
Jeej 71:f03727ff0f99 560 {
Jeej 71:f03727ff0f99 561 // No response requested
Jeej 71:f03727ff0f99 562 D7A_RESP_NO = 0,
Jeej 71:f03727ff0f99 563 // Get all responses in response period
Jeej 71:f03727ff0f99 564 D7A_RESP_ALL,
Jeej 71:f03727ff0f99 565 // Get at least one acknowledgement per request during response period
Jeej 71:f03727ff0f99 566 D7A_RESP_ANY,
Jeej 71:f03727ff0f99 567 // RFU
Jeej 71:f03727ff0f99 568 D7A_RESP_RFU_1,
Jeej 71:f03727ff0f99 569 // No response requested, repeat 3 times
Jeej 71:f03727ff0f99 570 D7A_RESP_NO_RPT,
Jeej 71:f03727ff0f99 571 // Get all responses in response period, only Responders having not received packets respond
Jeej 71:f03727ff0f99 572 D7A_RESP_ON_ERR,
Jeej 71:f03727ff0f99 573 // Get at least one acknowledgement per request during response period.
Jeej 71:f03727ff0f99 574 // Stick to a single responder when possible
Jeej 71:f03727ff0f99 575 D7A_RESP_PREFERRED,
Jeej 71:f03727ff0f99 576 // RFU
Jeej 71:f03727ff0f99 577 D7A_RESP_RFU_2,
Jeej 71:f03727ff0f99 578
Jeej 71:f03727ff0f99 579 } d7a_resp_t;
Jeej 71:f03727ff0f99 580
Jeej 71:f03727ff0f99 581
Jeej 43:28202405094d 582 //======================================================================
Jeej 43:28202405094d 583 // Prototypes
Jeej 43:28202405094d 584 //======================================================================
Jeej 43:28202405094d 585
Jeej 43:28202405094d 586 //======================================================================
Jeej 43:28202405094d 587 // d7a_open
Jeej 43:28202405094d 588 //----------------------------------------------------------------------
Jeej 43:28202405094d 589 /// @brief Open D7A driver and start the modem
Jeej 53:3e4aa4b57090 590 /// @param com_config Com port configuration structure
Jeej 53:3e4aa4b57090 591 /// @param reset_pin Reset pin
Jeej 53:3e4aa4b57090 592 /// @param callbacks File system callbacks (You cannot use local files if this is not specified)
Jeej 45:b85384e7d825 593 /// @return d7a_errors_t Error code
Jeej 43:28202405094d 594 //======================================================================
Jeej 55:5ea18a3a01b9 595 d7a_errors_t d7a_open(const d7a_com_config_t* com_config,
Jeej 55:5ea18a3a01b9 596 PinName reset_pin,
Jeej 55:5ea18a3a01b9 597 const d7a_callbacks_t* callbacks);
Jeej 43:28202405094d 598
Jeej 43:28202405094d 599 //======================================================================
Jeej 43:28202405094d 600 // d7a_close
Jeej 43:28202405094d 601 //----------------------------------------------------------------------
Jeej 43:28202405094d 602 /// @brief Close D7A driver and stop the modem
Jeej 45:b85384e7d825 603 /// @return d7a_errors_t Error code
Jeej 43:28202405094d 604 //======================================================================
Jeej 45:b85384e7d825 605 d7a_errors_t d7a_close(void);
Jeej 43:28202405094d 606
Jeej 43:28202405094d 607 //======================================================================
Jeej 43:28202405094d 608 // d7a_start
Jeej 43:28202405094d 609 //----------------------------------------------------------------------
Jeej 43:28202405094d 610 /// @brief Start the modem
Jeej 45:b85384e7d825 611 /// @return d7a_errors_t Error code
Jeej 43:28202405094d 612 //======================================================================
Jeej 45:b85384e7d825 613 d7a_errors_t d7a_start(void);
Jeej 43:28202405094d 614
Jeej 43:28202405094d 615 //======================================================================
Jeej 43:28202405094d 616 // d7a_stop
Jeej 43:28202405094d 617 //----------------------------------------------------------------------
Jeej 43:28202405094d 618 /// @brief Stop the modem (goes to low power)
Jeej 45:b85384e7d825 619 /// @return d7a_errors_t Error code
Jeej 43:28202405094d 620 //======================================================================
Jeej 45:b85384e7d825 621 d7a_errors_t d7a_stop(void);
Jeej 43:28202405094d 622
Jeej 43:28202405094d 623 //======================================================================
Jeej 43:28202405094d 624 // d7a_create
Jeej 43:28202405094d 625 //----------------------------------------------------------------------
Jeej 43:28202405094d 626 /// @brief Creates a file on the modem
Jeej 53:3e4aa4b57090 627 /// @param file_id ID of the file to create
Jeej 53:3e4aa4b57090 628 /// @param prop Type of file
Jeej 53:3e4aa4b57090 629 /// @param perm Access permissions
Jeej 53:3e4aa4b57090 630 /// @param size Length of the created file
Jeej 53:3e4aa4b57090 631 /// @param alloc Maximum size of the file
Jeej 55:5ea18a3a01b9 632 /// @param action Type of action to trigger
Jeej 71:f03727ff0f99 633 /// @param interface File ID of the interface file to use for notifications
Jeej 45:b85384e7d825 634 /// @return d7a_errors_t Error code
Jeej 43:28202405094d 635 //======================================================================
Jeej 55:5ea18a3a01b9 636 d7a_errors_t d7a_create(const uint8_t file_id,
Jeej 55:5ea18a3a01b9 637 d7a_fs_storage_t prop,
Jeej 55:5ea18a3a01b9 638 d7a_fs_perm_t perm,
Jeej 55:5ea18a3a01b9 639 uint32_t size,
Jeej 55:5ea18a3a01b9 640 uint32_t alloc,
Jeej 71:f03727ff0f99 641 d7a_action_t action = D7A_ACTION_NONE,
Jeej 71:f03727ff0f99 642 const uint8_t interface = D7A_ITF_ONESHOT);
Jeej 43:28202405094d 643
Jeej 43:28202405094d 644 //======================================================================
Jeej 43:28202405094d 645 // d7a_declare
Jeej 43:28202405094d 646 //----------------------------------------------------------------------
mikl_andre 48:950406be9810 647 /// @brief Declare a file stored on the host to the modem (need to have implemented the fs_callbacks)
Jeej 53:3e4aa4b57090 648 /// @param file_id ID of the file to declare
Jeej 53:3e4aa4b57090 649 /// @param prop Type of file
Jeej 53:3e4aa4b57090 650 /// @param perm Access permissions
Jeej 53:3e4aa4b57090 651 /// @param size Length of the created file
Jeej 53:3e4aa4b57090 652 /// @param alloc Maximum size of the file
Jeej 55:5ea18a3a01b9 653 /// @param action Type of action to trigger
Jeej 71:f03727ff0f99 654 /// @param interface File ID of the interface file to use for notifications
Jeej 45:b85384e7d825 655 /// @return d7a_errors_t Error code
Jeej 43:28202405094d 656 //======================================================================
Jeej 55:5ea18a3a01b9 657 d7a_errors_t d7a_declare(const uint8_t file_id,
Jeej 55:5ea18a3a01b9 658 d7a_fs_storage_t prop,
Jeej 55:5ea18a3a01b9 659 d7a_fs_perm_t perm,
Jeej 55:5ea18a3a01b9 660 uint32_t size,
Jeej 55:5ea18a3a01b9 661 uint32_t alloc,
Jeej 55:5ea18a3a01b9 662 d7a_action_t action = D7A_ACTION_NONE,
Jeej 71:f03727ff0f99 663 const uint8_t interface = D7A_ITF_ONESHOT);
Jeej 43:28202405094d 664
Jeej 43:28202405094d 665 //======================================================================
Jeej 43:28202405094d 666 // d7a_read
Jeej 43:28202405094d 667 //----------------------------------------------------------------------
Jeej 43:28202405094d 668 /// @brief Read data from a file
Jeej 53:3e4aa4b57090 669 /// @param file_id File ID of file to read
Jeej 53:3e4aa4b57090 670 /// @param offset Offset from which to start reading
Jeej 53:3e4aa4b57090 671 /// @param size Size of data to read
Jeej 53:3e4aa4b57090 672 /// @param buf Buffer to retrieve data
Jeej 53:3e4aa4b57090 673 /// @param addressee Addressee to an eventual distant device
Jeej 53:3e4aa4b57090 674 /// @param retry Index to the retry policy to use
Jeej 45:b85384e7d825 675 /// @return d7a_errors_t Error code
Jeej 43:28202405094d 676 //======================================================================
Jeej 58:38a366236bda 677 d7a_msg_t** d7a_read(const uint8_t file_id,
Jeej 55:5ea18a3a01b9 678 const uint32_t offset,
Jeej 67:9ac9d109b80a 679 const uint32_t size,
Jeej 67:9ac9d109b80a 680 const uint8_t* root_key = NULL,
Jeej 55:5ea18a3a01b9 681 d7a_addressee_t* addressee = NULL,
Jeej 55:5ea18a3a01b9 682 alp_rpol_t retry = ALP_RPOL_ONESHOT);
Jeej 43:28202405094d 683
Jeej 43:28202405094d 684 //======================================================================
Jeej 43:28202405094d 685 // d7a_write
Jeej 43:28202405094d 686 //----------------------------------------------------------------------
Jeej 43:28202405094d 687 /// @brief Write data to a file
Jeej 53:3e4aa4b57090 688 /// @param file_id File ID of file to write
Jeej 53:3e4aa4b57090 689 /// @param offset Offset from which to start reading
Jeej 53:3e4aa4b57090 690 /// @param size Size of data to read
Jeej 53:3e4aa4b57090 691 /// @param buf Buffer to retrieve data
Jeej 53:3e4aa4b57090 692 /// @param addressee Addressee to an eventual distant device
Jeej 53:3e4aa4b57090 693 /// @param retry Index to the retry policy to use
Jeej 53:3e4aa4b57090 694 /// @param resp Wait to see if write is OK
Jeej 45:b85384e7d825 695 /// @return d7a_errors_t Error code
Jeej 43:28202405094d 696 //======================================================================
Jeej 67:9ac9d109b80a 697 d7a_msg_t** d7a_write(const uint8_t file_id,
Jeej 67:9ac9d109b80a 698 const uint32_t offset,
Jeej 67:9ac9d109b80a 699 const uint32_t size,
Jeej 67:9ac9d109b80a 700 const uint8_t* const buf,
Jeej 67:9ac9d109b80a 701 const uint8_t* root_key = NULL,
Jeej 55:5ea18a3a01b9 702 d7a_addressee_t* addressee = NULL,
Jeej 55:5ea18a3a01b9 703 alp_rpol_t retry = ALP_RPOL_ONESHOT,
Jeej 55:5ea18a3a01b9 704 bool resp = true);
Jeej 46:665391110051 705
Jeej 67:9ac9d109b80a 706 d7a_msg_t** d7a_flush(const uint8_t file_id,
Jeej 67:9ac9d109b80a 707 const uint8_t* root_key = NULL,
Jeej 67:9ac9d109b80a 708 d7a_addressee_t* addressee = NULL,
Jeej 67:9ac9d109b80a 709 alp_rpol_t retry = ALP_RPOL_ONESHOT,
Jeej 67:9ac9d109b80a 710 bool resp = true);
Jeej 67:9ac9d109b80a 711
Jeej 46:665391110051 712 //======================================================================
mikl_andre 48:950406be9810 713 // d7a_notify
Jeej 46:665391110051 714 //----------------------------------------------------------------------
Jeej 46:665391110051 715 /// @brief Write data to a file
Jeej 53:3e4aa4b57090 716 /// @param file_id File ID of file to write
Jeej 53:3e4aa4b57090 717 /// @param offset Offset from which to start writing
Jeej 53:3e4aa4b57090 718 /// @param size Size of data to write
Jeej 46:665391110051 719 /// @return d7a_errors_t Error code
Jeej 46:665391110051 720 //======================================================================
Jeej 55:5ea18a3a01b9 721 d7a_errors_t d7a_notify(const uint8_t file_id,
Jeej 55:5ea18a3a01b9 722 const uint32_t offset = 0,
Jeej 55:5ea18a3a01b9 723 const uint32_t size = 0);
Jeej 43:28202405094d 724
Jeej 60:8d4133fbc060 725 //======================================================================
Jeej 60:8d4133fbc060 726 // d7a_free_msg
Jeej 60:8d4133fbc060 727 //----------------------------------------------------------------------
Jeej 68:d2778c6abf1a 728 /// @brief Free the message
Jeej 60:8d4133fbc060 729 /// @param msg message to free
Jeej 60:8d4133fbc060 730 //======================================================================
Jeej 60:8d4133fbc060 731 void d7a_free_msg(d7a_msg_t** msg);
Jeej 50:30440c9aeb7c 732
Jeej 60:8d4133fbc060 733 //======================================================================
Jeej 60:8d4133fbc060 734 // d7a_print_msg
Jeej 60:8d4133fbc060 735 //----------------------------------------------------------------------
Jeej 60:8d4133fbc060 736 /// @brief Prints the message
Jeej 60:8d4133fbc060 737 /// @param msg message to print
Jeej 60:8d4133fbc060 738 //======================================================================
Jeej 60:8d4133fbc060 739 void d7a_print_msg(d7a_msg_t** msg);
Jeej 58:38a366236bda 740
Jeej 50:30440c9aeb7c 741 //======================================================================
Jeej 50:30440c9aeb7c 742 // d7a_modem_print_infos
Jeej 50:30440c9aeb7c 743 //----------------------------------------------------------------------
Jeej 50:30440c9aeb7c 744 /// @brief Prints the modem infos
Jeej 50:30440c9aeb7c 745 //======================================================================
Jeej 50:30440c9aeb7c 746 void d7a_modem_print_infos(void);
Jeej 50:30440c9aeb7c 747
Jeej 68:d2778c6abf1a 748 //======================================================================
Jeej 68:d2778c6abf1a 749 // d7a_modem_print_infos
Jeej 68:d2778c6abf1a 750 //----------------------------------------------------------------------
Jeej 68:d2778c6abf1a 751 /// @brief Wait for modem to finish boot
Jeej 68:d2778c6abf1a 752 //======================================================================
Jeej 68:d2778c6abf1a 753 d7a_errors_t d7a_wait_ready(uint32_t millisec = osWaitForever);
Jeej 50:30440c9aeb7c 754
Jeej 50:30440c9aeb7c 755
Jeej 43:28202405094d 756 #endif // _D7A_H_