From 51b6315e984b9c632bb6af09bbe9e9e4623709da Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli <gmaruzz@gmail.com> Date: Mon, 2 Apr 2012 11:26:51 +0200 Subject: [PATCH] gsmopen: continue cleaning --- .../mod_gsmopen/gsmopen_protocol.cpp | 417 +----------------- 1 file changed, 3 insertions(+), 414 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index ab9bf44d16..ef80b013d6 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -1,46 +1,13 @@ #include "gsmopen.h" -//#include <iostream.h> -#ifndef NO_GSMLIB -#include <gsmlib/gsm_sms.h> -#ifdef WIN32 -#include <gsmlib/gsm_win32_serial.h> -#else -#include <gsmlib/gsm_unix_serial.h> -#endif -#include <gsmlib/gsm_me_ta.h> -#include <iostream> +extern int running; //FIXME +int gsmopen_dir_entry_extension = 1; //FIXME +int option_debug = 100; //FIXME - -using namespace std; -using namespace gsmlib; -#endif// NO_GSMLIB - -#ifdef ASTERISK -#define gsmopen_sleep usleep -#define gsmopen_strncpy strncpy -#define tech_pvt p -extern int gsmopen_debug; -extern char *gsmopen_console_active; -#else /* FREESWITCH */ #define gsmopen_sleep switch_sleep #define gsmopen_strncpy switch_copy_string extern switch_memory_pool_t *gsmopen_module_pool; extern switch_endpoint_interface_t *gsmopen_endpoint_interface; -#endif /* ASTERISK */ -//int samplerate_gsmopen = SAMPLERATE_GSMOPEN; - -extern int running; -int gsmopen_dir_entry_extension = 1; - -int option_debug = 100; - - -#ifdef WIN32 -#define GSMLIBGIO -#else //WIN32 -#undef GSMLIBGIO -#endif //WIN32 #ifdef WIN32 /***************/ @@ -88,327 +55,6 @@ int gettimeofday(struct timeval *tv, struct sk_timezone *tz) /***************/ #endif /* WIN32 */ -#ifdef GSMOPEN_PORTAUDIO -#include "pablio.h" - -#ifndef GIOVA48 -#define SAMPLES_PER_FRAME 160 -#else // GIOVA48 -#define SAMPLES_PER_FRAME 960 -#endif // GIOVA48 - -int gsmopen_portaudio_devlist(private_t *tech_pvt) -{ - int i, numDevices; - const PaDeviceInfo *deviceInfo; - - numDevices = Pa_GetDeviceCount(); - if (numDevices < 0) { - return 0; - } - for (i = 0; i < numDevices; i++) { - deviceInfo = Pa_GetDeviceInfo(i); - NOTICA - ("Found PORTAUDIO device: id=%d\tname=%s\tmax input channels=%d\tmax output channels=%d\n", - GSMOPEN_P_LOG, i, deviceInfo->name, deviceInfo->maxInputChannels, - deviceInfo->maxOutputChannels); - } - - return numDevices; -} - -int gsmopen_portaudio_init(private_t *tech_pvt) -{ - PaError err; - int c; - PaStreamParameters inputParameters, outputParameters; - int numdevices; - const PaDeviceInfo *deviceInfo; - -#ifndef GIOVA48 - setenv("PA_ALSA_PLUGHW", "1", 1); -#endif // GIOVA48 - - err = Pa_Initialize(); - if (err != paNoError) - return err; - - numdevices = gsmopen_portaudio_devlist(tech_pvt); - - if (tech_pvt->portaudiocindex > (numdevices - 1)) { - ERRORA("Portaudio Capture id=%d is out of range: valid id are from 0 to %d\n", - GSMOPEN_P_LOG, tech_pvt->portaudiocindex, (numdevices - 1)); - return -1; - } - - if (tech_pvt->portaudiopindex > (numdevices - 1)) { - ERRORA("Portaudio Playback id=%d is out of range: valid id are from 0 to %d\n", - GSMOPEN_P_LOG, tech_pvt->portaudiopindex, (numdevices - 1)); - return -1; - } - //inputParameters.device = 0; - if (tech_pvt->portaudiocindex != -1) { - inputParameters.device = tech_pvt->portaudiocindex; - } else { - inputParameters.device = Pa_GetDefaultInputDevice(); - } - deviceInfo = Pa_GetDeviceInfo(inputParameters.device); - NOTICA - ("Using INPUT PORTAUDIO device: id=%d\tname=%s\tmax input channels=%d\tmax output channels=%d\n", - GSMOPEN_P_LOG, inputParameters.device, deviceInfo->name, - deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels); - if (deviceInfo->maxInputChannels == 0) { - ERRORA - ("No INPUT channels on device: id=%d\tname=%s\tmax input channels=%d\tmax output channels=%d\n", - GSMOPEN_P_LOG, inputParameters.device, deviceInfo->name, - deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels); - return -1; - } - inputParameters.channelCount = 1; - inputParameters.sampleFormat = paInt16; - //inputParameters.suggestedLatency = Pa_GetDeviceInfo(inputParameters.device)->defaultHighInputLatency; - inputParameters.suggestedLatency = 0.1; - inputParameters.hostApiSpecificStreamInfo = NULL; - - //outputParameters.device = 3; - if (tech_pvt->portaudiopindex != -1) { - outputParameters.device = tech_pvt->portaudiopindex; - } else { - outputParameters.device = Pa_GetDefaultOutputDevice(); - } - deviceInfo = Pa_GetDeviceInfo(outputParameters.device); - NOTICA - ("Using OUTPUT PORTAUDIO device: id=%d\tname=%s\tmax input channels=%d\tmax output channels=%d\n", - GSMOPEN_P_LOG, outputParameters.device, deviceInfo->name, - deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels); - if (deviceInfo->maxOutputChannels == 0) { - ERRORA - ("No OUTPUT channels on device: id=%d\tname=%s\tmax input channels=%d\tmax output channels=%d\n", - GSMOPEN_P_LOG, inputParameters.device, deviceInfo->name, - deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels); - return -1; - } -#ifndef GIOVA48 - outputParameters.channelCount = 1; -#else // GIOVA48 - outputParameters.channelCount = 2; -#endif // GIOVA48 - outputParameters.sampleFormat = paInt16; - //outputParameters.suggestedLatency = Pa_GetDeviceInfo(outputParameters.device)->defaultHighOutputLatency; - outputParameters.suggestedLatency = 0.1; - outputParameters.hostApiSpecificStreamInfo = NULL; - -/* build the pipe that will be polled on by pbx */ - c = pipe(tech_pvt->audiopipe); - if (c) { - ERRORA("Unable to create audio pipe\n", GSMOPEN_P_LOG); - return -1; - } - fcntl(tech_pvt->audiopipe[0], F_SETFL, O_NONBLOCK); - fcntl(tech_pvt->audiopipe[1], F_SETFL, O_NONBLOCK); - - err = -#ifndef GIOVA48 - OpenAudioStream(&tech_pvt->stream, &inputParameters, &outputParameters, 8000, - paClipOff|paDitherOff, SAMPLES_PER_FRAME, 0); - //&tech_pvt->speexecho, &tech_pvt->speexpreprocess, &tech_pvt->owner); - -#else // GIOVA48 - OpenAudioStream(&tech_pvt->stream, &inputParameters, &outputParameters, 48000, - paDitherOff | paClipOff, SAMPLES_PER_FRAME, tech_pvt->audiopipe[1], - &tech_pvt->speexecho, &tech_pvt->speexpreprocess, &tech_pvt->owner); - - -#endif// GIOVA48 - if (err != paNoError) { - ERRORA("Unable to open audio stream: %s\n", GSMOPEN_P_LOG, Pa_GetErrorText(err)); - return -1; - } - -/* the pipe is our audio fd for pbx to poll on */ - tech_pvt->gsmopen_sound_capt_fd = tech_pvt->audiopipe[0]; - - return 0; -} -//int gsmopen_portaudio_write(private_t *tech_pvt, struct ast_frame *f) -int gsmopen_portaudio_write(private_t * tech_pvt, short *data, int datalen) -{ - int samples; -#ifdef GIOVA48 - //short buf[GSMOPEN_FRAME_SIZE * 2]; - short buf[3840]; - short *buf2; - - //ERRORA("1 f->datalen=: %d\n", GSMOPEN_P_LOG, f->datalen); - - - - - memset(buf, '\0', GSMOPEN_FRAME_SIZE *2); - - buf2 = f->data; - - int i=0, a=0; - - for(i=0; i< f->datalen / sizeof(short); i++){ -//stereo, 2 chan 48 -> mono 8 - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - /* - */ - } - f->data = &buf; - f->datalen = f->datalen * 6; - //ERRORA("2 f->datalen=: %d\n", GSMOPEN_P_LOG, f->datalen); - //f->datalen = f->datalen; -#endif // GIOVA48 - - - samples = - WriteAudioStream(tech_pvt->stream, (short *) data, (int) (datalen / sizeof(short)), &tech_pvt->timer_write); - - if (samples != (int) (datalen / sizeof(short))) - ERRORA("WriteAudioStream wrote: %d of %d\n", GSMOPEN_P_LOG, samples, - (int) (datalen / sizeof(short))); - - return samples; -} -//struct ast_frame *gsmopen_portaudio_read(private_t *tech_pvt) -#define AST_FRIENDLY_OFFSET 0 -int gsmopen_portaudio_read(private_t * tech_pvt, short *data, int datalen) -{ -#if 0 - //static struct ast_frame f; - static short __buf[GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2]; - short *buf; - static short __buf2[GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2]; - short *buf2; - int samples; - //char c; - - memset(__buf, '\0', (GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2)); - - buf = __buf + AST_FRIENDLY_OFFSET / 2; - - memset(__buf2, '\0', (GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2)); - - buf2 = __buf2 + AST_FRIENDLY_OFFSET / 2; - -#if 0 - f.frametype = AST_FRAME_NULL; - f.subclass = 0; - f.samples = 0; - f.datalen = 0; - -#ifdef ASTERISK_VERSION_1_6_1 - f.data.ptr = NULL; -#else - f.data = NULL; -#endif /* ASTERISK_VERSION_1_6_1 */ - f.offset = 0; - f.src = gsmopen_type; - f.mallocd = 0; - f.delivery.tv_sec = 0; - f.delivery.tv_usec = 0; -#endif //0 - - //if ((samples = ReadAudioStream(tech_pvt->stream, buf, SAMPLES_PER_FRAME)) == 0) - //if ((samples = ReadAudioStream(tech_pvt->stream, data, datalen/sizeof(short))) == 0) - if (samples = ReadAudioStream(tech_pvt->stream, (short *)data, datalen, &tech_pvt->timer_read) == 0) { - //do nothing - } else { -#ifdef GIOVA48 - int i=0, a=0; - - samples = samples / 6; - for(i=0; i< samples; i++){ - buf2[i] = buf[a]; - a = a + 6; //mono, 1 chan 48 -> 8 - } - buf = buf2; - -#if 0 - /* A real frame */ - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_SLINEAR; - f.samples = GSMOPEN_FRAME_SIZE/6; - f.datalen = GSMOPEN_FRAME_SIZE * 2/6; -#endif //0 -#else// GIOVA48 -#if 0 - /* A real frame */ - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_SLINEAR; - f.samples = GSMOPEN_FRAME_SIZE; - f.datalen = GSMOPEN_FRAME_SIZE * 2; -#endif //0 -#endif// GIOVA48 - -#if 0 -#ifdef ASTERISK_VERSION_1_6_1 - f.data.ptr = buf; -#else - f.data = buf; -#endif /* ASTERISK_VERSION_1_6_1 */ - f.offset = AST_FRIENDLY_OFFSET; - f.src = gsmopen_type; - f.mallocd = 0; -#endif //0 - } - -#if 0 - read(tech_pvt->audiopipe[0], &c, 1); - - return &f; -#endif //0 -#endif //0 - - int samples; - samples = ReadAudioStream(tech_pvt->stream, (short *)data, datalen, &tech_pvt->timer_read); - //WARNINGA("samples=%d\n", GSMOPEN_P_LOG, samples); - - return samples; -} -int gsmopen_portaudio_shutdown(private_t *tech_pvt) -{ - PaError err; - - err = CloseAudioStream(tech_pvt->stream); - - if (err != paNoError) - ERRORA("not able to CloseAudioStream\n", GSMOPEN_P_LOG); - - Pa_Terminate(); - return 0; -} - - - - -#endif // GSMOPEN_PORTAUDIO -#ifndef GSMLIBGIO int gsmopen_serial_init(private_t * tech_pvt, speed_t controldevice_speed) { int fd; @@ -490,63 +136,6 @@ int gsmopen_serial_init(private_t * tech_pvt, speed_t controldevice_speed) } return (fd); } -#else //GSMLIBGIO -#ifdef WIN32 -int gsmopen_serial_init(private_t * tech_pvt, int controldevice_speed) -#else -int gsmopen_serial_init(private_t * tech_pvt, speed_t controldevice_speed) -#endif //WIN32 -{ - int i; - string ciapa; - SMSMessageRef sms; - char content2[1000]; - int size; - -#ifdef WIN32 - Ref <Port> port = new Win32SerialPort((string) tech_pvt->controldevice_name, 38400); -#else - //Ref<Port> port = new UnixSerialPort((string)argv[1], B38400); - Ref < Port > port = new UnixSerialPort((string) tech_pvt->controldevice_name, B115200); -#endif - MeTa m(port); - - //cout << "Creating GsmAt object" << endl; - Ref <GsmAt> gsmat = new GsmAt(m); - - //cout << "Using GsmAt object" << endl; - //cout << gsmat->chat("AT", "OK", false, false) << endl; - //cout << gsmat->chat("D3472665618;") << endl; - gsmat->putLine("AT+cgmm", true); - for (i = 0; i < 4; i++) { - ciapa = gsmat->getLine(); - //cout << "PRESO: |||" << ciapa << "|||" << endl; - NOTICA("PRESO %d |||%s|||\n", GSMOPEN_P_LOG, i, ciapa.c_str()); - //gsmopen_sleep(5000); - } - - sms = SMSMessage::decode("079194710167120004038571F1390099406180904480A0D41631067296EF7390383D07CD622E58CD95CB81D6EF39BDEC66BFE7207A794E2FBB4320AFB82C07E56020A8FC7D9687DBED32285C9F83A06F769A9E5EB340D7B49C3E1FA3C3663A0B24E4CBE76516680A7FCBE920725A5E5ED341F0B21C346D4E41E1BA790E4286DDE4BC0BD42CA3E5207258EE1797E5A0BA9B5E9683C86539685997EBEF61341B249BC966"); // dataCodingScheme = 0 - NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); - sms = SMSMessage::decode("0791934329002000040C9193432766658100009001211133318004D4F29C0E"); // dataCodingScheme = 0 - NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); - sms = SMSMessage::decode("0791934329002000040C919343276665810008900121612521801600CC00E800E900F900F200E00020006300690061006F"); // dataCodingScheme = 8 - NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); - sms = SMSMessage::decode("0791934329002000040C919343276665810008900172002293404C006300690061006F0020003100320033002000620065006C00E80020043D043E0432043E044104420438002005DC05E7002005E805D005EA0020FE8EFEE0FEA0FEE4FECBFE9300204EBA5927"); // dataCodingScheme = 8 , text=ciao 123 belè новости לק ראת ﺎﻠﺠﻤﻋﺓ 人大 - NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); - sms = SMSMessage::decode("07911497941902F00414D0E474989D769F5DE4320839001040122151820000"); // dataCodingScheme = 0 - NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); - -#if 0 - size = MultiByteToWideChar(CP_OEMCP, 0, username, strlen(username)+1, UserName, 0); - UserName=(wchar_t*)GlobalAlloc(GME M_ZEROINIT, size); - ret = MultiByteToWideChar(CP_OEMCP, 0, username, strlen(username)+1, UserName, size); - if(ret == 0) - getError(GetLastError()); -#endif //0 - return (-1); -} - -#endif //GSMLIBGIO int gsmopen_serial_read(private_t * tech_pvt)