view ater/read_ts.c @ 18:61862af2247f

ater: E1 timeslot output (osmo_i460 mux)
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 24 Jun 2024 07:26:20 +0000
parents 4ffe22f5b4b5
children
line wrap: on
line source

/*
 * The function in this module gets called from Osmocom select loop
 * whenever the data socket to osmo-e1d is ready for reading.
 */

#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#include <osmocom/core/select.h>
#include <osmocom/isdn/i460_mux.h>

#include "globals.h"

uint8_t readbuf[160];
FILE *record_file;

int ts_fd_cb(struct osmo_fd *ofd, unsigned int what)
{
	int rc;

	rc = read(ts_fd, readbuf, 160);
	if (rc != 160) {
		fprintf(stderr,
			"error: read from ts returned %d instead of 160\n",
			rc);
		exit(1);
	}
	if (record_file)
		fwrite(readbuf, 1, 160, record_file);
	osmo_i460_demux_in(&i460_ts, readbuf, 160);
	transmit_e1_ts();
	return 0;
}