blob: 22982f0f28677e31e5852a464a2a013f6d2ff417 [file] [log] [blame]
Holger Hans Peter Freytherec32b582010-03-23 07:40:46 +01001/* GSM 08.08 like API for OpenBSC */
2
Holger Hans Peter Freyther05a379b2010-06-14 15:50:35 +08003#ifndef OPENBSC_BSC_API_H
4#define OPENBSC_BSC_API_H
5
Holger Hans Peter Freytherec32b582010-03-23 07:40:46 +01006#include "gsm_data.h"
7
Holger Hans Peter Freyther97643312010-06-17 16:41:25 +08008#define BSC_API_CONN_POL_ACCEPT 0
9#define BSC_API_CONN_POL_REJECT 1
10
Holger Hans Peter Freyther05a379b2010-06-14 15:50:35 +080011struct bsc_api {
12 void (*sapi_n_reject)(struct gsm_subscriber_connection *conn, int dlci);
13 void (*cipher_mode_compl)(struct gsm_subscriber_connection *conn,
Holger Hans Peter Freytherc702b752010-07-23 17:10:44 +080014 struct msgb *msg, uint8_t chosen_encr);
Holger Hans Peter Freyther97643312010-06-17 16:41:25 +080015 int (*compl_l3)(struct gsm_subscriber_connection *conn,
16 struct msgb *msg, uint16_t chosen_channel);
Holger Hans Peter Freyther46caa302010-11-04 12:18:00 +010017 void (*dtap)(struct gsm_subscriber_connection *conn, uint8_t link_id,
18 struct msgb *msg);
Holger Hans Peter Freytherc354de82010-07-23 16:49:38 +080019 void (*assign_compl)(struct gsm_subscriber_connection *conn,
Holger Hans Peter Freytherb0941712010-11-04 12:06:57 +010020 uint8_t rr_cause, uint8_t chosen_channel,
21 uint8_t encr_alg_id, uint8_t speech_mode);
Holger Hans Peter Freytherc354de82010-07-23 16:49:38 +080022 void (*assign_fail)(struct gsm_subscriber_connection *conn,
Holger Hans Peter Freyther05a379b2010-06-14 15:50:35 +080023 uint16_t rr_cause);
Holger Hans Peter Freyther05c68842010-11-03 19:01:58 +010024 int (*clear_request)(struct gsm_subscriber_connection *conn,
Holger Hans Peter Freyther05a379b2010-06-14 15:50:35 +080025 uint32_t cause);
26 void (*clear_compl)(struct gsm_subscriber_connection *conn);
27};
Holger Hans Peter Freytherec32b582010-03-23 07:40:46 +010028
Holger Hans Peter Freytherabcddf12010-06-14 18:20:15 +080029int bsc_api_init(struct gsm_network *network, struct bsc_api *api);
Holger Hans Peter Freytherec32b582010-03-23 07:40:46 +010030int gsm0808_submit_dtap(struct gsm_subscriber_connection *conn, struct msgb *msg, int link_id);
Holger Hans Peter Freytherc354de82010-07-23 16:49:38 +080031int gsm0808_assign_req(struct gsm_subscriber_connection *conn, int chan_type, int audio);
Holger Hans Peter Freytherdbc62db2010-07-23 16:55:24 +080032int gsm0808_cipher_mode(struct gsm_subscriber_connection *conn, int cipher,
33 uint8_t *key, int len);
Holger Hans Peter Freyther77008462010-06-16 14:10:45 +080034int gsm0808_page(struct gsm_bts *bts, unsigned int page_group,
35 unsigned int mi_len, uint8_t *mi, int chan_type);
Holger Hans Peter Freyther40494552010-06-28 17:09:29 +080036int gsm0808_clear(struct gsm_subscriber_connection *conn);
Holger Hans Peter Freyther05a379b2010-06-14 15:50:35 +080037
38#endif