author | zautrix <zautrix> | 2004-08-30 20:21:20 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-08-30 20:21:20 (UTC) |
commit | 109a23b70f67552a9ce27f682bb2b1bdbb2bb4f3 (patch) (unidiff) | |
tree | 30407f1548315b403f1ad7c55c81744413fcd14c | |
parent | 5f4867356dc4b34da20b66e9ede71e22899e4a4b (diff) | |
download | kdepimpi-109a23b70f67552a9ce27f682bb2b1bdbb2bb4f3.zip kdepimpi-109a23b70f67552a9ce27f682bb2b1bdbb2bb4f3.tar.gz kdepimpi-109a23b70f67552a9ce27f682bb2b1bdbb2bb4f3.tar.bz2 |
sine fix
-rw-r--r-- | gammu/emb/common/common.pro | 1 | ||||
-rw-r--r-- | gammu/emb/common/service/gsmring.c | 6 |
2 files changed, 6 insertions, 1 deletions
diff --git a/gammu/emb/common/common.pro b/gammu/emb/common/common.pro index 9342cb7..0e719ee 100644 --- a/gammu/emb/common/common.pro +++ b/gammu/emb/common/common.pro | |||
@@ -111,76 +111,77 @@ HEADERS += config.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 |
119 | SOURCES +=gsmcomon.c \ | 119 | SOURCES +=gsmcomon.c \ |
120 | gsmstate.c \ | 120 | gsmstate.c \ |
121 | misc/misc.c \ | 121 | misc/misc.c \ |
122 | misc/cfg.c \ | 122 | misc/cfg.c \ |
123 | misc/coding/coding.c \ | 123 | misc/coding/coding.c \ |
124 | misc/coding/md5.c \ | 124 | misc/coding/md5.c \ |
125 | service/sms/gsmsms.c \ | 125 | service/sms/gsmsms.c \ |
126 | service/sms/gsmems.c \ | 126 | service/sms/gsmems.c \ |
127 | service/sms/gsmmulti.c \ | 127 | service/sms/gsmmulti.c \ |
128 | service/gsmcal.c \ | 128 | service/gsmcal.c \ |
129 | service/gsmdata.c \ | 129 | service/gsmdata.c \ |
130 | service/gsmpbk.c \ | 130 | service/gsmpbk.c \ |
131 | service/gsmring.c \ | 131 | service/gsmring.c \ |
132 | service/gsmlogo.c \ | 132 | service/gsmlogo.c \ |
133 | service/gsmmisc.c \ | 133 | service/gsmmisc.c \ |
134 | service/gsmnet.c \ | 134 | service/gsmnet.c \ |
135 | service/backup/gsmback.c \ | 135 | service/backup/gsmback.c \ |
136 | service/backup/backldif.c \ | 136 | service/backup/backldif.c \ |
137 | service/backup/backlmb.c \ | 137 | service/backup/backlmb.c \ |
138 | service/backup/backtext.c \ | 138 | service/backup/backtext.c \ |
139 | service/backup/backvcs.c \ | 139 | service/backup/backvcs.c \ |
140 | service/backup/backvcf.c \ | 140 | service/backup/backvcf.c \ |
141 | service/backup/backics.c \ | 141 | service/backup/backics.c \ |
142 | device/bluetoth/affix.c \ | 142 | device/bluetoth/affix.c \ |
143 | device/bluetoth/bluez.c \ | 143 | device/bluetoth/bluez.c \ |
144 | device/bluetoth/blue_w32.c \ | 144 | device/bluetoth/blue_w32.c \ |
145 | device/bluetoth/bluetoth.c \ | 145 | device/bluetoth/bluetoth.c \ |
146 | device/serial/ser_djg.c \ | 146 | device/serial/ser_djg.c \ |
147 | device/irda/irda.c \ | 147 | device/irda/irda.c \ |
148 | device/devfunc.c \ | 148 | device/devfunc.c \ |
149 | protocol/at/at.c \ | 149 | protocol/at/at.c \ |
150 | protocol/alcatel/alcabus.c \ | 150 | protocol/alcatel/alcabus.c \ |
151 | protocol/nokia/mbus2.c \ | 151 | protocol/nokia/mbus2.c \ |
152 | protocol/nokia/fbus2.c \ | 152 | protocol/nokia/fbus2.c \ |
153 | protocol/nokia/phonet.c \ | 153 | protocol/nokia/phonet.c \ |
154 | protocol/obex/obex.c \ | 154 | protocol/obex/obex.c \ |
155 | protocol/symbian/mrouter.c \ | 155 | protocol/symbian/mrouter.c \ |
156 | phone/pfunc.c \ | 156 | phone/pfunc.c \ |
157 | phone/at/atgen.c \ | 157 | phone/at/atgen.c \ |
158 | phone/at/siemens.c \ | 158 | phone/at/siemens.c \ |
159 | phone/at/sonyeric.c \ | 159 | phone/at/sonyeric.c \ |
160 | phone/alcatel/alcatel.c \ | 160 | phone/alcatel/alcatel.c \ |
161 | phone/nokia/dct3/n6110.c \ | 161 | phone/nokia/dct3/n6110.c \ |
162 | phone/nokia/dct3/n7110.c \ | 162 | phone/nokia/dct3/n7110.c \ |
163 | phone/nokia/dct3/n9210.c \ | 163 | phone/nokia/dct3/n9210.c \ |
164 | phone/nokia/dct3/dct3func.c \ | 164 | phone/nokia/dct3/dct3func.c \ |
165 | phone/nokia/dct4/n3320.c \ | 165 | phone/nokia/dct4/n3320.c \ |
166 | phone/nokia/dct4/n3650.c \ | 166 | phone/nokia/dct4/n3650.c \ |
167 | phone/nokia/dct4/n6510.c \ | 167 | phone/nokia/dct4/n6510.c \ |
168 | phone/nokia/dct4/dct4func.c \ | 168 | phone/nokia/dct4/dct4func.c \ |
169 | phone/nokia/nauto.c \ | 169 | phone/nokia/nauto.c \ |
170 | phone/nokia/nfunc.c \ | 170 | phone/nokia/nfunc.c \ |
171 | phone/nokia/nfuncold.c \ | 171 | phone/nokia/nfuncold.c \ |
172 | phone/obex/obexgen.c \ | 172 | phone/obex/obexgen.c \ |
173 | phone/symbian/mroutgen.c | 173 | phone/symbian/mroutgen.c |
174 | 174 | ||
175 | DEFINES += DESKTOP_VERSION | ||
175 | TARGET = microgammu | 176 | TARGET = microgammu |
176 | CONFIG = warn_off release console | 177 | CONFIG = warn_off release console |
177 | DESTDIR = ../../../bin | 178 | DESTDIR = ../../../bin |
178 | OBJECTS_DIR = obj/unix | 179 | OBJECTS_DIR = obj/unix |
179 | MOC_DIR = moc/unix | 180 | MOC_DIR = moc/unix |
180 | 181 | ||
181 | unix: { | 182 | unix: { |
182 | SOURCES += device/serial/ser_unx.c | 183 | SOURCES += device/serial/ser_unx.c |
183 | } | 184 | } |
184 | win32:{ | 185 | win32:{ |
185 | SOURCES += device/serial/ser_w32.c | 186 | SOURCES += device/serial/ser_w32.c |
186 | } | 187 | } |
diff --git a/gammu/emb/common/service/gsmring.c b/gammu/emb/common/service/gsmring.c index f7f7082..7df46f1 100644 --- a/gammu/emb/common/service/gsmring.c +++ b/gammu/emb/common/service/gsmring.c | |||
@@ -43,130 +43,134 @@ int GSM_RingNoteGetFrequency(GSM_RingNote Note) | |||
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 | ||
53 | int GSM_RingNoteGetFullDuration(GSM_RingNote Note) | 53 | int 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 | ||
80 | GSM_Error savewav(FILE *file, GSM_Ringtone *ringtone) | 80 | GSM_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 | #ifdef DESKTOP_VERSION |
108 | DATA_Buffer[j] = ((int)(sin(phase*PI)*50000)); | ||
109 | #else | ||
110 | // we have no sin on Zaurus | ||
108 | DATA_Buffer[j] = ((int)(0.5*50000)); | 111 | DATA_Buffer[j] = ((int)(0.5*50000)); |
112 | #endif | ||
109 | phase = phase + phase_step; | 113 | phase = phase + phase_step; |
110 | length++; | 114 | length++; |
111 | } | 115 | } |
112 | fwrite(&DATA_Buffer,sizeof(short),j,file); | 116 | fwrite(&DATA_Buffer,sizeof(short),j,file); |
113 | } | 117 | } |
114 | } | 118 | } |
115 | 119 | ||
116 | wavfilesize = sizeof(WAV_Header) + sizeof(FMT_Header) + sizeof(DATA_Header) + length*2; | 120 | wavfilesize = sizeof(WAV_Header) + sizeof(FMT_Header) + sizeof(DATA_Header) + length*2; |
117 | WAV_Header[4] = ((unsigned char)wavfilesize % 256); | 121 | WAV_Header[4] = ((unsigned char)wavfilesize % 256); |
118 | WAV_Header[5] = ((unsigned char)wavfilesize / 256); | 122 | WAV_Header[5] = ((unsigned char)wavfilesize / 256); |
119 | WAV_Header[6] = ((unsigned char)wavfilesize / (256*256)); | 123 | WAV_Header[6] = ((unsigned char)wavfilesize / (256*256)); |
120 | WAV_Header[7] = ((unsigned char)wavfilesize / (256*256*256)); | 124 | WAV_Header[7] = ((unsigned char)wavfilesize / (256*256*256)); |
121 | wavfilesize = wavfilesize - 54; | 125 | wavfilesize = wavfilesize - 54; |
122 | DATA_Header[4] = ((unsigned char)wavfilesize % 256); | 126 | DATA_Header[4] = ((unsigned char)wavfilesize % 256); |
123 | DATA_Header[5] = ((unsigned char)wavfilesize / 256); | 127 | DATA_Header[5] = ((unsigned char)wavfilesize / 256); |
124 | DATA_Header[6] = ((unsigned char)wavfilesize / (256*256)); | 128 | DATA_Header[6] = ((unsigned char)wavfilesize / (256*256)); |
125 | DATA_Header[7] = ((unsigned char)wavfilesize / (256*256*256)); | 129 | DATA_Header[7] = ((unsigned char)wavfilesize / (256*256*256)); |
126 | 130 | ||
127 | fseek( file, 0, SEEK_SET); | 131 | fseek( file, 0, SEEK_SET); |
128 | fwrite(&WAV_Header, 1, sizeof(WAV_Header),file); | 132 | fwrite(&WAV_Header, 1, sizeof(WAV_Header),file); |
129 | fwrite(&FMT_Header, 1, sizeof(FMT_Header),file); | 133 | fwrite(&FMT_Header, 1, sizeof(FMT_Header),file); |
130 | fwrite(&DATA_Header, 1, sizeof(DATA_Header),file); | 134 | fwrite(&DATA_Header, 1, sizeof(DATA_Header),file); |
131 | 135 | ||
132 | return ERR_NONE; | 136 | return ERR_NONE; |
133 | } | 137 | } |
134 | 138 | ||
135 | static GSM_Error savebin(FILE *file, GSM_Ringtone *ringtone) | 139 | static GSM_Error savebin(FILE *file, GSM_Ringtone *ringtone) |
136 | { | 140 | { |
137 | char nullchar=0x00; | 141 | char nullchar=0x00; |
138 | 142 | ||
139 | fwrite(&nullchar,1,1,file); | 143 | fwrite(&nullchar,1,1,file); |
140 | fwrite(&nullchar,1,1,file); | 144 | fwrite(&nullchar,1,1,file); |
141 | fprintf(file,"\x0C\x01\x2C"); | 145 | fprintf(file,"\x0C\x01\x2C"); |
142 | fprintf(file,"%s",DecodeUnicodeString(ringtone->Name)); | 146 | fprintf(file,"%s",DecodeUnicodeString(ringtone->Name)); |
143 | fwrite(&nullchar,1,1,file); | 147 | fwrite(&nullchar,1,1,file); |
144 | fwrite(&nullchar,1,1,file); | 148 | fwrite(&nullchar,1,1,file); |
145 | fwrite(ringtone->NokiaBinary.Frame,1,ringtone->NokiaBinary.Length,file); | 149 | fwrite(ringtone->NokiaBinary.Frame,1,ringtone->NokiaBinary.Length,file); |
146 | return ERR_NONE; | 150 | return ERR_NONE; |
147 | } | 151 | } |
148 | 152 | ||
149 | static GSM_Error savepuremidi(FILE *file, GSM_Ringtone *ringtone) | 153 | static GSM_Error savepuremidi(FILE *file, GSM_Ringtone *ringtone) |
150 | { | 154 | { |
151 | fwrite(ringtone->NokiaBinary.Frame,1,ringtone->NokiaBinary.Length,file); | 155 | fwrite(ringtone->NokiaBinary.Frame,1,ringtone->NokiaBinary.Length,file); |
152 | return ERR_NONE; | 156 | return ERR_NONE; |
153 | } | 157 | } |
154 | 158 | ||
155 | GSM_Error saverttl(FILE *file, GSM_Ringtone *ringtone) | 159 | GSM_Error saverttl(FILE *file, GSM_Ringtone *ringtone) |
156 | { | 160 | { |
157 | GSM_RingNoteScaleDefNoteScale; | 161 | GSM_RingNoteScaleDefNoteScale; |
158 | GSM_RingNoteDurationDefNoteDuration; | 162 | GSM_RingNoteDurationDefNoteDuration; |
159 | 163 | ||
160 | GSM_RingNoteStyleDefNoteStyle=0; | 164 | GSM_RingNoteStyleDefNoteStyle=0; |
161 | int DefNoteTempo=0; | 165 | int DefNoteTempo=0; |
162 | 166 | ||
163 | bool started = false, firstcomma = true; | 167 | bool started = false, firstcomma = true; |
164 | GSM_RingNote *Note; | 168 | GSM_RingNote *Note; |
165 | 169 | ||
166 | unsigned char buffer[15]; | 170 | unsigned char buffer[15]; |
167 | int i,j,k=0; | 171 | int i,j,k=0; |
168 | 172 | ||
169 | /* Saves ringtone name */ | 173 | /* Saves ringtone name */ |
170 | fprintf(file,"%s:",DecodeUnicodeString(ringtone->Name)); | 174 | fprintf(file,"%s:",DecodeUnicodeString(ringtone->Name)); |
171 | 175 | ||
172 | /* Find the most frequently used duration */ | 176 | /* Find the most frequently used duration */ |