comparison gsm-fw/g23m-gsm/alr/alr_nc.c @ 681:461ab5b255f5

alr_nc.c compiles
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Mon, 29 Sep 2014 19:57:11 +0000
parents 2f7df7a314f8
children
comparison
equal deleted inserted replaced
680:04d1b20eb7b0 681:461ab5b255f5
16 +----------------------------------------------------------------------------- 16 +-----------------------------------------------------------------------------
17 | Purpose : This Modul defines the SDL process Idle_Neighbour_Cells. 17 | Purpose : This Modul defines the SDL process Idle_Neighbour_Cells.
18 +----------------------------------------------------------------------------- 18 +-----------------------------------------------------------------------------
19 */ 19 */
20 20
21 #ifndef ALR_NC_C 21 #ifndef ALR_NC_C
22 #define ALR_NC_C 22 #define ALR_NC_C
23
24 #include "config.h"
25 #include "fixedconf.h"
26 #include "condat-features.h"
23 27
24 #define ENTITY_PL 28 #define ENTITY_PL
25 29
26 /*==== INCLUDES ===================================================*/ 30 /*==== INCLUDES ===================================================*/
27 #include <string.h> 31 #include <string.h>
326 #endif 330 #endif
327 331
328 #if defined (_SIMULATION_) 332 #if defined (_SIMULATION_)
329 #define TRACING 333 #define TRACING
330 #endif /* _SIMULATION_ */ 334 #endif /* _SIMULATION_ */
331
332 /*
333 * Defining Locosto flag for 20.7 for Simulation build
334 */
335 #if defined (_SIMULATION_) && defined SIMU_LOCOSTO_CT_GCF_20_7
336 #define CHIPSET 15
337 #endif
338 335
339 /* 336 /*
340 * some traces 337 * some traces
341 */ 338 */
342 #if defined (TRACING) 339 #if defined (TRACING)
4482 { 4479 {
4483 case INACTIVE: 4480 case INACTIVE:
4484 break; 4481 break;
4485 case IDLE: 4482 case IDLE:
4486 if (pcell->one_of_twelve) 4483 if (pcell->one_of_twelve)
4487 //Nina modify to avoid frequent NSY_R 4484 #if 0 //Nina modify to avoid frequent NSY_R
4488
4489 #if 0
4490 nc_set_status (i, READ_FB_SB); 4485 nc_set_status (i, READ_FB_SB);
4491
4492 #else 4486 #else
4493 if(pcell->rank_of_the_six < 2) 4487 {
4494 { 4488 if (pcell->rank_of_the_six < 2)
4495 nc_set_status (i, READ_FB_SB); 4489 nc_set_status (i, READ_FB_SB);
4496 } 4490 else
4497 else 4491 {
4498 { 4492 pcell->one_of_six = 0;
4499 pcell->one_of_six = 0; 4493 pcell->one_of_twelve =0;
4500 pcell->one_of_twelve =0; 4494 }
4501 } 4495 }
4502 #endif 4496 #endif
4503 if (start_list EQ CHECK_FOR_CONFIRM) 4497 if (start_list EQ CHECK_FOR_CONFIRM)
4504 { 4498 {
4505 if (pcell->tim_valid EQ TV_VALID_TIMING_INFO) 4499 if (pcell->tim_valid EQ TV_VALID_TIMING_INFO)
4506 pcell->tim_valid = TV_APPROX_TIMING_INFO; 4500 pcell->tim_valid = TV_APPROX_TIMING_INFO;
4507 else if (pcell->tim_valid EQ TV_APPROX_TIMING_INFO) 4501 else if (pcell->tim_valid EQ TV_APPROX_TIMING_INFO)
4542 nc_set_status (i, FB_SB_SYNC); 4536 nc_set_status (i, FB_SB_SYNC);
4543 } 4537 }
4544 } 4538 }
4545 break; 4539 break;
4546 case FB_SB_FAILED: 4540 case FB_SB_FAILED:
4547 //Nina add to judge the syn failure times 4541 //Nina add to judge the syn failure times
4548 if(pcell->syn_failure_times > 2) 4542 if(pcell->syn_failure_times > 2)
4549 { 4543 {
4550 nc_set_status (i, EXCLUDED); 4544 nc_set_status (i, EXCLUDED);
4551 break; 4545 break;
4552 4546 }
4553 }
4554 if (pcell->one_of_twelve EQ FALSE) 4547 if (pcell->one_of_twelve EQ FALSE)
4555 nc_set_status (i, IDLE); 4548 nc_set_status (i, IDLE);
4556 else if (pcell->c_sync EQ 0) 4549 else if (pcell->c_sync EQ 0)
4557 { 4550 {
4558 if(pcell->rank_of_the_six < 4) 4551 if(pcell->rank_of_the_six < 4)
4559 { 4552 nc_set_status (i, READ_FB_SB);
4560 nc_set_status (i, READ_FB_SB); 4553 else
4561 } 4554 {
4562 else 4555 pcell->one_of_six = 0;
4563 { 4556 pcell->one_of_twelve =0;
4564 pcell->one_of_six = 0; 4557 }
4565 pcell->one_of_twelve =0;
4566
4567 }
4568 } 4558 }
4569 break; 4559 break;
4570 case IDLE_SYNC: 4560 case IDLE_SYNC:
4571 if (pcell->one_of_twelve) 4561 if (pcell->one_of_twelve)
4572 { 4562 {
4854 4844
4855 if(alr_data->nc_data.cell[i].rxlev_average < hyst_rxlev) 4845 if(alr_data->nc_data.cell[i].rxlev_average < hyst_rxlev)
4856 hyst_rxlev = alr_data->nc_data.cell[i].rxlev_average; 4846 hyst_rxlev = alr_data->nc_data.cell[i].rxlev_average;
4857 } 4847 }
4858 4848
4859 alr_data->nc_data.cell[i].one_of_six = FALSE; 4849 alr_data->nc_data.cell[i].one_of_six = FALSE;
4860
4861 } 4850 }
4862 4851
4863 if(num_1of6 < MAX_RR_NCELL_CNT) 4852 if(num_1of6 < MAX_RR_NCELL_CNT)
4864 hyst_rxlev = 0; 4853 hyst_rxlev = 0;
4865 4854
4991 GET_INSTANCE_DATA; 4980 GET_INSTANCE_DATA;
4992 int i, j; 4981 int i, j;
4993 BOOL limit; 4982 BOOL limit;
4994 int index; 4983 int index;
4995 4984
4996 UBYTE rank = 0; 4985 UBYTE rank = 0;
4997 4986
4998 USHORT c_ba_arfcn = alr_data->nc_data.c_ba_arfcn; 4987 USHORT c_ba_arfcn = alr_data->nc_data.c_ba_arfcn;
4999 T_NC* pcell; 4988 T_NC* pcell;
5000 UBYTE band_nc; 4989 UBYTE band_nc;
5001 UBYTE band_sc = get_band (alr_data->serving_cell); 4990 UBYTE band_sc = get_band (alr_data->serving_cell);
5072 } 5061 }
5073 5062
5074 if (index NEQ NOT_PRESENT_16BIT) 5063 if (index NEQ NOT_PRESENT_16BIT)
5075 { 5064 {
5076 alr_data->nc_data.cell[index].one_of_six = TRUE; 5065 alr_data->nc_data.cell[index].one_of_six = TRUE;
5077 alr_data->nc_data.cell[index].rank_of_the_six = rank; 5066 alr_data->nc_data.cell[index].rank_of_the_six = rank;
5078 rank++; 5067 rank++;
5079 (*c_found)++; 5068 (*c_found)++;
5080 } 5069 }
5081 } 5070 }
5082 } 5071 }
5083 5072
5310 pcell->nc_rxlev += rxlev; 5299 pcell->nc_rxlev += rxlev;
5311 pcell->c_nc_rxlev++; 5300 pcell->c_nc_rxlev++;
5312 } 5301 }
5313 #endif 5302 #endif
5314 5303
5315
5316 #if defined(TRACING) 5304 #if defined(TRACING)
5317 TRACE_EVENT_P4("NC%u[%d] rx=%d av=%d", 5305 TRACE_EVENT_P4("NC%u[%d] rx=%d av=%d",
5318 index, 5306 index,
5319 pcell->ba_arfcn EQ NOT_PRESENT_16BIT ? -1 : pcell->ba_arfcn&ARFCN_MASK, 5307 pcell->ba_arfcn EQ NOT_PRESENT_16BIT ? -1 : pcell->ba_arfcn&ARFCN_MASK,
5320 report->result[i].rxlev, pcell->rxlev_average); 5308 report->result[i].rxlev, pcell->rxlev_average);
5862 #else 5850 #else
5863 sync_req->radio_freq = ARFCN_TO_L1(p_ncell->ba_arfcn); 5851 sync_req->radio_freq = ARFCN_TO_L1(p_ncell->ba_arfcn);
5864 #endif 5852 #endif
5865 5853
5866 if (p_ncell->tim_valid EQ TV_INVALID_TIMING_INFO) 5854 if (p_ncell->tim_valid EQ TV_INVALID_TIMING_INFO)
5867 { 5855 {
5868
5869 sync_req->fn_offset = 0; 5856 sync_req->fn_offset = 0;
5870 sync_req->time_alignment = 0; 5857 sync_req->time_alignment = 0;
5871 5858 }
5872 }
5873 else 5859 else
5874 { 5860 {
5875 sync_req->fn_offset = p_ncell->frame_offset; 5861 sync_req->fn_offset = p_ncell->frame_offset;
5876 sync_req->time_alignment = p_ncell->time_align; 5862 sync_req->time_alignment = p_ncell->time_align;
5877 } 5863 }
5878 5864
5879 sync_req->timing_validity = p_ncell->tim_valid; 5865 sync_req->timing_validity = p_ncell->tim_valid;
5880 TRACE_EVENT_P4("nc_build_sync_req[%d] timing_validity=%d fn_offset=%ld, time_alignment=%ld", 5866 TRACE_EVENT_P4("nc_build_sync_req[%d] timing_validity=%d fn_offset=%ld, time_alignment=%ld",
5881 p_ncell->ba_arfcn, 5867 p_ncell->ba_arfcn,
5882 sync_req->timing_validity, 5868 sync_req->timing_validity,
5884 sync_req->time_alignment); 5870 sync_req->time_alignment);
5885 ma_nc_sync_req (sync_req); 5871 ma_nc_sync_req (sync_req);
5886 alr_data->nc_data.c_sync_req++; 5872 alr_data->nc_data.c_sync_req++;
5887 } 5873 }
5888 5874
5889
5890 ALR_EM_READ_NEIGHBOURCELL_SB; 5875 ALR_EM_READ_NEIGHBOURCELL_SB;
5891 5876
5892 nc_set_status (index, READ_FB_SB_PENDING); 5877 nc_set_status (index, READ_FB_SB_PENDING);
5893
5894 } 5878 }
5895 5879
5896 5880
5897 /* 5881 /*
5898 +--------------------------------------------------------------------+ 5882 +--------------------------------------------------------------------+
5959 5943
5960 LOCAL void nc_process_status_last_bsic(void) 5944 LOCAL void nc_process_status_last_bsic(void)
5961 { 5945 {
5962 GET_INSTANCE_DATA; 5946 GET_INSTANCE_DATA;
5963 T_NC* pbsic = &alr_data->nc_data.cell[LAST_BSIC_REQ]; 5947 T_NC* pbsic = &alr_data->nc_data.cell[LAST_BSIC_REQ];
5964
5965 5948
5966 switch (pbsic->status) 5949 switch (pbsic->status)
5967 { 5950 {
5968 case READ_FB_SB: 5951 case READ_FB_SB:
5969 if (alr_data->nc_data.c_sync_req < MAX_L1_SYNC_CNT) 5952 if (alr_data->nc_data.c_sync_req < MAX_L1_SYNC_CNT)
6050 6033
6051 PURPOSE : Processes cell synchronisation. 6034 PURPOSE : Processes cell synchronisation.
6052 6035
6053 */ 6036 */
6054 6037
6055
6056
6057 LOCAL void nc_process_status_sync(void) 6038 LOCAL void nc_process_status_sync(void)
6058 { 6039 {
6059 GET_INSTANCE_DATA; 6040 GET_INSTANCE_DATA;
6060 /* To avoid warnings */ 6041 /* To avoid warnings */
6061 USHORT index; 6042 USHORT index;
7164 pcell->c_bcch = C_INVALID_BCCH; 7145 pcell->c_bcch = C_INVALID_BCCH;
7165 pcell->c_sync = C_INVALID_SYNC; 7146 pcell->c_sync = C_INVALID_SYNC;
7166 pcell->tim_valid = TV_INVALID_TIMING_INFO; 7147 pcell->tim_valid = TV_INVALID_TIMING_INFO;
7167 pcell->blocks_required = 0; 7148 pcell->blocks_required = 0;
7168 pcell->c_error = 0; 7149 pcell->c_error = 0;
7169 pcell->syn_failure_times= 0; 7150 pcell->syn_failure_times= 0;
7170 nc_clean_store_bcch (index); 7151 nc_clean_store_bcch (index);
7171 break; 7152 break;
7172 7153
7173 case IDLE: 7154 case IDLE:
7174 pcell->bsic = NOT_PRESENT_8BIT; 7155 pcell->bsic = NOT_PRESENT_8BIT;
7175 /* pcell->frame_offset = 0; 7156 #if 0
7157 pcell->frame_offset = 0;
7176 pcell->time_align = 0; 7158 pcell->time_align = 0;
7177 pcell->last_rxlev = 0; */ 7159 pcell->last_rxlev = 0;
7160 #endif
7178 pcell->one_of_six = FALSE; 7161 pcell->one_of_six = FALSE;
7179 pcell->one_of_twelve = FALSE; 7162 pcell->one_of_twelve = FALSE;
7180 /*pcell->c_attempt = 0;*/ 7163 /*pcell->c_attempt = 0;*/
7181 pcell->c_bcch = C_INVALID_BCCH; 7164 pcell->c_bcch = C_INVALID_BCCH;
7182 pcell->c_sync = C_INVALID_SYNC; 7165 pcell->c_sync = C_INVALID_SYNC;
7186 break; 7169 break;
7187 7170
7188 case READ_FB_SB: 7171 case READ_FB_SB:
7189 case READ_FB_SB_PENDING: 7172 case READ_FB_SB_PENDING:
7190 pcell->bsic = NOT_PRESENT_8BIT; 7173 pcell->bsic = NOT_PRESENT_8BIT;
7191 /* pcell->frame_offset = 0; 7174 #if 0
7192 pcell->time_align = 0; */ 7175 pcell->frame_offset = 0;
7176 pcell->time_align = 0;
7177 #endif
7193 pcell->last_rxlev = 0; 7178 pcell->last_rxlev = 0;
7194 pcell->c_bcch = C_INVALID_BCCH; 7179 pcell->c_bcch = C_INVALID_BCCH;
7195 pcell->c_sync = C_INVALID_SYNC; 7180 pcell->c_sync = C_INVALID_SYNC;
7196 pcell->blocks_required = 0; 7181 pcell->blocks_required = 0;
7197 pcell->c_error = 0; 7182 pcell->c_error = 0;
7224 pcell->c_attempt = 0; 7209 pcell->c_attempt = 0;
7225 pcell->c_error = 0; 7210 pcell->c_error = 0;
7226 break; 7211 break;
7227 7212
7228 case FB_SB_SYNC: 7213 case FB_SB_SYNC:
7229 if((pcell->status == READ_FB_SB) || (pcell->status == READ_FB_SB_PENDING)) 7214 if((pcell->status == READ_FB_SB) || (pcell->status == READ_FB_SB_PENDING))
7230 { 7215 {
7231 if(pcell->syn_failure_times > 0) 7216 if (pcell->syn_failure_times > 0)
7232 pcell->syn_failure_times --; 7217 pcell->syn_failure_times --;
7233 } 7218 }
7234 pcell->last_rxlev = 0; 7219 pcell->last_rxlev = 0;
7235 pcell->blocks_required = 0; 7220 pcell->blocks_required = 0;
7236 if (!pcell->one_of_six) 7221 if (!pcell->one_of_six)
7237 pcell->c_attempt = 0; 7222 pcell->c_attempt = 0;
7238 pcell->c_error = 0; 7223 pcell->c_error = 0;
7274 pcell->c_sync = alr_data->nc_data.c_nc_timer; /*TODO maybe move this to a function*/ 7259 pcell->c_sync = alr_data->nc_data.c_nc_timer; /*TODO maybe move this to a function*/
7275 nc_clean_store_bcch (index); 7260 nc_clean_store_bcch (index);
7276 break; 7261 break;
7277 7262
7278 case FB_SB_FAILED: 7263 case FB_SB_FAILED:
7279 if((pcell->status == READ_FB_SB) || (pcell->status == READ_FB_SB_PENDING)) 7264 if((pcell->status == READ_FB_SB) || (pcell->status == READ_FB_SB_PENDING))
7280 { 7265 pcell->syn_failure_times ++;
7281 pcell->syn_failure_times ++;
7282 }
7283 pcell->bsic = NOT_PRESENT_8BIT; 7266 pcell->bsic = NOT_PRESENT_8BIT;
7284 if (pcell->status EQ READ_FB_SB_PENDING) 7267 if (pcell->status EQ READ_FB_SB_PENDING)
7285 { 7268 {
7286 pcell->frame_offset = NOT_PRESENT_32BIT; 7269 pcell->frame_offset = NOT_PRESENT_32BIT;
7287 pcell->time_align = NOT_PRESENT_32BIT; 7270 pcell->time_align = NOT_PRESENT_32BIT;
8025 UBYTE i; 8008 UBYTE i;
8026 UBYTE j; 8009 UBYTE j;
8027 UBYTE max_rxlev; 8010 UBYTE max_rxlev;
8028 UBYTE k; 8011 UBYTE k;
8029 8012
8030
8031
8032
8033 for (i = 0; i < (p_bin->num_valid ) ; i++) 8013 for (i = 0; i < (p_bin->num_valid ) ; i++)
8034 { 8014 {
8035 if ( (n < MAX_NUM_CELLS_IN_REPORT) AND (nbr_rpt > 0) ) 8015 if ( (n < MAX_NUM_CELLS_IN_REPORT) AND (nbr_rpt > 0) )
8036 { 8016 {
8037 max_rxlev = pcell[p_bin->index[i]].rxlev_average; 8017 max_rxlev = pcell[p_bin->index[i]].rxlev_average;