view test-fsk/modem_rx.c @ 6:ba66d297fe57

test-fsk: first attempt at modem Rx
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 04 Mar 2024 23:21:07 -0800
parents
children 6d832abad660
line wrap: on
line source

/*
 * In this module we implement modem Rx handling, revolving around
 * FSK demodulation via SpanDSP.
 */

#include <sys/types.h>
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <spandsp.h>
#include "../include/pstn_defs.h"

extern int fsk_mode_rx;

static fsk_rx_state_t *fsk_rx_state;

static void
byte_rx_func(user_data, byte)
	void *user_data;
	int byte;
{
	if (byte < 0) {
		printf("Modem state change: %s\n", signal_status_to_str(byte));
		return;
	}
	printf("Rx byte: 0x%02X\n", byte);
}

void
init_modem_rx()
{
	fsk_rx_state = fsk_rx_init(NULL, &preset_fsk_specs[fsk_mode_rx],
				   FSK_FRAME_MODE_FRAMED, byte_rx_func, NULL);
	if (!fsk_rx_state) {
		fprintf(stderr, "error: fsk_rx_init() failed!\n");
		exit(1);
	}
}

void
process_rx_frame(samples)
	int16_t *samples;
{
	fsk_rx(fsk_rx_state, samples, FRAME_20MS);
}