blob: 4a334108b350ab3b7038038ec1b139730dc71477 [file] [log] [blame]
Harald Welte52b1f982008-12-23 20:25:15 +00001/* GSM Radio Signalling Link messages on the A-bis interface
2 * 3GPP TS 08.58 version 8.6.0 Release 1999 / ETSI TS 100 596 V8.6.0 */
3
4/* (C) 2008 by Harald Welte <laforge@gnumonks.org>
5 * All Rights Reserved
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along
18 * with this program; if not, write to the Free Software Foundation, Inc.,
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 */
22
23#ifndef _RSL_H
24#define _RSL_H
25
Harald Welte13f52972010-02-20 18:56:00 +010026#include <osmocore/protocol/gsm_08_58.h>
Harald Welte52b1f982008-12-23 20:25:15 +000027
Harald Weltedfe6c7d2010-02-20 16:24:02 +010028#include <osmocore/msgb.h>
Harald Welte52b1f982008-12-23 20:25:15 +000029
Harald Weltee79769b2009-02-07 00:48:17 +000030int rsl_bcch_info(struct gsm_bts_trx *trx, u_int8_t type,
Harald Welte52b1f982008-12-23 20:25:15 +000031 const u_int8_t *data, int len);
Harald Weltee79769b2009-02-07 00:48:17 +000032int rsl_sacch_filling(struct gsm_bts_trx *trx, u_int8_t type,
Harald Welte52b1f982008-12-23 20:25:15 +000033 const u_int8_t *data, int len);
Harald Weltee79769b2009-02-07 00:48:17 +000034int rsl_chan_activate(struct gsm_bts_trx *trx, u_int8_t chan_nr,
Harald Welte52b1f982008-12-23 20:25:15 +000035 u_int8_t act_type,
36 struct rsl_ie_chan_mode *chan_mode,
37 struct rsl_ie_chan_ident *chan_ident,
38 u_int8_t bs_power, u_int8_t ms_power,
39 u_int8_t ta);
Harald Welteda783762009-02-18 03:29:53 +000040int rsl_chan_activate_lchan(struct gsm_lchan *lchan, u_int8_t act_type,
Harald Welte8d77b952009-12-17 00:31:10 +010041 u_int8_t ta, u_int8_t ho_ref);
Harald Welteda783762009-02-18 03:29:53 +000042int rsl_chan_mode_modify_req(struct gsm_lchan *ts);
Harald Welte08d91a52009-08-30 15:37:11 +090043int rsl_encryption_cmd(struct msgb *msg);
Harald Welte52b1f982008-12-23 20:25:15 +000044int rsl_paging_cmd(struct gsm_bts *bts, u_int8_t paging_group, u_int8_t len,
45 u_int8_t *ms_ident, u_int8_t chan_needed);
Holger Freyther7448a532009-01-04 20:18:23 +000046int rsl_paging_cmd_subscr(struct gsm_bts *bts, u_int8_t chan_needed,
47 struct gsm_subscriber *subscr);
Harald Welte52b1f982008-12-23 20:25:15 +000048int rsl_imm_assign_cmd(struct gsm_bts *bts, u_int8_t len, u_int8_t *val);
Harald Welte52b1f982008-12-23 20:25:15 +000049
Harald Welte8470bf22008-12-25 23:28:35 +000050int rsl_data_request(struct msgb *msg, u_int8_t link_id);
Harald Welteedcc5272009-08-09 13:47:35 +020051int rsl_establish_request(struct gsm_lchan *lchan, u_int8_t link_id);
Harald Welted2dc1de2009-08-08 13:15:07 +020052int rsl_relase_request(struct gsm_lchan *lchan, u_int8_t link_id);
Harald Welte8470bf22008-12-25 23:28:35 +000053
Harald Welte67fa91b2009-08-10 09:51:40 +020054/* Siemens vendor-specific RSL extensions */
Harald Welte31c48932009-08-10 10:07:33 +020055int rsl_siemens_mrpci(struct gsm_lchan *lchan, struct rsl_mrpci *mrpci);
Harald Welte67fa91b2009-08-10 09:51:40 +020056
Harald Welte75099262009-02-16 21:12:08 +000057/* ip.access specfic RSL extensions */
Holger Hans Peter Freyther231163d2009-11-18 21:06:12 +010058int rsl_ipacc_crcx(struct gsm_lchan *lchan);
59int rsl_ipacc_mdcx(struct gsm_lchan *lchan, u_int32_t ip,
Harald Welte5e3d91b2009-12-19 16:42:06 +010060 u_int16_t port, u_int8_t rtp_payload2);
Harald Weltea72273e2009-12-20 16:51:09 +010061int rsl_ipacc_mdcx_to_rtpsock(struct gsm_lchan *lchan);
Harald Welte4563eab2010-03-28 14:42:09 +080062int rsl_ipacc_pdch_activate(struct gsm_lchan *lchan, int act);
Harald Welte75099262009-02-16 21:12:08 +000063
Harald Welte8470bf22008-12-25 23:28:35 +000064int abis_rsl_rcvmsg(struct msgb *msg);
65
Holger Freyther2976c402009-02-04 01:09:20 +000066unsigned int get_paging_group(u_int64_t imsi, unsigned int bs_cc_chans,
67 int n_pag_blocks);
68unsigned int n_pag_blocks(int bs_ccch_sdcch_comb, unsigned int bs_ag_blks_res);
Holger Freyther3aa8d6c2009-02-04 02:14:45 +000069u_int64_t str_to_imsi(const char *imsi_str);
Harald Welte24766092009-12-09 19:18:32 +010070u_int8_t lchan2chan_nr(const struct gsm_lchan *lchan);
Holger Hans Peter Freyther4f5848d2010-06-08 11:57:45 +080071int rsl_release_request(struct gsm_lchan *lchan, u_int8_t link_id, u_int8_t reason);
Holger Freyther2976c402009-02-04 01:09:20 +000072
Holger Hans Peter Freyther74419492010-04-10 00:12:31 +020073int rsl_lchan_set_state(struct gsm_lchan *lchan, int);
74
Harald Welte8470bf22008-12-25 23:28:35 +000075/* to be provided by external code */
76int abis_rsl_sendmsg(struct msgb *msg);
Harald Welteae0f2362009-07-19 18:36:49 +020077int rsl_deact_sacch(struct gsm_lchan *lchan);
Harald Welte52b1f982008-12-23 20:25:15 +000078
Holger Freytherb0155442009-02-03 23:24:04 +000079/* BCCH related code */
80int rsl_ccch_conf_to_bs_cc_chans(int ccch_conf);
81int rsl_ccch_conf_to_bs_ccch_sdcch_comb(int ccch_conf);
82int rsl_number_of_paging_subchannels(struct gsm_bts *bts);
83
Harald Weltefcd24452009-06-20 18:15:19 +020084int rsl_chan_bs_power_ctrl(struct gsm_lchan *lchan, unsigned int fpc, int db);
85int rsl_chan_ms_power_ctrl(struct gsm_lchan *lchan, unsigned int fpc, int dbm);
86
Holger Hans Peter Freyther8cb4a0f2010-07-21 15:54:32 +080087/* SMSCB functionality */
88int rsl_sms_cb_command(struct gsm_bts *bts, uint8_t chan_number,
89 uint8_t cb_command, const uint8_t *data, int len);
90
Harald Welte52b1f982008-12-23 20:25:15 +000091#endif /* RSL_MT_H */
92