blob: be369fececea6e52fddbfe35f7175021e21739b8 [file] [log] [blame]
Harald Welte9a311ec2011-02-12 12:33:06 +01001#ifndef OPENBSC_ABIS_OM2K_H
2#define OPENBSC_ABIS_OM2K_H
3/* Ericsson RBS 2xxx GSM O&M (OM2000) messages on the A-bis interface
4 * implemented based on protocol trace analysis, no formal documentation */
5
6/* (C) 2010-2011 by Harald Welte <laforge@gnumonks.org>
7 *
8 * All Rights Reserved
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU Affero General Public License as published by
12 * the Free Software Foundation; either version 3 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Affero General Public License for more details.
19 *
20 * You should have received a copy of the GNU Affero General Public License
21 * along with this program. If not, see <http://www.gnu.org/licenses/>.
22 *
23 */
24
Harald Weltea0ce3492011-03-05 14:13:14 +010025enum abis_om2k_mo_cls {
26 OM2K_MO_CLS_TRXC = 0x01,
27 OM2K_MO_CLS_TS = 0x03,
28 OM2K_MO_CLS_TF = 0x04,
29 OM2K_MO_CLS_IS = 0x05,
30 OM2K_MO_CLS_CON = 0x06,
31 OM2K_MO_CLS_DP = 0x07,
32 OM2K_MO_CLS_CF = 0x0a,
33 OM2K_MO_CLS_TX = 0x0b,
34 OM2K_MO_CLS_RX = 0x0c,
35};
36
Harald Welte73541072011-02-12 13:44:14 +010037struct abis_om2k_mo {
38 uint8_t class;
39 uint8_t bts;
40 uint8_t assoc_so;
41 uint8_t inst;
42} __attribute__ ((packed));
Harald Welte9a311ec2011-02-12 12:33:06 +010043
Harald Welted529db62011-03-06 21:49:21 +010044/* on-wire format for IS conn group */
Harald Welte8bcb1a02011-02-12 20:23:40 +010045struct om2k_is_conn_grp {
46 uint16_t icp1;
47 uint16_t icp2;
48 uint8_t cont_idx;
49} __attribute__ ((packed));
50
Harald Welted529db62011-03-06 21:49:21 +010051/* internal data formant for IS conn group */
52struct is_conn_group {
53 struct llist_head list;
54 uint16_t icp1;
55 uint16_t icp2;
56 uint8_t ci;
57};
58
Harald Weltee1d5eca2011-02-12 14:42:59 +010059extern const struct value_string om2k_mo_class_short_vals[];
60
Harald Welte9a311ec2011-02-12 12:33:06 +010061int abis_om2k_rcvmsg(struct msgb *msg);
62
Harald Welte73541072011-02-12 13:44:14 +010063extern const struct abis_om2k_mo om2k_mo_cf;
64
Harald Welte6fec79d2011-02-12 14:57:17 +010065int abis_om2k_tx_reset_cmd(struct gsm_bts *bts, const struct abis_om2k_mo *mo);
66int abis_om2k_tx_start_req(struct gsm_bts *bts, const struct abis_om2k_mo *mo);
67int abis_om2k_tx_status_req(struct gsm_bts *bts, const struct abis_om2k_mo *mo);
68int abis_om2k_tx_connect_cmd(struct gsm_bts *bts, const struct abis_om2k_mo *mo);
69int abis_om2k_tx_disconnect_cmd(struct gsm_bts *bts, const struct abis_om2k_mo *mo);
Harald Welte0741ffe2011-02-12 18:48:53 +010070int abis_om2k_tx_enable_req(struct gsm_bts *bts, const struct abis_om2k_mo *mo);
71int abis_om2k_tx_disable_req(struct gsm_bts *bts, const struct abis_om2k_mo *mo);
Harald Welte8024d8f2011-02-12 15:07:30 +010072int abis_om2k_tx_test_req(struct gsm_bts *bts, const struct abis_om2k_mo *mo);
Harald Welte6fec79d2011-02-12 14:57:17 +010073int abis_om2k_tx_op_info(struct gsm_bts *bts, const struct abis_om2k_mo *mo,
74 uint8_t operational);
Harald Welted529db62011-03-06 21:49:21 +010075int abis_om2k_tx_is_conf_req(struct gsm_bts *bts);
Harald Weltef9cf9612011-03-05 14:36:47 +010076int abis_om2k_tx_tf_conf_req(struct gsm_bts *bts);
Harald Weltea0ce3492011-03-05 14:13:14 +010077int abis_om2k_tx_rx_conf_req(struct gsm_bts_trx *trx);
78int abis_om2k_tx_tx_conf_req(struct gsm_bts_trx *trx);
79int abis_om2k_tx_ts_conf_req(struct gsm_bts_trx_ts *ts);
Harald Weltee1d5eca2011-02-12 14:42:59 +010080
81int abis_om2k_vty_init(void);
Harald Welte73541072011-02-12 13:44:14 +010082
Harald Welte59eee422011-02-14 16:17:49 +010083struct vty;
84void abis_om2k_config_write_bts(struct vty *vty, struct gsm_bts *bts);
85
Harald Welte9a311ec2011-02-12 12:33:06 +010086#endif /* OPENBCS_ABIS_OM2K_H */