FreeCalypso > hg > ice1-trau-tester
view pcm-br/xconn.c @ 40:e1eabf554a75
libhr: small subset of WIP libgsmhr1
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 30 Aug 2024 16:41:56 +0000 |
parents | 499d065ee591 |
children |
line wrap: on
line source
/* * The two functions in this module get called from Osmocom select loop * whenever each timeslot data socket to osmo-e1d is ready for reading; * the cross-connect of the two timeslots is implemented here. */ #include <stdint.h> #include <stdbool.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <osmocom/core/select.h> #include "globals.h" uint8_t readbuf_a[160], readbuf_b[160]; FILE *rec_file_a, *rec_file_b; int tsa_fd_cb(struct osmo_fd *ofd, unsigned int what) { int rc; rc = read(tsa_fd, readbuf_a, 160); if (rc != 160) { fprintf(stderr, "error: read from ts A returned %d instead of 160\n", rc); exit(1); } if (rec_file_a) fwrite(readbuf_a, 1, 160, rec_file_a); write(tsb_fd, readbuf_a, 160); return 0; } int tsb_fd_cb(struct osmo_fd *ofd, unsigned int what) { int rc; rc = read(tsb_fd, readbuf_b, 160); if (rc != 160) { fprintf(stderr, "error: read from ts B returned %d instead of 160\n", rc); exit(1); } if (rec_file_b) fwrite(readbuf_b, 1, 160, rec_file_b); write(tsa_fd, readbuf_b, 160); return 0; }