without warning at positive error codes.
Fork of d7a_1x by
src/d7a.cpp@90:eaf980532613, 2017-03-28 (annotated)
- 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?
User | Revision | Line number | New 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(¬if); |
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 | } |