aboutsummaryrefslogtreecommitdiffstats
path: root/include/openbsc
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2009-05-23 15:51:12 +0000
committerHarald Welte <laforge@gnumonks.org>2009-05-23 15:51:12 +0000
commit45b407ad25e2dafd536af1b216ba071226edc964 (patch)
tree8eab62ccb4f9b6b4b46fa313c60b9b527c7d611f /include/openbsc
parentbe99149e72a22180a1b8acaa0a6182b02c5387c3 (diff)
With this patch, the TRAU muxing code supports not just bridging only.
A new function trau_recv_lchan() is used to link a channel to a call reference of a transaction. (Transactions are used in later patches.) TRAU frames will then be forwarded to the application with the given call reference (in later patches). Also the application can send TRAU frames by using trau_send_lchan(). A new list is introduced in trau_mux.c. (upqueue_entry) All subslots that must be sent to application are listed here. Received TRAU frames are written in the upqueue of application interface, if a call reference is found in the upqueue-list. If an entry is found the ss_entry list, the TRAU frames are bridged as before. The frames have a message type (msg_type), a call reference (callref) and a trau frame (data). The length of trau frame is defined by the content of the c-bits inside the frame. There is no support for ip.access yet, as they don't use the traditional TRAU frame format. Harald must add this in order to use application interface with ip-access. The bridging with ip-access works as before. (Andreas Eversberg)
Diffstat (limited to 'include/openbsc')
-rw-r--r--include/openbsc/gsm_data.h4
-rw-r--r--include/openbsc/trau_mux.h8
2 files changed, 10 insertions, 2 deletions
diff --git a/include/openbsc/gsm_data.h b/include/openbsc/gsm_data.h
index 0e3a380d..071b1c6e 100644
--- a/include/openbsc/gsm_data.h
+++ b/include/openbsc/gsm_data.h
@@ -138,8 +138,10 @@ struct gsm_lchan {
struct gsm_bts_trx_ts *ts;
/* The logical subslot number in the TS */
u_int8_t nr;
- /* The lotical channel type */
+ /* The logical channel type */
enum gsm_chan_t type;
+ /* If TCH, traffic channel mode */
+ enum gsm_chan_t tch_mode;
/* Power levels for MS and BTS */
u_int8_t bs_power;
u_int8_t ms_power;
diff --git a/include/openbsc/trau_mux.h b/include/openbsc/trau_mux.h
index f3d519fb..90535add 100644
--- a/include/openbsc/trau_mux.h
+++ b/include/openbsc/trau_mux.h
@@ -36,8 +36,14 @@ int trau_mux_map_lchan(const struct gsm_lchan *src,
const struct gsm_lchan *dst);
/* unmap a TRAU mux map entry */
-int trau_mux_unmap(const struct gsm_e1_subslot *ss);
+int trau_mux_unmap(const struct gsm_e1_subslot *ss, u_int32_t callref);
/* we get called by subchan_demux */
int trau_mux_input(struct gsm_e1_subslot *src_e1_ss,
const u_int8_t *trau_bits, int num_bits);
+
+/* add a trau receiver */
+int trau_recv_lchan(struct gsm_lchan *lchan, u_int32_t callref);
+
+/* send trau from application */
+int trau_send_lchan(struct gsm_lchan *lchan, struct decoded_trau_frame *tf);