From 3ffd063073b4fe33d61c74b767c93833dc5bd8e5 Mon Sep 17 00:00:00 2001 From: short <> Date: Tue, 27 Nov 2001 22:01:28 +0000 Subject: [PATCH] :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Tue Nov 27 22:58 CET 2001 --- common/data/at-emulator.c | 9 +- common/devices/unixserial.c | 340 +++++++++++++++++++++---------------------- common/gsm-sms.c | 81 ++++++----- common/links/fbus.c | 19 ++- common/phones/nk3110.c | 13 +- common/phones/nk7110.c | 12 +- gnokii/gnokii.c | 9 +- include/data/rlp-common.h | 185 +++++++++++------------ include/data/rlp-crc24.h | 9 +- include/devices/tekram.h | 21 ++- include/devices/unixserial.h | 20 ++- include/gsm-api.h | 11 +- include/gsm-sms.h | 23 +-- 13 files changed, 379 insertions(+), 373 deletions(-) diff --git a/common/data/at-emulator.c b/common/data/at-emulator.c index de23c4c..320b01b 100644 --- a/common/data/at-emulator.c +++ b/common/data/at-emulator.c @@ -15,8 +15,11 @@ kernel AT Emulator IDSN code by Fritz Elfert and others. $Log$ - Revision 1.1.1.1 2001/11/25 21:59:07 short - :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001 + Revision 1.1.1.2 2001/11/27 22:01:13 short + :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Tue Nov 27 22:58 CET 2001 + + Revision 1.6 2001/11/27 12:19:01 pkot + Cleanup, indentation, ANSI complaint preprocesor symbols (Jan Kratochvil, me) Revision 1.5 2001/11/08 16:34:19 pkot Updates to work with new libsms @@ -48,7 +51,7 @@ #ifndef WIN32 - #include +# include #endif diff --git a/common/devices/unixserial.c b/common/devices/unixserial.c index 5186465..e9dcb17 100644 --- a/common/devices/unixserial.c +++ b/common/devices/unixserial.c @@ -11,8 +11,11 @@ Released under the terms of the GNU GPL, see file COPYING for more details. $Log$ - Revision 1.1.1.1 2001/11/25 21:59:09 short - :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001 + Revision 1.1.1.2 2001/11/27 22:01:15 short + :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Tue Nov 27 22:58 CET 2001 + + Revision 1.11 2001/11/27 12:19:01 pkot + Cleanup, indentation, ANSI complaint preprocesor symbols (Jan Kratochvil, me) Revision 1.10 2001/11/14 10:46:12 pkot Small cleanup with __unices__ @@ -59,238 +62,233 @@ #include "devices/unixserial.h" #ifdef HAVE_SYS_IOCTL_COMPAT_H - #include +# include #endif #ifdef HAVE_SYS_SELECT_H -#include +# include #endif /* If the target operating system does not have cfsetspeed, we can emulate it. */ #ifndef HAVE_CFSETSPEED - #if defined(HAVE_CFSETISPEED) && defined(HAVE_CFSETOSPEED) - #define cfsetspeed(t, speed) \ - (cfsetispeed(t, speed) || cfsetospeed(t, speed)) - #else - static int cfsetspeed(struct termios *t, int speed) { - #ifdef HAVE_TERMIOS_CSPEED - t->c_ispeed = speed; - t->c_ospeed = speed; - #else - t->c_cflag |= speed; - #endif - return 0; - } - #endif -#endif +# if defined(HAVE_CFSETISPEED) && defined(HAVE_CFSETOSPEED) +# define cfsetspeed(t, speed) \ + (cfsetispeed(t, speed) || cfsetospeed(t, speed)) +# else +static int cfsetspeed(struct termios *t, int speed) +{ +# ifdef HAVE_TERMIOS_CSPEED + t->c_ispeed = speed; + t->c_ospeed = speed; +# else + t->c_cflag |= speed; +# endif /* HAVE_TERMIOS_CSPEED */ + return 0; +} +# endif /* HAVE_CFSETISPEED && HAVE_CFSETOSPEED */ +#endif /* HAVE_CFSETSPEED */ #ifndef O_NONBLOCK - #define O_NONBLOCK 0 +# define O_NONBLOCK 0 #endif /* Structure to backup the setting of the terminal. */ - struct termios serial_termios; /* Open the serial port and store the settings. */ - -int serial_open(__const char *__file, int __oflag) { - - int __fd; - int retcode; - - __fd = open(__file, __oflag); - if (__fd == -1) { - perror("Gnokii serial_open: open"); - return (-1); - } - - retcode=tcgetattr(__fd, &serial_termios); - if(retcode==-1) { - perror("Gnokii serial_open:tcgetattr"); - /* Don't call serial_close since serial_termios is not valid */ - close(__fd); - return(-1); - } - - return __fd; +int serial_open(__const char *__file, int __oflag) +{ + int __fd; + int retcode; + + __fd = open(__file, __oflag); + if (__fd == -1) { + perror("Gnokii serial_open: open"); + return (-1); + } + + retcode = tcgetattr(__fd, &serial_termios); + if (retcode == -1) { + perror("Gnokii serial_open:tcgetattr"); + /* Don't call serial_close since serial_termios is not valid */ + close(__fd); + return (-1); + } + + return __fd; } /* Close the serial port and restore old settings. */ +int serial_close(int __fd) +{ + if (__fd >= 0) + tcsetattr(__fd, TCSANOW, &serial_termios); -int serial_close(int __fd) { - - if (__fd >= 0) - tcsetattr(__fd, TCSANOW, &serial_termios); - - return (close(__fd)); + return (close(__fd)); } /* Open a device with standard options. */ +int serial_opendevice(__const char *__file, int __with_odd_parity, + int __with_async, int __with_hw_handshake) +{ + int fd; + int retcode; + struct termios tp; -int serial_opendevice(__const char *__file, int __with_odd_parity, int __with_async, int __with_hw_handshake) { - - int fd; - int retcode; - struct termios tp; - - /* Open device */ - - fd = serial_open(__file, O_RDWR | O_NOCTTY | O_NONBLOCK); + /* Open device */ + fd = serial_open(__file, O_RDWR | O_NOCTTY | O_NONBLOCK); - if (fd < 0) - return fd; - - /* Allow process/thread to receive SIGIO */ + if (fd < 0) return fd; + /* Allow process/thread to receive SIGIO */ #if !(__unices__) - retcode = fcntl(fd, F_SETOWN, getpid()); - if (retcode == -1){ - perror("Gnokii serial_opendevice: fnctl(F_SETOWN)"); - serial_close(fd); - return(-1); - } + retcode = fcntl(fd, F_SETOWN, getpid()); + if (retcode == -1) { + perror("Gnokii serial_opendevice: fnctl(F_SETOWN)"); + serial_close(fd); + return (-1); + } #endif - /* Make filedescriptor asynchronous. */ - - if (__with_async) { - retcode=fcntl(fd, F_SETFL, FASYNC); - if (retcode == -1){ - perror("Gnokii serial_opendevice: fnctl(F_SETFL)"); - serial_close(fd); - return(-1); - } - } - - /* Initialise the port settings */ - - memcpy(&tp, &serial_termios, sizeof(struct termios)); - - /* Set port settings for canonical input processing */ - - tp.c_cflag = B0 | CS8 | CLOCAL | CREAD; - if (__with_odd_parity) { - tp.c_cflag |= (PARENB | PARODD); - tp.c_iflag = 0; - } - else - tp.c_iflag = IGNPAR; - if (__with_hw_handshake) - tp.c_cflag |= CRTSCTS; - else - tp.c_cflag &= ~CRTSCTS; - - tp.c_oflag = 0; - tp.c_lflag = 0; - tp.c_cc[VMIN] = 1; - tp.c_cc[VTIME] = 0; - - retcode=tcflush(fd, TCIFLUSH); - if (retcode == -1) { - perror("Gnokii serial_opendevice: tcflush"); - serial_close(fd); - return(-1); - } - - retcode=tcsetattr(fd, TCSANOW, &tp); - if (retcode == -1){ - perror("Gnokii serial_opendevice: tcsetattr"); - serial_close(fd); - return(-1); - } - - return fd; + /* Make filedescriptor asynchronous. */ + if (__with_async) { + retcode = fcntl(fd, F_SETFL, FASYNC); + if (retcode == -1) { + perror("Gnokii serial_opendevice: fnctl(F_SETFL)"); + serial_close(fd); + return (-1); + } + } + + /* Initialise the port settings */ + memcpy(&tp, &serial_termios, sizeof(struct termios)); + + /* Set port settings for canonical input processing */ + tp.c_cflag = B0 | CS8 | CLOCAL | CREAD; + if (__with_odd_parity) { + tp.c_cflag |= (PARENB | PARODD); + tp.c_iflag = 0; + } else + tp.c_iflag = IGNPAR; + if (__with_hw_handshake) + tp.c_cflag |= CRTSCTS; + else + tp.c_cflag &= ~CRTSCTS; + + tp.c_oflag = 0; + tp.c_lflag = 0; + tp.c_cc[VMIN] = 1; + tp.c_cc[VTIME] = 0; + + retcode = tcflush(fd, TCIFLUSH); + if (retcode == -1) { + perror("Gnokii serial_opendevice: tcflush"); + serial_close(fd); + return (-1); + } + + retcode = tcsetattr(fd, TCSANOW, &tp); + if (retcode == -1) { + perror("Gnokii serial_opendevice: tcsetattr"); + serial_close(fd); + return (-1); + } + + return fd; } /* Set the DTR and RTS bit of the serial device. */ +void serial_setdtrrts(int __fd, int __dtr, int __rts) +{ + unsigned int flags; -void serial_setdtrrts(int __fd, int __dtr, int __rts) { - - unsigned int flags; + flags = TIOCM_DTR; - flags = TIOCM_DTR; + if (__dtr) + ioctl(__fd, TIOCMBIS, &flags); + else + ioctl(__fd, TIOCMBIC, &flags); - if (__dtr) - ioctl(__fd, TIOCMBIS, &flags); - else - ioctl(__fd, TIOCMBIC, &flags); + flags = TIOCM_RTS; - flags = TIOCM_RTS; - - if (__rts) - ioctl(__fd, TIOCMBIS, &flags); - else - ioctl(__fd, TIOCMBIC, &flags); + if (__rts) + ioctl(__fd, TIOCMBIS, &flags); + else + ioctl(__fd, TIOCMBIC, &flags); } -int serial_select(int fd, struct timeval *timeout) { - - fd_set readfds; - - FD_ZERO(&readfds); - FD_SET(fd, &readfds); +int serial_select(int fd, struct timeval *timeout) +{ + fd_set readfds; - return (select(fd + 1, &readfds, NULL, NULL, timeout)); + FD_ZERO(&readfds); + FD_SET(fd, &readfds); + return (select(fd + 1, &readfds, NULL, NULL, timeout)); } /* Change the speed of the serial device. */ - -void serial_changespeed(int __fd, int __speed) { - +void serial_changespeed(int __fd, int __speed) +{ #ifndef SGTTY - struct termios t; + struct termios t; #else - struct sgttyb t; + struct sgttyb t; #endif - - int speed=B9600; - - switch (__speed) { - case 9600: speed = B9600; break; - case 19200: speed = B19200; break; - case 38400: speed = B38400; break; - case 57600: speed = B57600; break; - case 115200: speed = B115200; break; - } + int speed = B9600; + + switch (__speed) { + case 9600: + speed = B9600; + break; + case 19200: + speed = B19200; + break; + case 38400: + speed = B38400; + break; + case 57600: + speed = B57600; + break; + case 115200: + speed = B115200; + break; + } #ifndef SGTTY - tcgetattr(__fd, &t); + tcgetattr(__fd, &t); - // This is not needed! We set up the speed via cfsetspeed - // t.c_cflag &= ~CBAUD; - // t.c_cflag |= speed; - if (cfsetspeed(&t, speed) == -1) - dprintf(_("Serial port speed setting failed\n")); + // This is not needed! We set up the speed via cfsetspeed + // t.c_cflag &= ~CBAUD; + // t.c_cflag |= speed; + if (cfsetspeed(&t, speed) == -1) + dprintf(_("Serial port speed setting failed\n")); - tcsetattr(__fd, TCSADRAIN, &t); + tcsetattr(__fd, TCSADRAIN, &t); #else - ioctl(__fd, TIOCGETP, &t); + ioctl(__fd, TIOCGETP, &t); - t.sg_ispeed = speed; - t.sg_ospeed = speed; + t.sg_ispeed = speed; + t.sg_ospeed = speed; - ioctl(__fd, TIOCSETN, &t); + ioctl(__fd, TIOCSETN, &t); #endif } /* Read from serial device. */ - -size_t serial_read(int __fd, __ptr_t __buf, size_t __nbytes) { - - return (read(__fd, __buf, __nbytes)); +size_t serial_read(int __fd, __ptr_t __buf, size_t __nbytes) +{ + return (read(__fd, __buf, __nbytes)); } /* Write to serial device. */ - -size_t serial_write(int __fd, __const __ptr_t __buf, size_t __n) { - +size_t serial_write(int __fd, __const __ptr_t __buf, size_t __n) +{ return (write(__fd, __buf, __n)); } -#endif /* WIN32 */ +#endif /* WIN32 */ diff --git a/common/gsm-sms.c b/common/gsm-sms.c index 58b21bc..114643d 100644 --- a/common/gsm-sms.c +++ b/common/gsm-sms.c @@ -13,8 +13,11 @@ Library for parsing and creating Short Messages (SMS). $Log$ - Revision 1.1.1.1 2001/11/25 21:59:06 short - :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001 + Revision 1.1.1.2 2001/11/27 22:01:13 short + :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Tue Nov 27 22:58 CET 2001 + + Revision 1.14 2001/11/27 12:19:00 pkot + Cleanup, indentation, ANSI complaint preprocesor symbols (Jan Kratochvil, me) Revision 1.13 2001/11/23 22:07:44 machek Fix SMS receiving to work, again. Unfortunately, it is not possible to @@ -115,7 +118,7 @@ static int SemiOctetPack(char *Number, unsigned char *Output, SMS_NumberType typ the Type-of-Address. This field is described in the official GSM specification 03.40 version 6.1.0, section 9.1.2.5, page 33. We support only international and unknown number. */ - + *OUT++ = type; if (type == SMS_International) IN++; /* Skip '+' */ if ((type == SMS_Unknown) && (*IN == '+')) IN++; /* Optional '+' in Unknown number type */ @@ -145,12 +148,12 @@ static int SemiOctetPack(char *Number, unsigned char *Output, SMS_NumberType typ char *GetBCDNumber(u8 *Number) { - static char Buffer[20] = ""; - int length = Number[0]; /* This is the length of BCD coded number */ - int count, Digit; + static char Buffer[20] = ""; + int length = Number[0]; /* This is the length of BCD coded number */ + int count, Digit; memset(Buffer, 0, 20); - switch (Number[1]) { + switch (Number[1]) { case SMS_Alphanumeric: Unpack7BitCharacters(0, length, length, Number+2, Buffer); Buffer[length] = 0; @@ -169,45 +172,45 @@ char *GetBCDNumber(u8 *Number) Digit = Number[count+2] >> 4; if (Digit < 10) sprintf(Buffer, "%s%d", Buffer, Digit); } - break; - } - return Buffer; + break; + } + return Buffer; } static char *PrintDateTime(u8 *Number) { - static char Buffer[23] = ""; + static char Buffer[23] = ""; memset(Buffer, 0, 23); if (Number[0] < 70) sprintf(Buffer, "20"); else sprintf(Buffer, "19"); - sprintf(Buffer, "%s%d%d-", Buffer, Number[0] & 0x0f, Number[0] >> 4); - sprintf(Buffer, "%s%d%d-", Buffer, Number[1] & 0x0f, Number[1] >> 4); - sprintf(Buffer, "%s%d%d ", Buffer, Number[2] & 0x0f, Number[2] >> 4); - sprintf(Buffer, "%s%d%d:", Buffer, Number[3] & 0x0f, Number[3] >> 4); - sprintf(Buffer, "%s%d%d:", Buffer, Number[4] & 0x0f, Number[4] >> 4); - sprintf(Buffer, "%s%d%d", Buffer, Number[5] & 0x0f, Number[5] >> 4); + sprintf(Buffer, "%s%d%d-", Buffer, Number[0] & 0x0f, Number[0] >> 4); + sprintf(Buffer, "%s%d%d-", Buffer, Number[1] & 0x0f, Number[1] >> 4); + sprintf(Buffer, "%s%d%d ", Buffer, Number[2] & 0x0f, Number[2] >> 4); + sprintf(Buffer, "%s%d%d:", Buffer, Number[3] & 0x0f, Number[3] >> 4); + sprintf(Buffer, "%s%d%d:", Buffer, Number[4] & 0x0f, Number[4] >> 4); + sprintf(Buffer, "%s%d%d", Buffer, Number[5] & 0x0f, Number[5] >> 4); if (Number[6] & 0x08) sprintf(Buffer, "%s-", Buffer); else sprintf(Buffer, "%s+", Buffer); sprintf(Buffer, "%s%02d00", Buffer, (10 * (Number[6] & 0x07) + (Number[6] >> 4)) / 4); - return Buffer; + return Buffer; } SMS_DateTime *UnpackDateTime(u8 *Number, SMS_DateTime *dt) { - dt->Year = 10 * (Number[0] & 0x0f) + (Number[0] >> 4); + dt->Year = 10 * (Number[0] & 0x0f) + (Number[0] >> 4); if (dt->Year < 70) dt->Year += 2000; else dt->Year += 1900; - dt->Month = 10 * (Number[1] & 0x0f) + (Number[1] >> 4); - dt->Day = 10 * (Number[2] & 0x0f) + (Number[2] >> 4); - dt->Hour = 10 * (Number[3] & 0x0f) + (Number[3] >> 4); - dt->Minute = 10 * (Number[4] & 0x0f) + (Number[4] >> 4); - dt->Second = 10 * (Number[5] & 0x0f) + (Number[5] >> 4); - dt->Timezone = (10 * (Number[6] & 0x07) + (Number[6] >> 4)) / 4; - if (Number[6] & 0x08) dt->Timezone = -dt->Timezone; + dt->Month = 10 * (Number[1] & 0x0f) + (Number[1] >> 4); + dt->Day = 10 * (Number[2] & 0x0f) + (Number[2] >> 4); + dt->Hour = 10 * (Number[3] & 0x0f) + (Number[3] >> 4); + dt->Minute = 10 * (Number[4] & 0x0f) + (Number[4] >> 4); + dt->Second = 10 * (Number[5] & 0x0f) + (Number[5] >> 4); + dt->Timezone = (10 * (Number[6] & 0x07) + (Number[6] >> 4)) / 4; + if (Number[6] & 0x08) dt->Timezone = -dt->Timezone; return dt; } @@ -675,7 +678,7 @@ static GSM_Error DecodeUDH(char *message, GSM_SMSMessage *SMS) static GSM_Error DecodeSMSHeader(unsigned char *message, GSM_SMSMessage *SMS) { /* Short Message Type */ - switch (SMS->Type = message[2]) { + switch (SMS->Type = message[2]) { case SMS_Deliver: dprintf("Mobile Terminated message:\n"); break; @@ -697,20 +700,20 @@ static GSM_Error DecodeSMSHeader(unsigned char *message, GSM_SMSMessage *SMS) dprintf("\tLocation: %d\n", SMS->Number); /* Short Message Center */ - strcpy(SMS->MessageCenter.Number, GetBCDNumber(message + 3)); - dprintf("\tSMS center number: %s\n", SMS->MessageCenter.Number); - SMS->ReplyViaSameSMSC = false; - if (SMS->RemoteNumber.number[0] == 0 && (message[6] & 0x80)) { + strcpy(SMS->MessageCenter.Number, GetBCDNumber(message + 3)); + dprintf("\tSMS center number: %s\n", SMS->MessageCenter.Number); + SMS->ReplyViaSameSMSC = false; + if (SMS->RemoteNumber.number[0] == 0 && (message[6] & 0x80)) { SMS->ReplyViaSameSMSC = true; } - /* Remote number */ - message[15+DataOffset[SMS->Type]] = ((message[15+DataOffset[SMS->Type]])+1)/2+1; - dprintf("\tRemote number (recipient or sender): %s\n", GetBCDNumber(message + 15 + DataOffset[SMS->Type])); - strcpy(SMS->RemoteNumber.number, GetBCDNumber(message + 15 + DataOffset[SMS->Type])); + /* Remote number */ + message[15+DataOffset[SMS->Type]] = ((message[15+DataOffset[SMS->Type]])+1)/2+1; + dprintf("\tRemote number (recipient or sender): %s\n", GetBCDNumber(message + 15 + DataOffset[SMS->Type])); + strcpy(SMS->RemoteNumber.number, GetBCDNumber(message + 15 + DataOffset[SMS->Type])); UnpackDateTime(message + 27 + DataOffset[SMS->Type], &(SMS->Time)); - dprintf("\tDate: %s\n", PrintDateTime(message + 27 + DataOffset[SMS->Type])); + dprintf("\tDate: %s\n", PrintDateTime(message + 27 + DataOffset[SMS->Type])); /* Message length */ SMS->Length = message[14+DataOffset[SMS->Type]]; @@ -722,7 +725,7 @@ static GSM_Error DecodeSMSHeader(unsigned char *message, GSM_SMSMessage *SMS) SMS->DCS.Type = 0; /* User Data Header */ - if (message[15] & 0x40) { /* UDH header available */ + if (message[15] & 0x40) { /* UDH header available */ dprintf("UDH found\n"); DecodeUDH(message + 34 + DataOffset[SMS->Type], SMS); } else { /* No UDH */ @@ -771,12 +774,12 @@ GSM_Error DecodePDUSMS(unsigned char *message, GSM_SMSMessage *SMS, int MessageL SMS->MessageText[SMS->Length] = 0; break; } - + return GE_NONE; } /* This function does simple SMS decoding - no PDU coding */ GSM_Error DecodeTextSMS(unsigned char *message, GSM_SMSMessage *SMS) { - return GE_NONE; + return GE_NONE; } diff --git a/common/links/fbus.c b/common/links/fbus.c index 49c1332..4b19e5f 100644 --- a/common/links/fbus.c +++ b/common/links/fbus.c @@ -17,8 +17,11 @@ The various routines are called FBUS_(whatever). $Log$ - Revision 1.1.1.1 2001/11/25 21:59:10 short - :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001 + Revision 1.1.1.2 2001/11/27 22:01:16 short + :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Tue Nov 27 22:58 CET 2001 + + Revision 1.14 2001/11/27 12:19:01 pkot + Cleanup, indentation, ANSI complaint preprocesor symbols (Jan Kratochvil, me) Revision 1.13 2001/11/17 20:14:15 pkot Nasty bug with counting message length. Workaround applied. Needs fixing. @@ -104,13 +107,13 @@ #include "links/utils.h" #ifndef WIN32 - #include "device.h" +# include "device.h" #else - #include "win32/winserial.h" - #define device_write(a, b) WriteCommBlock(a, b) - #define device_read(a, b) ReadCommBlock(a, b) - #define sleep(x) Sleep((x) * 1000) - #define usleep(x) Sleep(((x) < 1000) ? 1 : ((x) / 1000)) +# include "win32/winserial.h" +# define device_write(a, b) WriteCommBlock(a, b) +# define device_read(a, b) ReadCommBlock(a, b) +# define sleep(x) Sleep((x) * 1000) +# define usleep(x) Sleep(((x) < 1000) ? 1 : ((x) / 1000)) #endif #define __links_fbus_c diff --git a/common/phones/nk3110.c b/common/phones/nk3110.c index c798bbf..df30204 100644 --- a/common/phones/nk3110.c +++ b/common/phones/nk3110.c @@ -15,8 +15,11 @@ See README for more details on supported mobile phones. $Log$ - Revision 1.1.1.1 2001/11/25 21:59:13 short - :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001 + Revision 1.1.1.2 2001/11/27 22:01:20 short + :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Tue Nov 27 22:58 CET 2001 + + Revision 1.7 2001/11/27 12:19:01 pkot + Cleanup, indentation, ANSI complaint preprocesor symbols (Jan Kratochvil, me) Revision 1.6 2001/11/20 16:22:22 pkot First attempt to read Picture Messages. They should appear when you enable DEBUG. Nokia seems to break own standards. :/ (Markus Plail) @@ -52,10 +55,10 @@ #include "phones/nokia.h" #ifndef WIN32 - #include +# include #else - #define snprintf _snprintf - #define usleep(x) Sleep(((x) < 1000) ? 1 : ((x) / 1000)) +# define snprintf _snprintf +# define usleep(x) Sleep(((x) < 1000) ? 1 : ((x) / 1000)) #endif /* Some globals */ diff --git a/common/phones/nk7110.c b/common/phones/nk7110.c index 67fc0f1..eb6331f 100644 --- a/common/phones/nk7110.c +++ b/common/phones/nk7110.c @@ -17,8 +17,11 @@ The various routines are called P7110_(whatever). $Log$ - Revision 1.1.1.1 2001/11/25 21:59:13 short - :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001 + Revision 1.1.1.2 2001/11/27 22:01:19 short + :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Tue Nov 27 22:58 CET 2001 + + Revision 1.28 2001/11/27 12:25:01 pkot + Cleanup Revision 1.27 2001/11/22 17:56:53 pkot smslib update. sms sending @@ -904,14 +907,11 @@ static GSM_Error P7110_GetSMSFolderStatus(GSM_Data *data, GSM_Statemachine *stat static GSM_Error P7110_SendSMS(GSM_Data *data, GSM_Statemachine *state) { unsigned char req[256] = {FBUS_FRAME_HEADER, 0x01, 0x02, 0x00}; - unsigned char smsc_req[] = {FBUS_FRAME_HEADER, 0x33, 0x64, 0x00}; int length, i; if (data->SMSMessage->MessageCenter.No) { data->MessageCenter = &data->SMSMessage->MessageCenter; P7110_GetSMSCenter(data, state); -// SM_SendMessage(state, 6, 0x02, smsc_req); -// SM_Block(state, data, 0x02); } length = EncodePDUSMS(data->SMSMessage, req + 6); @@ -928,7 +928,7 @@ static GSM_Error P7110_SendSMS(GSM_Data *data, GSM_Statemachine *state) static GSM_Error P7110_IncomingSMS(int messagetype, unsigned char *message, int length, GSM_Data *data) { GSM_Error e = GE_NONE; - int digits, bytes, i; + int digits, bytes; if (!data) return GE_INTERNALERROR; diff --git a/gnokii/gnokii.c b/gnokii/gnokii.c index 64a8934..23b75eb 100644 --- a/gnokii/gnokii.c +++ b/gnokii/gnokii.c @@ -19,8 +19,11 @@ really powerful and useful :-) $Log$ - Revision 1.1.1.1 2001/11/25 21:59:18 short - :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001 + Revision 1.1.1.2 2001/11/27 22:01:25 short + :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Tue Nov 27 22:58 CET 2001 + + Revision 1.152 2001/11/27 12:23:11 pkot + Specifying SMSC number in --sendsms works again Revision 1.151 2001/11/22 17:56:53 pkot smslib update. sms sending @@ -843,6 +846,8 @@ int sendsms(int argc, char *argv[]) case '1': /* SMSC number */ SMS.MessageCenter.No = 0; strcpy(SMS.MessageCenter.Number, optarg); + if (SMS.MessageCenter.Number[0] == '+') SMS.MessageCenter.Type = SMS_International; + else SMS.MessageCenter.Type = SMS_Unknown; break; case '2': /* SMSC number index in phone memory */ SMS.MessageCenter.No = atoi(optarg); diff --git a/include/data/rlp-common.h b/include/data/rlp-common.h index 90d5771..31323eb 100644 --- a/include/data/rlp-common.h +++ b/include/data/rlp-common.h @@ -18,8 +18,11 @@ Header file for RLP protocol. $Log$ - Revision 1.1.1.1 2001/11/25 21:59:21 short - :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001 + Revision 1.1.1.2 2001/11/27 22:01:28 short + :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Tue Nov 27 22:58 CET 2001 + + Revision 1.3 2001/11/27 12:19:01 pkot + Cleanup, indentation, ANSI complaint preprocesor symbols (Jan Kratochvil, me) Revision 1.2 2001/06/10 11:29:49 machek It is very bad idea to name enum "Data", because it is then impossible @@ -27,15 +30,13 @@ Revision 1.1 2001/02/21 19:57:11 chris More fiddling with the directory layout - - */ #ifndef __data_rlp_common_h #define __data_rlp_common_h #ifndef __misc_h - #include "misc.h" +# include "misc.h" #endif /* Global variables */ @@ -45,148 +46,134 @@ /* Data types */ /* Typedef for frame type - they are the same for RLP version 0, 1 and 2. */ - typedef enum { - RLPFT_X, /* Unknown. */ - RLPFT_U, /* Unnumbered frame. */ - RLPFT_S, /* Supervisory frame. */ - RLPFT_IS /* Information plus Supervisory (I+S) frame. */ + RLPFT_X, /* Unknown. */ + RLPFT_U, /* Unnumbered frame. */ + RLPFT_S, /* Supervisory frame. */ + RLPFT_IS /* Information plus Supervisory (I+S) frame. */ } RLP_FrameType; /* Define the various Unnumbered frame types. Numbering is bit reversed relative to ETSI GSM 04.22 for easy parsing. */ - typedef enum { - RLPU_SABM = 0x07, /* Set Asynchronous Balanced Mode. */ - RLPU_UA = 0x0c, /* Unnumbered Acknowledge. */ - RLPU_DISC = 0x08, /* Disconnect. */ - RLPU_DM = 0x03, /* Disconnected Mode. */ - RLPU_NULL = 0x0f, /* Null information. */ - RLPU_UI = 0x00, /* Unnumbered Information. */ - RLPU_XID = 0x17, /* Exchange Identification. */ - RLPU_TEST = 0x1c, /* Test. */ - RLPU_REMAP = 0x11 /* Remap. */ + RLPU_SABM = 0x07, /* Set Asynchronous Balanced Mode. */ + RLPU_UA = 0x0c, /* Unnumbered Acknowledge. */ + RLPU_DISC = 0x08, /* Disconnect. */ + RLPU_DM = 0x03, /* Disconnected Mode. */ + RLPU_NULL = 0x0f, /* Null information. */ + RLPU_UI = 0x00, /* Unnumbered Information. */ + RLPU_XID = 0x17, /* Exchange Identification. */ + RLPU_TEST = 0x1c, /* Test. */ + RLPU_REMAP = 0x11 /* Remap. */ } RLP_UFrameType; /* Define supervisory frame field. */ - typedef enum { - RLPS_RR = 0x00, /* Receive Ready. */ - RLPS_REJ = 0x02, /* Reject. */ - RLPS_RNR = 0x01, /* Receive Not Ready. */ - RLPS_SREJ = 0x03 /* Selective Reject. */ + RLPS_RR = 0x00, /* Receive Ready. */ + RLPS_REJ = 0x02, /* Reject. */ + RLPS_RNR = 0x01, /* Receive Not Ready. */ + RLPS_SREJ = 0x03 /* Selective Reject. */ } RLP_SFrameField; /* Used for CurrentFrameType. */ - typedef enum { - RLPFT_U_SABM = 0x00, - RLPFT_U_UA, - RLPFT_U_DISC, - RLPFT_U_DM, - RLPFT_U_NULL, - RLPFT_U_UI, - RLPFT_U_XID, - RLPFT_U_TEST, - RLPFT_U_REMAP, - RLPFT_S_RR, - RLPFT_S_REJ, - RLPFT_S_RNR, - RLPFT_S_SREJ, - RLPFT_SI_RR, - RLPFT_SI_REJ, - RLPFT_SI_RNR, - RLPFT_SI_SREJ, - RLPFT_BAD + RLPFT_U_SABM = 0x00, + RLPFT_U_UA, + RLPFT_U_DISC, + RLPFT_U_DM, + RLPFT_U_NULL, + RLPFT_U_UI, + RLPFT_U_XID, + RLPFT_U_TEST, + RLPFT_U_REMAP, + RLPFT_S_RR, + RLPFT_S_REJ, + RLPFT_S_RNR, + RLPFT_S_SREJ, + RLPFT_SI_RR, + RLPFT_SI_REJ, + RLPFT_SI_RNR, + RLPFT_SI_SREJ, + RLPFT_BAD } RLP_FrameTypes; /* Frame definition for TCH/F9.6 frame. */ - typedef struct { - u8 Header[2]; - u8 Data[25]; - u8 FCS[3]; + u8 Header[2]; + u8 Data[25]; + u8 FCS[3]; } RLP_F96Frame; /* Header data "split up" for TCH/F9.6 frame. */ - typedef struct { - u8 Ns; /* Send sequence number. */ - u8 Nr; /* Receive sequence number. */ - u8 M; /* Unumbered frame type. */ - u8 S; /* Status. */ - bool PF; /* Poll/Final. */ - bool CR; /* Command/Response. */ - RLP_FrameType Type; /* Frame type. */ + u8 Ns; /* Send sequence number. */ + u8 Nr; /* Receive sequence number. */ + u8 M; /* Unumbered frame type. */ + u8 S; /* Status. */ + bool PF; /* Poll/Final. */ + bool CR; /* Command/Response. */ + RLP_FrameType Type; /* Frame type. */ } RLP_F96Header; /* RLP User requests */ - typedef struct { - bool Conn_Req; - bool Attach_Req; - bool Conn_Req_Neg; - bool Reset_Resp; - bool Disc_Req; + bool Conn_Req; + bool Attach_Req; + bool Conn_Req_Neg; + bool Reset_Resp; + bool Disc_Req; } RLP_UserRequestStore; typedef enum { - Conn_Req, - Attach_Req, - Conn_Req_Neg, - Reset_Resp, - Disc_Req + Conn_Req, + Attach_Req, + Conn_Req_Neg, + Reset_Resp, + Disc_Req } RLP_UserRequests; typedef enum { - Conn_Ind, - Conn_Conf, - Disc_Ind, - Reset_Ind, - Data, /* FIXME: This should really be called RLP_Data, otherwise it hogs name "Data"! */ - StatusChange, - GetData + Conn_Ind, + Conn_Conf, + Disc_Ind, + Reset_Ind, + Data, /* FIXME: This should really be called RLP_Data, otherwise it hogs name "Data"! */ + StatusChange, + GetData } RLP_UserInds; /* RLP (main) states. See GSM specification 04.22 Annex A, Section A.1.1. */ - typedef enum { - RLP_S0, /* ADM and Detached */ - RLP_S1, /* ADM and Attached */ - RLP_S2, /* Pending Connect Request */ - RLP_S3, /* Pending Connect Indication */ - RLP_S4, /* ABM and Connection Established */ - RLP_S5, /* Disconnect Initiated */ - RLP_S6, /* Pending Reset Request */ - RLP_S7, /* Pending Reset Indication */ - RLP_S8 /* Error */ + RLP_S0, /* ADM and Detached */ + RLP_S1, /* ADM and Attached */ + RLP_S2, /* Pending Connect Request */ + RLP_S3, /* Pending Connect Indication */ + RLP_S4, /* ABM and Connection Established */ + RLP_S5, /* Disconnect Initiated */ + RLP_S6, /* Pending Reset Request */ + RLP_S7, /* Pending Reset Indication */ + RLP_S8 /* Error */ } RLP_State; /* RLP specification defines several states in which variables can be. */ - typedef enum { - _idle=0, - _send, - _wait, - _rcvd, - _ackn, - _rej, - _srej + _idle=0, + _send, + _wait, + _rcvd, + _ackn, + _rej, + _srej } RLP_StateVariable; - /* RLP Data */ - typedef struct { - u8 Data[25]; - RLP_StateVariable State; + u8 Data[25]; + RLP_StateVariable State; } RLP_Data; - - /* Prototypes for functions. */ - void RLP_DisplayF96Frame(RLP_F96Frame *frame); void RLP_DecodeF96Header(RLP_F96Frame *frame, RLP_F96Header *header); void RLP_DisplayXID(u8 *frame); diff --git a/include/data/rlp-crc24.h b/include/data/rlp-crc24.h index 4c62651..121caff 100644 --- a/include/data/rlp-crc24.h +++ b/include/data/rlp-crc24.h @@ -15,8 +15,11 @@ Header file for CRC24 (aka FCS) implementation in RLP. $Log$ - Revision 1.1.1.1 2001/11/25 21:59:21 short - :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001 + Revision 1.1.1.2 2001/11/27 22:01:28 short + :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Tue Nov 27 22:58 CET 2001 + + Revision 1.2 2001/11/27 12:19:01 pkot + Cleanup, indentation, ANSI complaint preprocesor symbols (Jan Kratochvil, me) Revision 1.1 2001/02/21 19:57:11 chris More fiddling with the directory layout @@ -28,7 +31,7 @@ #define __data_rlp_crc24_h #ifndef __misc_h - #include "misc.h" +# include "misc.h" #endif /* Prototypes for functions */ diff --git a/include/devices/tekram.h b/include/devices/tekram.h index 3d16a3f..f4cf441 100644 --- a/include/devices/tekram.h +++ b/include/devices/tekram.h @@ -24,8 +24,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * $Log$ - * Revision 1.1.1.1 2001/11/25 21:59:21 short - * :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001 + * Revision 1.1.1.2 2001/11/27 22:01:28 short + * :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Tue Nov 27 22:58 CET 2001 + * + * Revision 1.2 2001/11/27 12:19:01 pkot + * Cleanup, indentation, ANSI complaint preprocesor symbols (Jan Kratochvil, me) * * Revision 1.1 2001/02/21 19:57:11 chris * More fiddling with the directory layout @@ -39,17 +42,16 @@ #define __devices_tekram_h #ifdef WIN32 - #include +# include /* FIXME: this should be solved in config.h in 0.4.0 */ - #define __const const - typedef void * __ptr_t; +# define __const const + typedef void * __ptr_t; #else - #include +# include #endif /* WIN32 */ #include "misc.h" - #define TEKRAM_B115200 0x00 #define TEKRAM_B57600 0x01 #define TEKRAM_B38400 0x02 @@ -58,7 +60,6 @@ #define TEKRAM_PW 0x10 /* Pulse select bit */ - int tekram_open(__const char *__file); void tekram_close(int __fd); @@ -71,7 +72,3 @@ size_t tekram_write(int __fd, __const __ptr_t __buf, size_t __n); int tekram_select(int fd, struct timeval *timeout); #endif /* __devices_tekram_h */ - - - - diff --git a/include/devices/unixserial.h b/include/devices/unixserial.h index 15253ef..1d098bd 100644 --- a/include/devices/unixserial.h +++ b/include/devices/unixserial.h @@ -11,8 +11,11 @@ Released under the terms of the GNU GPL, see file COPYING for more details. $Log$ - Revision 1.1.1.1 2001/11/25 21:59:21 short - :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001 + Revision 1.1.1.2 2001/11/27 22:01:28 short + :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Tue Nov 27 22:58 CET 2001 + + Revision 1.3 2001/11/27 12:19:01 pkot + Cleanup, indentation, ANSI complaint preprocesor symbols (Jan Kratochvil, me) Revision 1.2 2001/08/20 23:27:37 pkot Add hardware shakehand to the link layer (Manfred Jonsson) @@ -20,19 +23,18 @@ Revision 1.1 2001/02/21 19:57:12 chris More fiddling with the directory layout - */ #ifndef __devices_unixserial_h #define __devices_unixserial_h #ifdef WIN32 - #include +# include /* FIXME: this should be solved in config.h in 0.4.0 */ - #define __const const - typedef void * __ptr_t; +# define __const const + typedef void * __ptr_t; #else - #include +# include #endif /* WIN32 */ #include "misc.h" @@ -51,7 +53,3 @@ size_t serial_write(int __fd, __const __ptr_t __buf, size_t __n); int serial_select(int fd, struct timeval *timeout); #endif /* __devices_unixserial_h */ - - - - diff --git a/include/gsm-api.h b/include/gsm-api.h index 84a828a..be82e64 100644 --- a/include/gsm-api.h +++ b/include/gsm-api.h @@ -14,8 +14,11 @@ the handset interface. See gsm-api.c for more details. $Log$ - Revision 1.1.1.1 2001/11/25 21:59:19 short - :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001 + Revision 1.1.1.2 2001/11/27 22:01:26 short + :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Tue Nov 27 22:58 CET 2001 + + Revision 1.15 2001/11/27 12:19:01 pkot + Cleanup, indentation, ANSI complaint preprocesor symbols (Jan Kratochvil, me) Revision 1.14 2001/06/28 00:28:45 pkot Small docs updates (Pawel Kot) @@ -30,12 +33,12 @@ sense so we include it here if required. */ #ifndef __gsm_common_h - #include "gsm-common.h" +# include "gsm-common.h" #endif /* Ditto rlp_common.h... */ #ifndef __data_rlp_common_h - #include "data/rlp-common.h" +# include "data/rlp-common.h" #endif #include "gsm-statemachine.h" diff --git a/include/gsm-sms.h b/include/gsm-sms.h index 3ff3ba2..9174502 100644 --- a/include/gsm-sms.h +++ b/include/gsm-sms.h @@ -13,8 +13,11 @@ Include file for SMS library. $Log$ - Revision 1.1.1.1 2001/11/25 21:59:21 short - :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001 + Revision 1.1.1.2 2001/11/27 22:01:27 short + :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Tue Nov 27 22:58 CET 2001 + + Revision 1.7 2001/11/27 12:19:01 pkot + Cleanup, indentation, ANSI complaint preprocesor symbols (Jan Kratochvil, me) Revision 1.6 2001/11/22 17:56:53 pkot smslib update. sms sending @@ -201,12 +204,12 @@ typedef struct { /* Validity of SMS Messages. */ typedef enum { - SMS_V1H = 0x0b, - SMS_V6H = 0x47, - SMS_V24H = 0xa7, - SMS_V72H = 0xa9, - SMS_V1W = 0xad, - SMS_VMax = 0xff + SMS_V1H = 0x0b, + SMS_V6H = 0x47, + SMS_V24H = 0xa7, + SMS_V72H = 0xa9, + SMS_V1W = 0xad, + SMS_VMax = 0xff } SMS_ValidityPeriod; typedef struct { @@ -306,7 +309,7 @@ typedef enum { GMT_F19 = 0xB9, GMT_F20 = 0xC1 /* 20th CUSTOM FOLDER in 6210/7110 */ } SMS_MemoryType; - + /* Define datatype for SMS messages, describes precisely GSM Spec 03.40 */ typedef struct { /* Specification fields */ @@ -336,7 +339,7 @@ typedef struct { SMS_DateTime Time; /* Discharge Time (9.2.3.13) */ /* Other fields */ - SMS_MemoryType MemoryType; /* memoryType (for 6210/7110: folder indicator */ + SMS_MemoryType MemoryType; /* memoryType (for 6210/7110: folder indicator */ SMS_MessageStatus Status; /* Status of the message: sent/read or unsent/unread */ // SMS_CommandType Command; /* Command Type - 8 bits (9.2.3.19); FIXME: use it!!!! */ -- 1.8.3.1