Index: phoneserver-1.0/config.h =================================================================== --- phoneserver-1.0.orig/config.h 2007-02-12 12:15:42.000000000 +0100 +++ phoneserver-1.0/config.h 2007-02-12 12:15:48.000000000 +0100 @@ -22,7 +22,7 @@ /* serial port name */ #ifndef SERIAL_PORT //#define SERIAL_PORT "/dev/pts/0" //ttyS1" -#define SERIAL_PORT "/dev/ttyS0" //ttyS1" +#define SERIAL_PORT "/dev/ttyS1" //ttyS1" #endif /* */ /* serial port baudrate */ Index: phoneserver-1.0/tapi.c =================================================================== --- phoneserver-1.0.orig/tapi.c 2007-02-12 12:20:35.000000000 +0100 +++ phoneserver-1.0/tapi.c 2007-02-12 14:15:04.000000000 +0100 @@ -124,6 +124,7 @@ tel_err_t tapi_Init_SetSMSFormat (); tel_err_t tapi_Init_SetCPBS (); tel_err_t tapi_Init_SetCRC (); +tel_err_t tapi_Init_SetCPRIM (); tel_err_t tapi_Init_SetCREG (); tel_err_t tapi_Init_SetCNMI (); tel_err_t tapi_Init_SetCPMS (); @@ -289,12 +290,23 @@ static init_function init_func_table[] = { tapi_Init_SoftReset, tapi_Init_SetNoEcho, +// S0=0;Q0;V0 +// X3;&C1;+CR=1;+CMOD=0;+FCLASS=0;+CSSN=0,1;+CCWA=1;+CMGF=0 tapi_Init_SetCharset, tapi_Init_SetExtendedError, tapi_Init_SetCRC, +#ifdef MAGICIAN_PLATFORM +// AT+CGREG=1 +// AT+CUSD=1 +// AT+CMUT=0 +// AT%HTCCSQ=1 + tapi_Init_SetCPRIM, +#endif tapi_Init_SetCREG, tapi_Init_SetCLIP, +#ifndef MAGICIAN_PLATFORM tapi_Init_SetCMER, +#endif tapi_Init_SetCCWA, tapi_Init_SetSMSFormat, // tapi_Init_SetCPBS, @@ -522,6 +534,10 @@ CommandStr = AT_Builder_SetCmd ((Int8 *) CMD_CSCS, (Int8 *) "\"UCS2\"", (Int8 *) NULL); #endif +#ifdef MAGICIAN_PLATFORM + CommandStr = + AT_Builder_SetCmd ((Int8 *) CMD_CSCS, (Int8 *) "\"HEX\"", (Int8 *) NULL); +#endif result = tapi_init_general (CommandStr); return result; } @@ -559,6 +575,24 @@ } /** + *Initialize procedure -- Set HTC specific CPRIM parameter. + */ +tel_err_t +tapi_Init_SetCPRIM () +{ + tel_err_t result; + Int8 *CommandStr; + + /* AT%CPRIM="GMM","CONFIG MULTISLOT_CLASS=<10>" */ + CommandStr = + AT_Builder_SetCmd ((Int8 *) "%CPRIM", (Int8 *) "\"GMM\"", + (Int8 *) "\"CONFIG MULTISLOT_CLASS=<10>\"", (Int8 *) NULL); + result = tapi_init_general (CommandStr); + return result; + +} + +/** *Initialize procedure -- Set Network status code presentation. */ tel_err_t @@ -688,10 +722,16 @@ AT_Builder_SetCmd ((Int8 *) CMD_CNMI, (Int8 *) "2", (Int8 *) "1", (Int8 *) "0", (Int8 *) "1", (Int8 *) "0", (Int8 *) NULL); #else +#ifdef MAGICIAN_PLATFORM + CommandStr = + AT_Builder_SetCmd ((Int8 *) CMD_CNMI, (Int8 *) "2", (Int8 *) "2", + (Int8 *) "2", (Int8 *) "1", (Int8 *) "0", (Int8 *) NULL); +#else CommandStr = AT_Builder_SetCmd ((Int8 *) CMD_CNMI, (Int8 *) "3", (Int8 *) "1", (Int8 *) "0", (Int8 *) "0", (Int8 *) "0", (Int8 *) NULL); #endif +#endif result = tapi_init_general (CommandStr); return result; } @@ -1054,6 +1094,50 @@ g_total_tapi += n_read; } */ + /* remove 0x2 (0x2) 0x16 [data] 0x2 frames */ + if (n_read > 0) + { + Int8 *src = g_inbuf_tapi + g_total_tapi; + Int8 *end = src + n_read; + Int8 *dst = src; + n_read = 0; + while (src < end) + { + /* strip initial 0x02's */ + while (src < end) + { + if (*src != 0x2) + break; + src++; + } + /* only consider AT channel (0x16) */ + if (*src == 0x16) + { + /* read until frame end (0x02) */ + src++; + while (src < end) + { + if (*src == 0x2) + break; + *dst = *src; + dst++; n_read++; + src++; + } + } + else + { + /* ignore until frame end (0x02) */ + src++; + while (src < end) + { + if (*src == 0x2) + break; + src++; + } + } + /* next packet */ + } + } if (n_read > 0) { g_total_tapi += n_read; @@ -2869,9 +2953,17 @@ xwrite (Int8 *d, UInt32 len) { UInt32 res; - + static Int8 frame[2] = { 0x2, 0x16 }; at_dprintf ("write: ", d, len); + while ((res = serial_write (g_fd, frame, 2, -1)) == -1) + { + if (errno != EAGAIN) + { + perror ("gnokii I/O error "); + return -1; + } + } while (len) { res = serial_write (g_fd, d, len, -1); @@ -2890,6 +2982,14 @@ len -= res; } } + while ((res = serial_write (g_fd, frame, 1, -1)) == -1) + { + if (errno != EAGAIN) + { + perror ("gnokii I/O error "); + return -1; + } + } return 0; } @@ -3029,9 +3129,11 @@ #ifndef T39_PLATFORM #ifndef CELLON_PLATFORM +#ifndef MAGICIAN_PLATFORM g_print ("Please define platform\n"); #endif #endif +#endif g_fd = serial_opendevice (SERIAL_PORT, FALSE, FALSE); if (g_fd == -1) { @@ -3046,6 +3148,11 @@ tel_ctx.cur_resp.cmd = g_ptr_array_new (); isFree = TRUE; +#ifdef MAGICIAN_PLATFORM + /* wait for "AT-Command Interpreter ready" */ + AT_GetResponse_Handler (); +#endif + /* send register commands */ memset (g_inbuf_tapi, 0, ATCOMMAND_BUFFER_SIZE); Index: phoneserver-1.0/Makefile.am =================================================================== --- phoneserver-1.0.orig/Makefile.am 2007-02-12 13:42:45.000000000 +0100 +++ phoneserver-1.0/Makefile.am 2007-02-12 13:42:56.000000000 +0100 @@ -3,7 +3,7 @@ INCLUDES = @DEPS_CFLAGS@ -DPREFIX=\"@prefix@\" -D_GNU_SOURCE -Wall \ -DDBUS_API_SUBJECT_TO_CHANGE \ - -DDEBUG -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -DCELLON_PLATFORM + -DDEBUG -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -DMAGICIAN_PLATFORM LDADD = @DEPS_LIBS@ @@ -15,4 +15,4 @@ at-table.h file-lock.h phone-server-sms.h sms-phone.h types.h \ phone-server-mul.h phone-server-voc.h sms-read-configure.h util.h config.h -EXTRA_DIST = $(phoneserver_HEADER) \ No newline at end of file +EXTRA_DIST = $(phoneserver_HEADER)