http://marcin-wiacek.fkn.pl/english/zips/mygnokii.tar.gz
[gnokii.git] / common / gsm-ringtones.c
index 8bb013d..588ddad 100644 (file)
@@ -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];\r              /* Used to find default ringtone parameters */
+  int i,j,k=0,thisnote,thisnotelong;\r
   
-  /* Find the most frequently used duration and use this for the default */
-  for (i=0;i<6;i++) buffer[i]=0;
-  for (i=0;i<ringtone->NrNotes;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;i<ringtone->NrNotes;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 */\r
\r for (i=0;i<6;i++) buffer[i]=0;\r
+  for (i=0;i<ringtone->NrNotes;i++) {\r
+    switch (ringtone->notes[i].duration) {\r
+      case 192: buffer[0]++; break;\r
+      case 128: buffer[0]++; break;\r
+      case  96:        buffer[1]++; break;\r
+      case  64: buffer[1]++; break;\r
+      case  48: buffer[2]++; break;\r
+      case  32: buffer[2]++; break;\r
+      case  24: buffer[3]++; break;\r
+      case  16: buffer[3]++; break;\r
+      case  12: buffer[4]++; break;\r
+      case   8: buffer[4]++; break;\r
+      case   6: buffer[5]++; break;\r
+      case   4: buffer[5]++; break;\r
+    }\r
+  }\r
+\r
+  /* Now find the most frequently used */\r
+  j=0;\r
+  for (i=0;i<6;i++) {\r
+    if (buffer[i]>j) {\r
+      k=i; \r
+      j=buffer[i];\r
+    }\r
+  }\r
+\r
+  /* Finally convert the default duration */\r
+  switch (k) {\r
+      case 0: DefNoteDuration=128; break;      \r
+      case 1: DefNoteDuration= 64; break;      \r
+      case 2: DefNoteDuration= 32; break;      \r
+      case 3: DefNoteDuration= 16; break;      \r
+      case 4: DefNoteDuration=  8; break;      \r
+      case 5: DefNoteDuration=  4; break;      \r
+     default: DefNoteDuration= 16; break;      \r
+  }  \r
+\r
+  /* Find the most frequently used scale and use this for the default */\r\r
+  for (i=0;i<6;i++) buffer[i]=0;\r
+  for (i=0;i<ringtone->NrNotes;i++) {\r
+    if (ringtone->notes[i].note!=255) {\r
+      buffer[ringtone->notes[i].note/14]++;\r
+    }\r
+  }\r
+  j=0;\r
+  for (i=0;i<6;i++) {\r
+    if (buffer[i]>j) {\r
+      DefNoteScale=i;\r
+      j=buffer[i];\r
+    }\r
+  }\r
 
   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;
+}