Trond Enger / d7a_1x

Fork of d7a_1x by WizziLab

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?

UserRevisionLine numberNew 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