gsmopen: indented

This commit is contained in:
Giovanni Maruzzelli 2012-04-06 19:49:13 +02:00
parent 35d8aa44f8
commit 907254061d
3 changed files with 590 additions and 713 deletions

View File

@ -52,10 +52,6 @@
#define ALARM_NETWORK_NO_SIGNAL 4
#define ALARM_NETWORK_LOW_SIGNAL 5
#undef GIOVA48
#ifndef GIOVA48
@ -64,7 +60,6 @@
#define SAMPLES_PER_FRAME 960
#endif // GIOVA48
#ifndef GIOVA48
#define GSMOPEN_FRAME_SIZE 160
#else //GIOVA48
@ -90,7 +85,6 @@
#include <alsa/asoundlib.h>
#endif /* GSMOPEN_ALSA */
//#include "celliax_spandsp.h"
#ifndef WIN32
#include <sys/time.h>
@ -342,7 +336,6 @@ struct private_object {
unsigned long ib_failed_calls;
unsigned long ob_failed_calls;
char controldevice_name[50]; /*!< \brief name of the serial device controlling the interface, possibly none */
int controldevprotocol; /*!< \brief which protocol is used for serial control of this interface */
char controldevprotocolname[50]; /*!< \brief name of the serial device controlling protocol, one of "at" "fbus2" "no_serial" "alsa_voicemodem" */
@ -352,7 +345,7 @@ struct private_object {
int controldevice_speed;
#else
speed_t controldevice_speed;
#endif// WIN32
#endif // WIN32
int controldev_dead;
char at_dial_pre_number[64];
@ -429,7 +422,6 @@ struct private_object {
time_t gsmopen_serial_synced_timestamp;
struct s_result line_array;
int unread_sms_msg_id;
int reading_sms_msg;
char sms_message[4800];
@ -443,7 +435,6 @@ struct private_object {
int sms_pdu_not_supported;
//char sms_receiving_program[256];
struct timeval call_incoming_time;
switch_mutex_t *controldev_lock;
@ -483,27 +474,27 @@ struct private_object {
int no_sound;
dtmf_rx_state_t dtmf_state;
int active;
int home_network_registered;
int roaming_registered;
int not_registered;
int got_signal;
char imei[128];
int requesting_imei;
char imsi[128];
int requesting_imsi;
int network_creg_not_supported;
char creg[128];
dtmf_rx_state_t dtmf_state;
int active;
int home_network_registered;
int roaming_registered;
int not_registered;
int got_signal;
char imei[128];
int requesting_imei;
char imsi[128];
int requesting_imsi;
int network_creg_not_supported;
char creg[128];
char controldevice_audio_name[50];
int controldev_audio_fd;
int controldev_audio_fd;
int controldevice_audio_speed;
int controldev_audio_dead;
switch_mutex_t *controldev_audio_lock;
ctb::SerialPort* serialPort_serial_audio;
ctb::SerialPort * serialPort_serial_audio;
ctb::SerialPort* serialPort_serial_control;
ctb::SerialPort * serialPort_serial_control;
char buffer2[320];
int buffer2_full;
@ -512,30 +503,30 @@ struct private_object {
typedef struct private_object private_t;
void *SWITCH_THREAD_FUNC gsmopen_api_thread_func(switch_thread_t * thread, void *obj);
int gsmopen_audio_read(private_t * tech_pvt);
int gsmopen_audio_init(private_t * tech_pvt);
int gsmopen_signaling_read(private_t * tech_pvt);
void *SWITCH_THREAD_FUNC gsmopen_api_thread_func(switch_thread_t *thread, void *obj);
int gsmopen_audio_read(private_t *tech_pvt);
int gsmopen_audio_init(private_t *tech_pvt);
int gsmopen_signaling_read(private_t *tech_pvt);
int gsmopen_call(private_t * tech_pvt, char *idest, int timeout);
int gsmopen_senddigit(private_t * tech_pvt, char digit);
int gsmopen_call(private_t *tech_pvt, char *idest, int timeout);
int gsmopen_senddigit(private_t *tech_pvt, char digit);
void *gsmopen_do_tcp_srv_thread_func(void *obj);
void *SWITCH_THREAD_FUNC gsmopen_do_tcp_srv_thread(switch_thread_t * thread, void *obj);
void *SWITCH_THREAD_FUNC gsmopen_do_tcp_srv_thread(switch_thread_t *thread, void *obj);
void *gsmopen_do_tcp_cli_thread_func(void *obj);
void *SWITCH_THREAD_FUNC gsmopen_do_tcp_cli_thread(switch_thread_t * thread, void *obj);
void *SWITCH_THREAD_FUNC gsmopen_do_tcp_cli_thread(switch_thread_t *thread, void *obj);
void *gsmopen_do_gsmopenapi_thread_func(void *obj);
void *SWITCH_THREAD_FUNC gsmopen_do_gsmopenapi_thread(switch_thread_t * thread, void *obj);
int dtmf_received(private_t * tech_pvt, char *value);
int start_audio_threads(private_t * tech_pvt);
int new_inbound_channel(private_t * tech_pvt);
int outbound_channel_answered(private_t * tech_pvt);
void *SWITCH_THREAD_FUNC gsmopen_do_gsmopenapi_thread(switch_thread_t *thread, void *obj);
int dtmf_received(private_t *tech_pvt, char *value);
int start_audio_threads(private_t *tech_pvt);
int new_inbound_channel(private_t *tech_pvt);
int outbound_channel_answered(private_t *tech_pvt);
//int gsmopen_signaling_write(private_t * tech_pvt, char *msg_to_gsmopen);
#if defined(WIN32) && !defined(__CYGWIN__)
int gsmopen_pipe_read(switch_file_t * pipe, short *buf, int howmany);
int gsmopen_pipe_write(switch_file_t * pipe, short *buf, int howmany);
int gsmopen_pipe_read(switch_file_t *pipe, short *buf, int howmany);
int gsmopen_pipe_write(switch_file_t *pipe, short *buf, int howmany);
/* Visual C do not have strsep ? */
char *strsep(char **stringp, const char *delim);
#else
@ -543,30 +534,26 @@ int gsmopen_pipe_read(int pipe, short *buf, int howmany);
int gsmopen_pipe_write(int pipe, short *buf, int howmany);
#endif /* WIN32 */
int gsmopen_close_socket(unsigned int fd);
private_t *find_available_gsmopen_interface_rr(private_t * tech_pvt_calling);
int remote_party_is_ringing(private_t * tech_pvt);
int remote_party_is_early_media(private_t * tech_pvt);
private_t *find_available_gsmopen_interface_rr(private_t *tech_pvt_calling);
int remote_party_is_ringing(private_t *tech_pvt);
int remote_party_is_early_media(private_t *tech_pvt);
//int gsmopen_answer(private_t * tech_pvt, char *id, char *value);
#if 0
int gsmopen_transfer(private_t * tech_pvt, char *id, char *value);
int gsmopen_transfer(private_t *tech_pvt, char *id, char *value);
#endif //0
int gsmopen_socket_create_and_bind(private_t * tech_pvt, int *which_port);
int gsmopen_socket_create_and_bind(private_t *tech_pvt, int *which_port);
void *gsmopen_do_controldev_thread(void *data);
//#ifdef WIN32
int gsmopen_serial_init(private_t * tech_pvt, int controldevice_speed);
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 gsmopen_serial_monitor(private_t * tech_pvt);
int gsmopen_serial_sync(private_t * tech_pvt);
int gsmopen_serial_sync_AT(private_t * tech_pvt);
int gsmopen_serial_config(private_t * tech_pvt);
int gsmopen_serial_config_AT(private_t * tech_pvt);
int gsmopen_serial_monitor(private_t *tech_pvt);
int gsmopen_serial_sync(private_t *tech_pvt);
int gsmopen_serial_sync_AT(private_t *tech_pvt);
int gsmopen_serial_config(private_t *tech_pvt);
int gsmopen_serial_config_AT(private_t *tech_pvt);
#define gsmopen_serial_write_AT_expect(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 1, 0)
#define gsmopen_serial_write_AT_expect_noexpcr(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 0, 0)
@ -574,28 +561,28 @@ int gsmopen_serial_config_AT(private_t * tech_pvt);
// 20.5 sec timeout, used for querying the SIM and sending SMSs
#define gsmopen_serial_write_AT_expect_longtime(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 1, 20)
#define gsmopen_serial_write_AT_expect_longtime_noexpcr(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 0, 20)
int gsmopen_serial_write_AT(private_t * tech_pvt, const char *data);
int gsmopen_serial_write_AT_nocr(private_t * tech_pvt, const char *data);
int gsmopen_serial_write_AT_ack(private_t * tech_pvt, const char *data);
int gsmopen_serial_write_AT_ack_nocr_longtime(private_t * tech_pvt, const char *data);
int gsmopen_serial_write_AT_noack(private_t * tech_pvt, const char *data);
int gsmopen_serial_write_AT_expect1(private_t * tech_pvt, const char *data, const char *expected_string, int expect_crlf, int seconds);
int gsmopen_serial_AT_expect(private_t * tech_pvt, const char *expected_string, int expect_crlf, int seconds);
int gsmopen_serial_read_AT(private_t * tech_pvt, int look_for_ack, int timeout_usec, int timeout_sec, const char *expected_string, int expect_crlf);
int gsmopen_serial_read(private_t * tech_pvt);
int gsmopen_serial_write_AT(private_t *tech_pvt, const char *data);
int gsmopen_serial_write_AT_nocr(private_t *tech_pvt, const char *data);
int gsmopen_serial_write_AT_ack(private_t *tech_pvt, const char *data);
int gsmopen_serial_write_AT_ack_nocr_longtime(private_t *tech_pvt, const char *data);
int gsmopen_serial_write_AT_noack(private_t *tech_pvt, const char *data);
int gsmopen_serial_write_AT_expect1(private_t *tech_pvt, const char *data, const char *expected_string, int expect_crlf, int seconds);
int gsmopen_serial_AT_expect(private_t *tech_pvt, const char *expected_string, int expect_crlf, int seconds);
int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_usec, int timeout_sec, const char *expected_string, int expect_crlf);
int gsmopen_serial_read(private_t *tech_pvt);
#ifdef NOTDEF
int gsmopen_serial_getstatus(private_t * tech_pvt);
int gsmopen_serial_hangup(private_t * tech_pvt);
int gsmopen_serial_answer(private_t * tech_pvt);
int gsmopen_serial_answer_AT(private_t * tech_pvt);
int gsmopen_serial_hangup_AT(private_t * tech_pvt);
int gsmopen_serial_call_AT(private_t * tech_pvt, char *dstr);
int gsmopen_serial_getstatus_AT(private_t * tech_pvt);
int gsmopen_serial_getstatus(private_t *tech_pvt);
int gsmopen_serial_hangup(private_t *tech_pvt);
int gsmopen_serial_answer(private_t *tech_pvt);
int gsmopen_serial_answer_AT(private_t *tech_pvt);
int gsmopen_serial_hangup_AT(private_t *tech_pvt);
int gsmopen_serial_call_AT(private_t *tech_pvt, char *dstr);
int gsmopen_serial_getstatus_AT(private_t *tech_pvt);
#endif // NOTDEF
#define RESULT_FAILURE 0
#define RESULT_SUCCESS 1
int utf_to_ucs2(private_t * tech_pvt, char *utf_in, size_t inbytesleft, char *ucs2_out, size_t outbytesleft);
int ucs2_to_utf8(private_t * tech_pvt, char *ucs2_in, char *utf8_out, size_t outbytesleft);
int utf_to_ucs2(private_t *tech_pvt, char *utf_in, size_t inbytesleft, char *ucs2_out, size_t outbytesleft);
int ucs2_to_utf8(private_t *tech_pvt, char *ucs2_in, char *utf8_out, size_t outbytesleft);
//#define PUSHA_UNLOCKA(x) pthread_cleanup_push(gsmopen_unlocka_log, (void *) x);
//#define POPPA_UNLOCKA(x) pthread_cleanup_pop(0);
@ -610,42 +597,38 @@ int ucs2_to_utf8(private_t * tech_pvt, char *ucs2_in, char *utf8_out, size_t out
#define ast_setstate(x, y) ERRORA("ast_setstate: %p, %d\n", GSMOPEN_P_LOG, (void *)x, y);
int gsmopen_serial_read(private_t * tech_pvt);
int gsmopen_answer(private_t * tech_pvt);
int gsmopen_serial_answer(private_t * tech_pvt);
int gsmopen_serial_answer_AT(private_t * tech_pvt);
int gsmopen_serial_hangup(private_t * tech_pvt);
int gsmopen_serial_hangup_AT(private_t * tech_pvt);
int gsmopen_hangup(private_t * tech_pvt);
int gsmopen_serial_call(private_t * tech_pvt, char *dstr);
int gsmopen_serial_call_AT(private_t * tech_pvt, char *dstr);
int gsmopen_sendsms(private_t * tech_pvt, char *dest, char *text);
int gsmopen_serial_read(private_t *tech_pvt);
int gsmopen_answer(private_t *tech_pvt);
int gsmopen_serial_answer(private_t *tech_pvt);
int gsmopen_serial_answer_AT(private_t *tech_pvt);
int gsmopen_serial_hangup(private_t *tech_pvt);
int gsmopen_serial_hangup_AT(private_t *tech_pvt);
int gsmopen_hangup(private_t *tech_pvt);
int gsmopen_serial_call(private_t *tech_pvt, char *dstr);
int gsmopen_serial_call_AT(private_t *tech_pvt, char *dstr);
int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text);
#ifdef GSMOPEN_ALSA
int alsa_init(private_t * tech_pvt);
int alsa_shutdown(private_t * tech_pvt);
snd_pcm_t *alsa_open_dev(private_t * tech_pvt, snd_pcm_stream_t stream);
int alsa_write(private_t * tech_pvt, short *data, int datalen);
int alsa_read(private_t * tech_pvt, short *data, int datalen);
int alsa_init(private_t *tech_pvt);
int alsa_shutdown(private_t *tech_pvt);
snd_pcm_t *alsa_open_dev(private_t *tech_pvt, snd_pcm_stream_t stream);
int alsa_write(private_t *tech_pvt, short *data, int datalen);
int alsa_read(private_t *tech_pvt, short *data, int datalen);
#endif /* GSMOPEN_ALSA */
void gsmopen_store_boost(char *s, double *boost);
int gsmopen_sound_boost(void *data, int samples_num, double boost);
int sms_incoming(private_t * tech_pvt);
int gsmopen_ring(private_t * tech_pvt);
int iso_8859_1_to_utf8(private_t * tech_pvt, char *iso_8859_1_in, char *utf8_out, size_t outbytesleft);
int gsmopen_serial_getstatus_AT(private_t * tech_pvt);
int sms_incoming(private_t *tech_pvt);
int gsmopen_ring(private_t *tech_pvt);
int iso_8859_1_to_utf8(private_t *tech_pvt, char *iso_8859_1_in, char *utf8_out, size_t outbytesleft);
int gsmopen_serial_getstatus_AT(private_t *tech_pvt);
int dump_event(private_t *tech_pvt);
int alarm_event(private_t * tech_pvt, int alarm_code, const char *alarm_message);
int dump_event_full(private_t * tech_pvt, int is_alarm, int alarm_code, const char *alarm_message);
int gsmopen_serial_init_audio_port(private_t * tech_pvt, int controldevice_audio_speed);
int serial_audio_init(private_t * tech_pvt);
int serial_audio_shutdown(private_t * tech_pvt);
int alarm_event(private_t *tech_pvt, int alarm_code, const char *alarm_message);
int dump_event_full(private_t *tech_pvt, int is_alarm, int alarm_code, const char *alarm_message);
int gsmopen_serial_init_audio_port(private_t *tech_pvt, int controldevice_audio_speed);
int serial_audio_init(private_t *tech_pvt);
int serial_audio_shutdown(private_t *tech_pvt);

View File

@ -1,8 +1,8 @@
#include "gsmopen.h"
extern int running; //FIXME
int gsmopen_dir_entry_extension = 1; //FIXME
int option_debug = 100; //FIXME
extern int running; //FIXME
int gsmopen_dir_entry_extension = 1; //FIXME
int option_debug = 100; //FIXME
#define gsmopen_sleep switch_sleep
#define gsmopen_strncpy switch_copy_string
@ -55,13 +55,13 @@ int gettimeofday(struct timeval *tv, struct sk_timezone *tz)
/***************/
#endif /* WIN32 */
int gsmopen_serial_init(private_t * tech_pvt, int controldevice_speed)
int gsmopen_serial_init(private_t *tech_pvt, int controldevice_speed)
{
tech_pvt->serialPort_serial_control = new ctb::SerialPort();
//if( tech_pvt->serialPort_serial_control->Open( "COM9", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) {
if( tech_pvt->serialPort_serial_control->Open( "/dev/ttyUSB3", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) {
if (tech_pvt->serialPort_serial_control->Open("/dev/ttyUSB3", 115200, "8N1", ctb::SerialPort::NoFlowControl) >= 0) {
ERRORA("port SUCCESS open\n", GSMOPEN_P_LOG);
} else {
ERRORA("port NOT open\n", GSMOPEN_P_LOG);
@ -148,11 +148,10 @@ int gsmopen_serial_init(private_t * tech_pvt, int controldevice_speed)
return -1;
}
return (fd);
#endif// NOTDEF
#endif // NOTDEF
}
int gsmopen_serial_read(private_t * tech_pvt)
int gsmopen_serial_read(private_t *tech_pvt)
{
if (tech_pvt->controldevprotocol == PROTOCOL_AT)
return gsmopen_serial_read_AT(tech_pvt, 0, 100000, 0, NULL, 1); // a 10th of a second timeout
@ -167,8 +166,7 @@ int gsmopen_serial_read(private_t * tech_pvt)
return -1;
}
int gsmopen_serial_sync(private_t * tech_pvt)
int gsmopen_serial_sync(private_t *tech_pvt)
{
if (tech_pvt->controldevprotocol == PROTOCOL_AT)
return gsmopen_serial_sync_AT(tech_pvt);
@ -184,7 +182,7 @@ int gsmopen_serial_sync(private_t * tech_pvt)
return -1;
}
int gsmopen_serial_config(private_t * tech_pvt)
int gsmopen_serial_config(private_t *tech_pvt)
{
if (tech_pvt->controldevprotocol == PROTOCOL_AT)
return gsmopen_serial_config_AT(tech_pvt);
@ -200,7 +198,7 @@ int gsmopen_serial_config(private_t * tech_pvt)
return -1;
}
int gsmopen_serial_config_AT(private_t * tech_pvt)
int gsmopen_serial_config_AT(private_t *tech_pvt)
{
int res;
char at_command[5];
@ -216,15 +214,15 @@ int gsmopen_serial_config_AT(private_t * tech_pvt)
while (1) {
char trash[4096];
res=tech_pvt->serialPort_serial_control->Read(trash, 4096);
if(res)
res = tech_pvt->serialPort_serial_control->Read(trash, 4096);
if (res)
ERRORA("READ %d on serialport init\n", GSMOPEN_P_LOG, res);
res = gsmopen_serial_write_AT_ack(tech_pvt, "AT^CURC=0");
if (res) {
ERRORA("no response to AT^CURC=0\n", GSMOPEN_P_LOG);
return -1;
}
res = gsmopen_serial_write_AT_ack(tech_pvt, "AT^CURC=0");
if (res) {
ERRORA("no response to AT^CURC=0\n", GSMOPEN_P_LOG);
return -1;
}
if (strlen(tech_pvt->at_preinit_1)) {
res = gsmopen_serial_write_AT_expect(tech_pvt, tech_pvt->at_preinit_1, tech_pvt->at_preinit_1_expect);
if (res) {
@ -286,8 +284,6 @@ int gsmopen_serial_config_AT(private_t * tech_pvt)
return -1;
}
/* for motorola, bring it back to "normal" mode if it happens to be in another mode */
res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+mode=0");
if (res) {
@ -342,7 +338,7 @@ int gsmopen_serial_config_AT(private_t * tech_pvt)
DEBUGA_GSMOPEN("AT+CREG=1 failed\n", GSMOPEN_P_LOG);
tech_pvt->network_creg_not_supported = 1;
}
if(!tech_pvt->network_creg_not_supported){
if (!tech_pvt->network_creg_not_supported) {
res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CREG?");
if (res) {
DEBUGA_GSMOPEN("AT+CREG? failed\n", GSMOPEN_P_LOG);
@ -420,7 +416,7 @@ int gsmopen_serial_config_AT(private_t * tech_pvt)
WARNINGA("AT+CSCS=\"UCS2\" (set TE messages to ucs2) do not got OK from the phone, let's try with 'GSM'\n", GSMOPEN_P_LOG);
tech_pvt->no_ucs2 = 1;
}
#ifdef NOTDEF //GSMLIB?
#ifdef NOTDEF //GSMLIB?
if (tech_pvt->no_ucs2) {
res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCS=\"GSM\"");
if (res) {
@ -470,7 +466,7 @@ int gsmopen_serial_config_AT(private_t * tech_pvt)
} else {
tech_pvt->at_has_ecam = 1;
}
#endif// NOTDEF
#endif // NOTDEF
/* disable unsolicited signaling of call list */
res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CLCC=0");
@ -549,14 +545,14 @@ int gsmopen_serial_config_AT(private_t * tech_pvt)
return 0;
}
int gsmopen_serial_sync_AT(private_t * tech_pvt)
int gsmopen_serial_sync_AT(private_t *tech_pvt)
{
gsmopen_sleep(10000); /* 10msec */
gsmopen_sleep(10000); /* 10msec */
time(&tech_pvt->gsmopen_serial_synced_timestamp);
return 0;
}
int gsmopen_serial_read_AT(private_t * tech_pvt, int look_for_ack, int timeout_usec, int timeout_sec, const char *expected_string, int expect_crlf)
int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_usec, int timeout_sec, const char *expected_string, int expect_crlf)
{
int select_err = 1;
int res;
@ -571,17 +567,16 @@ int gsmopen_serial_read_AT(private_t * tech_pvt, int look_for_ack, int timeout_u
int la_counter = 0;
int at_ack = -1;
int la_read = 0;
int timeout1;
int timeout1;
timeout1 = (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0 );
timeout1 = (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0);
if(timeout1 != 100)
ERRORA("TIMEOUT=%d\n", GSMOPEN_P_LOG, timeout1);
if (timeout1 != 100)
ERRORA("TIMEOUT=%d\n", GSMOPEN_P_LOG, timeout1);
if(!running || !tech_pvt->running){
if (!running || !tech_pvt->running) {
return -1;
}
////FD_ZERO(&read_fds);
//FD_SET(tech_pvt->controldevfd, &read_fds);
@ -595,7 +590,10 @@ if(timeout1 != 100)
LOKKA(tech_pvt->controldev_lock);
//while ((!tech_pvt->controldev_dead) && ((select_err = select(tech_pvt->controldevfd + 1, &read_fds, NULL, NULL, &timeout)) > 0)) {
while ( (!tech_pvt->controldev_dead) && (read_count = tech_pvt->serialPort_serial_control->Readv(tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer), (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0 ) ) > 0) ) {
while ((!tech_pvt->controldev_dead)
&& (read_count =
tech_pvt->serialPort_serial_control->Readv(tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer),
(timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0)) > 0)) {
char *token_ptr;
timeout.tv_sec = timeout_sec; //reset the timeout, linux modify it
timeout.tv_usec = timeout_usec; //reset the timeout, linux modify it
@ -609,10 +607,10 @@ if(timeout1 != 100)
tech_pvt->controldev_dead = 1;
//cicopet close(tech_pvt->controldevfd);
ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name);
tech_pvt->running=0;
tech_pvt->running = 0;
alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead");
tech_pvt->active=0;
tech_pvt->name[0]='\0';
tech_pvt->active = 0;
tech_pvt->name[0] = '\0';
UNLOCKA(tech_pvt->controldev_lock);
if (tech_pvt->owner) {
@ -629,7 +627,6 @@ if(timeout1 != 100)
}
tmp_answer_ptr = tmp_answer_ptr + read_count;
la_counter = 0;
memset(tmp_answer2, 0, sizeof(char) * AT_BUFSIZ);
strcpy(tmp_answer2, tmp_answer);
@ -755,7 +752,6 @@ if(timeout1 != 100)
memset(tech_pvt->callid_name, 0, sizeof(tech_pvt->callid_name));
memset(tech_pvt->callid_number, 0, sizeof(tech_pvt->callid_number));
for (a = 7; a < strlen(tech_pvt->line_array.result[i]); a++) {
if (tech_pvt->line_array.result[i][a] == ',') {
commacount++;
@ -918,14 +914,14 @@ if(timeout1 != 100)
ERRORA
("|%s| CELLPHONE GETS ALMOST NO SIGNAL, consider to move it or additional antenna\n",
GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
tech_pvt->got_signal=0;
alarm_event(tech_pvt, ALARM_NETWORK_NO_SIGNAL, "CELLPHONE GETS ALMOST NO SIGNAL, consider to move it or additional antenna");
tech_pvt->got_signal = 0;
alarm_event(tech_pvt, ALARM_NETWORK_NO_SIGNAL, "CELLPHONE GETS ALMOST NO SIGNAL, consider to move it or additional antenna");
} else if (signal_quality < 15) {
WARNINGA("|%s| CELLPHONE GETS SIGNAL LOW\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
tech_pvt->got_signal=1;
alarm_event(tech_pvt, ALARM_NETWORK_LOW_SIGNAL, "CELLPHONE GETS SIGNAL LOW");
tech_pvt->got_signal = 1;
alarm_event(tech_pvt, ALARM_NETWORK_LOW_SIGNAL, "CELLPHONE GETS SIGNAL LOW");
} else {
tech_pvt->got_signal=2;
tech_pvt->got_signal = 2;
}
}
@ -941,25 +937,26 @@ if(timeout1 != 100)
DEBUGA_GSMOPEN("|%s| +CREG: Display: %d, Registration=%d\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i], n, stat);
if (err < 2) {
WARNINGA("|%s| is not formatted as: |+CREG: xx,yy|\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
}
if (stat==0) {
}
if (stat == 0) {
ERRORA
("|%s| CELLPHONE is not registered to network, consider to move it or additional antenna\n",
GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
tech_pvt->not_registered=1;
tech_pvt->home_network_registered=0;
tech_pvt->roaming_registered=0;
alarm_event(tech_pvt, ALARM_NO_NETWORK_REGISTRATION, "CELLPHONE is not registered to network, consider to move it or additional antenna");
} else if (stat==1) {
tech_pvt->not_registered = 1;
tech_pvt->home_network_registered = 0;
tech_pvt->roaming_registered = 0;
alarm_event(tech_pvt, ALARM_NO_NETWORK_REGISTRATION,
"CELLPHONE is not registered to network, consider to move it or additional antenna");
} else if (stat == 1) {
DEBUGA_GSMOPEN("|%s| CELLPHONE is registered to the HOME network\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
tech_pvt->not_registered=0;
tech_pvt->home_network_registered=1;
tech_pvt->roaming_registered=0;
}else {
tech_pvt->not_registered = 0;
tech_pvt->home_network_registered = 1;
tech_pvt->roaming_registered = 0;
} else {
ERRORA("|%s| CELLPHONE is registered to a ROAMING network\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
tech_pvt->not_registered=0;
tech_pvt->home_network_registered=0;
tech_pvt->roaming_registered=1;
tech_pvt->not_registered = 0;
tech_pvt->home_network_registered = 0;
tech_pvt->roaming_registered = 1;
alarm_event(tech_pvt, ALARM_ROAMING_NETWORK_REGISTRATION, "CELLPHONE is registered to a ROAMING network");
}
@ -1048,16 +1045,6 @@ if(timeout1 != 100)
ERRORA("Why NO CARRIER now?\n", GSMOPEN_P_LOG);
}
}
if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_call_incoming) == 0)) {
@ -1277,7 +1264,6 @@ if(timeout1 != 100)
tech_pvt->reading_sms_msg++;
}
if ((strcmp(tech_pvt->line_array.result[i], "+MCST: 17") == 0)) { /* motorola call processing unsolicited messages */
tech_pvt->phone_callflow = CALLFLOW_CALL_INFLUX;
if (option_debug > 1)
@ -1510,51 +1496,51 @@ if(timeout1 != 100)
/* at_indicator_* are unsolicited messages sent by the phone to signal us that some of its visual indicators on its screen has changed, based on CIND CMER ETSI docs */
if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_noservice_string) == 0)) {
ERRORA("|%s| at_indicator_noservice_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
alarm_event(tech_pvt, ALARM_NETWORK_NO_SERVICE, "at_indicator_noservice_string");
ERRORA("|%s| at_indicator_noservice_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
alarm_event(tech_pvt, ALARM_NETWORK_NO_SERVICE, "at_indicator_noservice_string");
}
if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_nosignal_string) == 0)) {
ERRORA("|%s| at_indicator_nosignal_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
alarm_event(tech_pvt, ALARM_NETWORK_NO_SIGNAL, "at_indicator_nosignal_string");
ERRORA("|%s| at_indicator_nosignal_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
alarm_event(tech_pvt, ALARM_NETWORK_NO_SIGNAL, "at_indicator_nosignal_string");
}
if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_lowsignal_string) == 0)) {
WARNINGA("|%s| at_indicator_lowsignal_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
alarm_event(tech_pvt, ALARM_NETWORK_LOW_SIGNAL, "at_indicator_lowsignal_string");
WARNINGA("|%s| at_indicator_lowsignal_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
alarm_event(tech_pvt, ALARM_NETWORK_LOW_SIGNAL, "at_indicator_lowsignal_string");
}
if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_lowbattchg_string) == 0)) {
WARNINGA("|%s| at_indicator_lowbattchg_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
WARNINGA("|%s| at_indicator_lowbattchg_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
}
if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_nobattchg_string) == 0)) {
ERRORA("|%s| at_indicator_nobattchg_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
ERRORA("|%s| at_indicator_nobattchg_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
}
if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_callactive_string) == 0)) {
DEBUGA_GSMOPEN("|%s| at_indicator_callactive_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
DEBUGA_GSMOPEN("|%s| at_indicator_callactive_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
}
if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_nocallactive_string) == 0)) {
DEBUGA_GSMOPEN("|%s| at_indicator_nocallactive_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
DEBUGA_GSMOPEN("|%s| at_indicator_nocallactive_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
}
if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_nocallsetup_string) == 0)) {
DEBUGA_GSMOPEN("|%s| at_indicator_nocallsetup_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
DEBUGA_GSMOPEN("|%s| at_indicator_nocallsetup_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
}
if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_callsetupincoming_string) == 0)) {
DEBUGA_GSMOPEN("|%s| at_indicator_callsetupincoming_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
DEBUGA_GSMOPEN("|%s| at_indicator_callsetupincoming_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
}
if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_callsetupoutgoing_string) == 0)) {
DEBUGA_GSMOPEN("|%s| at_indicator_callsetupoutgoing_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
DEBUGA_GSMOPEN("|%s| at_indicator_callsetupoutgoing_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
}
if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_callsetupremoteringing_string)
== 0)) {
DEBUGA_GSMOPEN("|%s| at_indicator_callsetupremoteringing_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
DEBUGA_GSMOPEN("|%s| at_indicator_callsetupremoteringing_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]);
}
}
@ -1614,24 +1600,23 @@ if(timeout1 != 100)
memset(content, '\0', sizeof(content));
for (c = 0; c < strlen(tech_pvt->line_array.result[i]); c++) {
if (tech_pvt->line_array.result[i][c] == ',' && tech_pvt->line_array.result[i][c - 1] != '\\' && inside_quote == 0) {
if (inside_comma) {
inside_comma = 0;
DEBUGA_GSMOPEN("inside_comma=%d, inside_quote=%d, we're at=%s\n", GSMOPEN_P_LOG, inside_comma, inside_quote,
&tech_pvt->line_array.result[i][c]);
&tech_pvt->line_array.result[i][c]);
} else {
inside_comma = 1;
DEBUGA_GSMOPEN("inside_comma=%d, inside_quote=%d, we're at=%s\n", GSMOPEN_P_LOG, inside_comma, inside_quote,
&tech_pvt->line_array.result[i][c]);
&tech_pvt->line_array.result[i][c]);
}
}
if (tech_pvt->line_array.result[i][c] == '"' && tech_pvt->line_array.result[i][c - 1] != '\\') {
if (inside_quote) {
inside_quote = 0;
DEBUGA_GSMOPEN("END_CONTENT inside_comma=%d, inside_quote=%d, we're at=%s\n", GSMOPEN_P_LOG, inside_comma, inside_quote,
&tech_pvt->line_array.result[i][c]);
&tech_pvt->line_array.result[i][c]);
DEBUGA_GSMOPEN("%d content=%s\n", GSMOPEN_P_LOG, which_field, content);
//strncat(tech_pvt->sms_message, "---", ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1));
@ -1671,7 +1656,7 @@ if(timeout1 != 100)
} else {
inside_quote = 1;
DEBUGA_GSMOPEN("START_CONTENT inside_comma=%d, inside_quote=%d, we're at=%s\n", GSMOPEN_P_LOG, inside_comma, inside_quote,
&tech_pvt->line_array.result[i][c]);
&tech_pvt->line_array.result[i][c]);
}
}
if (inside_quote && tech_pvt->line_array.result[i][c] != '"') {
@ -1693,7 +1678,6 @@ if(timeout1 != 100)
//int howmanyleft;
DEBUGA_GSMOPEN("sms_message=%s\n", GSMOPEN_P_LOG, tech_pvt->sms_message);
ucs2_to_utf8(tech_pvt, tech_pvt->sms_message, content3, sizeof(content3));
DEBUGA_GSMOPEN("content3=%s\n", GSMOPEN_P_LOG, content3);
@ -1749,13 +1733,13 @@ if(timeout1 != 100)
tech_pvt->controldev_dead = 1;
//cicopet close(tech_pvt->controldevfd);
tech_pvt->running=0;
alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "select returned -1 on interface, setting controldev_dead");
tech_pvt->active=0;
tech_pvt->name[0]='\0';
tech_pvt->running = 0;
alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "select returned -1 on interface, setting controldev_dead");
tech_pvt->active = 0;
tech_pvt->name[0] = '\0';
if (tech_pvt->owner)
gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP);
switch_sleep(1000000);
switch_sleep(1000000);
return -1;
}
@ -1819,13 +1803,13 @@ if(timeout1 != 100)
}
//cicopet int gsmopen_serial_write_AT(private_t * tech_pvt, const char *data)
int gsmopen_serial_write_AT(private_t * tech_pvt, const char *data)
int gsmopen_serial_write_AT(private_t *tech_pvt, const char *data)
{
int howmany;
int i;
int res;
int count;
char *Data=(char *)data;
char *Data = (char *) data;
howmany = strlen(Data);
@ -1854,18 +1838,18 @@ char *Data=(char *)data;
}
if (option_debug > 1)
DEBUGA_GSMOPEN("sent data... (%.1s)\n", GSMOPEN_P_LOG, &Data[i]);
gsmopen_sleep(1000); /* release the cpu */
gsmopen_sleep(1000); /* release the cpu */
}
//cicopet res = write(tech_pvt->controldevfd, "\r", 1);
res = tech_pvt->serialPort_serial_control->Write((char *)"\r", 1);
res = tech_pvt->serialPort_serial_control->Write((char *) "\r", 1);
if (res != 1) {
DEBUGA_GSMOPEN("Error sending (carriage return): %d (%s)\n", GSMOPEN_P_LOG, res, strerror(errno));
gsmopen_sleep(100000);
for (count = 0; count < 10; count++) {
//cicopet res = write(tech_pvt->controldevfd, "\r", 1);
res = tech_pvt->serialPort_serial_control->Write((char *)"\r", 1);
res = tech_pvt->serialPort_serial_control->Write((char *) "\r", 1);
if (res == 1) {
DEBUGA_GSMOPEN("Successfully RE-sent carriage return: %d %d (%s)\n", GSMOPEN_P_LOG, count, res, strerror(errno));
@ -1882,18 +1866,18 @@ char *Data=(char *)data;
}
if (option_debug > 1)
DEBUGA_GSMOPEN("sent (carriage return)\n", GSMOPEN_P_LOG);
gsmopen_sleep(1000); /* release the cpu */
gsmopen_sleep(1000); /* release the cpu */
return howmany;
}
int gsmopen_serial_write_AT_nocr(private_t * tech_pvt, const char *data)
int gsmopen_serial_write_AT_nocr(private_t *tech_pvt, const char *data)
{
int howmany;
int i;
int res;
int count;
char *Data=(char *)data;
char *Data = (char *) data;
howmany = strlen(Data);
@ -1921,15 +1905,15 @@ char *Data=(char *)data;
}
if (option_debug > 1)
DEBUGA_GSMOPEN("sent data... (%.1s)\n", GSMOPEN_P_LOG, &Data[i]);
gsmopen_sleep(1000); /* release the cpu */
gsmopen_sleep(1000); /* release the cpu */
}
gsmopen_sleep(1000); /* release the cpu */
gsmopen_sleep(1000); /* release the cpu */
return howmany;
}
int gsmopen_serial_write_AT_noack(private_t * tech_pvt, const char *data)
int gsmopen_serial_write_AT_noack(private_t *tech_pvt, const char *data)
{
if (option_debug > 1)
@ -1949,7 +1933,7 @@ int gsmopen_serial_write_AT_noack(private_t * tech_pvt, const char *data)
return 0;
}
int gsmopen_serial_write_AT_ack(private_t * tech_pvt, const char *data)
int gsmopen_serial_write_AT_ack(private_t *tech_pvt, const char *data)
{
int at_result = AT_ERROR;
@ -1962,8 +1946,7 @@ int gsmopen_serial_write_AT_ack(private_t * tech_pvt, const char *data)
UNLOCKA(tech_pvt->controldev_lock);
return -1;
}
//cicopet at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, 2, NULL, 1); // 2.5 sec timeout
//cicopet at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, 2, NULL, 1); // 2.5 sec timeout
at_result = gsmopen_serial_read_AT(tech_pvt, 1, 100000, 0, NULL, 1); // 1/10th sec timeout
UNLOCKA(tech_pvt->controldev_lock);
POPPA_UNLOCKA(tech_pvt->controldev_lock);
@ -1972,7 +1955,7 @@ int gsmopen_serial_write_AT_ack(private_t * tech_pvt, const char *data)
}
int gsmopen_serial_write_AT_ack_nocr_longtime(private_t * tech_pvt, const char *data)
int gsmopen_serial_write_AT_ack_nocr_longtime(private_t *tech_pvt, const char *data)
{
int at_result = AT_ERROR;
@ -1994,7 +1977,7 @@ int gsmopen_serial_write_AT_ack_nocr_longtime(private_t * tech_pvt, const char *
}
int gsmopen_serial_write_AT_expect1(private_t * tech_pvt, const char *data, const char *expected_string, int expect_crlf, int seconds)
int gsmopen_serial_write_AT_expect1(private_t *tech_pvt, const char *data, const char *expected_string, int expect_crlf, int seconds)
{
int at_result = AT_ERROR;
@ -2016,7 +1999,7 @@ int gsmopen_serial_write_AT_expect1(private_t * tech_pvt, const char *data, cons
}
int gsmopen_serial_AT_expect(private_t * tech_pvt, const char *expected_string, int expect_crlf, int seconds)
int gsmopen_serial_AT_expect(private_t *tech_pvt, const char *expected_string, int expect_crlf, int seconds)
{
int at_result = AT_ERROR;
@ -2025,7 +2008,7 @@ int gsmopen_serial_AT_expect(private_t * tech_pvt, const char *expected_string,
if (option_debug > 1)
DEBUGA_GSMOPEN("expecting: %s\n", GSMOPEN_P_LOG, expected_string);
//cicopet at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, seconds, expected_string, expect_crlf); // 20.5 sec timeout, used for querying the SIM and sending SMSs
//cicopet at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, seconds, expected_string, expect_crlf); // 20.5 sec timeout, used for querying the SIM and sending SMSs
at_result = gsmopen_serial_read_AT(tech_pvt, 1, 100000, seconds, expected_string, expect_crlf); // minimum 1/10th sec timeout
UNLOCKA(tech_pvt->controldev_lock);
POPPA_UNLOCKA(tech_pvt->controldev_lock);
@ -2034,7 +2017,7 @@ int gsmopen_serial_AT_expect(private_t * tech_pvt, const char *expected_string,
}
int gsmopen_serial_answer(private_t * tech_pvt)
int gsmopen_serial_answer(private_t *tech_pvt)
{
if (tech_pvt->controldevprotocol == PROTOCOL_AT)
return gsmopen_serial_answer_AT(tech_pvt);
@ -2049,8 +2032,7 @@ int gsmopen_serial_answer(private_t * tech_pvt)
return -1;
}
int gsmopen_serial_answer_AT(private_t * tech_pvt)
int gsmopen_serial_answer_AT(private_t *tech_pvt)
{
int res;
@ -2073,7 +2055,7 @@ int gsmopen_serial_answer_AT(private_t * tech_pvt)
return 0;
}
int gsmopen_serial_hangup(private_t * tech_pvt)
int gsmopen_serial_hangup(private_t *tech_pvt)
{
if (tech_pvt->controldevprotocol == PROTOCOL_AT)
return gsmopen_serial_hangup_AT(tech_pvt);
@ -2088,8 +2070,7 @@ int gsmopen_serial_hangup(private_t * tech_pvt)
return -1;
}
int gsmopen_serial_hangup_AT(private_t * tech_pvt)
int gsmopen_serial_hangup_AT(private_t *tech_pvt)
{
int res;
@ -2117,8 +2098,7 @@ int gsmopen_serial_hangup_AT(private_t * tech_pvt)
return 0;
}
int gsmopen_serial_call(private_t * tech_pvt, char *dstr)
int gsmopen_serial_call(private_t *tech_pvt, char *dstr)
{
if (tech_pvt->controldevprotocol == PROTOCOL_AT)
return gsmopen_serial_call_AT(tech_pvt, dstr);
@ -2135,7 +2115,7 @@ int gsmopen_serial_call(private_t * tech_pvt, char *dstr)
return -1;
}
int gsmopen_serial_call_AT(private_t * tech_pvt, char *dstr)
int gsmopen_serial_call_AT(private_t *tech_pvt, char *dstr)
{
int res;
char at_command[256];
@ -2171,7 +2151,7 @@ int gsmopen_serial_call_AT(private_t * tech_pvt, char *dstr)
return 0;
}
int ucs2_to_utf8(private_t * tech_pvt, char *ucs2_in, char *utf8_out, size_t outbytesleft)
int ucs2_to_utf8(private_t *tech_pvt, char *ucs2_in, char *utf8_out, size_t outbytesleft)
{
char converted[16000];
#ifndef WIN32
@ -2201,7 +2181,7 @@ int ucs2_to_utf8(private_t * tech_pvt, char *ucs2_in, char *utf8_out, size_t out
inbuf = converted;
iconv_format = iconv_open("UTF8", "UCS-2BE");
if (iconv_format == (iconv_t) - 1) {
if (iconv_format == (iconv_t) -1) {
ERRORA("error: %s\n", GSMOPEN_P_LOG, strerror(errno));
return -1;
}
@ -2227,7 +2207,7 @@ int ucs2_to_utf8(private_t * tech_pvt, char *ucs2_in, char *utf8_out, size_t out
return 0;
}
int iso_8859_1_to_utf8(private_t * tech_pvt, char *iso_8859_1_in, char *utf8_out, size_t outbytesleft)
int iso_8859_1_to_utf8(private_t *tech_pvt, char *iso_8859_1_in, char *utf8_out, size_t outbytesleft)
{
char converted[16000];
#ifndef WIN32
@ -2249,12 +2229,11 @@ int iso_8859_1_to_utf8(private_t * tech_pvt, char *iso_8859_1_in, char *utf8_out
inbuf = iso_8859_1_in;
iconv_format = iconv_open("UTF8", "ISO_8859-1");
if (iconv_format == (iconv_t) - 1) {
if (iconv_format == (iconv_t) -1) {
ERRORA("error: %s\n", GSMOPEN_P_LOG, strerror(errno));
return -1;
}
inbytesleft = strlen(iso_8859_1_in) * 2;
iconv_res = iconv(iconv_format, &inbuf, &inbytesleft, &outbuf, &outbytesleft);
if (iconv_res == (size_t) -1) {
@ -2267,16 +2246,13 @@ int iso_8859_1_to_utf8(private_t * tech_pvt, char *iso_8859_1_in, char *utf8_out
(" strlen(iso_8859_1_in)=%d, iconv_res=%d, inbuf=%s, inleft=%d, out=%s, outleft=%d, utf8_out=%s\n",
GSMOPEN_P_LOG, (int) strlen(iso_8859_1_in), iconv_res, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, utf8_out);
iconv_close(iconv_format);
#endif //WIN32
return 0;
}
int utf_to_ucs2(private_t * tech_pvt, char *utf_in, size_t inbytesleft, char *ucs2_out, size_t outbytesleft)
int utf_to_ucs2(private_t *tech_pvt, char *utf_in, size_t inbytesleft, char *ucs2_out, size_t outbytesleft)
{
/* cicopet */
#ifndef WIN32
@ -2295,7 +2271,7 @@ int utf_to_ucs2(private_t * tech_pvt, char *utf_in, size_t inbytesleft, char *uc
inbuf = utf_in;
iconv_format = iconv_open("UCS-2BE", "UTF8");
if (iconv_format == (iconv_t) - 1) {
if (iconv_format == (iconv_t) -1) {
ERRORA("error: %s\n", GSMOPEN_P_LOG, strerror(errno));
return -1;
}
@ -2327,10 +2303,9 @@ int utf_to_ucs2(private_t * tech_pvt, char *utf_in, size_t inbytesleft, char *uc
return 0;
}
/*! \brief Answer incoming call,
* Part of PBX interface */
int gsmopen_answer(private_t * tech_pvt)
int gsmopen_answer(private_t *tech_pvt)
{
int res;
@ -2351,7 +2326,7 @@ int gsmopen_answer(private_t * tech_pvt)
tech_pvt->phone_callflow = CALLFLOW_CALL_ACTIVE;
while (tech_pvt->interface_state == GSMOPEN_STATE_RING) {
gsmopen_sleep(10000); //10msec
gsmopen_sleep(10000); //10msec
}
if (tech_pvt->interface_state != GSMOPEN_STATE_UP) {
ERRORA("call answering failed\n", GSMOPEN_P_LOG);
@ -2376,7 +2351,7 @@ int gsmopen_answer(private_t * tech_pvt)
return res;
}
int gsmopen_ring(private_t * tech_pvt)
int gsmopen_ring(private_t *tech_pvt)
{
int res = 0;
switch_core_session_t *session = NULL;
@ -2412,18 +2387,16 @@ int gsmopen_ring(private_t * tech_pvt)
}
if (option_debug) {
DEBUGA_PBX("EXITING FUNC\n", GSMOPEN_P_LOG);
}
return res;
}
/*! \brief Hangup gsmopen call
* Part of PBX interface, called from ast_hangup */
int gsmopen_hangup(private_t * tech_pvt)
int gsmopen_hangup(private_t *tech_pvt)
{
/* if there is not gsmopen pvt why we are here ? */
@ -2434,7 +2407,6 @@ int gsmopen_hangup(private_t * tech_pvt)
DEBUGA_GSMOPEN("ENTERING FUNC\n", GSMOPEN_P_LOG);
if (tech_pvt->controldevprotocol != PROTOCOL_NO_SERIAL) {
if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN) {
/* actually hangup through the serial port */
@ -2472,8 +2444,6 @@ int gsmopen_hangup(private_t * tech_pvt)
return 0;
}
#ifdef GSMOPEN_ALSA
/*! \brief ALSA pcm format, according to endianess */
#if __BYTE_ORDER == __LITTLE_ENDIAN
@ -2490,7 +2460,7 @@ snd_pcm_format_t gsmopen_format = SND_PCM_FORMAT_S16_BE;
*
* \return zero on success, -1 on error.
*/
int alsa_init(private_t * tech_pvt)
int alsa_init(private_t *tech_pvt)
{
tech_pvt->alsac = alsa_open_dev(tech_pvt, SND_PCM_STREAM_CAPTURE);
if (!tech_pvt->alsac) {
@ -2525,7 +2495,7 @@ int alsa_init(private_t * tech_pvt)
* \return zero on success, -1 on error.
*/
int alsa_shutdown(private_t * tech_pvt)
int alsa_shutdown(private_t *tech_pvt)
{
int err;
@ -2569,7 +2539,7 @@ int alsa_shutdown(private_t * tech_pvt)
*
* \return zero on success, -1 on error.
*/
snd_pcm_t *alsa_open_dev(private_t * tech_pvt, snd_pcm_stream_t stream)
snd_pcm_t *alsa_open_dev(private_t *tech_pvt, snd_pcm_stream_t stream)
{
snd_pcm_t *handle = NULL;
@ -2825,7 +2795,7 @@ snd_pcm_t *alsa_open_dev(private_t * tech_pvt, snd_pcm_stream_t stream)
/*! \brief Write audio frames to interface */
#endif /* GSMOPEN_ALSA */
int gsmopen_call(private_t * tech_pvt, char *rdest, int timeout)
int gsmopen_call(private_t *tech_pvt, char *rdest, int timeout)
{
//gsmopen_sleep(5000);
@ -2842,8 +2812,7 @@ int gsmopen_call(private_t * tech_pvt, char *rdest, int timeout)
return 0;
}
int gsmopen_senddigit(private_t * tech_pvt, char digit)
int gsmopen_senddigit(private_t *tech_pvt, char digit)
{
DEBUGA_GSMOPEN("DIGIT received: %c\n", GSMOPEN_P_LOG, digit);
@ -2864,7 +2833,7 @@ int gsmopen_senddigit(private_t * tech_pvt, char digit)
#ifdef GSMOPEN_ALSA
/*! \brief Write audio frames to interface */
int alsa_write(private_t * tech_pvt, short *data, int datalen)
int alsa_write(private_t *tech_pvt, short *data, int datalen)
{
static char sizbuf[8000];
static char sizbuf2[16000];
@ -2876,14 +2845,13 @@ int alsa_write(private_t * tech_pvt, short *data, int datalen)
time_t now_timestamp;
/* size_t frames = 0; */
snd_pcm_state_t state;
snd_pcm_sframes_t delayp1=0;
snd_pcm_sframes_t delayp2=0;
snd_pcm_sframes_t delayp1 = 0;
snd_pcm_sframes_t delayp2 = 0;
if(tech_pvt->no_sound==1){
if (tech_pvt->no_sound == 1) {
return res;
}
memset(sizbuf, 255, sizeof(sizbuf));
memset(sizbuf2, 255, sizeof(sizbuf));
memset(silencebuf, 255, sizeof(sizbuf));
@ -2899,7 +2867,6 @@ int alsa_write(private_t * tech_pvt, short *data, int datalen)
len += datalen;
pos = 0;
#ifdef ALSA_MONITOR
alsa_monitor_write(sizbuf, len);
#endif
@ -3086,7 +3053,7 @@ int alsa_write(private_t * tech_pvt, short *data, int datalen)
}
#define AST_FRIENDLY_OFFSET 0
int alsa_read(private_t * tech_pvt, short *data, int datalen)
int alsa_read(private_t *tech_pvt, short *data, int datalen)
{
//static struct ast_frame f;
static short __buf[GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2];
@ -3105,15 +3072,12 @@ int alsa_read(private_t * tech_pvt, short *data, int datalen)
//DEBUGA_GSMOPEN("buf=%p, datalen=%d, left=%d\n", GSMOPEN_P_LOG, (void *)buf, datalen, left);
//memset(&f, 0, sizeof(struct ast_frame)); //giova
if(tech_pvt->no_sound==1){
if (tech_pvt->no_sound == 1) {
return r;
}
left = datalen;
state = snd_pcm_state(tech_pvt->alsac);
if (state != SND_PCM_STATE_RUNNING) {
DEBUGA_GSMOPEN("ALSA read state is not SND_PCM_STATE_RUNNING\n", GSMOPEN_P_LOG);
@ -3164,7 +3128,7 @@ int alsa_read(private_t * tech_pvt, short *data, int datalen)
return r;
} else if (r == -EAGAIN) {
int count=0;
int count = 0;
while (r == -EAGAIN) {
gsmopen_sleep(10000);
DEBUGA_GSMOPEN("%d ALSA read -EAGAIN, the soundcard is not ready to be read by gsmopen\n", GSMOPEN_P_LOG, count);
@ -3210,11 +3174,7 @@ int alsa_read(private_t * tech_pvt, short *data, int datalen)
#endif // GSMOPEN_ALSA
int gsmopen_sendsms(private_t * tech_pvt, char *dest, char *text)
int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text)
{
//char *idest = data;
//char rdest[256];
@ -3251,7 +3211,6 @@ int gsmopen_sendsms(private_t * tech_pvt, char *dest, char *text)
ERRORA("AT+CMGF=1 (set message sending to TEXT (as opposed to PDU) do not got OK from the phone\n", GSMOPEN_P_LOG);
}
if (tech_pvt->no_ucs2) {
sprintf(smscommand, "AT+CMGS=\"%s\"", dest); //TODO: support phones that only accept pdu mode
} else {
@ -3268,7 +3227,7 @@ int gsmopen_sendsms(private_t * tech_pvt, char *dest, char *text)
}
//TODO: support phones that only accept pdu mode
//TODO would be better to lock controldev here
//sprintf(smscommand, "AT+CMGS=\"%s\"", dest); //FIXME: nokia e63 want this
//sprintf(smscommand, "AT+CMGS=\"%s\"", dest); //FIXME: nokia e63 want this
err = gsmopen_serial_write_AT_noack(tech_pvt, smscommand);
if (err) {
ERRORA("Error sending SMS\n", GSMOPEN_P_LOG);
@ -3368,7 +3327,6 @@ int gsmopen_sendsms(private_t * tech_pvt, char *dest, char *text)
DEBUGA_GSMOPEN("AT+CMGF=0 (set message sending to PDU (as opposed to TEXT) do not got OK from the phone, continuing\n", GSMOPEN_P_LOG);
}
DEBUGA_GSMOPEN("FINISH\n", GSMOPEN_P_LOG);
if (failed)
return -1;
@ -3404,7 +3362,7 @@ void gsmopen_store_boost(char *s, double *boost)
*boost = BOOST_MAX;
}
#ifdef WIN32
*boost = exp(log ((double)10) * *boost / 20) * BOOST_SCALE;
*boost = exp(log((double) 10) * *boost / 20) * BOOST_SCALE;
#else
*boost = exp(log(10) * *boost / 20) * BOOST_SCALE;
#endif //WIN32
@ -3412,11 +3370,10 @@ void gsmopen_store_boost(char *s, double *boost)
DEBUGA_GSMOPEN("setting boost %s to %f\n", GSMOPEN_P_LOG, s, *boost);
}
int gsmopen_sound_boost(void *data, int samples_num, double boost)
{
/* LUIGI RIZZO's magic */
if (boost != 0 && (boost < 511 || boost > 513)) { /* scale and clip values */
if (boost != 0 && (boost < 511 || boost > 513)) { /* scale and clip values */
int i, x;
int16_t *ptr = (int16_t *) data;
@ -3437,8 +3394,7 @@ int gsmopen_sound_boost(void *data, int samples_num, double boost)
return 0;
}
int gsmopen_serial_getstatus_AT(private_t * tech_pvt)
int gsmopen_serial_getstatus_AT(private_t *tech_pvt)
{
int res;
private_t *p = tech_pvt;
@ -3452,7 +3408,6 @@ int gsmopen_serial_getstatus_AT(private_t * tech_pvt)
}
#endif
PUSHA_UNLOCKA(p->controldev_lock);
LOKKA(p->controldev_lock);
res = gsmopen_serial_write_AT_ack(p, "AT");
@ -3484,7 +3439,6 @@ int gsmopen_serial_getstatus_AT(private_t * tech_pvt)
}
gsmopen_sleep(1000);
}
//FIXME all the following commands in config!
if (p->sms_cnmi_not_supported) {
@ -3587,13 +3541,12 @@ int gsmopen_serial_getstatus_AT(private_t * tech_pvt)
return 0;
}
int gsmopen_serial_init_audio_port(private_t * tech_pvt, int controldevice_audio_speed)
int gsmopen_serial_init_audio_port(private_t *tech_pvt, int controldevice_audio_speed)
{
tech_pvt->serialPort_serial_audio = new ctb::SerialPort();
//if( tech_pvt->serialPort_serial_audio->Open( "COM8", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) {
if( tech_pvt->serialPort_serial_audio->Open( "/dev/ttyUSB2", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) {
if (tech_pvt->serialPort_serial_audio->Open("/dev/ttyUSB2", 115200, "8N1", ctb::SerialPort::NoFlowControl) >= 0) {
ERRORA("port SUCCESS open\n", GSMOPEN_P_LOG);
} else {
ERRORA("port NOT open\n", GSMOPEN_P_LOG);
@ -3602,22 +3555,23 @@ int gsmopen_serial_init_audio_port(private_t * tech_pvt, int controldevice_audio
return 0;
}
int serial_audio_init(private_t * tech_pvt)
int serial_audio_init(private_t *tech_pvt)
{
int res;
int err;
res=gsmopen_serial_init_audio_port(tech_pvt, tech_pvt->controldevice_audio_speed);
res = gsmopen_serial_init_audio_port(tech_pvt, tech_pvt->controldevice_audio_speed);
ERRORA("serial_audio_init res=%d\n", GSMOPEN_P_LOG, res);
if(res == 0)
err=0;
if (res == 0)
err = 0;
else
err=1;
err = 1;
return err;
}
int serial_audio_shutdown(private_t * tech_pvt)
int serial_audio_shutdown(private_t *tech_pvt)
{
int res;
@ -3629,4 +3583,3 @@ int serial_audio_shutdown(private_t * tech_pvt)
return err;
}

File diff suppressed because it is too large Load Diff