Trond Enger / d7a_1x

Fork of d7a_1x by WizziLab

Committer:
Jeej
Date:
Thu Sep 08 10:44:05 2016 +0000
Revision:
57:fd9c8b67ffdc
Parent:
56:da34fc11e760
Child:
58:38a366236bda
Fixed Distant write bug.

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 43:28202405094d 4 #include "d7a_common.h"
Jeej 43:28202405094d 5
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 55:5ea18a3a01b9 13 #define D7A_XCL_ENDPOINT (0x01)
Jeej 55:5ea18a3a01b9 14 #define D7A_XCL_GATEWAY (0x21)
Jeej 55:5ea18a3a01b9 15
Jeej 43:28202405094d 16
Jeej 43:28202405094d 17 //======================================================================
Jeej 43:28202405094d 18 // Enums
Jeej 43:28202405094d 19 //======================================================================
Jeej 43:28202405094d 20
Jeej 43:28202405094d 21 //======================================================================
Jeej 43:28202405094d 22 // d7a_fs_storage_t
Jeej 43:28202405094d 23 //----------------------------------------------------------------------
Jeej 43:28202405094d 24 /// File "Storage Class"
Jeej 43:28202405094d 25 //======================================================================
Jeej 43:28202405094d 26 typedef enum {
Jeej 55:5ea18a3a01b9 27 /// No data is keeped. Write only!
Jeej 43:28202405094d 28 /// Ex: Use for commands.
Jeej 43:28202405094d 29 TRANSIENT = 0,
Jeej 43:28202405094d 30 /// Data is stocked in RAM and initialized at 0.
Jeej 43:28202405094d 31 /// Can not guarantee data integrity over time.
Jeej 43:28202405094d 32 /// Ex: Use for often updated data.
Jeej 43:28202405094d 33 VOLATILE,
Jeej 43:28202405094d 34 /// Data is stocked in RAM and initialized with the last flushed data from EEPROM.
Jeej 43:28202405094d 35 /// Can not guarantee data integrity over time.
Jeej 43:28202405094d 36 /// Ex: Use for temporary configurations.
Jeej 43:28202405094d 37 RESTORABLE,
Jeej 43:28202405094d 38 /// Data is stoked in EEPROM.
Jeej 43:28202405094d 39 /// Data integrity is guaranteed.
Jeej 43:28202405094d 40 /// Ex: Use for important configurations.
Jeej 43:28202405094d 41 /// /!\ Use sparingly as operations on these type of files are time and ressource consuming
Jeej 43:28202405094d 42 PERMANENT
Jeej 43:28202405094d 43 } d7a_fs_storage_t;
Jeej 43:28202405094d 44
Jeej 43:28202405094d 45 //======================================================================
Jeej 43:28202405094d 46 // d7a_fs_perm_t
Jeej 43:28202405094d 47 //----------------------------------------------------------------------
Jeej 43:28202405094d 48 /// File permissions for USER/GUEST
Jeej 43:28202405094d 49 //======================================================================
Jeej 43:28202405094d 50 typedef enum {
Jeej 43:28202405094d 51 O_O = 0b00000000,
Jeej 43:28202405094d 52 R_O = 0b00100000,
Jeej 43:28202405094d 53 R_R = 0b00100100,
Jeej 43:28202405094d 54 W_O = 0b00010000,
Jeej 43:28202405094d 55 W_W = 0b00010010,
Jeej 43:28202405094d 56 RW_O = 0b00110000,
Jeej 43:28202405094d 57 RW_R = 0b00110100,
Jeej 43:28202405094d 58 RW_W = 0b00110010,
Jeej 43:28202405094d 59 RW_RW = 0b00110110,
Jeej 43:28202405094d 60 RWX_O = 0b00111000,
Jeej 43:28202405094d 61 RWX_RWX = 0b00111111,
Jeej 43:28202405094d 62 } d7a_fs_perm_t;
Jeej 43:28202405094d 63
Jeej 43:28202405094d 64 // =======================================================================
Jeej 43:28202405094d 65 // d7a_nls_t
Jeej 43:28202405094d 66 // -----------------------------------------------------------------------
Jeej 43:28202405094d 67 /// Enumerator of the NWL security modes
Jeej 43:28202405094d 68 // =======================================================================
Jeej 43:28202405094d 69 typedef enum
Jeej 43:28202405094d 70 {
Jeej 43:28202405094d 71 /// No security enabled
Jeej 43:28202405094d 72 D7A_NLS_NO = 0,
Jeej 43:28202405094d 73 /// Encryption only, Counter Mode
Jeej 43:28202405094d 74 D7A_NLS_AES_CTR,
Jeej 43:28202405094d 75 /// No encryption, Authentication, Cipher-block chaining with 128 bit MAC
Jeej 43:28202405094d 76 D7A_NLS_AES_CBC_MAC_128,
Jeej 43:28202405094d 77 /// No encryption, Authentication, Cipher-block chaining with 64 bit MAC
Jeej 43:28202405094d 78 D7A_NLS_AES_CBC_MAC_64,
Jeej 43:28202405094d 79 /// No encryption, Authentication, Cipher-block chaining with 32 bit MAC
Jeej 43:28202405094d 80 D7A_NLS_AES_CBC_MAC_32,
Jeej 43:28202405094d 81 /// Authentication with CBC-MAC-128 and Encryption with Counter Mode
Jeej 43:28202405094d 82 D7A_NLS_AES_CCM_128,
Jeej 43:28202405094d 83 /// Authentication with CBC-MAC-64 and Encryption with Counter Mode
Jeej 43:28202405094d 84 D7A_NLS_AES_CCM_64,
Jeej 43:28202405094d 85 /// Authentication with CBC-MAC-32 and Encryption with Counter Mode
Jeej 43:28202405094d 86 D7A_NLS_AES_CCM_32,
Jeej 43:28202405094d 87 /// QTY
Jeej 43:28202405094d 88 D7A_NLS_QTY
Jeej 43:28202405094d 89
Jeej 43:28202405094d 90 } d7a_nls_t;
Jeej 43:28202405094d 91
Jeej 43:28202405094d 92
Jeej 45:b85384e7d825 93 // Mimic ALP Errors
Jeej 45:b85384e7d825 94 typedef enum
Jeej 45:b85384e7d825 95 {
Jeej 45:b85384e7d825 96 D7A_ERR_ITF_FULL = 2, // 0x02: For interfaces supporting buffering, indicates buffer reached maximum capacity (no data loss)
Jeej 45:b85384e7d825 97 D7A_ERR_PARTIAL_COMPLETION = 1, // 0x01: Action received and partially completed at response. To be completed after response
Jeej 45:b85384e7d825 98
Jeej 45:b85384e7d825 99 D7A_ERR_NONE = 0, // 0x00: Action completed (OK)
Jeej 45:b85384e7d825 100 D7A_ERR_FILE_NOT_FOUND = -1, // 0xFF: Error access file: File ID does not exist
Jeej 45:b85384e7d825 101 D7A_ERR_FILE_EXIST = -2, // 0xFE: Error create file: File ID already exists
Jeej 45:b85384e7d825 102 D7A_ERR_FILE_NOT_RESTORABLE = -3, // 0xFD: Error restore file: File is not restorable
Jeej 45:b85384e7d825 103 D7A_ERR_PERMISSION_DENIED = -4, // 0xFC: Error access file: Insufficient permissions
Jeej 45:b85384e7d825 104 D7A_ERR_LENGTH_OVERFLOW = -5, // 0xFB: Error create file: Supplied length (in header) is beyond file limits
Jeej 45:b85384e7d825 105 D7A_ERR_ALLOC_OVERFLOW = -6, // 0xFA: Error create file: Supplied allocation (in header) is beyond file limits
Jeej 45:b85384e7d825 106 D7A_ERR_OFFSET_OVERFLOW = -7, // 0xF9: Error write: Supplied start offset is out of bounds of file allocation
Jeej 45:b85384e7d825 107 D7A_ERR_WRITE_OVERFLOW = -8, // 0xF8: Error complete write: Supplied data goes beyond file allocation
Jeej 45:b85384e7d825 108 D7A_ERR_WRITE_ERROR = -9, // 0xF7: Error write: impossible to write in storage location
Jeej 45:b85384e7d825 109 D7A_ERR_OPERATION_UNKNOWN = -10,// 0xF6: Error unknown Operation
Jeej 45:b85384e7d825 110 D7A_ERR_OPERAND_INCOMPLETE = -11,// 0xF5: Error incomplete Operand
Jeej 45:b85384e7d825 111 D7A_ERR_OPERAND_WRONG_FORMAT = -12,// 0xF4: Error wrong Operand format
Jeej 45:b85384e7d825 112 D7A_ERR_ITF_INVALID = -13,// 0xF3: Error invalid interface
Jeej 45:b85384e7d825 113 D7A_ERR_ITF_OVERFLOW = -14,// 0xF2: Error interface overflown (i.e. ressources exhausted, buffer full with data discarded)
Jeej 45:b85384e7d825 114 D7A_ERR_QUERY_FAIL = -15,// 0xF1: (Group of) Query result was false (Informative error code).
Jeej 45:b85384e7d825 115
Jeej 45:b85384e7d825 116 D7A_ERR_UNKNOWN = -128,// 0x80: Unknown error
Jeej 57:fd9c8b67ffdc 117 D7A_ERR_FS_TIMEOUT ,// 0x81: Internal FS Error
Jeej 57:fd9c8b67ffdc 118 D7A_ERR_ITF_UNKNOWN ,// 0x82: Unknown Interface
Jeej 45:b85384e7d825 119
Jeej 45:b85384e7d825 120 // Modem errors
Jeej 45:b85384e7d825 121 D7A_ERR_NOT_READY ,// The modem is not ready to recieve commands
Jeej 45:b85384e7d825 122 D7A_ERR_COM_LINK ,// A serial link timeout occured
Jeej 45:b85384e7d825 123 D7A_ERR_ILLEGAL_FID ,// The FID specified is illegal
Jeej 45:b85384e7d825 124 D7A_ERR_ILLEGAL_FILE_DEF ,// The FILE parameters specified are illegal
Jeej 45:b85384e7d825 125 D7A_ERR_CMD_TO ,// The command expired
Jeej 45:b85384e7d825 126 D7A_ERR_TX_FAILED ,// Transmission failed
Jeej 56:da34fc11e760 127
Jeej 45:b85384e7d825 128 } d7a_errors_t;
Jeej 45:b85384e7d825 129
Jeej 55:5ea18a3a01b9 130
Jeej 55:5ea18a3a01b9 131 /// Types of retry policies
Jeej 55:5ea18a3a01b9 132 /// Respond: When finished the host will be notified
Jeej 55:5ea18a3a01b9 133 /// Persist: When finished on error data is kept in the queue for next transmission
Jeej 55:5ea18a3a01b9 134 /// Depth: Number of commands kept in the queue
Jeej 55:5ea18a3a01b9 135 /// Bulk: Notifications sent only when the queue is full
Jeej 55:5ea18a3a01b9 136 /// Retries: Number of retries after initial transmission
Jeej 55:5ea18a3a01b9 137 /// Slot: Time between retries (sec)
Jeej 46:665391110051 138 typedef enum {
Jeej 55:5ea18a3a01b9 139 /// Respond: true
Jeej 55:5ea18a3a01b9 140 /// Persist: false
Jeej 55:5ea18a3a01b9 141 /// Depth: 1
Jeej 55:5ea18a3a01b9 142 /// Bulk: false
Jeej 55:5ea18a3a01b9 143 /// Retries: 0
Jeej 55:5ea18a3a01b9 144 /// Slot: 0
Jeej 46:665391110051 145 ALP_RPOL_ONESHOT = 0,
Jeej 55:5ea18a3a01b9 146 /// Respond: true
Jeej 55:5ea18a3a01b9 147 /// Persist: false
Jeej 55:5ea18a3a01b9 148 /// Depth: 1
Jeej 55:5ea18a3a01b9 149 /// Bulk: false
Jeej 55:5ea18a3a01b9 150 /// Retries: 3
Jeej 55:5ea18a3a01b9 151 /// Slot: 2
Jeej 46:665391110051 152 ALP_RPOL_SINGLE = 1,
Jeej 55:5ea18a3a01b9 153 /// Respond: true
Jeej 55:5ea18a3a01b9 154 /// Persist: false
Jeej 55:5ea18a3a01b9 155 /// Depth: 1
Jeej 55:5ea18a3a01b9 156 /// Bulk: false
Jeej 55:5ea18a3a01b9 157 /// Retries: 3
Jeej 55:5ea18a3a01b9 158 /// Slot: 2
Jeej 46:665391110051 159 ALP_RPOL_REPORT = 2,
Jeej 55:5ea18a3a01b9 160 /// Respond: false
Jeej 55:5ea18a3a01b9 161 /// Persist: true
Jeej 55:5ea18a3a01b9 162 /// Depth: 4
Jeej 55:5ea18a3a01b9 163 /// Bulk: false
Jeej 55:5ea18a3a01b9 164 /// Retries: 16
Jeej 55:5ea18a3a01b9 165 /// Slot: 20
Jeej 46:665391110051 166 ALP_RPOL_REPORT_CHECKED = 3,
Jeej 55:5ea18a3a01b9 167 /// Respond: true
Jeej 55:5ea18a3a01b9 168 /// Persist: false
Jeej 55:5ea18a3a01b9 169 /// Depth: 4
Jeej 55:5ea18a3a01b9 170 /// Bulk: true
Jeej 55:5ea18a3a01b9 171 /// Retries: 0
Jeej 55:5ea18a3a01b9 172 /// Slot: 1
Jeej 46:665391110051 173 ALP_RPOL_BULK = 4,
Jeej 55:5ea18a3a01b9 174
Jeej 55:5ea18a3a01b9 175 //ALP_RPOL_SPARE_1 = 5,
Jeej 55:5ea18a3a01b9 176 //ALP_RPOL_SPARE_2 = 6,
Jeej 55:5ea18a3a01b9 177 //ALP_RPOL_SPARE_3 = 7,
Jeej 55:5ea18a3a01b9 178 } alp_rpol_t;
Jeej 46:665391110051 179
Jeej 55:5ea18a3a01b9 180 /// Action when file notifying
Jeej 55:5ea18a3a01b9 181 typedef enum {
Jeej 55:5ea18a3a01b9 182 D7A_ACTION_NONE = 0,
Jeej 55:5ea18a3a01b9 183 /// Notify the whole file
Jeej 55:5ea18a3a01b9 184 D7A_NOTIFICATION_FULL = 100,
Jeej 55:5ea18a3a01b9 185 /// Notify only part of the file
Jeej 55:5ea18a3a01b9 186 D7A_NOTIFICATION_PART
Jeej 55:5ea18a3a01b9 187 } d7a_action_t;
Jeej 45:b85384e7d825 188
Jeej 43:28202405094d 189 //======================================================================
Jeej 43:28202405094d 190 // Structures
Jeej 43:28202405094d 191 //======================================================================
Jeej 43:28202405094d 192
Jeej 43:28202405094d 193 //======================================================================
Jeej 43:28202405094d 194 // d7a_com_config_t
Jeej 43:28202405094d 195 //----------------------------------------------------------------------
Jeej 43:28202405094d 196 /// Com port configuration structure
Jeej 43:28202405094d 197 //======================================================================
Jeej 43:28202405094d 198 typedef struct {
Jeej 43:28202405094d 199 /// Tx pin
Jeej 43:28202405094d 200 PinName tx;
Jeej 43:28202405094d 201 /// RX pin
Jeej 43:28202405094d 202 PinName rx;
Jeej 43:28202405094d 203 /// WKUP pin
Jeej 43:28202405094d 204 PinName rts;
Jeej 43:28202405094d 205 /// HST_WKUP pin
Jeej 43:28202405094d 206 PinName cts;
Jeej 43:28202405094d 207 /// Size of RX buffer
Jeej 43:28202405094d 208 uint16_t rx_buffer_size;
Jeej 43:28202405094d 209 } d7a_com_config_t;
Jeej 43:28202405094d 210
Jeej 49:81d5bddb02f0 211
Jeej 49:81d5bddb02f0 212
Jeej 43:28202405094d 213 typedef uint32_t (*WriteFileFunction)( const uint8_t file_id,
Jeej 43:28202405094d 214 const uint16_t offset,
Jeej 43:28202405094d 215 const uint16_t size,
Jeej 43:28202405094d 216 const uint8_t* const content);
Jeej 43:28202405094d 217
Jeej 43:28202405094d 218 typedef uint32_t (*ReadFileFunction)( const uint8_t file_id,
Jeej 43:28202405094d 219 const uint16_t offset,
Jeej 43:28202405094d 220 const uint16_t size,
Jeej 43:28202405094d 221 uint8_t* buf);
Jeej 43:28202405094d 222
Jeej 46:665391110051 223 typedef void (*NotifDoneFunction)( const uint8_t file_id,
Jeej 46:665391110051 224 const uint8_t error);
Jeej 46:665391110051 225
Jeej 43:28202405094d 226 //======================================================================
Jeej 43:28202405094d 227 // d7a_fs_callbacks_t
Jeej 43:28202405094d 228 //----------------------------------------------------------------------
Jeej 43:28202405094d 229 /// File system callbacks
Jeej 43:28202405094d 230 //======================================================================
Jeej 43:28202405094d 231 typedef struct {
Jeej 43:28202405094d 232 /// Write in local file
Jeej 43:28202405094d 233 WriteFileFunction write_file;
Jeej 43:28202405094d 234 /// Read from local file
Jeej 43:28202405094d 235 ReadFileFunction read_file;
Jeej 49:81d5bddb02f0 236 /// Is called when the notification is finished (depending on the retry policy)
Jeej 46:665391110051 237 NotifDoneFunction notif_done;
Jeej 49:81d5bddb02f0 238 } d7a_callbacks_t;
Jeej 43:28202405094d 239
Jeej 43:28202405094d 240 //======================================================================
Jeej 43:28202405094d 241 // fw_version_t
Jeej 43:28202405094d 242 //----------------------------------------------------------------------
Jeej 43:28202405094d 243 /// Firmware version Structure
Jeej 43:28202405094d 244 /// Used within the revision structure
Jeej 43:28202405094d 245 //======================================================================
Jeej 43:28202405094d 246 TYPEDEF_STRUCT_PACKED
Jeej 43:28202405094d 247 {
Jeej 43:28202405094d 248 /// Software identifier
Jeej 43:28202405094d 249 uint8_t id;
Jeej 43:28202405094d 250 /// Version major
Jeej 43:28202405094d 251 uint8_t major;
Jeej 43:28202405094d 252 /// Version minor
Jeej 43:28202405094d 253 uint8_t minor;
Jeej 43:28202405094d 254 /// Version patch
Jeej 43:28202405094d 255 uint16_t patch;
Jeej 43:28202405094d 256 /// Version hash
Jeej 43:28202405094d 257 uint32_t hash;
Jeej 43:28202405094d 258 } fw_version_t;
Jeej 43:28202405094d 259
Jeej 43:28202405094d 260 //======================================================================
Jeej 43:28202405094d 261 // d7a_revision_t
Jeej 43:28202405094d 262 //----------------------------------------------------------------------
Jeej 43:28202405094d 263 /// Revision Structure
Jeej 43:28202405094d 264 ///
Jeej 43:28202405094d 265 /// Usage within D7B server:
Jeej 43:28202405094d 266 /// An XML describing the File system of a device is associated to a
Jeej 43:28202405094d 267 /// couple manufacturer_id/device_id (==Device).
Jeej 43:28202405094d 268 /// Different versions of the Device's XML can exist and can be mapped
Jeej 43:28202405094d 269 /// according to fw_version id/major/minor
Jeej 43:28202405094d 270 //======================================================================
Jeej 43:28202405094d 271 TYPEDEF_STRUCT_PACKED
Jeej 43:28202405094d 272 {
Jeej 43:28202405094d 273 /// Manufacturer ID: provided by Wizzilab
Jeej 43:28202405094d 274 uint32_t manufacturer_id;
Jeej 43:28202405094d 275 /// Device ID: Arbitrary number, at user/customer choice
Jeej 43:28202405094d 276 uint32_t device_id;
Jeej 43:28202405094d 277 /// Hardware Board ID:
Jeej 43:28202405094d 278 uint32_t hw_version;
Jeej 43:28202405094d 279 /// Firmware Version: made of
Jeej 43:28202405094d 280 /// - major,minor and patch indexes : comes from versioning tool
Jeej 43:28202405094d 281 /// - fw_id : "build-flavour" : comes from build setup
Jeej 43:28202405094d 282 /// FW_ID | MAJOR | MINOR | PATCH | HASH |
Jeej 43:28202405094d 283 /// 1B | 1B | 1B | 2B | 4B |
Jeej 43:28202405094d 284 fw_version_t fw_version;
Jeej 43:28202405094d 285 /// "file-system" signature XXX: to be worked out
Jeej 43:28202405094d 286 uint32_t fs_crc;
Jeej 43:28202405094d 287 } d7a_revision_t;
Jeej 43:28202405094d 288
Jeej 43:28202405094d 289
Jeej 43:28202405094d 290 // =======================================================================
Jeej 43:28202405094d 291 // d7a_addressee_ctrl_t
Jeej 43:28202405094d 292 // -----------------------------------------------------------------------
Jeej 43:28202405094d 293 /// Bitfield structure of the Addressee control byte
Jeej 43:28202405094d 294 // =======================================================================
Jeej 43:28202405094d 295 typedef union
Jeej 43:28202405094d 296 {
Jeej 53:3e4aa4b57090 297 /// bit access fields
Jeej 43:28202405094d 298 struct {
Jeej 43:28202405094d 299 /// Network security method
Jeej 43:28202405094d 300 uint8_t nls : 4;
Jeej 43:28202405094d 301 /// ID type
Jeej 43:28202405094d 302 uint8_t idf : 2;
Jeej 43:28202405094d 303 /// RFU
Jeej 43:28202405094d 304 uint8_t rfu_6 : 1;
Jeej 43:28202405094d 305 uint8_t rfu_7 : 1;
Jeej 43:28202405094d 306 } bf;
Jeej 43:28202405094d 307
Jeej 53:3e4aa4b57090 308 /// byte access
Jeej 43:28202405094d 309 uint8_t byte;
Jeej 43:28202405094d 310
Jeej 43:28202405094d 311 } d7a_addressee_ctrl_t;
Jeej 43:28202405094d 312
Jeej 43:28202405094d 313 // =======================================================================
Jeej 43:28202405094d 314 // d7a_xcl_t
Jeej 43:28202405094d 315 // -----------------------------------------------------------------------
Jeej 43:28202405094d 316 /// Bitfield structure of the Addressee Access Class
Jeej 43:28202405094d 317 // =======================================================================
Jeej 43:28202405094d 318 typedef union
Jeej 43:28202405094d 319 {
Jeej 53:3e4aa4b57090 320 /// bit access fields
Jeej 43:28202405094d 321 struct {
Jeej 43:28202405094d 322 /// Subclass mask
Jeej 43:28202405094d 323 uint8_t m : 4;
Jeej 43:28202405094d 324 /// Specifier
Jeej 43:28202405094d 325 uint8_t s : 4;
Jeej 43:28202405094d 326 } bf;
Jeej 43:28202405094d 327
Jeej 53:3e4aa4b57090 328 /// byte access
Jeej 43:28202405094d 329 uint8_t byte;
Jeej 43:28202405094d 330
Jeej 43:28202405094d 331 } d7a_xcl_t;
Jeej 43:28202405094d 332
Jeej 43:28202405094d 333 // =======================================================================
Jeej 43:28202405094d 334 // d7a_addressee_t
Jeej 43:28202405094d 335 // -----------------------------------------------------------------------
Jeej 43:28202405094d 336 /// Structure of the D7ATP Addressee byte
Jeej 43:28202405094d 337 // =======================================================================
Jeej 43:28202405094d 338 TYPEDEF_STRUCT_PACKED
Jeej 43:28202405094d 339 {
Jeej 54:540b327bfa14 340 /// Addressee control byte
Jeej 43:28202405094d 341 d7a_addressee_ctrl_t ctrl;
Jeej 54:540b327bfa14 342 /// Access Class
Jeej 43:28202405094d 343 d7a_xcl_t xcl;
Jeej 54:540b327bfa14 344 /// UID
Jeej 43:28202405094d 345 uint8_t id[D7A_UID_LEN];
Jeej 43:28202405094d 346
Jeej 43:28202405094d 347 } d7a_addressee_t;
Jeej 43:28202405094d 348
Jeej 43:28202405094d 349
Jeej 43:28202405094d 350 //======================================================================
Jeej 43:28202405094d 351 // Prototypes
Jeej 43:28202405094d 352 //======================================================================
Jeej 43:28202405094d 353
Jeej 43:28202405094d 354 //======================================================================
Jeej 43:28202405094d 355 // d7a_open
Jeej 43:28202405094d 356 //----------------------------------------------------------------------
Jeej 43:28202405094d 357 /// @brief Open D7A driver and start the modem
Jeej 53:3e4aa4b57090 358 /// @param com_config Com port configuration structure
Jeej 53:3e4aa4b57090 359 /// @param reset_pin Reset pin
Jeej 53:3e4aa4b57090 360 /// @param callbacks File system callbacks (You cannot use local files if this is not specified)
Jeej 45:b85384e7d825 361 /// @return d7a_errors_t Error code
Jeej 43:28202405094d 362 //======================================================================
Jeej 55:5ea18a3a01b9 363 d7a_errors_t d7a_open(const d7a_com_config_t* com_config,
Jeej 55:5ea18a3a01b9 364 PinName reset_pin,
Jeej 55:5ea18a3a01b9 365 const d7a_callbacks_t* callbacks);
Jeej 43:28202405094d 366
Jeej 43:28202405094d 367 //======================================================================
Jeej 43:28202405094d 368 // d7a_close
Jeej 43:28202405094d 369 //----------------------------------------------------------------------
Jeej 43:28202405094d 370 /// @brief Close D7A driver and stop the modem
Jeej 45:b85384e7d825 371 /// @return d7a_errors_t Error code
Jeej 43:28202405094d 372 //======================================================================
Jeej 45:b85384e7d825 373 d7a_errors_t d7a_close(void);
Jeej 43:28202405094d 374
Jeej 43:28202405094d 375 //======================================================================
Jeej 43:28202405094d 376 // d7a_start
Jeej 43:28202405094d 377 //----------------------------------------------------------------------
Jeej 43:28202405094d 378 /// @brief Start the modem
Jeej 45:b85384e7d825 379 /// @return d7a_errors_t Error code
Jeej 43:28202405094d 380 //======================================================================
Jeej 45:b85384e7d825 381 d7a_errors_t d7a_start(void);
Jeej 43:28202405094d 382
Jeej 43:28202405094d 383 //======================================================================
Jeej 43:28202405094d 384 // d7a_stop
Jeej 43:28202405094d 385 //----------------------------------------------------------------------
Jeej 43:28202405094d 386 /// @brief Stop the modem (goes to low power)
Jeej 45:b85384e7d825 387 /// @return d7a_errors_t Error code
Jeej 43:28202405094d 388 //======================================================================
Jeej 45:b85384e7d825 389 d7a_errors_t d7a_stop(void);
Jeej 43:28202405094d 390
Jeej 43:28202405094d 391 //======================================================================
Jeej 43:28202405094d 392 // d7a_create
Jeej 43:28202405094d 393 //----------------------------------------------------------------------
Jeej 43:28202405094d 394 /// @brief Creates a file on the modem
Jeej 53:3e4aa4b57090 395 /// @param file_id ID of the file to create
Jeej 53:3e4aa4b57090 396 /// @param prop Type of file
Jeej 53:3e4aa4b57090 397 /// @param perm Access permissions
Jeej 53:3e4aa4b57090 398 /// @param size Length of the created file
Jeej 53:3e4aa4b57090 399 /// @param alloc Maximum size of the file
Jeej 55:5ea18a3a01b9 400 /// @param action Type of action to trigger
Jeej 55:5ea18a3a01b9 401 /// @param retry Index to the retry policy to use when notifying
Jeej 45:b85384e7d825 402 /// @return d7a_errors_t Error code
Jeej 43:28202405094d 403 //======================================================================
Jeej 55:5ea18a3a01b9 404 d7a_errors_t d7a_create(const uint8_t file_id,
Jeej 55:5ea18a3a01b9 405 d7a_fs_storage_t prop,
Jeej 55:5ea18a3a01b9 406 d7a_fs_perm_t perm,
Jeej 55:5ea18a3a01b9 407 uint32_t size,
Jeej 55:5ea18a3a01b9 408 uint32_t alloc,
Jeej 55:5ea18a3a01b9 409 d7a_action_t action = D7A_ACTION_NONE,
Jeej 55:5ea18a3a01b9 410 alp_rpol_t retry = ALP_RPOL_ONESHOT);
Jeej 43:28202405094d 411
Jeej 43:28202405094d 412 //======================================================================
Jeej 43:28202405094d 413 // d7a_declare
Jeej 43:28202405094d 414 //----------------------------------------------------------------------
mikl_andre 48:950406be9810 415 /// @brief Declare a file stored on the host to the modem (need to have implemented the fs_callbacks)
Jeej 53:3e4aa4b57090 416 /// @param file_id ID of the file to declare
Jeej 53:3e4aa4b57090 417 /// @param prop Type of file
Jeej 53:3e4aa4b57090 418 /// @param perm Access permissions
Jeej 53:3e4aa4b57090 419 /// @param size Length of the created file
Jeej 53:3e4aa4b57090 420 /// @param alloc Maximum size of the file
Jeej 55:5ea18a3a01b9 421 /// @param action Type of action to trigger
Jeej 55:5ea18a3a01b9 422 /// @param retry Index to the retry policy to use when notifying
Jeej 45:b85384e7d825 423 /// @return d7a_errors_t Error code
Jeej 43:28202405094d 424 //======================================================================
Jeej 55:5ea18a3a01b9 425 d7a_errors_t d7a_declare(const uint8_t file_id,
Jeej 55:5ea18a3a01b9 426 d7a_fs_storage_t prop,
Jeej 55:5ea18a3a01b9 427 d7a_fs_perm_t perm,
Jeej 55:5ea18a3a01b9 428 uint32_t size,
Jeej 55:5ea18a3a01b9 429 uint32_t alloc,
Jeej 55:5ea18a3a01b9 430 d7a_action_t action = D7A_ACTION_NONE,
Jeej 55:5ea18a3a01b9 431 alp_rpol_t retry = ALP_RPOL_ONESHOT);
Jeej 43:28202405094d 432
Jeej 43:28202405094d 433 //======================================================================
Jeej 43:28202405094d 434 // d7a_read
Jeej 43:28202405094d 435 //----------------------------------------------------------------------
Jeej 43:28202405094d 436 /// @brief Read data from a file
Jeej 53:3e4aa4b57090 437 /// @param file_id File ID of file to read
Jeej 53:3e4aa4b57090 438 /// @param offset Offset from which to start reading
Jeej 53:3e4aa4b57090 439 /// @param size Size of data to read
Jeej 53:3e4aa4b57090 440 /// @param buf Buffer to retrieve data
Jeej 53:3e4aa4b57090 441 /// @param addressee Addressee to an eventual distant device
Jeej 53:3e4aa4b57090 442 /// @param retry Index to the retry policy to use
Jeej 45:b85384e7d825 443 /// @return d7a_errors_t Error code
Jeej 43:28202405094d 444 //======================================================================
Jeej 55:5ea18a3a01b9 445 d7a_errors_t d7a_read(const uint8_t file_id,
Jeej 55:5ea18a3a01b9 446 const uint32_t offset,
Jeej 55:5ea18a3a01b9 447 const uint32_t size,
Jeej 55:5ea18a3a01b9 448 const uint8_t* buf,
Jeej 55:5ea18a3a01b9 449 d7a_addressee_t* addressee = NULL,
Jeej 55:5ea18a3a01b9 450 alp_rpol_t retry = ALP_RPOL_ONESHOT);
Jeej 43:28202405094d 451
Jeej 43:28202405094d 452 //======================================================================
Jeej 43:28202405094d 453 // d7a_write
Jeej 43:28202405094d 454 //----------------------------------------------------------------------
Jeej 43:28202405094d 455 /// @brief Write data to a file
Jeej 53:3e4aa4b57090 456 /// @param file_id File ID of file to write
Jeej 53:3e4aa4b57090 457 /// @param offset Offset from which to start reading
Jeej 53:3e4aa4b57090 458 /// @param size Size of data to read
Jeej 53:3e4aa4b57090 459 /// @param buf Buffer to retrieve data
Jeej 53:3e4aa4b57090 460 /// @param addressee Addressee to an eventual distant device
Jeej 53:3e4aa4b57090 461 /// @param retry Index to the retry policy to use
Jeej 53:3e4aa4b57090 462 /// @param resp Wait to see if write is OK
Jeej 45:b85384e7d825 463 /// @return d7a_errors_t Error code
Jeej 43:28202405094d 464 //======================================================================
Jeej 55:5ea18a3a01b9 465 d7a_errors_t d7a_write(const uint8_t file_id,
Jeej 55:5ea18a3a01b9 466 const uint32_t offset,
Jeej 55:5ea18a3a01b9 467 const uint32_t size,
Jeej 55:5ea18a3a01b9 468 const uint8_t* const buf,
Jeej 55:5ea18a3a01b9 469 d7a_addressee_t* addressee = NULL,
Jeej 55:5ea18a3a01b9 470 alp_rpol_t retry = ALP_RPOL_ONESHOT,
Jeej 55:5ea18a3a01b9 471 bool resp = true);
Jeej 46:665391110051 472
Jeej 46:665391110051 473 //======================================================================
mikl_andre 48:950406be9810 474 // d7a_notify
Jeej 46:665391110051 475 //----------------------------------------------------------------------
Jeej 46:665391110051 476 /// @brief Write data to a file
Jeej 53:3e4aa4b57090 477 /// @param file_id File ID of file to write
Jeej 53:3e4aa4b57090 478 /// @param offset Offset from which to start writing
Jeej 53:3e4aa4b57090 479 /// @param size Size of data to write
Jeej 46:665391110051 480 /// @return d7a_errors_t Error code
Jeej 46:665391110051 481 //======================================================================
Jeej 55:5ea18a3a01b9 482 d7a_errors_t d7a_notify(const uint8_t file_id,
Jeej 55:5ea18a3a01b9 483 const uint32_t offset = 0,
Jeej 55:5ea18a3a01b9 484 const uint32_t size = 0);
Jeej 43:28202405094d 485
Jeej 50:30440c9aeb7c 486
Jeej 50:30440c9aeb7c 487 //======================================================================
Jeej 50:30440c9aeb7c 488 // d7a_modem_print_infos
Jeej 50:30440c9aeb7c 489 //----------------------------------------------------------------------
Jeej 50:30440c9aeb7c 490 /// @brief Prints the modem infos
Jeej 50:30440c9aeb7c 491 //======================================================================
Jeej 50:30440c9aeb7c 492 void d7a_modem_print_infos(void);
Jeej 50:30440c9aeb7c 493
Jeej 50:30440c9aeb7c 494
Jeej 50:30440c9aeb7c 495
Jeej 50:30440c9aeb7c 496
Jeej 43:28202405094d 497 #endif // _D7A_H_