FreeCalypso > hg > ice1-trau-tester
view abis/tx_func.c @ 33:351bd801cdce
abis: should be complete now
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 13 Aug 2024 22:53:42 +0000 |
parents | 5dd30224b70a |
children |
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 <osmocom/trau/trau_frame.h> #include "globals.h" #include "submux.h" #include "dl_frames.h" static void tx_service_subslot(int nr) { struct abis_subslot *ab = &subslots[nr]; const uint8_t *srcbuf; struct msgb *msg; uint8_t *outbuf; if (!ab->got_sync) return; switch (ab->frame_type) { case TRAU_FT_FR_UP: srcbuf = dl_frame_fr; break; case TRAU_FT_EFR: srcbuf = dl_frame_efr; break; default: 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, srcbuf, 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); }