blob: 68eca4f3b6edc114d43510f72a57abd2dbadec74 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
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
147typedef enum
148{
149 MBMSAL_PCELL,
150 MBMSAL_SCELL,
151} mbmsal_cell_type;
152
153typedef 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
162typedef 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
174typedef enum
175{
176 MBMSAL_EVENT_SCENARIO_NONE,
177 MBMSAL_EVENT_SCENARIO_E911,
178 MBMSAL_EVENT_SCENARIO_SRLTE,
179} mbmsal_event_scenario_enum;
180
181typedef enum
182{
183 MBMSAL_EVENT_STATUS_END,
184 MBMSAL_EVENT_STATUS_BEGIN,
185} mbmsal_event_status_enum;
186
187typedef enum
188{
189 MBMSAL_EMTSI_TYPE_NONE,
190 MBMSAL_EMTSI_TYPE_SIB16,
191 MBMSAL_EMTSI_TYPE_NITZ,
192} mbmsal_emtsi_type_enum;
193
194typedef 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
201typedef 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
221typedef 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
243typedef struct _mbms_config_req_info
244{
245 kal_bool isValid;
246 mbmsal_errc_mbms_config_req_struct info;
247} mbms_config_req_info;
248
249typedef 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
256typedef 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
263typedef 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
281typedef 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
291typedef struct _mbms_sib16_info
292{
293 kal_bool isValid;
294 mbmsal_errc_mbms_sib16_ind_struct info;
295} mbms_sib16_info;
296
297typedef 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
306typedef 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
330typedef struct _mbms_signal_info
331{
332 kal_bool isValid;
333 mbmsal_errc_mbms_info_ind_struct info;
334} mbms_signal_info;
335
336typedef 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
347typedef 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
355typedef struct _mbmsal_event_para
356{
357 mbmsal_event_scenario_enum scenario;
358 mbmsal_event_status_enum status;
359} mbmsal_event_para;
360
361typedef struct _mbmsal_emslu_data
362{
363 kal_uint32 total_servsess;
364 kal_uint8 *p_data;
365} mbmsal_emslu_data;
366
367typedef struct _mbmsal_emsesscfg_para
368{
369 kal_uint32 index;
370 kal_uint32 para_1;
371} mbmsal_emsesscfg_para;
372
373typedef 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
421typedef 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
443extern void* mbmsal_tst_mem_alloc(kal_uint32 size);
444extern 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