author | zautrix <zautrix> | 2004-10-25 08:56:23 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-10-25 08:56:23 (UTC) |
commit | 62e92aa86b6281b4e4c2a2bdb57f3ceb5a87f4e3 (patch) (unidiff) | |
tree | c2b7a41b0c8fffdc0786b84ff86724ea8f08d6a1 /gammu/emb | |
parent | feff0930372dd51af24dc3b46697e70838277ea5 (diff) | |
download | kdepimpi-62e92aa86b6281b4e4c2a2bdb57f3ceb5a87f4e3.zip kdepimpi-62e92aa86b6281b4e4c2a2bdb57f3ceb5a87f4e3.tar.gz kdepimpi-62e92aa86b6281b4e4c2a2bdb57f3ceb5a87f4e3.tar.bz2 |
gammu updates
34 files changed, 1065 insertions, 116 deletions
diff --git a/gammu/emb/common/common.pro b/gammu/emb/common/common.pro index 797199b..af45382 100644 --- a/gammu/emb/common/common.pro +++ b/gammu/emb/common/common.pro | |||
@@ -66,25 +66,20 @@ HEADERS += config.h \ | |||
66 | service/gsmdata.h \ | 66 | service/gsmdata.h \ |
67 | service/gsmlogo.h \ | 67 | service/gsmlogo.h \ |
68 | service/gsmmisc.h \ | 68 | service/gsmmisc.h \ |
69 | service/gsmnet.h \ | 69 | service/gsmnet.h \ |
70 | service/gsmpbk.h \ | 70 | service/gsmpbk.h \ |
71 | service/gsmprof.h \ | 71 | service/gsmprof.h \ |
72 | service/gsmring.h \ | 72 | service/gsmring.h \ |
73 | device/bluetoth/affix.h \ | 73 | device/bluetoth/affix.h \ |
74 | device/bluetoth/blue_w32.h \ | ||
75 | device/bluetoth/bluetoth.h \ | 74 | device/bluetoth/bluetoth.h \ |
76 | device/bluetoth/bluez.h \ | 75 | device/bluetoth/bluez.h \ |
77 | device/irda/irda.h \ | 76 | device/irda/irda.h \ |
78 | device/irda/irda_unx.h \ | ||
79 | device/irda/irda_w32.h \ | ||
80 | device/serial/ser_djg.h \ | 77 | device/serial/ser_djg.h \ |
81 | device/serial/ser_unx.h \ | ||
82 | device/serial/ser_w32.h \ | ||
83 | misc/coding/coding.h \ | 78 | misc/coding/coding.h \ |
84 | misc/coding/md5.h \ | 79 | misc/coding/md5.h \ |
85 | phone/alcatel/alcatel.h \ | 80 | phone/alcatel/alcatel.h \ |
86 | phone/at/atgen.h \ | 81 | phone/at/atgen.h \ |
87 | phone/nokia/ncommon.h \ | 82 | phone/nokia/ncommon.h \ |
88 | phone/nokia/nfunc.h \ | 83 | phone/nokia/nfunc.h \ |
89 | phone/nokia/nfuncold.h \ | 84 | phone/nokia/nfuncold.h \ |
90 | phone/obex/obexgen.h \ | 85 | phone/obex/obexgen.h \ |
@@ -106,16 +101,17 @@ HEADERS += config.h \ | |||
106 | service/backup/gsmback.h \ | 101 | service/backup/gsmback.h \ |
107 | service/sms/gsmems.h \ | 102 | service/sms/gsmems.h \ |
108 | service/sms/gsmmulti.h \ | 103 | service/sms/gsmmulti.h \ |
109 | service/sms/gsmsms.h \ | 104 | service/sms/gsmsms.h \ |
110 | phone/nokia/dct3/dct3comm.h \ | 105 | phone/nokia/dct3/dct3comm.h \ |
111 | phone/nokia/dct3/dct3func.h \ | 106 | phone/nokia/dct3/dct3func.h \ |
112 | phone/nokia/dct3/n6110.h \ | 107 | phone/nokia/dct3/n6110.h \ |
113 | phone/nokia/dct3/n7110.h \ | 108 | phone/nokia/dct3/n7110.h \ |
109 | phone/nokia/dct3/n0650.h \ | ||
114 | phone/nokia/dct3/n9210.h \ | 110 | phone/nokia/dct3/n9210.h \ |
115 | phone/nokia/dct4/dct4func.h \ | 111 | phone/nokia/dct4/dct4func.h \ |
116 | phone/nokia/dct4/n3320.h \ | 112 | phone/nokia/dct4/n3320.h \ |
117 | phone/nokia/dct4/n3650.h \ | 113 | phone/nokia/dct4/n3650.h \ |
118 | phone/nokia/dct4/n6510.h | 114 | phone/nokia/dct4/n6510.h |
119 | SOURCES +=gsmcomon.c \ | 115 | SOURCES +=gsmcomon.c \ |
120 | gsmstate.c \ | 116 | gsmstate.c \ |
121 | misc/misc.c \ | 117 | misc/misc.c \ |
@@ -136,17 +132,16 @@ service/backup/gsmback.c \ | |||
136 | service/backup/backldif.c \ | 132 | service/backup/backldif.c \ |
137 | service/backup/backlmb.c \ | 133 | service/backup/backlmb.c \ |
138 | service/backup/backtext.c \ | 134 | service/backup/backtext.c \ |
139 | service/backup/backvcs.c \ | 135 | service/backup/backvcs.c \ |
140 | service/backup/backvcf.c \ | 136 | service/backup/backvcf.c \ |
141 | service/backup/backics.c \ | 137 | service/backup/backics.c \ |
142 | device/bluetoth/affix.c \ | 138 | device/bluetoth/affix.c \ |
143 | device/bluetoth/bluez.c \ | 139 | device/bluetoth/bluez.c \ |
144 | device/bluetoth/blue_w32.c \ | ||
145 | device/bluetoth/bluetoth.c \ | 140 | device/bluetoth/bluetoth.c \ |
146 | device/serial/ser_djg.c \ | 141 | device/serial/ser_djg.c \ |
147 | device/irda/irda.c \ | 142 | device/irda/irda.c \ |
148 | device/devfunc.c \ | 143 | device/devfunc.c \ |
149 | protocol/at/at.c \ | 144 | protocol/at/at.c \ |
150 | protocol/alcatel/alcabus.c \ | 145 | protocol/alcatel/alcabus.c \ |
151 | protocol/nokia/mbus2.c \ | 146 | protocol/nokia/mbus2.c \ |
152 | protocol/nokia/fbus2.c \ | 147 | protocol/nokia/fbus2.c \ |
@@ -156,16 +151,17 @@ protocol/symbian/mrouter.c \ | |||
156 | phone/pfunc.c \ | 151 | phone/pfunc.c \ |
157 | phone/at/atgen.c \ | 152 | phone/at/atgen.c \ |
158 | phone/at/siemens.c \ | 153 | phone/at/siemens.c \ |
159 | phone/at/samsung.c \ | 154 | phone/at/samsung.c \ |
160 | phone/at/sonyeric.c \ | 155 | phone/at/sonyeric.c \ |
161 | phone/alcatel/alcatel.c \ | 156 | phone/alcatel/alcatel.c \ |
162 | phone/nokia/dct3/n6110.c \ | 157 | phone/nokia/dct3/n6110.c \ |
163 | phone/nokia/dct3/n7110.c \ | 158 | phone/nokia/dct3/n7110.c \ |
159 | phone/nokia/dct3/n0650.c \ | ||
164 | phone/nokia/dct3/n9210.c \ | 160 | phone/nokia/dct3/n9210.c \ |
165 | phone/nokia/dct3/dct3func.c \ | 161 | phone/nokia/dct3/dct3func.c \ |
166 | phone/nokia/dct4/n3320.c \ | 162 | phone/nokia/dct4/n3320.c \ |
167 | phone/nokia/dct4/n3650.c \ | 163 | phone/nokia/dct4/n3650.c \ |
168 | phone/nokia/dct4/n6510.c \ | 164 | phone/nokia/dct4/n6510.c \ |
169 | phone/nokia/dct4/dct4func.c \ | 165 | phone/nokia/dct4/dct4func.c \ |
170 | phone/nokia/nauto.c \ | 166 | phone/nokia/nauto.c \ |
171 | phone/nokia/nfunc.c \ | 167 | phone/nokia/nfunc.c \ |
@@ -176,13 +172,23 @@ phone/symbian/mroutgen.c | |||
176 | DEFINES += DESKTOP_VERSION | 172 | DEFINES += DESKTOP_VERSION |
177 | TARGET = microgammu | 173 | TARGET = microgammu |
178 | CONFIG = warn_off release console | 174 | CONFIG = warn_off release console |
179 | DESTDIR = ../../../bin | 175 | DESTDIR = ../../../bin |
180 | OBJECTS_DIR = obj/unix | 176 | OBJECTS_DIR = obj/unix |
181 | MOC_DIR = moc/unix | 177 | MOC_DIR = moc/unix |
182 | 178 | ||
183 | unix: { | 179 | unix: { |
184 | SOURCES += device/serial/ser_unx.c | 180 | HEADERS += device/serial/ser_unx.h \ |
181 | device/irda/irda_unx.h | ||
182 | |||
183 | SOURCES += device/serial/ser_unx.c \ | ||
184 | |||
185 | } | 185 | } |
186 | win32:{ | 186 | win32:{ |
187 | SOURCES += device/serial/ser_w32.c | 187 | |
188 | HEADERS += device/serial/ser_w32.h \ | ||
189 | device/irda/irda_w32.h \ | ||
190 | device/bluetoth/blue_w32.h | ||
191 | |||
192 | SOURCES += device/serial/ser_w32.c \ | ||
193 | device/bluetoth/blue_w32.c | ||
188 | } | 194 | } |
diff --git a/gammu/emb/common/commonE.pro b/gammu/emb/common/commonE.pro index f5b559d..1512814 100644 --- a/gammu/emb/common/commonE.pro +++ b/gammu/emb/common/commonE.pro | |||
@@ -66,25 +66,22 @@ HEADERS += config.h \ | |||
66 | service/gsmdata.h \ | 66 | service/gsmdata.h \ |
67 | service/gsmlogo.h \ | 67 | service/gsmlogo.h \ |
68 | service/gsmmisc.h \ | 68 | service/gsmmisc.h \ |
69 | service/gsmnet.h \ | 69 | service/gsmnet.h \ |
70 | service/gsmpbk.h \ | 70 | service/gsmpbk.h \ |
71 | service/gsmprof.h \ | 71 | service/gsmprof.h \ |
72 | service/gsmring.h \ | 72 | service/gsmring.h \ |
73 | device/bluetoth/affix.h \ | 73 | device/bluetoth/affix.h \ |
74 | device/bluetoth/blue_w32.h \ | ||
75 | device/bluetoth/bluetoth.h \ | 74 | device/bluetoth/bluetoth.h \ |
76 | device/bluetoth/bluez.h \ | 75 | device/bluetoth/bluez.h \ |
77 | device/irda/irda.h \ | 76 | device/irda/irda.h \ |
78 | device/irda/irda_unx.h \ | 77 | device/irda/irda_unx.h \ |
79 | device/irda/irda_w32.h \ | ||
80 | device/serial/ser_djg.h \ | 78 | device/serial/ser_djg.h \ |
81 | device/serial/ser_unx.h \ | 79 | device/serial/ser_unx.h \ |
82 | device/serial/ser_w32.h \ | ||
83 | misc/coding/coding.h \ | 80 | misc/coding/coding.h \ |
84 | misc/coding/md5.h \ | 81 | misc/coding/md5.h \ |
85 | phone/alcatel/alcatel.h \ | 82 | phone/alcatel/alcatel.h \ |
86 | phone/at/atgen.h \ | 83 | phone/at/atgen.h \ |
87 | phone/nokia/ncommon.h \ | 84 | phone/nokia/ncommon.h \ |
88 | phone/nokia/nfunc.h \ | 85 | phone/nokia/nfunc.h \ |
89 | phone/nokia/nfuncold.h \ | 86 | phone/nokia/nfuncold.h \ |
90 | phone/obex/obexgen.h \ | 87 | phone/obex/obexgen.h \ |
@@ -109,16 +106,17 @@ HEADERS += config.h \ | |||
109 | service/sms/gsmsms.h \ | 106 | service/sms/gsmsms.h \ |
110 | phone/nokia/dct3/dct3comm.h \ | 107 | phone/nokia/dct3/dct3comm.h \ |
111 | phone/nokia/dct3/dct3func.h \ | 108 | phone/nokia/dct3/dct3func.h \ |
112 | phone/nokia/dct3/n6110.h \ | 109 | phone/nokia/dct3/n6110.h \ |
113 | phone/nokia/dct3/n7110.h \ | 110 | phone/nokia/dct3/n7110.h \ |
114 | phone/nokia/dct3/n9210.h \ | 111 | phone/nokia/dct3/n9210.h \ |
115 | phone/nokia/dct4/dct4func.h \ | 112 | phone/nokia/dct4/dct4func.h \ |
116 | phone/nokia/dct4/n3320.h \ | 113 | phone/nokia/dct4/n3320.h \ |
114 | phone/nokia/dct3/n0650.h \ | ||
117 | phone/nokia/dct4/n3650.h \ | 115 | phone/nokia/dct4/n3650.h \ |
118 | phone/nokia/dct4/n6510.h | 116 | phone/nokia/dct4/n6510.h |
119 | SOURCES +=gsmcomon.c \ | 117 | SOURCES +=gsmcomon.c \ |
120 | gsmstate.c \ | 118 | gsmstate.c \ |
121 | misc/misc.c \ | 119 | misc/misc.c \ |
122 | misc/cfg.c \ | 120 | misc/cfg.c \ |
123 | misc/coding/coding.c \ | 121 | misc/coding/coding.c \ |
124 | misc/coding/md5.c \ | 122 | misc/coding/md5.c \ |
@@ -136,17 +134,16 @@ service/backup/gsmback.c \ | |||
136 | service/backup/backldif.c \ | 134 | service/backup/backldif.c \ |
137 | service/backup/backlmb.c \ | 135 | service/backup/backlmb.c \ |
138 | service/backup/backtext.c \ | 136 | service/backup/backtext.c \ |
139 | service/backup/backvcs.c \ | 137 | service/backup/backvcs.c \ |
140 | service/backup/backvcf.c \ | 138 | service/backup/backvcf.c \ |
141 | service/backup/backics.c \ | 139 | service/backup/backics.c \ |
142 | device/bluetoth/affix.c \ | 140 | device/bluetoth/affix.c \ |
143 | device/bluetoth/bluez.c \ | 141 | device/bluetoth/bluez.c \ |
144 | device/bluetoth/blue_w32.c \ | ||
145 | device/bluetoth/bluetoth.c \ | 142 | device/bluetoth/bluetoth.c \ |
146 | device/serial/ser_unx.c \ | 143 | device/serial/ser_unx.c \ |
147 | device/serial/ser_djg.c \ | 144 | device/serial/ser_djg.c \ |
148 | device/irda/irda.c \ | 145 | device/irda/irda.c \ |
149 | device/devfunc.c \ | 146 | device/devfunc.c \ |
150 | protocol/at/at.c \ | 147 | protocol/at/at.c \ |
151 | protocol/alcatel/alcabus.c \ | 148 | protocol/alcatel/alcabus.c \ |
152 | protocol/nokia/mbus2.c \ | 149 | protocol/nokia/mbus2.c \ |
@@ -162,20 +159,29 @@ phone/at/sonyeric.c \ | |||
162 | phone/alcatel/alcatel.c \ | 159 | phone/alcatel/alcatel.c \ |
163 | phone/nokia/dct3/n6110.c \ | 160 | phone/nokia/dct3/n6110.c \ |
164 | phone/nokia/dct3/n7110.c \ | 161 | phone/nokia/dct3/n7110.c \ |
165 | phone/nokia/dct3/n9210.c \ | 162 | phone/nokia/dct3/n9210.c \ |
166 | phone/nokia/dct3/dct3func.c \ | 163 | phone/nokia/dct3/dct3func.c \ |
167 | phone/nokia/dct4/n3320.c \ | 164 | phone/nokia/dct4/n3320.c \ |
168 | phone/nokia/dct4/n3650.c \ | 165 | phone/nokia/dct4/n3650.c \ |
169 | phone/nokia/dct4/n6510.c \ | 166 | phone/nokia/dct4/n6510.c \ |
167 | phone/nokia/dct3/n0650.c \ | ||
170 | phone/nokia/dct4/dct4func.c \ | 168 | phone/nokia/dct4/dct4func.c \ |
171 | phone/nokia/nauto.c \ | 169 | phone/nokia/nauto.c \ |
172 | phone/nokia/nfunc.c \ | 170 | phone/nokia/nfunc.c \ |
173 | phone/nokia/nfuncold.c \ | 171 | phone/nokia/nfuncold.c \ |
174 | phone/obex/obexgen.c \ | 172 | phone/obex/obexgen.c \ |
175 | phone/symbian/mroutgen.c | 173 | phone/symbian/mroutgen.c |
176 | 174 | ||
177 | TARGET = kammu | 175 | TARGET = kammu |
178 | DESTDIR = $(QPEDIR)/lib | 176 | DESTDIR = $(QPEDIR)/lib |
179 | OBJECTS_DIR = obj/$(PLATFORM) | 177 | OBJECTS_DIR = obj/$(PLATFORM) |
180 | MOC_DIR = moc/$(PLATFORM) | 178 | MOC_DIR = moc/$(PLATFORM) |
181 | CONFIG = warn_off release console | 179 | CONFIG = warn_off release console |
180 | |||
181 | |||
182 | |||
183 | |||
184 | # device/bluetoth/blue_w32.h \ | ||
185 | # device/irda/irda_w32.h \ | ||
186 | # device/serial/ser_w32.h \ | ||
187 | # device/bluetoth/blue_w32.c \ \ No newline at end of file | ||
diff --git a/gammu/emb/common/device/serial/ser_djg.c b/gammu/emb/common/device/serial/ser_djg.c index 2524187..609deb8 100644 --- a/gammu/emb/common/device/serial/ser_djg.c +++ b/gammu/emb/common/device/serial/ser_djg.c | |||
@@ -1,64 +1,433 @@ | |||
1 | /* Some sources from SVAsync (c) 1996, 1997, Samuel Vincent | ||
2 | * 7337 Carioca Ct, Rohnert Park, Ca 94928 | ||
3 | * "you may freely use it in your programs without paying me anything" | ||
4 | */ | ||
5 | /* Some sources from DZCOMM */ | ||
1 | 6 | ||
2 | #include "../../gsmstate.h" | 7 | #include "../../gsmstate.h" |
3 | 8 | ||
4 | #ifdef GSM_ENABLE_SERIALDEVICE | 9 | #ifdef GSM_ENABLE_SERIALDEVICE |
5 | #ifdef DJGPP | 10 | #ifdef DJGPP |
6 | 11 | ||
7 | #include "../../gsmcomon.h" | 12 | #include "../../gsmcomon.h" |
13 | #include "../../misc/coding/coding.h" | ||
8 | #include "ser_djg.h" | 14 | #include "ser_djg.h" |
9 | 15 | ||
16 | #include <stdlib.h> | ||
17 | #include <stdio.h> | ||
18 | #include <string.h> | ||
19 | #include <dos.h> | ||
20 | #include <dpmi.h> | ||
21 | #include <pc.h> | ||
22 | #include <go32.h> | ||
23 | #include <sys/farptr.h> | ||
24 | #include <sys/movedata.h> | ||
25 | #include <conio.h> | ||
26 | |||
27 | extern unsigned short __djgpp_ds_alias; | ||
28 | extern void SVAsyncProtISR(void); | ||
29 | |||
30 | static unsigned char SVAsyncStatus=0; | ||
31 | |||
32 | static void lock_interrupt_memory(void); | ||
33 | static void unlock_interrupt_memory(void); | ||
34 | |||
35 | #define Ctrl8259_0 0x020 /* 8259 port */ | ||
36 | #define Ctrl8259_1 0x021 /* 8259 port (Masks) */ | ||
37 | #define BufSize 32768 /* Buffer Size */ | ||
38 | |||
39 | static unsigned char VectorNum; /* Vector Number */ | ||
40 | static unsigned char EnableIRQ; /* Mask to enable 8259 IRQ */ | ||
41 | static unsigned char DisableIRQ; /* Mask to disable 8259 IRQ */ | ||
42 | static _go32_dpmi_seginfo ProtVector; /* Old Protmode Vector */ | ||
43 | static _go32_dpmi_seginfo info; /* New Protmode Vector */ | ||
44 | |||
45 | /* Register Addresses for the UART */ | ||
46 | static unsigned short Port; /* Port Base Address */ | ||
47 | unsigned short THR; /* Transmitter Holding Register */ | ||
48 | unsigned short RDR; /* Reciever Data Register */ | ||
49 | unsigned short BRDL; /* Baud Rate Divisor, Low byte */ | ||
50 | unsigned short BRDH; /* Baud Rate Divisor, High Byte */ | ||
51 | unsigned short IER; /* Interupt Enable Register */ | ||
52 | unsigned short IIR; /* Interupt Identification Register */ | ||
53 | unsigned short FCR; /* FIFO Control Register */ | ||
54 | unsigned short LCR; /* Line Control Register */ | ||
55 | unsigned short MCR; /* Modem Control Register */ | ||
56 | unsigned short LSR; /* Line Status Register */ | ||
57 | unsigned short MSR; /* Modem Status Register */ | ||
58 | unsigned short SCR; /* SCR Register */ | ||
59 | |||
60 | /* Data Buffer */ | ||
61 | unsigned volatile char RecBuffer[BufSize] = { 0 }; | ||
62 | unsigned volatile int RecHead, RecTail; | ||
63 | |||
64 | /* This uninstalls the ISR and resets the serial port. */ | ||
65 | static void SVAsyncStop(void) | ||
66 | { | ||
67 | if(!SVAsyncStatus) return; | ||
68 | SVAsyncStatus = 0; | ||
69 | |||
70 | /***** Mask (disable) 8259 IRQ Interrupt */ | ||
71 | outportb(Ctrl8259_1, (inportb(Ctrl8259_1) | DisableIRQ)); | ||
72 | |||
73 | /***** Disable 8250 interrupt */ | ||
74 | outportb(LCR, (inportb(LCR) & 0x7F)); | ||
75 | outportb(IER, 0); | ||
76 | |||
77 | /***** Set bit 3 in MCR to 0 */ | ||
78 | outportb(MCR, (inportb(MCR) & 0xF7)); | ||
79 | |||
80 | /***** Interrupts are disabled. Restore saved interrupt vector. */ | ||
81 | _go32_dpmi_set_protected_mode_interrupt_vector(VectorNum, &ProtVector); | ||
82 | } | ||
83 | |||
84 | /* This will empty the receive buffer */ | ||
85 | static void SVAsyncClear(void) | ||
86 | { | ||
87 | disable(); | ||
88 | RecHead = 0; | ||
89 | RecTail = 0; | ||
90 | enable(); | ||
91 | } | ||
92 | |||
93 | |||
94 | /* Sets communication parameters | ||
95 | * Baud = 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 28800, 38400, 57600 | ||
96 | * Control = The value to place in the LCR | ||
97 | */ | ||
98 | void SVAsyncSet(unsigned int Baud, unsigned int Control) | ||
99 | { | ||
100 | int divisor; | ||
101 | unsigned char divlow, divhigh; | ||
102 | |||
103 | if (!Baud) return; | ||
104 | |||
105 | divisor = 115200 / Baud; | ||
106 | |||
107 | disable(); | ||
108 | |||
109 | outportb(LCR, Control | 0x80); /* Set Port Toggle to BRDL/BRDH registers */ | ||
110 | divlow = divisor & 0x000000ff; | ||
111 | divhigh = (divisor >> 8) & 0x000000ff; | ||
112 | outportb(BRDL, divlow); /* Set Baud Rate */ | ||
113 | outportb(BRDH, divhigh); | ||
114 | |||
115 | outportb(LCR, Control & 0x007F); /* Set LCR and Port Toggle */ | ||
116 | |||
117 | enable(); | ||
118 | } | ||
119 | |||
120 | /* Sets various handshaking lines */ | ||
121 | void SVAsyncHand(unsigned int Hand) | ||
122 | { | ||
123 | outportb(MCR, Hand | 0x08); /* Keep interrupt enable ON */ | ||
124 | } | ||
125 | |||
126 | static void lock_interrupt_memory(void) | ||
127 | { | ||
128 | int errval; | ||
129 | __dpmi_meminfo info; | ||
130 | unsigned long address; | ||
131 | |||
132 | __dpmi_get_segment_base_address(_my_ds(), &address); | ||
133 | |||
134 | info.address = (int) address + (int) &RDR; | ||
135 | info.size = sizeof(RDR); | ||
136 | errval = __dpmi_lock_linear_region(&info); | ||
137 | if(errval == -1) printf("Error in locking memory\n!"); | ||
138 | |||
139 | info.address = (int) address + (int) &LSR; | ||
140 | info.size = sizeof(LSR); | ||
141 | errval = __dpmi_lock_linear_region(&info); | ||
142 | if(errval == -1) printf("Error in locking memory\n!"); | ||
143 | |||
144 | info.address = (int) address + (int) &RecHead; | ||
145 | info.size = sizeof(RecHead); | ||
146 | errval = __dpmi_lock_linear_region(&info); | ||
147 | if(errval == -1) printf("Error in locking memory\n!"); | ||
148 | |||
149 | info.address = (int) address + (int) &RecBuffer; | ||
150 | info.size = sizeof(RecBuffer); | ||
151 | errval = __dpmi_lock_linear_region(&info); | ||
152 | if(errval == -1) printf("Error in locking memory\n!"); | ||
153 | |||
154 | info.address = (int) address + (int) RecBuffer; | ||
155 | info.size = BufSize; | ||
156 | errval = __dpmi_lock_linear_region(&info); | ||
157 | if(errval == -1) printf("Error in locking memory\n!"); | ||
158 | |||
159 | __dpmi_get_segment_base_address(_my_cs(), &address); | ||
160 | |||
161 | info.address = (int) address + (int) SVAsyncProtISR; | ||
162 | info.size = 4096; /* 4096 bytes is probably overkill. */ | ||
163 | errval = __dpmi_lock_linear_region(&info); | ||
164 | if(errval == -1) printf("Error in locking memory\n!"); | ||
165 | } | ||
166 | |||
167 | static void unlock_interrupt_memory(void) | ||
168 | { | ||
169 | __dpmi_meminfo info; | ||
170 | unsigned long address; | ||
171 | |||
172 | __dpmi_get_segment_base_address(_my_ds(), &address); | ||
173 | info.address = (int) address + (int) &RDR; | ||
174 | info.size = sizeof(RDR); | ||
175 | __dpmi_unlock_linear_region(&info); | ||
176 | info.address = (int) address + (int) &LSR; | ||
177 | info.size = sizeof(LSR); | ||
178 | __dpmi_unlock_linear_region(&info); | ||
179 | info.address = (int) address + (int) &RecHead; | ||
180 | info.size = sizeof(RecHead); | ||
181 | __dpmi_unlock_linear_region(&info); | ||
182 | info.address = (int) address + (int) &RecBuffer; | ||
183 | info.size = sizeof(RecBuffer); | ||
184 | __dpmi_unlock_linear_region(&info); | ||
185 | info.address = (int) address + (int) RecBuffer; | ||
186 | info.size = BufSize; | ||
187 | __dpmi_unlock_linear_region(&info); | ||
188 | |||
189 | __dpmi_get_segment_base_address(_my_cs(), &address); | ||
190 | |||
191 | info.address = (int) address + (int) SVAsyncProtISR; | ||
192 | info.size = 4096; /* probably overkill */ | ||
193 | __dpmi_unlock_linear_region(&info); | ||
194 | } | ||
195 | |||
10 | static GSM_Error serial_close(GSM_StateMachine *s) | 196 | static GSM_Error serial_close(GSM_StateMachine *s) |
11 | { | 197 | { |
12 | GSM_Device_SerialData *d = &s->Device.Data.Serial; | 198 | SVAsyncStop(); |
13 | 199 | ||
14 | return ERR_NOTIMPLEMENTED; | 200 | return ERR_NONE; |
15 | } | 201 | } |
16 | 202 | ||
17 | static GSM_Error serial_open (GSM_StateMachine *s) | 203 | static GSM_Error serial_open (GSM_StateMachine *s) |
18 | { | 204 | { |
19 | GSM_Device_SerialData *d = &s->Device.Data.Serial; | 205 | GSM_Device_SerialData *d = &s->Device.Data.Serial; |
20 | 206 | unsigned char temp; | |
21 | return ERR_NOTIMPLEMENTED; | 207 | int i; |
208 | |||
209 | /**** Set various things according to com port number */ | ||
210 | if (mystrncasecmp(s->CurrentConfig->Device,"com1:",0)) { | ||
211 | Port = 0x03F8; | ||
212 | VectorNum = 0x0C; | ||
213 | EnableIRQ = 0xEF; | ||
214 | DisableIRQ = 0x10; | ||
215 | } else if (mystrncasecmp(s->CurrentConfig->Device,"com2:",0)) { | ||
216 | Port = 0x02F8; | ||
217 | VectorNum = 0x0B; | ||
218 | EnableIRQ = 0xF7; | ||
219 | DisableIRQ = 0x08; | ||
220 | } else if (mystrncasecmp(s->CurrentConfig->Device,"com3:",0)) { | ||
221 | Port = 0x03E8; | ||
222 | VectorNum = 0x0C; | ||
223 | EnableIRQ = 0xEF; | ||
224 | DisableIRQ = 0x10; | ||
225 | } else if (mystrncasecmp(s->CurrentConfig->Device,"com4:",0)) { | ||
226 | Port = 0x02E8; | ||
227 | VectorNum = 0x0B; | ||
228 | EnableIRQ = 0xF7; | ||
229 | DisableIRQ = 0x08; | ||
230 | } else return ERR_NOTSUPPORTED; | ||
231 | |||
232 | /**** Compute Register locations */ | ||
233 | THR = Port; | ||
234 | RDR = Port; | ||
235 | BRDL = Port; | ||
236 | BRDH = 1 + Port; | ||
237 | IER = 1 + Port; | ||
238 | IIR = 2 + Port; | ||
239 | FCR = 2 + Port; | ||
240 | LCR = 3 + Port; | ||
241 | MCR = 4 + Port; | ||
242 | LSR = 5 + Port; | ||
243 | MSR = 6 + Port; | ||
244 | SCR = 7 + Port; | ||
245 | |||
246 | /***** Initalize Buffer */ | ||
247 | SVAsyncClear(); | ||
248 | |||
249 | lock_interrupt_memory(); | ||
250 | atexit(unlock_interrupt_memory); | ||
251 | /***** Set bit 3 in MCR to 0 */ | ||
252 | outportb(MCR, (inportb(MCR) & 0xF7)); | ||
253 | |||
254 | /*** Save and reassign interrupt vectors */ | ||
255 | |||
256 | _go32_dpmi_get_protected_mode_interrupt_vector(VectorNum, &ProtVector); | ||
257 | |||
258 | info.pm_offset = (int) SVAsyncProtISR; | ||
259 | info.pm_selector = _my_cs(); | ||
260 | _go32_dpmi_set_protected_mode_interrupt_vector(VectorNum, &info); | ||
261 | |||
262 | atexit(SVAsyncStop); | ||
263 | |||
264 | /***** Enable 8259 interrupt (IRQ) line for this async adapter */ | ||
265 | outportb(Ctrl8259_1, (inportb(Ctrl8259_1) & EnableIRQ)); | ||
266 | |||
267 | /***** Enable 8250 Interrupt-on-data-ready */ | ||
268 | outportb(LCR, (inportb(LCR) & 0x7F)); | ||
269 | |||
270 | outportb(IER, 0); | ||
271 | if (inportb(IER)) { | ||
272 | SVAsyncStatus = 0; | ||
273 | return ERR_UNKNOWN; | ||
274 | } | ||
275 | outportb(IER, 0x01); | ||
276 | |||
277 | /***** Clear 8250 Status and data registers */ | ||
278 | do { | ||
279 | temp=inportb(RDR); | ||
280 | temp=inportb(LSR); | ||
281 | temp=inportb(MSR); | ||
282 | temp=inportb(IIR); | ||
283 | } while(!(temp & 1)); | ||
284 | |||
285 | /***** Set Bit 3 of MCR -- Enable interupts */ | ||
286 | outportb(MCR, (inportb(MCR) | 0x08)); | ||
287 | |||
288 | SVAsyncStatus = 1; | ||
289 | /***** Clear Buffer Just in case */ | ||
290 | SVAsyncClear(); | ||
291 | |||
292 | /* Code based on stuff from SVAsync lib. | ||
293 | * Clear UART Status and data registers | ||
294 | * setting up FIFO if possible | ||
295 | */ | ||
296 | outportb(SCR, 0x55); | ||
297 | if (inportb(SCR) == 0x55) { | ||
298 | /* On the off chance that SCR is actually hardwired to 0x55, | ||
299 | * do the same check with a different value. | ||
300 | */ | ||
301 | outportb(SCR, 0xAA); | ||
302 | if (inportb(SCR) == 0xAA) { | ||
303 | /* The chip is better than an 8250 - it has a scratch pad */ | ||
304 | outportb(SCR, i); /* Set SCR back to what it was before */ | ||
305 | inportb(SCR); /* Give slow motherboards a chance */ | ||
306 | |||
307 | /* Is there a FIFO ? - go through twice for slow motherboards */ | ||
308 | outportb(FCR, 0x01); | ||
309 | i = inportb(FCR); | ||
310 | outportb(FCR, 0x01); | ||
311 | i = inportb(FCR); | ||
312 | |||
313 | /* Some old stuff relies on this (no idea why) */ | ||
314 | outportb(FCR, 0x00); | ||
315 | inportb(FCR); /* Give slow motherboards a chance */ | ||
316 | |||
317 | if ((i&0x80) == 0) { | ||
318 | smprintf(s,"UART 16450 or UART 8250 with scratch pad\n"); | ||
319 | } else if ((i&0x40) == 0) { | ||
320 | smprintf(s,"UART 16550 - broken FIFO\n"); | ||
321 | } else { | ||
322 | /* It's a 16450A series : try and start the FIFO. | ||
323 | * It appears that some chips need a two call protocol, but | ||
324 | * those that don't seem to work even if you do start it | ||
325 | * twice. The first call is simply to start it, the second | ||
326 | * starts it and sets an 8 byte FIFO trigger level. | ||
327 | */ | ||
328 | outportb(FCR, 0x01); | ||
329 | inportb(FCR); /* Give slow motherboards a chance */ | ||
330 | outportb(FCR, 0x87); | ||
331 | inportb(FCR); /* Give slow motherboards a chance */ | ||
332 | |||
333 | /* Check that the FIFO initialised */ | ||
334 | if ((inportb(IIR) & 0xc0) != 0xc0) { | ||
335 | /* | ||
336 | * It didn't so we assume it isn't there but disable it to | ||
337 | * be on the safe side. | ||
338 | */ | ||
339 | outportb(IIR, 0xfe); | ||
340 | inportb(IIR); /* Give slow motherboards a chance */ | ||
341 | smprintf(s,"UART 16450A - FIFO disabled\n"); | ||
342 | } else { | ||
343 | smprintf(s,"UART 16450A - FIFO enabled\n"); | ||
344 | } | ||
345 | } | ||
346 | } else { | ||
347 | smprintf(s,"UART 8250\n"); | ||
348 | } | ||
349 | } | ||
350 | |||
351 | d->Control = BITS_8 | STOP_1; | ||
352 | d->Parity = false; | ||
353 | d->Speed = 9600; | ||
354 | SVAsyncSet(d->Speed,d->Control | NO_PARITY); | ||
355 | |||
356 | return ERR_NONE; | ||
22 | } | 357 | } |
23 | 358 | ||
24 | static GSM_Error serial_setparity(GSM_StateMachine *s, bool parity) | 359 | static GSM_Error serial_setparity(GSM_StateMachine *s, bool parity) |
25 | { | 360 | { |
26 | GSM_Device_SerialData *d = &s->Device.Data.Serial; | 361 | GSM_Device_SerialData *d = &s->Device.Data.Serial; |
27 | 362 | ||
28 | return ERR_NOTIMPLEMENTED; | 363 | d->Parity = parity; |
364 | |||
365 | if (parity) { | ||
366 | SVAsyncSet(d->Speed, d->Control | ODD_PARITY); | ||
367 | } else { | ||
368 | SVAsyncSet(d->Speed, d->Control | NO_PARITY); | ||
369 | } | ||
370 | |||
371 | return ERR_NONE; | ||
29 | } | 372 | } |
30 | 373 | ||
31 | static GSM_Error serial_setdtrrts(GSM_StateMachine *s, bool dtr, bool rts) | 374 | static GSM_Error serial_setdtrrts(GSM_StateMachine *s, bool dtr, bool rts) |
32 | { | 375 | { |
33 | GSM_Device_SerialData *d = &s->Device.Data.Serial; | 376 | if (dtr && rts) { |
377 | SVAsyncHand(DTR | RTS); | ||
378 | } else if (dtr) { | ||
379 | SVAsyncHand(DTR); | ||
380 | } else if (rts) { | ||
381 | SVAsyncHand(RTS); | ||
382 | } else { | ||
383 | SVAsyncHand(0); | ||
384 | } | ||
34 | 385 | ||
35 | return ERR_NOTIMPLEMENTED; | 386 | return ERR_NONE; |
36 | } | 387 | } |
37 | 388 | ||
38 | static GSM_Error serial_setspeed(GSM_StateMachine *s, int speed) | 389 | static GSM_Error serial_setspeed(GSM_StateMachine *s, int speed) |
39 | { | 390 | { |
40 | GSM_Device_SerialData *d = &s->Device.Data.Serial; | 391 | GSM_Device_SerialData *d = &s->Device.Data.Serial; |
41 | 392 | ||
42 | return ERR_NOTIMPLEMENTED; | 393 | d->Speed = speed; |
394 | |||
395 | if (d->Parity) { | ||
396 | SVAsyncSet(d->Speed, d->Control | ODD_PARITY); | ||
397 | } else { | ||
398 | SVAsyncSet(d->Speed, d->Control | NO_PARITY); | ||
399 | } | ||
400 | |||
401 | return ERR_NONE; | ||
43 | } | 402 | } |
44 | 403 | ||
45 | static int serial_read(GSM_StateMachine *s, void *buf, size_t nbytes) | 404 | static int serial_read(GSM_StateMachine *s, char *buf, size_t nbytes) |
46 | { | 405 | { |
47 | GSM_Device_SerialData *d = &s->Device.Data.Serial; | 406 | if(RecTail == RecHead) return 0; |
407 | |||
408 | disable(); | ||
409 | buf[0] = RecBuffer[RecTail++]; | ||
410 | if(RecTail >= BufSize) RecTail = 0; | ||
411 | enable(); | ||
48 | 412 | ||
49 | return 0; | 413 | return 1; |
50 | } | 414 | } |
51 | 415 | ||
52 | static int serial_write(GSM_StateMachine *s, void *buf, size_t nbytes) | 416 | static int serial_write(GSM_StateMachine *s, char *buf, size_t nbytes) |
53 | { | 417 | { |
54 | GSM_Device_SerialData *d = &s->Device.Data.Serial; | 418 | int i; |
419 | |||
420 | for (i=0;i<nbytes;i++) { | ||
421 | while(~inportb(LSR) & 0x20); | ||
422 | outportb(THR, buf[i]); | ||
423 | } | ||
55 | 424 | ||
56 | return 0; | 425 | return i; |
57 | } | 426 | } |
58 | 427 | ||
59 | GSM_Device_Functions SerialDevice = { | 428 | GSM_Device_Functions SerialDevice = { |
60 | serial_open, | 429 | serial_open, |
61 | serial_close, | 430 | serial_close, |
62 | serial_setparity, | 431 | serial_setparity, |
63 | serial_setdtrrts, | 432 | serial_setdtrrts, |
64 | serial_setspeed, | 433 | serial_setspeed, |
diff --git a/gammu/emb/common/device/serial/ser_djg.h b/gammu/emb/common/device/serial/ser_djg.h index b35b282..3bb2a5b 100644 --- a/gammu/emb/common/device/serial/ser_djg.h +++ b/gammu/emb/common/device/serial/ser_djg.h | |||
@@ -1,15 +1,50 @@ | |||
1 | /* Some sources from SVAsync (c) 1996, 1997, Samuel Vincent | ||
2 | * 7337 Carioca Ct, Rohnert Park, Ca 94928 | ||
3 | * "you may freely use it in your programs without paying me anything" | ||
4 | */ | ||
1 | 5 | ||
2 | #ifdef DJGPP | 6 | #ifdef DJGPP |
3 | #ifndef djgppserial_h | 7 | #ifndef djgppserial_h |
4 | #define djgppserial_h | 8 | #define djgppserial_h |
5 | 9 | ||
6 | typedef struct { | 10 | typedef struct { |
7 | int hPhone; | 11 | int hPhone; |
12 | int Speed; | ||
13 | unsigned int Control; | ||
14 | bool Parity; | ||
8 | } GSM_Device_SerialData; | 15 | } GSM_Device_SerialData; |
9 | 16 | ||
17 | /* Defines for Com Port Paramaters, the second paramater to SVAsyncSet() */ | ||
18 | #define BITS_8 0x03 | ||
19 | #define BITS_7 0x02 | ||
20 | #define STOP_1 0x00 | ||
21 | #define STOP_2 0x04 | ||
22 | #define EVEN_PARITY 0x18 | ||
23 | #define ODD_PARITY 0x08 | ||
24 | #define NO_PARITY 0x00 | ||
25 | |||
26 | /* Defines for SVAsyncHand() */ | ||
27 | #define DTR 0x01 | ||
28 | #define RTS 0x02 | ||
29 | #define USER 0x04 | ||
30 | #define LOOPBACK 0x10 | ||
31 | |||
32 | /* Defines for SVAsyncStat() */ | ||
33 | #define D_CTS 0x0100 | ||
34 | #define D_DSR 0x0200 | ||
35 | #define D_RI 0x0400 | ||
36 | #define D_DCD 0x0800 | ||
37 | #define CTS 0x1000 | ||
38 | #define DSR 0x2000 | ||
39 | #define RI 0x4000 | ||
40 | #define DCD 0x8000 | ||
41 | #define PARITY 0x0004 | ||
42 | #define THREMPTY 0x0020 | ||
43 | #define BREAKDET 0x1000 | ||
44 | |||
10 | #endif | 45 | #endif |
11 | #endif | 46 | #endif |
12 | 47 | ||
13 | /* How should editor hadle tabs in this file? Add editor commands here. | 48 | /* How should editor hadle tabs in this file? Add editor commands here. |
14 | * vim: noexpandtab sw=8 ts=8 sts=8: | 49 | * vim: noexpandtab sw=8 ts=8 sts=8: |
15 | */ | 50 | */ |
diff --git a/gammu/emb/common/device/serial/ser_unx.c b/gammu/emb/common/device/serial/ser_unx.c index 69c7515..18b5f6f 100644 --- a/gammu/emb/common/device/serial/ser_unx.c +++ b/gammu/emb/common/device/serial/ser_unx.c | |||
@@ -1,14 +1,23 @@ | |||
1 | /* (c) 2002-2004 by Marcin Wiacek */ | 1 | /* (c) 2002-2004 by Marcin Wiacek */ |
2 | /* locking device and settings all speeds by Michal Cihar */ | 2 | /* locking device and settings all speeds by Michal Cihar */ |
3 | /* based on some work from Gnokii (www.gnokii.org) | 3 | /* based on some work from Gnokii (www.gnokii.org) |
4 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot | 4 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot |
5 | * GNU GPL version 2 or later | 5 | * GNU GPL version 2 or later |
6 | */ | 6 | */ |
7 | /* Due to a problem in the source code management, the names of some of | ||
8 | * the authors have unfortunately been lost. We do not mean to belittle | ||
9 | * their efforts and hope they will contact us to see their names | ||
10 | * properly added to the Copyright notice above. | ||
11 | * Having published their contributions under the terms of the GNU | ||
12 | * General Public License (GPL) [version 2], the Copyright of these | ||
13 | * authors will remain respected by adhering to the license they chose | ||
14 | * to publish their code under. | ||
15 | */ | ||
7 | 16 | ||
8 | #include "../../gsmstate.h" | 17 | #include "../../gsmstate.h" |
9 | 18 | ||
10 | #ifdef GSM_ENABLE_SERIALDEVICE | 19 | #ifdef GSM_ENABLE_SERIALDEVICE |
11 | #ifndef WIN32 | 20 | #ifndef WIN32 |
12 | #ifndef DJGPP | 21 | #ifndef DJGPP |
13 | 22 | ||
14 | #include <sys/file.h> | 23 | #include <sys/file.h> |
@@ -55,18 +64,18 @@ static GSM_Error serial_close(GSM_StateMachine *s) | |||
55 | close(d->hPhone); | 64 | close(d->hPhone); |
56 | 65 | ||
57 | return ERR_NONE; | 66 | return ERR_NONE; |
58 | } | 67 | } |
59 | 68 | ||
60 | static GSM_Error serial_open (GSM_StateMachine *s) | 69 | static GSM_Error serial_open (GSM_StateMachine *s) |
61 | { | 70 | { |
62 | GSM_Device_SerialData *d = &s->Device.Data.Serial; | 71 | GSM_Device_SerialData *d = &s->Device.Data.Serial; |
63 | struct termios t; | 72 | struct termios t; |
64 | int i; | 73 | int i; |
65 | 74 | ||
66 | /* O_NONBLOCK MUST is required to avoid waiting for DCD */ | 75 | /* O_NONBLOCK MUST is required to avoid waiting for DCD */ |
67 | d->hPhone = open(s->CurrentConfig->Device, O_RDWR | O_NOCTTY | O_NONBLOCK); | 76 | d->hPhone = open(s->CurrentConfig->Device, O_RDWR | O_NOCTTY | O_NONBLOCK); |
68 | if (d->hPhone < 0) { | 77 | if (d->hPhone < 0) { |
69 | i = errno; | 78 | i = errno; |
70 | GSM_OSErrorInfo(s,"open in serial_open"); | 79 | GSM_OSErrorInfo(s,"open in serial_open"); |
71 | if (i == 2) return ERR_DEVICENOTEXIST; //no such file or directory | 80 | if (i == 2) return ERR_DEVICENOTEXIST; //no such file or directory |
72 | if (i == 13) return ERR_DEVICENOPERMISSION;//permission denied | 81 | if (i == 13) return ERR_DEVICENOPERMISSION;//permission denied |
@@ -119,17 +128,17 @@ static GSM_Error serial_open (GSM_StateMachine *s) | |||
119 | } | 128 | } |
120 | 129 | ||
121 | return ERR_NONE; | 130 | return ERR_NONE; |
122 | } | 131 | } |
123 | 132 | ||
124 | static GSM_Error serial_setparity(GSM_StateMachine *s, bool parity) | 133 | static GSM_Error serial_setparity(GSM_StateMachine *s, bool parity) |
125 | { | 134 | { |
126 | GSM_Device_SerialData *d = &s->Device.Data.Serial; | 135 | GSM_Device_SerialData *d = &s->Device.Data.Serial; |
127 | struct termios t; | 136 | struct termios t; |
128 | 137 | ||
129 | if (tcgetattr(d->hPhone, &t)) { | 138 | if (tcgetattr(d->hPhone, &t)) { |
130 | GSM_OSErrorInfo(s,"tcgetattr in serial_setparity"); | 139 | GSM_OSErrorInfo(s,"tcgetattr in serial_setparity"); |
131 | return ERR_DEVICEREADERROR; | 140 | return ERR_DEVICEREADERROR; |
132 | } | 141 | } |
133 | 142 | ||
134 | if (parity) { | 143 | if (parity) { |
135 | t.c_cflag |= (PARENB | PARODD); | 144 | t.c_cflag |= (PARENB | PARODD); |
@@ -145,18 +154,18 @@ static GSM_Error serial_setparity(GSM_StateMachine *s, bool parity) | |||
145 | } | 154 | } |
146 | 155 | ||
147 | return ERR_NONE; | 156 | return ERR_NONE; |
148 | } | 157 | } |
149 | 158 | ||
150 | static GSM_Error serial_setdtrrts(GSM_StateMachine *s, bool dtr, bool rts) | 159 | static GSM_Error serial_setdtrrts(GSM_StateMachine *s, bool dtr, bool rts) |
151 | { | 160 | { |
152 | GSM_Device_SerialData *d = &s->Device.Data.Serial; | 161 | GSM_Device_SerialData *d = &s->Device.Data.Serial; |
153 | struct termios t; | 162 | struct termios t; |
154 | unsigned int flags; | 163 | unsigned int flags; |
155 | 164 | ||
156 | if (tcgetattr(d->hPhone, &t)) { | 165 | if (tcgetattr(d->hPhone, &t)) { |
157 | GSM_OSErrorInfo(s,"tcgetattr in serial_setdtrrts"); | 166 | GSM_OSErrorInfo(s,"tcgetattr in serial_setdtrrts"); |
158 | return ERR_DEVICEREADERROR; | 167 | return ERR_DEVICEREADERROR; |
159 | } | 168 | } |
160 | 169 | ||
161 | #ifdef CRTSCTS | 170 | #ifdef CRTSCTS |
162 | /* Disabling hardware flow control */ | 171 | /* Disabling hardware flow control */ |
@@ -259,18 +268,18 @@ static GSM_Error serial_setspeed(GSM_StateMachine *s, int speed) | |||
259 | 268 | ||
260 | return ERR_NONE; | 269 | return ERR_NONE; |
261 | } | 270 | } |
262 | 271 | ||
263 | static int serial_read(GSM_StateMachine *s, void *buf, size_t nbytes) | 272 | static int serial_read(GSM_StateMachine *s, void *buf, size_t nbytes) |
264 | { | 273 | { |
265 | GSM_Device_SerialData *d = &s->Device.Data.Serial; | 274 | GSM_Device_SerialData *d = &s->Device.Data.Serial; |
266 | struct timeval timeout2; | 275 | struct timeval timeout2; |
267 | fd_set readfds; | 276 | fd_set readfds; |
268 | int actual = 0; | 277 | int actual = 0; |
269 | 278 | ||
270 | FD_ZERO(&readfds); | 279 | FD_ZERO(&readfds); |
271 | FD_SET(d->hPhone, &readfds); | 280 | FD_SET(d->hPhone, &readfds); |
272 | 281 | ||
273 | timeout2.tv_sec = 0; | 282 | timeout2.tv_sec = 0; |
274 | timeout2.tv_usec = 1; | 283 | timeout2.tv_usec = 1; |
275 | 284 | ||
276 | if (select(d->hPhone+1, &readfds, NULL, NULL, &timeout2)) { | 285 | if (select(d->hPhone+1, &readfds, NULL, NULL, &timeout2)) { |
@@ -278,18 +287,18 @@ static int serial_read(GSM_StateMachine *s, void *buf, size_t nbytes) | |||
278 | if (actual == -1) GSM_OSErrorInfo(s,"serial_read"); | 287 | if (actual == -1) GSM_OSErrorInfo(s,"serial_read"); |
279 | } | 288 | } |
280 | return actual; | 289 | return actual; |
281 | } | 290 | } |
282 | 291 | ||
283 | static int serial_write(GSM_StateMachine *s, void *buf, size_t nbytes) | 292 | static int serial_write(GSM_StateMachine *s, void *buf, size_t nbytes) |
284 | { | 293 | { |
285 | GSM_Device_SerialData *d = &s->Device.Data.Serial; | 294 | GSM_Device_SerialData *d = &s->Device.Data.Serial; |
286 | int ret; | 295 | int ret; |
287 | size_t actual = 0; | 296 | size_t actual = 0; |
288 | 297 | ||
289 | do { | 298 | do { |
290 | ret = write(d->hPhone, (unsigned char *)buf, nbytes - actual); | 299 | ret = write(d->hPhone, (unsigned char *)buf, nbytes - actual); |
291 | if (ret < 0 && errno == EAGAIN) continue; | 300 | if (ret < 0 && errno == EAGAIN) continue; |
292 | if (ret < 0) { | 301 | if (ret < 0) { |
293 | if (actual != nbytes) GSM_OSErrorInfo(s,"serial_write"); | 302 | if (actual != nbytes) GSM_OSErrorInfo(s,"serial_write"); |
294 | return actual; | 303 | return actual; |
295 | } | 304 | } |
diff --git a/gammu/emb/common/device/serial/ser_w32.c b/gammu/emb/common/device/serial/ser_w32.c index 7d88fc7..a7919fe 100644 --- a/gammu/emb/common/device/serial/ser_w32.c +++ b/gammu/emb/common/device/serial/ser_w32.c | |||
@@ -1,14 +1,23 @@ | |||
1 | /* (c) 2002-2004 by Marcin Wiacek */ | 1 | /* (c) 2002-2004 by Marcin Wiacek */ |
2 | /* based on some work from MSDN and others */ | 2 | /* based on some work from MSDN and others */ |
3 | /* based on some work from Gnokii (www.gnokii.org) | 3 | /* based on some work from Gnokii (www.gnokii.org) |
4 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot | 4 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot |
5 | * GNU GPL version 2 or later | 5 | * GNU GPL version 2 or later |
6 | */ | 6 | */ |
7 | /* Due to a problem in the source code management, the names of some of | ||
8 | * the authors have unfortunately been lost. We do not mean to belittle | ||
9 | * their efforts and hope they will contact us to see their names | ||
10 | * properly added to the Copyright notice above. | ||
11 | * Having published their contributions under the terms of the GNU | ||
12 | * General Public License (GPL) [version 2], the Copyright of these | ||
13 | * authors will remain respected by adhering to the license they chose | ||
14 | * to publish their code under. | ||
15 | */ | ||
7 | 16 | ||
8 | #include "../../gsmstate.h" | 17 | #include "../../gsmstate.h" |
9 | 18 | ||
10 | #ifdef GSM_ENABLE_SERIALDEVICE | 19 | #ifdef GSM_ENABLE_SERIALDEVICE |
11 | #ifdef WIN32 | 20 | #ifdef WIN32 |
12 | 21 | ||
13 | #include <windows.h> | 22 | #include <windows.h> |
14 | #include <string.h> | 23 | #include <string.h> |
diff --git a/gammu/emb/common/gsmstate.c b/gammu/emb/common/gsmstate.c index 31e365d..c65dc01 100644 --- a/gammu/emb/common/gsmstate.c +++ b/gammu/emb/common/gsmstate.c | |||
@@ -549,17 +549,17 @@ GSM_Error GSM_WaitFor (GSM_StateMachine *s, unsigned char *buffer, | |||
549 | 549 | ||
550 | static GSM_Error CheckReplyFunctions(GSM_StateMachine *s, GSM_Reply_Function *Reply, int *reply) | 550 | static GSM_Error CheckReplyFunctions(GSM_StateMachine *s, GSM_Reply_Function *Reply, int *reply) |
551 | { | 551 | { |
552 | GSM_Phone_Data *Data = &s->Phone.Data; | 552 | GSM_Phone_Data *Data = &s->Phone.Data; |
553 | GSM_Protocol_Message *msg = s->Phone.Data.RequestMsg; | 553 | GSM_Protocol_Message *msg = s->Phone.Data.RequestMsg; |
554 | bool execute; | 554 | bool execute; |
555 | bool available = false; | 555 | bool available = false; |
556 | int i = 0; | 556 | int i = 0; |
557 | //int j; | 557 | // int j; |
558 | 558 | ||
559 | while (Reply[i].requestID!=ID_None) { | 559 | while (Reply[i].requestID!=ID_None) { |
560 | execute=false; | 560 | execute=false; |
561 | /* Binary frames like in Nokia */ | 561 | /* Binary frames like in Nokia */ |
562 | if (strlen(Reply[i].msgtype) < 2) { | 562 | if (strlen(Reply[i].msgtype) < 2) { |
563 | if (Reply[i].msgtype[0]==msg->Type) { | 563 | if (Reply[i].msgtype[0]==msg->Type) { |
564 | if (Reply[i].subtypechar!=0) { | 564 | if (Reply[i].subtypechar!=0) { |
565 | if (Reply[i].subtypechar<=msg->Length) { | 565 | if (Reply[i].subtypechar<=msg->Length) { |
@@ -865,16 +865,17 @@ static OnePhoneModel allmodels[] = { | |||
865 | {"1100b","RH-36" ,"", {0}}, | 865 | {"1100b","RH-36" ,"", {0}}, |
866 | #endif | 866 | #endif |
867 | #ifdef GSM_ENABLE_NOKIA6110 | 867 | #ifdef GSM_ENABLE_NOKIA6110 |
868 | {"2100" ,"NAM-2" ,"", {F_NOWAP,F_NOCALLER,F_RING_SM,F_CAL33,F_POWER_BATT,F_PROFILES33,F_NOCALLINFO,F_NODTMF,0}},//quess | 868 | {"2100" ,"NAM-2" ,"", {F_NOWAP,F_NOCALLER,F_RING_SM,F_CAL33,F_POWER_BATT,F_PROFILES33,F_NOCALLINFO,F_NODTMF,0}},//quess |
869 | #endif | 869 | #endif |
870 | #ifdef GSM_ENABLE_NOKIA6510 | 870 | #ifdef GSM_ENABLE_NOKIA6510 |
871 | {"3100" ,"RH-19" ,"", {F_PBKTONEGAL,F_PBKSMSLIST,0}},//fixme | 871 | {"3100" ,"RH-19" ,"", {F_PBKTONEGAL,F_PBKSMSLIST,0}},//fixme |
872 | {"3100b","RH-50" ,"", {F_PBKTONEGAL,F_PBKSMSLIST,0}},//fixme | 872 | {"3100b","RH-50" ,"", {F_PBKTONEGAL,F_PBKSMSLIST,0}},//fixme |
873 | {"3105" ,"RH-48" ,"Nokia 3105",{F_PBKTONEGAL,F_PBKSMSLIST,F_VOICETAGS,0}},//fixme | ||
873 | {"3108", "RH-6", "Nokia 3108",{0}}, //does it have irda ? | 874 | {"3108", "RH-6", "Nokia 3108",{0}}, //does it have irda ? |
874 | {"3200", "RH-30" ,"Nokia 3200",{F_PBKTONEGAL,0}},//fixme | 875 | {"3200", "RH-30" ,"Nokia 3200",{F_PBKTONEGAL,0}},//fixme |
875 | {"3200a","RH-31" ,"Nokia 3200",{F_PBKTONEGAL,0}},//fixme | 876 | {"3200a","RH-31" ,"Nokia 3200",{F_PBKTONEGAL,0}},//fixme |
876 | #endif | 877 | #endif |
877 | #ifdef GSM_ENABLE_NOKIA6110 | 878 | #ifdef GSM_ENABLE_NOKIA6110 |
878 | {"3210" ,"NSE-8" ,"", {F_NOWAP,F_NOCALLER,F_NOCALENDAR,F_NOPBKUNICODE,F_POWER_BATT,F_PROFILES51,F_NOPICTUREUNI,F_NOCALLINFO,F_NODTMF,0}}, | 879 | {"3210" ,"NSE-8" ,"", {F_NOWAP,F_NOCALLER,F_NOCALENDAR,F_NOPBKUNICODE,F_POWER_BATT,F_PROFILES51,F_NOPICTUREUNI,F_NOCALLINFO,F_NODTMF,0}}, |
879 | {"3210" ,"NSE-9" ,"", {F_NOWAP,F_NOCALLER,F_NOCALENDAR,F_NOPBKUNICODE,F_POWER_BATT,F_PROFILES51,F_NOPICTUREUNI,F_NOCALLINFO,F_NODTMF,0}}, | 880 | {"3210" ,"NSE-9" ,"", {F_NOWAP,F_NOCALLER,F_NOCALENDAR,F_NOPBKUNICODE,F_POWER_BATT,F_PROFILES51,F_NOPICTUREUNI,F_NOCALLINFO,F_NODTMF,0}}, |
880 | #endif | 881 | #endif |
@@ -949,18 +950,18 @@ static OnePhoneModel allmodels[] = { | |||
949 | {"6310" ,"NPE-4" ,"Nokia 6310", {F_TODO63,F_CAL65,F_NOMIDI,F_NOMMS,F_VOICETAGS,0}}, | 950 | {"6310" ,"NPE-4" ,"Nokia 6310", {F_TODO63,F_CAL65,F_NOMIDI,F_NOMMS,F_VOICETAGS,0}}, |
950 | {"6310i","NPL-1" ,"Nokia 6310i",{F_TODO63,F_CAL65,F_NOMIDI,F_BLUETOOTH,F_NOMMS,F_VOICETAGS,0}}, | 951 | {"6310i","NPL-1" ,"Nokia 6310i",{F_TODO63,F_CAL65,F_NOMIDI,F_BLUETOOTH,F_NOMMS,F_VOICETAGS,0}}, |
951 | {"6385" ,"NHP-2AX","Nokia 6385",{F_TODO63,F_CAL65,F_NOMIDI,F_NOMMS,F_VOICETAGS,0}}, | 952 | {"6385" ,"NHP-2AX","Nokia 6385",{F_TODO63,F_CAL65,F_NOMIDI,F_NOMMS,F_VOICETAGS,0}}, |
952 | {"6510" ,"NPM-9" ,"Nokia 6510", {F_TODO63,F_CAL65,F_NOMIDI,F_RADIO,F_NOFILESYSTEM,F_NOMMS,F_VOICETAGS,0}}, | 953 | {"6510" ,"NPM-9" ,"Nokia 6510", {F_TODO63,F_CAL65,F_NOMIDI,F_RADIO,F_NOFILESYSTEM,F_NOMMS,F_VOICETAGS,0}}, |
953 | {"6610" ,"NHL-4U","Nokia 6610", {F_PBKTONEGAL,F_TODO66,F_RADIO,0}}, | 954 | {"6610" ,"NHL-4U","Nokia 6610", {F_PBKTONEGAL,F_TODO66,F_RADIO,0}}, |
954 | {"6610i","RM-37" ,"Nokia 6610i",{F_PBKTONEGAL,F_TODO66,F_RADIO,0}}, | 955 | {"6610i","RM-37" ,"Nokia 6610i",{F_PBKTONEGAL,F_TODO66,F_RADIO,0}}, |
955 | {"6800" ,"NSB-9" ,"Nokia 6800", {F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKSMSLIST,0}}, | 956 | {"6800" ,"NSB-9" ,"Nokia 6800", {F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKSMSLIST,0}}, |
956 | {"6800" ,"NHL-6" ,"Nokia 6800", {F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKSMSLIST,0}}, | 957 | {"6800" ,"NHL-6" ,"Nokia 6800", {F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKSMSLIST,0}}, |
957 | {"6810" ,"RM-2" ,"Nokia 6810", {F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKSMSLIST,0}},//quess | 958 | {"6810" ,"RM-2" ,"Nokia 6810", {F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKSMSLIST,F_NOTES,0}},//quess |
958 | {"6820" ,"NHL-9" ,"Nokia 6820", {F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKSMSLIST,0}},//quess | 959 | {"6820" ,"NHL-9" ,"Nokia 6820", {F_PBKTONEGAL,F_TODO66,F_PBKSMSLIST,F_NOTES,0}},//quess |
959 | #endif | 960 | #endif |
960 | #if defined(GSM_ENABLE_ATGEN) || defined(GSM_ENABLE_NOKIA7110) | 961 | #if defined(GSM_ENABLE_ATGEN) || defined(GSM_ENABLE_NOKIA7110) |
961 | {"7110" ,"NSE-5" ,"Nokia 7110", {F_CAL62,0}}, | 962 | {"7110" ,"NSE-5" ,"Nokia 7110", {F_CAL62,0}}, |
962 | {"7190" ,"NSB-5" ,"Nokia 7190", {F_CAL62,0}}, | 963 | {"7190" ,"NSB-5" ,"Nokia 7190", {F_CAL62,0}}, |
963 | #endif | 964 | #endif |
964 | #if defined(GSM_ENABLE_ATGEN) || defined(GSM_ENABLE_NOKIA6510) | 965 | #if defined(GSM_ENABLE_ATGEN) || defined(GSM_ENABLE_NOKIA6510) |
965 | {"7200" ,"RH-23" ,"Nokia 7200", {F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKSMSLIST,F_PBKUSER,0}},//quess | 966 | {"7200" ,"RH-23" ,"Nokia 7200", {F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKSMSLIST,F_PBKUSER,0}},//quess |
966 | {"7210" ,"NHL-4" ,"Nokia 7210", {F_PBKTONEGAL,F_TODO66,F_RADIO,0}}, | 967 | {"7210" ,"NHL-4" ,"Nokia 7210", {F_PBKTONEGAL,F_TODO66,F_RADIO,0}}, |
diff --git a/gammu/emb/common/gsmstate.h b/gammu/emb/common/gsmstate.h index 2b4806c..6861fbc 100644 --- a/gammu/emb/common/gsmstate.h +++ b/gammu/emb/common/gsmstate.h | |||
@@ -373,16 +373,17 @@ typedef enum { | |||
373 | ID_GetMemoryStatus, | 373 | ID_GetMemoryStatus, |
374 | ID_GetSMSC, | 374 | ID_GetSMSC, |
375 | ID_GetSMSMessage, | 375 | ID_GetSMSMessage, |
376 | ID_EnableEcho, | 376 | ID_EnableEcho, |
377 | ID_EnableErrorInfo, | 377 | ID_EnableErrorInfo, |
378 | ID_SetOBEX, | 378 | ID_SetOBEX, |
379 | ID_SetUSSD, | 379 | ID_SetUSSD, |
380 | ID_GetNote, | 380 | ID_GetNote, |
381 | ID_SetNote, | ||
381 | ID_GetSignalQuality, | 382 | ID_GetSignalQuality, |
382 | ID_GetBatteryCharge, | 383 | ID_GetBatteryCharge, |
383 | ID_GetSMSFolders, | 384 | ID_GetSMSFolders, |
384 | ID_GetSMSFolderStatus, | 385 | ID_GetSMSFolderStatus, |
385 | ID_GetSMSStatus, | 386 | ID_GetSMSStatus, |
386 | ID_AddSMSFolder, | 387 | ID_AddSMSFolder, |
387 | ID_GetNetworkInfo, | 388 | ID_GetNetworkInfo, |
388 | ID_GetRingtone, | 389 | ID_GetRingtone, |
@@ -1285,19 +1286,44 @@ typedef struct { | |||
1285 | * Reads calendar settings. | 1286 | * Reads calendar settings. |
1286 | */ | 1287 | */ |
1287 | GSM_Error (*GetCalendarSettings)(GSM_StateMachine *s, GSM_CalendarSettings *settings); | 1288 | GSM_Error (*GetCalendarSettings)(GSM_StateMachine *s, GSM_CalendarSettings *settings); |
1288 | /** | 1289 | /** |
1289 | * Sets calendar settings. | 1290 | * Sets calendar settings. |
1290 | */ | 1291 | */ |
1291 | GSM_Error (*SetCalendarSettings)(GSM_StateMachine *s, GSM_CalendarSettings *settings); | 1292 | GSM_Error (*SetCalendarSettings)(GSM_StateMachine *s, GSM_CalendarSettings *settings); |
1292 | /** | 1293 | /** |
1293 | * Gets note. | 1294 | * Retrieves notes status (number of used entries). |
1294 | */ | 1295 | */ |
1295 | GSM_Error (*GetNextNote)(GSM_StateMachine *s, GSM_NoteEntry *Note, bool refresh); | 1296 | GSM_Error (*GetNotesStatus) (GSM_StateMachine *s, GSM_ToDoStatus *status); |
1297 | /** | ||
1298 | * Retrieves notes entry. | ||
1299 | */ | ||
1300 | GSM_Error (*GetNote) (GSM_StateMachine *s, GSM_NoteEntry *Note); | ||
1301 | /** | ||
1302 | * Retrieves note entry. This is useful for continuous reading of all | ||
1303 | * notes entries. | ||
1304 | */ | ||
1305 | GSM_Error (*GetNextNote) (GSM_StateMachine *s, GSM_NoteEntry *Note, bool start); | ||
1306 | /** | ||
1307 | * Sets note entry | ||
1308 | */ | ||
1309 | GSM_Error (*SetNote) (GSM_StateMachine *s, GSM_NoteEntry *Note); | ||
1310 | /** | ||
1311 | * Adds note entry. | ||
1312 | */ | ||
1313 | GSM_Error (*AddNote) (GSM_StateMachine *s, GSM_NoteEntry *Note); | ||
1314 | /** | ||
1315 | * Deletes note entry. | ||
1316 | */ | ||
1317 | GSM_Error (*DeleteNote) (GSM_StateMachine *s, GSM_NoteEntry *Note); | ||
1318 | /** | ||
1319 | * Deletes all notes entries. | ||
1320 | */ | ||
1321 | GSM_Error (*DeleteAllNotes) (GSM_StateMachine *s); | ||
1296 | /** | 1322 | /** |
1297 | * Reads profile. | 1323 | * Reads profile. |
1298 | */ | 1324 | */ |
1299 | GSM_Error (*GetProfile) (GSM_StateMachine *s, GSM_Profile *Profile); | 1325 | GSM_Error (*GetProfile) (GSM_StateMachine *s, GSM_Profile *Profile); |
1300 | /** | 1326 | /** |
1301 | * Updates profile. | 1327 | * Updates profile. |
1302 | */ | 1328 | */ |
1303 | GSM_Error (*SetProfile) (GSM_StateMachine *s, GSM_Profile *Profile); | 1329 | GSM_Error (*SetProfile) (GSM_StateMachine *s, GSM_Profile *Profile); |
diff --git a/gammu/emb/common/phone/alcatel/alcatel.c b/gammu/emb/common/phone/alcatel/alcatel.c index 3821f13..b75077f 100644 --- a/gammu/emb/common/phone/alcatel/alcatel.c +++ b/gammu/emb/common/phone/alcatel/alcatel.c | |||
@@ -3974,17 +3974,23 @@ GSM_Phone_Functions ALCATELPhone = { | |||
3974 | ALCATEL_GetCalendar, | 3974 | ALCATEL_GetCalendar, |
3975 | ALCATEL_GetNextCalendar, | 3975 | ALCATEL_GetNextCalendar, |
3976 | ALCATEL_SetCalendar, | 3976 | ALCATEL_SetCalendar, |
3977 | ALCATEL_AddCalendar, | 3977 | ALCATEL_AddCalendar, |
3978 | ALCATEL_DeleteCalendar, | 3978 | ALCATEL_DeleteCalendar, |
3979 | ALCATEL_DeleteAllCalendar, | 3979 | ALCATEL_DeleteAllCalendar, |
3980 | NOTSUPPORTED, /* GetCalendarSettings*/ | 3980 | NOTSUPPORTED, /* GetCalendarSettings*/ |
3981 | NOTSUPPORTED, /* SetCalendarSettings*/ | 3981 | NOTSUPPORTED, /* SetCalendarSettings*/ |
3982 | NOTSUPPORTED, /* GetNoteStatus */ | ||
3983 | NOTSUPPORTED, /* GetNote */ | ||
3982 | NOTSUPPORTED, /* GetNextNote */ | 3984 | NOTSUPPORTED, /* GetNextNote */ |
3985 | NOTSUPPORTED, /* SetNote */ | ||
3986 | NOTSUPPORTED, /* AddNote */ | ||
3987 | NOTSUPPORTED, /* DeleteNote */ | ||
3988 | NOTSUPPORTED, /* DeleteAllNotes */ | ||
3983 | NOTSUPPORTED, /* GetProfile */ | 3989 | NOTSUPPORTED, /* GetProfile */ |
3984 | NOTSUPPORTED, /* SetProfile */ | 3990 | NOTSUPPORTED, /* SetProfile */ |
3985 | NOTSUPPORTED, /* GetFMStation */ | 3991 | NOTSUPPORTED, /* GetFMStation */ |
3986 | NOTSUPPORTED, /* SetFMStation */ | 3992 | NOTSUPPORTED, /* SetFMStation */ |
3987 | NOTSUPPORTED, /* ClearFMStations */ | 3993 | NOTSUPPORTED, /* ClearFMStations */ |
3988 | NOTSUPPORTED, /* GetNextFileFolder*/ | 3994 | NOTSUPPORTED, /* GetNextFileFolder*/ |
3989 | NOTSUPPORTED, /* GetFilePart */ | 3995 | NOTSUPPORTED, /* GetFilePart */ |
3990 | NOTSUPPORTED, /* AddFilePart */ | 3996 | NOTSUPPORTED, /* AddFilePart */ |
diff --git a/gammu/emb/common/phone/at/atgen.c b/gammu/emb/common/phone/at/atgen.c index ba23eb2..a875f0a 100644 --- a/gammu/emb/common/phone/at/atgen.c +++ b/gammu/emb/common/phone/at/atgen.c | |||
@@ -691,17 +691,17 @@ GSM_Error ATGEN_Initialise(GSM_StateMachine *s) | |||
691 | 691 | ||
692 | return error; | 692 | return error; |
693 | } | 693 | } |
694 | 694 | ||
695 | GSM_Error ATGEN_SetSMSC(GSM_StateMachine *s, GSM_SMSC *smsc) | 695 | GSM_Error ATGEN_SetSMSC(GSM_StateMachine *s, GSM_SMSC *smsc) |
696 | { | 696 | { |
697 | unsigned char req[50]; | 697 | unsigned char req[50]; |
698 | 698 | ||
699 | if (smsc->Location!=1) return ERR_NOTSUPPORTED; | 699 | if (smsc->Location!=1) return ERR_INVALIDLOCATION; |
700 | 700 | ||
701 | sprintf(req, "AT+CSCA=\"%s\"\r",DecodeUnicodeString(smsc->Number)); | 701 | sprintf(req, "AT+CSCA=\"%s\"\r",DecodeUnicodeString(smsc->Number)); |
702 | 702 | ||
703 | smprintf(s, "Setting SMSC\n"); | 703 | smprintf(s, "Setting SMSC\n"); |
704 | return GSM_WaitFor (s, req, strlen(req), 0x00, 4, ID_SetSMSC); | 704 | return GSM_WaitFor (s, req, strlen(req), 0x00, 4, ID_SetSMSC); |
705 | } | 705 | } |
706 | 706 | ||
707 | GSM_Error ATGEN_ReplyGetSMSMemories(GSM_Protocol_Message msg, GSM_StateMachine *s) | 707 | GSM_Error ATGEN_ReplyGetSMSMemories(GSM_Protocol_Message msg, GSM_StateMachine *s) |
@@ -3834,17 +3834,23 @@ GSM_Phone_Functions ATGENPhone = { | |||
3834 | NOTIMPLEMENTED, /* GetCalendar */ | 3834 | NOTIMPLEMENTED, /* GetCalendar */ |
3835 | ATGEN_GetNextCalendar, | 3835 | ATGEN_GetNextCalendar, |
3836 | NOTIMPLEMENTED, /* SetCalendar */ | 3836 | NOTIMPLEMENTED, /* SetCalendar */ |
3837 | ATGEN_AddCalendarNote, | 3837 | ATGEN_AddCalendarNote, |
3838 | ATGEN_DelCalendarNote, | 3838 | ATGEN_DelCalendarNote, |
3839 | NOTIMPLEMENTED, /* DeleteAllCalendar*/ | 3839 | NOTIMPLEMENTED, /* DeleteAllCalendar*/ |
3840 | NOTSUPPORTED, /* GetCalendarSettings*/ | 3840 | NOTSUPPORTED, /* GetCalendarSettings*/ |
3841 | NOTSUPPORTED, /* SetCalendarSettings*/ | 3841 | NOTSUPPORTED, /* SetCalendarSettings*/ |
3842 | NOTSUPPORTED, /* GetNoteStatus */ | ||
3843 | NOTSUPPORTED, /* GetNote */ | ||
3842 | NOTSUPPORTED, /* GetNextNote */ | 3844 | NOTSUPPORTED, /* GetNextNote */ |
3845 | NOTSUPPORTED, /* SetNote */ | ||
3846 | NOTSUPPORTED, /* AddNote */ | ||
3847 | NOTSUPPORTED, /* DeleteNote */ | ||
3848 | NOTSUPPORTED, /* DeleteAllNotes */ | ||
3843 | NOTSUPPORTED, /* GetProfile */ | 3849 | NOTSUPPORTED, /* GetProfile */ |
3844 | NOTSUPPORTED, /* SetProfile */ | 3850 | NOTSUPPORTED, /* SetProfile */ |
3845 | NOTSUPPORTED, /* GetFMStation */ | 3851 | NOTSUPPORTED, /* GetFMStation */ |
3846 | NOTSUPPORTED, /* SetFMStation */ | 3852 | NOTSUPPORTED, /* SetFMStation */ |
3847 | NOTSUPPORTED, /* ClearFMStations */ | 3853 | NOTSUPPORTED, /* ClearFMStations */ |
3848 | NOTSUPPORTED, /* GetNextFileFolder*/ | 3854 | NOTSUPPORTED, /* GetNextFileFolder*/ |
3849 | NOTSUPPORTED, /* GetFilePart */ | 3855 | NOTSUPPORTED, /* GetFilePart */ |
3850 | NOTSUPPORTED, /* AddFile */ | 3856 | NOTSUPPORTED, /* AddFile */ |
diff --git a/gammu/emb/common/phone/at/sonyeric.c b/gammu/emb/common/phone/at/sonyeric.c index 8eeb39b..363e043 100644 --- a/gammu/emb/common/phone/at/sonyeric.c +++ b/gammu/emb/common/phone/at/sonyeric.c | |||
@@ -9,20 +9,21 @@ | |||
9 | #include <ctype.h> | 9 | #include <ctype.h> |
10 | 10 | ||
11 | #include "../../gsmcomon.h" | 11 | #include "../../gsmcomon.h" |
12 | #include "../../misc/coding/coding.h" | 12 | #include "../../misc/coding/coding.h" |
13 | 13 | ||
14 | #include "atgen.h" | 14 | #include "atgen.h" |
15 | #include "sonyeric.h" | 15 | #include "sonyeric.h" |
16 | 16 | ||
17 | #ifdef GSM_ENABLE_OBEXGEN | 17 | #if defined(GSM_ENABLE_BLUEOBEX) || defined(GSM_ENABLE_IRDAOBEX) |
18 | 18 | ||
19 | #include "../obex/obexgen.h" | 19 | #include "../obex/obexgen.h" |
20 | 20 | ||
21 | extern GSM_Protocol_Functions OBEXProtocol; | ||
21 | extern GSM_Reply_FunctionOBEXGENReplyFunctions[]; | 22 | extern GSM_Reply_FunctionOBEXGENReplyFunctions[]; |
22 | extern GSM_Reply_FunctionATGENReplyFunctions[]; | 23 | extern GSM_Reply_FunctionATGENReplyFunctions[]; |
23 | 24 | ||
24 | static GSM_Error SONYERIC_SetOBEXMode(GSM_StateMachine *s) | 25 | static GSM_Error SONYERIC_SetOBEXMode(GSM_StateMachine *s) |
25 | { | 26 | { |
26 | GSM_Phone_ATGENData*Priv = &s->Phone.Data.Priv.ATGEN; | 27 | GSM_Phone_ATGENData*Priv = &s->Phone.Data.Priv.ATGEN; |
27 | GSM_Error error; | 28 | GSM_Error error; |
28 | 29 | ||
@@ -119,17 +120,17 @@ static GSM_Error SONYERIC_SetFile(GSM_StateMachine *s, unsigned char *FileName, | |||
119 | 120 | ||
120 | return SONYERIC_SetATMode(s); | 121 | return SONYERIC_SetATMode(s); |
121 | } | 122 | } |
122 | 123 | ||
123 | #endif | 124 | #endif |
124 | 125 | ||
125 | GSM_Error SONYERIC_GetNextCalendar(GSM_StateMachine *s, GSM_CalendarEntry *Note, bool start) | 126 | GSM_Error SONYERIC_GetNextCalendar(GSM_StateMachine *s, GSM_CalendarEntry *Note, bool start) |
126 | { | 127 | { |
127 | #ifdef GSM_ENABLE_OBEXGEN | 128 | #if defined(GSM_ENABLE_BLUEOBEX) || defined(GSM_ENABLE_IRDAOBEX) |
128 | GSM_Error error; | 129 | GSM_Error error; |
129 | GSM_ToDoEntry ToDo; | 130 | GSM_ToDoEntry ToDo; |
130 | int Pos, num, Loc; | 131 | int Pos, num, Loc; |
131 | GSM_Phone_ATGENData*Priv = &s->Phone.Data.Priv.ATGEN; | 132 | GSM_Phone_ATGENData*Priv = &s->Phone.Data.Priv.ATGEN; |
132 | 133 | ||
133 | if (start) { | 134 | if (start) { |
134 | error = SONYERIC_GetFile(s, &Priv->file, "telecom/cal.vcs"); | 135 | error = SONYERIC_GetFile(s, &Priv->file, "telecom/cal.vcs"); |
135 | if (error != ERR_NONE) return error; | 136 | if (error != ERR_NONE) return error; |
@@ -155,17 +156,17 @@ GSM_Error SONYERIC_GetNextCalendar(GSM_StateMachine *s, GSM_CalendarEntry *Note, | |||
155 | return ERR_EMPTY; | 156 | return ERR_EMPTY; |
156 | #else | 157 | #else |
157 | return ERR_SOURCENOTAVAILABLE; | 158 | return ERR_SOURCENOTAVAILABLE; |
158 | #endif | 159 | #endif |
159 | } | 160 | } |
160 | 161 | ||
161 | GSM_Error SONYERIC_GetNextToDo(GSM_StateMachine *s, GSM_ToDoEntry *ToDo, bool start) | 162 | GSM_Error SONYERIC_GetNextToDo(GSM_StateMachine *s, GSM_ToDoEntry *ToDo, bool start) |
162 | { | 163 | { |
163 | #ifdef GSM_ENABLE_OBEXGEN | 164 | #if defined(GSM_ENABLE_BLUEOBEX) || defined(GSM_ENABLE_IRDAOBEX) |
164 | GSM_Error error; | 165 | GSM_Error error; |
165 | GSM_CalendarEntryCalendar; | 166 | GSM_CalendarEntryCalendar; |
166 | int Pos, num, Loc; | 167 | int Pos, num, Loc; |
167 | GSM_Phone_ATGENData*Priv = &s->Phone.Data.Priv.ATGEN; | 168 | GSM_Phone_ATGENData*Priv = &s->Phone.Data.Priv.ATGEN; |
168 | 169 | ||
169 | if (Priv->Manufacturer!=AT_Ericsson) return ERR_NOTSUPPORTED; | 170 | if (Priv->Manufacturer!=AT_Ericsson) return ERR_NOTSUPPORTED; |
170 | 171 | ||
171 | if (start) { | 172 | if (start) { |
@@ -194,17 +195,17 @@ GSM_Error SONYERIC_GetNextToDo(GSM_StateMachine *s, GSM_ToDoEntry *ToDo, bool st | |||
194 | return ERR_EMPTY; | 195 | return ERR_EMPTY; |
195 | #else | 196 | #else |
196 | return ERR_SOURCENOTAVAILABLE; | 197 | return ERR_SOURCENOTAVAILABLE; |
197 | #endif | 198 | #endif |
198 | } | 199 | } |
199 | 200 | ||
200 | GSM_Error SONYERIC_GetToDoStatus(GSM_StateMachine *s, GSM_ToDoStatus *status) | 201 | GSM_Error SONYERIC_GetToDoStatus(GSM_StateMachine *s, GSM_ToDoStatus *status) |
201 | { | 202 | { |
202 | #ifdef GSM_ENABLE_OBEXGEN | 203 | #if defined(GSM_ENABLE_BLUEOBEX) || defined(GSM_ENABLE_IRDAOBEX) |
203 | GSM_Error error; | 204 | GSM_Error error; |
204 | GSM_ToDoEntry ToDo; | 205 | GSM_ToDoEntry ToDo; |
205 | GSM_CalendarEntry Calendar; | 206 | GSM_CalendarEntry Calendar; |
206 | int Pos; | 207 | int Pos; |
207 | GSM_Phone_ATGENData*Priv = &s->Phone.Data.Priv.ATGEN; | 208 | GSM_Phone_ATGENData*Priv = &s->Phone.Data.Priv.ATGEN; |
208 | 209 | ||
209 | if (Priv->Manufacturer!=AT_Ericsson) return ERR_NOTSUPPORTED; | 210 | if (Priv->Manufacturer!=AT_Ericsson) return ERR_NOTSUPPORTED; |
210 | 211 | ||
@@ -225,33 +226,33 @@ GSM_Error SONYERIC_GetToDoStatus(GSM_StateMachine *s, GSM_ToDoStatus *status) | |||
225 | return ERR_NONE; | 226 | return ERR_NONE; |
226 | #else | 227 | #else |
227 | return ERR_SOURCENOTAVAILABLE; | 228 | return ERR_SOURCENOTAVAILABLE; |
228 | #endif | 229 | #endif |
229 | } | 230 | } |
230 | 231 | ||
231 | GSM_Error SONYERIC_AddCalendarNote(GSM_StateMachine *s, GSM_CalendarEntry *Note) | 232 | GSM_Error SONYERIC_AddCalendarNote(GSM_StateMachine *s, GSM_CalendarEntry *Note) |
232 | { | 233 | { |
233 | #ifdef GSM_ENABLE_OBEXGEN | 234 | #if defined(GSM_ENABLE_BLUEOBEX) || defined(GSM_ENABLE_IRDAOBEX) |
234 | unsigned char req[5000]; | 235 | unsigned char req[5000]; |
235 | int size=0; | 236 | int size=0; |
236 | 237 | ||
237 | smprintf(s,"Adding calendar note\n"); | 238 | smprintf(s,"Adding calendar note\n"); |
238 | 239 | ||
239 | GSM_EncodeVCALENDAR(req,&size,Note,true,SonyEricsson_VCalendar); | 240 | GSM_EncodeVCALENDAR(req,&size,Note,true,SonyEricsson_VCalendar); |
240 | 241 | ||
241 | return SONYERIC_SetFile(s, "telecom/cal/luid/.vcs", req, size); | 242 | return SONYERIC_SetFile(s, "telecom/cal/luid/.vcs", req, size); |
242 | #else | 243 | #else |
243 | return ERR_SOURCENOTAVAILABLE; | 244 | return ERR_SOURCENOTAVAILABLE; |
244 | #endif | 245 | #endif |
245 | } | 246 | } |
246 | 247 | ||
247 | GSM_Error SONYERIC_AddToDo(GSM_StateMachine *s, GSM_ToDoEntry *ToDo) | 248 | GSM_Error SONYERIC_AddToDo(GSM_StateMachine *s, GSM_ToDoEntry *ToDo) |
248 | { | 249 | { |
249 | #ifdef GSM_ENABLE_OBEXGEN | 250 | #if defined(GSM_ENABLE_BLUEOBEX) || defined(GSM_ENABLE_IRDAOBEX) |
250 | GSM_Phone_ATGENData*Priv = &s->Phone.Data.Priv.ATGEN; | 251 | GSM_Phone_ATGENData*Priv = &s->Phone.Data.Priv.ATGEN; |
251 | unsigned char req[5000]; | 252 | unsigned char req[5000]; |
252 | int size=0; | 253 | int size=0; |
253 | 254 | ||
254 | if (Priv->Manufacturer!=AT_Ericsson) return ERR_NOTSUPPORTED; | 255 | if (Priv->Manufacturer!=AT_Ericsson) return ERR_NOTSUPPORTED; |
255 | 256 | ||
256 | smprintf(s,"Adding ToDo\n"); | 257 | smprintf(s,"Adding ToDo\n"); |
257 | 258 | ||
@@ -260,17 +261,17 @@ GSM_Error SONYERIC_AddToDo(GSM_StateMachine *s, GSM_ToDoEntry *ToDo) | |||
260 | return SONYERIC_SetFile(s, "telecom/cal/luid/.vcs", req, size); | 261 | return SONYERIC_SetFile(s, "telecom/cal/luid/.vcs", req, size); |
261 | #else | 262 | #else |
262 | return ERR_SOURCENOTAVAILABLE; | 263 | return ERR_SOURCENOTAVAILABLE; |
263 | #endif | 264 | #endif |
264 | } | 265 | } |
265 | 266 | ||
266 | GSM_Error SONYERIC_DeleteAllToDo(GSM_StateMachine *s) | 267 | GSM_Error SONYERIC_DeleteAllToDo(GSM_StateMachine *s) |
267 | { | 268 | { |
268 | #ifdef GSM_ENABLE_OBEXGEN | 269 | #if defined(GSM_ENABLE_BLUEOBEX) || defined(GSM_ENABLE_IRDAOBEX) |
269 | GSM_Error error; | 270 | GSM_Error error; |
270 | int Pos,Level = 0,Used; | 271 | int Pos,Level = 0,Used; |
271 | unsigned char *Buf; | 272 | unsigned char *Buf; |
272 | GSM_Phone_ATGENData*Priv = &s->Phone.Data.Priv.ATGEN; | 273 | GSM_Phone_ATGENData*Priv = &s->Phone.Data.Priv.ATGEN; |
273 | unsigned char Line[2000]; | 274 | unsigned char Line[2000]; |
274 | 275 | ||
275 | if (Priv->Manufacturer!=AT_Ericsson) return ERR_NOTSUPPORTED; | 276 | if (Priv->Manufacturer!=AT_Ericsson) return ERR_NOTSUPPORTED; |
276 | 277 | ||
@@ -312,17 +313,17 @@ GSM_Error SONYERIC_DeleteAllToDo(GSM_StateMachine *s) | |||
312 | return error; | 313 | return error; |
313 | #else | 314 | #else |
314 | return ERR_SOURCENOTAVAILABLE; | 315 | return ERR_SOURCENOTAVAILABLE; |
315 | #endif | 316 | #endif |
316 | } | 317 | } |
317 | 318 | ||
318 | GSM_Error SONYERIC_DelCalendarNote(GSM_StateMachine *s, GSM_CalendarEntry *Note) | 319 | GSM_Error SONYERIC_DelCalendarNote(GSM_StateMachine *s, GSM_CalendarEntry *Note) |
319 | { | 320 | { |
320 | #ifdef GSM_ENABLE_OBEXGEN | 321 | #if defined(GSM_ENABLE_BLUEOBEX) || defined(GSM_ENABLE_IRDAOBEX) |
321 | GSM_Error error; | 322 | GSM_Error error; |
322 | int Pos,Level = 0,Loc=0,Used; | 323 | int Pos,Level = 0,Loc=0,Used; |
323 | GSM_Phone_ATGENData*Priv = &s->Phone.Data.Priv.ATGEN; | 324 | GSM_Phone_ATGENData*Priv = &s->Phone.Data.Priv.ATGEN; |
324 | unsigned char Line[2000]; | 325 | unsigned char Line[2000]; |
325 | unsigned char *Buf; | 326 | unsigned char *Buf; |
326 | 327 | ||
327 | smprintf(s, "Deleting calendar note %i\n",Note->Location); | 328 | smprintf(s, "Deleting calendar note %i\n",Note->Location); |
328 | 329 | ||
@@ -367,17 +368,17 @@ GSM_Error SONYERIC_DelCalendarNote(GSM_StateMachine *s, GSM_CalendarEntry *Note) | |||
367 | return error; | 368 | return error; |
368 | #else | 369 | #else |
369 | return ERR_SOURCENOTAVAILABLE; | 370 | return ERR_SOURCENOTAVAILABLE; |
370 | #endif | 371 | #endif |
371 | } | 372 | } |
372 | 373 | ||
373 | GSM_Error SONYERIC_GetCalendarStatus(GSM_StateMachine *s, GSM_CalendarStatus *Status) | 374 | GSM_Error SONYERIC_GetCalendarStatus(GSM_StateMachine *s, GSM_CalendarStatus *Status) |
374 | { | 375 | { |
375 | #ifdef GSM_ENABLE_OBEXGEN | 376 | #if defined(GSM_ENABLE_BLUEOBEX) || defined(GSM_ENABLE_IRDAOBEX) |
376 | GSM_Error error; | 377 | GSM_Error error; |
377 | GSM_ToDoEntry ToDo; | 378 | GSM_ToDoEntry ToDo; |
378 | GSM_CalendarEntry Calendar; | 379 | GSM_CalendarEntry Calendar; |
379 | int Pos; | 380 | int Pos; |
380 | GSM_Phone_ATGENData*Priv = &s->Phone.Data.Priv.ATGEN; | 381 | GSM_Phone_ATGENData*Priv = &s->Phone.Data.Priv.ATGEN; |
381 | 382 | ||
382 | if (Priv->Manufacturer!=AT_Ericsson) return ERR_NOTSUPPORTED; | 383 | if (Priv->Manufacturer!=AT_Ericsson) return ERR_NOTSUPPORTED; |
383 | 384 | ||
diff --git a/gammu/emb/common/phone/nokia/dct3/dct3func.c b/gammu/emb/common/phone/nokia/dct3/dct3func.c index 17cd0a4..9810a35 100644 --- a/gammu/emb/common/phone/nokia/dct3/dct3func.c +++ b/gammu/emb/common/phone/nokia/dct3/dct3func.c | |||
@@ -1,14 +1,23 @@ | |||
1 | /* (c) 2001-2004 by Marcin Wiacek */ | 1 | /* (c) 2001-2004 by Marcin Wiacek */ |
2 | /* resetting DCT4 phones settings (c) by Walek */ | 2 | /* resetting DCT4 phones settings (c) by Walek */ |
3 | /* based on some Markus Plail, Pavel Janik & others work from Gnokii (www.gnokii.org) | 3 | /* based on some Markus Plail, Pavel Janik & others work from Gnokii (www.gnokii.org) |
4 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot | 4 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot |
5 | * GNU GPL version 2 or later | 5 | * GNU GPL version 2 or later |
6 | */ | 6 | */ |
7 | /* Due to a problem in the source code management, the names of some of | ||
8 | * the authors have unfortunately been lost. We do not mean to belittle | ||
9 | * their efforts and hope they will contact us to see their names | ||
10 | * properly added to the Copyright notice above. | ||
11 | * Having published their contributions under the terms of the GNU | ||
12 | * General Public License (GPL) [version 2], the Copyright of these | ||
13 | * authors will remain respected by adhering to the license they chose | ||
14 | * to publish their code under. | ||
15 | */ | ||
7 | 16 | ||
8 | #include <string.h> /* memcpy only */ | 17 | #include <string.h> /* memcpy only */ |
9 | #include <stdio.h> | 18 | #include <stdio.h> |
10 | #include <ctype.h> | 19 | #include <ctype.h> |
11 | 20 | ||
12 | #include "../../../gsmstate.h" | 21 | #include "../../../gsmstate.h" |
13 | #include "../../../misc/coding/coding.h" | 22 | #include "../../../misc/coding/coding.h" |
14 | #include "../../../service/sms/gsmsms.h" | 23 | #include "../../../service/sms/gsmsms.h" |
@@ -452,20 +461,20 @@ GSM_Error DCT3_ReplyGetNetworkInfo(GSM_Protocol_Message msg, GSM_StateMachine *s | |||
452 | case 0x02: smprintf(s, "roaming network"); break; | 461 | case 0x02: smprintf(s, "roaming network"); break; |
453 | case 0x03: smprintf(s, "requesting network"); break; | 462 | case 0x03: smprintf(s, "requesting network"); break; |
454 | case 0x04: smprintf(s, "not registered in the network");break; | 463 | case 0x04: smprintf(s, "not registered in the network");break; |
455 | default : smprintf(s, "unknown"); | 464 | default : smprintf(s, "unknown"); |
456 | } | 465 | } |
457 | smprintf(s, "\n"); | 466 | smprintf(s, "\n"); |
458 | smprintf(s, "Network selection : %s\n", msg.Buffer[9]==1?"manual":"automatic"); | 467 | smprintf(s, "Network selection : %s\n", msg.Buffer[9]==1?"manual":"automatic"); |
459 | if (msg.Buffer[8]<0x03) { | 468 | if (msg.Buffer[8]<0x03) { |
460 | sprintf(NetInfo.CID, "%02x%02x", msg.Buffer[10], msg.Buffer[11]); | 469 | sprintf(NetInfo.CID, "%02X%02X", msg.Buffer[10], msg.Buffer[11]); |
461 | smprintf(s, "CID : %s\n", NetInfo.CID); | 470 | smprintf(s, "CID : %s\n", NetInfo.CID); |
462 | 471 | ||
463 | sprintf(NetInfo.LAC, "%02x%02x", msg.Buffer[12], msg.Buffer[13]); | 472 | sprintf(NetInfo.LAC, "%02X%02X", msg.Buffer[12], msg.Buffer[13]); |
464 | smprintf(s, "LAC : %s\n", NetInfo.LAC); | 473 | smprintf(s, "LAC : %s\n", NetInfo.LAC); |
465 | 474 | ||
466 | NOKIA_DecodeNetworkCode(msg.Buffer+14,NetInfo.NetworkCode); | 475 | NOKIA_DecodeNetworkCode(msg.Buffer+14,NetInfo.NetworkCode); |
467 | smprintf(s, "Network code : %s\n", NetInfo.NetworkCode); | 476 | smprintf(s, "Network code : %s\n", NetInfo.NetworkCode); |
468 | smprintf(s, "Network name for Gammu : %s ", | 477 | smprintf(s, "Network name for Gammu : %s ", |
469 | DecodeUnicodeString(GSM_GetNetworkName(NetInfo.NetworkCode))); | 478 | DecodeUnicodeString(GSM_GetNetworkName(NetInfo.NetworkCode))); |
470 | smprintf(s, "(%s)\n",DecodeUnicodeString(GSM_GetCountryName(NetInfo.NetworkCode))); | 479 | smprintf(s, "(%s)\n",DecodeUnicodeString(GSM_GetCountryName(NetInfo.NetworkCode))); |
471 | 480 | ||
@@ -506,18 +515,18 @@ GSM_Error DCT3_ReplyGetNetworkInfo(GSM_Protocol_Message msg, GSM_StateMachine *s | |||
506 | } else { | 515 | } else { |
507 | /* In 9210 first 0x00 is cut from Unicode string */ | 516 | /* In 9210 first 0x00 is cut from Unicode string */ |
508 | Data->NetworkInfo->NetworkName[0] = 0; | 517 | Data->NetworkInfo->NetworkName[0] = 0; |
509 | memcpy(Data->NetworkInfo->NetworkName+1,msg.Buffer+18,msg.Buffer[17]*2); | 518 | memcpy(Data->NetworkInfo->NetworkName+1,msg.Buffer+18,msg.Buffer[17]*2); |
510 | Data->NetworkInfo->NetworkName[msg.Buffer[17]*2+1]=0x00; | 519 | Data->NetworkInfo->NetworkName[msg.Buffer[17]*2+1]=0x00; |
511 | Data->NetworkInfo->NetworkName[msg.Buffer[17]*2+2]=0x00; | 520 | Data->NetworkInfo->NetworkName[msg.Buffer[17]*2+2]=0x00; |
512 | } | 521 | } |
513 | NOKIA_DecodeNetworkCode(msg.Buffer+14,Data->NetworkInfo->NetworkCode); | 522 | NOKIA_DecodeNetworkCode(msg.Buffer+14,Data->NetworkInfo->NetworkCode); |
514 | sprintf(Data->NetworkInfo->CID, "%02x%02x", msg.Buffer[10], msg.Buffer[11]); | 523 | sprintf(Data->NetworkInfo->CID, "%02X%02X", msg.Buffer[10], msg.Buffer[11]); |
515 | sprintf(Data->NetworkInfo->LAC, "%02x%02x", msg.Buffer[12], msg.Buffer[13]); | 524 | sprintf(Data->NetworkInfo->LAC, "%02X%02X", msg.Buffer[12], msg.Buffer[13]); |
516 | } | 525 | } |
517 | } | 526 | } |
518 | /* 6210/6250/7110 */ | 527 | /* 6210/6250/7110 */ |
519 | if (Data->RequestID==ID_GetBitmap) { | 528 | if (Data->RequestID==ID_GetBitmap) { |
520 | if (msg.Buffer[4]==0x02) { | 529 | if (msg.Buffer[4]==0x02) { |
521 | smprintf(s, "Operator logo available\n"); | 530 | smprintf(s, "Operator logo available\n"); |
522 | count = 7; | 531 | count = 7; |
523 | /* skip network info */ | 532 | /* skip network info */ |
diff --git a/gammu/emb/common/phone/nokia/dct3/n0650.c b/gammu/emb/common/phone/nokia/dct3/n0650.c new file mode 100644 index 0000000..3899a16 --- a/dev/null +++ b/gammu/emb/common/phone/nokia/dct3/n0650.c | |||
@@ -0,0 +1,150 @@ | |||
1 | /* (c) 2004 by Marcin Wiacek */ | ||
2 | |||
3 | #include <string.h> | ||
4 | #include <time.h> | ||
5 | |||
6 | #include "../../../gsmcomon.h" | ||
7 | #include "../../../gsmstate.h" | ||
8 | #include "../nfunc.h" | ||
9 | |||
10 | #ifdef GSM_ENABLE_NOKIA650 | ||
11 | |||
12 | static GSM_Reply_Function N650ReplyFunctions[] = { | ||
13 | {DCT3DCT4_ReplyGetModelFirmware,"\xD2",0x02,0x00,ID_GetModel }, | ||
14 | {DCT3DCT4_ReplyGetModelFirmware,"\xD2",0x02,0x00,ID_GetFirmware }, | ||
15 | |||
16 | {NULL, "\x00",0x00,0x00,ID_None } | ||
17 | }; | ||
18 | |||
19 | GSM_Phone_Functions N650Phone = { | ||
20 | "0650", | ||
21 | N650ReplyFunctions, | ||
22 | NONEFUNCTION, /* Initialise */ | ||
23 | NONEFUNCTION, /* Terminate */ | ||
24 | GSM_DispatchMessage, | ||
25 | NOTSUPPORTED, /* ShowStartInfo */ | ||
26 | NOKIA_GetManufacturer, | ||
27 | DCT3DCT4_GetModel, | ||
28 | DCT3DCT4_GetFirmware, | ||
29 | NOTSUPPORTED, /* GetIMEI */ | ||
30 | NOTSUPPORTED, /* GetOriginalIMEI */ | ||
31 | NOTSUPPORTED, /* GetManufactureMonth*/ | ||
32 | NOTSUPPORTED, /* GetProductCode */ | ||
33 | NOTSUPPORTED, /* GetHardware */ | ||
34 | NOTSUPPORTED, /* GetPPM */ | ||
35 | NOTSUPPORTED, /* GetSIMIMSI */ | ||
36 | NOTSUPPORTED, /* GetDateTime */ | ||
37 | NOTSUPPORTED, /* SetDateTime */ | ||
38 | NOTSUPPORTED, /* GetAlarm */ | ||
39 | NOTSUPPORTED, /* SetAlarm */ | ||
40 | NOTSUPPORTED, /* GetLocale */ | ||
41 | NOTSUPPORTED, /* SetLocale */ | ||
42 | NOTSUPPORTED, /* PressKey */ | ||
43 | NOTSUPPORTED, /* Reset */ | ||
44 | NOTSUPPORTED, /* ResetPhoneSettings*/ | ||
45 | NOTSUPPORTED, /* EnterSecurityCode*/ | ||
46 | NOTSUPPORTED, /* GetSecurityStatus*/ | ||
47 | NOTSUPPORTED, /* GetDisplayStatus*/ | ||
48 | NOTSUPPORTED, /* SetAutoNetworkLogin*/ | ||
49 | NOTSUPPORTED, /* GetBatteryCharge*/ | ||
50 | NOTSUPPORTED, /* GetSignalQuality*/ | ||
51 | NOTSUPPORTED, /* GetNetworkInfo */ | ||
52 | NOTSUPPORTED, /* GetCategory */ | ||
53 | NOTSUPPORTED, /* AddCategory */ | ||
54 | NOTSUPPORTED, /* GetCategoryStatus */ | ||
55 | NOTSUPPORTED, /* GetMemoryStatus */ | ||
56 | NOTSUPPORTED, /* GetMemory */ | ||
57 | NOTSUPPORTED, /* GetNextMemory */ | ||
58 | NOTSUPPORTED, /* SetMemory */ | ||
59 | NOTSUPPORTED, /* AddMemory */ | ||
60 | NOTSUPPORTED, /* DeleteMemory */ | ||
61 | NOTIMPLEMENTED, /* DeleteAllMemory */ | ||
62 | NOTSUPPORTED, /* GetSpeedDial */ | ||
63 | NOTSUPPORTED, /* SetSpeedDial */ | ||
64 | NOTSUPPORTED, /* GetSMSC */ | ||
65 | NOTSUPPORTED, /* SetSMSC */ | ||
66 | NOTSUPPORTED, /* GetSMSStatus */ | ||
67 | NOTSUPPORTED, /* GetSMS */ | ||
68 | NOTSUPPORTED, /* GetNextSMS */ | ||
69 | NOTSUPPORTED, /* SetSMS */ | ||
70 | NOTSUPPORTED, /* AddSMS */ | ||
71 | NOTSUPPORTED, /* DeleteSMS */ | ||
72 | NOTSUPPORTED, /* SendSMSMessage */ | ||
73 | NOTSUPPORTED, /* SendSavedSMS */ | ||
74 | NOTSUPPORTED, /* SetIncomingSMS */ | ||
75 | NOTSUPPORTED, /* SetIncomingCB */ | ||
76 | NOTSUPPORTED, /* GetSMSFolders */ | ||
77 | NOTSUPPORTED, /* AddSMSFolder */ | ||
78 | NOTSUPPORTED, /* DeleteSMSFolder */ | ||
79 | NOTSUPPORTED, /* DialVoice */ | ||
80 | NOTSUPPORTED, /* AnswerCall */ | ||
81 | NOTSUPPORTED, /* CancelCall */ | ||
82 | NOTSUPPORTED, /* HoldCall */ | ||
83 | NOTSUPPORTED, /* UnholdCall */ | ||
84 | NOTSUPPORTED, /* ConferenceCall */ | ||
85 | NOTSUPPORTED, /* SplitCall */ | ||
86 | NOTSUPPORTED, /* TransferCall */ | ||
87 | NOTSUPPORTED, /* SwitchCall */ | ||
88 | NOTSUPPORTED, /* GetCallDivert */ | ||
89 | NOTSUPPORTED, /* SetCallDivert */ | ||
90 | NOTSUPPORTED, /* CancelAllDiverts*/ | ||
91 | NOTSUPPORTED, /* SetIncomingCall */ | ||
92 | NOTSUPPORTED, /* SetIncomingUSSD */ | ||
93 | NOTSUPPORTED, /* SendDTMF */ | ||
94 | NOTSUPPORTED, /* GetRingtone */ | ||
95 | NOTSUPPORTED, /* SetRingtone */ | ||
96 | NOTSUPPORTED, /* GetRingtonesInfo*/ | ||
97 | NOTSUPPORTED, /* DeleteUserRingtones*/ | ||
98 | NOTSUPPORTED, /* PlayTone */ | ||
99 | NOTSUPPORTED, /* GetWAPBookmark */ | ||
100 | NOTSUPPORTED, /* SetWAPBookmark */ | ||
101 | NOTSUPPORTED, /* DeleteWAPBookmark */ | ||
102 | NOTSUPPORTED, /* GetWAPSettings */ | ||
103 | NOTSUPPORTED, /* SetWAPSettings */ | ||
104 | NOTSUPPORTED, /* GetMMSSettings */ | ||
105 | NOTSUPPORTED, /* SetMMSSettings */ | ||
106 | NOTSUPPORTED, /* GetBitmap */ | ||
107 | NOTSUPPORTED, /* SetBitmap */ | ||
108 | NOTSUPPORTED, /* GetToDoStatus */ | ||
109 | NOTSUPPORTED, /* GetToDo */ | ||
110 | NOTSUPPORTED, /* GetNextToDo */ | ||
111 | NOTSUPPORTED, /* SetToDo */ | ||
112 | NOTSUPPORTED, /* AddToDo */ | ||
113 | NOTSUPPORTED, /* DeleteToDo */ | ||
114 | NOTSUPPORTED, /* DeleteAllToDo */ | ||
115 | NOTSUPPORTED, /* GetCalendarStatus*/ | ||
116 | NOTSUPPORTED, /* GetCalendar */ | ||
117 | NOTSUPPORTED, /* GetNextCalendar */ | ||
118 | NOTSUPPORTED, /* SetCalendar */ | ||
119 | NOTSUPPORTED, /* AddCalendar */ | ||
120 | NOTSUPPORTED, /* DeleteCalendar */ | ||
121 | NOTSUPPORTED, /* DeleteAllCalendar*/ | ||
122 | NOTSUPPORTED, /* GetCalendarSettings*/ | ||
123 | NOTSUPPORTED, /* SetCalendarSettings*/ | ||
124 | NOTSUPPORTED, /* GetNoteStatus */ | ||
125 | NOTSUPPORTED, /* GetNote */ | ||
126 | NOTSUPPORTED, /* GetNextNote */ | ||
127 | NOTSUPPORTED, /* SetNote */ | ||
128 | NOTSUPPORTED, /* AddNote */ | ||
129 | NOTSUPPORTED, /* DeleteNote */ | ||
130 | NOTSUPPORTED, /* DeleteAllNotes */ | ||
131 | NOTSUPPORTED, /* GetProfile */ | ||
132 | NOTSUPPORTED, /* SetProfile */ | ||
133 | NOTSUPPORTED, /* GetFMStation */ | ||
134 | NOTSUPPORTED, /* SetFMStation */ | ||
135 | NOTSUPPORTED, /* ClearFMStations */ | ||
136 | NOTSUPPORTED, /* GetNextFileFolder*/ | ||
137 | NOTSUPPORTED, /* GetFilePart */ | ||
138 | NOTSUPPORTED, /* AddFilePart */ | ||
139 | NOTSUPPORTED, /* GetFileSystemStatus*/ | ||
140 | NOTSUPPORTED, /* DeleteFile */ | ||
141 | NOTSUPPORTED, /* AddFolder */ | ||
142 | NOTSUPPORTED, /* GetGPRSAccessPoint*/ | ||
143 | NOTSUPPORTED /* SetGPRSAccessPoint*/ | ||
144 | }; | ||
145 | |||
146 | #endif | ||
147 | |||
148 | /* How should editor hadle tabs in this file? Add editor commands here. | ||
149 | * vim: noexpandtab sw=8 ts=8 sts=8: | ||
150 | */ | ||
diff --git a/gammu/emb/common/phone/nokia/dct3/n0650.h b/gammu/emb/common/phone/nokia/dct3/n0650.h new file mode 100644 index 0000000..be491eb --- a/dev/null +++ b/gammu/emb/common/phone/nokia/dct3/n0650.h | |||
@@ -0,0 +1,18 @@ | |||
1 | /* (c) 2004 by Marcin Wiacek */ | ||
2 | |||
3 | #ifndef n650_h | ||
4 | #define n650_h | ||
5 | |||
6 | typedef struct { | ||
7 | int fake; | ||
8 | } GSM_Phone_N650Data; | ||
9 | |||
10 | #ifndef GSM_USED_MBUS2 | ||
11 | # define GSM_USED_MBUS2 | ||
12 | #endif | ||
13 | |||
14 | #endif | ||
15 | |||
16 | /* How should editor hadle tabs in this file? Add editor commands here. | ||
17 | * vim: noexpandtab sw=8 ts=8 sts=8: | ||
18 | */ | ||
diff --git a/gammu/emb/common/phone/nokia/dct3/n6110.c b/gammu/emb/common/phone/nokia/dct3/n6110.c index dac6c12..c3ddfb6 100644 --- a/gammu/emb/common/phone/nokia/dct3/n6110.c +++ b/gammu/emb/common/phone/nokia/dct3/n6110.c | |||
@@ -1,14 +1,23 @@ | |||
1 | /* (c) 2001-2004 by Marcin Wiacek */ | 1 | /* (c) 2001-2004 by Marcin Wiacek */ |
2 | /* 5210 calendar IDs by Frederick Ros */ | 2 | /* 5210 calendar IDs by Frederick Ros */ |
3 | /* based on some Markus Plail, Pavel Janik & others work from Gnokii (www.gnokii.org) | 3 | /* based on some Markus Plail, Pavel Janik & others work from Gnokii (www.gnokii.org) |
4 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot | 4 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot |
5 | * GNU GPL version 2 or later | 5 | * GNU GPL version 2 or later |
6 | */ | 6 | */ |
7 | /* Due to a problem in the source code management, the names of some of | ||
8 | * the authors have unfortunately been lost. We do not mean to belittle | ||
9 | * their efforts and hope they will contact us to see their names | ||
10 | * properly added to the Copyright notice above. | ||
11 | * Having published their contributions under the terms of the GNU | ||
12 | * General Public License (GPL) [version 2], the Copyright of these | ||
13 | * authors will remain respected by adhering to the license they chose | ||
14 | * to publish their code under. | ||
15 | */ | ||
7 | 16 | ||
8 | #include "../../../gsmstate.h" | 17 | #include "../../../gsmstate.h" |
9 | 18 | ||
10 | #ifdef GSM_ENABLE_NOKIA6110 | 19 | #ifdef GSM_ENABLE_NOKIA6110 |
11 | 20 | ||
12 | #include <string.h> | 21 | #include <string.h> |
13 | 22 | ||
14 | #include "../../../../cfg/config.h" | 23 | #include "../../../../cfg/config.h" |
@@ -2863,17 +2872,23 @@ GSM_Phone_Functions N6110Phone = { | |||
2863 | NOTIMPLEMENTED, /* GetCalendar */ | 2872 | NOTIMPLEMENTED, /* GetCalendar */ |
2864 | N6110_GetNextCalendarNote, | 2873 | N6110_GetNextCalendarNote, |
2865 | NOTIMPLEMENTED, /* SetCalendar */ | 2874 | NOTIMPLEMENTED, /* SetCalendar */ |
2866 | N6110_AddCalendarNote, | 2875 | N6110_AddCalendarNote, |
2867 | N6110_DeleteCalendarNote, | 2876 | N6110_DeleteCalendarNote, |
2868 | NOTIMPLEMENTED, /* DeleteAllCalendar */ | 2877 | NOTIMPLEMENTED, /* DeleteAllCalendar */ |
2869 | NOTSUPPORTED, /* GetCalendarSettings */ | 2878 | NOTSUPPORTED, /* GetCalendarSettings */ |
2870 | NOTSUPPORTED, /* SetCalendarSettings */ | 2879 | NOTSUPPORTED, /* SetCalendarSettings */ |
2871 | NOTSUPPORTED, /* GetNextNote */ | 2880 | NOTSUPPORTED, /* GetNoteStatus */ |
2881 | NOTSUPPORTED, /* GetNote */ | ||
2882 | NOTSUPPORTED, /* GetNextNote */ | ||
2883 | NOTSUPPORTED, /* SetNote */ | ||
2884 | NOTSUPPORTED, /* AddNote */ | ||
2885 | NOTSUPPORTED, /* DeleteNote */ | ||
2886 | NOTSUPPORTED, /* DeleteAllNotes */ | ||
2872 | N6110_GetProfile, | 2887 | N6110_GetProfile, |
2873 | N6110_SetProfile, | 2888 | N6110_SetProfile, |
2874 | NOTSUPPORTED, /* GetFMStation */ | 2889 | NOTSUPPORTED, /* GetFMStation */ |
2875 | NOTSUPPORTED, /* SetFMStation */ | 2890 | NOTSUPPORTED, /* SetFMStation */ |
2876 | NOTSUPPORTED, /* ClearFMStations */ | 2891 | NOTSUPPORTED, /* ClearFMStations */ |
2877 | NOTSUPPORTED, /* GetNextFileFolder */ | 2892 | NOTSUPPORTED, /* GetNextFileFolder */ |
2878 | NOTSUPPORTED, /* GetFilePart */ | 2893 | NOTSUPPORTED, /* GetFilePart */ |
2879 | NOTSUPPORTED, /* AddFile */ | 2894 | NOTSUPPORTED, /* AddFile */ |
diff --git a/gammu/emb/common/phone/nokia/dct3/n7110.c b/gammu/emb/common/phone/nokia/dct3/n7110.c index b597f9b..a8e0545 100644 --- a/gammu/emb/common/phone/nokia/dct3/n7110.c +++ b/gammu/emb/common/phone/nokia/dct3/n7110.c | |||
@@ -1,13 +1,22 @@ | |||
1 | /* (c) 2001-2004 by Marcin Wiacek */ | 1 | /* (c) 2001-2004 by Marcin Wiacek */ |
2 | /* based on some Markus Plail work from Gnokii (www.gnokii.org) | 2 | /* based on some Markus Plail work from Gnokii (www.gnokii.org) |
3 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot | 3 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot |
4 | * GNU GPL version 2 or later | 4 | * GNU GPL version 2 or later |
5 | */ | 5 | */ |
6 | /* Due to a problem in the source code management, the names of some of | ||
7 | * the authors have unfortunately been lost. We do not mean to belittle | ||
8 | * their efforts and hope they will contact us to see their names | ||
9 | * properly added to the Copyright notice above. | ||
10 | * Having published their contributions under the terms of the GNU | ||
11 | * General Public License (GPL) [version 2], the Copyright of these | ||
12 | * authors will remain respected by adhering to the license they chose | ||
13 | * to publish their code under. | ||
14 | */ | ||
6 | 15 | ||
7 | #include "../../../gsmstate.h" | 16 | #include "../../../gsmstate.h" |
8 | 17 | ||
9 | #ifdef GSM_ENABLE_NOKIA7110 | 18 | #ifdef GSM_ENABLE_NOKIA7110 |
10 | 19 | ||
11 | #include <string.h> | 20 | #include <string.h> |
12 | #include <time.h> | 21 | #include <time.h> |
13 | 22 | ||
@@ -1701,17 +1710,23 @@ GSM_Phone_Functions N7110Phone = { | |||
1701 | NOTIMPLEMENTED, /* GetCalendar */ | 1710 | NOTIMPLEMENTED, /* GetCalendar */ |
1702 | N7110_GetNextCalendar, | 1711 | N7110_GetNextCalendar, |
1703 | NOTIMPLEMENTED, /* SetCalendar */ | 1712 | NOTIMPLEMENTED, /* SetCalendar */ |
1704 | N7110_AddCalendar, | 1713 | N7110_AddCalendar, |
1705 | N71_65_DelCalendar, | 1714 | N71_65_DelCalendar, |
1706 | NOTIMPLEMENTED, /* DeleteAllCalendar*/ | 1715 | NOTIMPLEMENTED, /* DeleteAllCalendar*/ |
1707 | NOTSUPPORTED, /* GetCalendarSettings*/ | 1716 | NOTSUPPORTED, /* GetCalendarSettings*/ |
1708 | NOTSUPPORTED, /* SetCalendarSettings*/ | 1717 | NOTSUPPORTED, /* SetCalendarSettings*/ |
1718 | NOTSUPPORTED, /* GetNoteStatus */ | ||
1719 | NOTSUPPORTED, /* GetNote */ | ||
1709 | NOTSUPPORTED, /* GetNextNote */ | 1720 | NOTSUPPORTED, /* GetNextNote */ |
1721 | NOTSUPPORTED, /* SetNote */ | ||
1722 | NOTSUPPORTED, /* AddNote */ | ||
1723 | NOTSUPPORTED, /* DeleteNote */ | ||
1724 | NOTSUPPORTED, /* DeleteAllNotes */ | ||
1710 | N7110_GetProfile, | 1725 | N7110_GetProfile, |
1711 | N7110_SetProfile, | 1726 | N7110_SetProfile, |
1712 | NOTSUPPORTED, /* GetFMStation */ | 1727 | NOTSUPPORTED, /* GetFMStation */ |
1713 | NOTSUPPORTED, /* SetFMStation */ | 1728 | NOTSUPPORTED, /* SetFMStation */ |
1714 | NOTSUPPORTED, /* ClearFMStations */ | 1729 | NOTSUPPORTED, /* ClearFMStations */ |
1715 | NOTSUPPORTED, /* GetNextFileFolder*/ | 1730 | NOTSUPPORTED, /* GetNextFileFolder*/ |
1716 | NOTSUPPORTED, /* GetFilePart */ | 1731 | NOTSUPPORTED, /* GetFilePart */ |
1717 | NOTSUPPORTED, /* AddFile */ | 1732 | NOTSUPPORTED, /* AddFile */ |
diff --git a/gammu/emb/common/phone/nokia/dct3/n9210.c b/gammu/emb/common/phone/nokia/dct3/n9210.c index ff71ad3..f535c2a 100644 --- a/gammu/emb/common/phone/nokia/dct3/n9210.c +++ b/gammu/emb/common/phone/nokia/dct3/n9210.c | |||
@@ -369,17 +369,23 @@ GSM_Phone_Functions N9210Phone = { | |||
369 | NOTSUPPORTED, /* GetCalendar */ | 369 | NOTSUPPORTED, /* GetCalendar */ |
370 | NOTSUPPORTED, /* GetNextCalendar */ | 370 | NOTSUPPORTED, /* GetNextCalendar */ |
371 | NOTSUPPORTED, /* SetCalendar */ | 371 | NOTSUPPORTED, /* SetCalendar */ |
372 | NOTSUPPORTED, /* AddCalendar */ | 372 | NOTSUPPORTED, /* AddCalendar */ |
373 | NOTSUPPORTED, /* DeleteCalendar */ | 373 | NOTSUPPORTED, /* DeleteCalendar */ |
374 | NOTSUPPORTED, /* DeleteAllCalendar*/ | 374 | NOTSUPPORTED, /* DeleteAllCalendar*/ |
375 | NOTSUPPORTED, /* GetCalendarSettings*/ | 375 | NOTSUPPORTED, /* GetCalendarSettings*/ |
376 | NOTSUPPORTED, /* SetCalendarSettings*/ | 376 | NOTSUPPORTED, /* SetCalendarSettings*/ |
377 | NOTSUPPORTED, /* GetNoteStatus */ | ||
378 | NOTSUPPORTED, /* GetNote */ | ||
377 | NOTSUPPORTED, /* GetNextNote */ | 379 | NOTSUPPORTED, /* GetNextNote */ |
380 | NOTSUPPORTED, /* SetNote */ | ||
381 | NOTSUPPORTED, /* AddNote */ | ||
382 | NOTSUPPORTED, /* DeleteNote */ | ||
383 | NOTSUPPORTED, /* DeleteAllNotes */ | ||
378 | NOTIMPLEMENTED, /* GetProfile */ | 384 | NOTIMPLEMENTED, /* GetProfile */ |
379 | NOTSUPPORTED, /* SetProfile */ | 385 | NOTSUPPORTED, /* SetProfile */ |
380 | NOTSUPPORTED, /* GetFMStation */ | 386 | NOTSUPPORTED, /* GetFMStation */ |
381 | NOTSUPPORTED, /* SetFMStation */ | 387 | NOTSUPPORTED, /* SetFMStation */ |
382 | NOTSUPPORTED, /* ClearFMStations */ | 388 | NOTSUPPORTED, /* ClearFMStations */ |
383 | NOTSUPPORTED, /* GetNextFileFolder*/ | 389 | NOTSUPPORTED, /* GetNextFileFolder*/ |
384 | NOTSUPPORTED, /* GetFilePart */ | 390 | NOTSUPPORTED, /* GetFilePart */ |
385 | NOTSUPPORTED, /* AddFile */ | 391 | NOTSUPPORTED, /* AddFile */ |
diff --git a/gammu/emb/common/phone/nokia/dct4/n3320.c b/gammu/emb/common/phone/nokia/dct4/n3320.c index 9b1d6cd..9dd9ffb 100644 --- a/gammu/emb/common/phone/nokia/dct4/n3320.c +++ b/gammu/emb/common/phone/nokia/dct4/n3320.c | |||
@@ -244,17 +244,23 @@ GSM_Phone_Functions N3320Phone = { | |||
244 | NOTIMPLEMENTED, /* GetCalendar */ | 244 | NOTIMPLEMENTED, /* GetCalendar */ |
245 | N3320_GetNextCalendar, | 245 | N3320_GetNextCalendar, |
246 | NOTIMPLEMENTED, /* SetCalendar */ | 246 | NOTIMPLEMENTED, /* SetCalendar */ |
247 | NOTSUPPORTED, /* AddCalendar */ | 247 | NOTSUPPORTED, /* AddCalendar */ |
248 | NOTSUPPORTED, /* DeleteCalendar */ | 248 | NOTSUPPORTED, /* DeleteCalendar */ |
249 | NOTIMPLEMENTED, /* DeleteAllCalendar*/ | 249 | NOTIMPLEMENTED, /* DeleteAllCalendar*/ |
250 | NOTSUPPORTED, /* GetCalendarSettings*/ | 250 | NOTSUPPORTED, /* GetCalendarSettings*/ |
251 | NOTSUPPORTED, /* SetCalendarSettings*/ | 251 | NOTSUPPORTED, /* SetCalendarSettings*/ |
252 | NOTSUPPORTED, /* GetNoteStatus */ | ||
253 | NOTSUPPORTED, /* GetNote */ | ||
252 | NOTSUPPORTED, /* GetNextNote */ | 254 | NOTSUPPORTED, /* GetNextNote */ |
255 | NOTSUPPORTED, /* SetNote */ | ||
256 | NOTSUPPORTED, /* AddNote */ | ||
257 | NOTSUPPORTED, /* DeleteNote */ | ||
258 | NOTSUPPORTED, /* DeleteAllNotes */ | ||
253 | NOTSUPPORTED, /* GetProfile */ | 259 | NOTSUPPORTED, /* GetProfile */ |
254 | NOTSUPPORTED, /* SetProfile */ | 260 | NOTSUPPORTED, /* SetProfile */ |
255 | NOTSUPPORTED, /* GetFMStation */ | 261 | NOTSUPPORTED, /* GetFMStation */ |
256 | NOTSUPPORTED, /* SetFMStation */ | 262 | NOTSUPPORTED, /* SetFMStation */ |
257 | NOTSUPPORTED, /* ClearFMStations */ | 263 | NOTSUPPORTED, /* ClearFMStations */ |
258 | NOTSUPPORTED, /* GetNextFileFolder*/ | 264 | NOTSUPPORTED, /* GetNextFileFolder*/ |
259 | NOTSUPPORTED, /* GetFilePart */ | 265 | NOTSUPPORTED, /* GetFilePart */ |
260 | NOTIMPLEMENTED, /* AddFilePart */ | 266 | NOTIMPLEMENTED, /* AddFilePart */ |
diff --git a/gammu/emb/common/phone/nokia/dct4/n3650.c b/gammu/emb/common/phone/nokia/dct4/n3650.c index d4746a7..f1fa826 100644 --- a/gammu/emb/common/phone/nokia/dct4/n3650.c +++ b/gammu/emb/common/phone/nokia/dct4/n3650.c | |||
@@ -365,17 +365,23 @@ GSM_Phone_Functions N3650Phone = { | |||
365 | NOTIMPLEMENTED, /* GetCalendar */ | 365 | NOTIMPLEMENTED, /* GetCalendar */ |
366 | NOTSUPPORTED, /* GetNextCalendar */ | 366 | NOTSUPPORTED, /* GetNextCalendar */ |
367 | NOTIMPLEMENTED, /* SetCalendar */ | 367 | NOTIMPLEMENTED, /* SetCalendar */ |
368 | NOTSUPPORTED, /* AddCalendar */ | 368 | NOTSUPPORTED, /* AddCalendar */ |
369 | NOTSUPPORTED, /* DeleteCalendar */ | 369 | NOTSUPPORTED, /* DeleteCalendar */ |
370 | NOTIMPLEMENTED, /* DeleteAllCalendar*/ | 370 | NOTIMPLEMENTED, /* DeleteAllCalendar*/ |
371 | NOTSUPPORTED, /* GetCalendarSettings*/ | 371 | NOTSUPPORTED, /* GetCalendarSettings*/ |
372 | NOTSUPPORTED, /* SetCalendarSettings*/ | 372 | NOTSUPPORTED, /* SetCalendarSettings*/ |
373 | NOTSUPPORTED, /* GetNoteStatus */ | ||
374 | NOTSUPPORTED, /* GetNote */ | ||
373 | NOTSUPPORTED, /* GetNextNote */ | 375 | NOTSUPPORTED, /* GetNextNote */ |
376 | NOTSUPPORTED, /* SetNote */ | ||
377 | NOTSUPPORTED, /* AddNote */ | ||
378 | NOTSUPPORTED, /* DeleteNote */ | ||
379 | NOTSUPPORTED, /* DeleteAllNotes */ | ||
374 | NOTSUPPORTED, /* GetProfile */ | 380 | NOTSUPPORTED, /* GetProfile */ |
375 | NOTSUPPORTED, /* SetProfile */ | 381 | NOTSUPPORTED, /* SetProfile */ |
376 | NOTSUPPORTED, /* GetFMStation */ | 382 | NOTSUPPORTED, /* GetFMStation */ |
377 | NOTSUPPORTED, /* SetFMStation */ | 383 | NOTSUPPORTED, /* SetFMStation */ |
378 | NOTSUPPORTED, /* ClearFMStations */ | 384 | NOTSUPPORTED, /* ClearFMStations */ |
379 | N3650_GetNextFileFolder, | 385 | N3650_GetNextFileFolder, |
380 | N3650_GetFilePart, | 386 | N3650_GetFilePart, |
381 | NOTIMPLEMENTED, /* AddFilePart */ | 387 | NOTIMPLEMENTED, /* AddFilePart */ |
diff --git a/gammu/emb/common/phone/nokia/dct4/n6510.c b/gammu/emb/common/phone/nokia/dct4/n6510.c index 2208def..c481863 100644 --- a/gammu/emb/common/phone/nokia/dct4/n6510.c +++ b/gammu/emb/common/phone/nokia/dct4/n6510.c | |||
@@ -1,14 +1,23 @@ | |||
1 | /* (c) 2002-2004 by Marcin Wiacek */ | 1 | /* (c) 2002-2004 by Marcin Wiacek */ |
2 | /* based on some Markus Plail, Pawel Kot work from Gnokii (www.gnokii.org) | 2 | /* based on some Markus Plail, Pawel Kot work from Gnokii (www.gnokii.org) |
3 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot | 3 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot |
4 | * GNU GPL version 2 or later | 4 | * GNU GPL version 2 or later |
5 | */ | 5 | */ |
6 | /* function for making CRC for filesystem (c) 2003 by Michael Schroeder */ | 6 | /* function for making CRC for filesystem (c) 2003 by Michael Schroeder */ |
7 | /* Due to a problem in the source code management, the names of some of | ||
8 | * the authors have unfortunately been lost. We do not mean to belittle | ||
9 | * their efforts and hope they will contact us to see their names | ||
10 | * properly added to the Copyright notice above. | ||
11 | * Having published their contributions under the terms of the GNU | ||
12 | * General Public License (GPL) [version 2], the Copyright of these | ||
13 | * authors will remain respected by adhering to the license they chose | ||
14 | * to publish their code under. | ||
15 | */ | ||
7 | 16 | ||
8 | #include "../../../gsmstate.h" | 17 | #include "../../../gsmstate.h" |
9 | 18 | ||
10 | #ifdef GSM_ENABLE_NOKIA6510 | 19 | #ifdef GSM_ENABLE_NOKIA6510 |
11 | 20 | ||
12 | #include <string.h> | 21 | #include <string.h> |
13 | #include <time.h> | 22 | #include <time.h> |
14 | 23 | ||
@@ -281,20 +290,20 @@ static GSM_Error N6510_ReplyGetNetworkInfo(GSM_Protocol_Message msg, GSM_StateMa | |||
281 | } | 290 | } |
282 | if (msg.Buffer[8]==0x00 || msg.Buffer[8] == 0x01) { | 291 | if (msg.Buffer[8]==0x00 || msg.Buffer[8] == 0x01) { |
283 | NOKIA_DecodeNetworkCode(msg.Buffer + (current + 7),NetInfo.NetworkCode); | 292 | NOKIA_DecodeNetworkCode(msg.Buffer + (current + 7),NetInfo.NetworkCode); |
284 | smprintf(s, "Network code : %s\n", NetInfo.NetworkCode); | 293 | smprintf(s, "Network code : %s\n", NetInfo.NetworkCode); |
285 | smprintf(s, "Network name for Gammu : %s ", | 294 | smprintf(s, "Network name for Gammu : %s ", |
286 | DecodeUnicodeString(GSM_GetNetworkName(NetInfo.NetworkCode))); | 295 | DecodeUnicodeString(GSM_GetNetworkName(NetInfo.NetworkCode))); |
287 | smprintf(s, "(%s)\n",DecodeUnicodeString(GSM_GetCountryName(NetInfo.NetworkCode))); | 296 | smprintf(s, "(%s)\n",DecodeUnicodeString(GSM_GetCountryName(NetInfo.NetworkCode))); |
288 | 297 | ||
289 | sprintf(NetInfo.LAC,"%02x%02x", msg.Buffer[current+1], msg.Buffer[current+2]); | 298 | sprintf(NetInfo.LAC,"%02X%02X", msg.Buffer[current+1], msg.Buffer[current+2]); |
290 | smprintf(s, "LAC : %s\n", NetInfo.LAC); | 299 | smprintf(s, "LAC : %s\n", NetInfo.LAC); |
291 | 300 | ||
292 | sprintf(NetInfo.CID, "%02x%02x", msg.Buffer[current+5], msg.Buffer[current+6]); | 301 | sprintf(NetInfo.CID, "%02X%02X", msg.Buffer[current+5], msg.Buffer[current+6]); |
293 | smprintf(s, "CID : %s\n", NetInfo.CID); | 302 | smprintf(s, "CID : %s\n", NetInfo.CID); |
294 | 303 | ||
295 | tmp = 10; | 304 | tmp = 10; |
296 | NOKIA_GetUnicodeString(s, &tmp, msg.Buffer,name,true); | 305 | NOKIA_GetUnicodeString(s, &tmp, msg.Buffer,name,true); |
297 | smprintf(s, "Network name for phone : %s\n",DecodeUnicodeString(name)); | 306 | smprintf(s, "Network name for phone : %s\n",DecodeUnicodeString(name)); |
298 | } | 307 | } |
299 | #endif | 308 | #endif |
300 | if (Data->RequestID==ID_GetNetworkInfo) { | 309 | if (Data->RequestID==ID_GetNetworkInfo) { |
@@ -306,18 +315,18 @@ static GSM_Error N6510_ReplyGetNetworkInfo(GSM_Protocol_Message msg, GSM_StateMa | |||
306 | case 0x01: Data->NetworkInfo->State = GSM_RoamingNetwork;break; | 315 | case 0x01: Data->NetworkInfo->State = GSM_RoamingNetwork;break; |
307 | case 0x04: | 316 | case 0x04: |
308 | case 0x06: | 317 | case 0x06: |
309 | case 0x09: Data->NetworkInfo->State = GSM_NoNetwork; break; | 318 | case 0x09: Data->NetworkInfo->State = GSM_NoNetwork; break; |
310 | } | 319 | } |
311 | if (Data->NetworkInfo->State == GSM_HomeNetwork || Data->NetworkInfo->State == GSM_RoamingNetwork) { | 320 | if (Data->NetworkInfo->State == GSM_HomeNetwork || Data->NetworkInfo->State == GSM_RoamingNetwork) { |
312 | tmp = 10; | 321 | tmp = 10; |
313 | NOKIA_GetUnicodeString(s, &tmp, msg.Buffer,Data->NetworkInfo->NetworkName,true); | 322 | NOKIA_GetUnicodeString(s, &tmp, msg.Buffer,Data->NetworkInfo->NetworkName,true); |
314 | sprintf(Data->NetworkInfo->LAC, "%02x%02x", msg.Buffer[current+1], msg.Buffer[current+2]); | 323 | sprintf(Data->NetworkInfo->LAC, "%02X%02X", msg.Buffer[current+1], msg.Buffer[current+2]); |
315 | sprintf(Data->NetworkInfo->CID, "%02x%02x", msg.Buffer[current+5], msg.Buffer[current+6]); | 324 | sprintf(Data->NetworkInfo->CID, "%02X%02X", msg.Buffer[current+5], msg.Buffer[current+6]); |
316 | NOKIA_DecodeNetworkCode(msg.Buffer + (current+7),Data->NetworkInfo->NetworkCode); | 325 | NOKIA_DecodeNetworkCode(msg.Buffer + (current+7),Data->NetworkInfo->NetworkCode); |
317 | } | 326 | } |
318 | } | 327 | } |
319 | return ERR_NONE; | 328 | return ERR_NONE; |
320 | } | 329 | } |
321 | 330 | ||
322 | static GSM_Error N6510_GetNetworkInfo(GSM_StateMachine *s, GSM_NetworkInfo *netinfo) | 331 | static GSM_Error N6510_GetNetworkInfo(GSM_StateMachine *s, GSM_NetworkInfo *netinfo) |
323 | { | 332 | { |
@@ -1122,20 +1131,18 @@ static GSM_Error N6510_ReplySetPicture(GSM_Protocol_Message msg, GSM_StateMachin | |||
1122 | return ERR_NONE; | 1131 | return ERR_NONE; |
1123 | } | 1132 | } |
1124 | 1133 | ||
1125 | static GSM_Error N6510_SetBitmap(GSM_StateMachine *s, GSM_Bitmap *Bitmap) | 1134 | static GSM_Error N6510_SetBitmap(GSM_StateMachine *s, GSM_Bitmap *Bitmap) |
1126 | { | 1135 | { |
1127 | GSM_SMSMessage sms; | 1136 | GSM_SMSMessage sms; |
1128 | GSM_Phone_Bitmap_TypesType; | 1137 | GSM_Phone_Bitmap_TypesType; |
1129 | int Width, Height, i, count; | 1138 | int Width, Height, i, count; |
1130 | #ifdef DEVELOP | ||
1131 | unsigned char folderid; | 1139 | unsigned char folderid; |
1132 | int location; | 1140 | int location; |
1133 | #endif | ||
1134 | GSM_NetworkInfo NetInfo; | 1141 | GSM_NetworkInfo NetInfo; |
1135 | GSM_Error error; | 1142 | GSM_Error error; |
1136 | unsigned char reqStartup[1000] = { | 1143 | unsigned char reqStartup[1000] = { |
1137 | N7110_FRAME_HEADER, 0x04, 0x0F, | 1144 | N7110_FRAME_HEADER, 0x04, 0x0F, |
1138 | 0x00, 0x00, 0x00, | 1145 | 0x00, 0x00, 0x00, |
1139 | 0x04, 0xC0, 0x02, 0x00, | 1146 | 0x04, 0xC0, 0x02, 0x00, |
1140 | 0x41, 0xC0, 0x03, 0x00, | 1147 | 0x41, 0xC0, 0x03, 0x00, |
1141 | 0x60, 0xC0, 0x04}; | 1148 | 0x60, 0xC0, 0x04}; |
@@ -1250,29 +1257,25 @@ static GSM_Error N6510_SetBitmap(GSM_StateMachine *s, GSM_Bitmap *Bitmap) | |||
1250 | return GSM_WaitFor (s, reqColourStartup, 9, 0x7A, 4, ID_SetBitmap); | 1257 | return GSM_WaitFor (s, reqColourStartup, 9, 0x7A, 4, ID_SetBitmap); |
1251 | default:return ERR_NOTSUPPORTED; | 1258 | default:return ERR_NOTSUPPORTED; |
1252 | } | 1259 | } |
1253 | case GSM_CallerGroupLogo: | 1260 | case GSM_CallerGroupLogo: |
1254 | return N6510_SetCallerLogo(s,Bitmap); | 1261 | return N6510_SetCallerLogo(s,Bitmap); |
1255 | case GSM_PictureImage: | 1262 | case GSM_PictureImage: |
1256 | error = N6510_GetPictureImage(s, Bitmap, &sms.Location); | 1263 | error = N6510_GetPictureImage(s, Bitmap, &sms.Location); |
1257 | if (error == ERR_NONE) { | 1264 | if (error == ERR_NONE) { |
1258 | #ifdef DEVELOP | ||
1259 | sms.Folder = 0; | 1265 | sms.Folder = 0; |
1260 | N6510_GetSMSLocation(s, &sms, &folderid, &location); | 1266 | N6510_GetSMSLocation(s, &sms, &folderid, &location); |
1261 | switch (folderid) { | 1267 | switch (folderid) { |
1262 | case 0x01: reqPicture[5] = 0x02; break; /* INBOX SIM */ | 1268 | case 0x01: reqPicture[5] = 0x02; break; /* INBOX SIM */ |
1263 | case 0x02: reqPicture[5] = 0x03; break; /* OUTBOX SIM */ | 1269 | case 0x02: reqPicture[5] = 0x03; break; /* OUTBOX SIM */ |
1264 | default : reqPicture[5] = folderid - 1; reqPicture[4] = 0x02; break; /* ME folders*/ | 1270 | default : reqPicture[5] = folderid - 1; reqPicture[4] = 0x02; break; /* ME folders*/ |
1265 | } | 1271 | } |
1266 | reqPicture[6]=location / 256; | 1272 | reqPicture[6]=location / 256; |
1267 | reqPicture[7]=location; | 1273 | reqPicture[7]=location; |
1268 | #else | ||
1269 | return ERR_NOTSUPPORTED; | ||
1270 | #endif | ||
1271 | } | 1274 | } |
1272 | Type = GSM_NokiaPictureImage; | 1275 | Type = GSM_NokiaPictureImage; |
1273 | count = 78; | 1276 | count = 78; |
1274 | PHONE_EncodeBitmap(Type, reqPicture + count, Bitmap); | 1277 | PHONE_EncodeBitmap(Type, reqPicture + count, Bitmap); |
1275 | count += PHONE_GetBitmapSize(Type,0,0); | 1278 | count += PHONE_GetBitmapSize(Type,0,0); |
1276 | smprintf(s, "Setting Picture Image\n"); | 1279 | smprintf(s, "Setting Picture Image\n"); |
1277 | return GSM_WaitFor (s, reqPicture, count, 0x14, 4, ID_SetBitmap); | 1280 | return GSM_WaitFor (s, reqPicture, count, 0x14, 4, ID_SetBitmap); |
1278 | default: | 1281 | default: |
@@ -2414,16 +2417,19 @@ static GSM_Error N6510_ReplySaveSMSMessage(GSM_Protocol_Message msg, GSM_StateMa | |||
2414 | } | 2417 | } |
2415 | N6510_SetSMSLocation(s, Data->SaveSMSMessage,folder,msg.Buffer[6]*256+msg.Buffer[7]); | 2418 | N6510_SetSMSLocation(s, Data->SaveSMSMessage,folder,msg.Buffer[6]*256+msg.Buffer[7]); |
2416 | smprintf(s, "Saved in folder %i at location %i\n",folder, msg.Buffer[6]*256+msg.Buffer[7]); | 2419 | smprintf(s, "Saved in folder %i at location %i\n",folder, msg.Buffer[6]*256+msg.Buffer[7]); |
2417 | Data->SaveSMSMessage->Folder = folder; | 2420 | Data->SaveSMSMessage->Folder = folder; |
2418 | return ERR_NONE; | 2421 | return ERR_NONE; |
2419 | case 0x02: | 2422 | case 0x02: |
2420 | printf("Incorrect location\n"); | 2423 | printf("Incorrect location\n"); |
2421 | return ERR_INVALIDLOCATION; | 2424 | return ERR_INVALIDLOCATION; |
2425 | case 0x03: | ||
2426 | printf("Memory full (for example no empty space in SIM)\n"); | ||
2427 | return ERR_FULL; | ||
2422 | case 0x05: | 2428 | case 0x05: |
2423 | printf("Incorrect folder\n"); | 2429 | printf("Incorrect folder\n"); |
2424 | return ERR_INVALIDLOCATION; | 2430 | return ERR_INVALIDLOCATION; |
2425 | default: | 2431 | default: |
2426 | smprintf(s, "ERROR: unknown %i\n",msg.Buffer[4]); | 2432 | smprintf(s, "ERROR: unknown %i\n",msg.Buffer[4]); |
2427 | return ERR_UNKNOWNRESPONSE; | 2433 | return ERR_UNKNOWNRESPONSE; |
2428 | } | 2434 | } |
2429 | case 0x17: | 2435 | case 0x17: |
@@ -2671,16 +2677,18 @@ static GSM_Error N6510_ReplyGetRingtonesInfo(GSM_Protocol_Message msg, GSM_State | |||
2671 | { | 2677 | { |
2672 | int tmp,i; | 2678 | int tmp,i; |
2673 | GSM_Phone_Data *Data = &s->Phone.Data; | 2679 | GSM_Phone_Data *Data = &s->Phone.Data; |
2674 | 2680 | ||
2675 | smprintf(s, "Ringtones info received\n"); | 2681 | smprintf(s, "Ringtones info received\n"); |
2676 | memset(Data->RingtonesInfo,0,sizeof(GSM_AllRingtonesInfo)); | 2682 | memset(Data->RingtonesInfo,0,sizeof(GSM_AllRingtonesInfo)); |
2677 | if (msg.Buffer[4] * 256 + msg.Buffer[5] == 0x00) return ERR_EMPTY; | 2683 | if (msg.Buffer[4] * 256 + msg.Buffer[5] == 0x00) return ERR_EMPTY; |
2678 | Data->RingtonesInfo->Number = msg.Buffer[4] * 256 + msg.Buffer[5]; | 2684 | Data->RingtonesInfo->Number = msg.Buffer[4] * 256 + msg.Buffer[5]; |
2685 | // allocate array of ringtones based on number | ||
2686 | Data->RingtonesInfo->Ringtone = calloc(Data->RingtonesInfo->Number, sizeof(GSM_RingtoneInfo)); | ||
2679 | tmp = 6; | 2687 | tmp = 6; |
2680 | for (i=0;i<Data->RingtonesInfo->Number;i++) { | 2688 | for (i=0;i<Data->RingtonesInfo->Number;i++) { |
2681 | Data->RingtonesInfo->Ringtone[i].Group = msg.Buffer[tmp+4]; | 2689 | Data->RingtonesInfo->Ringtone[i].Group = msg.Buffer[tmp+4]; |
2682 | Data->RingtonesInfo->Ringtone[i].ID = msg.Buffer[tmp+2] * 256 + msg.Buffer[tmp+3]; | 2690 | Data->RingtonesInfo->Ringtone[i].ID = msg.Buffer[tmp+2] * 256 + msg.Buffer[tmp+3]; |
2683 | memcpy(Data->RingtonesInfo->Ringtone[i].Name,msg.Buffer+tmp+8,(msg.Buffer[tmp+6]*256+msg.Buffer[tmp+7])*2); | 2691 | memcpy(Data->RingtonesInfo->Ringtone[i].Name,msg.Buffer+tmp+8,(msg.Buffer[tmp+6]*256+msg.Buffer[tmp+7])*2); |
2684 | smprintf(s, "%5i (%5i). \"%s\"\n", | 2692 | smprintf(s, "%5i (%5i). \"%s\"\n", |
2685 | Data->RingtonesInfo->Ringtone[i].ID, | 2693 | Data->RingtonesInfo->Ringtone[i].ID, |
2686 | Data->RingtonesInfo->Ringtone[i].Group, | 2694 | Data->RingtonesInfo->Ringtone[i].Group, |
@@ -2749,17 +2757,17 @@ static GSM_Error N6510_ReplyGetRingtone(GSM_Protocol_Message msg, GSM_StateMachi | |||
2749 | /* Copying frame */ | 2757 | /* Copying frame */ |
2750 | memcpy(Data->Ringtone->NokiaBinary.Frame,msg.Buffer+tmp,i-tmp); | 2758 | memcpy(Data->Ringtone->NokiaBinary.Frame,msg.Buffer+tmp,i-tmp); |
2751 | Data->Ringtone->NokiaBinary.Length=i-tmp; | 2759 | Data->Ringtone->NokiaBinary.Length=i-tmp; |
2752 | return ERR_NONE; | 2760 | return ERR_NONE; |
2753 | } | 2761 | } |
2754 | 2762 | ||
2755 | static GSM_Error N6510_GetRingtone(GSM_StateMachine *s, GSM_Ringtone *Ringtone, bool PhoneRingtone) | 2763 | static GSM_Error N6510_GetRingtone(GSM_StateMachine *s, GSM_Ringtone *Ringtone, bool PhoneRingtone) |
2756 | { | 2764 | { |
2757 | GSM_AllRingtonesInfo Info; | 2765 | GSM_AllRingtonesInfo Info = {0, NULL}; |
2758 | GSM_Error error; | 2766 | GSM_Error error; |
2759 | unsigned char req2[6] = {N7110_FRAME_HEADER, 0x12, | 2767 | unsigned char req2[6] = {N7110_FRAME_HEADER, 0x12, |
2760 | 0x00, 0xe7}; /* Location */ | 2768 | 0x00, 0xe7}; /* Location */ |
2761 | 2769 | ||
2762 | if (Ringtone->Format == 0x00) Ringtone->Format = RING_NOKIABINARY; | 2770 | if (Ringtone->Format == 0x00) Ringtone->Format = RING_NOKIABINARY; |
2763 | 2771 | ||
2764 | switch (Ringtone->Format) { | 2772 | switch (Ringtone->Format) { |
2765 | case RING_NOTETONE: | 2773 | case RING_NOTETONE: |
@@ -2769,17 +2777,19 @@ static GSM_Error N6510_GetRingtone(GSM_StateMachine *s, GSM_Ringtone *Ringtone, | |||
2769 | s->Phone.Data.Ringtone= Ringtone; | 2777 | s->Phone.Data.Ringtone= Ringtone; |
2770 | Info.Number = 0; | 2778 | Info.Number = 0; |
2771 | error=N6510_PrivGetRingtonesInfo(s, &Info, PhoneRingtone); | 2779 | error=N6510_PrivGetRingtonesInfo(s, &Info, PhoneRingtone); |
2772 | if (error != ERR_NONE) return error; | 2780 | if (error != ERR_NONE) return error; |
2773 | if (Ringtone->Location > Info.Number) return ERR_INVALIDLOCATION; | 2781 | if (Ringtone->Location > Info.Number) return ERR_INVALIDLOCATION; |
2774 | req2[4] = Info.Ringtone[Ringtone->Location-1].ID / 256; | 2782 | req2[4] = Info.Ringtone[Ringtone->Location-1].ID / 256; |
2775 | req2[5] = Info.Ringtone[Ringtone->Location-1].ID % 256; | 2783 | req2[5] = Info.Ringtone[Ringtone->Location-1].ID % 256; |
2776 | smprintf(s, "Getting binary ringtone\n"); | 2784 | smprintf(s, "Getting binary ringtone\n"); |
2777 | return GSM_WaitFor (s, req2, 6, 0x1f, 4, ID_GetRingtone); | 2785 | error = GSM_WaitFor (s, req2, 6, 0x1f, 4, ID_GetRingtone); |
2786 | if (Info.Ringtone) free(Info.Ringtone); | ||
2787 | return error; | ||
2778 | case RING_MIDI: | 2788 | case RING_MIDI: |
2779 | case RING_MMF: | 2789 | case RING_MMF: |
2780 | return ERR_NOTSUPPORTED; | 2790 | return ERR_NOTSUPPORTED; |
2781 | } | 2791 | } |
2782 | return ERR_NOTSUPPORTED; | 2792 | return ERR_NOTSUPPORTED; |
2783 | } | 2793 | } |
2784 | 2794 | ||
2785 | static GSM_Error N6510_PlayTone(GSM_StateMachine *s, int Herz, unsigned char Volume, bool start) | 2795 | static GSM_Error N6510_PlayTone(GSM_StateMachine *s, int Herz, unsigned char Volume, bool start) |
@@ -4049,16 +4059,107 @@ GSM_Error N6510_GetNextNote(GSM_StateMachine *s, GSM_NoteEntry *Note, bool start | |||
4049 | 4059 | ||
4050 | if (Note->Location > LastNote->Number) return ERR_EMPTY; | 4060 | if (Note->Location > LastNote->Number) return ERR_EMPTY; |
4051 | 4061 | ||
4052 | s->Phone.Data.Note = Note; | 4062 | s->Phone.Data.Note = Note; |
4053 | smprintf(s, "Getting note\n"); | 4063 | smprintf(s, "Getting note\n"); |
4054 | return N6510_PrivGetGenericCalendar3(s, LastNote->Location[Note->Location-1], ID_GetNote); | 4064 | return N6510_PrivGetGenericCalendar3(s, LastNote->Location[Note->Location-1], ID_GetNote); |
4055 | } | 4065 | } |
4056 | 4066 | ||
4067 | static GSM_Error N6510_DeleteNote(GSM_StateMachine *s, GSM_NoteEntry *Not) | ||
4068 | { | ||
4069 | GSM_Error error; | ||
4070 | GSM_NOKIACalToDoLocations *LastNote = &s->Phone.Data.Priv.N6510.LastNote; | ||
4071 | GSM_CalendarEntry Note; | ||
4072 | |||
4073 | if (!IsPhoneFeatureAvailable(s->Phone.Data.ModelInfo, F_NOTES)) return ERR_NOTSUPPORTED; | ||
4074 | |||
4075 | error=N6510_GetCalendarInfo3(s,LastNote,2); | ||
4076 | if (error!=ERR_NONE) return error; | ||
4077 | |||
4078 | smprintf(s, "Deleting Note\n"); | ||
4079 | |||
4080 | if (Not->Location > LastNote->Number || Not->Location == 0) return ERR_INVALIDLOCATION; | ||
4081 | |||
4082 | Note.Location = LastNote->Location[Not->Location-1]; | ||
4083 | return N71_65_DelCalendar(s,&Note); | ||
4084 | } | ||
4085 | |||
4086 | static GSM_Error N6510_ReplyGetNoteFirstLoc(GSM_Protocol_Message msg, GSM_StateMachine *s) | ||
4087 | { | ||
4088 | smprintf(s, "First Note location: %i\n",msg.Buffer[8]*256+msg.Buffer[9]); | ||
4089 | s->Phone.Data.Note->Location = msg.Buffer[8]*256+msg.Buffer[9]; | ||
4090 | return ERR_NONE; | ||
4091 | } | ||
4092 | |||
4093 | static GSM_Error N6510_ReplyAddNote(GSM_Protocol_Message msg, GSM_StateMachine *s) | ||
4094 | { | ||
4095 | smprintf(s, "ToDo added\n"); | ||
4096 | return ERR_NONE; | ||
4097 | } | ||
4098 | |||
4099 | static GSM_Error N6510_AddNote(GSM_StateMachine *s, GSM_NoteEntry *Not) | ||
4100 | { | ||
4101 | GSM_Error error; | ||
4102 | int count=54; | ||
4103 | unsigned char reqLoc[] = {N6110_FRAME_HEADER, 0x95, | ||
4104 | 0x02};/* 1 = todo, 2 = note */ | ||
4105 | unsigned char req[5000] = { | ||
4106 | N6110_FRAME_HEADER, 0x65, | ||
4107 | 0x02, /* 0 = calendar, 1 = todo, 2 = note */ | ||
4108 | 0x00, 0x00, 0x00, | ||
4109 | 0x00, 0x00, /* location */ | ||
4110 | 0x00, 0x00, 0x00, 0x00, | ||
4111 | 0xFF, 0xFF, 0xFF, 0xFF, /* alarm */ | ||
4112 | 0x80, 0x00, 0x00, | ||
4113 | 0xA9, /* note icon */ | ||
4114 | 0x00, 0x00, 0x00, 0x00, /* alarm type */ | ||
4115 | 0x00, /* 0x02 or 0x00 */ | ||
4116 | 0x80, /* note type */ | ||
4117 | 0x07, 0xD2, 0x01, 0x01, 0x00, 0x00, /* start date/time */ | ||
4118 | 0x07, 0xD2, 0x01, 0x11, 0x00, 0x00, /* end date/time */ | ||
4119 | 0x00, 0x00, /* recurrance */ | ||
4120 | 0xFF, 0xFF, /* birth year */ | ||
4121 | 0x00, /* ToDo priority */ | ||
4122 | 0x00, /* ToDo completed ? */ | ||
4123 | 0x00, 0x00, 0x00, | ||
4124 | 0x00, /* note text length */ | ||
4125 | 0x00, /* phone length/meeting place */ | ||
4126 | 0x00, 0x00, 0x00}; | ||
4127 | |||
4128 | s->Phone.Data.Note = Not; | ||
4129 | |||
4130 | smprintf(s, "Getting first free Note location\n"); | ||
4131 | error = GSM_WaitFor (s, reqLoc, 5, 0x13, 4, ID_SetNote); | ||
4132 | if (error!=ERR_NONE) return error; | ||
4133 | req[8] = Not->Location/256; | ||
4134 | req[9] = Not->Location%256; | ||
4135 | |||
4136 | req[49] = UnicodeLength(Not->Text); | ||
4137 | CopyUnicodeString(req+54,Not->Text); | ||
4138 | count+= req[49]*2; | ||
4139 | |||
4140 | req[count++] = 0x00; | ||
4141 | |||
4142 | smprintf(s, "Adding Note\n"); | ||
4143 | return GSM_WaitFor (s, req, count, 0x13, 4, ID_SetNote); | ||
4144 | } | ||
4145 | |||
4146 | static GSM_Error N6510_GetNoteStatus(GSM_StateMachine *s, GSM_ToDoStatus *status) | ||
4147 | { | ||
4148 | GSM_NOKIACalToDoLocations*LastNote = &s->Phone.Data.Priv.N6510.LastNote; | ||
4149 | GSM_Error error; | ||
4150 | |||
4151 | error = N6510_GetCalendarInfo3(s,LastNote,2); | ||
4152 | if (error!=ERR_NONE) return error; | ||
4153 | |||
4154 | status->Used = LastNote->Number; | ||
4155 | return ERR_NONE; | ||
4156 | } | ||
4157 | |||
4057 | static int N6510_FindFileCheckSum(unsigned char *ptr, int len) | 4158 | static int N6510_FindFileCheckSum(unsigned char *ptr, int len) |
4058 | { | 4159 | { |
4059 | int acc, i, accx; | 4160 | int acc, i, accx; |
4060 | 4161 | ||
4061 | accx = 0; | 4162 | accx = 0; |
4062 | acc = 0xffff; | 4163 | acc = 0xffff; |
4063 | while (len--) { | 4164 | while (len--) { |
4064 | accx = (accx & 0xffff00ff) | (acc & 0xff00); | 4165 | accx = (accx & 0xffff00ff) | (acc & 0xff00); |
@@ -5184,29 +5285,30 @@ static GSM_Error N6510_ReplyAddToDo2(GSM_Protocol_Message msg, GSM_StateMachine | |||
5184 | { | 5285 | { |
5185 | smprintf(s, "ToDo added method 2\n"); | 5286 | smprintf(s, "ToDo added method 2\n"); |
5186 | return ERR_NONE; | 5287 | return ERR_NONE; |
5187 | } | 5288 | } |
5188 | 5289 | ||
5189 | static GSM_Error N6510_ReplyGetToDoFirstLoc2(GSM_Protocol_Message msg, GSM_StateMachine *s) | 5290 | static GSM_Error N6510_ReplyGetToDoFirstLoc2(GSM_Protocol_Message msg, GSM_StateMachine *s) |
5190 | { | 5291 | { |
5191 | smprintf(s, "First ToDo location method 2: %i\n",msg.Buffer[8]*256+msg.Buffer[9]); | 5292 | smprintf(s, "First ToDo location method 2: %i\n",msg.Buffer[8]*256+msg.Buffer[9]); |
5192 | s->Phone.Data.ToDo->Location = msg.Buffer[9]; | 5293 | s->Phone.Data.ToDo->Location = msg.Buffer[8]*256+msg.Buffer[9]; |
5193 | return ERR_NONE; | 5294 | return ERR_NONE; |
5194 | } | 5295 | } |
5195 | 5296 | ||
5196 | static GSM_Error N6510_AddToDo2(GSM_StateMachine *s, GSM_ToDoEntry *ToDo) | 5297 | static GSM_Error N6510_AddToDo2(GSM_StateMachine *s, GSM_ToDoEntry *ToDo) |
5197 | { | 5298 | { |
5198 | GSM_CalendarEntryNote; | 5299 | GSM_CalendarEntryNote; |
5199 | time_t t_time1,t_time2; | 5300 | time_t t_time1,t_time2; |
5200 | long diff; | 5301 | long diff; |
5201 | GSM_Error error; | 5302 | GSM_Error error; |
5202 | GSM_DateTime DT; | 5303 | GSM_DateTime DT; |
5203 | int Text, Alarm, EndTime, Completed, count=54, Phone; | 5304 | int Text, Alarm, EndTime, Completed, count=54, Phone; |
5204 | unsigned char reqLoc[] = {N6110_FRAME_HEADER, 0x95, 0x01}; | 5305 | unsigned char reqLoc[] = {N6110_FRAME_HEADER, 0x95, |
5306 | 0x01};/* 1 = todo, 2 = note */ | ||
5205 | unsigned char req[5000] = { | 5307 | unsigned char req[5000] = { |
5206 | N6110_FRAME_HEADER, 0x65, | 5308 | N6110_FRAME_HEADER, 0x65, |
5207 | 0x01, /* 0 = calendar, 1 = todo */ | 5309 | 0x01, /* 0 = calendar, 1 = todo */ |
5208 | 0x00, 0x00, 0x00, | 5310 | 0x00, 0x00, 0x00, |
5209 | 0x00, 0x00, /* location */ | 5311 | 0x00, 0x00, /* location */ |
5210 | 0x00, 0x00, 0x00, 0x00, | 5312 | 0x00, 0x00, 0x00, 0x00, |
5211 | 0xFF, 0xFF, 0xFF, 0xFF, /* alarm */ | 5313 | 0xFF, 0xFF, 0xFF, 0xFF, /* alarm */ |
5212 | 0x80, 0x00, 0x00, | 5314 | 0x80, 0x00, 0x00, |
@@ -5580,24 +5682,26 @@ static GSM_Reply_Function N6510ReplyFunctions[] = { | |||
5580 | {N6510_ReplyGetCalendarNotePos, "\x13",0x03,0x32,ID_GetCalendarNotePos },/*method 1*/ | 5682 | {N6510_ReplyGetCalendarNotePos, "\x13",0x03,0x32,ID_GetCalendarNotePos },/*method 1*/ |
5581 | {N6510_ReplyGetCalendarInfo, "\x13",0x03,0x3B,ID_GetCalendarNotesInfo},/*method 1*/ | 5683 | {N6510_ReplyGetCalendarInfo, "\x13",0x03,0x3B,ID_GetCalendarNotesInfo},/*method 1*/ |
5582 | #ifdef DEBUG | 5684 | #ifdef DEBUG |
5583 | {N71_65_ReplyGetNextCalendar2, "\x13",0x03,0x3F,ID_GetCalendarNote }, | 5685 | {N71_65_ReplyGetNextCalendar2, "\x13",0x03,0x3F,ID_GetCalendarNote }, |
5584 | #endif | 5686 | #endif |
5585 | {N71_65_ReplyAddCalendar2, "\x13",0x03,0x41,ID_SetCalendarNote },/*method 2*/ | 5687 | {N71_65_ReplyAddCalendar2, "\x13",0x03,0x41,ID_SetCalendarNote },/*method 2*/ |
5586 | {N6510_ReplyAddCalendar3, "\x13",0x03,0x66,ID_SetCalendarNote },/*method 3*/ | 5688 | {N6510_ReplyAddCalendar3, "\x13",0x03,0x66,ID_SetCalendarNote },/*method 3*/ |
5587 | {N6510_ReplyAddToDo2, "\x13",0x03,0x66,ID_SetToDo }, | 5689 | {N6510_ReplyAddToDo2, "\x13",0x03,0x66,ID_SetToDo }, |
5690 | {N6510_ReplyAddNote, "\x13",0x03,0x66,ID_SetNote }, | ||
5588 | {N6510_ReplyGetCalendar3, "\x13",0x03,0x7E,ID_GetCalendarNote },/*method 3*/ | 5691 | {N6510_ReplyGetCalendar3, "\x13",0x03,0x7E,ID_GetCalendarNote },/*method 3*/ |
5589 | {N6510_ReplyGetToDo2, "\x13",0x03,0x7E,ID_GetToDo }, | 5692 | {N6510_ReplyGetToDo2, "\x13",0x03,0x7E,ID_GetToDo }, |
5590 | {N6510_ReplyGetNote, "\x13",0x03,0x7E,ID_GetNote }, | 5693 | {N6510_ReplyGetNote, "\x13",0x03,0x7E,ID_GetNote }, |
5591 | {N6510_ReplyGetCalendarSettings, "\x13",0x03,0x86,ID_GetCalendarSettings }, | 5694 | {N6510_ReplyGetCalendarSettings, "\x13",0x03,0x86,ID_GetCalendarSettings }, |
5592 | {N6510_ReplyGetLocale, "\x13",0x03,0x8A,ID_GetLocale }, | 5695 | {N6510_ReplyGetLocale, "\x13",0x03,0x8A,ID_GetLocale }, |
5593 | {N6510_ReplyGetCalendarSettings, "\x13",0x03,0x8E,ID_GetCalendarSettings }, | 5696 | {N6510_ReplyGetCalendarSettings, "\x13",0x03,0x8E,ID_GetCalendarSettings }, |
5594 | {N6510_ReplyGetCalendarNotePos, "\x13",0x03,0x96,ID_GetCalendarNotePos },/*method 3*/ | 5697 | {N6510_ReplyGetCalendarNotePos, "\x13",0x03,0x96,ID_GetCalendarNotePos },/*method 3*/ |
5595 | {N6510_ReplyGetToDoFirstLoc2, "\x13",0x03,0x96,ID_SetToDo }, | 5698 | {N6510_ReplyGetToDoFirstLoc2, "\x13",0x03,0x96,ID_SetToDo }, |
5699 | {N6510_ReplyGetNoteFirstLoc, "\x13",0x03,0x96,ID_SetNote }, | ||
5596 | {N6510_ReplyGetCalendarInfo, "\x13",0x03,0x9F,ID_GetCalendarNotesInfo},/*method 3*/ | 5700 | {N6510_ReplyGetCalendarInfo, "\x13",0x03,0x9F,ID_GetCalendarNotesInfo},/*method 3*/ |
5597 | {N6510_ReplyGetToDoStatus2, "\x13",0x03,0x9F,ID_GetToDo }, | 5701 | {N6510_ReplyGetToDoStatus2, "\x13",0x03,0x9F,ID_GetToDo }, |
5598 | {N6510_ReplyGetNoteInfo, "\x13",0x03,0x9F,ID_GetNote }, | 5702 | {N6510_ReplyGetNoteInfo, "\x13",0x03,0x9F,ID_GetNote }, |
5599 | 5703 | ||
5600 | {N6510_ReplySaveSMSMessage, "\x14",0x03,0x01,ID_SaveSMSMessage }, | 5704 | {N6510_ReplySaveSMSMessage, "\x14",0x03,0x01,ID_SaveSMSMessage }, |
5601 | {N6510_ReplySetPicture, "\x14",0x03,0x01,ID_SetBitmap }, | 5705 | {N6510_ReplySetPicture, "\x14",0x03,0x01,ID_SetBitmap }, |
5602 | {N6510_ReplyGetSMSMessage, "\x14",0x03,0x03,ID_GetSMSMessage }, | 5706 | {N6510_ReplyGetSMSMessage, "\x14",0x03,0x03,ID_GetSMSMessage }, |
5603 | {N6510_ReplyDeleteSMSMessage, "\x14",0x03,0x05,ID_DeleteSMSMessage }, | 5707 | {N6510_ReplyDeleteSMSMessage, "\x14",0x03,0x05,ID_DeleteSMSMessage }, |
@@ -5727,17 +5831,17 @@ static GSM_Reply_Function N6510ReplyFunctions[] = { | |||
5727 | /* 0xD7 - Bluetooth */ | 5831 | /* 0xD7 - Bluetooth */ |
5728 | 5832 | ||
5729 | {N6510_ReplyGetRingtoneID, "\xDB",0x03,0x02,ID_SetRingtone }, | 5833 | {N6510_ReplyGetRingtoneID, "\xDB",0x03,0x02,ID_SetRingtone }, |
5730 | 5834 | ||
5731 | {NULL, "\x00",0x00,0x00,ID_None } | 5835 | {NULL, "\x00",0x00,0x00,ID_None } |
5732 | }; | 5836 | }; |
5733 | 5837 | ||
5734 | GSM_Phone_Functions N6510Phone = { | 5838 | GSM_Phone_Functions N6510Phone = { |
5735 | "1100|1100a|1100b|3100|3100b|3108|3200|3200a|3300|3510|3510i|3530|3589i|3590|3595|5100|5140|6100|6200|6220|6230|6310|6310i|6385|6510|6610|6610i|6800|6810|6820|7210|7250|7250i|7600|8310|8390|8910|8910i", | 5839 | "1100|1100a|1100b|3100|3100b|3105|3108|3200|3200a|3300|3510|3510i|3530|3589i|3590|3595|5100|5140|6100|6200|6220|6230|6310|6310i|6385|6510|6610|6610i|6800|6810|6820|7210|7250|7250i|7600|8310|8390|8910|8910i", |
5736 | N6510ReplyFunctions, | 5840 | N6510ReplyFunctions, |
5737 | N6510_Initialise, | 5841 | N6510_Initialise, |
5738 | NONEFUNCTION, /* Terminate */ | 5842 | NONEFUNCTION, /* Terminate */ |
5739 | GSM_DispatchMessage, | 5843 | GSM_DispatchMessage, |
5740 | N6510_ShowStartInfo, | 5844 | N6510_ShowStartInfo, |
5741 | NOKIA_GetManufacturer, | 5845 | NOKIA_GetManufacturer, |
5742 | DCT3DCT4_GetModel, | 5846 | DCT3DCT4_GetModel, |
5743 | DCT3DCT4_GetFirmware, | 5847 | DCT3DCT4_GetFirmware, |
@@ -5836,17 +5940,23 @@ GSM_Phone_Functions N6510Phone = { | |||
5836 | NOTIMPLEMENTED, /* GetCalendar */ | 5940 | NOTIMPLEMENTED, /* GetCalendar */ |
5837 | N6510_GetNextCalendar, | 5941 | N6510_GetNextCalendar, |
5838 | NOTIMPLEMENTED, /* SetCalendar */ | 5942 | NOTIMPLEMENTED, /* SetCalendar */ |
5839 | N6510_AddCalendar, | 5943 | N6510_AddCalendar, |
5840 | N71_65_DelCalendar, | 5944 | N71_65_DelCalendar, |
5841 | NOTIMPLEMENTED, /* DeleteAllCalendar*/ | 5945 | NOTIMPLEMENTED, /* DeleteAllCalendar*/ |
5842 | N6510_GetCalendarSettings, | 5946 | N6510_GetCalendarSettings, |
5843 | NOTSUPPORTED, /* SetCalendarSettings*/ | 5947 | NOTSUPPORTED, /* SetCalendarSettings*/ |
5948 | N6510_GetNoteStatus, | ||
5949 | NOTIMPLEMENTED, /* GetNote */ | ||
5844 | N6510_GetNextNote, | 5950 | N6510_GetNextNote, |
5951 | NOTIMPLEMENTED, /* SetNote */ | ||
5952 | N6510_AddNote, | ||
5953 | N6510_DeleteNote, | ||
5954 | NOTSUPPORTED, /* DeleteAllNotes */ | ||
5845 | N6510_GetProfile, | 5955 | N6510_GetProfile, |
5846 | N6510_SetProfile, | 5956 | N6510_SetProfile, |
5847 | N6510_GetFMStation, | 5957 | N6510_GetFMStation, |
5848 | N6510_SetFMStation, | 5958 | N6510_SetFMStation, |
5849 | N6510_ClearFMStations, | 5959 | N6510_ClearFMStations, |
5850 | N6510_GetNextFileFolder, | 5960 | N6510_GetNextFileFolder, |
5851 | N6510_GetFilePart, | 5961 | N6510_GetFilePart, |
5852 | N6510_AddFilePart, | 5962 | N6510_AddFilePart, |
diff --git a/gammu/emb/common/phone/nokia/nauto.c b/gammu/emb/common/phone/nokia/nauto.c index 3bb53ec..3c7f2cd 100644 --- a/gammu/emb/common/phone/nokia/nauto.c +++ b/gammu/emb/common/phone/nokia/nauto.c | |||
@@ -116,17 +116,23 @@ GSM_Phone_Functions NAUTOPhone = { | |||
116 | NOTSUPPORTED, /* GetCalendar */ | 116 | NOTSUPPORTED, /* GetCalendar */ |
117 | NOTSUPPORTED, /* GetNextCalendar */ | 117 | NOTSUPPORTED, /* GetNextCalendar */ |
118 | NOTSUPPORTED, /* SetCalendar */ | 118 | NOTSUPPORTED, /* SetCalendar */ |
119 | NOTSUPPORTED, /* AddCalendar */ | 119 | NOTSUPPORTED, /* AddCalendar */ |
120 | NOTSUPPORTED, /* DeleteCalendar */ | 120 | NOTSUPPORTED, /* DeleteCalendar */ |
121 | NOTSUPPORTED, /* DeleteAllCalendar*/ | 121 | NOTSUPPORTED, /* DeleteAllCalendar*/ |
122 | NOTSUPPORTED, /* GetCalendarSettings*/ | 122 | NOTSUPPORTED, /* GetCalendarSettings*/ |
123 | NOTSUPPORTED, /* SetCalendarSettings*/ | 123 | NOTSUPPORTED, /* SetCalendarSettings*/ |
124 | NOTSUPPORTED, /* GetNoteStatus */ | ||
125 | NOTSUPPORTED, /* GetNote */ | ||
124 | NOTSUPPORTED, /* GetNextNote */ | 126 | NOTSUPPORTED, /* GetNextNote */ |
127 | NOTSUPPORTED, /* SetNote */ | ||
128 | NOTSUPPORTED, /* AddNote */ | ||
129 | NOTSUPPORTED, /* DeleteNote */ | ||
130 | NOTSUPPORTED, /* DeleteAllNotes */ | ||
125 | NOTSUPPORTED, /* GetProfile */ | 131 | NOTSUPPORTED, /* GetProfile */ |
126 | NOTSUPPORTED, /* SetProfile */ | 132 | NOTSUPPORTED, /* SetProfile */ |
127 | NOTSUPPORTED, /* GetFMStation */ | 133 | NOTSUPPORTED, /* GetFMStation */ |
128 | NOTSUPPORTED, /* SetFMStation */ | 134 | NOTSUPPORTED, /* SetFMStation */ |
129 | NOTSUPPORTED, /* ClearFMStations */ | 135 | NOTSUPPORTED, /* ClearFMStations */ |
130 | NOTSUPPORTED, /* GetNextFileFolder*/ | 136 | NOTSUPPORTED, /* GetNextFileFolder*/ |
131 | NOTSUPPORTED, /* GetFilePart */ | 137 | NOTSUPPORTED, /* GetFilePart */ |
132 | NOTSUPPORTED, /* AddFilePart */ | 138 | NOTSUPPORTED, /* AddFilePart */ |
diff --git a/gammu/emb/common/phone/obex/obexgen.c b/gammu/emb/common/phone/obex/obexgen.c index 3106369..b91afac 100644 --- a/gammu/emb/common/phone/obex/obexgen.c +++ b/gammu/emb/common/phone/obex/obexgen.c | |||
@@ -824,17 +824,23 @@ GSM_Phone_Functions OBEXGENPhone = { | |||
824 | NOTIMPLEMENTED, /* GetCalendar */ | 824 | NOTIMPLEMENTED, /* GetCalendar */ |
825 | NOTIMPLEMENTED, /* GetNextCalendar */ | 825 | NOTIMPLEMENTED, /* GetNextCalendar */ |
826 | NOTIMPLEMENTED, /* SetCalendar */ | 826 | NOTIMPLEMENTED, /* SetCalendar */ |
827 | NOTIMPLEMENTED, /* AddCalendar */ | 827 | NOTIMPLEMENTED, /* AddCalendar */ |
828 | NOTIMPLEMENTED, /* DeleteCalendar */ | 828 | NOTIMPLEMENTED, /* DeleteCalendar */ |
829 | NOTIMPLEMENTED, /* DeleteAllCalendar*/ | 829 | NOTIMPLEMENTED, /* DeleteAllCalendar*/ |
830 | NOTSUPPORTED, /* GetCalendarSettings*/ | 830 | NOTSUPPORTED, /* GetCalendarSettings*/ |
831 | NOTSUPPORTED, /* SetCalendarSettings*/ | 831 | NOTSUPPORTED, /* SetCalendarSettings*/ |
832 | NOTSUPPORTED, /* GetNoteStatus */ | ||
833 | NOTSUPPORTED, /* GetNote */ | ||
832 | NOTSUPPORTED, /* GetNextNote */ | 834 | NOTSUPPORTED, /* GetNextNote */ |
835 | NOTSUPPORTED, /* SetNote */ | ||
836 | NOTSUPPORTED, /* AddNote */ | ||
837 | NOTSUPPORTED, /* DeleteNote */ | ||
838 | NOTSUPPORTED, /* DeleteAllNotes */ | ||
833 | NOTIMPLEMENTED, /* GetProfile */ | 839 | NOTIMPLEMENTED, /* GetProfile */ |
834 | NOTIMPLEMENTED, /* SetProfile */ | 840 | NOTIMPLEMENTED, /* SetProfile */ |
835 | NOTIMPLEMENTED, /* GetFMStation */ | 841 | NOTIMPLEMENTED, /* GetFMStation */ |
836 | NOTIMPLEMENTED, /* SetFMStation */ | 842 | NOTIMPLEMENTED, /* SetFMStation */ |
837 | NOTIMPLEMENTED, /* ClearFMStations */ | 843 | NOTIMPLEMENTED, /* ClearFMStations */ |
838 | OBEXGEN_GetNextFileFolder, | 844 | OBEXGEN_GetNextFileFolder, |
839 | OBEXGEN_GetFilePart, | 845 | OBEXGEN_GetFilePart, |
840 | OBEXGEN_AddFilePart, | 846 | OBEXGEN_AddFilePart, |
diff --git a/gammu/emb/common/phone/pfunc.c b/gammu/emb/common/phone/pfunc.c index a03a81d..fe890fc 100644 --- a/gammu/emb/common/phone/pfunc.c +++ b/gammu/emb/common/phone/pfunc.c | |||
@@ -56,16 +56,17 @@ GSM_Error PHONE_EncodeSMSFrame(GSM_StateMachine *s, GSM_SMSMessage *SMS, unsigne | |||
56 | 56 | ||
57 | if (SMS->SMSC.Location!=0) { | 57 | if (SMS->SMSC.Location!=0) { |
58 | error = s->Phone.Functions->GetSMSC(s, &SMS->SMSC); | 58 | error = s->Phone.Functions->GetSMSC(s, &SMS->SMSC); |
59 | if (error != ERR_NONE) return error; | 59 | if (error != ERR_NONE) return error; |
60 | SMS->SMSC.Location = 0; | 60 | SMS->SMSC.Location = 0; |
61 | } | 61 | } |
62 | if (SMS->PDU == SMS_Deliver) { | 62 | if (SMS->PDU == SMS_Deliver) { |
63 | if (SMS->SMSC.Number[0] == 0x00 && SMS->SMSC.Number[1] == 0x00) { | 63 | if (SMS->SMSC.Number[0] == 0x00 && SMS->SMSC.Number[1] == 0x00) { |
64 | smprintf(s,"No SMSC in SMS Deliver\n"); | ||
64 | return ERR_EMPTYSMSC; | 65 | return ERR_EMPTYSMSC; |
65 | } | 66 | } |
66 | } | 67 | } |
67 | return GSM_EncodeSMSFrame(SMS, buffer, Layout, length, clear); | 68 | return GSM_EncodeSMSFrame(SMS, buffer, Layout, length, clear); |
68 | } | 69 | } |
69 | 70 | ||
70 | GSM_Error PHONE_Terminate(GSM_StateMachine *s) | 71 | GSM_Error PHONE_Terminate(GSM_StateMachine *s) |
71 | { | 72 | { |
diff --git a/gammu/emb/common/phone/symbian/mroutgen.c b/gammu/emb/common/phone/symbian/mroutgen.c index a7382cf..63d26cf 100644 --- a/gammu/emb/common/phone/symbian/mroutgen.c +++ b/gammu/emb/common/phone/symbian/mroutgen.c | |||
@@ -193,17 +193,23 @@ GSM_Phone_Functions MROUTERGENPhone = { | |||
193 | NOTSUPPORTED, /* GetCalendar */ | 193 | NOTSUPPORTED, /* GetCalendar */ |
194 | NOTSUPPORTED, /* GetNextCalendar */ | 194 | NOTSUPPORTED, /* GetNextCalendar */ |
195 | NOTSUPPORTED, /* SetCalendar */ | 195 | NOTSUPPORTED, /* SetCalendar */ |
196 | NOTSUPPORTED, /* AddCalendar */ | 196 | NOTSUPPORTED, /* AddCalendar */ |
197 | NOTSUPPORTED, /* DeleteCalendar */ | 197 | NOTSUPPORTED, /* DeleteCalendar */ |
198 | NOTSUPPORTED, /* DeleteAllCalendar*/ | 198 | NOTSUPPORTED, /* DeleteAllCalendar*/ |
199 | NOTSUPPORTED, /* GetCalendarSettings*/ | 199 | NOTSUPPORTED, /* GetCalendarSettings*/ |
200 | NOTSUPPORTED, /* SetCalendarSettings*/ | 200 | NOTSUPPORTED, /* SetCalendarSettings*/ |
201 | NOTSUPPORTED, /* GetNoteStatus */ | ||
202 | NOTSUPPORTED, /* GetNote */ | ||
201 | NOTSUPPORTED, /* GetNextNote */ | 203 | NOTSUPPORTED, /* GetNextNote */ |
204 | NOTSUPPORTED, /* SetNote */ | ||
205 | NOTSUPPORTED, /* AddNote */ | ||
206 | NOTSUPPORTED, /* DeleteNote */ | ||
207 | NOTSUPPORTED, /* DeleteAllNotes */ | ||
202 | NOTSUPPORTED, /* GetProfile */ | 208 | NOTSUPPORTED, /* GetProfile */ |
203 | NOTSUPPORTED, /* SetProfile */ | 209 | NOTSUPPORTED, /* SetProfile */ |
204 | NOTSUPPORTED, /* GetFMStation */ | 210 | NOTSUPPORTED, /* GetFMStation */ |
205 | NOTSUPPORTED, /* SetFMStation */ | 211 | NOTSUPPORTED, /* SetFMStation */ |
206 | NOTSUPPORTED, /* ClearFMStations */ | 212 | NOTSUPPORTED, /* ClearFMStations */ |
207 | NOTSUPPORTED, /* GetNextFileFolder*/ | 213 | NOTSUPPORTED, /* GetNextFileFolder*/ |
208 | NOTSUPPORTED, /* GetFilePart */ | 214 | NOTSUPPORTED, /* GetFilePart */ |
209 | NOTSUPPORTED, /* AddFilePart */ | 215 | NOTSUPPORTED, /* AddFilePart */ |
diff --git a/gammu/emb/common/protocol/nokia/fbus2.c b/gammu/emb/common/protocol/nokia/fbus2.c index 2b41f8b..967eaa4 100644 --- a/gammu/emb/common/protocol/nokia/fbus2.c +++ b/gammu/emb/common/protocol/nokia/fbus2.c | |||
@@ -1,14 +1,23 @@ | |||
1 | /* (c) 2002-2003 by Marcin Wiacek */ | 1 | /* (c) 2002-2003 by Marcin Wiacek */ |
2 | /* based on some work from MyGnokii (www.mwiacek.com) */ | 2 | /* based on some work from MyGnokii (www.mwiacek.com) */ |
3 | /* Based on some work from Gnokii (www.gnokii.org) | 3 | /* Based on some work from Gnokii (www.gnokii.org) |
4 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot | 4 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot |
5 | * GNU GPL version 2 or later | 5 | * GNU GPL version 2 or later |
6 | */ | 6 | */ |
7 | /* Due to a problem in the source code management, the names of some of | ||
8 | * the authors have unfortunately been lost. We do not mean to belittle | ||
9 | * their efforts and hope they will contact us to see their names | ||
10 | * properly added to the Copyright notice above. | ||
11 | * Having published their contributions under the terms of the GNU | ||
12 | * General Public License (GPL) [version 2], the Copyright of these | ||
13 | * authors will remain respected by adhering to the license they chose | ||
14 | * to publish their code under. | ||
15 | */ | ||
7 | 16 | ||
8 | #include "../../gsmstate.h" | 17 | #include "../../gsmstate.h" |
9 | 18 | ||
10 | #if defined(GSM_ENABLE_FBUS2) || defined(GSM_ENABLE_FBUS2IRDA) || defined(GSM_ENABLE_FBUS2DLR3) || defined(GSM_ENABLE_FBUS2BLUE) || defined(GSM_ENABLE_BLUEFBUS2) || defined(GSM_ENABLE_FBUS2DKU5) || defined(GSM_ENABLE_FBUS2PL2303) | 19 | #if defined(GSM_ENABLE_FBUS2) || defined(GSM_ENABLE_FBUS2IRDA) || defined(GSM_ENABLE_FBUS2DLR3) || defined(GSM_ENABLE_FBUS2BLUE) || defined(GSM_ENABLE_BLUEFBUS2) || defined(GSM_ENABLE_FBUS2DKU5) || defined(GSM_ENABLE_FBUS2PL2303) |
11 | 20 | ||
12 | #include <stdio.h> | 21 | #include <stdio.h> |
13 | #include <string.h> | 22 | #include <string.h> |
14 | 23 | ||
@@ -140,16 +149,17 @@ static GSM_Error FBUS2_StateMachine(GSM_StateMachine *s, unsigned char rx_char) | |||
140 | 149 | ||
141 | seq_num = d->Msg.Buffer[d->Msg.Length-1]; | 150 | seq_num = d->Msg.Buffer[d->Msg.Length-1]; |
142 | 151 | ||
143 | if (d->Msg.Type == FBUS2_ACK_BYTE) { | 152 | if (d->Msg.Type == FBUS2_ACK_BYTE) { |
144 | if (s->di.dl==DL_TEXT || s->di.dl==DL_TEXTALL || | 153 | if (s->di.dl==DL_TEXT || s->di.dl==DL_TEXTALL || |
145 | s->di.dl==DL_TEXTDATE || s->di.dl==DL_TEXTALLDATE) { | 154 | s->di.dl==DL_TEXTDATE || s->di.dl==DL_TEXTALLDATE) { |
146 | smprintf(s, "[Received Ack of type %02x, seq %02x]\n",d->Msg.Buffer[0],seq_num); | 155 | smprintf(s, "[Received Ack of type %02x, seq %02x]\n",d->Msg.Buffer[0],seq_num); |
147 | } | 156 | } |
157 | free(d->Msg.Buffer); | ||
148 | 158 | ||
149 | d->MsgRXState = RX_Sync; | 159 | d->MsgRXState = RX_Sync; |
150 | return ERR_NONE; | 160 | return ERR_NONE; |
151 | } | 161 | } |
152 | 162 | ||
153 | frm_num = d->Msg.Buffer[d->Msg.Length-2]; | 163 | frm_num = d->Msg.Buffer[d->Msg.Length-2]; |
154 | 164 | ||
155 | if ((seq_num & 0x40) == 0x40) { | 165 | if ((seq_num & 0x40) == 0x40) { |
diff --git a/gammu/emb/common/protocol/nokia/fbus2.h b/gammu/emb/common/protocol/nokia/fbus2.h index 8dbcb07..3d31006 100644 --- a/gammu/emb/common/protocol/nokia/fbus2.h +++ b/gammu/emb/common/protocol/nokia/fbus2.h | |||
@@ -1,14 +1,23 @@ | |||
1 | /* (c) 2002-2003 by Marcin Wiacek */ | 1 | /* (c) 2002-2003 by Marcin Wiacek */ |
2 | /* based on some work from MyGnokii (www.mwiacek.com) */ | 2 | /* based on some work from MyGnokii (www.mwiacek.com) */ |
3 | /* Based on some work from Gnokii (www.gnokii.org) | 3 | /* Based on some work from Gnokii (www.gnokii.org) |
4 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot | 4 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot |
5 | * GNU GPL version 2 or later | 5 | * GNU GPL version 2 or later |
6 | */ | 6 | */ |
7 | /* Due to a problem in the source code management, the names of some of | ||
8 | * the authors have unfortunately been lost. We do not mean to belittle | ||
9 | * their efforts and hope they will contact us to see their names | ||
10 | * properly added to the Copyright notice above. | ||
11 | * Having published their contributions under the terms of the GNU | ||
12 | * General Public License (GPL) [version 2], the Copyright of these | ||
13 | * authors will remain respected by adhering to the license they chose | ||
14 | * to publish their code under. | ||
15 | */ | ||
7 | 16 | ||
8 | #ifndef fbus2_h | 17 | #ifndef fbus2_h |
9 | #define fbus2_h | 18 | #define fbus2_h |
10 | 19 | ||
11 | #include "../protocol.h" | 20 | #include "../protocol.h" |
12 | 21 | ||
13 | #define FBUS2_FRAME_ID 0x1e | 22 | #define FBUS2_FRAME_ID 0x1e |
14 | #define FBUS2_IRDA_FRAME_ID 0x1c | 23 | #define FBUS2_IRDA_FRAME_ID 0x1c |
diff --git a/gammu/emb/common/protocol/nokia/phonet.c b/gammu/emb/common/protocol/nokia/phonet.c index db5bd72..495a1bf 100644 --- a/gammu/emb/common/protocol/nokia/phonet.c +++ b/gammu/emb/common/protocol/nokia/phonet.c | |||
@@ -1,13 +1,22 @@ | |||
1 | /* (c) 2002-2003 by Marcin Wiacek */ | 1 | /* (c) 2002-2003 by Marcin Wiacek */ |
2 | /* Based on some work from Gnokii (www.gnokii.org) | 2 | /* Based on some work from Gnokii (www.gnokii.org) |
3 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot | 3 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot |
4 | * GNU GPL version 2 or later | 4 | * GNU GPL version 2 or later |
5 | */ | 5 | */ |
6 | /* Due to a problem in the source code management, the names of some of | ||
7 | * the authors have unfortunately been lost. We do not mean to belittle | ||
8 | * their efforts and hope they will contact us to see their names | ||
9 | * properly added to the Copyright notice above. | ||
10 | * Having published their contributions under the terms of the GNU | ||
11 | * General Public License (GPL) [version 2], the Copyright of these | ||
12 | * authors will remain respected by adhering to the license they chose | ||
13 | * to publish their code under. | ||
14 | */ | ||
6 | 15 | ||
7 | #include "../../gsmstate.h" | 16 | #include "../../gsmstate.h" |
8 | 17 | ||
9 | #if defined(GSM_ENABLE_IRDA) || defined(GSM_ENABLE_PHONETBLUE) || defined(GSM_ENABLE_BLUEPHONET) | 18 | #if defined(GSM_ENABLE_IRDA) || defined(GSM_ENABLE_PHONETBLUE) || defined(GSM_ENABLE_BLUEPHONET) |
10 | 19 | ||
11 | #include <stdio.h> | 20 | #include <stdio.h> |
12 | #include <string.h> | 21 | #include <string.h> |
13 | 22 | ||
diff --git a/gammu/emb/common/protocol/nokia/phonet.h b/gammu/emb/common/protocol/nokia/phonet.h index e750bbd..7626c23 100644 --- a/gammu/emb/common/protocol/nokia/phonet.h +++ b/gammu/emb/common/protocol/nokia/phonet.h | |||
@@ -1,13 +1,22 @@ | |||
1 | /* (c) 2002-2003 by Marcin Wiacek */ | 1 | /* (c) 2002-2003 by Marcin Wiacek */ |
2 | /* Based on some work from Gnokii (www.gnokii.org) | 2 | /* Based on some work from Gnokii (www.gnokii.org) |
3 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot | 3 | * (C) 1999-2000 Hugh Blemings & Pavel Janik ml. (C) 2001-2004 Pawel Kot |
4 | * GNU GPL version 2 or later | 4 | * GNU GPL version 2 or later |
5 | */ | 5 | */ |
6 | /* Due to a problem in the source code management, the names of some of | ||
7 | * the authors have unfortunately been lost. We do not mean to belittle | ||
8 | * their efforts and hope they will contact us to see their names | ||
9 | * properly added to the Copyright notice above. | ||
10 | * Having published their contributions under the terms of the GNU | ||
11 | * General Public License (GPL) [version 2], the Copyright of these | ||
12 | * authors will remain respected by adhering to the license they chose | ||
13 | * to publish their code under. | ||
14 | */ | ||
6 | 15 | ||
7 | #ifndef PHONET_h | 16 | #ifndef PHONET_h |
8 | #define PHONET_h | 17 | #define PHONET_h |
9 | 18 | ||
10 | #include "../protocol.h" | 19 | #include "../protocol.h" |
11 | 20 | ||
12 | #define PHONET_FRAME_ID 0x14 | 21 | #define PHONET_FRAME_ID 0x14 |
13 | #define PHONET_BLUE_FRAME_ID0x19 | 22 | #define PHONET_BLUE_FRAME_ID0x19 |
diff --git a/gammu/emb/common/service/backup/backgen.h b/gammu/emb/common/service/backup/backgen.h index 9a930fc..9d97954 100644 --- a/gammu/emb/common/service/backup/backgen.h +++ b/gammu/emb/common/service/backup/backgen.h | |||
@@ -59,15 +59,15 @@ typedef struct { | |||
59 | 59 | ||
60 | #define GSM_BACKUP_MAX_SMS500 | 60 | #define GSM_BACKUP_MAX_SMS500 |
61 | 61 | ||
62 | typedef struct { | 62 | typedef struct { |
63 | GSM_SMSMessage *SMS[GSM_BACKUP_MAX_SMS]; | 63 | GSM_SMSMessage *SMS[GSM_BACKUP_MAX_SMS]; |
64 | } GSM_SMS_Backup; | 64 | } GSM_SMS_Backup; |
65 | 65 | ||
66 | extern GSM_Error GSM_ReadSMSBackupFile(char *FileName, GSM_SMS_Backup *backup); | 66 | extern GSM_Error GSM_ReadSMSBackupFile(char *FileName, GSM_SMS_Backup *backup); |
67 | extern GSM_Error GSM_SaveSMSBackupFile(char *FileName, GSM_SMS_Backup *backup); | 67 | extern GSM_Error GSM_AddSMSBackupFile (char *FileName, GSM_SMS_Backup *backup); |
68 | 68 | ||
69 | #endif | 69 | #endif |
70 | 70 | ||
71 | /* How should editor hadle tabs in this file? Add editor commands here. | 71 | /* How should editor hadle tabs in this file? Add editor commands here. |
72 | * vim: noexpandtab sw=8 ts=8 sts=8: | 72 | * vim: noexpandtab sw=8 ts=8 sts=8: |
73 | */ | 73 | */ |
diff --git a/gammu/emb/common/service/backup/backtext.c b/gammu/emb/common/service/backup/backtext.c index 4cb1bb7..07a3b22 100644 --- a/gammu/emb/common/service/backup/backtext.c +++ b/gammu/emb/common/service/backup/backtext.c | |||
@@ -2991,25 +2991,29 @@ GSM_Error GSM_ReadSMSBackupFile(char *FileName, GSM_SMS_Backup *backup) | |||
2991 | file = fopen(FileName, "rb"); | 2991 | file = fopen(FileName, "rb"); |
2992 | if (file == NULL) return(ERR_CANTOPENFILE); | 2992 | if (file == NULL) return(ERR_CANTOPENFILE); |
2993 | 2993 | ||
2994 | fclose(file); | 2994 | fclose(file); |
2995 | 2995 | ||
2996 | return GSM_ReadSMSBackupTextFile(FileName, backup); | 2996 | return GSM_ReadSMSBackupTextFile(FileName, backup); |
2997 | } | 2997 | } |
2998 | 2998 | ||
2999 | GSM_Error SaveSMSBackupTextFile(FILE *file, GSM_SMS_Backup *backup) | 2999 | static GSM_Error SaveSMSBackupTextFile(FILE *file, GSM_SMS_Backup *backup) |
3000 | { | 3000 | { |
3001 | int i,w,current; | 3001 | int i,w,current; |
3002 | unsigned char buffer[10000]; | 3002 | unsigned char buffer[10000]; |
3003 | GSM_DateTimeDT; | 3003 | GSM_DateTimeDT; |
3004 | 3004 | ||
3005 | fprintf(file,"\n# File created by Gammu (www.mwiacek.com) version %s\n",VERSION); | 3005 | fprintf(file,"\n# File created by Gammu (www.mwiacek.com) version %s\n",VERSION); |
3006 | GSM_GetCurrentDateTime (&DT); | 3006 | GSM_GetCurrentDateTime (&DT); |
3007 | fprintf(file,"# Saved %s\n\n",OSDateTime(DT,false)); | 3007 | fprintf(file,"# Saved "); |
3008 | fprintf(file, "%04d%02d%02dT%02d%02d%02d", | ||
3009 | DT.Year, DT.Month, DT.Day, | ||
3010 | DT.Hour, DT.Minute, DT.Second); | ||
3011 | fprintf(file," (%s)\n\n",OSDateTime(DT,false)); | ||
3008 | 3012 | ||
3009 | i=0; | 3013 | i=0; |
3010 | while (backup->SMS[i]!=NULL) { | 3014 | while (backup->SMS[i]!=NULL) { |
3011 | fprintf(file,"[SMSBackup%03i]\n",i); | 3015 | fprintf(file,"[SMSBackup%03i]\n",i); |
3012 | switch (backup->SMS[i]->Coding) { | 3016 | switch (backup->SMS[i]->Coding) { |
3013 | case SMS_Coding_Unicode: | 3017 | case SMS_Coding_Unicode: |
3014 | case SMS_Coding_Default: | 3018 | case SMS_Coding_Default: |
3015 | sprintf(buffer,"%s",DecodeUnicodeString(backup->SMS[i]->Text)); | 3019 | sprintf(buffer,"%s",DecodeUnicodeString(backup->SMS[i]->Text)); |
@@ -3083,21 +3087,21 @@ GSM_Error SaveSMSBackupTextFile(FILE *file, GSM_SMS_Backup *backup) | |||
3083 | fprintf(file,"ReplaceMessage = %i\n",backup->SMS[i]->ReplaceMessage); | 3087 | fprintf(file,"ReplaceMessage = %i\n",backup->SMS[i]->ReplaceMessage); |
3084 | fprintf(file,"MessageReference = %i\n",backup->SMS[i]->MessageReference); | 3088 | fprintf(file,"MessageReference = %i\n",backup->SMS[i]->MessageReference); |
3085 | fprintf(file,"\n"); | 3089 | fprintf(file,"\n"); |
3086 | i++; | 3090 | i++; |
3087 | } | 3091 | } |
3088 | return ERR_NONE; | 3092 | return ERR_NONE; |
3089 | } | 3093 | } |
3090 | 3094 | ||
3091 | GSM_Error GSM_SaveSMSBackupFile(char *FileName, GSM_SMS_Backup *backup) | 3095 | GSM_Error GSM_AddSMSBackupFile(char *FileName, GSM_SMS_Backup *backup) |
3092 | { | 3096 | { |
3093 | FILE *file; | 3097 | FILE *file; |
3094 | 3098 | ||
3095 | file = fopen(FileName, "wb"); | 3099 | file = fopen(FileName, "ab"); |
3096 | if (file == NULL) return(ERR_CANTOPENFILE); | 3100 | if (file == NULL) return(ERR_CANTOPENFILE); |
3097 | 3101 | ||
3098 | SaveSMSBackupTextFile(file,backup); | 3102 | SaveSMSBackupTextFile(file,backup); |
3099 | 3103 | ||
3100 | fclose(file); | 3104 | fclose(file); |
3101 | 3105 | ||
3102 | return ERR_NONE; | 3106 | return ERR_NONE; |
3103 | } | 3107 | } |
diff --git a/gammu/emb/common/service/gsmring.h b/gammu/emb/common/service/gsmring.h index 2d2dd7a..33e5424 100644 --- a/gammu/emb/common/service/gsmring.h +++ b/gammu/emb/common/service/gsmring.h | |||
@@ -166,17 +166,17 @@ typedef struct { | |||
166 | typedef struct { | 166 | typedef struct { |
167 | int Group;//Nokia specific | 167 | int Group;//Nokia specific |
168 | int ID; | 168 | int ID; |
169 | char Name[30*2]; | 169 | char Name[30*2]; |
170 | } GSM_RingtoneInfo; | 170 | } GSM_RingtoneInfo; |
171 | 171 | ||
172 | typedef struct { | 172 | typedef struct { |
173 | int Number; | 173 | int Number; |
174 | GSM_RingtoneInfo Ringtone[100]; | 174 | GSM_RingtoneInfo *Ringtone; |
175 | } GSM_AllRingtonesInfo; | 175 | } GSM_AllRingtonesInfo; |
176 | 176 | ||
177 | GSM_Error GSM_SaveRingtoneFile(char *FileName, GSM_Ringtone *ringtone); | 177 | GSM_Error GSM_SaveRingtoneFile(char *FileName, GSM_Ringtone *ringtone); |
178 | GSM_Error GSM_ReadRingtoneFile(char *FileName, GSM_Ringtone *ringtone); | 178 | GSM_Error GSM_ReadRingtoneFile(char *FileName, GSM_Ringtone *ringtone); |
179 | 179 | ||
180 | void saveott(FILE *file, GSM_Ringtone *ringtone); | 180 | void saveott(FILE *file, GSM_Ringtone *ringtone); |
181 | void savemid(FILE *file, GSM_Ringtone *ringtone); | 181 | void savemid(FILE *file, GSM_Ringtone *ringtone); |
182 | void saverng(FILE *file, GSM_Ringtone *ringtone); | 182 | void saverng(FILE *file, GSM_Ringtone *ringtone); |
diff --git a/gammu/emb/gammu/gammu.c b/gammu/emb/gammu/gammu.c index 684e67c..4c6486d 100644 --- a/gammu/emb/gammu/gammu.c +++ b/gammu/emb/gammu/gammu.c | |||
@@ -430,17 +430,17 @@ static void SetAlarm(int argc, char *argv[]) | |||
430 | 430 | ||
431 | error=Phone->SetAlarm(&s, &alarm); | 431 | error=Phone->SetAlarm(&s, &alarm); |
432 | Print_Error(error); | 432 | Print_Error(error); |
433 | 433 | ||
434 | GSM_Terminate(); | 434 | GSM_Terminate(); |
435 | } | 435 | } |
436 | 436 | ||
437 | GSM_Bitmap caller[5]; | 437 | GSM_Bitmap caller[5]; |
438 | GSM_AllRingtonesInfo Info; | 438 | GSM_AllRingtonesInfo Info = {0, NULL}; |
439 | bool callerinit[5] = {false, false, false, false, false}; | 439 | bool callerinit[5] = {false, false, false, false, false}; |
440 | bool ringinit = false; | 440 | bool ringinit = false; |
441 | 441 | ||
442 | static void PrintMemoryEntry(GSM_MemoryEntry *entry) | 442 | static void PrintMemoryEntry(GSM_MemoryEntry *entry) |
443 | { | 443 | { |
444 | GSM_Category Category; | 444 | GSM_Category Category; |
445 | bool unknown; | 445 | bool unknown; |
446 | int z; | 446 | int z; |
@@ -559,22 +559,25 @@ static void GetAllMemory(int argc, char *argv[]) | |||
559 | exit (-1); | 559 | exit (-1); |
560 | } | 560 | } |
561 | 561 | ||
562 | GSM_Init(true); | 562 | GSM_Init(true); |
563 | 563 | ||
564 | while (!gshutdown) { | 564 | while (!gshutdown) { |
565 | error = Phone->GetNextMemory(&s, &Entry, start); | 565 | error = Phone->GetNextMemory(&s, &Entry, start); |
566 | if (error == ERR_EMPTY) break; | 566 | if (error == ERR_EMPTY) break; |
567 | if (error != ERR_NONE && Info.Ringtone) free(Info.Ringtone); | ||
567 | Print_Error(error); | 568 | Print_Error(error); |
568 | printmsg("Memory %s, Location %i\n",argv[2],Entry.Location); | 569 | printmsg("Memory %s, Location %i\n",argv[2],Entry.Location); |
569 | PrintMemoryEntry(&Entry); | 570 | PrintMemoryEntry(&Entry); |
570 | start = false; | 571 | start = false; |
571 | } | 572 | } |
572 | 573 | ||
574 | if (Info.Ringtone) free(Info.Ringtone); | ||
575 | |||
573 | GSM_Terminate(); | 576 | GSM_Terminate(); |
574 | } | 577 | } |
575 | 578 | ||
576 | static void GetMemory(int argc, char *argv[]) | 579 | static void GetMemory(int argc, char *argv[]) |
577 | { | 580 | { |
578 | int j, start, stop, emptynum = 0, fillednum = 0; | 581 | int j, start, stop, emptynum = 0, fillednum = 0; |
579 | GSM_MemoryEntry entry; | 582 | GSM_MemoryEntry entry; |
580 | bool empty = true; | 583 | bool empty = true; |
@@ -612,32 +615,37 @@ static void GetMemory(int argc, char *argv[]) | |||
612 | } | 615 | } |
613 | 616 | ||
614 | for (j=start;j<=stop;j++) { | 617 | for (j=start;j<=stop;j++) { |
615 | if (empty) printmsg("Memory %s, Location %i\n",argv[2],j); | 618 | if (empty) printmsg("Memory %s, Location %i\n",argv[2],j); |
616 | 619 | ||
617 | entry.Location=j; | 620 | entry.Location=j; |
618 | 621 | ||
619 | error=Phone->GetMemory(&s, &entry); | 622 | error=Phone->GetMemory(&s, &entry); |
620 | if (error != ERR_EMPTY) Print_Error(error); | 623 | if (error != ERR_EMPTY) { |
624 | if (Info.Ringtone) free(Info.Ringtone); | ||
625 | Print_Error(error); | ||
626 | } | ||
621 | 627 | ||
622 | if (error == ERR_EMPTY) { | 628 | if (error == ERR_EMPTY) { |
623 | emptynum++; | 629 | emptynum++; |
624 | if (empty) { | 630 | if (empty) { |
625 | printmsg("Entry is empty\n"); | 631 | printmsg("Entry is empty\n"); |
626 | printf("\n"); | 632 | printf("\n"); |
627 | } | 633 | } |
628 | } else { | 634 | } else { |
629 | fillednum++; | 635 | fillednum++; |
630 | if (!empty) printmsg("Memory %s, Location %i\n",argv[2],j); | 636 | if (!empty) printmsg("Memory %s, Location %i\n",argv[2],j); |
631 | PrintMemoryEntry(&entry); | 637 | PrintMemoryEntry(&entry); |
632 | } | 638 | } |
633 | } | 639 | } |
634 | 640 | ||
635 | printmsg("%i entries empty, %i entries filled\n",emptynum,fillednum); | 641 | printmsg("%i entries empty, %i entries filled\n",emptynum,fillednum); |
642 | |||
643 | if (Info.Ringtone) free(Info.Ringtone); | ||
636 | 644 | ||
637 | GSM_Terminate(); | 645 | GSM_Terminate(); |
638 | } | 646 | } |
639 | 647 | ||
640 | #define MemoryLocationToString(x) ( \ | 648 | #define MemoryLocationToString(x) ( \ |
641 | x == MEM_ON ? "ON" : \ | 649 | x == MEM_ON ? "ON" : \ |
642 | x == MEM_RC ? "RC" : \ | 650 | x == MEM_RC ? "RC" : \ |
643 | x == MEM_MC ? "MC" : \ | 651 | x == MEM_MC ? "MC" : \ |
@@ -1618,27 +1626,30 @@ static void GetRingtone(int argc, char *argv[]) | |||
1618 | Print_Error(error); | 1626 | Print_Error(error); |
1619 | } | 1627 | } |
1620 | 1628 | ||
1621 | GSM_Terminate(); | 1629 | GSM_Terminate(); |
1622 | } | 1630 | } |
1623 | 1631 | ||
1624 | static void GetRingtonesList(int argc, char *argv[]) | 1632 | static void GetRingtonesList(int argc, char *argv[]) |
1625 | { | 1633 | { |
1626 | GSM_AllRingtonesInfo Info; | 1634 | GSM_AllRingtonesInfo Info = {0, NULL}; |
1627 | int i; | 1635 | int i; |
1628 | 1636 | ||
1629 | GSM_Init(true); | 1637 | GSM_Init(true); |
1630 | 1638 | ||
1631 | error=Phone->GetRingtonesInfo(&s,&Info); | 1639 | error=Phone->GetRingtonesInfo(&s,&Info); |
1640 | if (error != ERR_NONE && Info.Ringtone) free(Info.Ringtone); | ||
1632 | Print_Error(error); | 1641 | Print_Error(error); |
1633 | 1642 | ||
1634 | GSM_Terminate(); | 1643 | GSM_Terminate(); |
1635 | 1644 | ||
1636 | for (i=0;i<Info.Number;i++) printmsg("%i. \"%s\"\n",i,DecodeUnicodeConsole(Info.Ringtone[i].Name)); | 1645 | for (i=0;i<Info.Number;i++) printmsg("%i. \"%s\"\n",i,DecodeUnicodeConsole(Info.Ringtone[i].Name)); |
1646 | |||
1647 | if (Info.Ringtone) free(Info.Ringtone); | ||
1637 | } | 1648 | } |
1638 | 1649 | ||
1639 | static void DialVoice(int argc, char *argv[]) | 1650 | static void DialVoice(int argc, char *argv[]) |
1640 | { | 1651 | { |
1641 | GSM_CallShowNumber ShowNumber = GSM_CALL_DefaultNumberPresence; | 1652 | GSM_CallShowNumber ShowNumber = GSM_CALL_DefaultNumberPresence; |
1642 | 1653 | ||
1643 | if (argc > 3) { | 1654 | if (argc > 3) { |
1644 | if (mystrncasecmp(argv[3],"show",0)) { ShowNumber = GSM_CALL_ShowNumber; | 1655 | if (mystrncasecmp(argv[3],"show",0)) { ShowNumber = GSM_CALL_ShowNumber; |
@@ -2172,17 +2183,17 @@ static void GetGPRSPoint(int argc, char *argv[]) | |||
2172 | GSM_Terminate(); | 2183 | GSM_Terminate(); |
2173 | } | 2184 | } |
2174 | 2185 | ||
2175 | static void GetBitmap(int argc, char *argv[]) | 2186 | static void GetBitmap(int argc, char *argv[]) |
2176 | { | 2187 | { |
2177 | GSM_File File; | 2188 | GSM_File File; |
2178 | GSM_MultiBitmap MultiBitmap; | 2189 | GSM_MultiBitmap MultiBitmap; |
2179 | int location=0; | 2190 | int location=0; |
2180 | GSM_AllRingtonesInfo Info; | 2191 | GSM_AllRingtonesInfo Info = {0, NULL}; |
2181 | 2192 | ||
2182 | if (mystrncasecmp(argv[2],"STARTUP",0)) { | 2193 | if (mystrncasecmp(argv[2],"STARTUP",0)) { |
2183 | MultiBitmap.Bitmap[0].Type=GSM_StartupLogo; | 2194 | MultiBitmap.Bitmap[0].Type=GSM_StartupLogo; |
2184 | } else if (mystrncasecmp(argv[2],"CALLER",0)) { | 2195 | } else if (mystrncasecmp(argv[2],"CALLER",0)) { |
2185 | MultiBitmap.Bitmap[0].Type=GSM_CallerGroupLogo; | 2196 | MultiBitmap.Bitmap[0].Type=GSM_CallerGroupLogo; |
2186 | GetStartStop(&location, NULL, 3, argc, argv); | 2197 | GetStartStop(&location, NULL, 3, argc, argv); |
2187 | if (location>5) { | 2198 | if (location>5) { |
2188 | printmsg("Maximal location for caller logo can be 5\n"); | 2199 | printmsg("Maximal location for caller logo can be 5\n"); |
@@ -2243,16 +2254,18 @@ static void GetBitmap(int argc, char *argv[]) | |||
2243 | printmsg("Ringtone : "); | 2254 | printmsg("Ringtone : "); |
2244 | if (UnicodeLength(GSM_GetRingtoneName(&Info,MultiBitmap.Bitmap[0].RingtoneID))!=0) { | 2255 | if (UnicodeLength(GSM_GetRingtoneName(&Info,MultiBitmap.Bitmap[0].RingtoneID))!=0) { |
2245 | printmsg("\"%s\" (ID %i)\n", | 2256 | printmsg("\"%s\" (ID %i)\n", |
2246 | DecodeUnicodeConsole(GSM_GetRingtoneName(&Info,MultiBitmap.Bitmap[0].RingtoneID)), | 2257 | DecodeUnicodeConsole(GSM_GetRingtoneName(&Info,MultiBitmap.Bitmap[0].RingtoneID)), |
2247 | MultiBitmap.Bitmap[0].RingtoneID); | 2258 | MultiBitmap.Bitmap[0].RingtoneID); |
2248 | } else { | 2259 | } else { |
2249 | printmsg("ID %i\n",MultiBitmap.Bitmap[0].RingtoneID); | 2260 | printmsg("ID %i\n",MultiBitmap.Bitmap[0].RingtoneID); |
2250 | } | 2261 | } |
2262 | |||
2263 | if (Info.Ringtone) free(Info.Ringtone); | ||
2251 | } | 2264 | } |
2252 | if (MultiBitmap.Bitmap[0].BitmapEnabled) { | 2265 | if (MultiBitmap.Bitmap[0].BitmapEnabled) { |
2253 | printmsg("Bitmap : enabled\n"); | 2266 | printmsg("Bitmap : enabled\n"); |
2254 | } else { | 2267 | } else { |
2255 | printmsg("Bitmap : disabled\n"); | 2268 | printmsg("Bitmap : disabled\n"); |
2256 | } | 2269 | } |
2257 | if (argc>4 && !MultiBitmap.Bitmap[0].DefaultBitmap) error=GSM_SaveBitmapFile(argv[4],&MultiBitmap); | 2270 | if (argc>4 && !MultiBitmap.Bitmap[0].DefaultBitmap) error=GSM_SaveBitmapFile(argv[4],&MultiBitmap); |
2258 | break; | 2271 | break; |
@@ -4640,16 +4653,17 @@ static void Restore(int argc, char *argv[]) | |||
4640 | GSM_DateTime date_time; | 4653 | GSM_DateTime date_time; |
4641 | GSM_CalendarEntryCalendar; | 4654 | GSM_CalendarEntryCalendar; |
4642 | GSM_Bitmap Bitmap; | 4655 | GSM_Bitmap Bitmap; |
4643 | GSM_Ringtone Ringtone; | 4656 | GSM_Ringtone Ringtone; |
4644 | GSM_MemoryEntry Pbk; | 4657 | GSM_MemoryEntry Pbk; |
4645 | GSM_MemoryStatusMemStatus; | 4658 | GSM_MemoryStatusMemStatus; |
4646 | GSM_ToDoEntry ToDo; | 4659 | GSM_ToDoEntry ToDo; |
4647 | GSM_ToDoStatus ToDoStatus; | 4660 | GSM_ToDoStatus ToDoStatus; |
4661 | GSM_NoteEntry Note; | ||
4648 | GSM_Profile Profile; | 4662 | GSM_Profile Profile; |
4649 | GSM_MultiWAPSettingsSettings; | 4663 | GSM_MultiWAPSettingsSettings; |
4650 | GSM_GPRSAccessPointGPRSPoint; | 4664 | GSM_GPRSAccessPointGPRSPoint; |
4651 | GSM_WAPBookmark Bookmark; | 4665 | GSM_WAPBookmark Bookmark; |
4652 | int i, used, max = 0; | 4666 | int i, used, max = 0; |
4653 | bool Past = true; | 4667 | bool Past = true; |
4654 | bool Found, DoRestore; | 4668 | bool Found, DoRestore; |
4655 | 4669 | ||
@@ -4909,16 +4923,52 @@ static void Restore(int argc, char *argv[]) | |||
4909 | if (gshutdown) { | 4923 | if (gshutdown) { |
4910 | GSM_Terminate(); | 4924 | GSM_Terminate(); |
4911 | exit(0); | 4925 | exit(0); |
4912 | } | 4926 | } |
4913 | } | 4927 | } |
4914 | printmsgerr("\n"); | 4928 | printmsgerr("\n"); |
4915 | } | 4929 | } |
4916 | 4930 | ||
4931 | DoRestore = false; | ||
4932 | if (Backup.ToDo[0] != NULL) { | ||
4933 | error = Phone->GetNotesStatus(&s,&ToDoStatus); | ||
4934 | if (error == ERR_NONE) { | ||
4935 | max = 0; | ||
4936 | while (Backup.Note[max]!=NULL) max++; | ||
4937 | printmsgerr("%i entries in backup file\n",max); | ||
4938 | |||
4939 | if (answer_yes("Restore Notes")) DoRestore = true; | ||
4940 | } | ||
4941 | } | ||
4942 | if (DoRestore) { | ||
4943 | printmsgerr("Deleting old Notes: "); | ||
4944 | while (1) { | ||
4945 | error = Phone->GetNextNote(&s,&Note,true); | ||
4946 | if (error != ERR_NONE) break; | ||
4947 | error = Phone->DeleteNote(&s,&Note); | ||
4948 | Print_Error(error); | ||
4949 | printmsgerr("*"); | ||
4950 | } | ||
4951 | printmsgerr("\n"); | ||
4952 | |||
4953 | for (i=0;i<max;i++) { | ||
4954 | Note = *Backup.Note[i]; | ||
4955 | Note.Location = 0; | ||
4956 | error=Phone->AddNote(&s,&Note); | ||
4957 | Print_Error(error); | ||
4958 | printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); | ||
4959 | if (gshutdown) { | ||
4960 | GSM_Terminate(); | ||
4961 | exit(0); | ||
4962 | } | ||
4963 | } | ||
4964 | printmsgerr("\n"); | ||
4965 | } | ||
4966 | |||
4917 | if (Backup.SMSC[0] != NULL && answer_yes("Restore SMSC profiles")) { | 4967 | if (Backup.SMSC[0] != NULL && answer_yes("Restore SMSC profiles")) { |
4918 | max = 0; | 4968 | max = 0; |
4919 | while (Backup.SMSC[max]!=NULL) max++; | 4969 | while (Backup.SMSC[max]!=NULL) max++; |
4920 | for (i=0;i<max;i++) { | 4970 | for (i=0;i<max;i++) { |
4921 | error=Phone->SetSMSC(&s,Backup.SMSC[i]); | 4971 | error=Phone->SetSMSC(&s,Backup.SMSC[i]); |
4922 | Print_Error(error); | 4972 | Print_Error(error); |
4923 | printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); | 4973 | printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); |
4924 | if (gshutdown) { | 4974 | if (gshutdown) { |
@@ -5282,16 +5332,17 @@ static void AddNew(int argc, char *argv[]) | |||
5282 | #endif | 5332 | #endif |
5283 | 5333 | ||
5284 | static void ClearAll(int argc, char *argv[]) | 5334 | static void ClearAll(int argc, char *argv[]) |
5285 | { | 5335 | { |
5286 | GSM_MemoryStatusMemStatus; | 5336 | GSM_MemoryStatusMemStatus; |
5287 | GSM_ToDoStatus ToDoStatus; | 5337 | GSM_ToDoStatus ToDoStatus; |
5288 | GSM_CalendarEntryCalendar; | 5338 | GSM_CalendarEntryCalendar; |
5289 | GSM_ToDoEntry ToDo; | 5339 | GSM_ToDoEntry ToDo; |
5340 | GSM_NoteEntry Note; | ||
5290 | GSM_WAPBookmark Bookmark; | 5341 | GSM_WAPBookmark Bookmark; |
5291 | GSM_FMStation Station; | 5342 | GSM_FMStation Station; |
5292 | GSM_MemoryEntry Pbk; | 5343 | GSM_MemoryEntry Pbk; |
5293 | bool DoClear; | 5344 | bool DoClear; |
5294 | 5345 | ||
5295 | GSM_Init(true); | 5346 | GSM_Init(true); |
5296 | 5347 | ||
5297 | DoClear = false; | 5348 | DoClear = false; |
@@ -5391,16 +5442,33 @@ static void ClearAll(int argc, char *argv[]) | |||
5391 | } | 5442 | } |
5392 | printmsgerr("\n"); | 5443 | printmsgerr("\n"); |
5393 | } else { | 5444 | } else { |
5394 | printmsgerr("Done\n"); | 5445 | printmsgerr("Done\n"); |
5395 | Print_Error(error); | 5446 | Print_Error(error); |
5396 | } | 5447 | } |
5397 | } | 5448 | } |
5398 | 5449 | ||
5450 | DoClear = false; | ||
5451 | error = Phone->GetNotesStatus(&s,&ToDoStatus); | ||
5452 | if (error == ERR_NONE && ToDoStatus.Used != 0) { | ||
5453 | if (answer_yes("Delete Notes")) DoClear = true; | ||
5454 | } | ||
5455 | if (DoClear) { | ||
5456 | printmsgerr("Deleting: "); | ||
5457 | while (1) { | ||
5458 | error = Phone->GetNextNote(&s,&Note,true); | ||
5459 | if (error != ERR_NONE) break; | ||
5460 | error = Phone->DeleteNote(&s,&Note); | ||
5461 | Print_Error(error); | ||
5462 | printmsgerr("*"); | ||
5463 | } | ||
5464 | printmsgerr("\n"); | ||
5465 | } | ||
5466 | |||
5399 | Bookmark.Location = 1; | 5467 | Bookmark.Location = 1; |
5400 | error = Phone->GetWAPBookmark(&s,&Bookmark); | 5468 | error = Phone->GetWAPBookmark(&s,&Bookmark); |
5401 | if (error == ERR_NONE || error == ERR_INVALIDLOCATION) { | 5469 | if (error == ERR_NONE || error == ERR_INVALIDLOCATION) { |
5402 | if (answer_yes("Delete WAP bookmarks")) { | 5470 | if (answer_yes("Delete WAP bookmarks")) { |
5403 | printmsgerr("Deleting: "); | 5471 | printmsgerr("Deleting: "); |
5404 | /* One thing to explain: DCT4 phones seems to have bug here. | 5472 | /* One thing to explain: DCT4 phones seems to have bug here. |
5405 | * When delete for example first bookmark, phone change | 5473 | * When delete for example first bookmark, phone change |
5406 | * numeration for getting frame, not for deleting. So, we try to | 5474 | * numeration for getting frame, not for deleting. So, we try to |
@@ -5637,38 +5705,32 @@ static void GetWAPMMSSettings(int argc, char *argv[]) | |||
5637 | 5705 | ||
5638 | #ifdef GSM_ENABLE_BACKUP | 5706 | #ifdef GSM_ENABLE_BACKUP |
5639 | static void BackupSMS(int argc, char *argv[]) | 5707 | static void BackupSMS(int argc, char *argv[]) |
5640 | { | 5708 | { |
5641 | GSM_SMS_Backup Backup; | 5709 | GSM_SMS_Backup Backup; |
5642 | GSM_MultiSMSMessage sms; | 5710 | GSM_MultiSMSMessage sms; |
5643 | GSM_SMSFolders folders; | 5711 | GSM_SMSFolders folders; |
5644 | bool BackupFromFolder[GSM_MAX_SMS_FOLDERS]; | 5712 | bool BackupFromFolder[GSM_MAX_SMS_FOLDERS]; |
5645 | bool start = true; | 5713 | bool start = true; |
5646 | bool DeleteAfter; | 5714 | bool DeleteAfter; |
5647 | int j, smsnum; | 5715 | int j, smsnum = 0; |
5648 | char buffer[200]; | 5716 | char buffer[200]; |
5649 | 5717 | ||
5650 | /* We ignore return code, because (when file doesn't exist) we | ||
5651 | * will create new later | ||
5652 | */ | ||
5653 | GSM_ReadSMSBackupFile(argv[2], &Backup); | ||
5654 | smsnum = 0; | ||
5655 | while (Backup.SMS[smsnum]!=NULL) smsnum++; | ||
5656 | |||
5657 | GSM_Init(true); | 5718 | GSM_Init(true); |
5658 | 5719 | ||
5659 | error=Phone->GetSMSFolders(&s, &folders); | 5720 | error=Phone->GetSMSFolders(&s, &folders); |
5660 | Print_Error(error); | 5721 | Print_Error(error); |
5661 | 5722 | ||
5662 | DeleteAfter=answer_yes("Delete each sms after backup"); | 5723 | DeleteAfter=answer_yes("Delete each sms after backup"); |
5663 | 5724 | ||
5664 | for (j=0;j<folders.Number;j++) { | 5725 | for (j=0;j<folders.Number;j++) { |
5665 | BackupFromFolder[j] = false; | 5726 | BackupFromFolder[j] = false; |
5666 | sprintf(buffer,"Backup sms from folder \"%s\"",DecodeUnicodeConsole(folders.Folder[j].Name)); | 5727 | sprintf(buffer,"Backup sms from folder \"%s\"",DecodeUnicodeConsole(folders.Folder[j].Name)); |
5728 | if (folders.Folder[j].Memory == MEM_SM) strcat(buffer," (SIM)"); | ||
5667 | if (answer_yes(buffer)) BackupFromFolder[j] = true; | 5729 | if (answer_yes(buffer)) BackupFromFolder[j] = true; |
5668 | } | 5730 | } |
5669 | 5731 | ||
5670 | while (error == ERR_NONE) { | 5732 | while (error == ERR_NONE) { |
5671 | sms.SMS[0].Folder=0x00; | 5733 | sms.SMS[0].Folder=0x00; |
5672 | error=Phone->GetNextSMS(&s, &sms, start); | 5734 | error=Phone->GetNextSMS(&s, &sms, start); |
5673 | switch (error) { | 5735 | switch (error) { |
5674 | case ERR_EMPTY: | 5736 | case ERR_EMPTY: |
@@ -5697,17 +5759,17 @@ static void BackupSMS(int argc, char *argv[]) | |||
5697 | break; | 5759 | break; |
5698 | } | 5760 | } |
5699 | } | 5761 | } |
5700 | } | 5762 | } |
5701 | } | 5763 | } |
5702 | start=false; | 5764 | start=false; |
5703 | } | 5765 | } |
5704 | 5766 | ||
5705 | error = GSM_SaveSMSBackupFile(argv[2],&Backup); | 5767 | error = GSM_AddSMSBackupFile(argv[2],&Backup); |
5706 | Print_Error(error); | 5768 | Print_Error(error); |
5707 | 5769 | ||
5708 | if (DeleteAfter) { | 5770 | if (DeleteAfter) { |
5709 | for (j=0;j<smsnum;j++) { | 5771 | for (j=0;j<smsnum;j++) { |
5710 | Backup.SMS[j]->Folder = 0; | 5772 | Backup.SMS[j]->Folder = 0; |
5711 | error=Phone->DeleteSMS(&s, Backup.SMS[j]); | 5773 | error=Phone->DeleteSMS(&s, Backup.SMS[j]); |
5712 | Print_Error(error); | 5774 | Print_Error(error); |
5713 | printmsgerr("%cDeleting: %i percent",13,(j+1)*100/smsnum); | 5775 | printmsgerr("%cDeleting: %i percent",13,(j+1)*100/smsnum); |
@@ -5749,33 +5811,43 @@ static void AddSMS(int argc, char *argv[]) | |||
5749 | 5811 | ||
5750 | static void RestoreSMS(int argc, char *argv[]) | 5812 | static void RestoreSMS(int argc, char *argv[]) |
5751 | { | 5813 | { |
5752 | GSM_MultiSMSMessage SMS; | 5814 | GSM_MultiSMSMessage SMS; |
5753 | GSM_SMS_Backup Backup; | 5815 | GSM_SMS_Backup Backup; |
5754 | GSM_SMSFolders folders; | 5816 | GSM_SMSFolders folders; |
5755 | int smsnum = 0; | 5817 | int smsnum = 0; |
5756 | char buffer[200]; | 5818 | char buffer[200]; |
5819 | bool restore8bit,doit; | ||
5757 | 5820 | ||
5758 | error=GSM_ReadSMSBackupFile(argv[2], &Backup); | 5821 | error=GSM_ReadSMSBackupFile(argv[2], &Backup); |
5759 | Print_Error(error); | 5822 | Print_Error(error); |
5760 | 5823 | ||
5824 | sprintf(buffer,"Do you want to restore binary SMS"); | ||
5825 | restore8bit = answer_yes(buffer); | ||
5826 | |||
5761 | GSM_Init(true); | 5827 | GSM_Init(true); |
5762 | 5828 | ||
5763 | error=Phone->GetSMSFolders(&s, &folders); | 5829 | error=Phone->GetSMSFolders(&s, &folders); |
5764 | Print_Error(error); | 5830 | Print_Error(error); |
5765 | 5831 | ||
5766 | while (Backup.SMS[smsnum] != NULL) { | 5832 | while (Backup.SMS[smsnum] != NULL) { |
5767 | SMS.Number = 1; | 5833 | doit = true; |
5768 | memcpy(&SMS.SMS[0],Backup.SMS[smsnum],sizeof(GSM_SMSMessage)); | 5834 | if (!restore8bit && Backup.SMS[smsnum]->Coding == SMS_Coding_8bit) doit = false; |
5769 | displaymultismsinfo(SMS,false,false); | 5835 | if (doit) { |
5770 | sprintf(buffer,"Restore sms to folder \"%s\"",DecodeUnicodeConsole(folders.Folder[Backup.SMS[smsnum]->Folder-1].Name)); | 5836 | SMS.Number = 1; |
5771 | if (answer_yes(buffer)) { | 5837 | memcpy(&SMS.SMS[0],Backup.SMS[smsnum],sizeof(GSM_SMSMessage)); |
5772 | error=Phone->AddSMS(&s, Backup.SMS[smsnum]); | 5838 | displaymultismsinfo(SMS,false,false); |
5773 | Print_Error(error); | 5839 | sprintf(buffer,"Restore %03i sms to folder \"%s\"",smsnum+1,DecodeUnicodeConsole(folders.Folder[Backup.SMS[smsnum]->Folder-1].Name)); |
5840 | if (folders.Folder[Backup.SMS[smsnum]->Folder-1].Memory == MEM_SM) strcat(buffer," (SIM)"); | ||
5841 | if (answer_yes(buffer)) { | ||
5842 | smprintf(&s,"saving %i SMS\n",smsnum); | ||
5843 | error=Phone->AddSMS(&s, Backup.SMS[smsnum]); | ||
5844 | Print_Error(error); | ||
5845 | } | ||
5774 | } | 5846 | } |
5775 | smsnum++; | 5847 | smsnum++; |
5776 | } | 5848 | } |
5777 | 5849 | ||
5778 | GSM_Terminate(); | 5850 | GSM_Terminate(); |
5779 | } | 5851 | } |
5780 | #endif | 5852 | #endif |
5781 | 5853 | ||
@@ -6355,30 +6427,31 @@ static void EnterSecurityCode(int argc, char *argv[]) | |||
6355 | } | 6427 | } |
6356 | 6428 | ||
6357 | static void GetProfile(int argc, char *argv[]) | 6429 | static void GetProfile(int argc, char *argv[]) |
6358 | { | 6430 | { |
6359 | GSM_Profile Profile; | 6431 | GSM_Profile Profile; |
6360 | int start,stop,j,k; | 6432 | int start,stop,j,k; |
6361 | GSM_Bitmap caller[5]; | 6433 | GSM_Bitmap caller[5]; |
6362 | bool callerinit[5],special; | 6434 | bool callerinit[5],special; |
6363 | GSM_AllRingtonesInfo Info; | 6435 | GSM_AllRingtonesInfo Info = {0, NULL}; |
6364 | 6436 | ||
6365 | GetStartStop(&start, &stop, 2, argc, argv); | 6437 | GetStartStop(&start, &stop, 2, argc, argv); |
6366 | 6438 | ||
6367 | for (i=0;i<5;i++) callerinit[i] = false; | 6439 | for (i=0;i<5;i++) callerinit[i] = false; |
6368 | 6440 | ||
6369 | GSM_Init(true); | 6441 | GSM_Init(true); |
6370 | 6442 | ||
6371 | error=Phone->GetRingtonesInfo(&s,&Info); | 6443 | error=Phone->GetRingtonesInfo(&s,&Info); |
6372 | if (error != ERR_NONE) Info.Number = 0; | 6444 | if (error != ERR_NONE) Info.Number = 0; |
6373 | 6445 | ||
6374 | for (i=start;i<=stop;i++) { | 6446 | for (i=start;i<=stop;i++) { |
6375 | Profile.Location=i; | 6447 | Profile.Location=i; |
6376 | error=Phone->GetProfile(&s,&Profile); | 6448 | error=Phone->GetProfile(&s,&Profile); |
6449 | if (error != ERR_NONE && Info.Ringtone) free(Info.Ringtone); | ||
6377 | Print_Error(error); | 6450 | Print_Error(error); |
6378 | 6451 | ||
6379 | printmsg("%i. \"%s\"",i,DecodeUnicodeConsole(Profile.Name)); | 6452 | printmsg("%i. \"%s\"",i,DecodeUnicodeConsole(Profile.Name)); |
6380 | if (Profile.Active) printmsg(" (active)"); | 6453 | if (Profile.Active) printmsg(" (active)"); |
6381 | if (Profile.DefaultName) printmsg(" (default name)"); | 6454 | if (Profile.DefaultName) printmsg(" (default name)"); |
6382 | if (Profile.HeadSetProfile) printmsg(" (HeadSet profile)"); | 6455 | if (Profile.HeadSetProfile) printmsg(" (HeadSet profile)"); |
6383 | if (Profile.CarKitProfile) printmsg(" (CarKit profile)"); | 6456 | if (Profile.CarKitProfile) printmsg(" (CarKit profile)"); |
6384 | printf("\n"); | 6457 | printf("\n"); |
@@ -6482,16 +6555,18 @@ static void GetProfile(int argc, char *argv[]) | |||
6482 | default : printmsg("UNKNOWN\n"); | 6555 | default : printmsg("UNKNOWN\n"); |
6483 | } | 6556 | } |
6484 | } | 6557 | } |
6485 | } | 6558 | } |
6486 | printf("\n"); | 6559 | printf("\n"); |
6487 | } | 6560 | } |
6488 | 6561 | ||
6489 | GSM_Terminate(); | 6562 | GSM_Terminate(); |
6563 | |||
6564 | if (Info.Ringtone) free(Info.Ringtone); | ||
6490 | } | 6565 | } |
6491 | 6566 | ||
6492 | static void GetSpeedDial(int argc, char *argv[]) | 6567 | static void GetSpeedDial(int argc, char *argv[]) |
6493 | { | 6568 | { |
6494 | GSM_SpeedDial SpeedDial; | 6569 | GSM_SpeedDial SpeedDial; |
6495 | GSM_MemoryEntry Phonebook; | 6570 | GSM_MemoryEntry Phonebook; |
6496 | int start,stop,Name,Number,Group; | 6571 | int start,stop,Name,Number,Group; |
6497 | 6572 | ||
@@ -7974,17 +8049,17 @@ static GSM_Parameters Parameters[] = { | |||
7974 | {"--getfiles", 1,40, GetFiles, {H_Filesystem,0}, "ID1, ID2, ..."}, | 8049 | {"--getfiles", 1,40, GetFiles, {H_Filesystem,0}, "ID1, ID2, ..."}, |
7975 | {"--getfilefolder", 1,40, GetFileFolder, {H_Filesystem,0}, "ID1, ID2, ..."}, | 8050 | {"--getfilefolder", 1,40, GetFileFolder, {H_Filesystem,0}, "ID1, ID2, ..."}, |
7976 | {"--addfile", 2, 6, AddFile, {H_Filesystem,0}, "folderID name [-type JAR|BMP|PNG|GIF|JPG|MIDI|WBMP|AMR|3GP|NRT][-readonly][-protected][-system][-hidden][-newtime]"}, | 8051 | {"--addfile", 2, 6, AddFile, {H_Filesystem,0}, "folderID name [-type JAR|BMP|PNG|GIF|JPG|MIDI|WBMP|AMR|3GP|NRT][-readonly][-protected][-system][-hidden][-newtime]"}, |
7977 | {"--nokiaaddfile", 2, 5, NokiaAddFile, {H_Filesystem,H_Nokia,0},"MMSUnreadInbox|MMSReadInbox|MMSOutbox|MMSDrafts|MMSSent file sender title"}, | 8052 | {"--nokiaaddfile", 2, 5, NokiaAddFile, {H_Filesystem,H_Nokia,0},"MMSUnreadInbox|MMSReadInbox|MMSOutbox|MMSDrafts|MMSSent file sender title"}, |
7978 | {"--nokiaaddfile", 2, 5, NokiaAddFile, {H_Filesystem,H_Nokia,0},"Application|Game file [-readonly]"}, | 8053 | {"--nokiaaddfile", 2, 5, NokiaAddFile, {H_Filesystem,H_Nokia,0},"Application|Game file [-readonly]"}, |
7979 | {"--nokiaaddfile", 2, 5, NokiaAddFile, {H_Filesystem,H_Nokia,0},"Gallery|Tones file [-name name][-protected][-readonly][-system][-hidden][-newtime]"}, | 8054 | {"--nokiaaddfile", 2, 5, NokiaAddFile, {H_Filesystem,H_Nokia,0},"Gallery|Tones file [-name name][-protected][-readonly][-system][-hidden][-newtime]"}, |
7980 | {"--deletefiles", 1,20, DeleteFiles, {H_Filesystem,0}, "fileID"}, | 8055 | {"--deletefiles", 1,20, DeleteFiles, {H_Filesystem,0}, "fileID"}, |
7981 | {"--playringtone", 1, 1, PlayRingtone, {H_Ringtone,0}, "file"}, | 8056 | {"--playringtone", 1, 1, PlayRingtone, {H_Ringtone,0}, "file"}, |
7982 | {"--playsavedringtone", 1, 1, DCT4PlaySavedRingtone, {H_Ringtone,0}, ""}, | 8057 | {"--playsavedringtone", 1, 1, DCT4PlaySavedRingtone, {H_Ringtone,0}, "number"}, |
7983 | {"--getdatetime", 0, 0, GetDateTime, {H_DateTime,0}, ""}, | 8058 | {"--getdatetime", 0, 0, GetDateTime, {H_DateTime,0}, ""}, |
7984 | {"--setdatetime", 0, 0, SetDateTime, {H_DateTime,0}, ""}, | 8059 | {"--setdatetime", 0, 0, SetDateTime, {H_DateTime,0}, ""}, |
7985 | {"--getalarm", 0, 0, GetAlarm, {H_DateTime,0}, ""}, | 8060 | {"--getalarm", 0, 0, GetAlarm, {H_DateTime,0}, ""}, |
7986 | {"--setalarm", 2, 2, SetAlarm, {H_DateTime,0}, "hour minute"}, | 8061 | {"--setalarm", 2, 2, SetAlarm, {H_DateTime,0}, "hour minute"}, |
7987 | {"--resetphonesettings", 1, 1, ResetPhoneSettings, {H_Settings,0}, "PHONE|DEV|UIF|ALL|FACTORY"}, | 8062 | {"--resetphonesettings", 1, 1, ResetPhoneSettings, {H_Settings,0}, "PHONE|DEV|UIF|ALL|FACTORY"}, |
7988 | {"--getmemory", 2, 4, GetMemory, {H_Memory,0}, "DC|MC|RC|ON|VM|SM|ME|FD start [stop [-nonempty]]"}, | 8063 | {"--getmemory", 2, 4, GetMemory, {H_Memory,0}, "DC|MC|RC|ON|VM|SM|ME|FD start [stop [-nonempty]]"}, |
7989 | {"--getallmemory", 1, 2, GetAllMemory, {H_Memory,0}, "DC|MC|RC|ON|VM|SM|ME|FD"}, | 8064 | {"--getallmemory", 1, 2, GetAllMemory, {H_Memory,0}, "DC|MC|RC|ON|VM|SM|ME|FD"}, |
7990 | {"--searchmemory", 1, 1, SearchMemory, {H_Memory,0}, "text"}, | 8065 | {"--searchmemory", 1, 1, SearchMemory, {H_Memory,0}, "text"}, |
diff --git a/gammu/emb/gammu/smsd/s_files.c b/gammu/emb/gammu/smsd/s_files.c index b791e58..e1c626f 100644 --- a/gammu/emb/gammu/smsd/s_files.c +++ b/gammu/emb/gammu/smsd/s_files.c | |||
@@ -61,17 +61,17 @@ static GSM_Error SMSDFiles_SaveInboxSMS(GSM_MultiSMSMessage sms, GSM_SMSDConfig | |||
61 | if ((sms.SMS[i].PDU == SMS_Status_Report) && mystrncasecmp(Config->deliveryreport, "log", 3)) { | 61 | if ((sms.SMS[i].PDU == SMS_Status_Report) && mystrncasecmp(Config->deliveryreport, "log", 3)) { |
62 | strcpy(buffer, DecodeUnicodeString(sms.SMS[i].Number)); | 62 | strcpy(buffer, DecodeUnicodeString(sms.SMS[i].Number)); |
63 | WriteSMSDLog("Delivery report: %s to %s", DecodeUnicodeString(sms.SMS[i].Text), buffer); | 63 | WriteSMSDLog("Delivery report: %s to %s", DecodeUnicodeString(sms.SMS[i].Text), buffer); |
64 | } else { | 64 | } else { |
65 | #ifdef GSM_ENABLE_BACKUP | 65 | #ifdef GSM_ENABLE_BACKUP |
66 | if (mystrncasecmp(Config->inboxformat, "detail", 0)) { | 66 | if (mystrncasecmp(Config->inboxformat, "detail", 0)) { |
67 | for (j=0;j<sms.Number;j++) backup.SMS[j] = &sms.SMS[j]; | 67 | for (j=0;j<sms.Number;j++) backup.SMS[j] = &sms.SMS[j]; |
68 | backup.SMS[sms.Number] = NULL; | 68 | backup.SMS[sms.Number] = NULL; |
69 | error = GSM_SaveSMSBackupFile(FullName, &backup); | 69 | error = GSM_AddSMSBackupFile(FullName, &backup); |
70 | done = true; | 70 | done = true; |
71 | } | 71 | } |
72 | #endif | 72 | #endif |
73 | if (!mystrncasecmp(Config->inboxformat, "detail", 0)) { | 73 | if (!mystrncasecmp(Config->inboxformat, "detail", 0)) { |
74 | file = fopen(FullName, "wb"); | 74 | file = fopen(FullName, "wb"); |
75 | if (file) { | 75 | if (file) { |
76 | switch (sms.SMS[i].Coding) { | 76 | switch (sms.SMS[i].Coding) { |
77 | case SMS_Coding_Unicode: | 77 | case SMS_Coding_Unicode: |
diff --git a/gammu/emb/gammu/smsd/smsdcore.c b/gammu/emb/gammu/smsd/smsdcore.c index cc9accc..e69a6e7 100644 --- a/gammu/emb/gammu/smsd/smsdcore.c +++ b/gammu/emb/gammu/smsd/smsdcore.c | |||
@@ -105,21 +105,21 @@ void SMSD_ReadConfig(char *filename, GSM_SMSDConfig *Config, bool log, char *ser | |||
105 | if (Config->IncludeNumbers) { | 105 | if (Config->IncludeNumbers) { |
106 | GSM_ReadConfig(smsdcfgfile, &smsdcfg, 0); | 106 | GSM_ReadConfig(smsdcfgfile, &smsdcfg, 0); |
107 | memcpy(&s.Config,&smsdcfg,sizeof(GSM_Config)); | 107 | memcpy(&s.Config,&smsdcfg,sizeof(GSM_Config)); |
108 | error=GSM_SetDebugFile(s.Config[0].DebugFile, &di); | 108 | error=GSM_SetDebugFile(s.Config[0].DebugFile, &di); |
109 | } | 109 | } |
110 | 110 | ||
111 | Config->PINCode=INI_GetValue(smsdcfgfile, "smsd", "PIN", false); | 111 | Config->PINCode=INI_GetValue(smsdcfgfile, "smsd", "PIN", false); |
112 | if (Config->PINCode == NULL) { | 112 | if (Config->PINCode == NULL) { |
113 | if (log) WriteSMSDLog("No PIN code in %s file",filename); | 113 | if (log) WriteSMSDLog("Warning: No PIN code in %s file",filename); |
114 | fprintf(stderr,"No PIN code in %s file\n",filename); | 114 | fprintf(stderr,"Warning: No PIN code in %s file\n",filename); |
115 | exit(-1); | 115 | } else { |
116 | if (log) WriteSMSDLog("PIN code is \"%s\"",Config->PINCode); | ||
116 | } | 117 | } |
117 | if (log) WriteSMSDLog("PIN code is \"%s\"",Config->PINCode); | ||
118 | 118 | ||
119 | str = INI_GetValue(smsdcfgfile, "smsd", "commtimeout", false); | 119 | str = INI_GetValue(smsdcfgfile, "smsd", "commtimeout", false); |
120 | if (str) Config->commtimeout=atoi(str); else Config->commtimeout = 1; | 120 | if (str) Config->commtimeout=atoi(str); else Config->commtimeout = 1; |
121 | str = INI_GetValue(smsdcfgfile, "smsd", "sendtimeout", false); | 121 | str = INI_GetValue(smsdcfgfile, "smsd", "sendtimeout", false); |
122 | if (str) Config->sendtimeout=atoi(str); else Config->sendtimeout = 10; | 122 | if (str) Config->sendtimeout=atoi(str); else Config->sendtimeout = 10; |
123 | str = INI_GetValue(smsdcfgfile, "smsd", "receivefrequency", false); | 123 | str = INI_GetValue(smsdcfgfile, "smsd", "receivefrequency", false); |
124 | if (str) Config->receivefrequency=atoi(str); else Config->receivefrequency = 0; | 124 | if (str) Config->receivefrequency=atoi(str); else Config->receivefrequency = 0; |
125 | str = INI_GetValue(smsdcfgfile, "smsd", "resetfrequency", false); | 125 | str = INI_GetValue(smsdcfgfile, "smsd", "resetfrequency", false); |
@@ -212,26 +212,31 @@ bool SMSD_CheckSecurity(GSM_SMSDConfig *Config) | |||
212 | return false; | 212 | return false; |
213 | } | 213 | } |
214 | /* No supported - do not check more */ | 214 | /* No supported - do not check more */ |
215 | if (error == ERR_NOTSUPPORTED) return true; | 215 | if (error == ERR_NOTSUPPORTED) return true; |
216 | 216 | ||
217 | /* If PIN, try to enter */ | 217 | /* If PIN, try to enter */ |
218 | switch (SecurityCode.Type) { | 218 | switch (SecurityCode.Type) { |
219 | case SEC_Pin: | 219 | case SEC_Pin: |
220 | WriteSMSDLog("Trying to enter PIN"); | 220 | if (Config->PINCode==NULL) { |
221 | strcpy(SecurityCode.Code,Config->PINCode); | 221 | WriteSMSDLog("Warning: no PIN in config"); |
222 | error=Phone->EnterSecurityCode(&s,SecurityCode); | ||
223 | if (error == ERR_SECURITYERROR) { | ||
224 | GSM_Terminate_SMSD("ERROR: incorrect PIN", error, true, -1); | ||
225 | } | ||
226 | if (error != ERR_NONE) { | ||
227 | WriteSMSDLog("Error entering PIN (%i)", error); | ||
228 | return false; | 222 | return false; |
229 | } | 223 | } else { |
224 | WriteSMSDLog("Trying to enter PIN"); | ||
225 | strcpy(SecurityCode.Code,Config->PINCode); | ||
226 | error=Phone->EnterSecurityCode(&s,SecurityCode); | ||
227 | if (error == ERR_SECURITYERROR) { | ||
228 | GSM_Terminate_SMSD("ERROR: incorrect PIN", error, true, -1); | ||
229 | } | ||
230 | if (error != ERR_NONE) { | ||
231 | WriteSMSDLog("Error entering PIN (%i)", error); | ||
232 | return false; | ||
233 | } | ||
234 | } | ||
230 | break; | 235 | break; |
231 | case SEC_SecurityCode: | 236 | case SEC_SecurityCode: |
232 | case SEC_Pin2: | 237 | case SEC_Pin2: |
233 | case SEC_Puk: | 238 | case SEC_Puk: |
234 | case SEC_Puk2: | 239 | case SEC_Puk2: |
235 | GSM_Terminate_SMSD("ERROR: phone requires not supported code type", 0, true, -1); | 240 | GSM_Terminate_SMSD("ERROR: phone requires not supported code type", 0, true, -1); |
236 | case SEC_None: | 241 | case SEC_None: |
237 | break; | 242 | break; |