b.liu | 68a94c9 | 2025-05-24 12:53:41 +0800 | [diff] [blame^] | 1 |
|
| 2 |
|
| 3 | #define GSW_HAL_SUCCESS 0
|
| 4 | #define GSW_HAL_FAIL -1
|
| 5 | #define GSW_HAL_MEM_INVAILD -2
|
| 6 |
|
| 7 | #define GSW_EU_ECALL_MAX_MSD 140
|
| 8 | #define GSW_EU_ECALL_MAX_PHONE_NUMBER 82
|
| 9 |
|
| 10 | typedef enum
|
| 11 | {
|
| 12 | GSW_EU_ECALL_TYPE_TEST = 1,
|
| 13 | GSW_EU_ECALL_TYPE_EMERGENCY = 2,
|
| 14 | GSW_EU_ECALL_TYPE_RECONFIG = 3,
|
| 15 | } gsw_eu_ecall_type_e;
|
| 16 |
|
| 17 | typedef struct
|
| 18 | {
|
| 19 | uint32_t msd_len;
|
| 20 | uint8_t msd[GSW_EU_ECALL_MAX_MSD];
|
| 21 | gsw_eu_ecall_type_e type;
|
| 22 | int32_t auto_trigger;
|
| 23 | char ecall_number[GSW_EU_ECALL_MAX_PHONE_NUMBER];
|
| 24 | } gsw_eu_ecall_info_t;
|
| 25 |
|
| 26 |
|
| 27 |
|
| 28 | typedef enum {
|
| 29 | GSW_EU_ECALL_STATE_NONE = -1,
|
| 30 | GSW_EU_ECALL_STATE_INACTIVE = 0,
|
| 31 | GSW_EU_ECALL_STATE_ORIGINATING_CALL = 1,
|
| 32 | GSW_EU_ECALL_STATE_IN_CALL_TRANSMITTING = 2,
|
| 33 | GSW_EU_ECALL_STATE_WAITING_FOR_AL_ACK = 3,
|
| 34 | GSW_EU_ECALL_STATE_IN_CALL = 4,
|
| 35 | GSW_EU_ECALL_STATE_IDLE_ALLOW_MT_ECALL = 5,
|
| 36 | } gsw_eu_ecall_state_e;
|
| 37 |
|
| 38 | typedef enum {
|
| 39 | GSW_EU_ECALL_MODE_NORMAL = 0,
|
| 40 | GSW_EU_ECALL_MODE_ONLY = 1,
|
| 41 | GSW_EU_ECALL_MODE_DEFAULT = 2,
|
| 42 | } gsw_eu_ecall_mode_e;
|
| 43 |
|
| 44 |
|
| 45 | typedef struct
|
| 46 | {
|
| 47 | uint8_t enable;
|
| 48 | uint8_t voice_mute;
|
| 49 | gsw_eu_ecall_mode_e mode;
|
| 50 | uint8_t report_event;
|
| 51 | uint16_t start_timer;
|
| 52 | uint16_t hack_timer;
|
| 53 | uint16_t trans_timer;
|
| 54 | uint8_t fail_redial;
|
| 55 | uint8_t drop_redial;
|
| 56 | uint16_t cleardown_timer;
|
| 57 | uint16_t init_timer;
|
| 58 | uint16_t nad_reg_timer;
|
| 59 | uint16_t nad_dereg_timer;
|
| 60 | uint8_t standard;
|
| 61 | uint16_t era_glonass_redial;
|
| 62 | uint16_t auto_answer; //auto_answer
|
| 63 | } gsw_eu_ecall_config_t;
|
| 64 |
|
| 65 | typedef enum {
|
| 66 | GSW_EU_ECALL_CONFIG_ENABLE = (1 << 0),
|
| 67 | GSW_EU_ECALL_CONFIG_VOICE_MUTE = (1 << 1),
|
| 68 | GSW_EU_ECALL_CONFIG_MODE = (1 << 2),
|
| 69 | GSW_EU_ECALL_CONFIG_REPORT_EVENT = (1 << 3),
|
| 70 | GSW_EU_ECALL_CONFIG_START_TIMER = (1 << 4),
|
| 71 | GSW_EU_ECALL_CONFIG_HACK_TIMER = (1 << 5),
|
| 72 | GSW_EU_ECALL_CONFIG_TRANS_TIMER = (1 << 6),
|
| 73 | GSW_EU_ECALL_CONFIG_FAIL_REDIAL = (1 << 7),
|
| 74 | GSW_EU_ECALL_CONFIG_DROP_REDIAL = (1 << 8),
|
| 75 | GSW_EU_ECALL_CONFIG_CLEARDOWN_TIMER = (1 << 9),
|
| 76 | GSW_EU_ECALL_CONFIG_INIT_TIMER = (1 << 10),
|
| 77 | GSW_EU_ECALL_CONFIG_NAD_REG_TIMER = (1 << 11),
|
| 78 | GSW_EU_ECALL_CONFIG_NAD_DEREG_TIMER = (1 << 12),
|
| 79 | GSW_EU_ECALL_CONFIG_STANDARD = (1 << 13),
|
| 80 | GSW_EU_ECALL_CONFIG_ERA_GLONASS_REDIAL = (1 << 14),
|
| 81 | GSW_EU_ECALL_CONFIG_AUTO_ANSWER = (1 << 15),
|
| 82 | } gsw_eu_ecall_config_e;
|
| 83 |
|
| 84 | typedef enum {
|
| 85 | GSW_EU_ECALL_EVENT_FAIL_NONE = 0,
|
| 86 | GSW_EU_ECALL_EVENT_FAIL_TIMEOUT = 1,
|
| 87 | GSW_EU_ECALL_EVENT_FAIL_HACK_TIMEOUT = 2,
|
| 88 | GSW_EU_ECALL_EVENT_FAIL_MSD_TRANS_TIMEOUT = 3,
|
| 89 | GSW_EU_ECALL_EVENT_FAIL_IVS_RESET_TIMEOUT = 4,
|
| 90 | GSW_EU_ECALL_EVENT_FAIL_CLEAR_DOWN_FALLBACK_TIMEOUT = 5,
|
| 91 | GSW_EU_ECALL_EVENT_FAIL_IVS_INITIATION_TIMEOUT = 6,
|
| 92 | } gsw_eu_ecall_event_fail_e;
|
| 93 |
|
| 94 | typedef enum {
|
| 95 | GSW_EU_ECALL_EVENT_PROCESS_IVS_NONE = 0,
|
| 96 | GSW_EU_ECALL_EVENT_PROCESS_IVS_START_RECEIVED_MSD = 1,
|
| 97 | GSW_EU_ECALL_EVENT_PROCESS_IVS_NACK_RECEIVED = 2,
|
| 98 | GSW_EU_ECALL_EVENT_PROCESS_IVS_ACK_RECEIVED = 3,
|
| 99 | GSW_EU_ECALL_EVENT_PROCESS_IVS_TX_COMPLETED = 4,
|
| 100 | GSW_EU_ECALL_EVENT_PROCESS_IVS_HLACK_RECEIVED = 5,
|
| 101 | } gsw_eu_ecall_event_process_e;
|
| 102 |
|
| 103 | typedef enum {
|
| 104 | GSW_EU_ECALL_EVENT_MSDUPADTE_NONE = -1,
|
| 105 | GSW_EU_ECALL_EVENT_MSDUPDATE_IVS_UPDATING_MSD = 0,
|
| 106 | GSW_EU_ECALL_EVENT_MSDUPDATE_PSAP_REQURE_UPDATE_MSD = 1,
|
| 107 | GSW_EU_ECALL_EVENT_MSDUPDATE_IVS_UPDATE_MSD_TIMEOUT = 2,
|
| 108 | } gsw_eu_ecall_event_msdupdate_e;
|
| 109 |
|
| 110 | typedef enum {
|
| 111 | GSW_EU_ECALL_EVENT_ESTABLISH_NONE = -1,
|
| 112 | GSW_EU_ECALL_EVENT_ESTABLISH_SUCCESS = 0,
|
| 113 | GSW_EU_ECALL_EVENT_ESTABLISH_FAIL = 1,
|
| 114 | } gsw_eu_ecall_event_establish_e;
|
| 115 |
|
| 116 | typedef enum {
|
| 117 | GSW_EU_ECALL_EVENT_EXTEND_STATE_NONE = -1,
|
| 118 | GSW_EU_ECALL_EVENT_EXTEND_STATE_START_RECV_SYN = 0,
|
| 119 | GSW_EU_ECALL_EVENT_EXTEND_STATE_T9_TIMEOUT = 1,
|
| 120 | GSW_EU_ECALL_EVENT_EXTEND_STATE_T10_TIMEOUT = 2,
|
| 121 | GSW_EU_ECALL_EVENT_EXTEND_STATE_IVS_ALACK_RECEIVED = 3,
|
| 122 | GSW_EU_ECALL_EVENT_EXTEND_STATE_IVS_LLACK_RECEIVED = 4,
|
| 123 | GSW_EU_ECALL_EVENT_EXTEND_STATE_STOPPED = 5,
|
| 124 | GSW_EU_ECALL_EVENT_EXTEND_STATE_ANSWERING_INCOMING_PSAP_ECALL = 6,
|
| 125 | GSW_EU_ECALL_EVENT_EXTEND_STATE_CLEARDOWN_RECEIVED = 7,
|
| 126 | GSW_EU_ECALL_EVENT_EXTEND_STATE_CALLBACK_TIMEOUT = 8,
|
| 127 | GSW_EU_ECALL_EVENT_IVS_NORMAL_CLEARING = 9,
|
| 128 | GSW_EU_ECALL_EVENT_IVS_ABNORMAL_CLEARING = 10,
|
| 129 | } gsw_eu_ecall_event_extend_state_e;
|
| 130 |
|
| 131 | typedef struct
|
| 132 | {
|
| 133 | uint8_t ori_remainder_times;
|
| 134 | uint16_t time;
|
| 135 | } gsw_eu_ecall_event_originate_fail_redial_t;
|
| 136 |
|
| 137 | typedef struct
|
| 138 | {
|
| 139 | uint8_t drop_remainder_times;
|
| 140 | uint16_t time; /* The minimum time duration between the previous call attempt */
|
| 141 | } gsw_eu_ecall_event_drop_redial_t;
|
| 142 |
|
| 143 |
|
| 144 | typedef struct
|
| 145 | {
|
| 146 | gsw_eu_ecall_event_fail_e fail;
|
| 147 | gsw_eu_ecall_event_process_e process;
|
| 148 | gsw_eu_ecall_event_msdupdate_e msdupdate;
|
| 149 | gsw_eu_ecall_event_establish_e establish;
|
| 150 | uint16_t hack_code;
|
| 151 | gsw_eu_ecall_event_originate_fail_redial_t ori_redial;
|
| 152 | gsw_eu_ecall_event_drop_redial_t drop_redial;
|
| 153 | gsw_eu_ecall_event_extend_state_e extend_state;
|
| 154 | } gsw_eu_ecall_event_t;
|
| 155 |
|
| 156 | typedef void (*gsw_eu_ecall_event_cb_f)(gsw_eu_ecall_event_t *p_event);
|
| 157 |
|
| 158 |
|
| 159 | typedef enum {
|
| 160 | GSW_EU_ECALL_MSD_TRANS_STATUS_NONE = -1,
|
| 161 | GSW_EU_ECALL_MSD_TRANS_STATUS_SUCCESS = 0,
|
| 162 | GSW_EU_ECALL_MSD_TRANS_STATUS_FAILURE = 1,
|
| 163 | } gsw_eu_ecall_msd_trans_status_e;
|
| 164 |
|
| 165 | typedef void (*gsw_eu_ecall_status_cb_f)(uint32_t id, gsw_eu_ecall_msd_trans_status_e status);
|
| 166 |
|
| 167 |
|
| 168 | /**
|
| 169 | * @brief init the Europe Ecall voice
|
| 170 | * @param [in] None
|
| 171 | * @param [out] None
|
| 172 | * @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
|
| 173 | */
|
| 174 | int32_t gsw_eu_ecall_voice_init(void);
|
| 175 |
|
| 176 | /**
|
| 177 | * @brief deinit the Europe Ecall voice
|
| 178 | * @param [in] None
|
| 179 | * @param [out] None
|
| 180 | * @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
|
| 181 | */
|
| 182 | int32_t gsw_eu_ecall_voice_deinit(void);
|
| 183 |
|
| 184 | /**
|
| 185 | * @brief start a Europe Ecall
|
| 186 | * @param [in] gsw_eu_ecall_info_t *p_info: ecall info
|
| 187 | * @param [out] None
|
| 188 | * @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
|
| 189 | */
|
| 190 | int32_t gsw_eu_ecall_start(gsw_eu_ecall_info_t *p_info);
|
| 191 |
|
| 192 | /**
|
| 193 | * @brief hangup a Europe Ecall
|
| 194 | * @param [in] None
|
| 195 | * @param [out] None
|
| 196 | * @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
|
| 197 | */
|
| 198 | int32_t gsw_eu_ecall_hangup(void);
|
| 199 |
|
| 200 | /**
|
| 201 | * @brief update msd data
|
| 202 | * @param [in] uint8_t *msd: msd data
|
| 203 | * @param [in] uint32_t msd_len: msd data length
|
| 204 | * @param [out] None
|
| 205 | * @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
|
| 206 | */
|
| 207 | int32_t gsw_eu_ecall_updateMsd(const uint8_t *msd, uint32_t msd_len);
|
| 208 |
|
| 209 | /**
|
| 210 | * @brief using push mode send msd data
|
| 211 | * @param [in] GSW_EU_ECALL_STATE_E state: ecall state
|
| 212 | * @param [out] None
|
| 213 | * @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
|
| 214 | */
|
| 215 | int32_t gsw_eu_ecall_pushMsd(gsw_eu_ecall_state_e state);
|
| 216 |
|
| 217 | /**
|
| 218 | * @brief get ecall config
|
| 219 | * @param [in] None
|
| 220 | * @param [out] gsw_eu_ecall_config_t *p_config: ecall config
|
| 221 | * @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
|
| 222 | */
|
| 223 | int32_t gsw_eu_ecall_getConfig(gsw_eu_ecall_config_t *p_config);
|
| 224 |
|
| 225 | /**
|
| 226 | * @brief set ecall config
|
| 227 | * @param [in] int32_t item: config item
|
| 228 | * @param [in] gsw_eu_ecall_config_t *p_config: config info
|
| 229 | * @param [out] None
|
| 230 | * @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
|
| 231 | */
|
| 232 | int32_t gsw_eu_ecall_setConfig(int32_t item, gsw_eu_ecall_config_t *p_config);
|
| 233 |
|
| 234 | /**
|
| 235 | * @brief register the ecall event callback
|
| 236 | * @param [in] gsw_eu_ecall_event_cb_f cb: callback
|
| 237 | * @param [out] None
|
| 238 | * @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
|
| 239 | */
|
| 240 | int32_t gsw_eu_ecall_setEventCB(gsw_eu_ecall_event_cb_f cb);
|
| 241 |
|
| 242 | /**
|
| 243 | * @brief register the ecall status callback
|
| 244 | * @p:callback
|
| 245 | * @param [out] None
|
| 246 | * @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL
|
| 247 | */
|
| 248 | int32_t gsw_eu_ecall_setStatusCB(gsw_eu_ecall_status_cb_f cb);
|
| 249 |
|
| 250 |
|
| 251 |
|
| 252 |
|
| 253 |
|
| 254 |
|
| 255 |
|
| 256 |
|
| 257 |
|