Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of d7a_1x by
include/d7a_modem.h@56:da34fc11e760, 2016-09-08 (annotated)
- Committer:
- Jeej
- Date:
- Thu Sep 08 09:30:24 2016 +0000
- Revision:
- 56:da34fc11e760
- Parent:
- 52:c7a58fc48bd2
Implemented close functions.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Jeej | 25:aac250164497 | 1 | #ifndef _D7A_MODEM_H_ |
| Jeej | 25:aac250164497 | 2 | #define _D7A_MODEM_H_ |
| Jeej | 25:aac250164497 | 3 | |
| Jeej | 30:d775c1409849 | 4 | |
| Jeej | 25:aac250164497 | 5 | //====================================================================== |
| Jeej | 25:aac250164497 | 6 | // MODEM commands over COM port |
| Jeej | 25:aac250164497 | 7 | //====================================================================== |
| Jeej | 25:aac250164497 | 8 | typedef enum |
| Jeej | 46:665391110051 | 9 | { //============================================ |
| Jeej | 45:b85384e7d825 | 10 | // COMMANDS |
| Jeej | 45:b85384e7d825 | 11 | //============================================ |
| Jeej | 52:c7a58fc48bd2 | 12 | // Soft-reset Modem Device |
| Jeej | 52:c7a58fc48bd2 | 13 | // ARGS: none |
| Jeej | 29:8e7c5c1e9aab | 14 | WM_CMD_RST = 0x01, |
| Jeej | 45:b85384e7d825 | 15 | |
| Jeej | 52:c7a58fc48bd2 | 16 | // Start D7A communication stack |
| Jeej | 52:c7a58fc48bd2 | 17 | // ARGS: none TODO: pass number of fifos ? |
| Jeej | 29:8e7c5c1e9aab | 18 | WM_CMD_D7A_STACK_START = 0x02, |
| Jeej | 45:b85384e7d825 | 19 | |
| Jeej | 52:c7a58fc48bd2 | 20 | // Stop D7A communication stack |
| Jeej | 52:c7a58fc48bd2 | 21 | // ARGS: none |
| Jeej | 29:8e7c5c1e9aab | 22 | WM_CMD_D7A_STACK_STOP = 0x03, |
| Jeej | 45:b85384e7d825 | 23 | |
| Jeej | 52:c7a58fc48bd2 | 24 | // Register a File for notification |
| Jeej | 52:c7a58fc48bd2 | 25 | // ARGS: register_file_param_t |
| Jeej | 29:8e7c5c1e9aab | 26 | WM_CMD_REGISTER_FILE = 0x04, |
| Jeej | 45:b85384e7d825 | 27 | |
| Jeej | 52:c7a58fc48bd2 | 28 | // Notify a (previously registered) file |
| Jeej | 52:c7a58fc48bd2 | 29 | // ARGS: notify_file_param_t |
| Jeej | 29:8e7c5c1e9aab | 30 | WM_CMD_NOTIFY_FILE = 0x05, |
| Jeej | 25:aac250164497 | 31 | |
| Jeej | 52:c7a58fc48bd2 | 32 | // Command that will be instantly answered with WM_OK |
| Jeej | 52:c7a58fc48bd2 | 33 | // ARGS: none |
| Jeej | 45:b85384e7d825 | 34 | WM_CMD_READY = 0x06, |
| Jeej | 45:b85384e7d825 | 35 | |
| Jeej | 45:b85384e7d825 | 36 | //============================================ |
| Jeej | 45:b85384e7d825 | 37 | // RESPONSES |
| Jeej | 45:b85384e7d825 | 38 | //============================================ |
| Jeej | 52:c7a58fc48bd2 | 39 | // Send by the Modem Device after a command has been executed/taken |
| Jeej | 52:c7a58fc48bd2 | 40 | // into account, and the Modem is ready to handle a new command. |
| Jeej | 52:c7a58fc48bd2 | 41 | // ARGS: none |
| Jeej | 45:b85384e7d825 | 42 | WM_OK = 0x80, |
| Jeej | 25:aac250164497 | 43 | |
| Jeej | 52:c7a58fc48bd2 | 44 | // Send by the Modem Device after a (re)boot. |
| Jeej | 52:c7a58fc48bd2 | 45 | // ARGS: boot_status_t |
| Jeej | 45:b85384e7d825 | 46 | WM_BOOT = 0x81, |
| Jeej | 45:b85384e7d825 | 47 | |
| Jeej | 52:c7a58fc48bd2 | 48 | // Send by the Modem Device in case of failing command |
| Jeej | 52:c7a58fc48bd2 | 49 | // ARGS: wm_error_code_t (u8) |
| Jeej | 45:b85384e7d825 | 50 | WM_ERROR = 0x82, |
| Jeej | 30:d775c1409849 | 51 | |
| Jeej | 52:c7a58fc48bd2 | 52 | // Send by the Modem Device upon the end of a File notification. |
| Jeej | 52:c7a58fc48bd2 | 53 | // This response is generated depending on ALP's Retry-Policy ('respond' field set) |
| Jeej | 52:c7a58fc48bd2 | 54 | // ARGS: wm_notif_result_t |
| Jeej | 46:665391110051 | 55 | WM_NOTIF_DONE = 0x83, |
| Jeej | 30:d775c1409849 | 56 | } wm_cmd_t; |
| Jeej | 25:aac250164497 | 57 | |
| Jeej | 45:b85384e7d825 | 58 | typedef enum { |
| Jeej | 45:b85384e7d825 | 59 | WM_ERR_NONE = 0, |
| Jeej | 45:b85384e7d825 | 60 | WM_ERR_NOT_READY = 1, |
| Jeej | 45:b85384e7d825 | 61 | WM_ERR_COM_LINK = 2, |
| Jeej | 45:b85384e7d825 | 62 | WM_ERR_ILLEGAL_FID = 3, |
| Jeej | 45:b85384e7d825 | 63 | WM_ERR_ILLEGAL_FILE_DEF = 4, |
| Jeej | 45:b85384e7d825 | 64 | |
| Jeej | 45:b85384e7d825 | 65 | WM_ERR_UNKNOWN = 0xff |
| Jeej | 45:b85384e7d825 | 66 | } wm_error_code_t; |
| Jeej | 45:b85384e7d825 | 67 | |
| Jeej | 30:d775c1409849 | 68 | typedef union { |
| Jeej | 30:d775c1409849 | 69 | uint32_t w; |
| Jeej | 30:d775c1409849 | 70 | struct { |
| Jeej | 30:d775c1409849 | 71 | uint32_t cause : 8; |
| Jeej | 30:d775c1409849 | 72 | uint32_t rfu : 8; |
| Jeej | 30:d775c1409849 | 73 | uint32_t nb_boot :16; |
| Jeej | 30:d775c1409849 | 74 | } bf; |
| Jeej | 30:d775c1409849 | 75 | } boot_status_t; |
| Jeej | 26:9f0b9833cac6 | 76 | |
| Jeej | 30:d775c1409849 | 77 | typedef struct { |
| Jeej | 30:d775c1409849 | 78 | union { |
| Jeej | 30:d775c1409849 | 79 | uint8_t b[8]; |
| Jeej | 30:d775c1409849 | 80 | uint32_t w[2]; |
| Jeej | 30:d775c1409849 | 81 | } uid; |
| Jeej | 30:d775c1409849 | 82 | uint8_t calib; |
| Jeej | 30:d775c1409849 | 83 | } wm_status_t; |
| Jeej | 30:d775c1409849 | 84 | |
| Jeej | 30:d775c1409849 | 85 | |
| Jeej | 45:b85384e7d825 | 86 | TYPEDEF_STRUCT_PACKED { |
| Jeej | 43:28202405094d | 87 | uint8_t fid; |
| Jeej | 43:28202405094d | 88 | uint8_t type; |
| Jeej | 43:28202405094d | 89 | uint8_t afid; |
| Jeej | 43:28202405094d | 90 | uint8_t ifid; |
| Jeej | 43:28202405094d | 91 | uint8_t prop; |
| Jeej | 43:28202405094d | 92 | uint8_t perm; |
| Jeej | 43:28202405094d | 93 | uint32_t size; |
| Jeej | 43:28202405094d | 94 | uint32_t alloc; |
| Jeej | 43:28202405094d | 95 | } register_file_param_t; |
| Jeej | 27:934ab7455115 | 96 | |
| Jeej | 46:665391110051 | 97 | typedef union { |
| Jeej | 46:665391110051 | 98 | uint32_t w; |
| Jeej | 46:665391110051 | 99 | struct { |
| Jeej | 46:665391110051 | 100 | uint32_t fid : 8; |
| Jeej | 46:665391110051 | 101 | uint32_t offset : 12; |
| Jeej | 46:665391110051 | 102 | uint32_t size : 12; |
| Jeej | 46:665391110051 | 103 | } bf; |
| Jeej | 46:665391110051 | 104 | } notify_file_param_t; |
| Jeej | 46:665391110051 | 105 | |
| Jeej | 46:665391110051 | 106 | |
| Jeej | 49:81d5bddb02f0 | 107 | d7a_errors_t d7a_modem_open(PinName reset_pin, NotifDoneFunction nd); |
| Jeej | 56:da34fc11e760 | 108 | d7a_errors_t d7a_modem_close(void); |
| Jeej | 45:b85384e7d825 | 109 | d7a_errors_t d7a_modem_reset(void); |
| Jeej | 45:b85384e7d825 | 110 | d7a_errors_t d7a_modem_wait_ready(uint32_t millisec = osWaitForever); |
| Jeej | 25:aac250164497 | 111 | void d7a_modem_new_pkt(d7a_com_rx_msg_t* pkt); |
| Jeej | 43:28202405094d | 112 | d7a_com_rx_msg_t* d7a_modem_wait_pkt(uint32_t millisec = osWaitForever); |
| Jeej | 30:d775c1409849 | 113 | void d7a_modem_msg(uint8_t value, uint8_t* buf, uint8_t len); |
| Jeej | 45:b85384e7d825 | 114 | d7a_errors_t d7a_modem_register(register_file_param_t* file_infos); |
| Jeej | 46:665391110051 | 115 | d7a_errors_t d7a_modem_notify(notify_file_param_t* notif); |
| Jeej | 45:b85384e7d825 | 116 | d7a_errors_t d7a_modem_start(void); |
| Jeej | 45:b85384e7d825 | 117 | d7a_errors_t d7a_modem_stop(void); |
| Jeej | 25:aac250164497 | 118 | |
| Jeej | 25:aac250164497 | 119 | |
| Jeej | 25:aac250164497 | 120 | #endif |
