X-Git-Url: http://git.jankratochvil.net/?p=gnokii.git;a=blobdiff_plain;f=common%2Fgsm-ringtones.c;h=588ddadfe44392ae537754835d26ff9a34693b93;hp=8bb013de1da8fc8a9a9bdcda2bbbcfb81a9b8c29;hb=0484268a27be1ab830d087847d830bc0ec734016;hpb=975a83d253eea8aa37bf3dfd7e026df3027db4ff diff --git a/common/gsm-ringtones.c b/common/gsm-ringtones.c index 8bb013d..588ddad 100644 --- a/common/gsm-ringtones.c +++ b/common/gsm-ringtones.c @@ -223,62 +223,62 @@ u8 GSM_PackRingtone(GSM_Ringtone *ringtone, unsigned char *package, int *maxleng int DefNoteTempo=63; u8 DefNoteStyle=NaturalStyle; - int buffer[6]; /* Used to find default ringtone parameters */ - int i,j,k=0,thisnote,thisnotelong; + int buffer[6]; /* Used to find default ringtone parameters */ + int i,j,k=0,thisnote,thisnotelong; - /* Find the most frequently used duration and use this for the default */ - for (i=0;i<6;i++) buffer[i]=0; - for (i=0;iNrNotes;i++) { - switch (ringtone->notes[i].duration) { - case 192: buffer[0]++; break; - case 128: buffer[0]++; break; - case 96: buffer[1]++; break; - case 64: buffer[1]++; break; - case 48: buffer[2]++; break; - case 32: buffer[2]++; break; - case 24: buffer[3]++; break; - case 16: buffer[3]++; break; - case 12: buffer[4]++; break; - case 8: buffer[4]++; break; - case 6: buffer[5]++; break; - case 4: buffer[5]++; break; - } - } - - /* Now find the most frequently used */ - j=0; - for (i=0;i<6;i++) { - if (buffer[i]>j) { - k=i; - j=buffer[i]; - } - } - - /* Finally convert the default duration */ - switch (k) { - case 0: DefNoteDuration=128; break; - case 1: DefNoteDuration= 64; break; - case 2: DefNoteDuration= 32; break; - case 3: DefNoteDuration= 16; break; - case 4: DefNoteDuration= 8; break; - case 5: DefNoteDuration= 4; break; - default: DefNoteDuration= 16; break; - } - - /* Find the most frequently used scale and use this for the default */ - for (i=0;i<6;i++) buffer[i]=0; - for (i=0;iNrNotes;i++) { - if (ringtone->notes[i].note!=255) { - buffer[ringtone->notes[i].note/14]++; - } - } - j=0; - for (i=0;i<6;i++) { - if (buffer[i]>j) { - DefNoteScale=i; - j=buffer[i]; - } - } + /* Find the most frequently used duration and use this for the default */ + for (i=0;i<6;i++) buffer[i]=0; + for (i=0;iNrNotes;i++) { + switch (ringtone->notes[i].duration) { + case 192: buffer[0]++; break; + case 128: buffer[0]++; break; + case 96: buffer[1]++; break; + case 64: buffer[1]++; break; + case 48: buffer[2]++; break; + case 32: buffer[2]++; break; + case 24: buffer[3]++; break; + case 16: buffer[3]++; break; + case 12: buffer[4]++; break; + case 8: buffer[4]++; break; + case 6: buffer[5]++; break; + case 4: buffer[5]++; break; + } + } + + /* Now find the most frequently used */ + j=0; + for (i=0;i<6;i++) { + if (buffer[i]>j) { + k=i; + j=buffer[i]; + } + } + + /* Finally convert the default duration */ + switch (k) { + case 0: DefNoteDuration=128; break; + case 1: DefNoteDuration= 64; break; + case 2: DefNoteDuration= 32; break; + case 3: DefNoteDuration= 16; break; + case 4: DefNoteDuration= 8; break; + case 5: DefNoteDuration= 4; break; + default: DefNoteDuration= 16; break; + } + + /* Find the most frequently used scale and use this for the default */ + for (i=0;i<6;i++) buffer[i]=0; + for (i=0;iNrNotes;i++) { + if (ringtone->notes[i].note!=255) { + buffer[ringtone->notes[i].note/14]++; + } + } + j=0; + for (i=0;i<6;i++) { + if (buffer[i]>j) { + DefNoteScale=i; + j=buffer[i]; + } + } StartBit=BitPackByte(package, StartBit, CommandLength, 8); StartBit=BitPackByte(package, StartBit, RingingToneProgramming, 7); @@ -916,7 +916,7 @@ void PrepareRingingTones(char model[64], char rev[64]) { /* returns names from code or number in menu */ char *RingingToneName(int code, int menu) { - int index=1,i; + int index=1; GSM_Error error; if (code==0) @@ -934,25 +934,14 @@ char *RingingToneName(int code, int menu) } if (!strncmp(RingingTones[index].name,"Uploaded ",9)) { - ringtone.location=atoi(&RingingTones[index].name[10]); + ringtone.location=atoi(&RingingTones[index].name[10]); - error=GSM->GetBinRingtone(&ringtone); - - if (error==GE_NONE) return ringtone.name; - if (error==GE_UNKNOWNMODEL) { - - /* In 33x we have normal "Smart Messaging" format */ - if (GetModelFeature (FN_RINGTONES)==F_RING_SM) { - - i=7; - if (ringtone.frame[9]==0x4a && ringtone.frame[10]==0x3a) i=8; - ringtone.frame[i]=0x02; - - GSM_UnPackRingtone(&SMringtone, ringtone.frame+i, ringtone.length-i); - - return SMringtone.name; - } - } + error=GSM_GetPhoneRingtone(&ringtone,&SMringtone); + + if (error==GE_NONE) { + if (GetModelFeature (FN_RINGTONES)==F_RING_SM) return SMringtone.name; + else return ringtone.name; + } } return RingingTones[index].name; @@ -1021,3 +1010,27 @@ int GSM_SaveRingtoneToSMS(GSM_MultiSMSMessage *SMS, return i; } + +GSM_Error GSM_GetPhoneRingtone(GSM_BinRingtone *ringtone,GSM_Ringtone *SMringtone) +{ + GSM_Error error; + int i; + + error=GSM->GetBinRingtone(ringtone); + + if (error==GE_UNKNOWNMODEL) + { + /* In 3310,... we have normal "Smart Messaging" format */ + if (GetModelFeature (FN_RINGTONES)==F_RING_SM) { + i=7; + if (ringtone->frame[9]==0x4a && ringtone->frame[10]==0x3a) i=8; + ringtone->frame[i]=0x02; + + GSM_UnPackRingtone(SMringtone, ringtone->frame+i, ringtone->length-i); + + return GE_NONE; + } + } + + return error; +}