00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #if !defined(_SPANDSP_AT_INTERPRETER_H_)
00031 #define _SPANDSP_AT_INTERPRETER_H_
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 typedef struct at_state_s at_state_t;
00042
00043 typedef int (at_modem_control_handler_t)(at_state_t *s, void *user_data, int op, const char *num);
00044 typedef int (at_tx_handler_t)(at_state_t *s, void *user_data, const uint8_t *buf, size_t len);
00045 typedef int (at_class1_handler_t)(at_state_t *s, void *user_data, int direction, int operation, int val);
00046
00047 enum at_rx_mode_e
00048 {
00049 AT_MODE_ONHOOK_COMMAND,
00050 AT_MODE_OFFHOOK_COMMAND,
00051 AT_MODE_CONNECTED,
00052 AT_MODE_DELIVERY,
00053 AT_MODE_HDLC,
00054 AT_MODE_STUFFED
00055 };
00056
00057 enum at_call_event_e
00058 {
00059 AT_CALL_EVENT_ALERTING = 1,
00060 AT_CALL_EVENT_CONNECTED,
00061 AT_CALL_EVENT_ANSWERED,
00062 AT_CALL_EVENT_BUSY,
00063 AT_CALL_EVENT_NO_DIALTONE,
00064 AT_CALL_EVENT_NO_ANSWER,
00065 AT_CALL_EVENT_HANGUP
00066 };
00067
00068 enum at_modem_control_operation_e
00069 {
00070
00071 AT_MODEM_CONTROL_CALL,
00072
00073 AT_MODEM_CONTROL_ANSWER,
00074
00075 AT_MODEM_CONTROL_HANGUP,
00076
00077 AT_MODEM_CONTROL_OFFHOOK,
00078
00079 AT_MODEM_CONTROL_ONHOOK,
00080
00081 AT_MODEM_CONTROL_DTR,
00082
00083 AT_MODEM_CONTROL_RTS,
00084
00085 AT_MODEM_CONTROL_CTS,
00086
00087 AT_MODEM_CONTROL_CAR,
00088
00089 AT_MODEM_CONTROL_RNG,
00090
00091 AT_MODEM_CONTROL_DSR,
00092
00093 AT_MODEM_CONTROL_SETID,
00094
00095
00096 AT_MODEM_CONTROL_RESTART,
00097 AT_MODEM_CONTROL_DTE_TIMEOUT
00098 };
00099
00100 enum
00101 {
00102 AT_RESPONSE_CODE_OK = 0,
00103 AT_RESPONSE_CODE_CONNECT,
00104 AT_RESPONSE_CODE_RING,
00105 AT_RESPONSE_CODE_NO_CARRIER,
00106 AT_RESPONSE_CODE_ERROR,
00107 AT_RESPONSE_CODE_XXX,
00108 AT_RESPONSE_CODE_NO_DIALTONE,
00109 AT_RESPONSE_CODE_BUSY,
00110 AT_RESPONSE_CODE_NO_ANSWER,
00111 AT_RESPONSE_CODE_FCERROR,
00112 AT_RESPONSE_CODE_FRH3
00113 };
00114
00115
00116
00117
00118 typedef struct
00119 {
00120
00121 int echo;
00122
00123 int verbose;
00124
00125 int result_code_format;
00126
00127 int pulse_dial;
00128
00129 int double_escape;
00130
00131 int adaptive_receive;
00132
00133 uint8_t s_regs[100];
00134 } at_profile_t;
00135
00136 #if defined(__cplusplus)
00137 extern "C"
00138 {
00139 #endif
00140
00141 SPAN_DECLARE(void) at_set_at_rx_mode(at_state_t *s, int new_mode);
00142
00143 SPAN_DECLARE(void) at_put_response(at_state_t *s, const char *t);
00144
00145 SPAN_DECLARE(void) at_put_numeric_response(at_state_t *s, int val);
00146
00147 SPAN_DECLARE(void) at_put_response_code(at_state_t *s, int code);
00148
00149 SPAN_DECLARE(void) at_reset_call_info(at_state_t *s);
00150
00151
00152
00153
00154
00155
00156 SPAN_DECLARE(void) at_set_call_info(at_state_t *s, char const *id, char const *value);
00157
00158 SPAN_DECLARE(void) at_display_call_info(at_state_t *s);
00159
00160 SPAN_DECLARE(int) at_modem_control(at_state_t *s, int op, const char *num);
00161
00162 SPAN_DECLARE(void) at_call_event(at_state_t *s, int event);
00163
00164 SPAN_DECLARE(void) at_interpreter(at_state_t *s, const char *cmd, int len);
00165
00166 SPAN_DECLARE(void) at_set_class1_handler(at_state_t *s, at_class1_handler_t handler, void *user_data);
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176 SPAN_DECLARE(at_state_t *) at_init(at_state_t *s,
00177 at_tx_handler_t *at_tx_handler,
00178 void *at_tx_user_data,
00179 at_modem_control_handler_t *modem_control_handler,
00180 void *modem_control_user_data);
00181
00182
00183
00184
00185
00186 SPAN_DECLARE(int) at_release(at_state_t *s);
00187
00188
00189
00190
00191
00192 SPAN_DECLARE(int) at_free(at_state_t *s);
00193
00194 #if defined(__cplusplus)
00195 }
00196 #endif
00197
00198 #endif
00199