diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2013-12-11 11:35:14 +0100 |
---|---|---|
committer | Andreas Eversberg <jolly@eversberg.eu> | 2016-09-25 08:11:43 +0200 |
commit | 6188bdc5481a936a66b7c03e29e53c78a3ba62e7 (patch) | |
tree | e475bec473cc89df8b1e659e85c407b7d89f36ac /src/host/layer23/include | |
parent | 07e03e1fcadb559accc8725b8013d54f0b7fd6d6 (diff) |
[WIP] HO: Completed handover process at mobile (layer 3).
The implementation supports:
- Non-synchronised handover
- Synchronized handover (tbd)
- Pre-sychronized handover
Diffstat (limited to 'src/host/layer23/include')
-rw-r--r-- | src/host/layer23/include/osmocom/bb/mobile/gsm48_rr.h | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/host/layer23/include/osmocom/bb/mobile/gsm48_rr.h b/src/host/layer23/include/osmocom/bb/mobile/gsm48_rr.h index 6235bfdb..d0227c65 100644 --- a/src/host/layer23/include/osmocom/bb/mobile/gsm48_rr.h +++ b/src/host/layer23/include/osmocom/bb/mobile/gsm48_rr.h @@ -9,6 +9,9 @@ #define T200_DCCH_SHARED 2 /* SDCCH shares SAPI 0 and 3 */ #define T200_ACCH 2 /* SACCH SAPI 3 */ +/* add some extra time due to async nature of L1CTL */ +#define GSM_T3124_675 0, 975000 +#define GSM_T3124_320 0, 620000 /* GSM 04.07 9.1.2 */ #define GSM48_RR_EST_REQ 0x10 @@ -83,6 +86,12 @@ struct gsm48_rr_hdr { #define GSM48_RR_MOD_ASSIGN_RESUME 4 #define GSM48_RR_MOD_HANDO_RESUME 5 +/* handover sync indications (TS 04.08 10.5.2.39) */ +#define GSM48_RR_HO_NON_SYNC 0 +#define GSM48_RR_HO_SYNC 1 +#define GSM48_RR_HO_PRE_SYNC 2 +#define GSM48_RR_HO_PSEUDO_SYNC 3 + /* channel description */ struct gsm48_rr_cd { uint8_t tsc; @@ -113,7 +122,7 @@ struct gsm48_rr_meas { /* note: must be sorted by arfcn 1..1023,0 according to SI5* */ uint8_t nc_num; /* number of measured cells (32 max) */ int8_t nc_rxlev_dbm[32]; /* -128 = no value */ - uint8_t nc_bsic[32]; + uint8_t nc_bsic[32]; /* 255 = no value */ uint16_t nc_arfcn[32]; }; @@ -171,11 +180,20 @@ struct gsm48_rrlayer { /* special states when assigning channel */ uint8_t modify_state; - uint8_t hando_sync_ind, hando_rot, hando_nci, hando_act; struct gsm48_rr_cd cd_last; /* store last cd in case of failure */ struct gsm48_rr_cd cd_before; /* before start time */ struct gsm48_rr_cd cd_after; /* after start time */ + /* handover */ + int hando_meas_index; + /* handover refers to this neighbor */ + uint8_t hando_sync_ind, hando_rot, hando_nci, hando_act; + uint8_t hando_ref; /* handover reference */ + uint8_t hando_acc_pending; + /* counter for access bursts */ + uint16_t hando_new_cell_arfcn; + uint8_t hando_new_cell_bsic; + /* BA range */ uint8_t ba_ranges; uint32_t ba_range[16]; @@ -211,5 +229,7 @@ int gsm48_rr_stop_monitor(struct osmocom_ms *ms); int gsm48_rr_alter_delay(struct osmocom_ms *ms); int gsm48_rr_tx_voice(struct osmocom_ms *ms, struct msgb *msg); int gsm48_rr_audio_mode(struct osmocom_ms *ms, uint8_t mode); +int gsm48_rr_meas_ind(struct osmocom_ms *ms, uint16_t band_arfcn, + uint8_t rx_lev, uint8_t bsic); #endif /* _GSM48_RR_H */ |