From 20a671d76854520ad9d5ea9d481e008240465e62 Mon Sep 17 00:00:00 2001 From: Andreas Eversberg Date: Mon, 11 May 2009 11:07:58 +0200 Subject: Added GSM network support. This turns LCR into a GSM mobile switching center. More infos will follow. --- gsm_audio.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 gsm_audio.c (limited to 'gsm_audio.c') diff --git a/gsm_audio.c b/gsm_audio.c new file mode 100644 index 0000000..751f354 --- /dev/null +++ b/gsm_audio.c @@ -0,0 +1,54 @@ +/*****************************************************************************\ +** ** +** LCR ** +** ** +**---------------------------------------------------------------------------** +** Copyright: Andreas Eversberg ** +** ** +** gsm audio ** +** ** +\*****************************************************************************/ + +extern "C" { +#include "/usr/local/include/gsm.h" + + +/* create gsm instance */ +void *gsm_audio_create(void) +{ + int value = 1; + gsm handle; + + handle = gsm_create(); + if (handle) + gsm_option(handle, GSM_OPT_WAV49, &value); + + return handle; +} + +/* free gsm instance */ +void gsm_audio_destroy(void *arg) +{ + gsm_destroy((gsm)arg); +} + +/* decode frame into samples, return error */ +int gsm_audio_decode(void *arg, unsigned char *frame, signed short *samples) +{ + int value = 0; + + gsm_option((gsm)arg, GSM_OPT_FRAME_INDEX, &value); + return gsm_decode((gsm)arg, (gsm_byte *)frame, (gsm_signal *)samples); +} + +/* encode samples into frame */ +void gsm_audio_encode(void *arg, signed short *samples, unsigned char *frame) +{ + int value = 0; + + gsm_option((gsm)arg, GSM_OPT_FRAME_INDEX, &value); + gsm_encode((gsm)arg, (gsm_signal *)samples, (gsm_byte *)frame); +} + +} + -- cgit v1.2.3-55-g7522