blob: 4936f5367997a6143fe938d68c5277f0767fa903 [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 {
Harald Welteca86dd52011-09-13 00:09:20 +010012 /*! \brief BTS->MSC: tell MSC a SAPI was not established */
Holger Hans Peter Freyther05a379b2010-06-14 15:50:35 +080013 void (*sapi_n_reject)(struct gsm_subscriber_connection *conn, int dlci);
Harald Welteca86dd52011-09-13 00:09:20 +010014 /*! \brief MS->MSC: Tell MSC that ciphering has been enabled */
Holger Hans Peter Freyther05a379b2010-06-14 15:50:35 +080015 void (*cipher_mode_compl)(struct gsm_subscriber_connection *conn,
Holger Hans Peter Freytherc702b752010-07-23 17:10:44 +080016 struct msgb *msg, uint8_t chosen_encr);
Harald Welteca86dd52011-09-13 00:09:20 +010017 /*! \brief MS->MSC: New MM context with L3 payload */
Holger Hans Peter Freyther97643312010-06-17 16:41:25 +080018 int (*compl_l3)(struct gsm_subscriber_connection *conn,
19 struct msgb *msg, uint16_t chosen_channel);
Harald Welteca86dd52011-09-13 00:09:20 +010020 /*! \brief MS->BSC/MSC: Um L3 message */
Holger Hans Peter Freyther46caa302010-11-04 12:18:00 +010021 void (*dtap)(struct gsm_subscriber_connection *conn, uint8_t link_id,
22 struct msgb *msg);
Harald Welteca86dd52011-09-13 00:09:20 +010023 /*! \brief BSC->MSC: Assignment of lchan successful */
Holger Hans Peter Freytherc354de82010-07-23 16:49:38 +080024 void (*assign_compl)(struct gsm_subscriber_connection *conn,
Holger Hans Peter Freytherb0941712010-11-04 12:06:57 +010025 uint8_t rr_cause, uint8_t chosen_channel,
26 uint8_t encr_alg_id, uint8_t speech_mode);
Harald Welteca86dd52011-09-13 00:09:20 +010027 /*! \brief BSC->MSC: Assignment of lchan failed */
Holger Hans Peter Freytherc354de82010-07-23 16:49:38 +080028 void (*assign_fail)(struct gsm_subscriber_connection *conn,
Holger Hans Peter Freyther45b575f2010-11-05 10:37:17 +010029 uint8_t cause, uint8_t *rr_cause);
Harald Welteca86dd52011-09-13 00:09:20 +010030 /*! \brief BSC->MSC: RR conn has been cleared */
Holger Hans Peter Freyther05c68842010-11-03 19:01:58 +010031 int (*clear_request)(struct gsm_subscriber_connection *conn,
Holger Hans Peter Freyther05a379b2010-06-14 15:50:35 +080032 uint32_t cause);
Harald Welte95e862c2012-01-23 10:28:35 +010033 /*! \brief BSC->MSC: Classmark Update */
34 void (*classmark_chg)(struct gsm_subscriber_connection *conn,
35 const uint8_t *cm2, uint8_t cm2_len,
36 const uint8_t *cm3, uint8_t cm3_len);
Holger Hans Peter Freyther25aa7492011-08-06 07:00:52 +020037
38 /**
39 * Configure the multirate setting on this channel. If it is
40 * not implemented AMR5.9 will be used.
41 */
42 void (*mr_config)(struct gsm_subscriber_connection *conn,
Holger Hans Peter Freyther7a77d012015-09-24 16:26:01 +020043 struct gsm_lchan *lchan, int full_rate);
Harald Welte2483f1b2016-06-19 18:06:02 +020044
45 /** Callback for additional actions during conn cleanup */
46 void (*conn_cleanup)(struct gsm_subscriber_connection *conn);
Holger Hans Peter Freyther05a379b2010-06-14 15:50:35 +080047};
Holger Hans Peter Freytherec32b582010-03-23 07:40:46 +010048
Holger Hans Peter Freyther05a379b2010-06-14 15:50:35 +080049#endif