without warning at positive error codes.

Fork of d7a_1x by WizziLab

Committer:
trond
Date:
Tue Mar 28 13:07:36 2017 +0000
Revision:
90:eaf980532613
Parent:
87:9b885d12dbb4
Updated for testing at WizziLab

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jeej 43:28202405094d 1 #include "mbed.h"
Jeej 43:28202405094d 2 #include "rtos.h"
Jeej 43:28202405094d 3 #include "dbg.h"
Jeej 43:28202405094d 4 #include "d7a.h"
Jeej 43:28202405094d 5 #include "d7a_com.h"
Jeej 43:28202405094d 6 #include "d7a_common.h"
Jeej 43:28202405094d 7 #include "d7a_fs.h"
Jeej 43:28202405094d 8 #include "d7a_modem.h"
Jeej 43:28202405094d 9 #include "d7a_sys.h"
Jeej 43:28202405094d 10 #include "d7a_alp.h"
Jeej 43:28202405094d 11
Jeej 55:5ea18a3a01b9 12
Jeej 77:8c792719a1fc 13 static bool g_open = false;
Jeej 77:8c792719a1fc 14 static bool g_started = false;
Jeej 77:8c792719a1fc 15 static bool g_local_fs = false;
Jeej 43:28202405094d 16
Jeej 49:81d5bddb02f0 17 d7a_errors_t d7a_open(const d7a_com_config_t* com_config, PinName reset_pin, const d7a_callbacks_t* callbacks)
Jeej 43:28202405094d 18 {
Jeej 45:b85384e7d825 19 FPRINT("\r\n");
Jeej 45:b85384e7d825 20
Jeej 66:492b1d7ba370 21 d7a_errors_t err = D7A_ERR_STATE;
Jeej 49:81d5bddb02f0 22
Jeej 49:81d5bddb02f0 23 if (g_open)
Jeej 49:81d5bddb02f0 24 {
Jeej 51:644de6fe1ee7 25 WARNING(false, "D7A Already open\r\n");
Jeej 49:81d5bddb02f0 26 return D7A_ERR_NONE;
Jeej 49:81d5bddb02f0 27 }
Jeej 49:81d5bddb02f0 28
Jeej 55:5ea18a3a01b9 29 do
Jeej 55:5ea18a3a01b9 30 {
Jeej 55:5ea18a3a01b9 31
Jeej 55:5ea18a3a01b9 32 err = d7a_com_open(com_config);
Jeej 56:da34fc11e760 33 if (err < D7A_ERR_NONE) break;
Jeej 55:5ea18a3a01b9 34
Jeej 55:5ea18a3a01b9 35 err = d7a_sys_open();
Jeej 56:da34fc11e760 36 if (err < D7A_ERR_NONE) break;
Jeej 55:5ea18a3a01b9 37
Jeej 55:5ea18a3a01b9 38 err = d7a_fs_open(callbacks->write_file, callbacks->read_file);
Jeej 56:da34fc11e760 39 if (err < D7A_ERR_NONE) break;
Jeej 55:5ea18a3a01b9 40
Jeej 59:b42eae56b51b 41 err = d7a_alp_open(callbacks->unsolicited_msg);
Jeej 56:da34fc11e760 42 if (err < D7A_ERR_NONE) break;
Jeej 55:5ea18a3a01b9 43
Jeej 55:5ea18a3a01b9 44 err = d7a_modem_open(reset_pin, callbacks->notif_done);
Jeej 56:da34fc11e760 45 if (err < D7A_ERR_NONE) break;
Jeej 55:5ea18a3a01b9 46
Jeej 55:5ea18a3a01b9 47 if (callbacks->write_file != NULL && callbacks->read_file != NULL)
Jeej 55:5ea18a3a01b9 48 {
Jeej 55:5ea18a3a01b9 49 g_local_fs = true;
Jeej 55:5ea18a3a01b9 50 }
Jeej 55:5ea18a3a01b9 51
Jeej 66:492b1d7ba370 52 g_open = true;
Jeej 66:492b1d7ba370 53 g_started = true;
Jeej 55:5ea18a3a01b9 54
Jeej 87:9b885d12dbb4 55 // Check modem revision
Jeej 87:9b885d12dbb4 56 d7a_revision_t rev;
Jeej 87:9b885d12dbb4 57
Jeej 87:9b885d12dbb4 58 d7a_msg_t** msg;
Jeej 87:9b885d12dbb4 59
Jeej 87:9b885d12dbb4 60 msg = d7a_read(2, 0, sizeof(d7a_revision_t));
Jeej 87:9b885d12dbb4 61 ASSERT(msg[0]->err >= D7A_ERR_NONE, "Failed to read modem version. err %d\r\n", msg[0]->err);
Jeej 87:9b885d12dbb4 62 ASSERT(msg[0]->data, "No data in response\r\n");
Jeej 87:9b885d12dbb4 63 memcpy(&rev, msg[0]->data->buf, sizeof(d7a_revision_t));
Jeej 87:9b885d12dbb4 64 d7a_free_msg(msg);
Jeej 87:9b885d12dbb4 65
Jeej 87:9b885d12dbb4 66 if (rev.fw_version.major == 4 && rev.fw_version.minor == 6)
Jeej 87:9b885d12dbb4 67 {
Jeej 87:9b885d12dbb4 68 d7a_alp_set_root_key_size(8);
Jeej 87:9b885d12dbb4 69 }
Jeej 87:9b885d12dbb4 70 else
Jeej 87:9b885d12dbb4 71 {
Jeej 87:9b885d12dbb4 72 d7a_alp_set_root_key_size(16);
Jeej 87:9b885d12dbb4 73 }
Jeej 87:9b885d12dbb4 74
Jeej 55:5ea18a3a01b9 75 } while (0);
Jeej 49:81d5bddb02f0 76
trond 90:eaf980532613 77 WARNING(err >= D7A_ERR_NONE, "%s err %d\r\n", __FUNCTION__, err);
Jeej 49:81d5bddb02f0 78
Jeej 49:81d5bddb02f0 79 return err;
Jeej 43:28202405094d 80 }
Jeej 43:28202405094d 81
Jeej 53:3e4aa4b57090 82
Jeej 45:b85384e7d825 83 d7a_errors_t d7a_close(void)
Jeej 43:28202405094d 84 {
Jeej 45:b85384e7d825 85 FPRINT("\r\n");
Jeej 45:b85384e7d825 86
Jeej 66:492b1d7ba370 87 d7a_errors_t err = D7A_ERR_STATE;
Jeej 49:81d5bddb02f0 88
Jeej 56:da34fc11e760 89 do
Jeej 56:da34fc11e760 90 {
Jeej 56:da34fc11e760 91 err = d7a_com_close();
Jeej 56:da34fc11e760 92 if (err < D7A_ERR_NONE) break;
Jeej 56:da34fc11e760 93
Jeej 56:da34fc11e760 94 err = d7a_modem_close();
Jeej 56:da34fc11e760 95 if (err < D7A_ERR_NONE) break;
Jeej 56:da34fc11e760 96
Jeej 56:da34fc11e760 97 err = d7a_fs_close();
Jeej 56:da34fc11e760 98 if (err < D7A_ERR_NONE) break;
Jeej 56:da34fc11e760 99
Jeej 56:da34fc11e760 100 err = d7a_sys_close();
Jeej 56:da34fc11e760 101 } while (0);
Jeej 45:b85384e7d825 102
trond 90:eaf980532613 103 WARNING(err >= D7A_ERR_NONE, "%s err %d\r\n", __FUNCTION__, err);
Jeej 55:5ea18a3a01b9 104
Jeej 50:30440c9aeb7c 105 return err;
Jeej 43:28202405094d 106 }
Jeej 43:28202405094d 107
Jeej 43:28202405094d 108
Jeej 45:b85384e7d825 109 d7a_errors_t d7a_start(void)
Jeej 43:28202405094d 110 {
Jeej 45:b85384e7d825 111 FPRINT("\r\n");
Jeej 45:b85384e7d825 112
Jeej 66:492b1d7ba370 113 d7a_errors_t err = D7A_ERR_STATE;
Jeej 49:81d5bddb02f0 114
Jeej 66:492b1d7ba370 115 if (!g_started)
Jeej 66:492b1d7ba370 116 {
Jeej 66:492b1d7ba370 117 err = d7a_modem_start();
Jeej 66:492b1d7ba370 118 if (err == D7A_ERR_NONE)
Jeej 66:492b1d7ba370 119 {
Jeej 66:492b1d7ba370 120 g_started = true;
Jeej 66:492b1d7ba370 121 }
Jeej 66:492b1d7ba370 122 }
Jeej 45:b85384e7d825 123
trond 90:eaf980532613 124 WARNING(err >= D7A_ERR_NONE, "%s err %d\r\n", __FUNCTION__, err);
Jeej 55:5ea18a3a01b9 125
Jeej 50:30440c9aeb7c 126 return err;
Jeej 43:28202405094d 127 }
Jeej 43:28202405094d 128
Jeej 53:3e4aa4b57090 129
Jeej 45:b85384e7d825 130 d7a_errors_t d7a_stop(void)
Jeej 43:28202405094d 131 {
Jeej 45:b85384e7d825 132 FPRINT("\r\n");
Jeej 45:b85384e7d825 133
Jeej 66:492b1d7ba370 134 d7a_errors_t err = D7A_ERR_STATE;
Jeej 49:81d5bddb02f0 135
Jeej 66:492b1d7ba370 136 if (g_started)
Jeej 66:492b1d7ba370 137 {
Jeej 66:492b1d7ba370 138 err = d7a_modem_stop();
Jeej 66:492b1d7ba370 139 if (err == D7A_ERR_NONE)
Jeej 66:492b1d7ba370 140 {
Jeej 66:492b1d7ba370 141 g_started = false;
Jeej 66:492b1d7ba370 142 }
Jeej 66:492b1d7ba370 143 }
Jeej 45:b85384e7d825 144
trond 90:eaf980532613 145 WARNING(err >= D7A_ERR_NONE, "%s err %d\r\n", __FUNCTION__, err);
Jeej 55:5ea18a3a01b9 146
Jeej 50:30440c9aeb7c 147 return err;
Jeej 43:28202405094d 148 }
Jeej 43:28202405094d 149
Jeej 53:3e4aa4b57090 150
Jeej 71:f03727ff0f99 151 d7a_errors_t d7a_create(const uint8_t file_id, d7a_fs_storage_t prop, d7a_fs_perm_t perm, uint32_t size, uint32_t alloc, d7a_action_t action, const uint8_t interface)
Jeej 43:28202405094d 152 {
Jeej 45:b85384e7d825 153 FPRINT("\r\n");
Jeej 45:b85384e7d825 154
Jeej 66:492b1d7ba370 155 d7a_errors_t err = D7A_ERR_STATE;
Jeej 45:b85384e7d825 156
Jeej 45:b85384e7d825 157 DPRINT("Create %d.\r\n", file_id);
Jeej 45:b85384e7d825 158
Jeej 66:492b1d7ba370 159 if (g_started)
Jeej 66:492b1d7ba370 160 {
Jeej 66:492b1d7ba370 161 register_file_param_t file_infos = {
Jeej 66:492b1d7ba370 162 .fid = file_id,
Jeej 66:492b1d7ba370 163 .type = RAM,
Jeej 66:492b1d7ba370 164 .afid = action,
Jeej 71:f03727ff0f99 165 .ifid = interface,
Jeej 66:492b1d7ba370 166 .prop = (uint8_t)prop | ((action)? FS_ACT_EN : 0),
Jeej 66:492b1d7ba370 167 .perm = (uint8_t)perm,
Jeej 66:492b1d7ba370 168 .size = size,
Jeej 66:492b1d7ba370 169 .alloc = alloc,
Jeej 66:492b1d7ba370 170 };
Jeej 66:492b1d7ba370 171
Jeej 66:492b1d7ba370 172 err = d7a_modem_register(&file_infos);
Jeej 66:492b1d7ba370 173 }
Jeej 45:b85384e7d825 174
Jeej 45:b85384e7d825 175 DPRINT("Create %d Done. err %d\r\n", file_id, err);
Jeej 45:b85384e7d825 176
trond 90:eaf980532613 177 WARNING(err >= D7A_ERR_NONE, "%s FID %d err %d\r\n", __FUNCTION__, file_id, err);
Jeej 55:5ea18a3a01b9 178
Jeej 45:b85384e7d825 179 return err;
Jeej 43:28202405094d 180 }
Jeej 43:28202405094d 181
Jeej 53:3e4aa4b57090 182
Jeej 71:f03727ff0f99 183 d7a_errors_t d7a_declare(const uint8_t file_id, d7a_fs_storage_t prop, d7a_fs_perm_t perm, uint32_t length, uint32_t alloc, d7a_action_t action, const uint8_t interface)
Jeej 43:28202405094d 184 {
Jeej 45:b85384e7d825 185 FPRINT("\r\n");
Jeej 49:81d5bddb02f0 186
Jeej 66:492b1d7ba370 187 d7a_errors_t err = D7A_ERR_STATE;
Jeej 46:665391110051 188
Jeej 45:b85384e7d825 189 DPRINT("Declare %d.\r\n", file_id);
Jeej 45:b85384e7d825 190
Jeej 55:5ea18a3a01b9 191 ASSERT(g_local_fs, "You cannot delare a file if the write_file/read_file callbacks are not specified\r\n");
Jeej 49:81d5bddb02f0 192
Jeej 66:492b1d7ba370 193 if (g_started)
Jeej 66:492b1d7ba370 194 {
Jeej 66:492b1d7ba370 195 register_file_param_t file_infos = {
Jeej 66:492b1d7ba370 196 .fid = file_id,
Jeej 66:492b1d7ba370 197 .type = HOST+RAM,
Jeej 66:492b1d7ba370 198 .afid = action,
Jeej 71:f03727ff0f99 199 .ifid = interface,
Jeej 66:492b1d7ba370 200 .prop = (uint8_t)prop | ((action)? FS_ACT_EN : 0),
Jeej 66:492b1d7ba370 201 .perm = (uint8_t)perm,
Jeej 66:492b1d7ba370 202 .size = length,
Jeej 66:492b1d7ba370 203 .alloc = alloc,
Jeej 66:492b1d7ba370 204 };
Jeej 66:492b1d7ba370 205
Jeej 66:492b1d7ba370 206 err = d7a_modem_register(&file_infos);
Jeej 66:492b1d7ba370 207 }
Jeej 45:b85384e7d825 208
Jeej 45:b85384e7d825 209 DPRINT("Declare %d Done\r\n", file_id);
Jeej 45:b85384e7d825 210
trond 90:eaf980532613 211 WARNING(err >= D7A_ERR_NONE, "%s FID %d err %d\r\n", __FUNCTION__, file_id, err);
Jeej 55:5ea18a3a01b9 212
Jeej 46:665391110051 213 return err;
Jeej 43:28202405094d 214 }
Jeej 43:28202405094d 215
Jeej 53:3e4aa4b57090 216
Jeej 67:9ac9d109b80a 217 d7a_msg_t** d7a_read(const uint8_t file_id, const uint32_t offset, const uint32_t size, const uint8_t* root_key, d7a_addressee_t* addressee, alp_rpol_t retry)
Jeej 43:28202405094d 218 {
Jeej 45:b85384e7d825 219 FPRINT("\r\n");
Jeej 45:b85384e7d825 220
Jeej 66:492b1d7ba370 221 d7a_msg_t** ret = NULL;
Jeej 46:665391110051 222
Jeej 63:afd046faedb0 223 DPRINT("Read %d @%d %d bytes.\r\n", file_id, offset, size);
Jeej 46:665391110051 224
Jeej 66:492b1d7ba370 225 if (g_started)
Jeej 66:492b1d7ba370 226 {
Jeej 67:9ac9d109b80a 227 ret = d7a_alp_read_file(file_id, offset, size, root_key, addressee, retry);
Jeej 66:492b1d7ba370 228 }
Jeej 46:665391110051 229
Jeej 58:38a366236bda 230 DPRINT("Read %d Done.\r\n", file_id);
Jeej 45:b85384e7d825 231
trond 90:eaf980532613 232 WARNING(ret[0]->err >= D7A_ERR_NONE, "%s FID: %d OFF: %d LEN: %d err %d\r\n", __FUNCTION__, file_id, offset, size, ret[0]->err);
Jeej 55:5ea18a3a01b9 233
Jeej 58:38a366236bda 234 return ret;
Jeej 46:665391110051 235 }
Jeej 46:665391110051 236
Jeej 53:3e4aa4b57090 237
Jeej 67:9ac9d109b80a 238 d7a_msg_t** d7a_write(const uint8_t file_id, const uint32_t offset, const uint32_t size, const uint8_t* const buf, const uint8_t* root_key, d7a_addressee_t* addressee, alp_rpol_t retry, bool resp)
Jeej 46:665391110051 239 {
Jeej 46:665391110051 240 FPRINT("\r\n");
Jeej 46:665391110051 241
Jeej 66:492b1d7ba370 242 d7a_msg_t** ret = NULL;
Jeej 46:665391110051 243
Jeej 63:afd046faedb0 244 DPRINT("Write %d @%d %d bytes.\r\n", file_id, offset, size);
Jeej 46:665391110051 245
Jeej 66:492b1d7ba370 246 if (g_started)
Jeej 66:492b1d7ba370 247 {
Jeej 67:9ac9d109b80a 248 ret = d7a_alp_write_file(file_id, offset, size, buf, root_key, addressee, retry, resp);
Jeej 66:492b1d7ba370 249 }
Jeej 46:665391110051 250
Jeej 58:38a366236bda 251 DPRINT("Write %d Done.\r\n", file_id);
Jeej 46:665391110051 252
trond 90:eaf980532613 253 WARNING(ret[0]->err >= D7A_ERR_NONE, "%s FID: %d OFF: %d LEN: %d err %d\r\n", __FUNCTION__, file_id, offset, size, ret[0]->err);
Jeej 55:5ea18a3a01b9 254
Jeej 58:38a366236bda 255 return ret;
Jeej 43:28202405094d 256 }
Jeej 43:28202405094d 257
Jeej 67:9ac9d109b80a 258 d7a_msg_t** d7a_flush(const uint8_t file_id, const uint8_t* root_key, d7a_addressee_t* addressee, alp_rpol_t retry, bool resp)
Jeej 67:9ac9d109b80a 259 {
Jeej 67:9ac9d109b80a 260 FPRINT("\r\n");
Jeej 67:9ac9d109b80a 261
Jeej 67:9ac9d109b80a 262 d7a_msg_t** ret = NULL;
Jeej 67:9ac9d109b80a 263
Jeej 67:9ac9d109b80a 264 DPRINT("Flush %d.\r\n", file_id);
Jeej 67:9ac9d109b80a 265
Jeej 67:9ac9d109b80a 266 if (g_started)
Jeej 67:9ac9d109b80a 267 {
Jeej 67:9ac9d109b80a 268 ret = d7a_alp_flush_file(file_id, root_key, addressee, retry, resp);
Jeej 67:9ac9d109b80a 269 }
Jeej 67:9ac9d109b80a 270
Jeej 67:9ac9d109b80a 271 DPRINT("Flush %d Done.\r\n", file_id);
Jeej 67:9ac9d109b80a 272
Jeej 67:9ac9d109b80a 273 WARNING(ret[0]->err == D7A_ERR_NONE, "%s FID: %d err %d\r\n", __FUNCTION__, file_id, ret[0]->err);
Jeej 67:9ac9d109b80a 274
Jeej 67:9ac9d109b80a 275 return ret;
Jeej 67:9ac9d109b80a 276 }
Jeej 53:3e4aa4b57090 277
Jeej 46:665391110051 278 d7a_errors_t d7a_notify(const uint8_t file_id, const uint32_t offset, const uint32_t size)
Jeej 43:28202405094d 279 {
Jeej 45:b85384e7d825 280 FPRINT("\r\n");
Jeej 45:b85384e7d825 281
Jeej 66:492b1d7ba370 282 d7a_errors_t err = D7A_ERR_STATE;
Jeej 46:665391110051 283
Jeej 63:afd046faedb0 284 DPRINT("Notify %d @%d %d bytes.\r\n", file_id, offset, size);
Jeej 45:b85384e7d825 285
Jeej 66:492b1d7ba370 286 if (g_started)
Jeej 66:492b1d7ba370 287 {
Jeej 66:492b1d7ba370 288 notify_file_param_t notif = {
Jeej 66:492b1d7ba370 289 .bf.fid = file_id,
Jeej 66:492b1d7ba370 290 .bf.offset = offset,
Jeej 66:492b1d7ba370 291 .bf.size = size
Jeej 66:492b1d7ba370 292 };
Jeej 66:492b1d7ba370 293
Jeej 66:492b1d7ba370 294 err = d7a_modem_notify(&notif);
Jeej 66:492b1d7ba370 295 }
Jeej 46:665391110051 296
Jeej 46:665391110051 297 DPRINT("Notify %d Done. err %d\r\n", file_id, err);
Jeej 46:665391110051 298
trond 90:eaf980532613 299 WARNING(err >= D7A_ERR_NONE, "%s FID: %d OFF: %d LEN: %d err %d\r\n", __FUNCTION__, file_id, offset, size, err);
Jeej 55:5ea18a3a01b9 300
Jeej 46:665391110051 301 return err;
Jeej 50:30440c9aeb7c 302 }
Jeej 50:30440c9aeb7c 303
Jeej 50:30440c9aeb7c 304
Jeej 58:38a366236bda 305 void d7a_free_msg(d7a_msg_t** msg)
Jeej 58:38a366236bda 306 {
Jeej 58:38a366236bda 307 int i = 0;
Jeej 58:38a366236bda 308 while (msg[i] != NULL)
Jeej 58:38a366236bda 309 {
Jeej 59:b42eae56b51b 310 d7a_alp_free_msg(msg[i]);
Jeej 58:38a366236bda 311 i++;
Jeej 58:38a366236bda 312 }
Jeej 58:38a366236bda 313
Jeej 58:38a366236bda 314 FREE(msg);
Jeej 58:38a366236bda 315 }
Jeej 58:38a366236bda 316
Jeej 60:8d4133fbc060 317 void d7a_print_msg(d7a_msg_t** msg)
Jeej 60:8d4133fbc060 318 {
Jeej 60:8d4133fbc060 319 uint8_t i = 0;
Jeej 60:8d4133fbc060 320 while (msg[i] != NULL)
Jeej 60:8d4133fbc060 321 {
Jeej 81:c68a47483525 322 PRINT("MSG %2d ", i);
Jeej 81:c68a47483525 323
Jeej 81:c68a47483525 324 if (msg[i]->err < 0)
Jeej 81:c68a47483525 325 {
Jeej 81:c68a47483525 326 PRINT("ERROR:%5d", msg[i]->err);
Jeej 81:c68a47483525 327 }
Jeej 81:c68a47483525 328 else
Jeej 81:c68a47483525 329 {
Jeej 81:c68a47483525 330 PRINT("STATUS:%4d", msg[i]->err);
Jeej 81:c68a47483525 331 }
Jeej 81:c68a47483525 332
Jeej 60:8d4133fbc060 333 if (msg[i]->lb)
Jeej 60:8d4133fbc060 334 {
Jeej 60:8d4133fbc060 335 PRINT_DATA(" UID:", "%02X", msg[i]->id, 8, " ");
Jeej 60:8d4133fbc060 336 PRINT("LB:%3d", msg[i]->lb);
Jeej 60:8d4133fbc060 337 }
Jeej 81:c68a47483525 338
Jeej 60:8d4133fbc060 339 if (msg[i]->data)
Jeej 60:8d4133fbc060 340 {
Jeej 60:8d4133fbc060 341 PRINT(" FID: %3d OFF: %3d LEN: %3d", msg[i]->data->fid, msg[i]->data->offset, msg[i]->data->length);
Jeej 60:8d4133fbc060 342 PRINT_DATA(" DATA:", " %02X", msg[i]->data->buf, msg[i]->data->length, "");
Jeej 60:8d4133fbc060 343 }
Jeej 60:8d4133fbc060 344 PRINT("\r\n");
Jeej 60:8d4133fbc060 345 i++;
Jeej 60:8d4133fbc060 346 }
Jeej 60:8d4133fbc060 347 }
Jeej 58:38a366236bda 348
Jeej 50:30440c9aeb7c 349 void d7a_modem_print_infos(void)
Jeej 50:30440c9aeb7c 350 {
Jeej 50:30440c9aeb7c 351 uint8_t uid[8];
Jeej 50:30440c9aeb7c 352 d7a_revision_t rev;
Jeej 50:30440c9aeb7c 353
Jeej 58:38a366236bda 354 d7a_msg_t** msg;
Jeej 58:38a366236bda 355
Jeej 60:8d4133fbc060 356 msg = d7a_read(0, 0, D7A_UID_LEN);
Jeej 60:8d4133fbc060 357 ASSERT(msg[0]->err >= D7A_ERR_NONE, "Failed to read UID file. err %d\r\n", msg[0]->err);
Jeej 60:8d4133fbc060 358 ASSERT(msg[0]->data, "No data in response\r\n");
Jeej 60:8d4133fbc060 359 memcpy(uid, msg[0]->data->buf, D7A_UID_LEN);
Jeej 58:38a366236bda 360 d7a_free_msg(msg);
Jeej 58:38a366236bda 361
Jeej 58:38a366236bda 362 msg = d7a_read(2, 0, sizeof(d7a_revision_t));
Jeej 63:afd046faedb0 363 ASSERT(msg[0]->err >= D7A_ERR_NONE, "Failed to read Revision file. err %d\r\n", msg[0]->err);
Jeej 60:8d4133fbc060 364 ASSERT(msg[0]->data, "No data in response\r\n");
Jeej 59:b42eae56b51b 365 memcpy(&rev, msg[0]->data->buf, sizeof(d7a_revision_t));
Jeej 58:38a366236bda 366 d7a_free_msg(msg);
Jeej 50:30440c9aeb7c 367
Jeej 50:30440c9aeb7c 368 PRINT("------------ D7A Modem infos ------------\r\n");
Jeej 70:07b378285c95 369 PRINT_DATA(" - UID: ", "%02X", uid, 8, "\r\n");
Jeej 70:07b378285c95 370 PRINT(" - Manufacturer ID: %08X\r\n", rev.manufacturer_id);
Jeej 70:07b378285c95 371 PRINT(" - Device ID: %08X\r\n", rev.device_id);
Jeej 70:07b378285c95 372 PRINT(" - Hardware version: %08X\r\n", rev.hw_version);
Jeej 72:f71421d35d0b 373 PRINT(" - Firmware version: v%d.%d.%d\r\n", rev.fw_version.major, rev.fw_version.minor, rev.fw_version.patch);
Jeej 70:07b378285c95 374 PRINT(" - File system CRC: 0x%08x\r\n", rev.fs_crc);
Jeej 50:30440c9aeb7c 375 PRINT("-----------------------------------------\r\n");
Jeej 50:30440c9aeb7c 376
Jeej 68:d2778c6abf1a 377 }
Jeej 68:d2778c6abf1a 378
Jeej 68:d2778c6abf1a 379 d7a_errors_t d7a_wait_ready(uint32_t millisec)
Jeej 68:d2778c6abf1a 380 {
Jeej 68:d2778c6abf1a 381 return d7a_modem_wait_ready(millisec);
Jeej 43:28202405094d 382 }