summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-08-30 20:17:00 (UTC)
committer zautrix <zautrix>2004-08-30 20:17:00 (UTC)
commit5f4867356dc4b34da20b66e9ede71e22899e4a4b (patch) (unidiff)
tree6d1f0b45349d36db9afbb83a4d590047a922a5fb
parentc015c3061d8d5b81316b862fd927340d9909aabc (diff)
downloadkdepimpi-5f4867356dc4b34da20b66e9ede71e22899e4a4b.zip
kdepimpi-5f4867356dc4b34da20b66e9ede71e22899e4a4b.tar.gz
kdepimpi-5f4867356dc4b34da20b66e9ede71e22899e4a4b.tar.bz2
More pro file fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--gammu/emb/common/common.pro2
-rw-r--r--gammu/emb/common/commonE.pro1
-rw-r--r--gammu/emb/common/service/gsmring.c3
-rw-r--r--gammu/emb/gammu/gammu.pro3
-rw-r--r--gammu/emb/gammu/gammuE.pro4
5 files changed, 8 insertions, 5 deletions
diff --git a/gammu/emb/common/common.pro b/gammu/emb/common/common.pro
index d27dbeb..9342cb7 100644
--- a/gammu/emb/common/common.pro
+++ b/gammu/emb/common/common.pro
@@ -1,186 +1,186 @@
1###################################################################### 1######################################################################
2# Automatically generated by qmake (1.07a) Fri Jul 30 22:13:34 2004 2# Automatically generated by qmake (1.07a) Fri Jul 30 22:13:34 2004
3###################################################################### 3######################################################################
4 4
5TEMPLATE = lib 5TEMPLATE = lib
6DEPENDPATH += device \ 6DEPENDPATH += device \
7 misc \ 7 misc \
8 phone \ 8 phone \
9 protocol \ 9 protocol \
10 service \ 10 service \
11 device/bluetoth \ 11 device/bluetoth \
12 device/irda \ 12 device/irda \
13 device/serial \ 13 device/serial \
14 misc/coding \ 14 misc/coding \
15 phone/alcatel \ 15 phone/alcatel \
16 phone/at \ 16 phone/at \
17 phone/nokia \ 17 phone/nokia \
18 phone/obex \ 18 phone/obex \
19 phone/symbian \ 19 phone/symbian \
20 protocol/alcatel \ 20 protocol/alcatel \
21 protocol/at \ 21 protocol/at \
22 protocol/nokia \ 22 protocol/nokia \
23 protocol/obex \ 23 protocol/obex \
24 protocol/symbian \ 24 protocol/symbian \
25 service/backup \ 25 service/backup \
26 service/sms \ 26 service/sms \
27 phone/nokia/dct3 \ 27 phone/nokia/dct3 \
28 phone/nokia/dct4 28 phone/nokia/dct4
29INCLUDEPATH += . \ 29INCLUDEPATH += . \
30 misc/coding \ 30 misc/coding \
31 misc \ 31 misc \
32 device \ 32 device \
33 phone/nokia/dct4 \ 33 phone/nokia/dct4 \
34 phone/nokia/dct3 \ 34 phone/nokia/dct3 \
35 phone/at \ 35 phone/at \
36 phone/alcatel \ 36 phone/alcatel \
37 phone/obex \ 37 phone/obex \
38 phone/symbian \ 38 phone/symbian \
39 protocol \ 39 protocol \
40 protocol/nokia \ 40 protocol/nokia \
41 protocol/at \ 41 protocol/at \
42 protocol/alcatel \ 42 protocol/alcatel \
43 protocol/obex \ 43 protocol/obex \
44 protocol/symbian \ 44 protocol/symbian \
45 device/serial \ 45 device/serial \
46 device/irda \ 46 device/irda \
47 device/bluetoth \ 47 device/bluetoth \
48 service \ 48 service \
49 service/sms \ 49 service/sms \
50 service/backup \ 50 service/backup \
51 phone/nokia \ 51 phone/nokia \
52 phone 52 phone
53 53
54# Input 54# Input
55HEADERS += config.h \ 55HEADERS += config.h \
56 gammu.h \ 56 gammu.h \
57 gsmcomon.h \ 57 gsmcomon.h \
58 gsmstate.h \ 58 gsmstate.h \
59 device/devfunc.h \ 59 device/devfunc.h \
60 misc/cfg.h \ 60 misc/cfg.h \
61 misc/misc.h \ 61 misc/misc.h \
62 phone/pfunc.h \ 62 phone/pfunc.h \
63 protocol/protocol.h \ 63 protocol/protocol.h \
64 service/gsmcal.h \ 64 service/gsmcal.h \
65 service/gsmcall.h \ 65 service/gsmcall.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 \ 74 device/bluetoth/blue_w32.h \
75 device/bluetoth/bluetoth.h \ 75 device/bluetoth/bluetoth.h \
76 device/bluetoth/bluez.h \ 76 device/bluetoth/bluez.h \
77 device/irda/irda.h \ 77 device/irda/irda.h \
78 device/irda/irda_unx.h \ 78 device/irda/irda_unx.h \
79 device/irda/irda_w32.h \ 79 device/irda/irda_w32.h \
80 device/serial/ser_djg.h \ 80 device/serial/ser_djg.h \
81 device/serial/ser_unx.h \ 81 device/serial/ser_unx.h \
82 device/serial/ser_w32.h \ 82 device/serial/ser_w32.h \
83 misc/coding/coding.h \ 83 misc/coding/coding.h \
84 misc/coding/md5.h \ 84 misc/coding/md5.h \
85 phone/alcatel/alcatel.h \ 85 phone/alcatel/alcatel.h \
86 phone/at/atgen.h \ 86 phone/at/atgen.h \
87 phone/nokia/ncommon.h \ 87 phone/nokia/ncommon.h \
88 phone/nokia/nfunc.h \ 88 phone/nokia/nfunc.h \
89 phone/nokia/nfuncold.h \ 89 phone/nokia/nfuncold.h \
90 phone/obex/obexgen.h \ 90 phone/obex/obexgen.h \
91 phone/symbian/mroutgen.h \ 91 phone/symbian/mroutgen.h \
92 protocol/alcatel/alcabus.h \ 92 protocol/alcatel/alcabus.h \
93 protocol/at/at.h \ 93 protocol/at/at.h \
94 protocol/nokia/fbus2.h \ 94 protocol/nokia/fbus2.h \
95 protocol/nokia/mbus2.h \ 95 protocol/nokia/mbus2.h \
96 protocol/nokia/phonet.h \ 96 protocol/nokia/phonet.h \
97 protocol/obex/obex.h \ 97 protocol/obex/obex.h \
98 protocol/symbian/mrouter.h \ 98 protocol/symbian/mrouter.h \
99 service/backup/backgen.h \ 99 service/backup/backgen.h \
100 service/backup/backics.h \ 100 service/backup/backics.h \
101 service/backup/backldif.h \ 101 service/backup/backldif.h \
102 service/backup/backlmb.h \ 102 service/backup/backlmb.h \
103 service/backup/backtext.h \ 103 service/backup/backtext.h \
104 service/backup/backvcf.h \ 104 service/backup/backvcf.h \
105 service/backup/backvcs.h \ 105 service/backup/backvcs.h \
106 service/backup/gsmback.h \ 106 service/backup/gsmback.h \
107 service/sms/gsmems.h \ 107 service/sms/gsmems.h \
108 service/sms/gsmmulti.h \ 108 service/sms/gsmmulti.h \
109 service/sms/gsmsms.h \ 109 service/sms/gsmsms.h \
110 phone/nokia/dct3/dct3comm.h \ 110 phone/nokia/dct3/dct3comm.h \
111 phone/nokia/dct3/dct3func.h \ 111 phone/nokia/dct3/dct3func.h \
112 phone/nokia/dct3/n6110.h \ 112 phone/nokia/dct3/n6110.h \
113 phone/nokia/dct3/n7110.h \ 113 phone/nokia/dct3/n7110.h \
114 phone/nokia/dct3/n9210.h \ 114 phone/nokia/dct3/n9210.h \
115 phone/nokia/dct4/dct4func.h \ 115 phone/nokia/dct4/dct4func.h \
116 phone/nokia/dct4/n3320.h \ 116 phone/nokia/dct4/n3320.h \
117 phone/nokia/dct4/n3650.h \ 117 phone/nokia/dct4/n3650.h \
118 phone/nokia/dct4/n6510.h 118 phone/nokia/dct4/n6510.h
119SOURCES +=gsmcomon.c \ 119SOURCES +=gsmcomon.c \
120gsmstate.c \ 120gsmstate.c \
121misc/misc.c \ 121misc/misc.c \
122misc/cfg.c \ 122misc/cfg.c \
123misc/coding/coding.c \ 123misc/coding/coding.c \
124misc/coding/md5.c \ 124misc/coding/md5.c \
125service/sms/gsmsms.c \ 125service/sms/gsmsms.c \
126service/sms/gsmems.c \ 126service/sms/gsmems.c \
127service/sms/gsmmulti.c \ 127service/sms/gsmmulti.c \
128service/gsmcal.c \ 128service/gsmcal.c \
129service/gsmdata.c \ 129service/gsmdata.c \
130service/gsmpbk.c \ 130service/gsmpbk.c \
131service/gsmring.c \ 131service/gsmring.c \
132service/gsmlogo.c \ 132service/gsmlogo.c \
133service/gsmmisc.c \ 133service/gsmmisc.c \
134service/gsmnet.c \ 134service/gsmnet.c \
135service/backup/gsmback.c \ 135service/backup/gsmback.c \
136service/backup/backldif.c \ 136service/backup/backldif.c \
137service/backup/backlmb.c \ 137service/backup/backlmb.c \
138service/backup/backtext.c \ 138service/backup/backtext.c \
139service/backup/backvcs.c \ 139service/backup/backvcs.c \
140service/backup/backvcf.c \ 140service/backup/backvcf.c \
141service/backup/backics.c \ 141service/backup/backics.c \
142device/bluetoth/affix.c \ 142device/bluetoth/affix.c \
143device/bluetoth/bluez.c \ 143device/bluetoth/bluez.c \
144device/bluetoth/blue_w32.c \ 144device/bluetoth/blue_w32.c \
145device/bluetoth/bluetoth.c \ 145device/bluetoth/bluetoth.c \
146device/serial/ser_djg.c \ 146device/serial/ser_djg.c \
147device/irda/irda.c \ 147device/irda/irda.c \
148device/devfunc.c \ 148device/devfunc.c \
149protocol/at/at.c \ 149protocol/at/at.c \
150protocol/alcatel/alcabus.c \ 150protocol/alcatel/alcabus.c \
151protocol/nokia/mbus2.c \ 151protocol/nokia/mbus2.c \
152protocol/nokia/fbus2.c \ 152protocol/nokia/fbus2.c \
153protocol/nokia/phonet.c \ 153protocol/nokia/phonet.c \
154protocol/obex/obex.c \ 154protocol/obex/obex.c \
155protocol/symbian/mrouter.c \ 155protocol/symbian/mrouter.c \
156phone/pfunc.c \ 156phone/pfunc.c \
157phone/at/atgen.c \ 157phone/at/atgen.c \
158phone/at/siemens.c \ 158phone/at/siemens.c \
159phone/at/sonyeric.c \ 159phone/at/sonyeric.c \
160phone/alcatel/alcatel.c \ 160phone/alcatel/alcatel.c \
161phone/nokia/dct3/n6110.c \ 161phone/nokia/dct3/n6110.c \
162phone/nokia/dct3/n7110.c \ 162phone/nokia/dct3/n7110.c \
163phone/nokia/dct3/n9210.c \ 163phone/nokia/dct3/n9210.c \
164phone/nokia/dct3/dct3func.c \ 164phone/nokia/dct3/dct3func.c \
165phone/nokia/dct4/n3320.c \ 165phone/nokia/dct4/n3320.c \
166phone/nokia/dct4/n3650.c \ 166phone/nokia/dct4/n3650.c \
167phone/nokia/dct4/n6510.c \ 167phone/nokia/dct4/n6510.c \
168phone/nokia/dct4/dct4func.c \ 168phone/nokia/dct4/dct4func.c \
169phone/nokia/nauto.c \ 169phone/nokia/nauto.c \
170phone/nokia/nfunc.c \ 170phone/nokia/nfunc.c \
171phone/nokia/nfuncold.c \ 171phone/nokia/nfuncold.c \
172phone/obex/obexgen.c \ 172phone/obex/obexgen.c \
173phone/symbian/mroutgen.c 173phone/symbian/mroutgen.c
174 174
175TARGET = microgammu 175TARGET = microgammu
176CONFIG += console 176CONFIG = warn_off release console
177DESTDIR = ../../../bin 177DESTDIR = ../../../bin
178OBJECTS_DIR = obj/unix 178OBJECTS_DIR = obj/unix
179MOC_DIR = moc/unix 179MOC_DIR = moc/unix
180 180
181unix: { 181unix: {
182SOURCES += device/serial/ser_unx.c 182SOURCES += device/serial/ser_unx.c
183} 183}
184win32:{ 184win32:{
185SOURCES += device/serial/ser_w32.c 185SOURCES += device/serial/ser_w32.c
186} 186}
diff --git a/gammu/emb/common/commonE.pro b/gammu/emb/common/commonE.pro
index 49fecc6..33c0224 100644
--- a/gammu/emb/common/commonE.pro
+++ b/gammu/emb/common/commonE.pro
@@ -1,179 +1,180 @@
1###################################################################### 1######################################################################
2# Automatically generated by qmake (1.07a) Fri Jul 30 22:13:34 2004 2# Automatically generated by qmake (1.07a) Fri Jul 30 22:13:34 2004
3###################################################################### 3######################################################################
4 4
5TEMPLATE = lib 5TEMPLATE = lib
6DEPENDPATH += device \ 6DEPENDPATH += device \
7 misc \ 7 misc \
8 phone \ 8 phone \
9 protocol \ 9 protocol \
10 service \ 10 service \
11 device/bluetoth \ 11 device/bluetoth \
12 device/irda \ 12 device/irda \
13 device/serial \ 13 device/serial \
14 misc/coding \ 14 misc/coding \
15 phone/alcatel \ 15 phone/alcatel \
16 phone/at \ 16 phone/at \
17 phone/nokia \ 17 phone/nokia \
18 phone/obex \ 18 phone/obex \
19 phone/symbian \ 19 phone/symbian \
20 protocol/alcatel \ 20 protocol/alcatel \
21 protocol/at \ 21 protocol/at \
22 protocol/nokia \ 22 protocol/nokia \
23 protocol/obex \ 23 protocol/obex \
24 protocol/symbian \ 24 protocol/symbian \
25 service/backup \ 25 service/backup \
26 service/sms \ 26 service/sms \
27 phone/nokia/dct3 \ 27 phone/nokia/dct3 \
28 phone/nokia/dct4 28 phone/nokia/dct4
29INCLUDEPATH += . \ 29INCLUDEPATH += . \
30 misc/coding \ 30 misc/coding \
31 misc \ 31 misc \
32 device \ 32 device \
33 phone/nokia/dct4 \ 33 phone/nokia/dct4 \
34 phone/nokia/dct3 \ 34 phone/nokia/dct3 \
35 phone/at \ 35 phone/at \
36 phone/alcatel \ 36 phone/alcatel \
37 phone/obex \ 37 phone/obex \
38 phone/symbian \ 38 phone/symbian \
39 protocol \ 39 protocol \
40 protocol/nokia \ 40 protocol/nokia \
41 protocol/at \ 41 protocol/at \
42 protocol/alcatel \ 42 protocol/alcatel \
43 protocol/obex \ 43 protocol/obex \
44 protocol/symbian \ 44 protocol/symbian \
45 device/serial \ 45 device/serial \
46 device/irda \ 46 device/irda \
47 device/bluetoth \ 47 device/bluetoth \
48 service \ 48 service \
49 service/sms \ 49 service/sms \
50 service/backup \ 50 service/backup \
51 phone/nokia \ 51 phone/nokia \
52 phone 52 phone
53 53
54# Input 54# Input
55HEADERS += config.h \ 55HEADERS += config.h \
56 gammu.h \ 56 gammu.h \
57 gsmcomon.h \ 57 gsmcomon.h \
58 gsmstate.h \ 58 gsmstate.h \
59 device/devfunc.h \ 59 device/devfunc.h \
60 misc/cfg.h \ 60 misc/cfg.h \
61 misc/misc.h \ 61 misc/misc.h \
62 phone/pfunc.h \ 62 phone/pfunc.h \
63 protocol/protocol.h \ 63 protocol/protocol.h \
64 service/gsmcal.h \ 64 service/gsmcal.h \
65 service/gsmcall.h \ 65 service/gsmcall.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 \ 74 device/bluetoth/blue_w32.h \
75 device/bluetoth/bluetoth.h \ 75 device/bluetoth/bluetoth.h \
76 device/bluetoth/bluez.h \ 76 device/bluetoth/bluez.h \
77 device/irda/irda.h \ 77 device/irda/irda.h \
78 device/irda/irda_unx.h \ 78 device/irda/irda_unx.h \
79 device/irda/irda_w32.h \ 79 device/irda/irda_w32.h \
80 device/serial/ser_djg.h \ 80 device/serial/ser_djg.h \
81 device/serial/ser_unx.h \ 81 device/serial/ser_unx.h \
82 device/serial/ser_w32.h \ 82 device/serial/ser_w32.h \
83 misc/coding/coding.h \ 83 misc/coding/coding.h \
84 misc/coding/md5.h \ 84 misc/coding/md5.h \
85 phone/alcatel/alcatel.h \ 85 phone/alcatel/alcatel.h \
86 phone/at/atgen.h \ 86 phone/at/atgen.h \
87 phone/nokia/ncommon.h \ 87 phone/nokia/ncommon.h \
88 phone/nokia/nfunc.h \ 88 phone/nokia/nfunc.h \
89 phone/nokia/nfuncold.h \ 89 phone/nokia/nfuncold.h \
90 phone/obex/obexgen.h \ 90 phone/obex/obexgen.h \
91 phone/symbian/mroutgen.h \ 91 phone/symbian/mroutgen.h \
92 protocol/alcatel/alcabus.h \ 92 protocol/alcatel/alcabus.h \
93 protocol/at/at.h \ 93 protocol/at/at.h \
94 protocol/nokia/fbus2.h \ 94 protocol/nokia/fbus2.h \
95 protocol/nokia/mbus2.h \ 95 protocol/nokia/mbus2.h \
96 protocol/nokia/phonet.h \ 96 protocol/nokia/phonet.h \
97 protocol/obex/obex.h \ 97 protocol/obex/obex.h \
98 protocol/symbian/mrouter.h \ 98 protocol/symbian/mrouter.h \
99 service/backup/backgen.h \ 99 service/backup/backgen.h \
100 service/backup/backics.h \ 100 service/backup/backics.h \
101 service/backup/backldif.h \ 101 service/backup/backldif.h \
102 service/backup/backlmb.h \ 102 service/backup/backlmb.h \
103 service/backup/backtext.h \ 103 service/backup/backtext.h \
104 service/backup/backvcf.h \ 104 service/backup/backvcf.h \
105 service/backup/backvcs.h \ 105 service/backup/backvcs.h \
106 service/backup/gsmback.h \ 106 service/backup/gsmback.h \
107 service/sms/gsmems.h \ 107 service/sms/gsmems.h \
108 service/sms/gsmmulti.h \ 108 service/sms/gsmmulti.h \
109 service/sms/gsmsms.h \ 109 service/sms/gsmsms.h \
110 phone/nokia/dct3/dct3comm.h \ 110 phone/nokia/dct3/dct3comm.h \
111 phone/nokia/dct3/dct3func.h \ 111 phone/nokia/dct3/dct3func.h \
112 phone/nokia/dct3/n6110.h \ 112 phone/nokia/dct3/n6110.h \
113 phone/nokia/dct3/n7110.h \ 113 phone/nokia/dct3/n7110.h \
114 phone/nokia/dct3/n9210.h \ 114 phone/nokia/dct3/n9210.h \
115 phone/nokia/dct4/dct4func.h \ 115 phone/nokia/dct4/dct4func.h \
116 phone/nokia/dct4/n3320.h \ 116 phone/nokia/dct4/n3320.h \
117 phone/nokia/dct4/n3650.h \ 117 phone/nokia/dct4/n3650.h \
118 phone/nokia/dct4/n6510.h 118 phone/nokia/dct4/n6510.h
119SOURCES +=gsmcomon.c \ 119SOURCES +=gsmcomon.c \
120gsmstate.c \ 120gsmstate.c \
121misc/misc.c \ 121misc/misc.c \
122misc/cfg.c \ 122misc/cfg.c \
123misc/coding/coding.c \ 123misc/coding/coding.c \
124misc/coding/md5.c \ 124misc/coding/md5.c \
125service/sms/gsmsms.c \ 125service/sms/gsmsms.c \
126service/sms/gsmems.c \ 126service/sms/gsmems.c \
127service/sms/gsmmulti.c \ 127service/sms/gsmmulti.c \
128service/gsmcal.c \ 128service/gsmcal.c \
129service/gsmdata.c \ 129service/gsmdata.c \
130service/gsmpbk.c \ 130service/gsmpbk.c \
131service/gsmring.c \ 131service/gsmring.c \
132service/gsmlogo.c \ 132service/gsmlogo.c \
133service/gsmmisc.c \ 133service/gsmmisc.c \
134service/gsmnet.c \ 134service/gsmnet.c \
135service/backup/gsmback.c \ 135service/backup/gsmback.c \
136service/backup/backldif.c \ 136service/backup/backldif.c \
137service/backup/backlmb.c \ 137service/backup/backlmb.c \
138service/backup/backtext.c \ 138service/backup/backtext.c \
139service/backup/backvcs.c \ 139service/backup/backvcs.c \
140service/backup/backvcf.c \ 140service/backup/backvcf.c \
141service/backup/backics.c \ 141service/backup/backics.c \
142device/bluetoth/affix.c \ 142device/bluetoth/affix.c \
143device/bluetoth/bluez.c \ 143device/bluetoth/bluez.c \
144device/bluetoth/blue_w32.c \ 144device/bluetoth/blue_w32.c \
145device/bluetoth/bluetoth.c \ 145device/bluetoth/bluetoth.c \
146device/serial/ser_unx.c \ 146device/serial/ser_unx.c \
147device/serial/ser_djg.c \ 147device/serial/ser_djg.c \
148device/irda/irda.c \ 148device/irda/irda.c \
149device/devfunc.c \ 149device/devfunc.c \
150protocol/at/at.c \ 150protocol/at/at.c \
151protocol/alcatel/alcabus.c \ 151protocol/alcatel/alcabus.c \
152protocol/nokia/mbus2.c \ 152protocol/nokia/mbus2.c \
153protocol/nokia/fbus2.c \ 153protocol/nokia/fbus2.c \
154protocol/nokia/phonet.c \ 154protocol/nokia/phonet.c \
155protocol/obex/obex.c \ 155protocol/obex/obex.c \
156protocol/symbian/mrouter.c \ 156protocol/symbian/mrouter.c \
157phone/pfunc.c \ 157phone/pfunc.c \
158phone/at/atgen.c \ 158phone/at/atgen.c \
159phone/at/siemens.c \ 159phone/at/siemens.c \
160phone/at/sonyeric.c \ 160phone/at/sonyeric.c \
161phone/alcatel/alcatel.c \ 161phone/alcatel/alcatel.c \
162phone/nokia/dct3/n6110.c \ 162phone/nokia/dct3/n6110.c \
163phone/nokia/dct3/n7110.c \ 163phone/nokia/dct3/n7110.c \
164phone/nokia/dct3/n9210.c \ 164phone/nokia/dct3/n9210.c \
165phone/nokia/dct3/dct3func.c \ 165phone/nokia/dct3/dct3func.c \
166phone/nokia/dct4/n3320.c \ 166phone/nokia/dct4/n3320.c \
167phone/nokia/dct4/n3650.c \ 167phone/nokia/dct4/n3650.c \
168phone/nokia/dct4/n6510.c \ 168phone/nokia/dct4/n6510.c \
169phone/nokia/dct4/dct4func.c \ 169phone/nokia/dct4/dct4func.c \
170phone/nokia/nauto.c \ 170phone/nokia/nauto.c \
171phone/nokia/nfunc.c \ 171phone/nokia/nfunc.c \
172phone/nokia/nfuncold.c \ 172phone/nokia/nfuncold.c \
173phone/obex/obexgen.c \ 173phone/obex/obexgen.c \
174phone/symbian/mroutgen.c 174phone/symbian/mroutgen.c
175 175
176TARGET = microgammu 176TARGET = microgammu
177DESTDIR = $(QPEDIR)/lib 177DESTDIR = $(QPEDIR)/lib
178OBJECTS_DIR = obj/$(PLATFORM) 178OBJECTS_DIR = obj/$(PLATFORM)
179MOC_DIR = moc/$(PLATFORM) 179MOC_DIR = moc/$(PLATFORM)
180 CONFIG = warn_off release console
diff --git a/gammu/emb/common/service/gsmring.c b/gammu/emb/common/service/gsmring.c
index 5a1ff87..f7f7082 100644
--- a/gammu/emb/common/service/gsmring.c
+++ b/gammu/emb/common/service/gsmring.c
@@ -1,875 +1,876 @@
1/* (c) 2001-2004 by Marcin Wiacek */ 1/* (c) 2001-2004 by Marcin Wiacek */
2/* Based on some work from Ralf Thelen (7110 ringtones), 2/* Based on some work from Ralf Thelen (7110 ringtones),
3 * Gnokii (RTTL and SM) and others 3 * Gnokii (RTTL and SM) and others
4 */ 4 */
5 5
6#include <stdlib.h> 6#include <stdlib.h>
7#include <string.h> 7#include <string.h>
8#include <ctype.h> 8#include <ctype.h>
9#include <math.h> 9#include <math.h>
10#ifdef WIN32 10#ifdef WIN32
11# include <windows.h> 11# include <windows.h>
12#endif 12#endif
13 13
14#include "../gsmcomon.h" 14#include "../gsmcomon.h"
15#include "../misc/coding/coding.h" 15#include "../misc/coding/coding.h"
16#include "../gsmstate.h" 16#include "../gsmstate.h"
17#include "gsmring.h" 17#include "gsmring.h"
18#include "sms/gsmsms.h" 18#include "sms/gsmsms.h"
19 19
20int GSM_RingNoteGetFrequency(GSM_RingNote Note) 20int GSM_RingNoteGetFrequency(GSM_RingNote Note)
21{ 21{
22 double freq=0; 22 double freq=0;
23 23
24 /* Values according to the software from http://iki.fi/too/sw/xring/ 24 /* Values according to the software from http://iki.fi/too/sw/xring/
25 * generated with: 25 * generated with:
26 * perl -e 'print int(4400 * (2 **($_/12)) + .5)/10, "\n" for(3..14)' 26 * perl -e 'print int(4400 * (2 **($_/12)) + .5)/10, "\n" for(3..14)'
27 */ 27 */
28 switch (Note.Note) { 28 switch (Note.Note) {
29 case Note_C : freq = 523.3; break; 29 case Note_C : freq = 523.3; break;
30 case Note_Cis: freq = 554.4; break; 30 case Note_Cis: freq = 554.4; break;
31 case Note_D : freq = 587.3; break; 31 case Note_D : freq = 587.3; break;
32 case Note_Dis: freq = 622.3; break; 32 case Note_Dis: freq = 622.3; break;
33 case Note_E : freq = 659.3; break; 33 case Note_E : freq = 659.3; break;
34 case Note_F : freq = 698.5; break; 34 case Note_F : freq = 698.5; break;
35 case Note_Fis: freq = 740; break; 35 case Note_Fis: freq = 740; break;
36 case Note_G : freq = 784; break; 36 case Note_G : freq = 784; break;
37 case Note_Gis: freq = 830.6; break; 37 case Note_Gis: freq = 830.6; break;
38 case Note_A : freq = 880; break; 38 case Note_A : freq = 880; break;
39 case Note_Ais: freq = 932.3; break; 39 case Note_Ais: freq = 932.3; break;
40 case Note_H : freq = 987.8; break; 40 case Note_H : freq = 987.8; break;
41 case Note_Pause: break; 41 case Note_Pause: break;
42 } 42 }
43 switch (Note.Scale) { 43 switch (Note.Scale) {
44 case Scale_440 : freq = freq / 2; break; 44 case Scale_440 : freq = freq / 2; break;
45 case Scale_880 : break; 45 case Scale_880 : break;
46 case Scale_1760: freq = freq * 2; break; 46 case Scale_1760: freq = freq * 2; break;
47 case Scale_3520: freq = freq * 4; break; 47 case Scale_3520: freq = freq * 4; break;
48 default : break; 48 default : break;
49 } 49 }
50 return (int)freq; 50 return (int)freq;
51} 51}
52 52
53int GSM_RingNoteGetFullDuration(GSM_RingNote Note) 53int GSM_RingNoteGetFullDuration(GSM_RingNote Note)
54{ 54{
55 int duration = 1; 55 int duration = 1;
56 56
57 switch (Note.Duration) { 57 switch (Note.Duration) {
58 case Duration_Full : duration = 128; break; 58 case Duration_Full : duration = 128; break;
59 case Duration_1_2 : duration = 64; break; 59 case Duration_1_2 : duration = 64; break;
60 case Duration_1_4 : duration = 32; break; 60 case Duration_1_4 : duration = 32; break;
61 case Duration_1_8 : duration = 16; break; 61 case Duration_1_8 : duration = 16; break;
62 case Duration_1_16 : duration = 8; break; 62 case Duration_1_16 : duration = 8; break;
63 case Duration_1_32 : duration = 4; break; 63 case Duration_1_32 : duration = 4; break;
64 } 64 }
65 switch (Note.DurationSpec) { 65 switch (Note.DurationSpec) {
66 case NoSpecialDuration : break; 66 case NoSpecialDuration : break;
67 case DottedNote : duration = duration * 3/2;break; 67 case DottedNote : duration = duration * 3/2;break;
68 case DoubleDottedNote : duration = duration * 9/4;break; 68 case DoubleDottedNote : duration = duration * 9/4;break;
69 case Length_2_3 : duration = duration * 2/3;break; 69 case Length_2_3 : duration = duration * 2/3;break;
70 } 70 }
71 return duration; 71 return duration;
72} 72}
73 73
74#ifndef PI 74#ifndef PI
75# define PI 3.141592654 75# define PI 3.141592654
76#endif 76#endif
77 77
78#define WAV_SAMPLE_RATE 44100 78#define WAV_SAMPLE_RATE 44100
79 79
80GSM_Error savewav(FILE *file, GSM_Ringtone *ringtone) 80GSM_Error savewav(FILE *file, GSM_Ringtone *ringtone)
81{ 81{
82 unsigned char WAV_Header[] = { 82 unsigned char WAV_Header[] = {
83 'R','I','F','F', 83 'R','I','F','F',
84 0x00,0x00,0x00,0x00,/* Length */ 84 0x00,0x00,0x00,0x00,/* Length */
85 'W','A','V','E'}; 85 'W','A','V','E'};
86 unsigned char FMT_Header[] = {'f','m','t',' ', 86 unsigned char FMT_Header[] = {'f','m','t',' ',
87 0x10,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x44,0xac, 87 0x10,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x44,0xac,
88 0x00,0x00,0x88,0x58,0x01,0x00,0x02,0x00,0x10,0x00}; 88 0x00,0x00,0x88,0x58,0x01,0x00,0x02,0x00,0x10,0x00};
89 unsigned char DATA_Header[] = { 89 unsigned char DATA_Header[] = {
90 'd','a','t','a', 90 'd','a','t','a',
91 0x00,0x00,0x00,0x00};/* Length */ 91 0x00,0x00,0x00,0x00};/* Length */
92 short DATA_Buffer[60000]; 92 short DATA_Buffer[60000];
93 long wavfilesize; 93 long wavfilesize;
94 GSM_RingNote *Note; 94 GSM_RingNote *Note;
95 long i,j,length=0; 95 long i,j,length=0;
96 double phase=0,phase_step; 96 double phase=0,phase_step;
97 97
98 fwrite(&WAV_Header, 1, sizeof(WAV_Header),file); 98 fwrite(&WAV_Header, 1, sizeof(WAV_Header),file);
99 fwrite(&FMT_Header, 1, sizeof(FMT_Header),file); 99 fwrite(&FMT_Header, 1, sizeof(FMT_Header),file);
100 fwrite(&DATA_Header, 1, sizeof(DATA_Header),file); 100 fwrite(&DATA_Header, 1, sizeof(DATA_Header),file);
101 101
102 for (i=0;i<ringtone->NoteTone.NrCommands;i++) { 102 for (i=0;i<ringtone->NoteTone.NrCommands;i++) {
103 if (ringtone->NoteTone.Commands[i].Type == RING_Note) { 103 if (ringtone->NoteTone.Commands[i].Type == RING_Note) {
104 Note = &ringtone->NoteTone.Commands[i].Note; 104 Note = &ringtone->NoteTone.Commands[i].Note;
105 phase_step = GSM_RingNoteGetFrequency(*Note)*WAV_SAMPLE_RATE*1.5; 105 phase_step = GSM_RingNoteGetFrequency(*Note)*WAV_SAMPLE_RATE*1.5;
106 for (j=0;j<((long)(GSM_RingNoteGetFullDuration(*Note)*WAV_SAMPLE_RATE/70));j++) { 106 for (j=0;j<((long)(GSM_RingNoteGetFullDuration(*Note)*WAV_SAMPLE_RATE/70));j++) {
107 DATA_Buffer[j] = ((int)(sin(phase*PI)*50000)); 107 /*DATA_Buffer[j] = ((int)(sin(phase*PI)*50000));*/
108 DATA_Buffer[j] = ((int)(0.5*50000));
108 phase = phase + phase_step; 109 phase = phase + phase_step;
109 length++; 110 length++;
110 } 111 }
111 fwrite(&DATA_Buffer,sizeof(short),j,file); 112 fwrite(&DATA_Buffer,sizeof(short),j,file);
112 } 113 }
113 } 114 }
114 115
115 wavfilesize = sizeof(WAV_Header) + sizeof(FMT_Header) + sizeof(DATA_Header) + length*2; 116 wavfilesize = sizeof(WAV_Header) + sizeof(FMT_Header) + sizeof(DATA_Header) + length*2;
116 WAV_Header[4] = ((unsigned char)wavfilesize % 256); 117 WAV_Header[4] = ((unsigned char)wavfilesize % 256);
117 WAV_Header[5] = ((unsigned char)wavfilesize / 256); 118 WAV_Header[5] = ((unsigned char)wavfilesize / 256);
118 WAV_Header[6] = ((unsigned char)wavfilesize / (256*256)); 119 WAV_Header[6] = ((unsigned char)wavfilesize / (256*256));
119 WAV_Header[7] = ((unsigned char)wavfilesize / (256*256*256)); 120 WAV_Header[7] = ((unsigned char)wavfilesize / (256*256*256));
120 wavfilesize = wavfilesize - 54; 121 wavfilesize = wavfilesize - 54;
121 DATA_Header[4] = ((unsigned char)wavfilesize % 256); 122 DATA_Header[4] = ((unsigned char)wavfilesize % 256);
122 DATA_Header[5] = ((unsigned char)wavfilesize / 256); 123 DATA_Header[5] = ((unsigned char)wavfilesize / 256);
123 DATA_Header[6] = ((unsigned char)wavfilesize / (256*256)); 124 DATA_Header[6] = ((unsigned char)wavfilesize / (256*256));
124 DATA_Header[7] = ((unsigned char)wavfilesize / (256*256*256)); 125 DATA_Header[7] = ((unsigned char)wavfilesize / (256*256*256));
125 126
126 fseek( file, 0, SEEK_SET); 127 fseek( file, 0, SEEK_SET);
127 fwrite(&WAV_Header, 1, sizeof(WAV_Header),file); 128 fwrite(&WAV_Header, 1, sizeof(WAV_Header),file);
128 fwrite(&FMT_Header, 1, sizeof(FMT_Header),file); 129 fwrite(&FMT_Header, 1, sizeof(FMT_Header),file);
129 fwrite(&DATA_Header, 1, sizeof(DATA_Header),file); 130 fwrite(&DATA_Header, 1, sizeof(DATA_Header),file);
130 131
131 return ERR_NONE; 132 return ERR_NONE;
132} 133}
133 134
134static GSM_Error savebin(FILE *file, GSM_Ringtone *ringtone) 135static GSM_Error savebin(FILE *file, GSM_Ringtone *ringtone)
135{ 136{
136 char nullchar=0x00; 137 char nullchar=0x00;
137 138
138 fwrite(&nullchar,1,1,file); 139 fwrite(&nullchar,1,1,file);
139 fwrite(&nullchar,1,1,file); 140 fwrite(&nullchar,1,1,file);
140 fprintf(file,"\x0C\x01\x2C"); 141 fprintf(file,"\x0C\x01\x2C");
141 fprintf(file,"%s",DecodeUnicodeString(ringtone->Name)); 142 fprintf(file,"%s",DecodeUnicodeString(ringtone->Name));
142 fwrite(&nullchar,1,1,file); 143 fwrite(&nullchar,1,1,file);
143 fwrite(&nullchar,1,1,file); 144 fwrite(&nullchar,1,1,file);
144 fwrite(ringtone->NokiaBinary.Frame,1,ringtone->NokiaBinary.Length,file); 145 fwrite(ringtone->NokiaBinary.Frame,1,ringtone->NokiaBinary.Length,file);
145 return ERR_NONE; 146 return ERR_NONE;
146} 147}
147 148
148static GSM_Error savepuremidi(FILE *file, GSM_Ringtone *ringtone) 149static GSM_Error savepuremidi(FILE *file, GSM_Ringtone *ringtone)
149{ 150{
150 fwrite(ringtone->NokiaBinary.Frame,1,ringtone->NokiaBinary.Length,file); 151 fwrite(ringtone->NokiaBinary.Frame,1,ringtone->NokiaBinary.Length,file);
151 return ERR_NONE; 152 return ERR_NONE;
152} 153}
153 154
154GSM_Error saverttl(FILE *file, GSM_Ringtone *ringtone) 155GSM_Error saverttl(FILE *file, GSM_Ringtone *ringtone)
155{ 156{
156 GSM_RingNoteScaleDefNoteScale; 157 GSM_RingNoteScaleDefNoteScale;
157 GSM_RingNoteDurationDefNoteDuration; 158 GSM_RingNoteDurationDefNoteDuration;
158 159
159 GSM_RingNoteStyleDefNoteStyle=0; 160 GSM_RingNoteStyleDefNoteStyle=0;
160 int DefNoteTempo=0; 161 int DefNoteTempo=0;
161 162
162 bool started = false, firstcomma = true; 163 bool started = false, firstcomma = true;
163 GSM_RingNote *Note; 164 GSM_RingNote *Note;
164 165
165 unsigned char buffer[15]; 166 unsigned char buffer[15];
166 int i,j,k=0; 167 int i,j,k=0;
167 168
168 /* Saves ringtone name */ 169 /* Saves ringtone name */
169 fprintf(file,"%s:",DecodeUnicodeString(ringtone->Name)); 170 fprintf(file,"%s:",DecodeUnicodeString(ringtone->Name));
170 171
171 /* Find the most frequently used duration */ 172 /* Find the most frequently used duration */
172 for (i=0;i<6;i++) buffer[i]=0; 173 for (i=0;i<6;i++) buffer[i]=0;
173 for (i=0;i<ringtone->NoteTone.NrCommands;i++) { 174 for (i=0;i<ringtone->NoteTone.NrCommands;i++) {
174 if (ringtone->NoteTone.Commands[i].Type == RING_Note) { 175 if (ringtone->NoteTone.Commands[i].Type == RING_Note) {
175 Note = &ringtone->NoteTone.Commands[i].Note; 176 Note = &ringtone->NoteTone.Commands[i].Note;
176 /* some durations need 2 bytes in file, some 1 */ 177 /* some durations need 2 bytes in file, some 1 */
177 if (Note->Duration >= Duration_Full && Note->Duration <= Duration_1_8) { 178 if (Note->Duration >= Duration_Full && Note->Duration <= Duration_1_8) {
178 buffer[Note->Duration/32]++; 179 buffer[Note->Duration/32]++;
179 } 180 }
180 if (Note->Duration >= Duration_1_16 && Note->Duration <= Duration_1_32) { 181 if (Note->Duration >= Duration_1_16 && Note->Duration <= Duration_1_32) {
181 buffer[Note->Duration/32]+=2; 182 buffer[Note->Duration/32]+=2;
182 } 183 }
183 } 184 }
184 } 185 }
185 /* Now find the most frequently used */ 186 /* Now find the most frequently used */
186 j=0; 187 j=0;
187 for (i=0;i<6;i++) { 188 for (i=0;i<6;i++) {
188 if (buffer[i]>j) { 189 if (buffer[i]>j) {
189 k=i; 190 k=i;
190 j=buffer[i]; 191 j=buffer[i];
191 } 192 }
192 } 193 }
193 /* Finally convert the default duration */ 194 /* Finally convert the default duration */
194 DefNoteDuration = k * 32; 195 DefNoteDuration = k * 32;
195 dbgprintf("DefNoteDuration=%d\n", DefNoteDuration); 196 dbgprintf("DefNoteDuration=%d\n", DefNoteDuration);
196 switch (DefNoteDuration) { 197 switch (DefNoteDuration) {
197 case Duration_Full:fprintf(file,"d=1"); break; 198 case Duration_Full:fprintf(file,"d=1"); break;
198 case Duration_1_2 :fprintf(file,"d=2"); break; 199 case Duration_1_2 :fprintf(file,"d=2"); break;
199 case Duration_1_4 :fprintf(file,"d=4"); break; 200 case Duration_1_4 :fprintf(file,"d=4"); break;
200 case Duration_1_8 :fprintf(file,"d=8"); break; 201 case Duration_1_8 :fprintf(file,"d=8"); break;
201 case Duration_1_16:fprintf(file,"d=16");break; 202 case Duration_1_16:fprintf(file,"d=16");break;
202 case Duration_1_32:fprintf(file,"d=32");break; 203 case Duration_1_32:fprintf(file,"d=32");break;
203 } 204 }
204 205
205 /* Find the most frequently used scale */ 206 /* Find the most frequently used scale */
206 for (i=0;i<9;i++) buffer[i]=0; 207 for (i=0;i<9;i++) buffer[i]=0;
207 for (i=0;i<ringtone->NoteTone.NrCommands;i++) { 208 for (i=0;i<ringtone->NoteTone.NrCommands;i++) {
208 if (ringtone->NoteTone.Commands[i].Type == RING_Note) { 209 if (ringtone->NoteTone.Commands[i].Type == RING_Note) {
209 Note = &ringtone->NoteTone.Commands[i].Note; 210 Note = &ringtone->NoteTone.Commands[i].Note;
210 if (Note->Note!=Note_Pause && 211 if (Note->Note!=Note_Pause &&
211 Note->Scale >= Scale_55 && Note->Scale <= Scale_14080) { 212 Note->Scale >= Scale_55 && Note->Scale <= Scale_14080) {
212 buffer[Note->Scale - 1]++; 213 buffer[Note->Scale - 1]++;
213 } 214 }
214 } 215 }
215 } 216 }
216 j=0; 217 j=0;
217 for (i=0;i<9;i++) { 218 for (i=0;i<9;i++) {
218 if (buffer[i]>j) { 219 if (buffer[i]>j) {
219 k = i; 220 k = i;
220 j=buffer[i]; 221 j=buffer[i];
221 } 222 }
222 } 223 }
223 DefNoteScale = k + 1; 224 DefNoteScale = k + 1;
224 /* Save the default scale */ 225 /* Save the default scale */
225 fprintf(file,",o=%i,",DefNoteScale); 226 fprintf(file,",o=%i,",DefNoteScale);
226 dbgprintf("DefNoteScale=%d\n", DefNoteScale); 227 dbgprintf("DefNoteScale=%d\n", DefNoteScale);
227 228
228 for (i=0;i<ringtone->NoteTone.NrCommands;i++) { 229 for (i=0;i<ringtone->NoteTone.NrCommands;i++) {
229 if (ringtone->NoteTone.Commands[i].Type != RING_Note) continue; 230 if (ringtone->NoteTone.Commands[i].Type != RING_Note) continue;
230 231
231 Note = &ringtone->NoteTone.Commands[i].Note; 232 Note = &ringtone->NoteTone.Commands[i].Note;
232 233
233 /* Trick from PPM Edit */ 234 /* Trick from PPM Edit */
234 if (Note->DurationSpec == DoubleDottedNote) { 235 if (Note->DurationSpec == DoubleDottedNote) {
235 switch (Note->Duration) { 236 switch (Note->Duration) {
236 case Duration_Full:Note->Duration = Duration_Full;break; 237 case Duration_Full:Note->Duration = Duration_Full;break;
237 case Duration_1_2 :Note->Duration = Duration_Full;break; 238 case Duration_1_2 :Note->Duration = Duration_Full;break;
238 case Duration_1_4 :Note->Duration = Duration_1_2; break; 239 case Duration_1_4 :Note->Duration = Duration_1_2; break;
239 case Duration_1_8 :Note->Duration = Duration_1_4; break; 240 case Duration_1_8 :Note->Duration = Duration_1_4; break;
240 case Duration_1_16:Note->Duration = Duration_1_8; break; 241 case Duration_1_16:Note->Duration = Duration_1_8; break;
241 case Duration_1_32:Note->Duration = Duration_1_16;break; 242 case Duration_1_32:Note->Duration = Duration_1_16;break;
242 } 243 }
243 Note->DurationSpec = NoSpecialDuration; 244 Note->DurationSpec = NoSpecialDuration;
244 } 245 }
245 246
246 if (!started) { 247 if (!started) {
247 DefNoteTempo=Note->Tempo; 248 DefNoteTempo=Note->Tempo;
248 DefNoteStyle=Note->Style; 249 DefNoteStyle=Note->Style;
249 switch (Note->Style) { 250 switch (Note->Style) {
250 case StaccatoStyle: fprintf(file,"s=S,"); break; 251 case StaccatoStyle: fprintf(file,"s=S,"); break;
251 case NaturalStyle : fprintf(file,"s=N,"); break; 252 case NaturalStyle : fprintf(file,"s=N,"); break;
252 case ContinuousStyle : break; 253 case ContinuousStyle : break;
253 } 254 }
254 /* Save the default tempo */ 255 /* Save the default tempo */
255 fprintf(file,"b=%i:",DefNoteTempo); 256 fprintf(file,"b=%i:",DefNoteTempo);
256 dbgprintf("DefNoteTempo=%d\n", DefNoteTempo); 257 dbgprintf("DefNoteTempo=%d\n", DefNoteTempo);
257 started = true; 258 started = true;
258 firstcomma = true; 259 firstcomma = true;
259 } 260 }
260 261
261 if (!started) continue; 262 if (!started) continue;
262 263
263 if (Note->Style!=DefNoteStyle) { 264 if (Note->Style!=DefNoteStyle) {
264 /* And a separator */ 265 /* And a separator */
265 if (!firstcomma) fprintf(file,","); 266 if (!firstcomma) fprintf(file,",");
266 firstcomma = false; 267 firstcomma = false;
267 DefNoteStyle=Note->Style; 268 DefNoteStyle=Note->Style;
268 switch (Note->Style) { 269 switch (Note->Style) {
269 case StaccatoStyle : fprintf(file,"s=S"); break; 270 case StaccatoStyle : fprintf(file,"s=S"); break;
270 case NaturalStyle : fprintf(file,"s=N"); break; 271 case NaturalStyle : fprintf(file,"s=N"); break;
271 case ContinuousStyle: fprintf(file,"s=C"); break; 272 case ContinuousStyle: fprintf(file,"s=C"); break;
272 } 273 }
273 } 274 }
274 if (Note->Tempo!=DefNoteTempo) { 275 if (Note->Tempo!=DefNoteTempo) {
275 /* And a separator */ 276 /* And a separator */
276 if (!firstcomma) fprintf(file,","); 277 if (!firstcomma) fprintf(file,",");
277 firstcomma = false; 278 firstcomma = false;
278 DefNoteTempo=Note->Tempo; 279 DefNoteTempo=Note->Tempo;
279 fprintf(file,"b=%i",DefNoteTempo); 280 fprintf(file,"b=%i",DefNoteTempo);
280 } 281 }
281 /* This note has a duration different than the default. We must save it */ 282 /* This note has a duration different than the default. We must save it */
282 if (Note->Duration!=DefNoteDuration) { 283 if (Note->Duration!=DefNoteDuration) {
283 /* And a separator */ 284 /* And a separator */
284 if (!firstcomma) fprintf(file,","); 285 if (!firstcomma) fprintf(file,",");
285 firstcomma = false; 286 firstcomma = false;
286 switch (Note->Duration) { 287 switch (Note->Duration) {
287 case Duration_Full:fprintf(file,"1"); break; 288 case Duration_Full:fprintf(file,"1"); break;
288 case Duration_1_2 :fprintf(file,"2"); break; 289 case Duration_1_2 :fprintf(file,"2"); break;
289 case Duration_1_4 :fprintf(file,"4"); break; 290 case Duration_1_4 :fprintf(file,"4"); break;
290 case Duration_1_8 :fprintf(file,"8"); break; 291 case Duration_1_8 :fprintf(file,"8"); break;
291 case Duration_1_16:fprintf(file,"16");break; 292 case Duration_1_16:fprintf(file,"16");break;
292 case Duration_1_32:fprintf(file,"32");break; 293 case Duration_1_32:fprintf(file,"32");break;
293 } 294 }
294 } else { 295 } else {
295 /* And a separator */ 296 /* And a separator */
296 if (!firstcomma) fprintf(file,","); 297 if (!firstcomma) fprintf(file,",");
297 firstcomma = false; 298 firstcomma = false;
298 } 299 }
299 /* Now save the actual note */ 300 /* Now save the actual note */
300 switch (Note->Note) { 301 switch (Note->Note) {
301 case Note_C :fprintf(file,"c");break; 302 case Note_C :fprintf(file,"c");break;
302 case Note_Cis:fprintf(file,"c#");break; 303 case Note_Cis:fprintf(file,"c#");break;
303 case Note_D :fprintf(file,"d");break; 304 case Note_D :fprintf(file,"d");break;
304 case Note_Dis:fprintf(file,"d#");break; 305 case Note_Dis:fprintf(file,"d#");break;
305 case Note_E :fprintf(file,"e");break; 306 case Note_E :fprintf(file,"e");break;
306 case Note_F :fprintf(file,"f");break; 307 case Note_F :fprintf(file,"f");break;
307 case Note_Fis:fprintf(file,"f#");break; 308 case Note_Fis:fprintf(file,"f#");break;
308 case Note_G :fprintf(file,"g");break; 309 case Note_G :fprintf(file,"g");break;
309 case Note_Gis:fprintf(file,"g#");break; 310 case Note_Gis:fprintf(file,"g#");break;
310 case Note_A :fprintf(file,"a");break; 311 case Note_A :fprintf(file,"a");break;
311 case Note_Ais:fprintf(file,"a#");break; 312 case Note_Ais:fprintf(file,"a#");break;
312 case Note_H :fprintf(file,"h");break; 313 case Note_H :fprintf(file,"h");break;
313 default :fprintf(file,"p");break; /*Pause ?*/ 314 default :fprintf(file,"p");break; /*Pause ?*/
314 } 315 }
315 switch (Note->DurationSpec) { 316 switch (Note->DurationSpec) {
316 case DottedNote : fprintf(file,".");break; 317 case DottedNote : fprintf(file,".");break;
317 default : break; 318 default : break;
318 } 319 }
319 if (Note->Note!=Note_Pause && Note->Scale != DefNoteScale) { 320 if (Note->Note!=Note_Pause && Note->Scale != DefNoteScale) {
320 fprintf(file,"%i",Note->Scale); 321 fprintf(file,"%i",Note->Scale);
321 } 322 }
322 } 323 }
323 return ERR_NONE; 324 return ERR_NONE;
324} 325}
325 326
326void saveimelody(FILE *file, GSM_Ringtone *ringtone) 327void saveimelody(FILE *file, GSM_Ringtone *ringtone)
327{ 328{
328 char Buffer[2000]; 329 char Buffer[2000];
329 int i=2000; 330 int i=2000;
330 331
331 GSM_EncodeEMSSound(*ringtone, Buffer, &i, (float)1.2, true); 332 GSM_EncodeEMSSound(*ringtone, Buffer, &i, (float)1.2, true);
332 333
333 fwrite(Buffer, 1, i, file); 334 fwrite(Buffer, 1, i, file);
334} 335}
335 336
336#ifndef ENABLE_LGPL 337#ifndef ENABLE_LGPL
337 338
338static void WriteVarLen(unsigned char* midifile, int* current, long value) 339static void WriteVarLen(unsigned char* midifile, int* current, long value)
339{ 340{
340 long buffer; 341 long buffer;
341 342
342 buffer = value & 0x7f; 343 buffer = value & 0x7f;
343 344
344 while (value >>= 7) { 345 while (value >>= 7) {
345 buffer <<= 8; 346 buffer <<= 8;
346 buffer |= 0x80; 347 buffer |= 0x80;
347 buffer += (value & 0x7f); 348 buffer += (value & 0x7f);
348 } 349 }
349 350
350 while (1) { 351 while (1) {
351 midifile[(*current)++] = (unsigned char)buffer; 352 midifile[(*current)++] = (unsigned char)buffer;
352 if (buffer & 0x80) { 353 if (buffer & 0x80) {
353 buffer >>= 8; 354 buffer >>= 8;
354 } else { 355 } else {
355 break; 356 break;
356 } 357 }
357 } 358 }
358} 359}
359 360
360#define singlepauses 361#define singlepauses
361 362
362/* FIXME: need adding tempo before each note and scale too ? */ 363/* FIXME: need adding tempo before each note and scale too ? */
363void savemid(FILE* file, GSM_Ringtone *ringtone) 364void savemid(FILE* file, GSM_Ringtone *ringtone)
364{ 365{
365 int pause = 0, current = 26, duration, i, note=0, length = 20; 366 int pause = 0, current = 26, duration, i, note=0, length = 20;
366 bool started = false; 367 bool started = false;
367 GSM_RingNote *Note; 368 GSM_RingNote *Note;
368 unsigned char midifile[3000] = { 369 unsigned char midifile[3000] = {
369 0x4D, 0x54, 0x68, 0x64, // MThd 370 0x4D, 0x54, 0x68, 0x64, // MThd
370 0x00, 0x00, 0x00, 0x06, // chunk length 371 0x00, 0x00, 0x00, 0x06, // chunk length
371 0x00, 0x00, // format 0 372 0x00, 0x00, // format 0
372 0x00, 0x01, // one track 373 0x00, 0x01, // one track
373 0x00, 0x20, // 32 per quarter note 374 0x00, 0x20, // 32 per quarter note
374 0x4D, 0x54, 0x72, 0x6B, // MTrk 375 0x4D, 0x54, 0x72, 0x6B, // MTrk
375 0x00, 0x00, 0x00, 0x00, // chunk length 376 0x00, 0x00, 0x00, 0x00, // chunk length
376 0x00, 0xFF, 0x51, 0x03, // tempo meta event 377 0x00, 0xFF, 0x51, 0x03, // tempo meta event
377 0x00, 0x00, 0x00}; // 3 bytes for us for a quarter note 378 0x00, 0x00, 0x00}; // 3 bytes for us for a quarter note
378 379
379 for (i = 0; i < ringtone->NoteTone.NrCommands; i++) { 380 for (i = 0; i < ringtone->NoteTone.NrCommands; i++) {
380 if (ringtone->NoteTone.Commands[i].Type == RING_Note) { 381 if (ringtone->NoteTone.Commands[i].Type == RING_Note) {
381 Note = &ringtone->NoteTone.Commands[i].Note; 382 Note = &ringtone->NoteTone.Commands[i].Note;
382 if (!started) { 383 if (!started) {
383 /* readmid does not read pauses at the beginning */ 384 /* readmid does not read pauses at the beginning */
384 if (Note->Note != Note_Pause) { 385 if (Note->Note != Note_Pause) {
385 /* FIXME: we need add tempo before each note or so... */ 386 /* FIXME: we need add tempo before each note or so... */
386 long duration=60000000/Note->Tempo; 387 long duration=60000000/Note->Tempo;
387 388
388 midifile[current++] = (unsigned char)(duration >> 16); 389 midifile[current++] = (unsigned char)(duration >> 16);
389 midifile[current++] = (unsigned char)(duration >> 8); 390 midifile[current++] = (unsigned char)(duration >> 8);
390 midifile[current++] = (unsigned char)duration; 391 midifile[current++] = (unsigned char)duration;
391 392
392 started = true; 393 started = true;
393 } 394 }
394 } 395 }
395 if (!started) continue; 396 if (!started) continue;
396 duration = GSM_RingNoteGetFullDuration(*Note); 397 duration = GSM_RingNoteGetFullDuration(*Note);
397 if (Note->Note == Note_Pause) { 398 if (Note->Note == Note_Pause) {
398 pause += duration; 399 pause += duration;
399#ifdef singlepauses 400#ifdef singlepauses
400 WriteVarLen(midifile,&current,pause); 401 WriteVarLen(midifile,&current,pause);
401 pause=0; 402 pause=0;
402 midifile[current++]=0x00; // pause 403 midifile[current++]=0x00; // pause
403 midifile[current++]=0x00; 404 midifile[current++]=0x00;
404#endif 405#endif
405 } else { 406 } else {
406 if (Note->Note >= Note_C && Note->Note <= Note_H) { 407 if (Note->Note >= Note_C && Note->Note <= Note_H) {
407 note = Note->Note/16 + 12 * Note->Scale - 1; 408 note = Note->Note/16 + 12 * Note->Scale - 1;
408 } 409 }
409 410
410 WriteVarLen(midifile,&current,pause); 411 WriteVarLen(midifile,&current,pause);
411 pause=0; 412 pause=0;
412 midifile[current++]=0x90; // note on 413 midifile[current++]=0x90; // note on
413 midifile[current++]=note; 414 midifile[current++]=note;
414 midifile[current++]=0x64; // forte 415 midifile[current++]=0x64; // forte
415 416
416 WriteVarLen(midifile,&current,duration); 417 WriteVarLen(midifile,&current,duration);
417 midifile[current++]=0x80; // note off 418 midifile[current++]=0x80; // note off
418 midifile[current++]=note; 419 midifile[current++]=note;
419 midifile[current++]=0x64; 420 midifile[current++]=0x64;
420 } 421 }
421 } 422 }
422 } 423 }
423 if (pause) { 424 if (pause) {
424 WriteVarLen(midifile,&current,pause); 425 WriteVarLen(midifile,&current,pause);
425 midifile[current++]=0x00; // pause 426 midifile[current++]=0x00; // pause
426 midifile[current++]=0x00; // 427 midifile[current++]=0x00; //
427 } 428 }
428 midifile[current++] = 0x00; 429 midifile[current++] = 0x00;
429 midifile[current++] = 0xFF; // track end 430 midifile[current++] = 0xFF; // track end
430 midifile[current++] = 0x2F; 431 midifile[current++] = 0x2F;
431 midifile[current++] = 0x00; 432 midifile[current++] = 0x00;
432 midifile[length++] = (current-22) >> 8; 433 midifile[length++] = (current-22) >> 8;
433 midifile[length++] = current-22; 434 midifile[length++] = current-22;
434 435
435 fwrite(midifile,1,current,file); 436 fwrite(midifile,1,current,file);
436} 437}
437 438
438#endif 439#endif
439 440
440void saveott(FILE *file, GSM_Ringtone *ringtone) 441void saveott(FILE *file, GSM_Ringtone *ringtone)
441{ 442{
442 char Buffer[2000]; 443 char Buffer[2000];
443 int i=2000; 444 int i=2000;
444 445
445 GSM_EncodeNokiaRTTLRingtone(*ringtone, Buffer, &i); 446 GSM_EncodeNokiaRTTLRingtone(*ringtone, Buffer, &i);
446 447
447 fwrite(Buffer, 1, i, file); 448 fwrite(Buffer, 1, i, file);
448} 449}
449 450
450GSM_Error GSM_SaveRingtoneFile(char *FileName, GSM_Ringtone *ringtone) 451GSM_Error GSM_SaveRingtoneFile(char *FileName, GSM_Ringtone *ringtone)
451{ 452{
452 FILE *file; 453 FILE *file;
453 454
454 file = fopen(FileName, "wb"); 455 file = fopen(FileName, "wb");
455 if (file == NULL) return ERR_CANTOPENFILE; 456 if (file == NULL) return ERR_CANTOPENFILE;
456 457
457 switch (ringtone->Format) { 458 switch (ringtone->Format) {
458 case RING_NOTETONE: 459 case RING_NOTETONE:
459 if (strstr(FileName,".ott")) { 460 if (strstr(FileName,".ott")) {
460 saveott(file,ringtone); 461 saveott(file,ringtone);
461#ifndef ENABLE_LGPL 462#ifndef ENABLE_LGPL
462 } else if (strstr(FileName,".mid")) { 463 } else if (strstr(FileName,".mid")) {
463 savemid(file,ringtone); 464 savemid(file,ringtone);
464#endif 465#endif
465 } else if (strstr(FileName,".rng")) { 466 } else if (strstr(FileName,".rng")) {
466 saveott(file,ringtone); 467 saveott(file,ringtone);
467 } else if (strstr(FileName,".imy")) { 468 } else if (strstr(FileName,".imy")) {
468 saveimelody(file,ringtone); 469 saveimelody(file,ringtone);
469 } else if (strstr(FileName,".ime")) { 470 } else if (strstr(FileName,".ime")) {
470 saveimelody(file,ringtone); 471 saveimelody(file,ringtone);
471 } else if (strstr(FileName,".wav")) { 472 } else if (strstr(FileName,".wav")) {
472 savewav(file,ringtone); 473 savewav(file,ringtone);
473 } else { 474 } else {
474 saverttl(file, ringtone); 475 saverttl(file, ringtone);
475 } 476 }
476 break; 477 break;
477 case RING_NOKIABINARY: 478 case RING_NOKIABINARY:
478 savebin(file, ringtone); 479 savebin(file, ringtone);
479 break; 480 break;
480 case RING_MIDI: 481 case RING_MIDI:
481 savepuremidi(file, ringtone); 482 savepuremidi(file, ringtone);
482 break; 483 break;
483 } 484 }
484 485
485 fclose(file); 486 fclose(file);
486 487
487 return ERR_NONE; 488 return ERR_NONE;
488} 489}
489 490
490static GSM_Error loadrttl(FILE *file, GSM_Ringtone *ringtone) 491static GSM_Error loadrttl(FILE *file, GSM_Ringtone *ringtone)
491{ 492{
492 GSM_RingNoteScale DefNoteScale= Scale_880; 493 GSM_RingNoteScale DefNoteScale= Scale_880;
493 GSM_RingNoteDuration DefNoteDuration= Duration_1_4; 494 GSM_RingNoteDuration DefNoteDuration= Duration_1_4;
494 GSM_RingNoteStyle DefNoteStyle= NaturalStyle; 495 GSM_RingNoteStyle DefNoteStyle= NaturalStyle;
495 int DefNoteTempo= 63, i=0; 496 int DefNoteTempo= 63, i=0;
496 497
497 unsigned char buffer[2000],Name[100]; 498 unsigned char buffer[2000],Name[100];
498 GSM_RingNote *Note; 499 GSM_RingNote *Note;
499 500
500 fread(buffer, 2000, 1, file); 501 fread(buffer, 2000, 1, file);
501 502
502 ringtone->NoteTone.NrCommands = 0; 503 ringtone->NoteTone.NrCommands = 0;
503 504
504 /* -------------- name ---------------- */ 505 /* -------------- name ---------------- */
505 while (buffer[i] != ':') { 506 while (buffer[i] != ':') {
506 if (buffer[i] == 0x00) return ERR_NONE; 507 if (buffer[i] == 0x00) return ERR_NONE;
507 i++; 508 i++;
508 } 509 }
509 if (i == 0) { 510 if (i == 0) {
510 /* This is for RTTL ringtones without name. */ 511 /* This is for RTTL ringtones without name. */
511 EncodeUnicode(ringtone->Name,"Gammu",5); 512 EncodeUnicode(ringtone->Name,"Gammu",5);
512 } else { 513 } else {
513 memcpy(Name,buffer,i); 514 memcpy(Name,buffer,i);
514 Name[i] = 0x00; 515 Name[i] = 0x00;
515 EncodeUnicode(ringtone->Name,Name,strlen(Name)); 516 EncodeUnicode(ringtone->Name,Name,strlen(Name));
516 } 517 }
517 i++; 518 i++;
518 519
519 /* --------- section with default ringtone settings ----------- */ 520 /* --------- section with default ringtone settings ----------- */
520 while(1) { 521 while(1) {
521 switch (buffer[i]) { 522 switch (buffer[i]) {
522 case ':': 523 case ':':
523 break; 524 break;
524 case 0x00: 525 case 0x00:
525 return ERR_NONE; 526 return ERR_NONE;
526 case 'd': case 'D': 527 case 'd': case 'D':
527 switch (atoi(buffer+i+2)) { 528 switch (atoi(buffer+i+2)) {
528 case 1: DefNoteDuration = Duration_Full; break; 529 case 1: DefNoteDuration = Duration_Full; break;
529 case 2: DefNoteDuration = Duration_1_2 ; break; 530 case 2: DefNoteDuration = Duration_1_2 ; break;
530 case 4: DefNoteDuration = Duration_1_4 ; break; 531 case 4: DefNoteDuration = Duration_1_4 ; break;
531 case 8: DefNoteDuration = Duration_1_8 ; break; 532 case 8: DefNoteDuration = Duration_1_8 ; break;
532 case 16: DefNoteDuration = Duration_1_16; break; 533 case 16: DefNoteDuration = Duration_1_16; break;
533 case 32: DefNoteDuration = Duration_1_32; break; 534 case 32: DefNoteDuration = Duration_1_32; break;
534 } 535 }
535 break; 536 break;
536 case 'o': case 'O': 537 case 'o': case 'O':
537 switch (atoi(buffer+i+2)) { 538 switch (atoi(buffer+i+2)) {
538 case 4: DefNoteScale = Scale_440 ; break; 539 case 4: DefNoteScale = Scale_440 ; break;
539 case 5: DefNoteScale = Scale_880 ; break; 540 case 5: DefNoteScale = Scale_880 ; break;
540 case 6: DefNoteScale = Scale_1760; break; 541 case 6: DefNoteScale = Scale_1760; break;
541 case 7: DefNoteScale = Scale_3520; break; 542 case 7: DefNoteScale = Scale_3520; break;
542 } 543 }
543 break; 544 break;
544 case 'b': case 'B': 545 case 'b': case 'B':
545 DefNoteTempo=atoi(buffer+i+2); 546 DefNoteTempo=atoi(buffer+i+2);
546 dbgprintf("Tempo = %i\n",DefNoteTempo); 547 dbgprintf("Tempo = %i\n",DefNoteTempo);
547 break; 548 break;
548 case 's': case 'S': 549 case 's': case 'S':
549 switch (buffer[i+1]) { 550 switch (buffer[i+1]) {
550 case 'C': case 'c': DefNoteStyle=ContinuousStyle;break; 551 case 'C': case 'c': DefNoteStyle=ContinuousStyle;break;
551 case 'N': case 'n': DefNoteStyle=NaturalStyle; break; 552 case 'N': case 'n': DefNoteStyle=NaturalStyle; break;
552 case 'S': case 's': DefNoteStyle=StaccatoStyle; break; 553 case 'S': case 's': DefNoteStyle=StaccatoStyle; break;
553 } 554 }
554 switch (buffer[i+2]) { 555 switch (buffer[i+2]) {
555 case 'C': case 'c': DefNoteStyle=ContinuousStyle;break; 556 case 'C': case 'c': DefNoteStyle=ContinuousStyle;break;
556 case 'N': case 'n': DefNoteStyle=NaturalStyle; break; 557 case 'N': case 'n': DefNoteStyle=NaturalStyle; break;
557 case 'S': case 's': DefNoteStyle=StaccatoStyle; break; 558 case 'S': case 's': DefNoteStyle=StaccatoStyle; break;
558 } 559 }
559 break; 560 break;
560 } 561 }
561 while (buffer[i] != ':' && buffer[i] != ',') { 562 while (buffer[i] != ':' && buffer[i] != ',') {
562 if (buffer[i] == 0x00) return ERR_NONE; 563 if (buffer[i] == 0x00) return ERR_NONE;
563 i++; 564 i++;
564 } 565 }
565 if (buffer[i] == ',') i++; 566 if (buffer[i] == ',') i++;
566 if (buffer[i] == ':') break; 567 if (buffer[i] == ':') break;
567 } 568 }
568 dbgprintf("DefNoteDuration=%d\n", DefNoteDuration); 569 dbgprintf("DefNoteDuration=%d\n", DefNoteDuration);
569 dbgprintf("DefNoteScale=%d\n", DefNoteScale); 570 dbgprintf("DefNoteScale=%d\n", DefNoteScale);
570 i++; 571 i++;
571 572
572 /* ------------------------- notes ------------------------------ */ 573 /* ------------------------- notes ------------------------------ */
573 while (buffer[i] != 0x00 && ringtone->NoteTone.NrCommands != MAX_RINGTONE_NOTES) { 574 while (buffer[i] != 0x00 && ringtone->NoteTone.NrCommands != MAX_RINGTONE_NOTES) {
574 switch(buffer[i]) { 575 switch(buffer[i]) {
575 case 'z': case 'Z': 576 case 'z': case 'Z':
576 switch (buffer[i+1]) { 577 switch (buffer[i+1]) {
577 case 'd': 578 case 'd':
578 ringtone->NoteTone.Commands[ringtone->NoteTone.NrCommands].Type = RING_DisableLED; 579 ringtone->NoteTone.Commands[ringtone->NoteTone.NrCommands].Type = RING_DisableLED;
579 ringtone->NoteTone.NrCommands++; 580 ringtone->NoteTone.NrCommands++;
580 break; 581 break;
581 case 'D': 582 case 'D':
582 ringtone->NoteTone.Commands[ringtone->NoteTone.NrCommands].Type = RING_EnableLED; 583 ringtone->NoteTone.Commands[ringtone->NoteTone.NrCommands].Type = RING_EnableLED;
583 ringtone->NoteTone.NrCommands++; 584 ringtone->NoteTone.NrCommands++;
584 break; 585 break;
585 case 'v': 586 case 'v':
586 ringtone->NoteTone.Commands[ringtone->NoteTone.NrCommands].Type = RING_DisableVibra; 587 ringtone->NoteTone.Commands[ringtone->NoteTone.NrCommands].Type = RING_DisableVibra;
587 ringtone->NoteTone.NrCommands++; 588 ringtone->NoteTone.NrCommands++;
588 break; 589 break;
589 case 'V': 590 case 'V':
590 ringtone->NoteTone.Commands[ringtone->NoteTone.NrCommands].Type = RING_EnableVibra; 591 ringtone->NoteTone.Commands[ringtone->NoteTone.NrCommands].Type = RING_EnableVibra;
591 ringtone->NoteTone.NrCommands++; 592 ringtone->NoteTone.NrCommands++;
592 break; 593 break;
593 case 'l': 594 case 'l':
594 ringtone->NoteTone.Commands[ringtone->NoteTone.NrCommands].Type = RING_DisableLight; 595 ringtone->NoteTone.Commands[ringtone->NoteTone.NrCommands].Type = RING_DisableLight;
595 ringtone->NoteTone.NrCommands++; 596 ringtone->NoteTone.NrCommands++;
596 break; 597 break;
597 case 'L': 598 case 'L':
598 ringtone->NoteTone.Commands[ringtone->NoteTone.NrCommands].Type = RING_EnableLight; 599 ringtone->NoteTone.Commands[ringtone->NoteTone.NrCommands].Type = RING_EnableLight;
599 ringtone->NoteTone.NrCommands++; 600 ringtone->NoteTone.NrCommands++;
600 } 601 }
601 break; 602 break;
602 case 'o': case 'O': 603 case 'o': case 'O':
603 switch (buffer[i+2]) { 604 switch (buffer[i+2]) {
604 case 4: DefNoteScale = Scale_440 ; break; 605 case 4: DefNoteScale = Scale_440 ; break;
605 case 5: DefNoteScale = Scale_880 ; break; 606 case 5: DefNoteScale = Scale_880 ; break;
606 case 6: DefNoteScale = Scale_1760; break; 607 case 6: DefNoteScale = Scale_1760; break;
607 case 7: DefNoteScale = Scale_3520; break; 608 case 7: DefNoteScale = Scale_3520; break;
608 } 609 }
609 break; 610 break;
610 case 's': case 'S': 611 case 's': case 'S':
611 switch (buffer[i+1]) { 612 switch (buffer[i+1]) {
612 case 'C': case 'c': DefNoteStyle=ContinuousStyle;break; 613 case 'C': case 'c': DefNoteStyle=ContinuousStyle;break;
613 case 'N': case 'n': DefNoteStyle=NaturalStyle; break; 614 case 'N': case 'n': DefNoteStyle=NaturalStyle; break;
614 case 'S': case 's': DefNoteStyle=StaccatoStyle; break; 615 case 'S': case 's': DefNoteStyle=StaccatoStyle; break;
615 } 616 }
616 switch (buffer[i+2]) { 617 switch (buffer[i+2]) {
617 case 'C': case 'c': DefNoteStyle=ContinuousStyle;break; 618 case 'C': case 'c': DefNoteStyle=ContinuousStyle;break;
618 case 'N': case 'n': DefNoteStyle=NaturalStyle; break; 619 case 'N': case 'n': DefNoteStyle=NaturalStyle; break;
619 case 'S': case 's': DefNoteStyle=StaccatoStyle; break; 620 case 'S': case 's': DefNoteStyle=StaccatoStyle; break;
620 } 621 }
621 break; 622 break;
622 default: 623 default:
623 ringtone->NoteTone.Commands[ringtone->NoteTone.NrCommands].Type = RING_Note; 624 ringtone->NoteTone.Commands[ringtone->NoteTone.NrCommands].Type = RING_Note;
624 Note = &ringtone->NoteTone.Commands[ringtone->NoteTone.NrCommands].Note; 625 Note = &ringtone->NoteTone.Commands[ringtone->NoteTone.NrCommands].Note;
625 Note->Style = DefNoteStyle; 626 Note->Style = DefNoteStyle;
626 Note->Tempo = DefNoteTempo; 627 Note->Tempo = DefNoteTempo;
627 Note->Scale = DefNoteScale; 628 Note->Scale = DefNoteScale;
628 Note->Duration = DefNoteDuration; 629 Note->Duration = DefNoteDuration;
629 Note->DurationSpec = NoSpecialDuration; 630 Note->DurationSpec = NoSpecialDuration;
630 Note->Note = Note_Pause; 631 Note->Note = Note_Pause;
631 632
632 /* Duration */ 633 /* Duration */
633 switch (atoi(buffer+i)) { 634 switch (atoi(buffer+i)) {
634 case 1: Note->Duration = Duration_Full ; break; 635 case 1: Note->Duration = Duration_Full ; break;
635 case 2: Note->Duration = Duration_1_2 ; break; 636 case 2: Note->Duration = Duration_1_2 ; break;
636 case 4: Note->Duration = Duration_1_4 ; break; 637 case 4: Note->Duration = Duration_1_4 ; break;
637 case 8: Note->Duration = Duration_1_8 ; break; 638 case 8: Note->Duration = Duration_1_8 ; break;
638 case 16: Note->Duration = Duration_1_16 ; break; 639 case 16: Note->Duration = Duration_1_16 ; break;
639 case 32: Note->Duration = Duration_1_32 ; break; 640 case 32: Note->Duration = Duration_1_32 ; break;
640 } 641 }
641 /* We skip all numbers from duration specification */ 642 /* We skip all numbers from duration specification */
642 while(isdigit(buffer[i])) i++; 643 while(isdigit(buffer[i])) i++;
643 644
644 /* Some files can have special duration here */ 645 /* Some files can have special duration here */
645 if (buffer[i]=='.') { 646 if (buffer[i]=='.') {
646 Note->DurationSpec = DottedNote; 647 Note->DurationSpec = DottedNote;
647 i++; 648 i++;
648 } 649 }
649 650
650 /* Note */ 651 /* Note */
651 /* B or b is not in specs, but I decided to put it, because 652 /* B or b is not in specs, but I decided to put it, because
652 * it's in some RTTL files. It's the same to H note */ 653 * it's in some RTTL files. It's the same to H note */
653 switch (buffer[i]) { 654 switch (buffer[i]) {
654 case 'A': case 'a': Note->Note = Note_A; break; 655 case 'A': case 'a': Note->Note = Note_A; break;
655 case 'B': case 'b': Note->Note = Note_H; break; 656 case 'B': case 'b': Note->Note = Note_H; break;
656 case 'C': case 'c': Note->Note = Note_C; break; 657 case 'C': case 'c': Note->Note = Note_C; break;
657 case 'D': case 'd': Note->Note = Note_D; break; 658 case 'D': case 'd': Note->Note = Note_D; break;
658 case 'E': case 'e': Note->Note = Note_E; break; 659 case 'E': case 'e': Note->Note = Note_E; break;
659 case 'F': case 'f': Note->Note = Note_F; break; 660 case 'F': case 'f': Note->Note = Note_F; break;
660 case 'G': case 'g': Note->Note = Note_G; break; 661 case 'G': case 'g': Note->Note = Note_G; break;
661 case 'H': case 'h': Note->Note = Note_H; break; 662 case 'H': case 'h': Note->Note = Note_H; break;
662 } 663 }
663 i++; 664 i++;
664 665
665 if (buffer[i]=='#') { 666 if (buffer[i]=='#') {
666 switch (Note->Note) { 667 switch (Note->Note) {
667 case Note_A : Note->Note = Note_Ais; break; 668 case Note_A : Note->Note = Note_Ais; break;
668 case Note_C : Note->Note = Note_Cis; break; 669 case Note_C : Note->Note = Note_Cis; break;
669 case Note_D : Note->Note = Note_Dis; break; 670 case Note_D : Note->Note = Note_Dis; break;
670 case Note_F : Note->Note = Note_Fis; break; 671 case Note_F : Note->Note = Note_Fis; break;
671 case Note_G : Note->Note = Note_Gis; break; 672 case Note_G : Note->Note = Note_Gis; break;
672 default : break; 673 default : break;
673 } 674 }
674 i++; 675 i++;
675 } 676 }
676 677
677 /* Some files can have special duration here */ 678 /* Some files can have special duration here */
678 if (buffer[i]=='.') { 679 if (buffer[i]=='.') {
679 Note->DurationSpec = DottedNote; 680 Note->DurationSpec = DottedNote;
680 i++; 681 i++;
681 } 682 }
682 683
683 /* Scale */ 684 /* Scale */
684 if (Note->Note!=Note_Pause && isdigit(buffer[i])) { 685 if (Note->Note!=Note_Pause && isdigit(buffer[i])) {
685 switch (atoi(buffer+i)) { 686 switch (atoi(buffer+i)) {
686 case 4: Note->Scale = Scale_440 ; break; 687 case 4: Note->Scale = Scale_440 ; break;
687 case 5: Note->Scale = Scale_880 ; break; 688 case 5: Note->Scale = Scale_880 ; break;
688 case 6: Note->Scale = Scale_1760; break; 689 case 6: Note->Scale = Scale_1760; break;
689 case 7: Note->Scale = Scale_3520; break; 690 case 7: Note->Scale = Scale_3520; break;
690 } 691 }
691 i++; 692 i++;
692 } 693 }
693 694
694 ringtone->NoteTone.NrCommands++; 695 ringtone->NoteTone.NrCommands++;
695 break; 696 break;
696 } 697 }
697 while (buffer[i] != ',') { 698 while (buffer[i] != ',') {
698 if (buffer[i] == 0x00) return ERR_NONE; 699 if (buffer[i] == 0x00) return ERR_NONE;
699 i++; 700 i++;
700 } 701 }
701 if (buffer[i] == ',') i++; 702 if (buffer[i] == ',') i++;
702 } 703 }
703 704
704 return ERR_NONE; 705 return ERR_NONE;
705} 706}
706 707
707static GSM_Error loadott(FILE *file, GSM_Ringtone *ringtone) 708static GSM_Error loadott(FILE *file, GSM_Ringtone *ringtone)
708{ 709{
709 char Buffer[2000]; 710 char Buffer[2000];
710 int i; 711 int i;
711 712
712 i=fread(Buffer, 1, 2000, file); 713 i=fread(Buffer, 1, 2000, file);
713 714
714 return GSM_DecodeNokiaRTTLRingtone(ringtone, Buffer, i); 715 return GSM_DecodeNokiaRTTLRingtone(ringtone, Buffer, i);
715} 716}
716 717
717static GSM_Error loadcommunicator(FILE *file, GSM_Ringtone *ringtone) 718static GSM_Error loadcommunicator(FILE *file, GSM_Ringtone *ringtone)
718{ 719{
719 char Buffer[4000]; 720 char Buffer[4000];
720 int i,j; 721 int i,j;
721 722
722 i=fread(Buffer, 1, 4000, file); 723 i=fread(Buffer, 1, 4000, file);
723 724
724 i=0;j=0; 725 i=0;j=0;
725 while (true) { 726 while (true) {
726 if (Buffer[j] ==0x00 && Buffer[j+1]==0x02 && 727 if (Buffer[j] ==0x00 && Buffer[j+1]==0x02 &&
727 Buffer[j+2]==0x4a && Buffer[j+3]==0x3a) break; 728 Buffer[j+2]==0x4a && Buffer[j+3]==0x3a) break;
728 if (j==i-4) return ERR_UNKNOWN; 729 if (j==i-4) return ERR_UNKNOWN;
729 j++; 730 j++;
730 } 731 }
731 j++; 732 j++;
732 733
733 return GSM_DecodeNokiaRTTLRingtone(ringtone, Buffer+j, i-j); 734 return GSM_DecodeNokiaRTTLRingtone(ringtone, Buffer+j, i-j);
734} 735}
735 736
736static GSM_Error loadbin(FILE *file, GSM_Ringtone *ringtone) 737static GSM_Error loadbin(FILE *file, GSM_Ringtone *ringtone)
737{ 738{
738 int i; 739 int i;
739 unsigned charbuffer[2000]; 740 unsigned charbuffer[2000];
740 741
741 dbgprintf("loading binary\n"); 742 dbgprintf("loading binary\n");
742 ringtone->NokiaBinary.Length=fread(buffer, 1, 500, file); 743 ringtone->NokiaBinary.Length=fread(buffer, 1, 500, file);
743 i=5; 744 i=5;
744 while (buffer[i]!=0x00) i++; 745 while (buffer[i]!=0x00) i++;
745 EncodeUnicode(ringtone->Name,buffer+5,i-5); 746 EncodeUnicode(ringtone->Name,buffer+5,i-5);
746 while (buffer[i]!=0x02 && buffer[i+1]!=0xFC && buffer[i+2]!=0x09) { 747 while (buffer[i]!=0x02 && buffer[i+1]!=0xFC && buffer[i+2]!=0x09) {
747 i++; 748 i++;
748 } 749 }
749 ringtone->NokiaBinary.Length=ringtone->NokiaBinary.Length-i; 750 ringtone->NokiaBinary.Length=ringtone->NokiaBinary.Length-i;
750 memcpy(ringtone->NokiaBinary.Frame,buffer+i,ringtone->NokiaBinary.Length); 751 memcpy(ringtone->NokiaBinary.Frame,buffer+i,ringtone->NokiaBinary.Length);
751 dbgprintf("Length %i name \"%s\"\n",ringtone->NokiaBinary.Length,DecodeUnicodeString(ringtone->Name)); 752 dbgprintf("Length %i name \"%s\"\n",ringtone->NokiaBinary.Length,DecodeUnicodeString(ringtone->Name));
752 return ERR_NONE; 753 return ERR_NONE;
753} 754}
754 755
755static GSM_Error loadpuremidi(FILE *file, GSM_Ringtone *ringtone) 756static GSM_Error loadpuremidi(FILE *file, GSM_Ringtone *ringtone)
756{ 757{
757 unsigned char buffer[30000]; 758 unsigned char buffer[30000];
758 759
759 dbgprintf("loading midi\n"); 760 dbgprintf("loading midi\n");
760 EncodeUnicode(ringtone->Name,"MIDI",4); 761 EncodeUnicode(ringtone->Name,"MIDI",4);
761 ringtone->NokiaBinary.Length=fread(buffer, 1, 30000, file); 762 ringtone->NokiaBinary.Length=fread(buffer, 1, 30000, file);
762 memcpy(ringtone->NokiaBinary.Frame,buffer,ringtone->NokiaBinary.Length); 763 memcpy(ringtone->NokiaBinary.Frame,buffer,ringtone->NokiaBinary.Length);
763 dbgprintf("Length %i name \"%s\"\n",ringtone->NokiaBinary.Length,DecodeUnicodeString(ringtone->Name)); 764 dbgprintf("Length %i name \"%s\"\n",ringtone->NokiaBinary.Length,DecodeUnicodeString(ringtone->Name));
764 return ERR_NONE; 765 return ERR_NONE;
765} 766}
766 767
767static GSM_Error loadre(FILE *file, GSM_Ringtone *ringtone) 768static GSM_Error loadre(FILE *file, GSM_Ringtone *ringtone)
768{ 769{
769 unsigned char buffer[2000]; 770 unsigned char buffer[2000];
770 771
771 ringtone->NokiaBinary.Length=fread(buffer, 1, 500, file); 772 ringtone->NokiaBinary.Length=fread(buffer, 1, 500, file);
772 773
773 if (buffer[18]==0x00 && buffer[21]!=0x02) { 774 if (buffer[18]==0x00 && buffer[21]!=0x02) {
774 /* DCT3, Unicode subformat, 62xx & 7110 */ 775 /* DCT3, Unicode subformat, 62xx & 7110 */
775 CopyUnicodeString(ringtone->Name,buffer+18); 776 CopyUnicodeString(ringtone->Name,buffer+18);
776 ringtone->NokiaBinary.Length = ringtone->NokiaBinary.Length - (21+UnicodeLength(ringtone->Name)*2); 777 ringtone->NokiaBinary.Length = ringtone->NokiaBinary.Length - (21+UnicodeLength(ringtone->Name)*2);
777 memcpy(ringtone->NokiaBinary.Frame,buffer+21+UnicodeLength(ringtone->Name)*2,ringtone->NokiaBinary.Length); 778 memcpy(ringtone->NokiaBinary.Frame,buffer+21+UnicodeLength(ringtone->Name)*2,ringtone->NokiaBinary.Length);
778 } else { 779 } else {
779 /* DCT3, normal subformat, 32xx/33xx/51xx/5210/5510/61xx/8xxx */ 780 /* DCT3, normal subformat, 32xx/33xx/51xx/5210/5510/61xx/8xxx */
780 EncodeUnicode(ringtone->Name,buffer+17,buffer[16]); 781 EncodeUnicode(ringtone->Name,buffer+17,buffer[16]);
781 ringtone->NokiaBinary.Length = ringtone->NokiaBinary.Length - (19+UnicodeLength(ringtone->Name)); 782 ringtone->NokiaBinary.Length = ringtone->NokiaBinary.Length - (19+UnicodeLength(ringtone->Name));
782 memcpy(ringtone->NokiaBinary.Frame,buffer+19+UnicodeLength(ringtone->Name),ringtone->NokiaBinary.Length); 783 memcpy(ringtone->NokiaBinary.Frame,buffer+19+UnicodeLength(ringtone->Name),ringtone->NokiaBinary.Length);
783 } 784 }
784 dbgprintf("Name \"%s\"\n",DecodeUnicodeString(ringtone->Name)); 785 dbgprintf("Name \"%s\"\n",DecodeUnicodeString(ringtone->Name));
785 return ERR_NONE; 786 return ERR_NONE;
786} 787}
787 788
788GSM_Error GSM_ReadRingtoneFile(char *FileName, GSM_Ringtone *ringtone) 789GSM_Error GSM_ReadRingtoneFile(char *FileName, GSM_Ringtone *ringtone)
789{ 790{
790 FILE *file; 791 FILE *file;
791 unsigned charbuffer[300]; 792 unsigned charbuffer[300];
792 GSM_Errorerror = ERR_UNKNOWN; 793 GSM_Errorerror = ERR_UNKNOWN;
793 794
794 dbgprintf("Loading ringtone %s\n",FileName); 795 dbgprintf("Loading ringtone %s\n",FileName);
795 file = fopen(FileName, "rb"); 796 file = fopen(FileName, "rb");
796 if (file == NULL) return ERR_CANTOPENFILE; 797 if (file == NULL) return ERR_CANTOPENFILE;
797 798
798 /* Read the header of the file. */ 799 /* Read the header of the file. */
799 fread(buffer, 1, 4, file); 800 fread(buffer, 1, 4, file);
800 if (ringtone->Format == 0x00) { 801 if (ringtone->Format == 0x00) {
801 ringtone->Format = RING_NOTETONE; 802 ringtone->Format = RING_NOTETONE;
802 if (buffer[0]==0x00 && buffer[1]==0x00 && 803 if (buffer[0]==0x00 && buffer[1]==0x00 &&
803 buffer[2]==0x0C && buffer[3]==0x01) { 804 buffer[2]==0x0C && buffer[3]==0x01) {
804 ringtone->Format = RING_NOKIABINARY; 805 ringtone->Format = RING_NOKIABINARY;
805 } 806 }
806 if (buffer[0]==0x00 && buffer[1]==0x00 && 807 if (buffer[0]==0x00 && buffer[1]==0x00 &&
807 buffer[2]==0x00) { 808 buffer[2]==0x00) {
808 ringtone->Format = RING_NOKIABINARY; 809 ringtone->Format = RING_NOKIABINARY;
809 } 810 }
810 if (buffer[0]==0x4D && buffer[1]==0x54 && 811 if (buffer[0]==0x4D && buffer[1]==0x54 &&
811 buffer[2]==0x68 && buffer[3]==0x64) { 812 buffer[2]==0x68 && buffer[3]==0x64) {
812 ringtone->Format = RING_MIDI; 813 ringtone->Format = RING_MIDI;
813 } 814 }
814 } 815 }
815 rewind(file); 816 rewind(file);
816 switch (ringtone->Format) { 817 switch (ringtone->Format) {
817 case RING_NOTETONE: 818 case RING_NOTETONE:
818 if (buffer[0]==0x02 && buffer[1]==0x4A) { 819 if (buffer[0]==0x02 && buffer[1]==0x4A) {
819 error=loadott(file,ringtone); 820 error=loadott(file,ringtone);
820 } else if (buffer[0]==0xC7 && buffer[1]==0x45) { 821 } else if (buffer[0]==0xC7 && buffer[1]==0x45) {
821 error=loadcommunicator(file,ringtone); 822 error=loadcommunicator(file,ringtone);
822 } else { 823 } else {
823 error=loadrttl(file,ringtone); 824 error=loadrttl(file,ringtone);
824 } 825 }
825 ringtone->NoteTone.AllNotesScale=false; 826 ringtone->NoteTone.AllNotesScale=false;
826 break; 827 break;
827 case RING_NOKIABINARY: 828 case RING_NOKIABINARY:
828 if (buffer[0]==0x00 && buffer[1]==0x00 && 829 if (buffer[0]==0x00 && buffer[1]==0x00 &&
829 buffer[2]==0x0C && buffer[3]==0x01) { 830 buffer[2]==0x0C && buffer[3]==0x01) {
830 error=loadbin(file,ringtone); 831 error=loadbin(file,ringtone);
831 } 832 }
832 if (buffer[0]==0x00 && buffer[1]==0x00 && 833 if (buffer[0]==0x00 && buffer[1]==0x00 &&
833 buffer[2]==0x00) { 834 buffer[2]==0x00) {
834 error=loadre(file,ringtone); 835 error=loadre(file,ringtone);
835 } 836 }
836 break; 837 break;
837 case RING_MIDI: 838 case RING_MIDI:
838 EncodeUnicode(ringtone->Name,FileName,strlen(FileName)); 839 EncodeUnicode(ringtone->Name,FileName,strlen(FileName));
839 error = loadpuremidi(file,ringtone); 840 error = loadpuremidi(file,ringtone);
840 } 841 }
841 fclose(file); 842 fclose(file);
842 return(error); 843 return(error);
843} 844}
844 845
845/* -------------------------- required with Nokia & RTTL ------------------- */ 846/* -------------------------- required with Nokia & RTTL ------------------- */
846 847
847/* Beats per Minute like written in Smart Messaging */ 848/* Beats per Minute like written in Smart Messaging */
848static int SM_BeatsPerMinute[] = { 849static int SM_BeatsPerMinute[] = {
849 25, 28, 31, 35, 40, 45, 50, 56, 63,70, 850 25, 28, 31, 35, 40, 45, 50, 56, 63,70,
850 80, 90, 100, 112, 125, 140, 160, 180, 200,225, 851 80, 90, 100, 112, 125, 140, 160, 180, 200,225,
851 250, 285, 320, 355, 400, 450, 500, 565, 635,715, 852 250, 285, 320, 355, 400, 450, 500, 565, 635,715,
852 800,900 853 800,900
853}; 854};
854 855
855int GSM_RTTLGetTempo(int Beats) 856int GSM_RTTLGetTempo(int Beats)
856{ 857{
857 int i=0; 858 int i=0;
858 859
859 while (Beats > SM_BeatsPerMinute[i] && SM_BeatsPerMinute[i] != 900) i++; 860 while (Beats > SM_BeatsPerMinute[i] && SM_BeatsPerMinute[i] != 900) i++;
860 861
861 return i<<3; 862 return i<<3;
862} 863}
863 864
864/* This function packs the ringtone from the structure "ringtone" to 865/* This function packs the ringtone from the structure "ringtone" to
865 "package", where maxlength means length of package. 866 "package", where maxlength means length of package.
866 Function returns number of packed notes and change maxlength to 867 Function returns number of packed notes and change maxlength to
867 number of used chars in "package" */ 868 number of used chars in "package" */
868unsigned char GSM_EncodeNokiaRTTLRingtone(GSM_Ringtone ringtone, unsigned char *package, int *maxlength) 869unsigned char GSM_EncodeNokiaRTTLRingtone(GSM_Ringtone ringtone, unsigned char *package, int *maxlength)
869{ 870{
870 unsigned char CommandLength = 0x02; 871 unsigned char CommandLength = 0x02;
871 unsigned char Loop = 0x15;/* Infinite */ 872 unsigned char Loop = 0x15;/* Infinite */
872 873
873 unsigned char Buffer[200]; 874 unsigned char Buffer[200];
874 int StartBit=0, OldStartBit; 875 int StartBit=0, OldStartBit;
875 int StartBitHowManyCommands; 876 int StartBitHowManyCommands;
diff --git a/gammu/emb/gammu/gammu.pro b/gammu/emb/gammu/gammu.pro
index 6efc8e7..299de7f 100644
--- a/gammu/emb/gammu/gammu.pro
+++ b/gammu/emb/gammu/gammu.pro
@@ -1,53 +1,52 @@
1###################################################################### 1######################################################################
2# Automatically generated by qmake (1.07a) Fri Jul 30 22:22:02 2004 2# Automatically generated by qmake (1.07a) Fri Jul 30 22:22:02 2004
3###################################################################### 3######################################################################
4 4
5TEMPLATE = app 5TEMPLATE = app
6CONFIG += console
7DEPENDPATH += msvc06.mak \ 6DEPENDPATH += msvc06.mak \
8 msvc2003.mak \ 7 msvc2003.mak \
9 smsd \ 8 smsd \
10 depend/nokia \ 9 depend/nokia \
11 depend/siemens \ 10 depend/siemens \
12 depend/nokia/dct3trac 11 depend/nokia/dct3trac
13INCLUDEPATH += . smsd depend/nokia depend/nokia/dct3trac depend/siemens 12INCLUDEPATH += . smsd depend/nokia depend/nokia/dct3trac depend/siemens
14 CONFIG = qt warn_off release 13 CONFIG = warn_off release console
15# Input 14# Input
16 15
17HEADERS += gammu.h \ 16HEADERS += gammu.h \
18 sniff.h \ 17 sniff.h \
19 smsd/s_files.h \ 18 smsd/s_files.h \
20 smsd/s_mysql.h \ 19 smsd/s_mysql.h \
21 smsd/smsdcore.h \ 20 smsd/smsdcore.h \
22 depend/nokia/dct3.h \ 21 depend/nokia/dct3.h \
23 depend/nokia/dct4.h \ 22 depend/nokia/dct4.h \
24 depend/siemens/chiffre.h \ 23 depend/siemens/chiffre.h \
25 depend/siemens/dsiemens.h \ 24 depend/siemens/dsiemens.h \
26 depend/nokia/dct3trac/type-cc.h \ 25 depend/nokia/dct3trac/type-cc.h \
27 depend/nokia/dct3trac/type-mm.h \ 26 depend/nokia/dct3trac/type-mm.h \
28 depend/nokia/dct3trac/type-rr.h \ 27 depend/nokia/dct3trac/type-rr.h \
29 depend/nokia/dct3trac/type-sms.h \ 28 depend/nokia/dct3trac/type-sms.h \
30 depend/nokia/dct3trac/type-ss.h \ 29 depend/nokia/dct3trac/type-ss.h \
31 depend/nokia/dct3trac/wmx-gsm.h \ 30 depend/nokia/dct3trac/wmx-gsm.h \
32 depend/nokia/dct3trac/wmx-list.h \ 31 depend/nokia/dct3trac/wmx-list.h \
33 depend/nokia/dct3trac/wmx-sim.h \ 32 depend/nokia/dct3trac/wmx-sim.h \
34 depend/nokia/dct3trac/wmx-util.h \ 33 depend/nokia/dct3trac/wmx-util.h \
35 depend/nokia/dct3trac/wmx.h 34 depend/nokia/dct3trac/wmx.h
36SOURCES += gammu.c \ 35SOURCES += gammu.c \
37 sniff.c \ 36 sniff.c \
38 smsd/s_files.c \ 37 smsd/s_files.c \
39 smsd/smsdcore.c \ 38 smsd/smsdcore.c \
40 depend/nokia/dct3.c \ 39 depend/nokia/dct3.c \
41 depend/nokia/dct4.c \ 40 depend/nokia/dct4.c \
42 depend/siemens/chiffre.c \ 41 depend/siemens/chiffre.c \
43 depend/siemens/dsiemens.c \ 42 depend/siemens/dsiemens.c \
44 depend/nokia/dct3trac/wmx-gsm.c \ 43 depend/nokia/dct3trac/wmx-gsm.c \
45 depend/nokia/dct3trac/wmx-list.c \ 44 depend/nokia/dct3trac/wmx-list.c \
46 depend/nokia/dct3trac/wmx-sim.c \ 45 depend/nokia/dct3trac/wmx-sim.c \
47 depend/nokia/dct3trac/wmx-util.c \ 46 depend/nokia/dct3trac/wmx-util.c \
48 depend/nokia/dct3trac/wmx.c 47 depend/nokia/dct3trac/wmx.c
49 48
50LIBS += ../../../bin/libmicrogammu.so /usr/lib/libbluetooth.so /usr/lib/libsdp.so /usr/lib/libpthread.so 49LIBS += ../../../bin/libmicrogammu.so /usr/lib/libbluetooth.so /usr/lib/libsdp.so /usr/lib/libpthread.so
51DESTDIR = ../../../bin 50DESTDIR = ../../../bin
52OBJECTS_DIR = obj/unix 51OBJECTS_DIR = obj/unix
53TARGET = kammu \ No newline at end of file 52TARGET = kammu \ No newline at end of file
diff --git a/gammu/emb/gammu/gammuE.pro b/gammu/emb/gammu/gammuE.pro
index a1028cb..5010d8c 100644
--- a/gammu/emb/gammu/gammuE.pro
+++ b/gammu/emb/gammu/gammuE.pro
@@ -1,55 +1,57 @@
1###################################################################### 1######################################################################
2# Automatically generated by qmake (1.07a) Fri Jul 30 22:22:02 2004 2# Automatically generated by qmake (1.07a) Fri Jul 30 22:22:02 2004
3###################################################################### 3######################################################################
4 4
5TEMPLATE = app 5TEMPLATE = app
6DEPENDPATH += msvc06.mak \ 6DEPENDPATH += msvc06.mak \
7 msvc2003.mak \ 7 msvc2003.mak \
8 smsd \ 8 smsd \
9 depend/nokia \ 9 depend/nokia \
10 depend/siemens \ 10 depend/siemens \
11 depend/nokia/dct3trac 11 depend/nokia/dct3trac
12INCLUDEPATH += . smsd depend/nokia depend/nokia/dct3trac depend/siemens 12INCLUDEPATH += . smsd depend/nokia depend/nokia/dct3trac depend/siemens
13 CONFIG = qt warn_off release 13# console
14# Input 14# Input
15 15
16HEADERS += gammu.h \ 16HEADERS += gammu.h \
17 sniff.h \ 17 sniff.h \
18 smsd/s_files.h \ 18 smsd/s_files.h \
19 smsd/s_mysql.h \ 19 smsd/s_mysql.h \
20 smsd/smsdcore.h \ 20 smsd/smsdcore.h \
21 depend/nokia/dct3.h \ 21 depend/nokia/dct3.h \
22 depend/nokia/dct4.h \ 22 depend/nokia/dct4.h \
23 depend/siemens/chiffre.h \ 23 depend/siemens/chiffre.h \
24 depend/siemens/dsiemens.h \ 24 depend/siemens/dsiemens.h \
25 depend/nokia/dct3trac/type-cc.h \ 25 depend/nokia/dct3trac/type-cc.h \
26 depend/nokia/dct3trac/type-mm.h \ 26 depend/nokia/dct3trac/type-mm.h \
27 depend/nokia/dct3trac/type-rr.h \ 27 depend/nokia/dct3trac/type-rr.h \
28 depend/nokia/dct3trac/type-sms.h \ 28 depend/nokia/dct3trac/type-sms.h \
29 depend/nokia/dct3trac/type-ss.h \ 29 depend/nokia/dct3trac/type-ss.h \
30 depend/nokia/dct3trac/wmx-gsm.h \ 30 depend/nokia/dct3trac/wmx-gsm.h \
31 depend/nokia/dct3trac/wmx-list.h \ 31 depend/nokia/dct3trac/wmx-list.h \
32 depend/nokia/dct3trac/wmx-sim.h \ 32 depend/nokia/dct3trac/wmx-sim.h \
33 depend/nokia/dct3trac/wmx-util.h \ 33 depend/nokia/dct3trac/wmx-util.h \
34 depend/nokia/dct3trac/wmx.h 34 depend/nokia/dct3trac/wmx.h
35SOURCES += gammu.c \ 35SOURCES += gammu.c \
36 sniff.c \ 36 sniff.c \
37 smsd/s_files.c \ 37 smsd/s_files.c \
38 smsd/smsdcore.c \ 38 smsd/smsdcore.c \
39 depend/nokia/dct3.c \ 39 depend/nokia/dct3.c \
40 depend/nokia/dct4.c \ 40 depend/nokia/dct4.c \
41 depend/siemens/chiffre.c \ 41 depend/siemens/chiffre.c \
42 depend/siemens/dsiemens.c \ 42 depend/siemens/dsiemens.c \
43 depend/nokia/dct3trac/wmx-gsm.c \ 43 depend/nokia/dct3trac/wmx-gsm.c \
44 depend/nokia/dct3trac/wmx-list.c \ 44 depend/nokia/dct3trac/wmx-list.c \
45 depend/nokia/dct3trac/wmx-sim.c \ 45 depend/nokia/dct3trac/wmx-sim.c \
46 depend/nokia/dct3trac/wmx-util.c \ 46 depend/nokia/dct3trac/wmx-util.c \
47 depend/nokia/dct3trac/wmx.c 47 depend/nokia/dct3trac/wmx.c
48 48
49LIBS += -L$(QPEDIR)/lib
49LIBS += -lmicrogammu 50LIBS += -lmicrogammu
50LIBS += -lbluetooth 51LIBS += -lbluetooth
51LIBS += -lsdp 52LIBS += -lsdp
52LIBS += -lpthread 53LIBS += -lpthread
54 CONFIG = warn_off release console
53DESTDIR=$(QPEDIR)/bin 55DESTDIR=$(QPEDIR)/bin
54OBJECTS_DIR = obj/$(PLATFORM) 56OBJECTS_DIR = obj/$(PLATFORM)
55TARGET = kammu \ No newline at end of file 57TARGET = kammu \ No newline at end of file