rjw | 6c1fd8f | 2022-11-30 14:33:01 +0800 | [diff] [blame] | 1 | /***************************************************************************** |
| 2 | * Copyright Statement: |
| 3 | * -------------------- |
| 4 | * This software is protected by Copyright and the information contained |
| 5 | * herein is confidential. The software may not be copied and the information |
| 6 | * contained herein may not be used or disclosed except with the written |
| 7 | * permission of MediaTek Inc. (C) 2014 |
| 8 | * |
| 9 | * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES |
| 10 | * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") |
| 11 | * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON |
| 12 | * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, |
| 13 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF |
| 14 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. |
| 15 | * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE |
| 16 | * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR |
| 17 | * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH |
| 18 | * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO |
| 19 | * NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S |
| 20 | * SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. |
| 21 | * |
| 22 | * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE |
| 23 | * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, |
| 24 | * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, |
| 25 | * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO |
| 26 | * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. |
| 27 | * |
| 28 | * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE |
| 29 | * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF |
| 30 | * LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND |
| 31 | * RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER |
| 32 | * THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC). |
| 33 | * |
| 34 | *****************************************************************************/ |
| 35 | |
| 36 | /***************************************************************************** |
| 37 | * |
| 38 | * Filename: |
| 39 | * --------- |
| 40 | * mbmsal_defs.h |
| 41 | * |
| 42 | * Project: |
| 43 | * -------- |
| 44 | * UMOLY |
| 45 | * |
| 46 | * Description: |
| 47 | * ------------ |
| 48 | * The common header files in MBMSAL sub-module. |
| 49 | * |
| 50 | * Author: |
| 51 | * ------- |
| 52 | * ------- |
| 53 | * |
| 54 | ****************************************************************************/ |
| 55 | |
| 56 | /****************************************************************************/ |
| 57 | /*! @file mbmsal_defs.h |
| 58 | @author Stan Chen |
| 59 | @date 11 JUL 2014 |
| 60 | |
| 61 | @brief The common header file in MBMSAL sub-module. |
| 62 | |
| 63 | The header file is used by all components in MBMSAL, even in l4c_mbms and |
| 64 | rmmi_mbms. Common macros, constant definitions and structure prototypes |
| 65 | are placed here. |
| 66 | */ |
| 67 | /****************************************************************************/ |
| 68 | |
| 69 | #ifndef _MBMSAL_DEFS_H |
| 70 | #define _MBMSAL_DEFS_H |
| 71 | /****************************************************************************/ |
| 72 | |
| 73 | #include "kal_public_api.h" |
| 74 | |
| 75 | #include "mcd_l3_inc_struct.h" |
| 76 | #include "mbmsal_errc_struct.h" |
| 77 | #include "l4c_common_enum.h" |
| 78 | #include "ps_public_utility.h" |
| 79 | #include "l3_inc_enums.h" |
| 80 | |
| 81 | /**************************************************************************** |
| 82 | * Definitions |
| 83 | ****************************************************************************/ |
| 84 | |
| 85 | #define MBMSAL_ASSERT ASSERT |
| 86 | #define MBMSAL_DBG_ASSERT DEBUG_ASSERT |
| 87 | |
| 88 | #define MBMSAL_FORCE_OUTPUT KAL_TRUE |
| 89 | |
| 90 | #define MBMSAL_ERRC_NOCHANGE 0xFF |
| 91 | |
| 92 | #define MBMSAL_ERRC_INVALID8 0xFF |
| 93 | #define MBMSAL_ERRC_INVALID16 0xFFFF |
| 94 | |
| 95 | #define MBMSAL_RMMI_MAX_UART_LEN (1024) |
| 96 | |
| 97 | #define MBMSAL_DEACT_CAUSE_NORMAL (0) |
| 98 | #define MBMSAL_DEACT_CAUSE_ACTFAIL (1) |
| 99 | #define MBMSAL_DEACT_CAUSE_SESSIONLOST (2) |
| 100 | #define MBMSAL_DEACT_CAUSE_NONMBMSAREA (3) |
| 101 | #define MBMSAL_DEACT_CAUSE_LEAVELTE (4) |
| 102 | |
| 103 | /* Subcause for activation failed */ |
| 104 | #define MBMSAL_ACT_FAIL_CAUSE_RESERVED (0) |
| 105 | #define MBMSAL_ACT_FAIL_CAUSE_UNKNOWN (1) |
| 106 | #define MBMSAL_ACT_FAIL_CAUSE_ALREADY_DONE (2) |
| 107 | #define MBMSAL_ACT_FAIL_CAUSE_SERVICE_DISABLED (3) |
| 108 | #define MBMSAL_ACT_FAIL_CAUSE_MISSING_CONTROL_INFO (4) |
| 109 | #define MBMSAL_ACT_FAIL_CAUSE_MISSING_TMGI (5) |
| 110 | #define MBMSAL_ACT_FAIL_CAUSE_MISSING_OOC (6) |
| 111 | #define MBMSAL_ACT_FAIL_CAUSE_MISSING_OOS (7) |
| 112 | #define MBMSAL_ACT_FAIL_CAUSE_FREQUENCY_CONFLICT (8) |
| 113 | #define MBMSAL_ACT_FAIL_CAUSE_MAXIMUM_SESSIONS (9) |
| 114 | |
| 115 | #ifdef MBMS_CONFIG_INFO_SERVICE_NUM |
| 116 | #if MBMS_CONFIG_INFO_SERVICE_NUM > 32 |
| 117 | #error MBMSAL cannot handle MBMS_CONFIG_INFO_SERVICE_NUM larger than 32. |
| 118 | #endif |
| 119 | #endif |
| 120 | |
| 121 | #define MBMSAL_MAX_LTEBAND (64) |
| 122 | |
| 123 | #define MBMSAL_TST_AUTO_RESUME_MAX_SESSION (16) |
| 124 | |
| 125 | #define MBMSAL_EMSLU_MAX_SESSION_NUM (MBMS_CONFIG_INFO_SERVICE_NUM * 3) |
| 126 | |
| 127 | #define MBMSAL_SIM_DEFAULT (0xFF) |
| 128 | |
| 129 | #ifdef __GEMINI_LTE__ |
| 130 | #define MBMSAL_MAX_SIM_NUM (2) |
| 131 | #else |
| 132 | #define MBMSAL_MAX_SIM_NUM (1) |
| 133 | #endif |
| 134 | |
| 135 | #define MBMSAL_PS_DEFAULT (0xFF) |
| 136 | |
| 137 | /**************************************************************************** |
| 138 | * Macro |
| 139 | ****************************************************************************/ |
| 140 | |
| 141 | #define MBMSAL_BCD_DECODE(_n) (((_n) & 0x0F) * 10 + ((_n) >> 4)) |
| 142 | |
| 143 | /**************************************************************************** |
| 144 | * Type definitions |
| 145 | ****************************************************************************/ |
| 146 | |
| 147 | typedef enum |
| 148 | { |
| 149 | MBMSAL_PCELL, |
| 150 | MBMSAL_SCELL, |
| 151 | } mbmsal_cell_type; |
| 152 | |
| 153 | typedef enum |
| 154 | { |
| 155 | MBMSAL_ACTION_SEND_EMSAIL_URC, |
| 156 | MBMSAL_ACTION_SEND_EMFRQ_URC, |
| 157 | MBMSAL_ACTION_SEND_EMSRV_URC, |
| 158 | MBMSAL_ACTION_SEND_EMSLU_URC, |
| 159 | MBMSAL_ACTION_SEND_EMSESS_URC, |
| 160 | } mbmsal_action_type; |
| 161 | |
| 162 | typedef enum |
| 163 | { |
| 164 | MBMSAL_COVERAGE_NO_SERVICE, |
| 165 | MBMSAL_COVERAGE_IN_LTE, |
| 166 | MBMSAL_COVERAGE_IN_MBMS, |
| 167 | MBMSAL_COVERAGE_IN_E911, |
| 168 | MBMSAL_COVERAGE_IN_SRLTE, |
| 169 | MBMSAL_COVERAGE_IN_FLIGHT_MODE, |
| 170 | MBMSAL_COVERAGE_IN_GEMINI_SUSPEND, |
| 171 | MBMSAL_COVERAGE_IN_GEMINI_VIRTUAL_SUSPEND |
| 172 | } mbmsal_coverage_enum; |
| 173 | |
| 174 | typedef enum |
| 175 | { |
| 176 | MBMSAL_EVENT_SCENARIO_NONE, |
| 177 | MBMSAL_EVENT_SCENARIO_E911, |
| 178 | MBMSAL_EVENT_SCENARIO_SRLTE, |
| 179 | } mbmsal_event_scenario_enum; |
| 180 | |
| 181 | typedef enum |
| 182 | { |
| 183 | MBMSAL_EVENT_STATUS_END, |
| 184 | MBMSAL_EVENT_STATUS_BEGIN, |
| 185 | } mbmsal_event_status_enum; |
| 186 | |
| 187 | typedef enum |
| 188 | { |
| 189 | MBMSAL_EMTSI_TYPE_NONE, |
| 190 | MBMSAL_EMTSI_TYPE_SIB16, |
| 191 | MBMSAL_EMTSI_TYPE_NITZ, |
| 192 | } mbmsal_emtsi_type_enum; |
| 193 | |
| 194 | typedef enum |
| 195 | { |
| 196 | MBMSAL_EMSESSCFG_INDEX_NONE = 0, |
| 197 | MBMSAL_EMSESSCFG_INDEX_TMGI_SEARCH_TIME = 1, |
| 198 | MBMSAL_EMSESSCFG_INDEX_INVALID, |
| 199 | } mbmsal_emsesscfg_index_enum; |
| 200 | |
| 201 | typedef struct _mbmsal_tst_info |
| 202 | { |
| 203 | struct { |
| 204 | kal_bool isEnabled; |
| 205 | kal_uint8 last_index; |
| 206 | kal_uint8 num; |
| 207 | struct mbmsal_tst_resume_servsess_info { |
| 208 | tmgi_struct tmgi; |
| 209 | kal_uint16 sess_id; /* 0xffff = invalid */ |
| 210 | kal_bool additional_info_valid; |
| 211 | struct { |
| 212 | kal_uint8 num_of_earfcn; |
| 213 | kal_uint32 earfcn[MBMS_SERVSESS_INFO_EARFCN_NUM]; |
| 214 | kal_uint8 num_of_sai; |
| 215 | kal_uint16 sai[MBMS_SERVSESS_INFO_SAI_NUM]; |
| 216 | } additional_info; |
| 217 | } servsess_info[MBMSAL_TST_AUTO_RESUME_MAX_SESSION]; |
| 218 | } auto_resume; |
| 219 | } mbmsal_tst_info; |
| 220 | |
| 221 | typedef struct _mbmsal_gtest_fp |
| 222 | { |
| 223 | kal_bool (*msg_send5)(module_type _src_mod_id, module_type _dest_mod_id, |
| 224 | sap_type _sap_id, msg_type _msg_id, |
| 225 | local_para_struct *_local_para_ptr); |
| 226 | |
| 227 | void (*rmmi_write_to_uart)(kal_uint8 *buffer, kal_uint16 length, |
| 228 | kal_bool stuff); |
| 229 | void (*rmmi_final_rsp_generator)(kal_bool ret_val, kal_uint8 *buffer, |
| 230 | kal_uint16 string_length); |
| 231 | |
| 232 | kal_bool (*sbp_query_md_feature)(sbp_md_feature_enum feature); |
| 233 | kal_uint32 (*kal_get_systicks)(void); |
| 234 | rat_enum (*get_rat_mode)(void); |
| 235 | rat_enum (*get_request_rat_mode)(void); |
| 236 | |
| 237 | void (*query_LteBand)(kal_uint32 lte_band[]); |
| 238 | |
| 239 | } mbmsal_gtest_fp; |
| 240 | |
| 241 | /****************************************************************************/ |
| 242 | |
| 243 | typedef struct _mbms_config_req_info |
| 244 | { |
| 245 | kal_bool isValid; |
| 246 | mbmsal_errc_mbms_config_req_struct info; |
| 247 | } mbms_config_req_info; |
| 248 | |
| 249 | typedef struct _mbms_sib13_servsess_info |
| 250 | { |
| 251 | tmgi_struct tmgi; |
| 252 | kal_uint16 sess_id; /* 0xffff = invalid */ |
| 253 | kal_bool status; |
| 254 | } mbms_sib13_servsess_info; |
| 255 | |
| 256 | typedef struct _mbms_sib13_mbsfn_mch_info { |
| 257 | kal_bool isValid; |
| 258 | kal_uint8 mbsfn_area_id; |
| 259 | kal_uint16 servsess_count; |
| 260 | mbms_sib13_servsess_info servsess_info[MBMS_CONFIG_INFO_MCH_NUM * MBMS_CONFIG_INFO_SERVICE_NUM]; |
| 261 | } mbms_sib13_mbsfn_mch_info; |
| 262 | |
| 263 | typedef struct _mbms_service_info |
| 264 | { |
| 265 | kal_uint8 validity; |
| 266 | |
| 267 | kal_bool isEmsrvOn; |
| 268 | kal_bool isEmfrqOn; |
| 269 | kal_bool isEmsluOn; |
| 270 | |
| 271 | mbmsal_errc_mbms_status_enum coverage_status; |
| 272 | kal_bool serving_earfcn_valid[ERRC_MBMS_MAX_CELL_NUM]; |
| 273 | kal_uint32 serving_earfcn[ERRC_MBMS_MAX_CELL_NUM]; |
| 274 | |
| 275 | kal_uint8 num_of_mbsfn_area_id[ERRC_MBMS_MAX_CELL_NUM]; |
| 276 | kal_uint8 mbsfn_area_id[ERRC_MBMS_MAX_CELL_NUM][MBMS_SERVICE_STATUS_MBSFN_AREA_NUM]; |
| 277 | |
| 278 | mbms_sib13_mbsfn_mch_info mbsfn_mch_info[ERRC_MBMS_MAX_CELL_NUM][MBMS_SERVICE_STATUS_MBSFN_AREA_NUM]; |
| 279 | } mbms_sib13_info; |
| 280 | |
| 281 | typedef struct _mbms_sib15_info |
| 282 | { |
| 283 | kal_bool isValid; |
| 284 | kal_bool isEmsailOn; |
| 285 | mbmsal_errc_mbms_sib15_ind_struct info; |
| 286 | |
| 287 | /* Support to Band 256 */ |
| 288 | kal_uint32 lte_band[8]; |
| 289 | } mbms_sib15_info; |
| 290 | |
| 291 | typedef struct _mbms_sib16_info |
| 292 | { |
| 293 | kal_bool isValid; |
| 294 | mbmsal_errc_mbms_sib16_ind_struct info; |
| 295 | } mbms_sib16_info; |
| 296 | |
| 297 | typedef struct _mbms_nw_time_info |
| 298 | { |
| 299 | kal_bool time_zone_valid; |
| 300 | nw_time_zone_time_struct time_zone; |
| 301 | |
| 302 | kal_bool daylight_saving_time_valid; |
| 303 | kal_uint8 daylight_saving_time; |
| 304 | } mbms_nw_time_info; |
| 305 | |
| 306 | typedef struct _mbms_servsess_info |
| 307 | { |
| 308 | kal_bool isValid; |
| 309 | |
| 310 | kal_bool act_servsess_valid; |
| 311 | struct { |
| 312 | kal_bool valid; |
| 313 | tmgi_struct tmgi; |
| 314 | kal_uint16 sess_id; /* 0xffff = invalid */ |
| 315 | } act_servsess[MBMS_SERVSESS_STATUS_SERVICE_NUM]; |
| 316 | |
| 317 | kal_uint8 report_servsess_total; |
| 318 | kal_uint8 report_servsess_index; |
| 319 | |
| 320 | kal_bool report_servsess_activated; |
| 321 | kal_uint8 report_servsess_cause; |
| 322 | kal_uint8 report_servsess_subcause; |
| 323 | struct { |
| 324 | tmgi_struct tmgi; |
| 325 | kal_uint16 sess_id; /* 0xffff = invalid */ |
| 326 | } report_servsess; |
| 327 | |
| 328 | } mbms_servsess_info; |
| 329 | |
| 330 | typedef struct _mbms_signal_info |
| 331 | { |
| 332 | kal_bool isValid; |
| 333 | mbmsal_errc_mbms_info_ind_struct info; |
| 334 | } mbms_signal_info; |
| 335 | |
| 336 | typedef struct _mbms_binding_info |
| 337 | { |
| 338 | kal_uint8 embind_src_id; /*!< store l4c src id under embind |
| 339 | procedure */ |
| 340 | kal_bool isEnabled; |
| 341 | l4c_tcm_l2p_enum l2p_type; |
| 342 | kal_uint32 channel_id; |
| 343 | kal_uint32 netif_id; |
| 344 | kal_uint8 bind_ps; |
| 345 | } mbms_binding_info; |
| 346 | |
| 347 | typedef struct _mbmsal_config_para |
| 348 | { |
| 349 | kal_uint32 out_mbms_hysteresis_period; |
| 350 | kal_uint32 out_sess_hysteresis_period; |
| 351 | kal_uint32 in_mbms_hysteresis_period; |
| 352 | |
| 353 | } mbmsal_config_para; |
| 354 | |
| 355 | typedef struct _mbmsal_event_para |
| 356 | { |
| 357 | mbmsal_event_scenario_enum scenario; |
| 358 | mbmsal_event_status_enum status; |
| 359 | } mbmsal_event_para; |
| 360 | |
| 361 | typedef struct _mbmsal_emslu_data |
| 362 | { |
| 363 | kal_uint32 total_servsess; |
| 364 | kal_uint8 *p_data; |
| 365 | } mbmsal_emslu_data; |
| 366 | |
| 367 | typedef struct _mbmsal_emsesscfg_para |
| 368 | { |
| 369 | kal_uint32 index; |
| 370 | kal_uint32 para_1; |
| 371 | } mbmsal_emsesscfg_para; |
| 372 | |
| 373 | typedef struct _mbmsal_context |
| 374 | { |
| 375 | kal_uint8 sim_current; |
| 376 | kal_uint8 sim_ongoing; |
| 377 | |
| 378 | // MBMSAL configurations |
| 379 | kal_uint16 id; /*!< context ID */ |
| 380 | |
| 381 | kal_bool gtest_isOn; /*!< gtest flag */ |
| 382 | mbmsal_gtest_fp *gtest_fp; /*!< gtest function pointers */ |
| 383 | |
| 384 | // MBMSAL instances |
| 385 | mbms_binding_info info_binding; /*!< cache hif binding info from |
| 386 | TE */ |
| 387 | |
| 388 | mbms_config_req_info info_config_req;/*!< cache config request from |
| 389 | TE */ |
| 390 | mbms_servsess_info info_servsess; /*!< cache session status from |
| 391 | eRRC */ |
| 392 | mbms_sib13_info info_sib13; /*!< cache sib13 info from eRRC */ |
| 393 | mbms_sib15_info info_sib15; /*!< cache sib15 info from eRRC */ |
| 394 | mbms_sib16_info info_sib16; /*!< cache sib16 info from eRRC */ |
| 395 | mbms_nw_time_info info_nw_time; /*!< cache NW time info from L4C */ |
| 396 | |
| 397 | // VZW: Configuration Parameters |
| 398 | mbmsal_config_para para_config; |
| 399 | |
| 400 | // AT+EMEVT related |
| 401 | mbmsal_event_para para_event; |
| 402 | |
| 403 | // MBMSAL tst related |
| 404 | mbmsal_tst_info info_tst; |
| 405 | |
| 406 | mbmsal_coverage_enum last_mbms_status; |
| 407 | kal_uint32 last_frq[ERRC_MBMS_MAX_CELL_NUM + 1]; |
| 408 | mbmsal_emslu_data last_emslu_data; |
| 409 | |
| 410 | // SIM cfun states updated by L4 |
| 411 | kal_uint8 mbmsal_cfun_state[MBMSAL_MAX_SIM_NUM]; |
| 412 | |
| 413 | // For NITZ elapse time calculation |
| 414 | kal_uint32 mbmsal_systicks; |
| 415 | |
| 416 | // For TC10 Signal strength report |
| 417 | mbms_signal_info info_signal; |
| 418 | |
| 419 | } mbmsal_context; |
| 420 | |
| 421 | typedef struct _mbmsal_internal_ind |
| 422 | { |
| 423 | LOCAL_PARA_HDR |
| 424 | |
| 425 | mbmsal_action_type action; |
| 426 | mbms_servsess_info info; |
| 427 | kal_bool force_report; |
| 428 | } mbmsal_internal_ind_struct; |
| 429 | |
| 430 | /**************************************************************************** |
| 431 | * Macros |
| 432 | ****************************************************************************/ |
| 433 | |
| 434 | /*#define mbmsal_trace(...) kal_brief_trace(__VA_ARGS__)*/ |
| 435 | |
| 436 | #ifndef __GTEST_ENABLE__ |
| 437 | #define mbmsal_mem_alloc(size) get_ctrl_buffer(size) |
| 438 | #define mbmsal_mem_free(ptr) free_ctrl_buffer(ptr) |
| 439 | #else |
| 440 | #define mbmsal_mem_alloc(size) mbmsal_tst_mem_alloc(size) |
| 441 | #define mbmsal_mem_free(ptr) mbmsal_tst_mem_free(ptr) |
| 442 | |
| 443 | extern void* mbmsal_tst_mem_alloc(kal_uint32 size); |
| 444 | extern void mbmsal_tst_mem_free(void *buf); |
| 445 | #endif |
| 446 | |
| 447 | /**************************************************************************** |
| 448 | * Unit Test |
| 449 | ****************************************************************************/ |
| 450 | |
| 451 | #ifdef __GTEST_ENABLE__ |
| 452 | #define STATIC |
| 453 | #else |
| 454 | #define STATIC static |
| 455 | #endif |
| 456 | |
| 457 | /****************************************************************************/ |
| 458 | #endif /* _MBMSAL_DEFS_H */ |
| 459 | |