comparison abis/tx_func.c @ 30:5dd30224b70a

abis: starting new program
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 13 Aug 2024 21:38:55 +0000
parents ater/tx_func.c@2742dbea95f1
children 351bd801cdce
comparison
equal deleted inserted replaced
29:1dda11905e85 30:5dd30224b70a
1 /*
2 * Here we are going to implement Tx on Abis toward the BTS.
3 */
4
5 #include <stdint.h>
6 #include <stdbool.h>
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <string.h>
10 #include <unistd.h>
11
12 #include <osmocom/core/msgb.h>
13 #include <osmocom/core/select.h>
14 #include <osmocom/isdn/i460_mux.h>
15
16 #include "globals.h"
17 #include "submux.h"
18 #include "dl_frames.h"
19
20 static void tx_service_subslot(int nr)
21 {
22 struct abis_subslot *ab = &subslots[nr];
23 struct msgb *msg;
24 uint8_t *outbuf;
25
26 if (!ab->is_active)
27 return;
28 msg = msgb_alloc_c(g_ctx, DL_OUTPUT_LEN, "TRAU-DL-frame");
29 if (!msg)
30 return;
31 outbuf = msgb_put(msg, DL_OUTPUT_LEN);
32 memcpy(outbuf, ab->is_efr ? dl_frame_efr : dl_frame_fr, DL_OUTPUT_LEN);
33 osmo_i460_mux_enqueue(ab->schan, msg);
34 }
35
36 void transmit_e1_ts(void)
37 {
38 uint8_t buf[160];
39 int nr;
40
41 for (nr = 0; nr < ABIS_SUBSLOTS; nr++)
42 tx_service_subslot(nr);
43 osmo_i460_mux_out(&i460_ts, buf, 160);
44 write(ts_fd, buf, 160);
45 }