blob: 95bd67dba11b8930d94eae0e37e50c70ea77aec7 [file] [log] [blame]
yu.dongc33b3072024-08-21 23:14:49 -07001#ifndef _MLL1_EUTRAN_H
2#define _MLL1_EUTRAN_H
3
4#include "kal_public_defs.h" /*for LOCAL_PARA_HDR*/
5#include "mll1_common.h"
6/*****************************************************************************
7* DEFINITIONS
8*****************************************************************************/
9#define EUTRAN_SESSION_IN_PERIOD 48 /*align TDS DMO based on 10ms, 480ms/10ms = 48*/
10
11#define EUTRAN_SCHEDULE_DELAY 0 /* used to postpone available gap start time */
12
13/*****************************************************************************
14* ENUMERATIONS
15*****************************************************************************/
16
17/*****************************************************************************
18* ENUMERATION
19* el1_ll1_rat_status_enum
20*
21* DESCRIPTIONS
22* Used to identify the status in EUTRAN RAT.
23* NOTE
24* any modification should sync. with ll1_rat_status_enum
25*****************************************************************************/
26typedef enum
27{
28 EL1_LL1_RAT_FLIGHT =0,
29 EL1_LL1_RAT_STANDBY,
30 EL1_LL1_RAT_ACTIVE,
31 EL1_LL1_RAT_NUM
32} el1_ll1_rat_status_enum;
33
34/*****************************************************************************
35* STRUCTURES
36*****************************************************************************/
37
38/*****************************************************************************
39* STRUCT
40* eutran_time_struct
41*
42* DESCRIPTIONS
43* EUTRAN system timing base
44*
45* PARAMETERS
46* sfn - EUTRAN system frame number (0~0XFFFFFFF). -1 = IMMEDIATELY
47* sub_frame - EUTRAN sub-frame number (0~9)
48* sample - EUTRAN half samples (0~61439)
49*****************************************************************************/
50typedef struct
51{
52 kal_uint32 sfn;
53 kal_uint8 sub_frame;
54 kal_uint16 sample;
55}eutran_time_struct;
56
57/*****************************************************************************
58* STRUCT
59* ll1_eutran_standby_gap_struct
60*
61* DESCRIPTIONS
62* EUTRAN standby gap pattern structure.
63*
64* PARAMETERS
65* start_time - start time of the gap session
66* length - length of the gap session (in sample)
67*****************************************************************************/
68typedef struct
69{
70 eutran_time_struct start_time;
71 kal_int64 length;
72}ll1_eutran_standby_gap_struct;
73
74/*****************************************************************************
75* STRUCT
76* ll1_el1_expand_gap_pattern_struct
77*
78* DESCRIPTIONS
79* LL1 expands gap pattern for EL1
80*
81* PARAMETERS
82* session_num - Indicate how many gap session
83* session[] - Standby gap session.
84* measure_tid - Transition id for RANK tick./Valid when active RAT is in DRX mode./And bit 0 in tick_bitmap is "1"
85* hps_tid - Transition id for HPS tick./Valid when active RAT is in DRX mode./And bit 1 in tick_bitmap is "1"
86* tick_bitmap - Bit 0 : Rank search , Bit 1 : Priority search
87* gap_seq - Valid only in SDCCH mode. 2* (9 frames / 102 frames) for one frequency. 1: the first gap pattern ; 2: the last gap pattern
88*****************************************************************************/
89typedef struct
90{
91 kal_uint8 session_num;
92 ll1_eutran_standby_gap_struct session[EUTRAN_SESSION_IN_PERIOD];
93 kal_uint8 measure_tid;
94 kal_uint8 hps_tid;
95 kal_uint8 tick_bitmap;
96 kal_uint8 gap_seq;
97}ll1_el1_expand_gap_pattern_struct;
98
99/*****************************************************************************
100* STRUCT
101* ll1_eutran_gap_config_struct
102*
103* DESCRIPTIONS
104* EUTRAN gap configuration when EUTRAN is active RAT.
105*
106* PARAMETERS
107* start_time - Valid time of gap pattern in active RAT
108* use_num - Continuous gap number could be used in active RAT(Basic unit = 480ms)
109* skip_num - Skip number in active RAT. (Basic unit = 480ms)
110*****************************************************************************/
111typedef struct
112{
113 eutran_time_struct start_time;
114 kal_uint8 use_num;
115 kal_uint8 skip_num;
116}ll1_eutran_gap_config_struct;
117
118/*****************************************************************************
119* STRUCT
120* eutran_drx_gap_struct
121*
122* DESCRIPTIONS
123* EUTRAN drx gap structure.
124*
125* PARAMETERS
126* start_time - start time of the gap session
127* length - length of the gap session (in sub_frame)
128* is_drx_tick - KAL_TRUE : First tick in this DRX period
129* KAL_FALSE: Not the first free interval in this DRX period
130*****************************************************************************/
131typedef struct
132{
133 eutran_time_struct start_time;
134 kal_int32 length;
135 kal_bool is_drx_tick;
136}eutran_drx_gap_struct;
137
138/*****************************************************************************
139* STRUCT
140* eutran_connect_gap_struct
141*
142* DESCRIPTIONS
143* EUTRAN gap structure in connection mode without DRX .
144*
145* PARAMETERS
146* start_time - start time of the gap session
147* period - ID 0 = 40 ms ; ID 1 = 80 ms;
148* length - length of the gap session = 6 (ms)
149*****************************************************************************/
150typedef struct
151{
152 eutran_time_struct start_time;
153 kal_uint8 period;
154 kal_uint8 length;
155}eutran_connect_gap_struct;
156
157/*****************************************************************************
158* STRUCT
159* el1_ll1_sync_cnf_struct
160*
161* DESCRIPTIONS
162* EL1 uses this primitive to confirm LL1 that current EUTRAN timing
163* and micro second counter value.
164*
165* PARAMETERS
166* LOCAL_PARA_HDR
167* current_time - sync. time in eutran_time_struct
168* eutran_ustime - sync. time in USC
169*****************************************************************************/
170typedef struct
171{
172 LOCAL_PARA_HDR
173 eutran_time_struct current_time;
174 kal_uint32 eutran_ustime;
175}el1_ll1_sync_cnf_struct;
176
177/*****************************************************************************
178* STRUCT
179* el1_ll1_rat_status_ind_struct
180*
181* DESCRIPTIONS
182* This message is sent from EL1 to LL1 for informing current GL1 RAT status.
183* This message should be sent when EL1 RAT status changed.
184*
185* PARAMETERS
186* LOCAL_PARA_HDR
187* rat_status - RAT status in EL1
188*****************************************************************************/
189typedef struct
190{
191 LOCAL_PARA_HDR
192 el1_ll1_rat_status_enum rat_status;
193}el1_ll1_rat_status_ind_struct;
194
195/*****************************************************************************
196* STRUCT
197* el1_ll1_mode_status_ind_struct
198*
199* DESCRIPTIONS
200* This message is sent from EL1 to LL1 for informing that GL1 mode status when GL1 is active RAT.
201* This message should be sent when EL1 mode status changed.
202*
203* PARAMETERS
204* LOCAL_PARA_HDR
205* eutran_mode_status - current mode in EL1 when EUTRAN is active RAT
206* is_cell_changed - KAL_TRUE : Cell changed
207* KAL_FALSE : When only status or drx_cycle_length changed.
208* drx_cycle_length - valid when eutran_mode_status = EL1_LL1_IDLE_MODE
209*****************************************************************************/
210typedef struct
211{
212 LOCAL_PARA_HDR
213 ll1_active_rat_mode_status_enum eutran_mode_status;
214 kal_bool is_cell_changed;
215 kal_uint16 drx_cycle_length;
216}el1_ll1_mode_status_ind_struct;
217
218/*****************************************************************************
219* STRUCT
220* ll1_el1_mode_status_update_ind_struct
221*
222* DESCRIPTIONS
223* This message is sent to EL1 for informing that mode status of active RAT when EL1 is standby RAT.
224* This message should be updated for EL1 in standby when any mode status changed in active RAT.
225* Also when EL1 enters into standby RAT from FLIGHT, LL1 will update current mode state in active RAT to EL1.
226*
227* PARAMETERS
228* LOCAL_PARA_HDR
229* active_rat_mode_status - current mode status in active RAT
230*****************************************************************************/
231typedef struct
232{
233 LOCAL_PARA_HDR
234 ll1_active_rat_mode_status_enum active_rat_mode_status;
235}ll1_el1_mode_status_update_ind_struct;
236
237/*****************************************************************************
238* STRUCT
239* el1_ll1_active_measure_status_ind_struct
240*
241* DESCRIPTIONS
242* EL1 informs LL1 that how many higher priority inter-frequencies in EL1 when high priority search is turned on
243*
244* PARAMETERS
245* LOCAL_PARA_HDR
246* freq_num - The number of higher priority inter-freq. in EL1.(0~3)
247* When HPS off, the freq_num is equal to zero.
248*****************************************************************************/
249typedef struct
250{
251 LOCAL_PARA_HDR
252 kal_uint8 freq_num;
253}el1_ll1_active_measure_status_ind_struct;
254
255/*****************************************************************************
256* STRUCT
257* el1_ll1_measure_req_struct
258*
259* DESCRIPTIONS
260* This message is sent from EL1 to inform LL1 that how many EUTRAN frequencies are required to be
261* measured and the measurement purposes both in EUTRAN Active and Standby. The message is not
262* applicable for EL1 to request gaps for inter-frequency measurement in idle mode.
263*
264* PARAMETERS
265* LOCAL_PARA_HDR
266* meas_purpose_bitmap - bit 0 for measurement, bit 1 for cell search, bit 2 for BCCH
267* tid - tid for lastest meas_req on (should only change when off)
268* tick_bitmap - bit 0 for ranking search, bit 1 for priority search
269* freq_num - high priority freqencies when HPS ON, measurement frequencies when HPS OFF
270* t_hps - basic period of high priority search (25s,60s,70s)
271* is_period_reset_bmp - bit 0 for rank period, 1 means to reset
272* - bit 1 for prio period, 0 means not to reset
273* - when freq. num is same as before, ll1 will check this flag to reset period or not
274* - KAL_TRUE : reset hps period, KAL_FALSE : doesnt reset hps period.
275* current_time - current in EL1
276*****************************************************************************/
277typedef struct
278{
279 LOCAL_PARA_HDR
280 kal_uint8 meas_purpose_bitmap;
281 kal_uint8 tid;
282 kal_uint8 tick_bitmap;
283 kal_uint8 freq_num;
284 kal_uint16 t_hps;
285 kal_int32 is_period_reset_bmp;
286 eutran_time_struct current_time;
287}el1_ll1_measure_req_struct;
288
289/*****************************************************************************
290* STRUCT
291* el1_ll1_standby_measure_done_ind_struct
292*
293* DESCRIPTIONS
294* For low power optimization, EL1 informs LL1 which measurement purpose is
295* measured done in its period. If all measurement purposes are measured done,
296* LL1 will not tick EL1 anymore in shortest measurement period.
297*
298* PARAMETERS
299* LOCAL_PARA_HDR
300* tid - For LL1 to know this tid is mapped to which gap pattern period sent before
301* tick_bitmap - bit 0 for ranking search, bit 1 for priority search. Only one bit will be set in one message
302*****************************************************************************/
303typedef struct
304{
305 LOCAL_PARA_HDR
306 kal_uint8 tid;
307 kal_uint8 tick_bitmap;
308}el1_ll1_standby_measure_done_ind_struct;
309
310/*****************************************************************************
311* STRUCT
312* ll1_el1_gap_service_req_struct
313*
314* DESCRIPTIONS
315* LL1 uses this primitive to enable (disable) active RAT gap service to get (release)
316* the free radio frequency period in EUTRAN.When LL1 disables active RAT gap service,
317* it means that EUTRAN could use all RF time already.
318*
319* PARAMETERS
320* LOCAL_PARA_HDR
321* enable - KAL_TRUE : request gap service
322* KAL_FALSE : stop gap service
323*****************************************************************************/
324typedef struct
325{
326 LOCAL_PARA_HDR
327 kal_bool enable;
328}ll1_el1_gap_service_req_struct;
329
330
331/*****************************************************************************
332* STRUCT
333* el1_ll1_gap_stop_cnf_struct
334*
335* DESCRIPTIONS
336* EL1 uses this primitive to confirm LL1_EL1_GAP_STOP_REQ when there is no gap usage in EUTRAN..
337*
338* PARAMETERS
339* LOCAL_PARA_HDR
340* current_time - current time in EL1
341*****************************************************************************/
342typedef struct
343{
344 LOCAL_PARA_HDR
345 eutran_time_struct current_time;
346}el1_ll1_gap_stop_cnf_struct;
347
348
349/*****************************************************************************
350* STRUCT
351* el1_ll1_auto_gap_req_struct
352*
353* DESCRIPTIONS
354* EL1 sends this message to request LL1 that EL1 wants to use the auto gap from (sfn, sub_frame, half_sample).
355* EL1 could use this auto gap after getting the successful confirm
356*
357* PARAMETERS
358* LOCAL_PARA_HDR
359* auto_time - Start time of auto gap in EL1
360*****************************************************************************/
361typedef struct
362{
363 LOCAL_PARA_HDR
364 eutran_time_struct auto_time;
365}el1_ll1_auto_gap_req_struct;
366
367/*****************************************************************************
368* STRUCT
369* ll1_el1_auto_gap_cnf_struct
370*
371* DESCRIPTIONS
372* LL1 sends this message to confirm EL1 auto gap request.
373* After receiving this message, EL1 could use required auto gap.
374*
375* PARAMETERS
376* LOCAL_PARA_HDR
377* success - KAL_TRUE : EL1 could use auto gap to search
378* KAL_FALSE: EL1 could not use auto gap to search.
379* And GL1 should not request auto gap until AUTO_GAP_AVAILABLE_IND
380* valid_period - The length of autonomous gap allowed by active RAT
381* The value is valid when success = KAL_TRUE
382* Unit : sample
383*****************************************************************************/
384typedef struct
385{
386 LOCAL_PARA_HDR
387 kal_bool success;
388 kal_int64 valid_period;
389}ll1_el1_auto_gap_cnf_struct;
390
391/*****************************************************************************
392* STRUCT
393* ll1_el1_auto_gap_ind_struct
394*
395* DESCRIPTIONS
396* LL1 sends this message to inform EL1 stopping using RF in this auto gap from (sfn, sub_frame, half_sample).
397*
398* PARAMETERS
399* LOCAL_PARA_HDR
400* auto_time - Start time of auto gap
401*****************************************************************************/
402typedef struct
403{
404 LOCAL_PARA_HDR
405 eutran_time_struct auto_time;
406}ll1_el1_auto_gap_ind_struct;
407
408/*****************************************************************************
409* STRUCT
410* el1_ll1_auto_gap_res_struct
411*
412* DESCRIPTIONS
413* EL1 sends this message to response LL1 that EL1 will/won't use RF from
414* the start timing of auto gap which is informed by LL1_EL1_auto_GAP_IND.
415*
416* PARAMETERS
417* LOCAL_PARA_HDR
418* success - KAL_TRUE : EL1 will not use RF from the starting time of LL1_EL1_AUTO_GAP_IND
419* KAL_FALSE: EL1 may use RF after starting time of LL1_EL1_AUTO_GAP_IND.
420* valid_period - The length of autonomous gap allowed in EL1
421* The value is valid when EL1 is active rat and success = KAL_TRUE
422* Unit : sample
423*****************************************************************************/
424typedef struct
425{
426 LOCAL_PARA_HDR
427 kal_bool success;
428 kal_int64 valid_period;
429}el1_ll1_auto_gap_res_struct;
430
431/*****************************************************************************
432* STRUCT
433* ll1_el1_gap_notify_ind_struct
434*
435* DESCRIPTIONS
436* LL1 sends this message to inform EL1 that the starting time and length of gap pattern.
437*
438* PARAMETERS
439* LOCAL_PARA_HDR
440* standby_gap - standby gap pattern
441* active_gap - active gap pattern configuration
442* tid - tid for lastest meas_req on
443*****************************************************************************/
444typedef struct
445{
446 LOCAL_PARA_HDR
447 ll1_el1_expand_gap_pattern_struct standby_gap;
448 ll1_eutran_gap_config_struct active_gap;
449 kal_uint8 tid; /* Tid for lastest meas_req on, LL1 will expand gap notify ind with this tid*/
450}ll1_el1_gap_notify_ind_struct;
451
452/*****************************************************************************
453* STRUCT
454* el1_ll1_gap_pattern_ind_struct
455*
456* DESCRIPTIONS
457* EL1 sends this message to inform LL1 that the free RF period in EL1 as gap pattern.
458* PARAMETERS
459* LOCAL_PARA_HDR
460* el1_current_time - EL1 current time
461* drx_gap - No matter the length is bigger than zero or not, EL1 should send
462* this message and sets is_drx_tick = KAL_TRUE in one DRX period once.
463* connect_gap - GP0 or GP1
464*****************************************************************************/
465typedef struct
466{
467 LOCAL_PARA_HDR
468 eutran_time_struct el1_current_time;
469 eutran_drx_gap_struct drx_gap;
470 eutran_connect_gap_struct connect_gap;
471}el1_ll1_gap_pattern_ind_struct;
472
473/*****************************************************************************
474* STRUCT
475* ll1_el1_sync_req_struct
476* el1_ll1_gap_stop_req_struct
477* ll1_el1_gap_stop_cnf_struct
478* ll1_el1_gap_stop_req_struct
479* el1_ll1_gap_stop_cnf_struct
480* el1_ll1_gap_suspend_req_struct
481* ll1_el1_gap_suspend_cnf_struct
482* ll1_el1_gap_suspend_req_struct
483* el1_ll1_gap_suspend_cnf_struct
484* el1_ll1_gap_resume_ind_struct
485* ll1_el1_gap_resume_ind_struct
486* el1_ll1_auto_gap_stop_req_struct
487* ll1_el1_auto_gap_stop_ind_struct
488* el1_ll1_auto_gap_stop_res_struct
489* ll1_el1_auto_gap_stop_cnf_struct
490* el1_ll1_auto_gap_end_ind_struct
491* ll1_el1_auto_gap_end_ind_struct
492* el1_ll1_auto_gap_available_ind_struct
493* ll1_el1_auto_gap_available_ind_struct
494*
495* DESCRIPTIONS
496* ll1_el1_sync_req_struct
497* LL1 will use this primitive to get EL1 current UMTS timing and micro
498* second counter value in both EL1 in active and standby mode.
499*
500* el1_ll1_gap_stop_req_struct
501* EL1 uses this primitive to inform LL1 to stop all gap usage in standby
502* RAT when GERAN GSM wants to change configuration or other purposes.
503*
504* ll1_el1_gap_stop_cnf_struct
505* LL1 uses this primitive to confirm EL1 that LL1 has already stopped
506* all gap usages in standby RAT and EL1 could use all RF time.
507*
508* ll1_el1_gap_stop_req_struct
509* LL1 uses this primitive to stop gap usage in EUTRAN when EUTRAN is standby RAT.
510*
511* el1_ll1_gap_stop_cnf_struct
512* EL1 uses this primitive to confirm LL1_EL1_GAP_STOP_REQ when there is no gap usage in EUTRAN.
513*
514* el1_ll1_gap_suspend_req_struct
515* EL1 uses this primitive to temporal suspend gap usage in standby RAT for higher priority
516* task and doesn't need to give new gap configuration in connection mode when resumed.
517*
518* ll1_el1_gap_suspend_cnf_struct
519* LL1 sends this confirm message to EL1 after all standby RAT gap usage are suspended.
520*
521* ll1_el1_gap_suspend_req_struct
522* LL1 sends this message to EL1 to request that EL1 suspends RF usage immediately.
523*
524* el1_ll1_gap_suspend_cnf_struct
525* EL1 sends this message to confirm LL1 that EL1 will not use gap from
526* now to receiving resume indicator
527*
528* el1_ll1_gap_resume_ind_struct
529* EL1 sends this message to inform LL1 that EL1 has already finished
530* higher priority task, and standby RAT could use gap normally.
531*
532* ll1_el1_gap_resume_ind_struct
533* LL1 sends this message to EL1 to resume EL1's gap usage.
534* After receiving this message, EL1 could use gap pattern normally.
535*
536* el1_ll1_auto_gap_stop_req_struct
537* EL1 sends this message to request LL1 that EL1 wants to
538* retrieve auto gap for higher priority task.
539*
540* ll1_el1_auto_gap_stop_ind_struct
541* LL1 sends this message to inform EL1 of stopping using RF
542* during auto gap period.
543*
544* el1_ll1_auto_gap_stop_res_struct
545* EL1 sends this message to response LL1 that EL1 stops
546* auto gap usage.
547*
548* ll1_el1_auto_gap_stop_cnf_struct
549* LL1 sends this message to confirm that EL1 could use RF now.
550*
551* el1_ll1_auto_gap_end_ind_struct
552* EL1 sends this message to inform LL1 that auto gap usage is finished.
553*
554* ll1_el1_auto_gap_end_ind_struct
555* LL1 sends this message to inform EL1 that auto gap usage is finished.
556*
557* el1_ll1_auto_gap_available_ind_struct
558* EL1 sends this message to inform LL1 that auto gap is available now. Standby RAT
559* could request auto gap now. Standby RAT could request auto gap now
560*
561* ll1_el1_auto_gap_available_ind_struct
562* LL1 sends this message to inform EL1 that auto gap
563* is available now. EL1 could request auto gap now.
564*
565* el1_ll1_auto_gap_unavailable_ind_struct
566* EL1 sends this message to inform LL1 that auto gap is unavailable now.
567* Standby RAT could not request auto gap now.
568*
569* ll1_el1_auto_gap_unavailable_ind_struct
570* LL1 sends this message to inform EL1 that auto gap is unavailable now.
571* EL1 could not request auto gap now.
572*
573* PARAMETERS
574* LOCAL_PARA_HDR
575*****************************************************************************/
576typedef struct
577{
578 LOCAL_PARA_HDR
579}ll1_el1_sync_req_struct,
580 el1_ll1_gap_stop_req_struct,
581 ll1_el1_gap_stop_cnf_struct,
582 ll1_el1_gap_stop_req_struct,
583 el1_ll1_gap_suspend_req_struct,
584 ll1_el1_gap_suspend_cnf_struct,
585 ll1_el1_gap_suspend_req_struct,
586 el1_ll1_gap_suspend_cnf_struct,
587 el1_ll1_gap_resume_ind_struct,
588 ll1_el1_gap_resume_ind_struct,
589 el1_ll1_auto_gap_stop_req_struct,
590 ll1_el1_auto_gap_stop_ind_struct,
591 el1_ll1_auto_gap_stop_res_struct,
592 ll1_el1_auto_gap_stop_cnf_struct,
593 el1_ll1_auto_gap_end_ind_struct,
594 ll1_el1_auto_gap_end_ind_struct,
595 el1_ll1_auto_gap_available_ind_struct,
596 ll1_el1_auto_gap_available_ind_struct,
597 el1_ll1_auto_gap_unavailable_ind_struct,
598 ll1_el1_auto_gap_unavailable_ind_struct;
599
600/*****************************************************************************
601* STRUCT
602* mll1_el1_info_database_struct
603*
604* DESCRIPTIONS
605* EL1 information structure.
606*
607* PARAMETERS
608*
609*****************************************************************************/
610typedef struct
611{ /* measure req*/
612 kal_uint8 tick_bmp; /* use to record tick bitmap*/
613 kal_uint8 rank_tick_tid; /* tid for rank tick*/
614 kal_uint8 prio_tick_tid; /* tid for prio tick*/
615 kal_uint8 meas_done_bmp; /* measurement done ind bitmap*/
616 kal_bool is_meas_done_useful; /* eutran uses meas_done or not by checking meas_purpose_bmp*/
617 kal_uint8 meas_purpose_bitmap; /* record the measure purpose bitmap*/
618 eutran_time_struct current_time; /* eutran current time when request gap service*/
619 /* Paging period in active RAT */
620 kal_int32 drx_cycle; /* 80,160,350,640,1280,2560,5120 Unit : ms*/
621 /* Store gap information*/
622 el1_ll1_gap_pattern_ind_struct gap_pattern; /* store gap pattern ilm*/
623 /* auto gap para*/
624 eutran_time_struct auto_time; /* auto gap time*/
625 /* Mode status*/
626 ll1_active_rat_mode_status_enum mode_status; /* mode status*/
627 /* Gap request from standby rat should do sync in connection*/
628 kal_bool valid_timing; /* KAL_TRUE : sync not finish after request*/
629 /* KAL_FALSE : sync done*/
630 kal_uint8 meas_req_tid; /* Tid for lastest meas_req on, LL1 will expand gap notify ind with this tid*/
631}mll1_el1_info_database_struct;
632#if 0
633/* under construction !*/
634/* under construction !*/
635/* under construction !*/
636/* under construction !*/
637/* under construction !*/
638/* under construction !*/
639/* under construction !*/
640/* under construction !*/
641/* under construction !*/
642/* under construction !*/
643/* under construction !*/
644/* under construction !*/
645/* under construction !*/
646/* under construction !*/
647/* under construction !*/
648/* under construction !*/
649/* under construction !*/
650/* under construction !*/
651/* under construction !*/
652/* under construction !*/
653/* under construction !*/
654/* under construction !*/
655/* under construction !*/
656/* under construction !*/
657/* under construction !*/
658/* under construction !*/
659/* under construction !*/
660/* under construction !*/
661/* under construction !*/
662/* under construction !*/
663/* under construction !*/
664/* under construction !*/
665/* under construction !*/
666/* under construction !*/
667/* under construction !*/
668/* under construction !*/
669#endif /*__POP_FSM__*/
670/*****************************************************************************
671* GLOBAL FUNCTIONS
672*****************************************************************************/
673
674/*****************************************************************************
675* FUNCTION
676* mll1_el1_auto_gap_available_ind
677* DESCRIPTION
678* ll1 sends auto gap available ind to EUTRAN now
679*
680* PARAMETERS
681* kal_bool available
682* RETURNS
683* none
684* GLOBALS AFFECTED
685* none
686*****************************************************************************/
687void mll1_el1_auto_gap_available_ind(kal_bool available);
688
689/*****************************************************************************
690* FUNCTION
691* mll1_el1_auto_gap_cnf
692* DESCRIPTION
693* ll1 sends auto gap cnf to EUTRAN now
694*
695* PARAMETERS
696* success - success or not
697* RETURNS
698* none
699* GLOBALS AFFECTED
700* none
701*****************************************************************************/
702void mll1_el1_auto_gap_cnf(kal_bool success, kal_int64 valid_period);
703
704/*****************************************************************************
705* FUNCTION
706* mll1_el1_auto_gap_end_ind
707* DESCRIPTION
708* ll1 sends auto gap end ind to EUTRAN now
709*
710* PARAMETERS
711* none
712* RETURNS
713* none
714* GLOBALS AFFECTED
715* none
716*****************************************************************************/
717void mll1_el1_auto_gap_end_ind(void);
718
719/*****************************************************************************
720* FUNCTION
721* mll1_el1_auto_gap_ind
722* DESCRIPTION
723* ll1 sends auto gap ind to EUTRAN now
724*
725* PARAMETERS
726* eutran_time - auto time
727* RETURNS
728* none
729* GLOBALS AFFECTED
730* none
731*****************************************************************************/
732void mll1_el1_auto_gap_ind(eutran_time_struct eutran_time);
733
734/*****************************************************************************
735* FUNCTION
736* mll1_el1_auto_gap_stop_cnf
737* DESCRIPTION
738* ll1 sends auto gap stop cnf to EUTRAN now
739*
740* PARAMETERS
741* None
742* RETURNS
743* none
744* GLOBALS AFFECTED
745* none
746*****************************************************************************/
747void mll1_el1_auto_gap_stop_cnf(void);
748
749/*****************************************************************************
750* FUNCTION
751* mll1_el1_auto_gap_stop_ind
752* DESCRIPTION
753* ll1 sends auto gap stop ind to EUTRAN now
754*
755* PARAMETERS
756* None
757* RETURNS
758* none
759* GLOBALS AFFECTED
760* none
761*****************************************************************************/
762void mll1_el1_auto_gap_stop_ind(void);
763
764/*****************************************************************************
765* FUNCTION
766* mll1_el1_auto_time_minus
767* DESCRIPTION
768* Add more rf margin for any standby rat which will enter sleep during autonomous serch procedure
769* Assume margin is smaller than one sfn
770* PARAMETERS
771* eutran_time_struct*
772* kal_int64 - more RF margin (recovery from sleep).
773* RETURNS
774* void
775*****************************************************************************/
776void mll1_el1_auto_time_minus(eutran_time_struct* time, kal_int64 sample);
777
778/*****************************************************************************
779* FUNCTION
780* mll1_el1_expand_active_gap_pattern_ind
781* DESCRIPTION
782* ll1 sends active gap pattern ind to EUTRAN now
783*
784* PARAMETERS
785* start_time - the first gap start time
786* use_num - how many 480ms period el1 could use
787* skip_num - how many 480ms period el1 should skip after use use_cnt 480ms period.
788* RETURNS
789* none
790* GLOBALS AFFECTED
791* none
792*****************************************************************************/
793void mll1_el1_expand_active_gap_pattern_ind(eutran_time_struct* start_time,kal_uint8 use_num,kal_uint8 skip_num);
794
795/*****************************************************************************
796* FUNCTION
797* mll1_el1_expand_gap_pattern_ind
798* DESCRIPTION
799* ll1 sends auto gap available ind to EUTRAN now
800*
801* PARAMETERS
802* none
803* RETURNS
804* none
805* GLOBALS AFFECTED
806* none
807*****************************************************************************/
808void mll1_el1_expand_gap_pattern_ind(ll1_el1_expand_gap_pattern_struct* standby_gap);
809
810/*****************************************************************************
811* FUNCTION
812* mll1_el1_gap_resume_ind
813* DESCRIPTION
814* LL1 sends this message to EL1 to resume EL1 gap usage.
815* After receiving this message, EL1 could use gap pattern normally.
816*
817* PARAMETERS
818* none
819* RETURNS
820* none
821* GLOBALS AFFECTED
822* none
823*****************************************************************************/
824void mll1_el1_gap_resume_ind(void);
825
826/*****************************************************************************
827* FUNCTION
828* mll1_el1_gap_service_request
829* DESCRIPTION
830* ll1 sends gap service req to EUTRAN now
831*
832* PARAMETERS
833* enable - KAL_TRUE : turn on gap service
834* - KAL_FALSE : turn off gap service
835* RETURNS
836* none
837* GLOBALS AFFECTED
838* none
839*****************************************************************************/
840void mll1_el1_gap_service_req(kal_bool enable);
841
842/*****************************************************************************
843* FUNCTION
844* mll1_el1_gap_stop_cnf
845* DESCRIPTION
846* LL1 uses this primitive to confirm EL1 that LL1 has already stopped
847* all gap usages in standby RAT and EL1 could use all RF time.
848*
849* PARAMETERS
850* NONE
851* RETURNS
852* none
853* GLOBALS AFFECTED
854* none
855*****************************************************************************/
856void mll1_el1_gap_stop_cnf(void);
857
858/*****************************************************************************
859* FUNCTION
860* mll1_el1_gap_stop_req
861* DESCRIPTION
862* LL1 uses this primitive to stop gap usage in EUTRAN when EUTRAN is standby RAT.
863*
864* PARAMETERS
865* NONE
866* RETURNS
867* none
868* GLOBALS AFFECTED
869* none
870*****************************************************************************/
871void mll1_el1_gap_stop_req(void);
872
873/*****************************************************************************
874* FUNCTION
875* mll1_el1_gap_suspend_cnf
876* DESCRIPTION
877* LL1 sends this confirm message to EL1 after gap usage in standby RAT is suspended.
878* EL1 could use RF only after getting this message.
879*
880* PARAMETERS
881* NONE
882* RETURNS
883* none
884* GLOBALS AFFECTED
885* none
886*****************************************************************************/
887void mll1_el1_gap_suspend_cnf(void);
888
889/*****************************************************************************
890* FUNCTION
891* mll1_el1_gap_suspend_req
892* DESCRIPTION
893* LL1 uses this primitive to suspend gap usage in EUTRAN when EUTRAN is standby RAT.
894*
895* PARAMETERS
896* NONE
897* RETURNS
898* none
899* GLOBALS AFFECTED
900* none
901*****************************************************************************/
902void mll1_el1_gap_suspend_req(void);
903
904/*****************************************************************************
905* FUNCTION
906* mll1_el1_get_auto_time
907* DESCRIPTION
908* return auto time from EL1
909*
910* PARAMETERS
911* None
912* RETURNS
913* eutran_time_struct auto_time
914*****************************************************************************/
915eutran_time_struct mll1_el1_get_auto_time(void);
916
917/*****************************************************************************
918* FUNCTION
919* mll1_el1_get_current_time
920* DESCRIPTION
921* ll1 gets current time + ahead margin to expand gap
922*
923* PARAMETERS
924* eutran_time - start time of expansion period
925* kal_bool is_ahead_time
926* TRUE : advance eutran_time with the predefined ahead_time
927* FALSE: don't advance eutran_time with the predefined ahead_time
928* RETURNS
929* none
930* GLOBALS AFFECTED
931* none
932*****************************************************************************/
933extern void mll1_el1_get_current_time(eutran_time_struct* eutran_time, kal_bool is_ahead_time);
934
935/*****************************************************************************
936* FUNCTION
937* mll1_el1_get_el1_rf_margin
938* DESCRIPTION
939* EL1 gets RF margin in current state
940*
941* PARAMETERS
942* head - header_margin
943* tail - tail_margin
944* RETURNS
945* none
946*****************************************************************************/
947void mll1_el1_get_el1_rf_margin(kal_int32* head,kal_int32* tail);
948#ifdef __GSM_RAT__
949/*****************************************************************************
950* FUNCTION
951* mll1_el1_get_gl1_rf_margin
952* DESCRIPTION
953* EL1 gets GL1 RF margin in current state
954*
955* PARAMETERS
956* head - header_margin
957* tail - tail_margin
958* RETURNS
959* none
960*****************************************************************************/
961void mll1_el1_get_gl1_rf_margin(kal_int32* head,kal_int32* tail);
962#endif /*__GSM_RAT__*/
963/*****************************************************************************
964* FUNCTION
965* mll1_el1_get_timing_status
966* DESCRIPTION
967*
968* PARAMETERS
969* RETURNS
970* kal_bool - valid_timing KAL_TRUE : means still sync. cant be expanded
971* KAL_FALSE : means sync. done
972* GLOBALS AFFECTED
973* none
974*****************************************************************************/
975kal_bool mll1_el1_get_timing_status(void);
976
977/*****************************************************************************
978* FUNCTION
979* mll1_el1_get_mode_status
980* DESCRIPTION
981* return mode status from EL1
982*
983* PARAMETERS
984* None
985* RETURNS
986* ll1_active_rat_mode_status_enum mode_status
987*****************************************************************************/
988ll1_active_rat_mode_status_enum mll1_el1_get_mode_status(void);
989
990/*****************************************************************************
991* FUNCTION
992* mll1_el1_get_t_abort
993* DESCRIPTION
994* Tidentify,gsm / Treconfirm,gsm uint: ms
995*
996* PARAMETERS
997* carriers_other_than_gsm - Number of carriers other than GSM
998*
999* RETURNS
1000* kal_uint32 t_abort;
1001*****************************************************************************/
1002kal_uint32 mll1_el1_get_t_abort(kal_uint8 carriers_other_than_gsm, kal_bool is_identify);
1003
1004/*****************************************************************************
1005* FUNCTION
1006* mll1_el1_get_tick_count
1007* DESCRIPTION
1008* EL1 tick number
1009*
1010* PARAMETERS
1011* is_prio_search - KAL_FALSE : ll1_main wants to get meas. tick
1012* KAL_TRUE : ll1_main wants to get prio. tick
1013* t_hps - 60 (uint : second)
1014*
1015* RETURNS
1016* kal_uint32 count;
1017*****************************************************************************/
1018kal_uint32 mll1_el1_get_tick_count(kal_bool is_prio_search, kal_uint16 t_hps);
1019
1020#ifdef __UMTS_RAT__
1021#ifdef __UMTS_TDD128_MODE__
1022/*****************************************************************************
1023* FUNCTION
1024* mll1_el1_get_tl1_rf_margin
1025* DESCRIPTION
1026* EL1 gets TL1 RF margin in current state
1027*
1028* PARAMETERS
1029* head - header_margin
1030* tail - tail_margin
1031* RETURNS
1032* none
1033*****************************************************************************/
1034void mll1_el1_get_tl1_rf_margin(kal_int32* head,kal_int32* tail);
1035#endif /*__UMTS_TDD128_MODE__*/
1036#ifdef __UMTS_FDD_MODE__
1037/*****************************************************************************
1038* FUNCTION
1039* mll1_el1_get_ul1_rf_margin
1040* DESCRIPTION
1041* EL1 gets UL1 RF margin in current state
1042*
1043* PARAMETERS
1044* head - header_margin
1045* tail - tail_margin
1046* RETURNS
1047* none
1048*****************************************************************************/
1049void mll1_el1_get_ul1_rf_margin(kal_int32* head,kal_int32* tail);
1050#endif /*__UMTS_FDD_MODE__*/
1051#endif /*__UMTS_RAT__*/
1052/*****************************************************************************
1053* FUNCTION
1054* mll1_el1_handle_gap_margin_in_connect
1055* DESCRIPTION
1056* EL1 handle gap margin in connection mode
1057*
1058* PARAMETERS
1059* *st - gap starting time
1060* *length - gap length in sample
1061* RETURNS
1062* none
1063* GLOBALS AFFECTED
1064* none
1065*****************************************************************************/
1066void mll1_el1_handle_gap_margin_in_connect(eutran_time_struct* st, kal_int32* length);
1067
1068/*****************************************************************************
1069* FUNCTION
1070* mll1_el1_is_before_dest_time
1071* DESCRIPTION
1072* check if gap start time is before dest time,
1073*
1074* PARAMETERS
1075* src - gap start time
1076* dest - expand start time
1077* RETURNS
1078* kal_bool - KAL_TRUE : means that src is before dest time
1079* KAL_FALSE : means that dest is before src time
1080* GLOBALS AFFECTED
1081* none
1082*****************************************************************************/
1083kal_bool mll1_el1_is_before_dest_time(eutran_time_struct* src,eutran_time_struct* dest);
1084
1085/*****************************************************************************
1086* FUNCTION
1087* mll1_el1_is_in_connect_gp1
1088* DESCRIPTION
1089* use to check if el1 is in connect gp1 configuration
1090*
1091* PARAMETERS
1092*
1093* RETURNS
1094* kal_bool - KAL_TRUE : with GP1 configuration
1095* KAL_FALSE : without GP1 configuration
1096*****************************************************************************/
1097kal_bool mll1_el1_is_in_connect_gp1(void);
1098
1099/*****************************************************************************
1100* FUNCTION
1101* mll1_el1_is_lower_pwr_on
1102* DESCRIPTION
1103* Check if el1 is low pwr on
1104*
1105* PARAMETERS
1106*
1107* RETURNS
1108* kal_bool - KAL_FALSE : measurement is not finished and need gap in this period
1109* KAL_TRUE : measurement is finished and doesnt need gap in this period
1110*****************************************************************************/
1111kal_bool mll1_el1_is_lower_pwr_on(void);
1112
1113/*****************************************************************************
1114* FUNCTION
1115* mll1_el1_mode_status_update_ind
1116* DESCRIPTION
1117* This message is sent to EL1 for informing that mode status of active RAT when EL1 is standby RAT.
1118* This message should be updated for EL1 in standby when any mode status changed in active RAT.
1119*
1120* PARAMETERS
1121* status - mode status in active RAT
1122* RETURNS
1123* none
1124* GLOBALS AFFECTED
1125* none
1126*****************************************************************************/
1127void mll1_el1_mode_status_update_ind(ll1_active_rat_mode_status_enum status);
1128
1129/*****************************************************************************
1130* FUNCTION
1131* mll1_el1_set_timing_status
1132* DESCRIPTION
1133*
1134* PARAMETERS
1135* flag - set valid_timing = flag
1136* RETURNS
1137* none
1138* GLOBALS AFFECTED
1139* none
1140*****************************************************************************/
1141void mll1_el1_set_timing_status(kal_bool flag);
1142
1143/*****************************************************************************
1144* FUNCTION
1145* mll1_el1_sync_time_req
1146* DESCRIPTION
1147* When timing synchronization procedure is triggered, mll1 will decide which rat should do
1148* timing synchronization based on the result of g_ll1_flight_rat|| g_ll1_standby_rat || g_ll1_active_rat.
1149*
1150* PARAMETERS
1151* RETURNS
1152* none
1153* GLOBALS AFFECTED
1154* none
1155*****************************************************************************/
1156void mll1_el1_sync_time_req(void);
1157
1158/*****************************************************************************
1159* FUNCTION
1160* mll1_el1_time_add
1161* DESCRIPTION
1162* This function is used to add samples to time
1163*
1164* PARAMETERS
1165* time - basic time
1166* samples - samples
1167* RETURNS
1168* none
1169*****************************************************************************/
1170void mll1_el1_time_add( eutran_time_struct* time, kal_int32 samples);
1171
1172/*****************************************************************************
1173* FUNCTION
1174* mll1_el1_update_current_time
1175* DESCRIPTION
1176* ll1 updates current after timing sync done
1177*
1178* PARAMETERS
1179* eutran_time - current time
1180* RETURNS
1181* none
1182* GLOBALS AFFECTED
1183* none
1184*****************************************************************************/
1185void mll1_el1_update_current_time(eutran_time_struct* eutran_time);
1186
1187/*****************************************************************************
1188* CALL FUNCTION PROTOTYPE
1189* mll1_eutran_handler()
1190*
1191* DESCRIPTION
1192* Function to handle the primitive from EL1.
1193*
1194* PARAMETERS
1195* current_ilm - primitive from EL1.
1196*
1197* RETURN
1198* None
1199*****************************************************************************/
1200void mll1_eutran_handler(void *ptr_ilm);
1201
1202/*****************************************************************************
1203* FUNCTION
1204* mll1_tick_el1_gap_expansion
1205* DESCRIPTION
1206* tick el1 to expand gap when sync done
1207*
1208* PARAMETERS
1209* none
1210* RETURNS
1211* none
1212* GLOBALS AFFECTED
1213* none
1214*****************************************************************************/
1215void mll1_tick_el1_gap_expansion(void);
1216
1217/*****************************************************************************
1218* FUNCTION
1219* mll1_el1_info_init
1220* DESCRIPTION
1221* Initialize el1 internal global variable
1222*
1223* PARAMETERS
1224* none
1225* RETURNS
1226* none
1227* GLOBALS AFFECTED
1228* none
1229*****************************************************************************/
1230void mll1_el1_info_init(void);
1231
1232/*****************************************************************************
1233* FUNCTION
1234* mll1_tl1_gap_pattern_timing_checking
1235* DESCRIPTION
1236* check if the pending gap is out of date or not
1237*
1238* PARAMETERS
1239* eutran_time - el1 timing correspond to some standby rat's timing indicated in measure request
1240* RETURNS
1241* TRUE - the pending gap has not been out of date
1242* FALSE - the pending gap has been out of date
1243* GLOBALS AFFECTED
1244* none
1245*****************************************************************************/
1246kal_bool mll1_el1_gap_pattern_timing_checking(eutran_time_struct eutran_time);
1247
1248#endif /*_MLL1_EUTRAN_H*/