blob: bf0e7420696521c3d0dd59676737a6d4ed80d7ad [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) 2012
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 * Filename:
38 * ---------
39 * mbmsal_errc_struct.h
40 *
41 * Project:
42 * --------
43 * TK6291
44 *
45 * Description:
46 * ------------
47 * message, enums and common structure definition between MBMSAL and ERRC module
48 *
49 * Author:
50 * -------
51 * -------
52 *
53 * ==========================================================================
54 * $Log$
55 *
56 * 09 18 2020 bart.liang
57 * [MOLY00569501] [Gen97] TC10 patch back
58 * Merge from CL2962151
59 *
60 * 08 17 2017 danny.kuo
61 * [MOLY00270475] [MT6763][Bianco][N1][NIOT][eMBMS] eMBMS session reception on scell stops at connection release.
62 * .
63 *
64 * 10 24 2016 cynthia.chen
65 * [MOLY00208768] [MT6293] [B66] Band66 porting (ERRC part)
66 * - errc mbmsal,em part OA domain
67 *
68 * 03 16 2016 kun-lin.wu
69 * [MOLY00166918] SPV eMBMS potential bug fix
70 *
71 * 02 17 2016 kun-lin.wu
72 * [MOLY00162733] [MT6755][Jade M6][MP3][L+W][In-house FTA][eMBMS][EE][ASSERT] file:pcore/modem/l4/mbmsal/src/mbmsal_hdlr.c line:635
73 *
74 * 02 17 2016 tc.chang
75 * [MOLY00159610] eMBMS VzW/LGE requirement.
76 *
77 * 02 15 2016 kun-lin.wu
78 * [MOLY00155092] [MBMS target IT] [CMW500] ml_035f mbms video stream Assert fail: errc_spv_mbms.c 812
79 *
80 * 06 16 2015 yingwei.huang
81 * [MOLY00098916] [MT6291] MBMS reception on SCELL
82 * .
83 *
84 * 04 08 2015 morton.lin
85 * [MOLY00095623] [eRRC] Gemini virtual mode
86 * eMBMS Gemini 2PS phase-in: MBMSAL IF part
87 *
88 * 01 19 2015 morton.lin
89 * [MOLY00078855] [MT6291_DEV] eRRC eMBMS
90 * [6291][ERRC][SPV] eMBMS phase-in (UMOLY)
91 *
92 * 12 12 2014 morton.lin
93 * [MOLY00084695] [6291] Code merged from MT6291_DEV to UMOLY TRUNK
94 * MBMS IF check-in UMOLY
95 *
96 * 10 13 2014 morton.lin
97 * [MOLY00078855] [MT6291_DEV] eRRC eMBMS
98 * Add mcd_l3_inc_struct header inclusion
99 *
100 * 10 01 2014 morton.lin
101 * [MOLY00078855] [MT6291_DEV] eRRC eMBMS
102 * Use agreed TMGI structure
103 *
104 * 09 14 2014 morton.lin
105 * [MOLY00068710] [TK6291_DEV] Sync MOLY to TK6291_DEV
106 * [ERRC][MBMS][IF] Revise the additional info data structure according to the IF document
107 *
108 * 09 05 2014 morton.lin
109 * [MOLY00068710] [TK6291_DEV] Sync MOLY to TK6291_DEV
110 * [MBMSAL][ERRC][IF] Revise daylight saving time format
111 *
112 * 09 04 2014 cooper.lin
113 * [MOLY00068710] [TK6291_DEV] Sync MOLY to TK6291_DEV
114 * modify MBMSAL-SPV interface usage, and add MBMSAL_ERRC_SAP
115 *
116 * 08 20 2014 cooper.lin
117 * [MOLY00068710] [TK6291_DEV] Sync MOLY to TK6291_DEV
118 * Revise MBMS interface.
119 *
120 ****************************************************************************/
121
122
123#ifndef MBMSAL_ERRC_STRUCT_INC
124#define MBMSAL_ERRC_STRUCT_INC
125
126#include "kal_general_types.h"
127#include "mcd_l3_inc_struct.h" //For plmn_id_struct
128#include "global_type.h"
129
130#define MBMS_SERVSESS_INFO_EARFCN_NUM 5
131#define MBMS_SERVSESS_INFO_SAI_NUM 64
132
133#define MBMS_SERVICE_STATUS_MBSFN_AREA_NUM 8
134
135#define MBMS_SIB15_FREQ_SAI_NUM 64
136#define MBMS_SIB15_INTER_FREQ_NUM 8
137#define MBMS_SIB15_INTER_FREQ_MULTI_BAND_NUM 8
138
139#define MBMS_CONFIG_INFO_MCH_NUM 15
140#define MBMS_CONFIG_INFO_SERVICE_NUM 29
141
142#define MBMS_SERVSESS_STATUS_SERVICE_NUM 8
143
144#define ERRC_MBMS_MAX_CELL_NUM 2
145
146#define ERRC_MBMS_PCELL_VALID 0X01
147#define ERRC_MBMS_SCELL_VALID 0X02
148
149/* Duration of searching MBMS session (second) */
150/* From CK's information, 15 sec is too long for Expway. Recommend 8 sec. */
151#define MBMSAL_SERVSESS_SEARCH_TIME_DEFAULT 8
152
153#define MBMS_INVALID_SESSION_ID 0xFFFF
154
155#define MBMSAL_OUT_SESS_HYSTERESIS_PERIOD_DEFAULT 10 // refer to VZ_REQ_LTEEMBMS_6987
156
157#define MBMS_REPORT_TMGI_PER_MBSFN_AREA 32
158
159/***** enums definition *****/
160typedef enum
161{
162 MBMS_STATUS_COVER_MBMSAREA,
163 MBMS_STATUS_COVER_NONMBMSAREA,
164 MBMS_STATUS_COVER_OOS,
165 MBMS_STATUS_COVER_LEAVELTE,
166#if defined(__GEMINI__)
167 MBMS_STATUS_COVER_GEMINI_SUSPEND,
168 MBMS_STATUS_COVER_GEMINI_VIRTUAL_SUSPEND,
169#endif
170
171 MBMS_STATUS_SERVSESS_ACTSUCC,
172 MBMS_STATUS_SERVSESS_ACTSUCC_ALREADY_DONE,
173 MBMS_STATUS_SERVSESS_ACTFAIL, // Unknown reason
174 MBMS_STATUS_SERVSESS_ACTFAIL_MAX_SESSIONS,
175 MBMS_STATUS_SERVSESS_ACTFAIL_MISS_MCCH,
176 MBMS_STATUS_SERVSESS_ACTFAIL_MISS_TMGI,
177 MBMS_STATUS_SERVSESS_ACTFAIL_OOC,
178 MBMS_STATUS_SERVSESS_ACTFAIL_OOS,
179 MBMS_STATUS_SERVSESS_ACTFAIL_FREQUENCY_CONFLICT,
180 MBMS_STATUS_SERVSESS_DEACTSUCC,
181 MBMS_STATUS_SERVSESS_DEACTFAIL,
182
183 // For below causes:
184 // 1. MBMSAL assume SPV only report indication when there is any active session before the indication.
185 // 2. config_servsess_valid in mbmsal_errc_mbms_servsess_status_ind_struct needs to be KAL_FALSE.
186 MBMS_STATUS_SERVSESS_UPDATE,
187 MBMS_STATUS_SERVSESS_DEACT_NONMBMSAREA,
188 MBMS_STATUS_SERVSESS_DEACT_OOS,
189 MBMS_STATUS_SERVSESS_DEACT_LEAVELTE,
190 MBMS_STATUS_SERVSESS_DEACT_MBMSDISABLED
191#if defined(__GEMINI__)
192 , MBMS_STATUS_SERVSESS_DEACT_GEMINI_SUSPEND
193 , MBMS_STATUS_SERVSESS_DEACT_GEMINI_VIRTUAL_SUSPEND
194#endif
195} mbmsal_errc_mbms_status_enum;
196
197typedef enum
198{
199 DAYLIGHT_SAVING_TIME_NO_ADJ = 0,
200 DAYLIGHT_SAVING_TIME_PLUS_ONE_ADJ = 1,
201 DAYLIGHT_SAVING_TIME_PLUS_TWO_ADJ = 2,
202 DAYLIGHT_SAVING_TIME_RESV = 3
203} daylight_saving_time_enum;
204
205typedef enum
206{
207 MBMS_CONFIG_DELETE_NONE,
208
209 /* VZ_REQ_LTEEMBMS_6939:
210 * Out of MBMS service area in AP view. On-going sessions are not affected.
211 * To prevent the scenario that out of MBMS service is reported but there are active sessions,
212 * MBMSAL/AP could send DELETE_ALL_ACTIVE_SERVESS if out-session-hysteresis is configured.
213 */
214 MBMS_CONFIG_DELETE_ALL_ACTIVE_SERVSESS,
215
216 /* VzW: E911 or hVoLTE flow (AT+EMEVT). Deactivate ALL sessions. */
217 MBMS_CONFIG_DELETE_ALL_ACTIVE_AND_ONGOING_SERVSESS,
218} mbmsal_errc_config_delete_servsess_enum;
219
220/***** message structure definition *****/
221typedef struct
222{
223 plmn_id_struct plmnId;
224 kal_uint8 service_id[3]; //Format is [0], [1], [2]
225} tmgi_struct;
226
227typedef struct
228{
229 LOCAL_PARA_HDR
230 kal_bool enable;
231 kal_bool mbms_prioritized;
232 kal_uint32 search_time;
233 kal_uint32 out_sess_hysteresis_period;
234
235 kal_bool servsess_info_valid;
236 struct {
237 kal_bool enable;
238 tmgi_struct tmgi;
239 kal_uint16 sess_id; /* 0xffff = invalid */
240 kal_bool mbsfn_area_id_valid; /* according to AT Spec, although not one of usd info */
241 kal_uint8 mbsfn_area_id; /* according to AT Spec, although not one of usd info */
242 kal_bool additional_info_valid;
243 struct {
244 kal_uint8 num_of_earfcn;
245 EARFCN earfcn[MBMS_SERVSESS_INFO_EARFCN_NUM];
246 kal_uint8 num_of_sai;
247 kal_uint16 sai[MBMS_SERVSESS_INFO_SAI_NUM];
248 } additional_info;
249 } servsess_info;
250
251 /* servsess_info_valid and deact_type are excluded */
252 mbmsal_errc_config_delete_servsess_enum delete_type;
253} mbmsal_errc_mbms_config_req_struct;
254
255typedef struct
256{
257 LOCAL_PARA_HDR
258 kal_uint8 validity;
259 //ERRC_MBMS_PCELL_VALID => the following fields apply to Pcell only
260 //ERRC_MBMS_SCELL_VALID => the following fields apply to Scell only
261 //ERRC_MBMS_PCELL_VALID | ERRC_MBMS_SCELL_VALID => the following fields apply to both Pcell and Scell.
262
263 mbmsal_errc_mbms_status_enum coverage_status;
264 kal_bool serving_earfcn_valid[ERRC_MBMS_MAX_CELL_NUM];
265 EARFCN serving_earfcn[ERRC_MBMS_MAX_CELL_NUM];
266 kal_uint8 num_of_mbsfn_area_id[ERRC_MBMS_MAX_CELL_NUM];
267 kal_uint8 mbsfn_area_id[ERRC_MBMS_MAX_CELL_NUM][MBMS_SERVICE_STATUS_MBSFN_AREA_NUM];
268} mbmsal_errc_mbms_service_status_ind_struct;
269
270typedef struct
271{
272 LOCAL_PARA_HDR
273 kal_uint8 validity;
274
275 EARFCN serving_earfcn[ERRC_MBMS_MAX_CELL_NUM];
276 kal_uint8 num_of_intra_freq_sai[ERRC_MBMS_MAX_CELL_NUM];
277 kal_uint16 intra_freq_SAI[ERRC_MBMS_MAX_CELL_NUM][MBMS_SIB15_FREQ_SAI_NUM];
278 kal_uint8 num_of_inter_freq_sai_list[ERRC_MBMS_MAX_CELL_NUM];
279 struct {
280 EARFCN earfcn;
281 kal_uint8 num_of_sai;
282 kal_uint16 sai[MBMS_SIB15_FREQ_SAI_NUM];
283 kal_uint8 num_of_multi_band_info;
284 kal_uint16 multi_band_info[MBMS_SIB15_INTER_FREQ_MULTI_BAND_NUM];
285 } inter_freq_SAI_list[ERRC_MBMS_MAX_CELL_NUM][MBMS_SIB15_INTER_FREQ_NUM];
286} mbmsal_errc_mbms_sib15_ind_struct;
287
288typedef struct
289{
290 LOCAL_PARA_HDR
291 kal_uint8 validity;
292
293 EARFCN serving_earfcn[ERRC_MBMS_MAX_CELL_NUM];
294 kal_uint64 utc[ERRC_MBMS_MAX_CELL_NUM];
295 kal_bool daylight_saving_time_valid[ERRC_MBMS_MAX_CELL_NUM]; /* false = clear daylight saving time */
296 daylight_saving_time_enum daylight_saving_time[ERRC_MBMS_MAX_CELL_NUM];
297 kal_int16 leap_seconds[ERRC_MBMS_MAX_CELL_NUM]; /* 0xffff = clear */
298 kal_int8 local_time_offset[ERRC_MBMS_MAX_CELL_NUM]; /* 0xff = clear */
299 kal_uint32 rcv_os_time[ERRC_MBMS_MAX_CELL_NUM];
300} mbmsal_errc_mbms_sib16_ind_struct;
301
302typedef struct
303{
304 LOCAL_PARA_HDR
305 kal_uint8 validity;
306
307 EARFCN serving_earfcn[ERRC_MBMS_MAX_CELL_NUM];
308 kal_uint8 mbsfn_area_id[ERRC_MBMS_MAX_CELL_NUM];
309 kal_uint8 num_of_mch_info[ERRC_MBMS_MAX_CELL_NUM];
310 struct {
311 kal_uint8 num_of_servsess_info;
312 struct {
313 tmgi_struct tmgi;
314 kal_uint16 sess_id; /* 0xffff = invalid */
315 } servsess_info[MBMS_CONFIG_INFO_SERVICE_NUM];
316 } mch_info[ERRC_MBMS_MAX_CELL_NUM][MBMS_CONFIG_INFO_MCH_NUM];
317} mbmsal_errc_mbms_config_info_ind_struct;
318
319typedef struct
320{
321 LOCAL_PARA_HDR
322 EARFCN serving_earfcn;
323 mbmsal_errc_mbms_status_enum servsess_status; /* Caution: MBMSAL has assumption for each status. Refer to enum definication for details. */
324 kal_bool act_servsess_valid; /* FALSE means no active servsess */
325 struct {
326 kal_bool valid;
327 tmgi_struct tmgi;
328 kal_uint16 sess_id; /* 0xffff = invalid */
329 } act_servsess[MBMS_SERVSESS_STATUS_SERVICE_NUM];
330 kal_bool config_servsess_valid;
331 struct {
332 tmgi_struct tmgi;
333 kal_uint16 sess_id; /* 0xffff = invalid */
334 } config_servsess;
335} mbmsal_errc_mbms_servsess_status_ind_struct;
336
337/*** Requirement of TC10 ***/
338typedef struct
339{
340 kal_uint8 mbsfn_area_id;
341 kal_int16 snr;
342 kal_int16 esnr;
343 kal_uint8 num_tmgi;
344 tmgi_struct tmgi[MBMS_CONFIG_INFO_SERVICE_NUM];
345} mbmsal_errc_mbms_info_element_struct;
346
347typedef struct
348{
349 LOCAL_PARA_HDR
350 kal_uint8 num_list;
351 mbmsal_errc_mbms_info_element_struct list[MBMS_SERVICE_STATUS_MBSFN_AREA_NUM];
352} mbmsal_errc_mbms_info_ind_struct;
353/*** Requirement of TC10 ***/
354
355#endif /* ----- #ifndef MBMSAL_ERRC_STRUCT_INC ----- */
356