view cdg-hybrid/sap/rrlc.pdf @ 268:f2e52cab0a73

abb_inth.c: check all interrupt causes, not just one The original code used if - else if - else if etc constructs, thus the first detected interrupt was the only one handled. However, Iota ITSTATREG is a clear-on-read register, thus if we only handle the first detected interrupt and skip checking the others, then the other interrupts will be lost, if more than one interrupt happened to occur in one ABB interrupt handling cycle - a form of rare race condition. Change the code to check all interrupts that were read in this cycle.
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 13 Jun 2021 18:17:53 +0000
parents 35f7a1dc9f7d
children
line wrap: on
line source

;********************************************************************************
;*** File           : rrlc.pdf
;*** Creation       : Wed Mar 11 09:58:47 CST 2009
;*** XSLT Processor : Apache Software Foundation / http://xml.apache.org/xalan-j / supports XSLT-Ver: 1
;*** Copyright      : (c) Texas Instruments AG, Berlin Germany 2002
;********************************************************************************
;*** Document Type  : Service Access Point Specification
;*** Document Name  : rrlc
;*** Document No.   : 8443.101.02.008
;*** Document Date  : 2002-10-11
;*** Document Status: BEING_PROCESSED
;*** Document Author: VK
;********************************************************************************



PRAGMA 	SRC_FILE_TIME 	"Thu Nov 29 09:52:52 2007"
PRAGMA 	LAST_MODIFIED 	"2002-10-11"
PRAGMA 	ID_AND_VERSION 	"8443.101.02.008"



CONST 	MAX_NCELL_EOTD_L1 	12 	; Max no. of NC observed for EOTD
CONST 	MAX_NCELL_EOTD 	15 	; Max no. of NC reported in the Measurement Assistance Data Element (3GPP 04.31)
CONST 	MAX_NCELL_EOTD_SI 	32 	; Max no. of NC reported in the Measurement Assistance Data SI List Element (3GPP 04.31)
CONST 	XCOR_NO 	18 	; Cross-correlation values (real & imaginary)



VALTAB 	VAL_cause
VAL 	0 	LCS_OK 	"no error"
VAL 	10 	LCS_WRONG_BTS 	"Serving Cell BTS differs from Reference BTS"
VAL 	20 	LCS_HANDOVER 	"handover occured during Position Measurement procedure"

VALTAB 	VAL_sb_flag
VAL 	0 	EOTD_INVALID 	"invalid data"
VAL 	1 	EOTD_VALID 	"valid data"

VALTAB 	VAL_eotd_mode
VAL 	0 	EOTD_IDLE 	"Idle mode"
VAL 	1 	EOTD_DEDIC 	"Dedicated or packet mode"

VALTAB 	VAL_exp_otd
VAL 	0 - 1250 	"The used resolution is 1 bits. This OTD value is the OTD value of TS0s (i.e. the difference in starting of TS0), not only the OTD between starts of bursts expected OTD between the scell and the specified cell. Note: 1250 is interpreted as 0"

VALTAB 	VAL_fn
VAL 	2715648 	FNMAX 	"max Frame Number + 1 (26*51*2048)"

VALTAB 	VAL_mfrm_offset
VAL 	0 - 51 	"multiframes/ 51 is interpreted as 0"

VALTAB 	VAL_otd_type
VAL 	0 	ROUGH_RTD 	"only rough RTD has been provided by the NW"
VAL 	1 	EXPECTED_OTD 	"only expectedOTD has been provided by the NW"
VAL 	2 	BOTH_OTD 	"Both OTD / RTD types have been provided by the NW"

VALTAB 	VAL_rough_rtd
VAL 	0 - 1250 	"rough RTD in bits (see expected OTD)"

VALTAB 	VAL_tav
VAL 	0 - 63 	"valid TA values"
VAL 	255 	TA_NOT_AVAIL 	"no Timing Advance in Idle Mode"

VALTAB 	VAL_uncertainty
VAL 	0 	UNC_MAX_2BIT 	"uncertainty in bits. 0 - 2 bits"
VAL 	1 	UNC_MAX_4BIT 	"uncertainty in bits. 3 - 4 bits"
VAL 	2 	UNC_MAX_8BIT 	"uncertainty in bits. 5 - 8 bits"
VAL 	3 	UNC_MAX_12BIT 	"uncertainty in bits. 9 - 12 bits"
VAL 	4 	UNC_MAX_16BIT 	"uncertainty in bits. 13 - 16 bits"
VAL 	5 	UNC_MAX_22BIT 	"uncertainty in bits. 17 - 22 bits"
VAL 	6 	UNC_MAX_30BIT 	"uncertainty in bits. 23 - 30 bits"
VAL 	7 	UNC_GT_30BIT 	"uncertainty in bits.  > 30 bits"




VAR 	arfcn 	"Channel number" 	S


VAR 	bsic 	"Base station ID code" 	B


VAR 	cause 	"Cause Identifier" 	B

VAL 	@p_rrlc - VAL_cause@ 	

VAR 	cell_id 	"Cell ID" 	S


VAR 	eotd_crosscor 	"Cross-correlation data" 	T


VAR 	sb_flag 	"data on SCH could be decoded, 'sb' stems from Sch Burst" 	B

VAL 	@p_rrlc - VAL_sb_flag@ 	

VAR 	eotd_mode 	"Operation mode" 	B

VAL 	@p_rrlc - VAL_eotd_mode@ 	

VAR 	exp_otd 	"expectedOTD" 	S

VAL 	@p_rrlc - VAL_exp_otd@ 	

VAR 	fn 	"full frame number" 	L

VAL 	@p_rrlc - VAL_fn@ 	

VAR 	lac 	"Location area code" 	S


VAR 	mcc 	"Mobile country code" 	B


VAR 	mfrm_offset 	"multiframe offset" 	B

VAL 	@p_rrlc - VAL_mfrm_offset@ 	

VAR 	mnc 	"Mobile country code" 	B


VAR 	time_tag 	"Nominal Position" 	L


VAR 	otd_type 	"OTD type" 	B

VAL 	@p_rrlc - VAL_otd_type@ 	

VAR 	req_id 	"Request Identifier" 	S


VAR 	rough_rtd 	"rough RTD" 	S

VAL 	@p_rrlc - VAL_rough_rtd@ 	

VAR 	d_eotd_nrj 	"Signal level" 	L


VAR 	tav 	"Timing advance" 	B

VAL 	@p_rrlc - VAL_tav@ 	

VAR 	uncertainty 	"Uncertainty of expected OTD" 	B

VAL 	@p_rrlc - VAL_uncertainty@ 	




COMP 	assist_data 	 "Assistance Data"
{
 	arfcn 	 ; channel number
 	bsic 	 ; Base Station Id Code
 	mfrm_offset 	 ; multiframe offset
 	otd_type 	 ; otd type
 	exp_otd 	 ; expected otd
 	uncertainty 	 ; uncertainty of exp. otd
 	rough_rtd 	 ; rough rtd
}



COMP 	eotd_sc_res 	 "EOTD SC Results at start of measurement"
{
 	sb_flag 	 ; Valid flag; named 'Data Valid' by Lower Layer task
 	bsic 	 ; base station identity code
 	arfcn 	 ; channel number
 	eotd_crosscor 	[XCOR_NO] 	 ; Cross correlation; real and imaginary parts for m=p-4 tp p+4
 	d_eotd_nrj 	 ; Sum of Amplitudes; named 'RSSI' by Cursor task
 	time_tag 	 ; Time tag; named 'Nominal Position' by Lower Layer task; in of case 1st SC measurement time_tag takes on the SCH Frame Number
}
TYPEDEF COMP eotd_sc_res 	eotd_sc_res1 	 "EOTD SC Results at stop of measurement"
TYPEDEF COMP eotd_sc_res 	eotd_nc_res 	 "EOTD NC Results"






; RRLC_MEAS_REQ 	0x80000040
; RRLC_MEAS_IND 	0x80004040
; RRLC_ERROR_IND 	0x80014040



PRIM 	RRLC_MEAS_REQ 	0x80000040
{
 	req_id 	 ; Request ID
 	< () 	arfcn 	> 	 ; Reference BTS ARFCN
 	< () 	bsic 	> 	 ; Reference BTS BSIC
 	< () 	assist_data 	[0..MAX_NCELL_EOTD] 	> 	 ; Assistance Data; The network may provide Assistance Data for up to 15 BTSs, however Layer1 can cope with 12 at one time. ALR will perform the mapping 15->12?
}






PRIM 	RRLC_MEAS_IND 	0x80004040
{
 	mcc 	[3] 	 ; Mobile Coutry Code
 	mnc 	[3] 	 ; Mobile Network Code
 	lac 	 ; Location Area Code
 	cell_id 	 ; CellID
 	eotd_mode 	 ; Mode
 	req_id 	 ; Request Ident; passed from MPH
 	tav 	 ; Timing Advance; passed from MPH
 	fn 	 ; Frame Number; passed from MPH
 	eotd_sc_res 	 ; EOTD SC Results; passed from MPH
 	eotd_sc_res1 	 ; EOTD SC Results; passed from MPH
 	eotd_nc_res 	[1..MAX_NCELL_EOTD_L1] 	 ; EOTD NC Results; passed from MPH
}






PRIM 	RRLC_ERROR_IND 	0x80014040
{
 	cause 	 ; cause ID
}