+void loadlmbcallerentry(unsigned char *buffer, unsigned char *buffer2, GSM_Backup *backup, int number)
+{
+ int i;
+
+ backup->CallerAvailable=true;
+
+#ifdef DEBUG
+ fprintf(stdout, _(" Number %i, name \""), buffer2[0]);
+ for (i=0;i<buffer2[1];i++) {
+ fprintf(stdout, _("%c"), buffer2[i+2]);
+ }
+ fprintf(stdout, _("\"\n"));
+
+ fprintf(stdout,_(" Ringtone ID=%i\n"), buffer2[i+2]);
+
+ if (buffer2[i+3]==1) fprintf(stdout,_(" Logo enabled\n"));
+ else fprintf(stdout,_(" Logo disabled\n"));
+#endif
+
+ backup->CallerGroups[number].number=buffer2[0];
+ backup->CallerGroups[number].type=GSM_CallerLogo;
+
+ for (i=0;i<buffer2[1];i++) {
+ backup->CallerGroups[number].text[i]=buffer2[i+2];
+ }
+ backup->CallerGroups[number].text[buffer2[1]]=0;
+
+ backup->CallerGroups[number].ringtone=buffer2[i+2];
+
+ backup->CallerGroups[number].enabled=false;
+ if (buffer2[i+3]==1) backup->CallerGroups[number].enabled=true;
+
+ backup->CallerGroups[number].width=buffer2[i+7];
+ backup->CallerGroups[number].height=buffer2[i+8];
+
+ backup->CallerGroups[number].size=GSM_GetBitmapSize(&backup->CallerGroups[number]);
+
+ memcpy(backup->CallerGroups[number].bitmap,buffer2+i+10,backup->CallerGroups[number].size);
+
+#ifdef DEBUG
+ fprintf(stdout, _(" Caller logo"));
+ fprintf(stdout, _(" (size %ix%i - %i bytes)\n"),
+ backup->CallerGroups[number].width, backup->CallerGroups[number].height, backup->CallerGroups[number].size);
+ GSM_PrintBitmap(&backup->CallerGroups[number]);
+#endif
+
+}
+
+void loadlmbopentry(unsigned char *buffer, unsigned char *buffer2, GSM_Backup *backup)
+{
+ backup->OperatorLogoAvailable=true;
+
+ DecodeNetworkCode(buffer2+1, backup->OperatorLogo.netcode);
+
+ backup->OperatorLogo.text[0]=0;
+
+ backup->OperatorLogo.width=buffer2[7];
+ backup->OperatorLogo.height=buffer2[8];
+
+ backup->OperatorLogo.type=GSM_OperatorLogo;
+ if (backup->OperatorLogo.width==78) backup->OperatorLogo.type=GSM_7110OperatorLogo;
+
+ backup->OperatorLogo.size=GSM_GetBitmapSize(&backup->OperatorLogo);
+
+#ifdef DEBUG
+ fprintf(stdout, _(" GSM operator logo (size %ix%i - %i bytes) for %s (%s) network.\n"),
+ backup->OperatorLogo.width, backup->OperatorLogo.height,
+ backup->OperatorLogo.size, backup->OperatorLogo.netcode,
+ GSM_GetNetworkName(backup->OperatorLogo.netcode));
+#endif
+
+ memcpy(backup->OperatorLogo.bitmap,buffer2+10,backup->OperatorLogo.size);
+
+#ifdef DEBUG
+ GSM_PrintBitmap(&backup->OperatorLogo);
+#endif
+
+}
+
+void loadlmbpbkentry(unsigned char *buffer, unsigned char *buffer2, GSM_Backup *backup)
+{
+ GSM_PhonebookEntry pbk;
+
+#ifdef DEBUG
+ fprintf(stdout,_(" Memory : "));
+ switch(buffer[10]) {
+ case 2: fprintf(stdout, _("(internal)\n"));break;
+ case 3: fprintf(stdout, _("(sim)\n"));break;
+ default: fprintf(stdout, _("(unknown)\n"));break;
+ }
+ fprintf(stdout,_(" Location : %i\n"),buffer2[0]+buffer2[1]*256);
+#endif
+
+ pbk.Empty = true;
+ pbk.Group = 5; /* 5 = no group as 6110 */
+ pbk.Name[0] = 0;
+ pbk.Number[0] = 0;
+ pbk.SubEntriesCount = 0;
+
+ N7110_DecodePhonebookFrame(&pbk,buffer2+4,(buffer[4]+buffer[5]*256)-4);
+
+ pbk.MemoryType=GMT_SM;
+ if (buffer[10]==2) pbk.MemoryType=GMT_ME;
+
+ pbk.Location=buffer2[0]+256*buffer2[1];
+
+ if (buffer[10]==2) backup->PhonePhonebook[backup->PhonePhonebookUsed++]=pbk;
+ else backup->SIMPhonebook [backup->SIMPhonebookUsed++] =pbk;
+}
+
+void loadlmbstartupentry(unsigned char *buffer, unsigned char *buffer2, GSM_Backup *backup)
+{
+ int i,j;
+#ifdef DEBUG
+ int z;
+#endif
+
+ j=1;
+ for (i=0;i<buffer2[0];i++) {
+ switch (buffer2[j++]) {
+ case 1:
+ backup->StartupLogoAvailable=true;
+ backup->StartupLogo.height=buffer2[j++];
+ backup->StartupLogo.width=buffer2[j++];
+ backup->StartupLogo.text[0]=0;
+ backup->StartupLogo.type=GSM_StartupLogo;
+ switch (backup->StartupLogo.height) {
+ case 65:backup->StartupLogo.type=GSM_7110StartupLogo;break;
+ case 60:backup->StartupLogo.type=GSM_6210StartupLogo;break;
+ }
+ backup->StartupLogo.size=GSM_GetBitmapSize(&backup->StartupLogo);
+
+#ifdef DEBUG
+ fprintf(stdout, _(" Block 1 - startup logo (size %ix%i - %i bytes)\n"),
+ backup->StartupLogo.width, backup->StartupLogo.height, backup->StartupLogo.size);
+#endif
+
+ memcpy(backup->StartupLogo.bitmap,buffer2+j,backup->StartupLogo.size);
+#ifdef DEBUG
+ GSM_PrintBitmap(&backup->StartupLogo);
+#endif
+ j=j+backup->StartupLogo.size;
+
+ break;
+ case 2:
+
+#ifdef DEBUG
+ fprintf(stdout, _(" Block 2 - welcome note \""));
+ for (z=0;z<buffer2[j];z++) fprintf(stdout, _("%c"),buffer2[j+z+1]);
+ fprintf(stdout, _("\"\n"));
+#endif
+ break;
+ default:
+#ifdef DEBUG
+ fprintf(stdout, _(" Unknown block %02x\n"),buffer2[j]);
+#endif
+ break;
+ }
+ }
+}
+