FreeCalypso > hg > ice1-trau-tester
view abis/tx_func.c @ 32:94f11dc0d474
abis: Rx osmo_trau_sync hooked in
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 13 Aug 2024 22:07:49 +0000 |
parents | 5dd30224b70a |
children | 351bd801cdce |
line wrap: on
line source
/* * Here we are going to implement Tx on Abis toward the BTS. */ #include <stdint.h> #include <stdbool.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <osmocom/core/msgb.h> #include <osmocom/core/select.h> #include <osmocom/isdn/i460_mux.h> #include "globals.h" #include "submux.h" #include "dl_frames.h" static void tx_service_subslot(int nr) { struct abis_subslot *ab = &subslots[nr]; struct msgb *msg; uint8_t *outbuf; if (!ab->is_active) return; msg = msgb_alloc_c(g_ctx, DL_OUTPUT_LEN, "TRAU-DL-frame"); if (!msg) return; outbuf = msgb_put(msg, DL_OUTPUT_LEN); memcpy(outbuf, ab->is_efr ? dl_frame_efr : dl_frame_fr, DL_OUTPUT_LEN); osmo_i460_mux_enqueue(ab->schan, msg); } void transmit_e1_ts(void) { uint8_t buf[160]; int nr; for (nr = 0; nr < ABIS_SUBSLOTS; nr++) tx_service_subslot(nr); osmo_i460_mux_out(&i460_ts, buf, 160); write(ts_fd, buf, 160); }