-static u_int8_t *gsm48_si3(struct gsm_net *net, struct gsm_bts_conf *conf)
-{
- static u_int8_t si[23];
- int i, bit, octet;
-
- memset(&si, 0, sizeof(si));
-
- /* header */
-#warning testing
- si[0] = 0x59;
- si[1] = 0x06;
- si[2] = 0x1B;
- /* cell 10.5.1.1 */
- si[3] = ci >> 8;
- si[4] = ci;
- /* lai 10.5.1.3 */
- gsm0408_generate_lai(&si[5], network->country_code,
- network->network_code,
- conf->location_area_code);
- /* desc 10.5.2.11 */
- si[10] = conf->att << 6;
- si[10] |= conf->bs_ag_blks_res << 3;
- si[10] |= conf->ccch_conf;
- si[11] = conf->bs_pa_mfrms;
- si[12] = conf->t3212_decihours;
- /* option 10.5.2.3 */
- si[13] = conf->pwrc << 6;
- si[13] |= conf->dtx << 4;
- si[13] |= conf->rl_timeout;
- /* selection 10.5.2.4 */
- si[14] = conf->csel_hyst << 5;
- si[14] |= conf->ms_txpwr_max_cch;
- si[15] = conf->acs << 7;
- si[15] |= conf->neci << 6;
- si[15] |= conf->rxlev_access_min;
- /* rach 10.5.2.29 */
- si[16] = (conf->max_trans << 6);
- si[16] |= (conf->tx_integer << 2);
- si[16] |= (conf->cell_barr << 1);
- si[16] |= conf->re;
- si[17] = (conf->ec << 2);
- for (i = 0; i < conf->ac_len; i++) {
- if (conf->ac_list[i] <= 15 && conf->ac_list[i] != 10) {
- bit = conf->ac_list[i] & 7;
- octet = data->ac_list[i] / 8;
- si[18 - octet] |= (1 << bit);
- }
- }
- /* rest 10.5.2.34 */
-}
-