aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/doc/e1-data-model.txt
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/doc/e1-data-model.txt')
-rw-r--r--openbsc/doc/e1-data-model.txt172
1 files changed, 0 insertions, 172 deletions
diff --git a/openbsc/doc/e1-data-model.txt b/openbsc/doc/e1-data-model.txt
deleted file mode 100644
index 509004fe9..000000000
--- a/openbsc/doc/e1-data-model.txt
+++ /dev/null
@@ -1,172 +0,0 @@
-E1 related data model
-
-This data model describes the physical relationship of the individual
-parts in the network, it is not the logical/protocol side of the GSM
-network.
-
-A BTS is connected to the BSC by some physical link. It could be an actual
-E1 link, but it could also be abis-over-IP with a mixture of TCP and RTP/UDP.
-
-To further complicate the fact, multiple BTS can share one such pysical
-link. On a single E1 line, we can easily accomodate up to three BTS with
-two TRX each.
-
-Thus, it is best for OpenBSC to have some kind of abstraction layer. The BSC's
-view of a BTS connected to it. We call this 'bts_link'. A bts_link can be
-* all the TCP and UDP streams of a Abis-over-IP BTS
-* a set of E1 timeslots for OML, RSL and TRAU connections on a E1 link
-* a serial line exclusively used for OML messages (T-Link)
-
-A bts_link can be registered with the OpenBSC core at runtime.
-
-struct trx_link {
- struct gsm_bts_trx *trx;
-};
-
-struct bts_link {
- struct gsm_bts *bts;
- struct trx_link trx_links[NUM_TRX];
-};
-
-Interface from stack to input core:
-======================================================================
-int abis_rsl_sendmsg(struct msgb *msg);
- send a message through a RSL link to the TRX specified by the caller in
- msg->trx.
-
-int abis_rsl_rcvmsg(struct msgb *msg);
- receive a message from a RSL link from the TRX specified by the
- caller in msg->trx.
-
-int abis_nm_sendmsg(struct msgb *msg);
- send a message through a OML link to the BTS specified by the caller in
- msg->trx->bts. The caller can just use bts->c0 to get the first TRX
- in a BTS. (OML messages are not really sent to a TRX but to the BTS)
-
-int abis_nm_rcvmsg(struct msgb *msg);
- receive a message from a OML link from the BTS specified by the caller
- in msg->trx->bts. The caller can just use bts->c0 to get the first
- TRX in a BTS.
-
-int abis_link_event(int event, void *data);
- signal some event (such as layer 1 connect/disconnect) from the
- input core to the stack.
-
-int subch_demux_in(mx, const uint8_t *data, int len);
- receive 'len' bytes from a given E1 timeslot (TRAU frames)
-
-int subchan_mux_out(mx, uint8_t *data, int len);
- obtain 'len' bytes of output data to be sent on E1 timeslot
-
-Intrface by Input Core for Input Plugins
-======================================================================
-
-int btslink_register_plugin();
-
-
-Configuration for the E1 input module
-======================================================================
-
-BTS
- BTS number
- number of TRX
- OML link
- E1 line number
- timeslot number
- [subslot number]
- SAPI
- TEI
- for each TRX
- RSL link
- E1 line number
- timeslot number
- [subslot number]
- SAPI
- TEI
- for each TS
- E1 line number
- timeslot number
- subslot number
-
-
-E1 input module data model
-======================================================================
-
-
-enum e1inp_sign_type {
- E1INP_SIGN_NONE,
- E1INP_SIGN_OML,
- E1INP_SIGN_RSL,
-};
-
-struct e1inp_sign_link {
- /* list of signalling links */
- struct llist_head list;
-
- enum e1inp_sign_type type;
-
- /* trx for msg->trx of received msgs */
- struct gsm_bts_trx *trx;
-
- /* msgb queue of to-be-transmitted msgs */
- struct llist_head tx_list;
-
- /* SAPI and TEI on the E1 TS */
- uint8_t sapi;
- uint8_t tei;
-}
-
-enum e1inp_ts_type {
- E1INP_TS_TYPE_NONE,
- E1INP_TS_TYPE_SIGN,
- E1INP_TS_TYPE_TRAU,
-};
-
-/* A timeslot in the E1 interface */
-struct e1inp_ts {
- enum e1inp_ts_type type;
- struct e1inp_line *line;
- union {
- struct {
- struct llist_head sign_links;
- } sign;
- struct {
- /* subchannel demuxer for frames from E1 */
- struct subch_demux demux;
- /* subchannel muxer for frames to E1 */
- struct subch_mux mux;
- } trau;
- };
- union {
- struct {
- /* mISDN driver has one fd for each ts */
- struct osmo_fd;
- } misdn;
- } driver;
-};
-
-struct e1inp_line {
- unsigned int num;
- char *name;
-
- struct e1inp_ts ts[NR_E1_TS];
-
- char *e1inp_driver;
- void *driver_data;
-};
-
-/* Call from the Stack: configuration of this TS has changed */
-int e1inp_update_ts(struct e1inp_ts *ts);
-
-/* Receive a packet from the E1 driver */
-int e1inp_rx_ts(struct e1inp_ts *ts, struct msgb *msg,
- uint8_t tei, uint8_t sapi);
-
-/* Send a packet, callback function in the driver */
-int e1driver_tx_ts(struct e1inp_ts *ts, struct msgb *msg)
-
-
-struct e1inp_driver {
- const char *name;
- int (*want_write)(struct e1inp_ts *ts);
-};