blob: 883d578e0fb765da5e174792cf74a0e8740ad954 [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) 2001
8*
9*****************************************************************************/
10
11/*****************************************************************************
12 *
13 * Filename:
14 * ---------
15 * l1a_dm_private.h
16 *
17 * Project:
18 * --------
19 * Maui_Software
20 *
21 * Description:
22 * ------------
23 * This file contains definitions used by L1A dual mode
24 *
25 * Author:
26 * -------
27 * -------
28 *
29 *============================================================================
30 * HISTORY
31 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
32 *------------------------------------------------------------------------------
33 * removed!
34 * removed!
35 * removed!
36 *
37 * removed!
38 * removed!
39 * removed!
40 * removed!
41 *
42 * removed!
43 * removed!
44 * removed!
45 * removed!
46 *
47 * removed!
48 * removed!
49 * removed!
50 *
51 * removed!
52 * removed!
53 *
54 * removed!
55 * removed!
56 *
57 * removed!
58 * removed!
59 * removed!
60 *
61 * removed!
62 * removed!
63 * removed!
64 *
65 * removed!
66 * removed!
67 * removed!
68 *
69 * removed!
70 * removed!
71 *
72 * removed!
73 * removed!
74 * removed!
75 *
76 * removed!
77 * removed!
78 * removed!
79 *
80 * removed!
81 * removed!
82 * removed!
83 *
84 * removed!
85 * removed!
86 * removed!
87 *
88 * removed!
89 * removed!
90 * removed!
91 *
92 * removed!
93 * removed!
94 *
95 * removed!
96 * removed!
97 * removed!
98 *
99 * removed!
100 * removed!
101 * removed!
102 *
103 * removed!
104 * removed!
105 * removed!
106 *
107 * removed!
108 * removed!
109 *
110 * removed!
111 * removed!
112 * removed!
113 *
114 * removed!
115 * removed!
116 *
117 * removed!
118 * removed!
119 *
120 * removed!
121 * removed!
122 * removed!
123 *
124 * removed!
125 * removed!
126 * removed!
127 *
128 * removed!
129 * removed!
130 * removed!
131 *
132 * removed!
133 * removed!
134 * removed!
135 *
136 * removed!
137 * removed!
138 * removed!
139 *
140 * removed!
141 * removed!
142 * removed!
143 * removed!
144 * removed!
145 * removed!
146 * removed!
147 * removed!
148 *
149 * removed!
150 * removed!
151 * removed!
152 *
153 * removed!
154 * removed!
155 * removed!
156 *
157 * removed!
158 * removed!
159 * removed!
160 *
161 * removed!
162 * removed!
163 * removed!
164 *
165 * removed!
166 * removed!
167 * removed!
168 *
169 * removed!
170 * removed!
171 * removed!
172 *
173 * removed!
174 * removed!
175 * removed!
176 *
177 * removed!
178 * removed!
179 * removed!
180 *
181 * removed!
182 * removed!
183 * removed!
184 *
185 * removed!
186 * removed!
187 * removed!
188 *
189 * removed!
190 * removed!
191 * removed!
192 *
193 * removed!
194 * removed!
195 * removed!
196 *
197 * removed!
198 * removed!
199 * removed!
200 *
201 * removed!
202 * removed!
203 * removed!
204 *
205 * removed!
206 * removed!
207 * removed!
208 *
209 * removed!
210 * removed!
211 * removed!
212 *
213 * removed!
214 * removed!
215 * removed!
216 *
217 * removed!
218 * removed!
219 * removed!
220 *
221 * removed!
222 * removed!
223 * removed!
224 *
225 * removed!
226 * removed!
227 * removed!
228 *
229 * removed!
230 * removed!
231 * removed!
232 *
233 * removed!
234 * removed!
235 * removed!
236 *
237 * removed!
238 * removed!
239 * removed!
240 *
241 * removed!
242 * removed!
243 * removed!
244 *
245 * removed!
246 * removed!
247 * removed!
248 *
249 * removed!
250 * removed!
251 * removed!
252 *
253 * removed!
254 * removed!
255 * removed!
256 *
257 * removed!
258 * removed!
259 * removed!
260 *
261 * removed!
262 * removed!
263 * removed!
264 *
265 * removed!
266 * removed!
267 * removed!
268 *
269 *------------------------------------------------------------------------------
270 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
271 *============================================================================
272 ****************************************************************************/
273
274#if defined(__UMTS_RAT__) || defined(__LTE_RAT__)
275
276#ifndef _L1A_DM_PRIVATE_H
277#define _L1A_DM_PRIVATE_H
278
279#include "kal_public_api.h"
280#include "mph_types.h"
281#include "mph_cs_def.h"
282#include "l1_types.h"
283#include "kal_public_api.h"
284#include "kal_general_types.h"
285#include "mll1_gsm.h"
286#include "mph_dm_msg.h"
287
288/* define gl1_ll1_measure_req meas_purpose_bitmap and tick_bitmap begin */
289#define L1A_MEAS_PURPOSE_ONLY (0x01) //this bit is set when tick is need
290#define L1A_MEAS_PURPOSE_ALL (0x02)
291#define L1A_MEAS_TICK_REG (0x01)
292#define L1A_MEAS_TICK_PRIO (0x02)
293#define L1A_MEAS_OOS_BEGIIN (0x04) //used in gl1_ll1_measure_req to inform OOS is ongoing to shorten meas period
294#define L1A_IS_REG_TICK_ON(bitmap) ( ((bitmap&L1A_MEAS_TICK_REG ) != 0)? KAL_TRUE : KAL_FALSE )
295#define L1A_IS_PRIO_TICK_ON(bitmap) ( ((bitmap&L1A_MEAS_TICK_PRIO) != 0)? KAL_TRUE : KAL_FALSE )
296
297
298/* define for 2G standby gap service type check begin */
299/* set if GSM has started standby GSM measurement (RSSI) */
300#define L1A_STANDBY_GSM_MEAS_START (0x0001)
301#ifdef __GERAN_R8__
302/* set if GSM has started Priority standby GSM measurement (RSSI) */
303#define L1A_STANDBY_GSM_PRIO_MEAS_START (0x0002)
304#endif /*__GERAN_R8__*/
305
306#define L1A_STANDBY_GAP_ALL_BOUNDARY (0x00FF)
307/* set if GSM has started standby GSM BSIC measurement */
308#define L1A_STANDBY_GSM_BSIC_READ_START (0x0100)
309/* set if GSM has started power scan in standby */
310#define L1A_STANDBY_MANUAL_POWER_SCAN_START (0x0200)
311/* set if GSM has started cell_bsic read in standby */
312#define L1A_STANDBY_CELL_BSIC_READ_START (0x0400)
313/* set if GSM has started cell_sys_info read in standby */
314#define L1A_STANDBY_CELL_SYS_INFO_READ_START (0x0800)
315
316#define L1A_STANDBY_GAP_REPORT_CGI_BOUNDARY (0x0FFF)
317/* set if GSM has started reportCGI pwrscan */
318#define L1A_STANDBY_REPORT_CGI_PWRSCAN_START (0x1000)
319/* set if GSM has started reportCGI bsic pwrscan */
320#define L1A_STANDBY_REPORT_CGI_BSIC_READ_START (0x2000)
321/* set if GSM has started reportCGI sys info pwrscan */
322#define L1A_STANDBY_REPORT_CGI_SYS_INFO_READ_START (0x4000)
323
324#define L1A_CHECK_GAP_TYPE_ON(A) (( (l1a_standby_gap_info.l1a_standby_gap_type & A) !=0 ) ? KAL_TRUE : KAL_FALSE)
325#define L1A_CHECK_GAP_TYPE_OFF(A) (( (l1a_standby_gap_info.l1a_standby_gap_type & A) ==0 ) ? KAL_TRUE : KAL_FALSE)
326#define L1A_SET_GAP_TYPE_ON(A) (l1a_standby_gap_info.l1a_standby_gap_type |= A)
327#define L1A_SET_GAP_TYPE_OFF(A) (l1a_standby_gap_info.l1a_standby_gap_type &= (~A))
328
329#define L1A_IS_STB_GAP_SERVICE_ON() ( (l1a_standby_gap_info.l1a_meas_purpose_bitmap !=0)? KAL_TRUE : KAL_FALSE )
330#define L1A_IS_STB_GAP_SERVICE_OFF() (!L1A_IS_STB_GAP_SERVICE_ON() )
331/* define for 2G standby gap service type check end */
332
333
334
335#define DEFAULT_T_HIGH_PRIO_SEARCH (-1)
336#ifndef GEN_FOR_PC
337#define IMMEDIATELY (-1)
338#endif
339
340typedef enum
341{
342 L1A_EVENT_GAP_SERVICE_REQ_ACTIVE_GAP = 0,
343 L1A_EVENT_REPORT_GAP_PATTERN_ACTIVE_GAP,
344 L1A_EVENT_ACTIVE_REQ_ACTIVE_GAP, /* SM/FLIGHT -> DM */
345 L1A_EVENT_STANDBY_REQ_ACTIVE_GAP,
346 L1A_EVENT_DEACTIVATE_REQ_ACTIVE_GAP,
347 L1A_EVENT_TEMP_STOP_MSG_ACTIVE_GAP, //from l1_main
348 L1A_EVENT_TEMP_RESUME_MSG_ACTIVE_GAP, //from l1_main
349 L1A_EVENT_REPORT_GAP_CANCEL_ACTIVE_GAP,
350 L1A_EVENT_IMMED_ASSIGN_ACTIVE_GAP,
351 L1A_EVENT_CHANNEL_ASSIGN_ACTIVE_GAP = L1A_EVENT_IMMED_ASSIGN_ACTIVE_GAP,
352 L1A_EVENT_UPLINK_ASSIGN_ACTIVE_GAP = L1A_EVENT_IMMED_ASSIGN_ACTIVE_GAP,
353 L1A_EVENT_DOWNLINK_ASSIGN_ACTIVE_GAP = L1A_EVENT_IMMED_ASSIGN_ACTIVE_GAP,
354 L1A_EVENT_PDCH_FAIL_RECONNECT_ACTIVE_GAP = L1A_EVENT_IMMED_ASSIGN_ACTIVE_GAP,
355 L1A_EVENT_HANDOVER_ACTIVE_GAP = L1A_EVENT_IMMED_ASSIGN_ACTIVE_GAP,
356 L1A_EVENT_CHANNEL_RECONNECT_ACTIVE_GAP = L1A_EVENT_IMMED_ASSIGN_ACTIVE_GAP,
357 L1A_EVENT_PKT_UNASSIGN_TO_TBF_PEND_ACTIVE_GAP = L1A_EVENT_IMMED_ASSIGN_ACTIVE_GAP,
358 L1A_EVENT_CHANNEL_RELEASE_ACTIVE_GAP,
359 L1A_EVENT_UNASSIGNMENT_ALL_TBF_REL_ACTIVE_GAP,
360 L1A_EVENT_SPECIFIC_SYNC_REQ_ACTIVE_GAP,
361 L1A_EVENT_IDLE_CCCH_START_REQ_ACTIVE_GAP = L1A_EVENT_SPECIFIC_SYNC_REQ_ACTIVE_GAP,
362 L1A_EVENT_PACKET_IDLE_CCCH_START_REQ_ACTIVE_GAP = L1A_EVENT_SPECIFIC_SYNC_REQ_ACTIVE_GAP,
363 L1A_EVENT_PACKET_IDLE_PCCCH_START_REQ_ACTIVE_GAP = L1A_EVENT_SPECIFIC_SYNC_REQ_ACTIVE_GAP,
364 L1A_EVENT_RANDOM_ACCESS_REQ_ACTIVE_GAP = L1A_EVENT_SPECIFIC_SYNC_REQ_ACTIVE_GAP,
365 L1A_EVENT_CELL_SELECTION_INIT_REQ_ACTIVE_GAP = L1A_EVENT_SPECIFIC_SYNC_REQ_ACTIVE_GAP,
366 L1A_EVENT_BSIC_SYNC_REQ_ACTIVE_GAP = L1A_EVENT_SPECIFIC_SYNC_REQ_ACTIVE_GAP,
367 L1A_EVENT_HANDOVER_FROM_UMTS_ACTIVE_GAP,
368 L1A_EVENT_INTER_RAT_HANDOVER_ACTIVE_GAP,
369 L1A_EVENT_CHANNEL_RECONNECT_FROM_UMTS_ACTIVE_GAP,
370 L1A_EVENT_REPORT_DCH_STARTED_ACTIVE_GAP,
371 L1A_EVENT_REPORT_NEW_TBF_STARTED_ACTIVE_GAP = L1A_EVENT_REPORT_DCH_STARTED_ACTIVE_GAP,
372 L1A_EVENT_REPORT_DCH_STOPPED_ACTIVE_GAP,
373#ifdef __BLIND_HANDOVER__
374 L1A_EVENT_REPORT_FCCH_BLIND_CS_HANDOVER_ACTIVE_GAP = L1A_EVENT_REPORT_DCH_STOPPED_ACTIVE_GAP,
375#endif /* end of __BLIND_HANDOVER__ */
376 L1A_EVENT_REPORT_TBF_RECONFIG_ACTIVE_GAP,
377#if defined (__BLIND_HANDOVER__)
378 L1A_EVENT_BLIND_HANDOVER_BSIC_REQ_ACTIVE_GAP,
379#endif
380 L1A_EVENT_GAP_STOP_CNF_ACTIVE_GAP,
381 L1A_ACTIVE_GAP_EVENT_NUM
382}l1a_active_gap_handler_event_enum;
383
384
385/* standby GAP FSM event */
386typedef enum
387{
388 L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP , /* 0 */
389 L1A_EVENT_STANDBY_GSM_PRIO_MEAS_START_REQ_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
390 L1A_EVENT_STANDBY_GSM_BSIC_READ_REQ_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
391 L1A_EVENT_MANUSEL_PWRSCAN_REQ_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
392 L1A_EVENT_CELL_BSIC_START_REQ_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
393 L1A_EVENT_CELL_SYS_INFO_READ_REQ_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
394 L1A_EVENT_REPORT_CGI_PWRSCAN_REQ_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
395 L1A_EVENT_REPORT_CGI_BSIC_START_REQ_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
396 L1A_EVENT_REPORT_CGI_SYS_INFO_READ_REQ_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
397 L1A_EVENT_STANDBY_GSM_MEAS_STOP_REQ_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
398 L1A_EVENT_STANDBY_GSM_PRIO_MEAS_STOP_REQ_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
399 L1A_EVENT_STANDBY_GSM_BSIC_STOP_REQ_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
400 L1A_EVENT_STANDBY_CELL_BSIC_RES_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
401 L1A_EVENT_MANUSEL_PWRSCAN_STOP_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
402 L1A_EVENT_CELL_BSIC_STOP_REQ_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
403 L1A_EVENT_CELL_SYS_INFO_STOP_REQ_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
404 L1A_EVENT_REPORT_CGI_PWRSCAN_STOP_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
405 L1A_EVENT_REPORT_CGI_BSIC_STOP_REQ_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
406 L1A_EVENT_REPORT_CGI_SYS_INFO_STOP_REQ_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
407 L1A_EVENT_REPORT_GSM_BSIC_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
408 L1A_EVENT_REPORT_POWER_SCAN_DONE_STB_GAP = L1A_EVENT_STANDBY_GSM_MEAS_START_REQ_STB_GAP,
409 L1A_EVENT_GAP_NOTIFY_IND_STB_GAP, /* 1 */
410 L1A_EVENT_GAP_STOP_REQ_STB_GAP, /* 2 */
411 L1A_EVENT_REPORT_GAP_STOP_STB_GAP, /* 3 */
412 L1A_EVENT_GAP_SUSPEND_REQ_STB_GAP, /* 4 */
413 L1A_EVENT_REPORT_GAP_SUSPEND_STB_GAP, /* 5 */
414 L1A_EVENT_GAP_RESUME_REQ_STB_GAP, /* 6 */
415 L1A_EVENT_ACTIVE_REQ_STB_GAP, /* 7 */
416 L1A_STB_GAP_EVENT_NUM
417}l1a_standby_gap_handler_event_enum;
418
419
420/* active autoGAP FSM event */
421typedef enum
422{
423 L1A_EVENT_AUTO_GAP_START_REQ_ACTIVE_AG,
424 L1A_EVENT_AUTO_GAP_IND_ACTIVE_AG,
425 L1A_EVENT_REPORT_AUTO_GAP_START_ACTIVE_AG,
426 L1A_EVENT_AUTO_GAP_END_IND_ACTIVE_AG,
427 L1A_EVENT_AUTO_GAP_STOP_REQ_ACTIVE_AG,
428 L1A_EVENT_AUTO_GAP_STOP_CNF_ACTIVE_AG,
429 L1A_ACTIVE_AG_EVENT_NUM
430}l1a_active_auto_gap_handler_event_enum;
431
432/* standby autoGAP FSM event */
433typedef enum
434{
435 L1A_EVENT_AG_AVAILABLE_IND_STB_AG,
436 L1A_EVENT_AG_UNAVAILABLE_IND_STB_AG,
437 L1A_EVENT_REPORT_AG_START_STB_AG,
438 L1A_EVENT_REPORT_AG_END_STB_AG,
439 L1A_EVENT_AG_CNF_STB_AG,
440 L1A_EVENT_AG_STOP_IND_STB_AG,
441 L1A_EVENT_REPORT_AG_STOP_STB_AG,
442 L1A_EVENT_CGI_PWRSCAN_START_STB_AG,
443 L1A_EVENT_CGI_PWRSCAN_STOP_STB_AG,
444 L1A_EVENT_REPORT_PWRSCAN_CGI_STB_AG,
445 L1A_EVENT_CGI_BSIC_START_STB_AG,
446 L1A_EVENT_CGI_BSIC_STOP_STB_AG,
447 L1A_EVENT_REPORT_BSIC_CGI_STB_AG,
448 L1A_EVENT_CGI_BCCH_START_STB_AG,
449 L1A_EVENT_CGI_BCCH_STOP_STB_AG,
450 L1A_EVENT_SRVCC_BSIC_START_STB_AG,
451 L1A_EVENT_SRVCC_BSIC_STOP_STB_AG,
452 L1A_EVENT_REPORT_BSIC_SRVCC_STB_AG,
453 L1A_EVENT_REPORT_GSMBSIC_STB_AG,
454 L1A_EVENT_REPORT_RE_REQ_CGI_STB_AG,
455 L1A_STB_AUTO_GAP_EVENT_NUM
456}l1a_standby_auto_gap_handler_event_enum;
457
458
459/* active GAP FSM state*/
460typedef enum
461{
462 L1A_ACTIVE_GAP_NULL = 0, /* 00 */
463 L1A_ACTIVE_GAP_REQUIRED, /* 01 */
464 L1A_ACTIVE_GAP_PROCESS, /* 02 */
465 L1A_ACTIVE_GAP_SUSPENDED, /* 03 */
466 L1A_ACTIVE_GAP_WAIT_LL1, /* 04 */
467 L1A_ACTIVE_GAP_WAIT_RPT, /* 05 */
468 L1A_ACTIVE_GAP_STATE_NUM
469}l1a_active_gap_state_enum;
470
471
472/* standby GAP FSM state*/
473typedef enum
474{
475 L1A_STB_GAP_IDLE = 0, /* 00 */
476 L1A_STB_GAP_REQUIRED, /* 01 */
477 L1A_STB_GAP_PROCESS, /* 02 */
478 L1A_STB_GAP_SELF_STOP, /* 03 */
479 L1A_STB_GAP_IRT_STOP, /* 04 */
480 L1A_STB_GAP_STATE_NUM
481}l1a_standby_gap_state_enum;
482
483/* active autoGAP FSM state*/
484typedef enum
485{
486 L1A_ACTIVE_AG_OFF = 0, /* 00 */
487 L1A_ACTIVE_AG_ON, /* 01 */
488 L1A_ACTIVE_AG_REQ, /* 02 */
489 L1A_ACTIVE_AG_PROCESS, /* 03 */
490 L1A_ACTIVE_AG_STOPPING, /* 04 */
491 L1A_ACTIVE_AG_STATE_NUM
492}l1a_active_auto_gap_state_enum;
493
494/* autoGAP required in standby state*/
495typedef enum
496{
497 L1A_AG_REQ_IN_STB_IDLE = 0, /* 00 */
498 L1A_AG_REQ_IN_STB_REQ, /* 01 */
499 L1A_AG_REQ_IN_STB_GIVEN, /* 02 */
500 L1A_AG_REQ_IN_STB_STATE_NUM
501}l1a_auto_gap_required_in_standby_state_enum;
502
503
504/* standby autoGAP FSM state*/
505typedef enum
506{
507 L1A_STB_AG_IDLE = 0, /* 00 */
508 L1A_STB_AG_STARTED, /* 01 */
509 L1A_STB_AG_REQUIRING, /* 02 */
510 L1A_STB_AG_PROCESSING, /* 03 */
511 L1A_STB_AG_STOPPING, /* 04 */
512 L1A_STB_AG_STATE_NUM
513}l1a_standby_auto_gap_state_enum;
514
515
516/*Shihyao 20090601, used to group gap-related variables into a structure*/
517typedef enum
518{
519 L1A_STATE_NULL_FOR_GAP = 0, /* 00 */
520 L1A_STATE_RESCHEDULE_GAP_FOR_GAP, /* 01 */
521 L1A_STATE_WAIT_CCCH_START_FOR_GAP, /* 02 */
522 L1A_STATE_IRT_HANDOVER_FOR_GAP, /* 03 */
523 L1A_STATE_BLIND_HANDOVER_BSIC_FOR_GAP, /* 04 */
524 L1A_CHANNEL_STATE_FOR_GAP_NUM
525}l1a_channel_state_for_gap_enum;
526
527typedef enum
528{
529 L1A_WAIT_GSM_GAP_STOP_CNF_NULL = 0,
530 L1A_WAIT_GSM_GAP_STOP_CNF_STOPPING,
531 L1A_WAIT_GSM_GAP_STOP_CNF_RPT_STANDBY,
532 L1A_WAIT_GSM_GAP_STOP_CNF_RPT_DEACTIVATE,
533 L1A_WAIT_GSM_GAP_STOP_CNF_NUM
534}l1a_wait_gsm_gap_stop_cnf_enum;
535
536
537/* record gap suspend state, used by standby GAP FSM*/
538typedef enum
539{
540 L1A_GAP_NOT_SUSPENDED = 0, /* 00 */
541 L1A_GAP_SUSPENDED, /* 01 */
542 L1A_GAP_SUSPENDED_NO_GAP, /* 02 */
543 L1A_GAP_SUSPEND_NUM
544}l1a_gap_suspend_state_enum;
545
546
547/*================ for ACTIVE GAP FSM usage ====================*/
548typedef struct
549{
550 kal_bool l1a_gap_service_enable; //ON or OFF
551 kal_uint8 tid; //from mll1 and gl1 fill in gap_pattern
552 l1a_channel_state_for_gap_enum l1a_channel_state_for_gap;
553}l1a_active_gap_database_struct;
554
555/*================ for STANDBY GAP FSM usage ====================*/
556typedef struct
557{
558 /* bitmap of gap service type*/
559 kal_uint32 l1a_standby_gap_type;
560 /* current standby gap service type bitmaps */
561 kal_uint8 l1a_meas_purpose_bitmap; //bit0(meas), bit1(cell search)
562 kal_uint8 l1a_tick_bitmap; //bit0(rank), bit1(prio)
563 /* if(HPS on) # of higer BA. else if(meas on) # of BA. */
564 kal_uint8 l1a_carrier_num;
565 kal_uint8 l1a_carrier_num_old;
566#ifdef __GERAN_R8__
567 kal_int16 l1a_current_t_high_prio_search;
568 kal_int16 l1a_old_t_high_prio_search;
569#endif /*__GERAN_R8__*/
570 kal_uint8 l1a_period_reset_bitmap; //bit0(rank), bit1(prio)
571 /*LL1 might send gap_suspend_req with gl1's gap service. To prevent waking 2G frequently,
572 L1A will not inform L1C until gap is given. */
573 l1a_gap_suspend_state_enum l1a_is_gap_suspended;
574 /* fast standby plmn list enhancement */
575 kal_bool l1a_standby_cell_bsic_res_req;
576#if (SRVCC_USE_CGI_AUTO_GAPS)
577 kal_bool is_meas_req_sent_without_boost_gap_allocation;
578#endif
579}l1a_standby_gap_database_struct;
580
581/*================ Flags used in 2G active ======================*/
582typedef struct
583{
584 /* syy: to check if sc_mode is changed */
585 ll1_active_rat_mode_status_enum l1a_sc_mode_old;
586 /* syy: for standby and deactivate cnf after gap_stop_cnf */
587 l1a_wait_gsm_gap_stop_cnf_enum l1a_wait_gsm_gap_stop_cnf_for_cnf;
588}l1a_dm_active_database_struct;
589
590/*================ Flags used in 2G standby ======================*/
591typedef struct
592{
593 /* william: to record the system mode to be set after gap stop cnf */
594 mph_system_mode_enum l1a_system_mode_set;
595 /* william: for active cnf after report gap stop*/
596 kal_bool l1a_wait_report_gap_stop_for_active_cnf;
597}l1a_dm_standby_database_struct;
598
599/*================ for ACTIVE AUTO GAP FSM usage ====================*/
600typedef struct
601{
602 kal_bool l1a_is_ag_started; //only for assert check
603}l1a_active_auto_gap_database_struct;
604
605/*================ for STANDBY AUTO GAP FSM usage ====================*/
606typedef struct
607{
608 kal_bool is_started;
609 kal_uint8 scan_id;
610 ARFCN arfcn;
611} l1a_report_cgi_pwrscan_req_struct;
612
613typedef struct
614{
615 kal_bool is_started;
616 kal_uint8 bsic_tid;
617 ARFCN arfcn;
618 kal_bool is_srvcc; //to distinguish cgi or srvcc
619 kal_bool need_trigger_at_end; //when srvcc_bsic is stopped and started in proc state, need to trigger at RptEnd
620} l1a_report_cgi_bsic_start_req_struct;
621
622typedef struct
623{
624 kal_bool is_started;
625 ARFCN arfcn;
626 BSIC bsic;
627 kal_uint16 bcch_mask;
628 FrameNumber frame_offset;
629 kal_int32 ebit_offset;
630} l1a_report_cgi_sys_info_start_req_struct;
631
632#if (SRVCC_USE_CGI_AUTO_GAPS)
633typedef struct
634{
635 Power b2_threshold_in_qdbm; //B2 value from ERRC
636 kal_uint8 num_of_bsic_attempts; //bsic attempt count
637 kal_bool is_srvcc; //srvcc flag from MLL1
638 kal_bool is_srvcc_backup; //backup srvcc flag
639}l1a_srvcc_perf_improvement_data_struct;
640#endif
641
642typedef struct
643{
644 l1a_report_cgi_pwrscan_req_struct pwrscan_req; //for ReportCGI
645 l1a_report_cgi_bsic_start_req_struct bsic_req; //for ReportCGI
646 l1a_report_cgi_sys_info_start_req_struct bcch_req; //for ReportCGI
647#if (SRVCC_USE_CGI_AUTO_GAPS)
648 l1a_srvcc_perf_improvement_data_struct srvcc_data;//for srvcc perf improvements
649#endif
650}l1a_standby_auto_gap_database_struct;
651
652/* from m11150.c */
653kal_bool l1a_standby_gap_check_if_service_on(void);
654kal_bool l1a_standby_gap_external_check_if_type_on( kal_uint32 standby_gap_type );
655kal_bool l1a_standby_gap_external_check_if_type_off( kal_uint32 standby_gap_type );
656kal_bool l1a_standby_gap_external_set_type_on( kal_uint32 standby_gap_type );
657kal_bool l1a_standby_gap_external_set_type_off( kal_uint32 standby_gap_type );
658kal_bool l1a_standby_gap_external_check_cell_bsic_res_req_off(void);
659kal_uint8 l1a_standby_gap_external_read_state(void);
660kal_bool l1a_standby_gap_check_if_service_on(void);
661void l1a_standby_gap_handler_init(void);
662void l1a_standby_gap_handler(kal_uint8 event, void* ptr_ilm_rpt);
663kal_uint8 l1a_gap_external_read_active_gap_state(void);
664kal_bool l1a_external_read_active_gap_stopping(void);
665kal_bool l1a_external_read_active_gap_service_enable(void);
666void l1a_active_gap_handler_init(void);
667void l1a_active_gap_handler(kal_uint8 event, void* ptr_ilm_rpt);
668void l1a_update_standby_meas_purpose( mphm_standby_meas_purpose_enum purpose, void* ptr_ilm_rpt );
669#if (SRVCC_USE_CGI_AUTO_GAPS)
670void l1a_send_meas_req_for_srvcc(void);
671void l1a_set_meas_req_sent_without_boost_gap_allocation(kal_bool boost_gap_allocation);
672kal_bool l1a_get_meas_req_sent_without_boost_gap_allocation(void);
673#endif
674
675
676
677/* from m11151.c */
678void l1a_gsm_active_data_init(void);
679void l1a_gsm_standby_data_init(void);
680void l1a_external_set_wait_gsm_gap_stop_cnf_cause( l1a_wait_gsm_gap_stop_cnf_enum cause );
681l1a_wait_gsm_gap_stop_cnf_enum l1a_external_read_wait_gsm_gap_stop_cnf_cause( void );
682ll1_active_rat_mode_status_enum l1a_external_read_old_sc_mode( void );
683void l1a_external_set_wait_report_gap_stop_for_active_req( kal_bool wait_report_gap_stop);
684kal_bool l1a_external_read_wait_report_gap_stop_for_active_req( void );
685void l1a_dm_active_req(void* ptr_ilm);
686void l1a_set_gsm_sm_active_to_dm_active(void* ptr_ilm);
687void l1a_dm_standby_req(void* ptr_ilm);
688void l1a_standby_gsm_bsic_read_req(void* ptr_ilm);
689void l1a_standby_gsm_bsic_stop_req(void* ptr_ilm);
690void l1a_standby_gsm_meas_start_req(void* ptr_ilm);
691void l1a_standby_gsm_meas_stop_req(void* ptr_ilm);
692#ifdef __GERAN_R8__
693void l1a_standby_gsm_prio_meas_start_req(void* ptr_ilm);
694void l1a_standby_gsm_prio_meas_stop_req(void* ptr_ilm);
695#endif /*__GERAN_R8__*/
696void l1a_standby_cell_bsic_start_req(void* ptr_ilm);
697void l1a_standby_cell_bsic_stop_req(void* ptr_ilm);
698void l1a_standby_cell_sys_info_start_req(void* ptr_ilm);
699void l1a_standby_cell_sys_info_stop_req(void* ptr_ilm);
700
701void l1a_temporarily_stop_gsm_gap_req( void* ptr_ilm );
702void l1a_resume_gsm_gap_schedule( void* ptr_ilm );
703kal_bool l1a_inform_gl1_mode_status( kal_bool timing_changed, ll1_active_rat_mode_status_enum new_mode );
704void l1a_receive_report_gappattern(void* ptr_rpt);
705void l1a_receive_report_gsm_rssi(void* ptr_rpt);
706void l1a_receive_report_gsm_bsic(void* ptr_rpt);
707void l1a_receive_report_bsic_cgi(void* ptr_rpt);
708#if !(SRVCC_USE_CGI_AUTO_GAPS)
709kal_bool l1a_receive_report_bsic_srvcc(void* ptr_rpt);
710#else
711void l1a_receive_report_bsic_srvcc(void* ptr_rpt);
712#endif /* SRVCC_USE_CGI_AUTO_GAPS */
713void l1a_receive_report_gap_stop( void );
714void l1a_receive_ll1_gl1_gap_notify_ind(void* ptr_ilm);
715void l1a_receive_mphm_gap_stop_req( void );
716void l1a_receive_report_standby_done(void* ptr_rpt);
717void l1a_receive_report_active_done(void* ptr_rpt);
718void l1a_receive_gsm_gap_stop_cnf();
719void l1a_receive_mphm_sync_req( void );
720void l1a_receive_report_sync_time( void* ptr_rpt );
721void l1a_receive_report_pm_done( void* ptr_rpt );
722void l1a_receive_mphm_gap_suspend_req( void );
723void l1a_receive_report_gap_suspend( void );
724void l1a_receive_mphm_gap_resume_ind( void );
725void l1a_receive_ll1_gl1_mode_status_update_ind(void* ptr_ilm);
726void l1a_send_gl1_ll1_gap_stop_cnf( void );
727void l1a_send_gl1_ll1_gap_stop_req( void );
728void l1a_send_mphm_standby_cnf( void );
729void l1a_send_inter_rat_handover_cnf( void );
730void l1a_send_gl1_ll1_measure_req( l1a_standby_gap_service_req_struct standby_gap_service_req );
731void l1a_send_gl1_ll1_irat_sync_cnf(kal_int32 frame, kal_int32 ebit, kal_uint32 ustime);
732void l1a_send_gl1_ll1_gap_suspend_cnf(void);
733void l1a_send_gl1_ll1_standby_measure_done_ind( kal_uint8 tid, kal_uint8 tick_bitmap );
734void l1a_send_gl1_ll1_rat_status_ind( gl1_ll1_rat_status_enum rat );
735void l1a_send_gl1_ll1_gap_pattern_ind(void* ptr_rpt);
736void l1a_send_mphm_standby_gsm_bsic_ind( SChData* ptr_sch_data );
737void l1a_send_mphm_standby_gsm_report_cgi_bsic_ind( SChData* ptr_sch_data );
738void l1a_send_mphm_standby_gsm_report_srvcc_bsic_ind( SChData* ptr_sch_data );
739void l1a_send_mphm_standby_gsm_report_cgi_pwrscan_cnf( PowerScanData* ptr_scan_data, kal_uint8 scan_id, ARFCN arfcn );
740void l1a_enter_umts_fail_reconnect(void);
741
742
743#ifdef __SGTDS_STANDBY_AFC_TRACKING__
744void l1a_receive_report_gap_tick( void* ptr_rpt );
745void l1a_stop_report_gap_tick( void );
746#endif /*__SGTDS_STANDBY_AFC_TRACKING__*/
747#ifdef __GL1_GEMINI__
748void l1a_update_alt_l1_gsm_gap_service_init(void);
749void l1a_update_alt_l1_gsm_gap_service (kal_bool is_need);
750void l1a_send_mphc_alt_l1_gsm_gap_service_update_req (kal_bool enable);
751void l1a_receive_mphc_alt_l1_gsm_gap_resume_req(void);
752#endif /* end of __GL1_GEMINI__ */
753
754/* from m11152.c, for auto gap */
755void l1a_active_auto_gap_handler_init(void);
756void l1a_active_auto_gap_handler(kal_uint8 event, void* ptr_ilm_rpt);
757void l1a_standby_auto_gap_handler_init(void);
758void l1a_standby_auto_gap_handler(kal_uint8 event, void* ptr_ilm_rpt);
759void l1a_auto_gap_in_standby_init(void);
760void l1a_auto_gap_ind_in_standby(void* ptr_ilm);
761void l1a_report_auto_gap_start_in_standby( void* ptr_rpt );
762void l1a_auto_gap_end_ind_in_standby(void* ptr_ilm);
763kal_uint8 l1a_get_srvcc_bsic_tid( void );
764
765#if (SRVCC_USE_CGI_AUTO_GAPS)
766kal_bool l1a_srvcc_perf_get_is_srvcc_flag( void );
767void l1a_srvcc_perf_set_is_srvcc_flag( kal_bool flag, kal_bool is_srvcc_backup_flag );
768void l1a_srvcc_perf_update_b2_thd( Power b2_threshold_in_qdbm);
769kal_bool l1a_srvcc_perf_is_backup_and_current_srvcc_flag_diff( void );
770void l1a_srvcc_perf_update_bsic_attempt_count( kal_bool is_reset );
771void l1a_srvcc_perf_calculate_boost_value( SChData* ptr_sch_data, mphm_standby_gsm_report_srvcc_bsic_ind_struct *ptr_para );
772void l1a_srvcc_perf_reset_bsic_attempt_count(void);
773#endif
774
775/* from m11127.c */
776void l1a_report_cgi_pwrscan_start( ARFCN arfcn, kal_uint8 scan_id, kal_bool use_auto_gap );
777void l1a_report_cgi_pwrscan_stop(kal_bool use_auto_gap);
778void l1a_report_cgi_report_scan_done(Report* ptr_rpt);
779
780
781/* from other files */
782extern mph_system_mode_enum l1a_get_system_mode(void);
783
784extern kal_int32 l1a_external_read_paing_period( void );
785
786#ifdef __GL1_GEMINI__
787extern mph_system_mode_enum l1a_get_sim1_system_mode(void);
788#endif /* end of __GL1_GEMINI__ */
789
790#endif /* end of _L1A_DM_PRIVATE_H */
791
792#endif /* __UMTS_RAT__ || __LTE_RAT__ */