[layer23] Added (incomplete) ASSIGNMENT COMMAND handling

This commit features handling of ASSIGNMENT COMMAND. Currently only channel
descriptions "after time" are processed, which is mostly the case.
The ASSIGNMENT COMMAND is essential, because public networks assign an
SDCCH4/8 before actually assigning a TCH.
This commit is contained in:
Andreas.Eversberg 2010-08-14 17:10:26 +00:00
parent 49d6f1aca9
commit 4337d3bb2e
4 changed files with 581 additions and 315 deletions

View File

@ -27,7 +27,9 @@ struct osmol2_entity {
/* RX measurement statistics */
struct rx_meas_stat {
uint32_t last_fn;
uint32_t frames;
uint32_t snr;
uint32_t berr;
uint32_t rxlev;
};

View File

@ -69,9 +69,16 @@ struct gsm48_rr_cd {
uint8_t hsn;
uint8_t chan_nr; /* type, slot, sub slot */
uint8_t link_id;
uint8_t ta; /* timing advance */
uint8_t ind_tx_power; /* last indicated power */
uint8_t ind_ta; /* last indicated ta */
uint8_t mob_alloc_lv[9]; /* len + up to 64 bits */
uint8_t start_t1, start_t2, start_t3; /* start. time */
uint8_t freq_list_lv[131]; /* len + 130 octets */
uint8_t freq_seq_lv[10]; /* len + 9 octets */
uint8_t cell_desc_lv[17]; /* len + 16 octets */
uint8_t start; /* start time available */
struct gsm_time start_tm; /* start time */
uint8_t mode; /* mode of channel */
uint8_t cipher; /* ciphering of channel */
};
/* measurements */
@ -146,12 +153,12 @@ struct gsm48_rrlayer {
uint8_t hando_susp_state;
uint8_t assign_susp_state;
uint8_t resume_last_state;
struct gsm48_rr_cd cd_last;
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 */
/* measurements */
struct gsm48_rr_meas meas;
uint8_t ind_tx_power; /* last indicated power */
uint8_t ind_ta; /* last indicated ta */
/* BA range */
uint8_t ba_ranges;

View File

@ -149,7 +149,9 @@ static int rx_ph_data_ind(struct osmocom_ms *ms, struct msgb *msg)
rsl_chan_nr_str(dl->chan_nr), tm.t1, tm.t2, tm.t3,
hexdump(ccch->data, sizeof(ccch->data)));
meas->last_fn = ntohl(dl->frame_nr);
meas->frames++;
meas->snr += dl->snr;
meas->berr += dl->num_biterr;
meas->rxlev += dl->rx_level;

File diff suppressed because it is too large Load Diff