summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--gammu/emb/gammu/gammu.c47
-rw-r--r--libkcal/phoneformat.cpp6
2 files changed, 50 insertions, 3 deletions
diff --git a/gammu/emb/gammu/gammu.c b/gammu/emb/gammu/gammu.c
index 1d53fb0..5163d81 100644
--- a/gammu/emb/gammu/gammu.c
+++ b/gammu/emb/gammu/gammu.c
@@ -7481,876 +7481,921 @@ static void CallDivert(int argc, char *argv[])
7481 printmsg("Unknown divert action (\"%s\")\n",argv[2]); 7481 printmsg("Unknown divert action (\"%s\")\n",argv[2]);
7482 exit(-1); 7482 exit(-1);
7483 } 7483 }
7484 7484
7485 if (mystrncasecmp("all" , argv[3],0)) {cd.Request.DivertType = GSM_DIVERT_AllTypes ;} 7485 if (mystrncasecmp("all" , argv[3],0)) {cd.Request.DivertType = GSM_DIVERT_AllTypes ;}
7486 else if (mystrncasecmp("busy" , argv[3],0)) {cd.Request.DivertType = GSM_DIVERT_Busy ;} 7486 else if (mystrncasecmp("busy" , argv[3],0)) {cd.Request.DivertType = GSM_DIVERT_Busy ;}
7487 else if (mystrncasecmp("noans" , argv[3],0)) {cd.Request.DivertType = GSM_DIVERT_NoAnswer ;} 7487 else if (mystrncasecmp("noans" , argv[3],0)) {cd.Request.DivertType = GSM_DIVERT_NoAnswer ;}
7488 else if (mystrncasecmp("outofreach", argv[3],0)) {cd.Request.DivertType = GSM_DIVERT_OutOfReach;} 7488 else if (mystrncasecmp("outofreach", argv[3],0)) {cd.Request.DivertType = GSM_DIVERT_OutOfReach;}
7489 else { 7489 else {
7490 printmsg("Unknown divert type (\"%s\")\n",argv[3]); 7490 printmsg("Unknown divert type (\"%s\")\n",argv[3]);
7491 exit(-1); 7491 exit(-1);
7492 } 7492 }
7493 7493
7494 if (mystrncasecmp("all" , argv[4],0)) {cd.Request.CallType = GSM_DIVERT_AllCalls ;} 7494 if (mystrncasecmp("all" , argv[4],0)) {cd.Request.CallType = GSM_DIVERT_AllCalls ;}
7495 else if (mystrncasecmp("voice", argv[4],0)) {cd.Request.CallType = GSM_DIVERT_VoiceCalls;} 7495 else if (mystrncasecmp("voice", argv[4],0)) {cd.Request.CallType = GSM_DIVERT_VoiceCalls;}
7496 else if (mystrncasecmp("fax" , argv[4],0)) {cd.Request.CallType = GSM_DIVERT_FaxCalls ;} 7496 else if (mystrncasecmp("fax" , argv[4],0)) {cd.Request.CallType = GSM_DIVERT_FaxCalls ;}
7497 else if (mystrncasecmp("data" , argv[4],0)) {cd.Request.CallType = GSM_DIVERT_DataCalls ;} 7497 else if (mystrncasecmp("data" , argv[4],0)) {cd.Request.CallType = GSM_DIVERT_DataCalls ;}
7498 else { 7498 else {
7499 printmsg("Unknown call type (\"%s\")\n",argv[4]); 7499 printmsg("Unknown call type (\"%s\")\n",argv[4]);
7500 exit(-1); 7500 exit(-1);
7501 } 7501 }
7502 7502
7503 GSM_Init(true); 7503 GSM_Init(true);
7504 7504
7505 if (mystrncasecmp("get", argv[2],0)) { 7505 if (mystrncasecmp("get", argv[2],0)) {
7506 error = Phone->GetCallDivert(&s,&cd); 7506 error = Phone->GetCallDivert(&s,&cd);
7507 Print_Error(error); 7507 Print_Error(error);
7508 printmsg("Query:\n Divert type: "); 7508 printmsg("Query:\n Divert type: ");
7509 } else { 7509 } else {
7510 cd.Request.Number[0] = 0; 7510 cd.Request.Number[0] = 0;
7511 cd.Request.Number[1] = 0; 7511 cd.Request.Number[1] = 0;
7512 if (argc > 5) EncodeUnicode(cd.Request.Number,argv[5],strlen(argv[5])); 7512 if (argc > 5) EncodeUnicode(cd.Request.Number,argv[5],strlen(argv[5]));
7513 7513
7514 cd.Request.Timeout = 0; 7514 cd.Request.Timeout = 0;
7515 if (argc > 6) cd.Request.Timeout = atoi(argv[6]); 7515 if (argc > 6) cd.Request.Timeout = atoi(argv[6]);
7516 7516
7517 error = Phone->SetCallDivert(&s,&cd); 7517 error = Phone->SetCallDivert(&s,&cd);
7518 Print_Error(error); 7518 Print_Error(error);
7519 printmsg("Changed:\n Divert type: "); 7519 printmsg("Changed:\n Divert type: ");
7520 } 7520 }
7521 7521
7522 switch (cd.Request.DivertType) { 7522 switch (cd.Request.DivertType) {
7523 case GSM_DIVERT_Busy : printmsg("when busy"); break; 7523 case GSM_DIVERT_Busy : printmsg("when busy"); break;
7524 case GSM_DIVERT_NoAnswer : printmsg("when not answered"); break; 7524 case GSM_DIVERT_NoAnswer : printmsg("when not answered"); break;
7525 case GSM_DIVERT_OutOfReach: printmsg("when phone off or no coverage");break; 7525 case GSM_DIVERT_OutOfReach: printmsg("when phone off or no coverage");break;
7526 case GSM_DIVERT_AllTypes : printmsg("all types of diverts"); break; 7526 case GSM_DIVERT_AllTypes : printmsg("all types of diverts"); break;
7527 default : printmsg("unknown %i",cd.Request.DivertType); break; 7527 default : printmsg("unknown %i",cd.Request.DivertType); break;
7528 } 7528 }
7529 printmsg("\n Calls type : "); 7529 printmsg("\n Calls type : ");
7530 switch (cd.Request.CallType) { 7530 switch (cd.Request.CallType) {
7531 case GSM_DIVERT_VoiceCalls: printmsg("voice"); break; 7531 case GSM_DIVERT_VoiceCalls: printmsg("voice"); break;
7532 case GSM_DIVERT_FaxCalls : printmsg("fax"); break; 7532 case GSM_DIVERT_FaxCalls : printmsg("fax"); break;
7533 case GSM_DIVERT_DataCalls : printmsg("data"); break; 7533 case GSM_DIVERT_DataCalls : printmsg("data"); break;
7534 case GSM_DIVERT_AllCalls : printmsg("data & fax & voice"); break; 7534 case GSM_DIVERT_AllCalls : printmsg("data & fax & voice"); break;
7535 default : printmsg("unknown %i",cd.Request.CallType); break; 7535 default : printmsg("unknown %i",cd.Request.CallType); break;
7536 } 7536 }
7537 printmsg("\nResponse:"); 7537 printmsg("\nResponse:");
7538 7538
7539 for (i=0;i<cd.Response.EntriesNum;i++) { 7539 for (i=0;i<cd.Response.EntriesNum;i++) {
7540 printmsg("\n Calls type : "); 7540 printmsg("\n Calls type : ");
7541 switch (cd.Response.Entries[i].CallType) { 7541 switch (cd.Response.Entries[i].CallType) {
7542 case GSM_DIVERT_VoiceCalls: printmsg("voice"); break; 7542 case GSM_DIVERT_VoiceCalls: printmsg("voice"); break;
7543 case GSM_DIVERT_FaxCalls : printmsg("fax"); break; 7543 case GSM_DIVERT_FaxCalls : printmsg("fax"); break;
7544 case GSM_DIVERT_DataCalls : printmsg("data"); break; 7544 case GSM_DIVERT_DataCalls : printmsg("data"); break;
7545 default : printmsg("unknown %i",cd.Response.Entries[i].CallType);break; 7545 default : printmsg("unknown %i",cd.Response.Entries[i].CallType);break;
7546 } 7546 }
7547 printf("\n"); 7547 printf("\n");
7548 printmsg(" Timeout : %i seconds\n",cd.Response.Entries[i].Timeout); 7548 printmsg(" Timeout : %i seconds\n",cd.Response.Entries[i].Timeout);
7549 printmsg(" Number : %s\n",DecodeUnicodeString(cd.Response.Entries[i].Number)); 7549 printmsg(" Number : %s\n",DecodeUnicodeString(cd.Response.Entries[i].Number));
7550 } 7550 }
7551 printf("\n"); 7551 printf("\n");
7552 7552
7553 GSM_Terminate(); 7553 GSM_Terminate();
7554} 7554}
7555 7555
7556 7556
7557//#if 0 7557//#if 0
7558static void CancelAllDiverts(int argc, char *argv[]) 7558static void CancelAllDiverts(int argc, char *argv[])
7559{ 7559{
7560 GSM_Init(true); 7560 GSM_Init(true);
7561 7561
7562 error = Phone->CancelAllDiverts(&s); 7562 error = Phone->CancelAllDiverts(&s);
7563 Print_Error(error); 7563 Print_Error(error);
7564 7564
7565 GSM_Terminate(); 7565 GSM_Terminate();
7566} 7566}
7567 7567
7568 7568
7569 7569
7570void SearchPhoneThread(OneDeviceInfo *Info) 7570void SearchPhoneThread(OneDeviceInfo *Info)
7571{ 7571{
7572 int j; 7572 int j;
7573 GSM_Error error; 7573 GSM_Error error;
7574 fprintf(stderr,"*********************************** \n"); 7574 fprintf(stderr,"*********************************** \n");
7575 fprintf(stderr,"*********************************** \n"); 7575 fprintf(stderr,"*********************************** \n");
7576 fprintf(stderr,"*********************************** \n"); 7576 fprintf(stderr,"*********************************** \n");
7577 fprintf(stderr,"*********************************** \n"); 7577 fprintf(stderr,"*********************************** \n");
7578 fprintf(stderr,"*********************************** \n"); 7578 fprintf(stderr,"*********************************** \n");
7579#if 0 7579#if 0
7580 j = 0; 7580 j = 0;
7581 while(strlen(Info->Connections[j].Connection) != 0) { 7581 while(strlen(Info->Connections[j].Connection) != 0) {
7582 memcpy(&Info->s.di,&s.di,sizeof(Debug_Info)); 7582 memcpy(&Info->s.di,&s.di,sizeof(Debug_Info));
7583 Info->s.msg = s.msg; 7583 Info->s.msg = s.msg;
7584 Info->s.ConfigNum = 1; 7584 Info->s.ConfigNum = 1;
7585 Info->s.opened = false; 7585 Info->s.opened = false;
7586 Info->s.Config[0].UseGlobalDebugFile = s.Config[0].UseGlobalDebugFile; 7586 Info->s.Config[0].UseGlobalDebugFile = s.Config[0].UseGlobalDebugFile;
7587 Info->s.Config[0].Localize = s.Config[0].Localize; 7587 Info->s.Config[0].Localize = s.Config[0].Localize;
7588 Info->s.Config[0].Device = Info->Device; 7588 Info->s.Config[0].Device = Info->Device;
7589 Info->s.Config[0].Connection = Info->Connections[j].Connection; 7589 Info->s.Config[0].Connection = Info->Connections[j].Connection;
7590 Info->s.Config[0].SyncTime = "no"; 7590 Info->s.Config[0].SyncTime = "no";
7591 Info->s.Config[0].DebugFile = s.Config[0].DebugFile; 7591 Info->s.Config[0].DebugFile = s.Config[0].DebugFile;
7592 Info->s.Config[0].Model[0] = 0; 7592 Info->s.Config[0].Model[0] = 0;
7593 strcpy(Info->s.Config[0].DebugLevel,s.Config[0].DebugLevel); 7593 strcpy(Info->s.Config[0].DebugLevel,s.Config[0].DebugLevel);
7594 Info->s.Config[0].LockDevice = "no"; 7594 Info->s.Config[0].LockDevice = "no";
7595 Info->s.Config[0].StartInfo = "no"; 7595 Info->s.Config[0].StartInfo = "no";
7596 7596
7597 error = GSM_InitConnection(&Info->s,1); 7597 error = GSM_InitConnection(&Info->s,1);
7598 if (SearchOutput) printf("Connection \"%s\" on device \"%s\"\n",Info->Connections[j].Connection,Info->Device); 7598 if (SearchOutput) printf("Connection \"%s\" on device \"%s\"\n",Info->Connections[j].Connection,Info->Device);
7599 if (error == ERR_NONE) { 7599 if (error == ERR_NONE) {
7600 error=Info->s.Phone.Functions->GetManufacturer(&Info->s); 7600 error=Info->s.Phone.Functions->GetManufacturer(&Info->s);
7601 if (error == ERR_NONE) { 7601 if (error == ERR_NONE) {
7602 error=Info->s.Phone.Functions->GetModel(&Info->s); 7602 error=Info->s.Phone.Functions->GetModel(&Info->s);
7603 if (error == ERR_NONE) { 7603 if (error == ERR_NONE) {
7604 if (!SearchOutput) printf("Connection \"%s\" on device \"%s\"\n",Info->Connections[j].Connection,Info->Device); 7604 if (!SearchOutput) printf("Connection \"%s\" on device \"%s\"\n",Info->Connections[j].Connection,Info->Device);
7605 printmsg(" Manufacturer : %s\n", 7605 printmsg(" Manufacturer : %s\n",
7606 Info->s.Phone.Data.Manufacturer); 7606 Info->s.Phone.Data.Manufacturer);
7607 printmsg(" Model : %s (%s)\n", 7607 printmsg(" Model : %s (%s)\n",
7608 Info->s.Phone.Data.ModelInfo->model, 7608 Info->s.Phone.Data.ModelInfo->model,
7609 Info->s.Phone.Data.Model); 7609 Info->s.Phone.Data.Model);
7610 } else { 7610 } else {
7611 if (SearchOutput) printf(" %s\n",print_error(error,Info->s.di.df,Info->s.msg)); 7611 if (SearchOutput) printf(" %s\n",print_error(error,Info->s.di.df,Info->s.msg));
7612 } 7612 }
7613 } else { 7613 } else {
7614 if (SearchOutput) printf(" %s\n",print_error(error,Info->s.di.df,Info->s.msg)); 7614 if (SearchOutput) printf(" %s\n",print_error(error,Info->s.di.df,Info->s.msg));
7615 } 7615 }
7616 } else { 7616 } else {
7617 if (SearchOutput) printf(" %s\n",print_error(error,Info->s.di.df,Info->s.msg)); 7617 if (SearchOutput) printf(" %s\n",print_error(error,Info->s.di.df,Info->s.msg));
7618 } 7618 }
7619 if (error != ERR_DEVICEOPENERROR) { 7619 if (error != ERR_DEVICEOPENERROR) {
7620 GSM_TerminateConnection(&Info->s); 7620 GSM_TerminateConnection(&Info->s);
7621 dbgprintf("Closing done\n"); 7621 dbgprintf("Closing done\n");
7622 } 7622 }
7623 if (error == ERR_DEVICEOPENERROR || error == ERR_NONE) break; 7623 if (error == ERR_DEVICEOPENERROR || error == ERR_NONE) break;
7624 j++; 7624 j++;
7625 } 7625 }
7626 num--; 7626 num--;
7627#endif 7627#endif
7628} 7628}
7629 7629
7630//#undef HAVE_PTHREAD 7630//#undef HAVE_PTHREAD
7631//#if 0 7631//#if 0
7632#if defined(WIN32) || defined(HAVE_PTHREAD) 7632#if defined(WIN32) || defined(HAVE_PTHREAD)
7633#ifdef HAVE_PTHREAD 7633#ifdef HAVE_PTHREAD
7634 pthread_t Thread[100]; 7634 pthread_t Thread[100];
7635#endif 7635#endif
7636 7636
7637void MakeSearchThread(int i) 7637void MakeSearchThread(int i)
7638{ 7638{
7639 num++; 7639 num++;
7640#ifdef HAVE_PTHREAD 7640#ifdef HAVE_PTHREAD
7641 if (pthread_create(&Thread[i],NULL,(void *)SearchPhoneThread,&SearchDevices[i])!=0) { 7641 if (pthread_create(&Thread[i],NULL,(void *)SearchPhoneThread,&SearchDevices[i])!=0) {
7642 dbgprintf("Error creating thread\n"); 7642 dbgprintf("Error creating thread\n");
7643 } 7643 }
7644#else 7644#else
7645 if (CreateThread((LPSECURITY_ATTRIBUTES)NULL,0, 7645 if (CreateThread((LPSECURITY_ATTRIBUTES)NULL,0,
7646 (LPTHREAD_START_ROUTINE)SearchPhoneThread,&SearchDevices[i], 7646 (LPTHREAD_START_ROUTINE)SearchPhoneThread,&SearchDevices[i],
7647 0,NULL)==NULL) { 7647 0,NULL)==NULL) {
7648 dbgprintf("Error creating thread\n"); 7648 dbgprintf("Error creating thread\n");
7649 } 7649 }
7650#endif 7650#endif
7651} 7651}
7652 7652
7653static void SearchPhone(int argc, char *argv[]) 7653static void SearchPhone(int argc, char *argv[])
7654{ 7654{
7655 int i,dev = 0, dev2 = 0; 7655 int i,dev = 0, dev2 = 0;
7656 7656
7657 SearchOutput = false; 7657 SearchOutput = false;
7658 if (argc == 3 && mystrncasecmp(argv[2], "-debug",0)) SearchOutput = true; 7658 if (argc == 3 && mystrncasecmp(argv[2], "-debug",0)) SearchOutput = true;
7659 7659
7660 num = 0; 7660 num = 0;
7661#ifdef WIN32 7661#ifdef WIN32
7662# ifdef GSM_ENABLE_IRDADEVICE 7662# ifdef GSM_ENABLE_IRDADEVICE
7663 sprintf(SearchDevices[dev].Device,""); 7663 sprintf(SearchDevices[dev].Device,"");
7664 sprintf(SearchDevices[dev].Connections[0].Connection,"irdaphonet"); 7664 sprintf(SearchDevices[dev].Connections[0].Connection,"irdaphonet");
7665 SearchDevices[dev].Connections[1].Connection[0] = 0; 7665 SearchDevices[dev].Connections[1].Connection[0] = 0;
7666 dev++; 7666 dev++;
7667# endif 7667# endif
7668# ifdef GSM_ENABLE_SERIALDEVICE 7668# ifdef GSM_ENABLE_SERIALDEVICE
7669 dev2 = dev; 7669 dev2 = dev;
7670 for(i=0;i<10;i++) { 7670 for(i=0;i<10;i++) {
7671 sprintf(SearchDevices[dev2].Device,"com%i:",i+1); 7671 sprintf(SearchDevices[dev2].Device,"com%i:",i+1);
7672 sprintf(SearchDevices[dev2].Connections[0].Connection,"fbusdlr3"); 7672 sprintf(SearchDevices[dev2].Connections[0].Connection,"fbusdlr3");
7673 sprintf(SearchDevices[dev2].Connections[1].Connection,"fbus"); 7673 sprintf(SearchDevices[dev2].Connections[1].Connection,"fbus");
7674 sprintf(SearchDevices[dev2].Connections[2].Connection,"at19200"); 7674 sprintf(SearchDevices[dev2].Connections[2].Connection,"at19200");
7675 sprintf(SearchDevices[dev2].Connections[3].Connection,"mbus"); 7675 sprintf(SearchDevices[dev2].Connections[3].Connection,"mbus");
7676 SearchDevices[dev2].Connections[4].Connection[0] = 0; 7676 SearchDevices[dev2].Connections[4].Connection[0] = 0;
7677 dev2++; 7677 dev2++;
7678 } 7678 }
7679# endif 7679# endif
7680#endif 7680#endif
7681#ifdef __linux__ 7681#ifdef __linux__
7682# ifdef GSM_ENABLE_IRDADEVICE 7682# ifdef GSM_ENABLE_IRDADEVICE
7683 for(i=0;i<6;i++) { 7683 for(i=0;i<6;i++) {
7684 sprintf(SearchDevices[dev].Device,"/dev/ircomm%i",i); 7684 sprintf(SearchDevices[dev].Device,"/dev/ircomm%i",i);
7685 sprintf(SearchDevices[dev].Connections[0].Connection,"irdaphonet"); 7685 sprintf(SearchDevices[dev].Connections[0].Connection,"irdaphonet");
7686 sprintf(SearchDevices[dev].Connections[1].Connection,"at19200"); 7686 sprintf(SearchDevices[dev].Connections[1].Connection,"at19200");
7687 SearchDevices[dev].Connections[2].Connection[0] = 0; 7687 SearchDevices[dev].Connections[2].Connection[0] = 0;
7688 dev++; 7688 dev++;
7689 } 7689 }
7690# endif 7690# endif
7691# ifdef GSM_ENABLE_SERIALDEVICE 7691# ifdef GSM_ENABLE_SERIALDEVICE
7692 dev2 = dev; 7692 dev2 = dev;
7693 for(i=0;i<10;i++) { 7693 for(i=0;i<10;i++) {
7694 sprintf(SearchDevices[dev2].Device,"/dev/ttyS%i",i); 7694 sprintf(SearchDevices[dev2].Device,"/dev/ttyS%i",i);
7695 sprintf(SearchDevices[dev2].Connections[0].Connection,"fbusdlr3"); 7695 sprintf(SearchDevices[dev2].Connections[0].Connection,"fbusdlr3");
7696 sprintf(SearchDevices[dev2].Connections[1].Connection,"fbus"); 7696 sprintf(SearchDevices[dev2].Connections[1].Connection,"fbus");
7697 sprintf(SearchDevices[dev2].Connections[2].Connection,"at19200"); 7697 sprintf(SearchDevices[dev2].Connections[2].Connection,"at19200");
7698 sprintf(SearchDevices[dev2].Connections[3].Connection,"mbus"); 7698 sprintf(SearchDevices[dev2].Connections[3].Connection,"mbus");
7699 SearchDevices[dev2].Connections[4].Connection[0] = 0; 7699 SearchDevices[dev2].Connections[4].Connection[0] = 0;
7700 dev2++; 7700 dev2++;
7701 } 7701 }
7702 for(i=0;i<8;i++) { 7702 for(i=0;i<8;i++) {
7703 sprintf(SearchDevices[dev2].Device,"/dev/ttyD00%i",i); 7703 sprintf(SearchDevices[dev2].Device,"/dev/ttyD00%i",i);
7704 sprintf(SearchDevices[dev2].Connections[0].Connection,"fbusdlr3"); 7704 sprintf(SearchDevices[dev2].Connections[0].Connection,"fbusdlr3");
7705 sprintf(SearchDevices[dev2].Connections[1].Connection,"fbus"); 7705 sprintf(SearchDevices[dev2].Connections[1].Connection,"fbus");
7706 sprintf(SearchDevices[dev2].Connections[2].Connection,"at19200"); 7706 sprintf(SearchDevices[dev2].Connections[2].Connection,"at19200");
7707 sprintf(SearchDevices[dev2].Connections[3].Connection,"mbus"); 7707 sprintf(SearchDevices[dev2].Connections[3].Connection,"mbus");
7708 SearchDevices[dev2].Connections[4].Connection[0] = 0; 7708 SearchDevices[dev2].Connections[4].Connection[0] = 0;
7709 dev2++; 7709 dev2++;
7710 } 7710 }
7711 for(i=0;i<4;i++) { 7711 for(i=0;i<4;i++) {
7712 sprintf(SearchDevices[dev2].Device,"/dev/usb/tts/%i",i); 7712 sprintf(SearchDevices[dev2].Device,"/dev/usb/tts/%i",i);
7713 sprintf(SearchDevices[dev2].Connections[0].Connection,"fbusdlr3"); 7713 sprintf(SearchDevices[dev2].Connections[0].Connection,"fbusdlr3");
7714 sprintf(SearchDevices[dev2].Connections[1].Connection,"fbus"); 7714 sprintf(SearchDevices[dev2].Connections[1].Connection,"fbus");
7715 sprintf(SearchDevices[dev2].Connections[2].Connection,"at19200"); 7715 sprintf(SearchDevices[dev2].Connections[2].Connection,"at19200");
7716 sprintf(SearchDevices[dev2].Connections[3].Connection,"mbus"); 7716 sprintf(SearchDevices[dev2].Connections[3].Connection,"mbus");
7717 SearchDevices[dev2].Connections[4].Connection[0] = 0; 7717 SearchDevices[dev2].Connections[4].Connection[0] = 0;
7718 dev2++; 7718 dev2++;
7719 } 7719 }
7720# endif 7720# endif
7721#endif 7721#endif
7722 for(i=0;i<dev;i++) MakeSearchThread(i); 7722 for(i=0;i<dev;i++) MakeSearchThread(i);
7723 while (num != 0) my_sleep(5); 7723 while (num != 0) my_sleep(5);
7724 for(i=dev;i<dev2;i++) MakeSearchThread(i); 7724 for(i=dev;i<dev2;i++) MakeSearchThread(i);
7725 while (num != 0) my_sleep(5); 7725 while (num != 0) my_sleep(5);
7726} 7726}
7727#endif /*Support for threads */ 7727#endif /*Support for threads */
7728// #if 0 7728// #if 0
7729static void NokiaGetADC(int argc, char *argv[]) 7729static void NokiaGetADC(int argc, char *argv[])
7730{ 7730{
7731 GSM_Init(true); 7731 GSM_Init(true);
7732 7732
7733#ifdef GSM_ENABLE_NOKIA_DCT3 7733#ifdef GSM_ENABLE_NOKIA_DCT3
7734 DCT3GetADC(argc,argv); 7734 DCT3GetADC(argc,argv);
7735#endif 7735#endif
7736#ifdef GSM_ENABLE_NOKIA_DCT4 7736#ifdef GSM_ENABLE_NOKIA_DCT4
7737 DCT4GetADC(argc, argv); 7737 DCT4GetADC(argc, argv);
7738#endif 7738#endif
7739 7739
7740 GSM_Terminate(); 7740 GSM_Terminate();
7741} 7741}
7742 7742
7743static void NokiaDisplayTest(int argc, char *argv[]) 7743static void NokiaDisplayTest(int argc, char *argv[])
7744{ 7744{
7745 GSM_Init(true); 7745 GSM_Init(true);
7746 7746
7747#ifdef GSM_ENABLE_NOKIA_DCT3 7747#ifdef GSM_ENABLE_NOKIA_DCT3
7748 DCT3DisplayTest(argc,argv); 7748 DCT3DisplayTest(argc,argv);
7749#endif 7749#endif
7750#ifdef GSM_ENABLE_NOKIA_DCT4 7750#ifdef GSM_ENABLE_NOKIA_DCT4
7751 DCT4DisplayTest(argc, argv); 7751 DCT4DisplayTest(argc, argv);
7752#endif 7752#endif
7753 7753
7754 GSM_Terminate(); 7754 GSM_Terminate();
7755} 7755}
7756 7756
7757static void NokiaGetT9(int argc, char *argv[]) 7757static void NokiaGetT9(int argc, char *argv[])
7758{ 7758{
7759 GSM_Init(true); 7759 GSM_Init(true);
7760 7760
7761#ifdef GSM_ENABLE_NOKIA_DCT3 7761#ifdef GSM_ENABLE_NOKIA_DCT3
7762 DCT3GetT9(argc,argv); 7762 DCT3GetT9(argc,argv);
7763#endif 7763#endif
7764#ifdef GSM_ENABLE_NOKIA_DCT4 7764#ifdef GSM_ENABLE_NOKIA_DCT4
7765 DCT4GetT9(argc, argv); 7765 DCT4GetT9(argc, argv);
7766#endif 7766#endif
7767 7767
7768 GSM_Terminate(); 7768 GSM_Terminate();
7769} 7769}
7770 7770
7771static void NokiaVibraTest(int argc, char *argv[]) 7771static void NokiaVibraTest(int argc, char *argv[])
7772{ 7772{
7773 GSM_Init(true); 7773 GSM_Init(true);
7774 7774
7775#ifdef GSM_ENABLE_NOKIA_DCT3 7775#ifdef GSM_ENABLE_NOKIA_DCT3
7776 DCT3VibraTest(argc,argv); 7776 DCT3VibraTest(argc,argv);
7777#endif 7777#endif
7778#ifdef GSM_ENABLE_NOKIA_DCT4 7778#ifdef GSM_ENABLE_NOKIA_DCT4
7779 DCT4VibraTest(argc, argv); 7779 DCT4VibraTest(argc, argv);
7780#endif 7780#endif
7781 7781
7782 GSM_Terminate(); 7782 GSM_Terminate();
7783} 7783}
7784 7784
7785static GSM_Parameters Parameters[] = { 7785static GSM_Parameters Parameters[] = {
7786 {"--identify", 0, 0, Identify, {H_Info,0}, ""}, 7786 {"--identify", 0, 0, Identify, {H_Info,0}, ""},
7787 {"--version", 0, 0, Version, {H_Other,0}, ""}, 7787 {"--version", 0, 0, Version, {H_Other,0}, ""},
7788 {"--getdisplaystatus", 0, 0, GetDisplayStatus, {H_Info,0}, ""}, 7788 {"--getdisplaystatus", 0, 0, GetDisplayStatus, {H_Info,0}, ""},
7789 {"--monitor", 0, 1, Monitor, {H_Info,H_Network,H_Call,0},"[times]"}, 7789 {"--monitor", 0, 1, Monitor, {H_Info,H_Network,H_Call,0},"[times]"},
7790 {"--setautonetworklogin", 0, 0, SetAutoNetworkLogin, {H_Network,0}, ""}, 7790 {"--setautonetworklogin", 0, 0, SetAutoNetworkLogin, {H_Network,0}, ""},
7791 {"--listnetworks", 0, 0, ListNetworks, {H_Network,0}, ""}, 7791 {"--listnetworks", 0, 0, ListNetworks, {H_Network,0}, ""},
7792 {"--getgprspoint", 1, 2, GetGPRSPoint, {H_Nokia,H_Network,0}, "start [stop]"}, 7792 {"--getgprspoint", 1, 2, GetGPRSPoint, {H_Nokia,H_Network,0}, "start [stop]"},
7793 {"--addfolder", 2, 2, AddFolder, {H_Filesystem,0}, "parentfolderID name"}, 7793 {"--addfolder", 2, 2, AddFolder, {H_Filesystem,0}, "parentfolderID name"},
7794 {"--getfilesystem", 0, 1, GetFileSystem, {H_Filesystem,0}, "[-flatall|-flat]"}, 7794 {"--getfilesystem", 0, 1, GetFileSystem, {H_Filesystem,0}, "[-flatall|-flat]"},
7795 {"--getfilesystemstatus", 0, 0, GetFileSystemStatus, {H_Filesystem,0}, ""}, 7795 {"--getfilesystemstatus", 0, 0, GetFileSystemStatus, {H_Filesystem,0}, ""},
7796 {"--getfiles", 1,40, GetFiles, {H_Filesystem,0}, "ID1, ID2, ..."}, 7796 {"--getfiles", 1,40, GetFiles, {H_Filesystem,0}, "ID1, ID2, ..."},
7797 {"--getfilefolder", 1,40, GetFileFolder, {H_Filesystem,0}, "ID1, ID2, ..."}, 7797 {"--getfilefolder", 1,40, GetFileFolder, {H_Filesystem,0}, "ID1, ID2, ..."},
7798 {"--addfile", 2, 6, AddFile, {H_Filesystem,0}, "folderID name [-type JAR|BMP|PNG|GIF|JPG|MIDI|WBMP|AMR|3GP|NRT][-readonly][-protected][-system][-hidden][-newtime]"}, 7798 {"--addfile", 2, 6, AddFile, {H_Filesystem,0}, "folderID name [-type JAR|BMP|PNG|GIF|JPG|MIDI|WBMP|AMR|3GP|NRT][-readonly][-protected][-system][-hidden][-newtime]"},
7799 {"--nokiaaddfile", 2, 5, NokiaAddFile, {H_Filesystem,H_Nokia,0},"MMSUnreadInbox|MMSReadInbox|MMSOutbox|MMSDrafts|MMSSent file sender title"}, 7799 {"--nokiaaddfile", 2, 5, NokiaAddFile, {H_Filesystem,H_Nokia,0},"MMSUnreadInbox|MMSReadInbox|MMSOutbox|MMSDrafts|MMSSent file sender title"},
7800 {"--nokiaaddfile", 2, 5, NokiaAddFile, {H_Filesystem,H_Nokia,0},"Application|Game file [-readonly]"}, 7800 {"--nokiaaddfile", 2, 5, NokiaAddFile, {H_Filesystem,H_Nokia,0},"Application|Game file [-readonly]"},
7801 {"--nokiaaddfile", 2, 5, NokiaAddFile, {H_Filesystem,H_Nokia,0},"Gallery|Tones file [-name name][-protected][-readonly][-system][-hidden][-newtime]"}, 7801 {"--nokiaaddfile", 2, 5, NokiaAddFile, {H_Filesystem,H_Nokia,0},"Gallery|Tones file [-name name][-protected][-readonly][-system][-hidden][-newtime]"},
7802 {"--deletefiles", 1,20, DeleteFiles, {H_Filesystem,0}, "fileID"}, 7802 {"--deletefiles", 1,20, DeleteFiles, {H_Filesystem,0}, "fileID"},
7803 {"--playringtone", 1, 1, PlayRingtone, {H_Ringtone,0}, "file"}, 7803 {"--playringtone", 1, 1, PlayRingtone, {H_Ringtone,0}, "file"},
7804 {"--playsavedringtone", 1, 1, DCT4PlaySavedRingtone, {H_Ringtone,0}, ""}, 7804 {"--playsavedringtone", 1, 1, DCT4PlaySavedRingtone, {H_Ringtone,0}, ""},
7805 {"--getdatetime", 0, 0, GetDateTime, {H_DateTime,0}, ""}, 7805 {"--getdatetime", 0, 0, GetDateTime, {H_DateTime,0}, ""},
7806 {"--setdatetime", 0, 0, SetDateTime, {H_DateTime,0}, ""}, 7806 {"--setdatetime", 0, 0, SetDateTime, {H_DateTime,0}, ""},
7807 {"--getalarm", 0, 0, GetAlarm, {H_DateTime,0}, ""}, 7807 {"--getalarm", 0, 0, GetAlarm, {H_DateTime,0}, ""},
7808 {"--setalarm", 2, 2, SetAlarm, {H_DateTime,0}, "hour minute"}, 7808 {"--setalarm", 2, 2, SetAlarm, {H_DateTime,0}, "hour minute"},
7809 {"--resetphonesettings", 1, 1, ResetPhoneSettings, {H_Settings,0}, "PHONE|DEV|UIF|ALL|FACTORY"}, 7809 {"--resetphonesettings", 1, 1, ResetPhoneSettings, {H_Settings,0}, "PHONE|DEV|UIF|ALL|FACTORY"},
7810 {"--getmemory", 2, 3, GetMemory, {H_Memory,0}, "DC|MC|RC|ON|VM|SM|ME|FD start [stop]"}, 7810 {"--getmemory", 2, 3, GetMemory, {H_Memory,0}, "DC|MC|RC|ON|VM|SM|ME|FD start [stop]"},
7811 {"--getallmemory", 1, 1, GetAllMemory, {H_Memory,0}, "DC|MC|RC|ON|VM|SM|ME|FD"}, 7811 {"--getallmemory", 1, 1, GetAllMemory, {H_Memory,0}, "DC|MC|RC|ON|VM|SM|ME|FD"},
7812 {"--searchmemory", 1, 1, SearchMemory, {H_Memory,0}, "text"}, 7812 {"--searchmemory", 1, 1, SearchMemory, {H_Memory,0}, "text"},
7813 {"--listmemorycategory", 1, 1, ListMemoryCategory, {H_Memory, H_Category,0},"text|number"}, 7813 {"--listmemorycategory", 1, 1, ListMemoryCategory, {H_Memory, H_Category,0},"text|number"},
7814 {"--getfmstation", 1, 2, GetFMStation, {H_FM,0}, "start [stop]"}, 7814 {"--getfmstation", 1, 2, GetFMStation, {H_FM,0}, "start [stop]"},
7815 {"--getsmsc", 1, 2, GetSMSC, {H_SMS,0}, "start [stop]"}, 7815 {"--getsmsc", 1, 2, GetSMSC, {H_SMS,0}, "start [stop]"},
7816 {"--getsms", 2, 3, GetSMS, {H_SMS,0}, "folder start [stop]"}, 7816 {"--getsms", 2, 3, GetSMS, {H_SMS,0}, "folder start [stop]"},
7817 {"--deletesms", 2, 3, DeleteSMS, {H_SMS,0}, "folder start [stop]"}, 7817 {"--deletesms", 2, 3, DeleteSMS, {H_SMS,0}, "folder start [stop]"},
7818 {"--deleteallsms", 1, 1, DeleteAllSMS, {H_SMS,0}, "folder"}, 7818 {"--deleteallsms", 1, 1, DeleteAllSMS, {H_SMS,0}, "folder"},
7819 {"--getsmsfolders", 0, 0, GetSMSFolders, {H_SMS,0}, ""}, 7819 {"--getsmsfolders", 0, 0, GetSMSFolders, {H_SMS,0}, ""},
7820 {"--getallsms", 0, 0, GetAllSMS, {H_SMS,0}, ""}, 7820 {"--getallsms", 0, 0, GetAllSMS, {H_SMS,0}, ""},
7821 {"--geteachsms", 0, 0, GetEachSMS, {H_SMS,0}, ""}, 7821 {"--geteachsms", 0, 0, GetEachSMS, {H_SMS,0}, ""},
7822 7822
7823 #define SMS_TEXT_OPTIONS"[-inputunicode][-16bit][-flash][-len len][-autolen len][-unicode][-enablevoice][-disablevoice][-enablefax][-disablefax][-enableemail][-disableemail][-voidsms][-replacemessages ID][-replacefile file]" 7823 #define SMS_TEXT_OPTIONS"[-inputunicode][-16bit][-flash][-len len][-autolen len][-unicode][-enablevoice][-disablevoice][-enablefax][-disablefax][-enableemail][-disableemail][-voidsms][-replacemessages ID][-replacefile file]"
7824 #define SMS_PICTURE_OPTIONS"[-text text][-unicode][-alcatelbmmi]" 7824 #define SMS_PICTURE_OPTIONS"[-text text][-unicode][-alcatelbmmi]"
7825 #define SMS_PROFILE_OPTIONS"[-name name][-bitmap bitmap][-ringtone ringtone]" 7825 #define SMS_PROFILE_OPTIONS"[-name name][-bitmap bitmap][-ringtone ringtone]"
7826 #define SMS_EMS_OPTIONS "[-unicode][-16bit][-format lcrasbiut][-text text][-unicodefiletext file][-defsound ID][-defanimation ID][-tone10 file][-tone10long file][-tone12 file][-tone12long file][-toneSE file][-toneSElong file][-fixedbitmap file][-variablebitmap file][-variablebitmaplong file][-animation frames file1 ...][-protected number]" 7826 #define SMS_EMS_OPTIONS "[-unicode][-16bit][-format lcrasbiut][-text text][-unicodefiletext file][-defsound ID][-defanimation ID][-tone10 file][-tone10long file][-tone12 file][-tone12long file][-toneSE file][-toneSElong file][-fixedbitmap file][-variablebitmap file][-variablebitmaplong file][-animation frames file1 ...][-protected number]"
7827 #define SMS_SMSTEMPLATE_OPTIONS"[-unicode][-text text][-unicodefiletext file][-defsound ID][-defanimation ID][-tone10 file][-tone10long file][-tone12 file][-tone12long file][-toneSE file][-toneSElong file][-variablebitmap file][-variablebitmaplong file][-animation frames file1 ...]" 7827 #define SMS_SMSTEMPLATE_OPTIONS"[-unicode][-text text][-unicodefiletext file][-defsound ID][-defanimation ID][-tone10 file][-tone10long file][-tone12 file][-tone12long file][-toneSE file][-toneSElong file][-variablebitmap file][-variablebitmaplong file][-animation frames file1 ...]"
7828 #define SMS_ANIMATION_OPTIONS"" 7828 #define SMS_ANIMATION_OPTIONS""
7829 #define SMS_OPERATOR_OPTIONS"[-netcode netcode][-biglogo]" 7829 #define SMS_OPERATOR_OPTIONS"[-netcode netcode][-biglogo]"
7830 #define SMS_SAVE_OPTIONS"[-folder id][-unread][-read][-unsent][-sent][-sender number]" 7830 #define SMS_SAVE_OPTIONS"[-folder id][-unread][-read][-unsent][-sent][-sender number]"
7831 #define SMS_SEND_OPTIONS"[-report][-validity HOUR|6HOURS|DAY|3DAYS|WEEK|MAX][-save [-folder number]]" 7831 #define SMS_SEND_OPTIONS"[-report][-validity HOUR|6HOURS|DAY|3DAYS|WEEK|MAX][-save [-folder number]]"
7832 #define SMS_COMMON_OPTIONS"[-smscset number][-smscnumber number][-reply][-maxsms num]" 7832 #define SMS_COMMON_OPTIONS"[-smscset number][-smscnumber number][-reply][-maxsms num]"
7833 7833
7834 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,0}, "TEXT " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS SMS_TEXT_OPTIONS}, 7834 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,0}, "TEXT " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS SMS_TEXT_OPTIONS},
7835 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_Ringtone,0}, "RINGTONE file " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS}, 7835 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_Ringtone,0}, "RINGTONE file " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS},
7836 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_Logo,0}, "OPERATOR file " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS SMS_OPERATOR_OPTIONS}, 7836 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_Logo,0}, "OPERATOR file " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS SMS_OPERATOR_OPTIONS},
7837 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_Logo,0}, "CALLER file " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS}, 7837 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_Logo,0}, "CALLER file " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS},
7838 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_Logo,0}, "PICTURE file " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS SMS_PICTURE_OPTIONS}, 7838 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_Logo,0}, "PICTURE file " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS SMS_PICTURE_OPTIONS},
7839 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_Logo,0}, "ANIMATION frames file1 file2... " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS SMS_ANIMATION_OPTIONS}, 7839 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_Logo,0}, "ANIMATION frames file1 file2... " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS SMS_ANIMATION_OPTIONS},
7840 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_MMS,0}, "MMSINDICATOR URL Title Sender " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS}, 7840 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_MMS,0}, "MMSINDICATOR URL Title Sender " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS},
7841#ifdef GSM_ENABLE_BACKUP 7841#ifdef GSM_ENABLE_BACKUP
7842 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_WAP,0}, "BOOKMARK file location " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS}, 7842 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_WAP,0}, "BOOKMARK file location " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS},
7843 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_WAP,0}, "WAPSETTINGS file location DATA|GPRS " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS}, 7843 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_WAP,0}, "WAPSETTINGS file location DATA|GPRS " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS},
7844 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_MMS,0}, "MMSSETTINGS file location " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS}, 7844 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_MMS,0}, "MMSSETTINGS file location " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS},
7845 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_Calendar,0}, "CALENDAR file location " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS}, 7845 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_Calendar,0}, "CALENDAR file location " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS},
7846 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_ToDo,0}, "TODO file location " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS}, 7846 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_ToDo,0}, "TODO file location " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS},
7847 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_Memory,0}, "VCARD10|VCARD21 file SM|ME location [-nokia]" SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS}, 7847 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_Memory,0}, "VCARD10|VCARD21 file SM|ME location [-nokia]" SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS},
7848#endif 7848#endif
7849 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_Settings,0}, "PROFILE " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS SMS_PROFILE_OPTIONS}, 7849 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,H_Settings,0}, "PROFILE " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS SMS_PROFILE_OPTIONS},
7850 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,0}, "EMS " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS SMS_EMS_OPTIONS}, 7850 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,0}, "EMS " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS SMS_EMS_OPTIONS},
7851 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,0}, "SMSTEMPLATE " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS SMS_SMSTEMPLATE_OPTIONS}, 7851 {"--savesms", 1,30, SendSaveDisplaySMS, {H_SMS,0}, "SMSTEMPLATE " SMS_SAVE_OPTIONS SMS_COMMON_OPTIONS SMS_SMSTEMPLATE_OPTIONS},
7852 7852
7853 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,0}, "TEXT destination " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS SMS_TEXT_OPTIONS}, 7853 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,0}, "TEXT destination " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS SMS_TEXT_OPTIONS},
7854 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_Ringtone,0}, "RINGTONE destination file " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS}, 7854 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_Ringtone,0}, "RINGTONE destination file " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS},
7855 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_Logo,0}, "OPERATOR destination file " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS SMS_OPERATOR_OPTIONS}, 7855 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_Logo,0}, "OPERATOR destination file " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS SMS_OPERATOR_OPTIONS},
7856 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_Logo,0}, "CALLER destination file " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS}, 7856 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_Logo,0}, "CALLER destination file " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS},
7857 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_Logo,0}, "PICTURE destination file " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS SMS_PICTURE_OPTIONS}, 7857 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_Logo,0}, "PICTURE destination file " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS SMS_PICTURE_OPTIONS},
7858 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_Logo,0}, "ANIMATION destination frames file1 file2... " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS SMS_ANIMATION_OPTIONS}, 7858 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_Logo,0}, "ANIMATION destination frames file1 file2... " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS SMS_ANIMATION_OPTIONS},
7859 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_MMS,0}, "MMSINDICATOR destination URL Title Sender " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS}, 7859 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_MMS,0}, "MMSINDICATOR destination URL Title Sender " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS},
7860#ifdef GSM_ENABLE_BACKUP 7860#ifdef GSM_ENABLE_BACKUP
7861 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_WAP,0}, "BOOKMARK destination file location " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS}, 7861 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_WAP,0}, "BOOKMARK destination file location " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS},
7862 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_WAP,0}, "WAPSETTINGS destination file location DATA|GPRS " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS}, 7862 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_WAP,0}, "WAPSETTINGS destination file location DATA|GPRS " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS},
7863 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_MMS,0}, "MMSSETTINGS destination file location " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS}, 7863 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_MMS,0}, "MMSSETTINGS destination file location " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS},
7864 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_Calendar,0}, "CALENDAR destination file location " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS}, 7864 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_Calendar,0}, "CALENDAR destination file location " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS},
7865 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_ToDo,0}, "TODO destination file location " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS}, 7865 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_ToDo,0}, "TODO destination file location " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS},
7866 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_Memory,0}, "VCARD10|VCARD21 destination file SM|ME location [-nokia]" SMS_SEND_OPTIONS SMS_COMMON_OPTIONS}, 7866 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_Memory,0}, "VCARD10|VCARD21 destination file SM|ME location [-nokia]" SMS_SEND_OPTIONS SMS_COMMON_OPTIONS},
7867#endif 7867#endif
7868 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_Settings,0}, "PROFILE destination " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS ""SMS_PROFILE_OPTIONS}, 7868 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_Settings,0}, "PROFILE destination " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS ""SMS_PROFILE_OPTIONS},
7869 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,0}, "EMS destination " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS SMS_EMS_OPTIONS}, 7869 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,0}, "EMS destination " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS SMS_EMS_OPTIONS},
7870 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,0}, "SMSTEMPLATE destination " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS SMS_SMSTEMPLATE_OPTIONS}, 7870 {"--sendsms", 2,30, SendSaveDisplaySMS, {H_SMS,0}, "SMSTEMPLATE destination " SMS_SEND_OPTIONS SMS_COMMON_OPTIONS SMS_SMSTEMPLATE_OPTIONS},
7871 7871
7872 {"--displaysms", 2,30, SendSaveDisplaySMS, {H_SMS,0}, "... (options like in sendsms)"}, 7872 {"--displaysms", 2,30, SendSaveDisplaySMS, {H_SMS,0}, "... (options like in sendsms)"},
7873 7873
7874 {"--addsmsfolder", 1, 1, AddSMSFolder, {H_SMS,0}, "name"}, 7874 {"--addsmsfolder", 1, 1, AddSMSFolder, {H_SMS,0}, "name"},
7875#ifdef HAVE_MYSQL_MYSQL_H 7875#ifdef HAVE_MYSQL_MYSQL_H
7876 {"--smsd", 2, 2, SMSDaemon, {H_SMS,H_Other,0}, "MYSQL configfile"}, 7876 {"--smsd", 2, 2, SMSDaemon, {H_SMS,H_Other,0}, "MYSQL configfile"},
7877#endif 7877#endif
7878 {"--smsd", 2, 2, SMSDaemon, {H_SMS,H_Other,0}, "FILES configfile"}, 7878 {"--smsd", 2, 2, SMSDaemon, {H_SMS,H_Other,0}, "FILES configfile"},
7879 {"--sendsmsdsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_Other,0}, "TEXT|WAPSETTINGS|... destination FILES|MYSQL configfile ... (options like in sendsms)"}, 7879 {"--sendsmsdsms", 2,30, SendSaveDisplaySMS, {H_SMS,H_Other,0}, "TEXT|WAPSETTINGS|... destination FILES|MYSQL configfile ... (options like in sendsms)"},
7880 {"--getringtone", 1, 2, GetRingtone, {H_Ringtone,0}, "location [file]"}, 7880 {"--getringtone", 1, 2, GetRingtone, {H_Ringtone,0}, "location [file]"},
7881 {"--getphoneringtone", 1, 2, GetRingtone, {H_Ringtone,0}, "location [file]"}, 7881 {"--getphoneringtone", 1, 2, GetRingtone, {H_Ringtone,0}, "location [file]"},
7882 {"--getringtoneslist", 0, 0, GetRingtonesList, {H_Ringtone,0}, ""}, 7882 {"--getringtoneslist", 0, 0, GetRingtonesList, {H_Ringtone,0}, ""},
7883 {"--setringtone", 1, 6, SetRingtone, {H_Ringtone,0}, "file [-location location][-scale][-name name]"}, 7883 {"--setringtone", 1, 6, SetRingtone, {H_Ringtone,0}, "file [-location location][-scale][-name name]"},
7884 {"--nokiacomposer", 1, 1, NokiaComposer, {H_Ringtone,H_Nokia,0}, "file"}, 7884 {"--nokiacomposer", 1, 1, NokiaComposer, {H_Ringtone,H_Nokia,0}, "file"},
7885 {"--copyringtone", 2, 3, CopyRingtone, {H_Ringtone,0}, "source destination [RTTL|BINARY]"}, 7885 {"--copyringtone", 2, 3, CopyRingtone, {H_Ringtone,0}, "source destination [RTTL|BINARY]"},
7886 {"--getussd", 1, 1, GetUSSD, {H_Call,0}, "code"}, 7886 {"--getussd", 1, 1, GetUSSD, {H_Call,0}, "code"},
7887 {"--dialvoice", 1, 2, DialVoice, {H_Call,0}, "number [show|hide]"}, 7887 {"--dialvoice", 1, 2, DialVoice, {H_Call,0}, "number [show|hide]"},
7888 {"--getspeeddial", 1, 2, GetSpeedDial, {H_Call,H_Memory,0}, "start [stop]"}, 7888 {"--getspeeddial", 1, 2, GetSpeedDial, {H_Call,H_Memory,0}, "start [stop]"},
7889 {"--cancelcall", 0, 1, CancelCall, {H_Call,0}, "[ID]"}, 7889 {"--cancelcall", 0, 1, CancelCall, {H_Call,0}, "[ID]"},
7890 {"--answercall", 0, 1, AnswerCall, {H_Call,0}, "[ID]"}, 7890 {"--answercall", 0, 1, AnswerCall, {H_Call,0}, "[ID]"},
7891 {"--unholdcall", 1, 1, UnholdCall, {H_Call,0}, "ID"}, 7891 {"--unholdcall", 1, 1, UnholdCall, {H_Call,0}, "ID"},
7892 {"--holdcall", 1, 1, HoldCall, {H_Call,0}, "ID"}, 7892 {"--holdcall", 1, 1, HoldCall, {H_Call,0}, "ID"},
7893 {"--conferencecall", 1, 1, ConferenceCall, {H_Call,0}, "ID"}, 7893 {"--conferencecall", 1, 1, ConferenceCall, {H_Call,0}, "ID"},
7894 {"--splitcall", 1, 1, SplitCall, {H_Call,0}, "ID"}, 7894 {"--splitcall", 1, 1, SplitCall, {H_Call,0}, "ID"},
7895 {"--switchcall", 0, 1, SwitchCall, {H_Call,0}, "[ID]"}, 7895 {"--switchcall", 0, 1, SwitchCall, {H_Call,0}, "[ID]"},
7896 {"--transfercall", 0, 1, TransferCall, {H_Call,0}, "[ID]"}, 7896 {"--transfercall", 0, 1, TransferCall, {H_Call,0}, "[ID]"},
7897 {"--divert", 3, 5, CallDivert, {H_Call,0}, "get|set all|busy|noans|outofreach all|voice|fax|data [number timeout]"}, 7897 {"--divert", 3, 5, CallDivert, {H_Call,0}, "get|set all|busy|noans|outofreach all|voice|fax|data [number timeout]"},
7898 {"--canceldiverts", 0, 0, CancelAllDiverts, {H_Call,0}, ""}, 7898 {"--canceldiverts", 0, 0, CancelAllDiverts, {H_Call,0}, ""},
7899 {"--senddtmf", 1, 1, SendDTMF, {H_Call,0}, "sequence"}, 7899 {"--senddtmf", 1, 1, SendDTMF, {H_Call,0}, "sequence"},
7900 {"--getcalendarsettings", 0, 0, GetCalendarSettings, {H_Calendar,H_Settings,0},""}, 7900 {"--getcalendarsettings", 0, 0, GetCalendarSettings, {H_Calendar,H_Settings,0},""},
7901 {"--getalltodo", 0, 0, GetAllToDo, {H_ToDo,0}, ""}, 7901 {"--getalltodo", 0, 0, GetAllToDo, {H_ToDo,0}, ""},
7902 {"--listtodocategory", 1, 1, ListToDoCategory, {H_ToDo, H_Category,0}, "text|number"}, 7902 {"--listtodocategory", 1, 1, ListToDoCategory, {H_ToDo, H_Category,0}, "text|number"},
7903 {"--gettodo", 1, 2, GetToDo, {H_ToDo,0}, "start [stop]"}, 7903 {"--gettodo", 1, 2, GetToDo, {H_ToDo,0}, "start [stop]"},
7904 {"--deletetodo", 1, 2, DeleteToDo, {H_ToDo,0}, "start [stop]"}, 7904 {"--deletetodo", 1, 2, DeleteToDo, {H_ToDo,0}, "start [stop]"},
7905 {"--getnote", 1, 2, GetNote, {H_Note,0}, "start [stop]"}, 7905 {"--getnote", 1, 2, GetNote, {H_Note,0}, "start [stop]"},
7906 {"--deletecalendar", 1, 2, DeleteCalendar, {H_Calendar,0}, "start [stop]"}, 7906 {"--deletecalendar", 1, 2, DeleteCalendar, {H_Calendar,0}, "start [stop]"},
7907 {"--getallcalendar", 0, 0, GetAllCalendar, {H_Calendar,0}, ""}, 7907 {"--getallcalendar", 0, 0, GetAllCalendar, {H_Calendar,0}, ""},
7908 {"--getcalendar", 1, 2, GetCalendar, {H_Calendar,0}, "start [stop]"}, 7908 {"--getcalendar", 1, 2, GetCalendar, {H_Calendar,0}, "start [stop]"},
7909 {"--getcategory", 2, 3, GetCategory, {H_Category,H_ToDo,H_Memory,0},"TODO|PHONEBOOK start [stop]"}, 7909 {"--getcategory", 2, 3, GetCategory, {H_Category,H_ToDo,H_Memory,0},"TODO|PHONEBOOK start [stop]"},
7910 {"--getallcategory", 1, 1, GetAllCategories, {H_Category,H_ToDo,H_Memory,0},"TODO|PHONEBOOK"}, 7910 {"--getallcategory", 1, 1, GetAllCategories, {H_Category,H_ToDo,H_Memory,0},"TODO|PHONEBOOK"},
7911 {"--reset", 1, 1, Reset, {H_Other,0}, "SOFT|HARD"}, 7911 {"--reset", 1, 1, Reset, {H_Other,0}, "SOFT|HARD"},
7912 {"--getprofile", 1, 2, GetProfile, {H_Settings,0}, "start [stop]"}, 7912 {"--getprofile", 1, 2, GetProfile, {H_Settings,0}, "start [stop]"},
7913 {"--getsecuritystatus", 0, 0, GetSecurityStatus, {H_Info,0}, ""}, 7913 {"--getsecuritystatus", 0, 0, GetSecurityStatus, {H_Info,0}, ""},
7914 {"--entersecuritycode", 2, 2, EnterSecurityCode, {H_Other,0}, "PIN|PUK|PIN2|PUK2 code"}, 7914 {"--entersecuritycode", 2, 2, EnterSecurityCode, {H_Other,0}, "PIN|PUK|PIN2|PUK2 code"},
7915 {"--deletewapbookmark", 1, 2, DeleteWAPBookmark, {H_WAP,0}, "start [stop]"}, 7915 {"--deletewapbookmark", 1, 2, DeleteWAPBookmark, {H_WAP,0}, "start [stop]"},
7916 {"--getwapbookmark", 1, 2, GetWAPBookmark, {H_WAP,0}, "start [stop]"}, 7916 {"--getwapbookmark", 1, 2, GetWAPBookmark, {H_WAP,0}, "start [stop]"},
7917 {"--getwapsettings", 1, 2, GetWAPMMSSettings, {H_WAP,0}, "start [stop]"}, 7917 {"--getwapsettings", 1, 2, GetWAPMMSSettings, {H_WAP,0}, "start [stop]"},
7918 {"--getmmssettings", 1, 2, GetWAPMMSSettings, {H_MMS,0}, "start [stop]"}, 7918 {"--getmmssettings", 1, 2, GetWAPMMSSettings, {H_MMS,0}, "start [stop]"},
7919 {"--getsyncmlsettings", 1, 2, GetSyncMLSettings, {H_WAP,0}, "start [stop]"}, 7919 {"--getsyncmlsettings", 1, 2, GetSyncMLSettings, {H_WAP,0}, "start [stop]"},
7920 {"--getchatsettings", 1, 2, GetChatSettings, {H_WAP,0}, "start [stop]"}, 7920 {"--getchatsettings", 1, 2, GetChatSettings, {H_WAP,0}, "start [stop]"},
7921 {"--savemmsfile", 3, 15,SaveMMSFile, {H_MMS,0}, "file [-subject text][-text text]"}, 7921 {"--savemmsfile", 3, 15,SaveMMSFile, {H_MMS,0}, "file [-subject text][-text text]"},
7922 {"--getbitmap", 1, 3, GetBitmap, {H_Logo,0}, "STARTUP [file]"}, 7922 {"--getbitmap", 1, 3, GetBitmap, {H_Logo,0}, "STARTUP [file]"},
7923 {"--getbitmap", 1, 3, GetBitmap, {H_Logo,0}, "CALLER location [file]"}, 7923 {"--getbitmap", 1, 3, GetBitmap, {H_Logo,0}, "CALLER location [file]"},
7924 {"--getbitmap", 1, 3, GetBitmap, {H_Logo,0}, "OPERATOR [file]"}, 7924 {"--getbitmap", 1, 3, GetBitmap, {H_Logo,0}, "OPERATOR [file]"},
7925 {"--getbitmap", 1, 3, GetBitmap, {H_Logo,0}, "PICTURE location [file]"}, 7925 {"--getbitmap", 1, 3, GetBitmap, {H_Logo,0}, "PICTURE location [file]"},
7926 {"--getbitmap", 1, 3, GetBitmap, {H_Logo,0}, "TEXT"}, 7926 {"--getbitmap", 1, 3, GetBitmap, {H_Logo,0}, "TEXT"},
7927 {"--getbitmap", 1, 3, GetBitmap, {H_Logo,0}, "DEALER"}, 7927 {"--getbitmap", 1, 3, GetBitmap, {H_Logo,0}, "DEALER"},
7928 {"--setbitmap", 1, 4, SetBitmap, {H_Logo,0}, "STARTUP file|1|2|3"}, 7928 {"--setbitmap", 1, 4, SetBitmap, {H_Logo,0}, "STARTUP file|1|2|3"},
7929 {"--setbitmap", 1, 4, SetBitmap, {H_Logo,0}, "COLOURSTARTUP [fileID]"}, 7929 {"--setbitmap", 1, 4, SetBitmap, {H_Logo,0}, "COLOURSTARTUP [fileID]"},
7930 {"--setbitmap", 1, 4, SetBitmap, {H_Logo,0}, "WALLPAPER fileID"}, 7930 {"--setbitmap", 1, 4, SetBitmap, {H_Logo,0}, "WALLPAPER fileID"},
7931 {"--setbitmap", 1, 4, SetBitmap, {H_Logo,0}, "CALLER location [file]"}, 7931 {"--setbitmap", 1, 4, SetBitmap, {H_Logo,0}, "CALLER location [file]"},
7932 {"--setbitmap", 1, 4, SetBitmap, {H_Logo,0}, "OPERATOR [file [netcode]]"}, 7932 {"--setbitmap", 1, 4, SetBitmap, {H_Logo,0}, "OPERATOR [file [netcode]]"},
7933 {"--setbitmap", 1, 4, SetBitmap, {H_Logo,0}, "COLOUROPERATOR [fileID [netcode]]"}, 7933 {"--setbitmap", 1, 4, SetBitmap, {H_Logo,0}, "COLOUROPERATOR [fileID [netcode]]"},
7934 {"--setbitmap", 1, 4, SetBitmap, {H_Logo,0}, "PICTURE file location [text]"}, 7934 {"--setbitmap", 1, 4, SetBitmap, {H_Logo,0}, "PICTURE file location [text]"},
7935 {"--setbitmap", 1, 4, SetBitmap, {H_Logo,0}, "TEXT text"}, 7935 {"--setbitmap", 1, 4, SetBitmap, {H_Logo,0}, "TEXT text"},
7936 {"--setbitmap", 1, 4, SetBitmap, {H_Logo,0}, "DEALER text"}, 7936 {"--setbitmap", 1, 4, SetBitmap, {H_Logo,0}, "DEALER text"},
7937 {"--copybitmap", 1, 3, CopyBitmap, {H_Logo,0}, "inputfile [outputfile [OPERATOR|PICTURE|STARTUP|CALLER]]"}, 7937 {"--copybitmap", 1, 3, CopyBitmap, {H_Logo,0}, "inputfile [outputfile [OPERATOR|PICTURE|STARTUP|CALLER]]"},
7938 {"--presskeysequence", 1, 1, PressKeySequence, {H_Other,0}, "mMnNpPuUdD+-123456789*0#gGrRwW"}, 7938 {"--presskeysequence", 1, 1, PressKeySequence, {H_Other,0}, "mMnNpPuUdD+-123456789*0#gGrRwW"},
7939#if defined(WIN32) || defined(HAVE_PTHREAD) 7939#if defined(WIN32) || defined(HAVE_PTHREAD)
7940 {"--searchphone", 0, 1, SearchPhone, {H_Other,0}, "[-debug]"}, 7940 {"--searchphone", 0, 1, SearchPhone, {H_Other,0}, "[-debug]"},
7941#endif 7941#endif
7942#ifdef GSM_ENABLE_BACKUP 7942#ifdef GSM_ENABLE_BACKUP
7943 {"--savefile", 4, 5, SaveFile, {H_Backup,H_Calendar,0},"CALENDAR target.vcs file location"}, 7943 {"--savefile", 4, 5, SaveFile, {H_Backup,H_Calendar,0},"CALENDAR target.vcs file location"},
7944 {"--savefile", 4, 5, SaveFile, {H_Backup,H_ToDo,0}, "TODO target.vcs file location"}, 7944 {"--savefile", 4, 5, SaveFile, {H_Backup,H_ToDo,0}, "TODO target.vcs file location"},
7945 {"--savefile", 4, 5, SaveFile, {H_Backup,H_Memory,0}, "VCARD10|VCARD21 target.vcf file SM|ME location"}, 7945 {"--savefile", 4, 5, SaveFile, {H_Backup,H_Memory,0}, "VCARD10|VCARD21 target.vcf file SM|ME location"},
7946 {"--savefile", 4, 5, SaveFile, {H_Backup,H_WAP,0}, "BOOKMARK target.url file location"}, 7946 {"--savefile", 4, 5, SaveFile, {H_Backup,H_WAP,0}, "BOOKMARK target.url file location"},
7947 {"--backup", 1, 2, Backup, {H_Backup,H_Memory,H_Calendar,H_ToDo,H_Category,H_Ringtone,H_WAP,H_FM,0}, "file [-yes]"}, 7947 {"--backup", 1, 2, Backup, {H_Backup,H_Memory,H_Calendar,H_ToDo,H_Category,H_Ringtone,H_WAP,H_FM,0}, "file [-yes]"},
7948 {"--backupsms", 1, 1, BackupSMS, {H_Backup,H_SMS,0}, "file"}, 7948 {"--backupsms", 1, 1, BackupSMS, {H_Backup,H_SMS,0}, "file"},
7949 {"--restore", 1, 1, Restore, {H_Backup,H_Memory,H_Calendar,H_ToDo,H_Category,H_Ringtone,H_WAP,H_FM,0}, "file"}, 7949 {"--restore", 1, 1, Restore, {H_Backup,H_Memory,H_Calendar,H_ToDo,H_Category,H_Ringtone,H_WAP,H_FM,0}, "file"},
7950 {"--addnew", 1, 1, AddNew, {H_Backup,H_Memory,H_Calendar,H_ToDo,H_Category,H_Ringtone,H_WAP,H_FM,0}, "file"}, 7950 {"--addnew", 1, 1, AddNew, {H_Backup,H_Memory,H_Calendar,H_ToDo,H_Category,H_Ringtone,H_WAP,H_FM,0}, "file"},
7951 {"--restoresms", 1, 1, RestoreSMS, {H_Backup,H_SMS,0}, "file"}, 7951 {"--restoresms", 1, 1, RestoreSMS, {H_Backup,H_SMS,0}, "file"},
7952 {"--addsms", 2, 2, AddSMS, {H_Backup,H_SMS,0}, "folder file"}, 7952 {"--addsms", 2, 2, AddSMS, {H_Backup,H_SMS,0}, "folder file"},
7953#endif 7953#endif
7954 {"--clearall", 0, 0, ClearAll, {H_Memory,H_Calendar,H_ToDo,H_Category,H_Ringtone,H_WAP,H_FM,0},""}, 7954 {"--clearall", 0, 0, ClearAll, {H_Memory,H_Calendar,H_ToDo,H_Category,H_Ringtone,H_WAP,H_FM,0},""},
7955 {"--networkinfo", 0, 0, NetworkInfo, {H_Network,0}, ""}, 7955 {"--networkinfo", 0, 0, NetworkInfo, {H_Network,0}, ""},
7956 #ifdef GSM_ENABLE_AT 7956 #ifdef GSM_ENABLE_AT
7957 {"--siemenssatnetmon", 0, 0, ATSIEMENSSATNetmon, {H_Siemens,H_Network,0},""}, 7957 {"--siemenssatnetmon", 0, 0, ATSIEMENSSATNetmon, {H_Siemens,H_Network,0},""},
7958 {"--siemensnetmonact", 1, 1, ATSIEMENSActivateNetmon, {H_Siemens,H_Network,0}, "netmon_type (1-full, 2-simple)"}, 7958 {"--siemensnetmonact", 1, 1, ATSIEMENSActivateNetmon, {H_Siemens,H_Network,0}, "netmon_type (1-full, 2-simple)"},
7959 {"--siemensnetmonitor", 1, 1, ATSIEMENSNetmonitor, {H_Siemens,H_Network,0},"test"}, 7959 {"--siemensnetmonitor", 1, 1, ATSIEMENSNetmonitor, {H_Siemens,H_Network,0},"test"},
7960 #endif 7960 #endif
7961#ifdef GSM_ENABLE_NOKIA6110 7961#ifdef GSM_ENABLE_NOKIA6110
7962 {"--nokiagetoperatorname", 0, 0, DCT3GetOperatorName, {H_Nokia,H_Network,0}, ""}, 7962 {"--nokiagetoperatorname", 0, 0, DCT3GetOperatorName, {H_Nokia,H_Network,0}, ""},
7963 {"--nokiasetoperatorname", 0, 2, DCT3SetOperatorName, {H_Nokia,H_Network,0}, "[networkcode name]"}, 7963 {"--nokiasetoperatorname", 0, 2, DCT3SetOperatorName, {H_Nokia,H_Network,0}, "[networkcode name]"},
7964 {"--nokiadisplayoutput", 0, 0, DCT3DisplayOutput, {H_Nokia,0}, ""}, 7964 {"--nokiadisplayoutput", 0, 0, DCT3DisplayOutput, {H_Nokia,0}, ""},
7965#endif 7965#endif
7966#ifdef GSM_ENABLE_NOKIA_DCT3 7966#ifdef GSM_ENABLE_NOKIA_DCT3
7967 {"--nokianetmonitor", 1, 1, DCT3netmonitor, {H_Nokia,H_Network,0}, "test"}, 7967 {"--nokianetmonitor", 1, 1, DCT3netmonitor, {H_Nokia,H_Network,0}, "test"},
7968 {"--nokianetmonitor36", 0, 0, DCT3ResetTest36, {H_Nokia,0}, ""}, 7968 {"--nokianetmonitor36", 0, 0, DCT3ResetTest36, {H_Nokia,0}, ""},
7969 {"--nokiadebug", 1, 2, DCT3SetDebug, {H_Nokia,H_Network,0}, "filename [[v11-22][,v33-44]...]"}, 7969 {"--nokiadebug", 1, 2, DCT3SetDebug, {H_Nokia,H_Network,0}, "filename [[v11-22][,v33-44]...]"},
7970#endif 7970#endif
7971#ifdef GSM_ENABLE_NOKIA_DCT4 7971#ifdef GSM_ENABLE_NOKIA_DCT4
7972 {"--nokiasetvibralevel", 1, 1, DCT4SetVibraLevel, {H_Nokia,H_Other,0}, "level"}, 7972 {"--nokiasetvibralevel", 1, 1, DCT4SetVibraLevel, {H_Nokia,H_Other,0}, "level"},
7973 {"--nokiagetvoicerecord", 1, 1, DCT4GetVoiceRecord, {H_Nokia,H_Other,0}, "location"}, 7973 {"--nokiagetvoicerecord", 1, 1, DCT4GetVoiceRecord, {H_Nokia,H_Other,0}, "location"},
7974 {"--nokiasetlights", 2, 2, DCT4SetLight, {H_Nokia,H_Tests,0}, "keypad|display|torch on|off"}, 7974 {"--nokiasetlights", 2, 2, DCT4SetLight, {H_Nokia,H_Tests,0}, "keypad|display|torch on|off"},
7975 {"--nokiatuneradio", 0, 0, DCT4TuneRadio, {H_Nokia,H_FM,0}, ""}, 7975 {"--nokiatuneradio", 0, 0, DCT4TuneRadio, {H_Nokia,H_FM,0}, ""},
7976 {"--nokiamakecamerashoot", 0, 0, DCT4MakeCameraShoot, {H_Nokia,H_Other,0}, ""}, 7976 {"--nokiamakecamerashoot", 0, 0, DCT4MakeCameraShoot, {H_Nokia,H_Other,0}, ""},
7977 {"--nokiagetscreendump", 0, 0, DCT4GetScreenDump, {H_Nokia,H_Other,0}, ""}, 7977 {"--nokiagetscreendump", 0, 0, DCT4GetScreenDump, {H_Nokia,H_Other,0}, ""},
7978#endif 7978#endif
7979#if defined(GSM_ENABLE_NOKIA_DCT3) || defined(GSM_ENABLE_NOKIA_DCT4) 7979#if defined(GSM_ENABLE_NOKIA_DCT3) || defined(GSM_ENABLE_NOKIA_DCT4)
7980 {"--nokiavibratest", 0, 0, NokiaVibraTest, {H_Nokia,H_Tests,0}, ""}, 7980 {"--nokiavibratest", 0, 0, NokiaVibraTest, {H_Nokia,H_Tests,0}, ""},
7981 {"--nokiagett9", 0, 0, NokiaGetT9, {H_Nokia,H_SMS,0}, ""}, 7981 {"--nokiagett9", 0, 0, NokiaGetT9, {H_Nokia,H_SMS,0}, ""},
7982 {"--nokiadisplaytest", 1, 1, NokiaDisplayTest, {H_Nokia,H_Tests,0}, "number"}, 7982 {"--nokiadisplaytest", 1, 1, NokiaDisplayTest, {H_Nokia,H_Tests,0}, "number"},
7983 {"--nokiagetadc", 0, 0, NokiaGetADC, {H_Nokia,H_Tests,0}, ""}, 7983 {"--nokiagetadc", 0, 0, NokiaGetADC, {H_Nokia,H_Tests,0}, ""},
7984 {"--nokiasecuritycode", 0, 0, NokiaSecurityCode, {H_Nokia,H_Info,0}, ""}, 7984 {"--nokiasecuritycode", 0, 0, NokiaSecurityCode, {H_Nokia,H_Info,0}, ""},
7985 {"--nokiaselftests", 0, 0, NokiaSelfTests, {H_Nokia,H_Tests,0}, ""}, 7985 {"--nokiaselftests", 0, 0, NokiaSelfTests, {H_Nokia,H_Tests,0}, ""},
7986 {"--nokiasetphonemenus", 0, 0, NokiaSetPhoneMenus, {H_Nokia,H_Other,0}, ""}, 7986 {"--nokiasetphonemenus", 0, 0, NokiaSetPhoneMenus, {H_Nokia,H_Other,0}, ""},
7987#endif 7987#endif
7988#ifdef DEBUG 7988#ifdef DEBUG
7989 {"--decodesniff", 2, 3, decodesniff, {H_Decode,0}, "MBUS2|IRDA file [phonemodel]"}, 7989 {"--decodesniff", 2, 3, decodesniff, {H_Decode,0}, "MBUS2|IRDA file [phonemodel]"},
7990 {"--decodebinarydump", 1, 2, decodebinarydump, {H_Decode,0}, "file [phonemodel]"}, 7990 {"--decodebinarydump", 1, 2, decodebinarydump, {H_Decode,0}, "file [phonemodel]"},
7991 {"--makeconverttable", 1, 1, MakeConvertTable, {H_Decode,0}, "file"}, 7991 {"--makeconverttable", 1, 1, MakeConvertTable, {H_Decode,0}, "file"},
7992#endif 7992#endif
7993 {"", 0, 0, NULL } 7993 {"", 0, 0, NULL }
7994}; 7994};
7995 7995
7996static HelpCategoryDescriptions HelpDescriptions[] = { 7996static HelpCategoryDescriptions HelpDescriptions[] = {
7997 {H_Call, "call", "Calls",}, 7997 {H_Call, "call", "Calls",},
7998 {H_SMS, "sms", "SMS and EMS"}, 7998 {H_SMS, "sms", "SMS and EMS"},
7999 {H_Memory, "memory","Memory (phonebooks and calls)"}, 7999 {H_Memory, "memory","Memory (phonebooks and calls)"},
8000 {H_Filesystem, "filesystem","Filesystem"}, 8000 {H_Filesystem, "filesystem","Filesystem"},
8001 {H_Logo, "logo", "Logo and pictures"}, 8001 {H_Logo, "logo", "Logo and pictures"},
8002 {H_Ringtone, "ringtone","Ringtones"}, 8002 {H_Ringtone, "ringtone","Ringtones"},
8003 {H_Calendar, "calendar","Calendar notes"}, 8003 {H_Calendar, "calendar","Calendar notes"},
8004 {H_ToDo, "todo", "To do lists"}, 8004 {H_ToDo, "todo", "To do lists"},
8005 {H_Note, "note", "Notes"}, 8005 {H_Note, "note", "Notes"},
8006 {H_DateTime, "datetime","Date, time and alarms"}, 8006 {H_DateTime, "datetime","Date, time and alarms"},
8007 {H_Category, "category","Categories"}, 8007 {H_Category, "category","Categories"},
8008#ifdef GSM_ENABLE_BACKUP 8008#ifdef GSM_ENABLE_BACKUP
8009 {H_Backup, "backup","Backing up and restoring"}, 8009 {H_Backup, "backup","Backing up and restoring"},
8010#endif 8010#endif
8011#if defined(GSM_ENABLE_NOKIA_DCT3) || defined(GSM_ENABLE_NOKIA_DCT4) 8011#if defined(GSM_ENABLE_NOKIA_DCT3) || defined(GSM_ENABLE_NOKIA_DCT4)
8012 {H_Nokia, "nokia","Nokia specific"}, 8012 {H_Nokia, "nokia","Nokia specific"},
8013#endif 8013#endif
8014#ifdef GSM_ENABLE_AT 8014#ifdef GSM_ENABLE_AT
8015 {H_Siemens, "siemens","Siemens specific"}, 8015 {H_Siemens, "siemens","Siemens specific"},
8016#endif 8016#endif
8017 {H_Network, "network","Network"}, 8017 {H_Network, "network","Network"},
8018 {H_WAP, "wap", "WAP settings and bookmarks"}, 8018 {H_WAP, "wap", "WAP settings and bookmarks"},
8019 {H_MMS, "mms", "MMS and MMS settings"}, 8019 {H_MMS, "mms", "MMS and MMS settings"},
8020 {H_Tests, "tests","Phone tests"}, 8020 {H_Tests, "tests","Phone tests"},
8021 {H_FM, "fm", "FM radio"}, 8021 {H_FM, "fm", "FM radio"},
8022 {H_Info, "info", "Phone information"}, 8022 {H_Info, "info", "Phone information"},
8023 {H_Settings, "settings","Phone settings"}, 8023 {H_Settings, "settings","Phone settings"},
8024#ifdef DEBUG 8024#ifdef DEBUG
8025 {H_Decode, "decode","Dumps decoding"}, 8025 {H_Decode, "decode","Dumps decoding"},
8026#endif 8026#endif
8027 {H_Other, "other","Functions that don't fit elsewhere"}, 8027 {H_Other, "other","Functions that don't fit elsewhere"},
8028 {0, NULL, NULL} 8028 {0, NULL, NULL}
8029}; 8029};
8030 8030
8031 8031
8032void HelpHeader(void) 8032void HelpHeader(void)
8033{ 8033{
8034 printmsg("[Gammu version %s built %s %s]\n\n",VERSION,__TIME__,__DATE__); 8034 printmsg("[Gammu version %s built %s %s]\n\n",VERSION,__TIME__,__DATE__);
8035} 8035}
8036 8036
8037static void HelpGeneral(void) 8037static void HelpGeneral(void)
8038{ 8038{
8039 inti=0; 8039 inti=0;
8040 8040
8041 HelpHeader(); 8041 HelpHeader();
8042 8042
8043 printmsg("Usage: gammu [confign] [nothing|text|textall|binary|errors] [options]\n\n"); 8043 printmsg("Usage: gammu [confign] [nothing|text|textall|binary|errors] [options]\n\n");
8044 printmsg("First parameter optionally specifies which config section to use (by default are probed all).\n"); 8044 printmsg("First parameter optionally specifies which config section to use (by default are probed all).\n");
8045 printmsg("Second parameter optionally controls debug level, next specify actions.\n\n"); 8045 printmsg("Second parameter optionally controls debug level, next specify actions.\n\n");
8046 8046
8047 /* We might want to put here some most used commands */ 8047 /* We might want to put here some most used commands */
8048 printmsg("For more details call help on specific topic (gammu --help topic), topics are:\n\n"); 8048 printmsg("For more details call help on specific topic (gammu --help topic), topics are:\n\n");
8049 8049
8050 while (HelpDescriptions[i].category != 0) { 8050 while (HelpDescriptions[i].category != 0) {
8051 printf("%11s - %s\n", HelpDescriptions[i].option, HelpDescriptions[i].description); 8051 printf("%11s - %s\n", HelpDescriptions[i].option, HelpDescriptions[i].description);
8052 i++; 8052 i++;
8053 } 8053 }
8054 printf("\n"); 8054 printf("\n");
8055} 8055}
8056 8056
8057static void HelpSplit(int cols, int len, unsigned char *buff) 8057static void HelpSplit(int cols, int len, unsigned char *buff)
8058{ 8058{
8059 int l, len2, pos, split; 8059 int l, len2, pos, split;
8060 bool in_opt,first=true; 8060 bool in_opt,first=true;
8061 char *remain, spaces[50], buffer[500]; 8061 char *remain, spaces[50], buffer[500];
8062 8062
8063 if (cols == 0) { 8063 if (cols == 0) {
8064 printf(" %s\n", buff); 8064 printf(" %s\n", buff);
8065 } else { 8065 } else {
8066 printf(" "); 8066 printf(" ");
8067 spaces[0] = 0; 8067 spaces[0] = 0;
8068 len2 = strlen(buff); 8068 len2 = strlen(buff);
8069 if (len + len2 < cols) { 8069 if (len + len2 < cols) {
8070 printf("%s\n", buff); 8070 printf("%s\n", buff);
8071 } else { 8071 } else {
8072 for(l = 0; l < len; l++) strcat(spaces, " "); 8072 for(l = 0; l < len; l++) strcat(spaces, " ");
8073 8073
8074 remain = buff; 8074 remain = buff;
8075 8075
8076 while (strlen(remain) > 0) { 8076 while (strlen(remain) > 0) {
8077 split= 0; 8077 split= 0;
8078 pos= 0; 8078 pos= 0;
8079 in_opt= false; 8079 in_opt= false;
8080 if (!first) printf(spaces); 8080 if (!first) printf(spaces);
8081 while (pos < cols - len && remain[pos] != 0) { 8081 while (pos < cols - len && remain[pos] != 0) {
8082 if (in_opt && remain[pos] == ']') { 8082 if (in_opt && remain[pos] == ']') {
8083 in_opt = false; 8083 in_opt = false;
8084 split = pos; 8084 split = pos;
8085 } else if (remain[pos] == '[') { 8085 } else if (remain[pos] == '[') {
8086 in_opt = true; 8086 in_opt = true;
8087 } else if (!in_opt && remain[pos] == ' ') { 8087 } else if (!in_opt && remain[pos] == ' ') {
8088 split = pos - 1; 8088 split = pos - 1;
8089 } 8089 }
8090 pos++; 8090 pos++;
8091 } 8091 }
8092 /* Can not be split */ 8092 /* Can not be split */
8093 if (split == 0) { 8093 if (split == 0) {
8094 printf("%s\n", remain); 8094 printf("%s\n", remain);
8095 remain += strlen(remain); 8095 remain += strlen(remain);
8096 } else { 8096 } else {
8097 first = false; 8097 first = false;
8098 split++; 8098 split++;
8099 strncpy(buffer, remain, split); 8099 strncpy(buffer, remain, split);
8100 buffer[split] = 0; 8100 buffer[split] = 0;
8101 printf("%s\n", buffer); 8101 printf("%s\n", buffer);
8102 remain += split; 8102 remain += split;
8103 if (remain[0] == ' ') remain++; 8103 if (remain[0] == ' ') remain++;
8104 } 8104 }
8105 } 8105 }
8106 } 8106 }
8107 } 8107 }
8108} 8108}
8109 8109
8110static void Help(int argc, char *argv[]) 8110static void Help(int argc, char *argv[])
8111{ 8111{
8112 int i = 0, j = 0, k, cols; 8112 int i = 0, j = 0, k, cols;
8113 bool disp; 8113 bool disp;
8114#ifdef TIOCGWINSZ 8114#ifdef TIOCGWINSZ
8115 struct winsize w; 8115 struct winsize w;
8116#endif 8116#endif
8117#if defined(WIN32) || defined(DJGPP) 8117#if defined(WIN32) || defined(DJGPP)
8118#else 8118#else
8119 char *columns; 8119 char *columns;
8120#endif 8120#endif
8121 8121
8122 /* Just --help */ 8122 /* Just --help */
8123 if (argc == 2) { 8123 if (argc == 2) {
8124 HelpGeneral(); 8124 HelpGeneral();
8125 return; 8125 return;
8126 } 8126 }
8127 8127
8128 if (!strcmp(argv[2],"all")) { 8128 if (!strcmp(argv[2],"all")) {
8129 HelpHeader(); 8129 HelpHeader();
8130 } else { 8130 } else {
8131 while (HelpDescriptions[i].category != 0) { 8131 while (HelpDescriptions[i].category != 0) {
8132 if (strcmp(argv[2], HelpDescriptions[i].option) == 0) break; 8132 if (strcmp(argv[2], HelpDescriptions[i].option) == 0) break;
8133 i++; 8133 i++;
8134 } 8134 }
8135 if (HelpDescriptions[i].category == 0) { 8135 if (HelpDescriptions[i].category == 0) {
8136 HelpGeneral(); 8136 HelpGeneral();
8137 printmsg("Unknown help topic specified!\n"); 8137 printmsg("Unknown help topic specified!\n");
8138 return; 8138 return;
8139 } 8139 }
8140 HelpHeader(); 8140 HelpHeader();
8141 printmsg("Gammu parameters, topic: %s\n\n", HelpDescriptions[i].description); 8141 printmsg("Gammu parameters, topic: %s\n\n", HelpDescriptions[i].description);
8142 } 8142 }
8143 8143
8144#if defined(WIN32) || defined(DJGPP) 8144#if defined(WIN32) || defined(DJGPP)
8145 cols = 80; 8145 cols = 80;
8146#else 8146#else
8147 cols = 0; 8147 cols = 0;
8148 /* If stdout is a tty, we will wrap to columns it has */ 8148 /* If stdout is a tty, we will wrap to columns it has */
8149 if (isatty(1)) { 8149 if (isatty(1)) {
8150#ifdef TIOCGWINSZ 8150#ifdef TIOCGWINSZ
8151 if (ioctl(2, TIOCGWINSZ, &w) == 0) { 8151 if (ioctl(2, TIOCGWINSZ, &w) == 0) {
8152 if (w.ws_col > 0) cols = w.ws_col; 8152 if (w.ws_col > 0) cols = w.ws_col;
8153 } 8153 }
8154#endif 8154#endif
8155 if (cols == 0) { 8155 if (cols == 0) {
8156 columns = getenv("COLUMNS"); 8156 columns = getenv("COLUMNS");
8157 if (columns != NULL) { 8157 if (columns != NULL) {
8158 cols = atoi(columns); 8158 cols = atoi(columns);
8159 if (cols <= 0) cols = 0; 8159 if (cols <= 0) cols = 0;
8160 } 8160 }
8161 } 8161 }
8162 8162
8163 if (cols == 0) { 8163 if (cols == 0) {
8164 /* Fallback */ 8164 /* Fallback */
8165 cols = 80; 8165 cols = 80;
8166 } 8166 }
8167 } 8167 }
8168#endif 8168#endif
8169 8169
8170 while (Parameters[j].Function != NULL) { 8170 while (Parameters[j].Function != NULL) {
8171 k = 0; 8171 k = 0;
8172 disp = false; 8172 disp = false;
8173 if (!strcmp(argv[2],"all")) { 8173 if (!strcmp(argv[2],"all")) {
8174 if (j==0) disp = true; 8174 if (j==0) disp = true;
8175 if (j!=0) { 8175 if (j!=0) {
8176 if (strcmp(Parameters[j].help,Parameters[j-1].help)) { 8176 if (strcmp(Parameters[j].help,Parameters[j-1].help)) {
8177 disp = true; 8177 disp = true;
8178 } else { 8178 } else {
8179 if (strcmp(Parameters[j].parameter,Parameters[j-1].parameter)) { 8179 if (strcmp(Parameters[j].parameter,Parameters[j-1].parameter)) {
8180 disp = true; 8180 disp = true;
8181 } 8181 }
8182 } 8182 }
8183 } 8183 }
8184 } else { 8184 } else {
8185 while (Parameters[j].help_cat[k] != 0) { 8185 while (Parameters[j].help_cat[k] != 0) {
8186 if (Parameters[j].help_cat[k] == HelpDescriptions[i].category) { 8186 if (Parameters[j].help_cat[k] == HelpDescriptions[i].category) {
8187 disp = true; 8187 disp = true;
8188 break; 8188 break;
8189 } 8189 }
8190 k++; 8190 k++;
8191 } 8191 }
8192 } 8192 }
8193 if (disp) { 8193 if (disp) {
8194 printf("%s", Parameters[j].parameter); 8194 printf("%s", Parameters[j].parameter);
8195 if (Parameters[j].help[0] == 0) { 8195 if (Parameters[j].help[0] == 0) {
8196 printf("\n"); 8196 printf("\n");
8197 } else { 8197 } else {
8198 HelpSplit(cols - 1, strlen(Parameters[j].parameter) + 1, Parameters[j].help); 8198 HelpSplit(cols - 1, strlen(Parameters[j].parameter) + 1, Parameters[j].help);
8199 } 8199 }
8200 } 8200 }
8201 j++; 8201 j++;
8202 } 8202 }
8203} 8203}
8204#if 0 8204#if 0
8205#endif // 0 8205#endif // 0
8206int main(int argc, char *argv[]) 8206int main(int argc, char *argv[])
8207{ 8207{
8208 8208
8209 //fprintf(stderr,"HIIIIIIIIIIIII \n"); 8209 //fprintf(stderr,"HIIIIIIIIIIIII \n");
8210 //#if 0 8210 //#if 0
8211 static int z ,start,i; 8211 static int z ,start,i;
8212 static intonly_config ; 8212 static intonly_config ;
8213#if !defined(WIN32) && defined(LOCALE_PATH) 8213#if !defined(WIN32) && defined(LOCALE_PATH)
8214 static char*locale, locale_file[201]; 8214 static char*locale, locale_file[201];
8215#endif 8215#endif
8216 static char*cp; 8216 static char*cp;
8217 static boolcount_failed; 8217 static boolcount_failed;
8218 z = 0; 8218 z = 0;
8219 start=0;only_config = -1;count_failed = false; 8219 start=0;only_config = -1;count_failed = false;
8220 s.opened = false; 8220 s.opened = false;
8221 s.msg = NULL; 8221 s.msg = NULL;
8222 s.ConfigNum = 0; 8222 s.ConfigNum = 0;
8223 8223
8224 setlocale(LC_ALL, ""); 8224 setlocale(LC_ALL, "");
8225#ifdef DEBUG 8225#ifdef DEBUG
8226 di.dl = DL_TEXTALL; 8226 di.dl = DL_TEXTALL;
8227 di.df = stdout; 8227 di.df = stdout;
8228#endif 8228#endif
8229 //#if 0 8229 //#if 0
8230 /* Any parameters? */ 8230 /* Any parameters? */
8231 if (argc == 1) { 8231 if (argc == 1) {
8232 HelpGeneral(); 8232 HelpGeneral();
8233 printmsg("Too few parameters!\n"); 8233 printmsg("Too few parameters!\n");
8234 exit(1); 8234 exit(1);
8235 } 8235 }
8236 8236
8237 /* Help? */ 8237 /* Help? */
8238 if (strncmp(argv[1 + start], "--help", 6) == 0) { 8238 if (strncmp(argv[1 + start], "--help", 6) == 0) {
8239 Help(argc - start, argv + start); 8239 Help(argc - start, argv + start);
8240 exit(1); 8240 exit(1);
8241 } 8241 }
8242 8242
8243 /* Is first parameter numeric? If so treat it as config that should be loaded. */ 8243 /* Is first parameter numeric? If so treat it as config that should be loaded. */
8244 if (isdigit(argv[1][0])) { 8244 if (isdigit(argv[1][0])) {
8245 only_config = atoi(argv[1]); 8245 only_config = atoi(argv[1]);
8246 if (only_config >= 0) start++; else only_config = -1; 8246 if (only_config >= 0) start++; else only_config = -1;
8247 } 8247 }
8248 8248
8249 GSM_ReadConfig(NULL, &s.Config[0], 0);
8250 s.ConfigNum = 1;
8251 GSM_Config *con = &s.Config[0];
8252
8253 char* tempC;
8254 tempC = argv[argc-1]+2;
8255 if ( *tempC != 0 ) {
8256 fprintf(stderr,"Using model %s \n",tempC);
8257 strcpy(con->Model,tempC );
8258 }
8259 tempC = argv[argc-2]+2;
8260 if ( *tempC != 0 ) {
8261 fprintf(stderr,"Using device %s \n",tempC);
8262 con->Device = strdup(tempC);
8263 con->DefaultDevice = false;
8264 }
8265 tempC = argv[argc-3]+2;
8266 if ( *tempC != 0 ) {
8267 fprintf(stderr,"Using connection %s \n",tempC);
8268 con->Connection = strdup(tempC);
8269 con->DefaultConnection = false;
8270 }
8271 argc = argc-3;
8272#if 0
8273 if ( ! mConnection.isEmpty() ) {
8274 cfg->Connection = strdup(mConnection.latin1());
8275 cfg->DefaultConnection = false;
8276 qDebug("Connection set %s ", cfg->Connection );
8277
8278 }
8279 if ( ! mDevice.isEmpty() ) {
8280 cfg->Device = strdup(mDevice.latin1());
8281 cfg->DefaultDevice = false;
8282 qDebug("Device set %s ", cfg->Device);
8283
8284 }
8285 if ( ! mModel.isEmpty() ) {
8286 strcpy(cfg->Model,mModel.latin1() );
8287 cfg->DefaultModel = false;
8288 qDebug("Model set %s ",cfg->Model );
8289 }
8290
8291#endif
8292
8293#if 0
8249 cfg=GSM_FindGammuRC(); 8294 cfg=GSM_FindGammuRC();
8250 for (i = 0; i <= MAX_CONFIG_NUM; i++) { 8295 for (i = 0; i <= MAX_CONFIG_NUM; i++) {
8251 if (cfg!=NULL) { 8296 if (cfg!=NULL) {
8252 cp = INI_GetValue(cfg, "gammu", "gammucoding", false); 8297 cp = INI_GetValue(cfg, "gammu", "gammucoding", false);
8253 if (cp) di.coding = cp; 8298 if (cp) di.coding = cp;
8254 8299
8255 s.Config[i].Localize = INI_GetValue(cfg, "gammu", "gammuloc", false); 8300 s.Config[i].Localize = INI_GetValue(cfg, "gammu", "gammuloc", false);
8256 if (s.Config[i].Localize) { 8301 if (s.Config[i].Localize) {
8257 s.msg=INI_ReadFile(s.Config[i].Localize, true); 8302 s.msg=INI_ReadFile(s.Config[i].Localize, true);
8258 } else { 8303 } else {
8259#if !defined(WIN32) && defined(LOCALE_PATH) 8304#if !defined(WIN32) && defined(LOCALE_PATH)
8260 locale = setlocale(LC_MESSAGES, NULL); 8305 locale = setlocale(LC_MESSAGES, NULL);
8261 if (locale != NULL) { 8306 if (locale != NULL) {
8262 snprintf(locale_file, 200, "%s/gammu_%c%c.txt", 8307 snprintf(locale_file, 200, "%s/gammu_%c%c.txt",
8263 LOCALE_PATH, 8308 LOCALE_PATH,
8264 tolower(locale[0]), 8309 tolower(locale[0]),
8265 tolower(locale[1])); 8310 tolower(locale[1]));
8266 s.msg = INI_ReadFile(locale_file, true); 8311 s.msg = INI_ReadFile(locale_file, true);
8267 } 8312 }
8268#endif 8313#endif
8269 } 8314 }
8270 } 8315 }
8271 8316
8272 /* Wanted user specific configuration? */ 8317 /* Wanted user specific configuration? */
8273 if (only_config != -1) { 8318 if (only_config != -1) {
8274 /* Here we get only in first for loop */ 8319 /* Here we get only in first for loop */
8275 if (!GSM_ReadConfig(cfg, &s.Config[0], only_config)) break; 8320 if (!GSM_ReadConfig(cfg, &s.Config[0], only_config)) break;
8276 } else { 8321 } else {
8277 if (!GSM_ReadConfig(cfg, &s.Config[i], i) && i != 0) break; 8322 if (!GSM_ReadConfig(cfg, &s.Config[i], i) && i != 0) break;
8278 } 8323 }
8279 s.ConfigNum++; 8324 s.ConfigNum++;
8280 8325
8281 /* We want to use only one file descriptor for global and state machine debug output */ 8326 /* We want to use only one file descriptor for global and state machine debug output */
8282 s.Config[i].UseGlobalDebugFile = true; 8327 s.Config[i].UseGlobalDebugFile = true;
8283 8328
8284 /* It makes no sense to open several debug logs... */ 8329 /* It makes no sense to open several debug logs... */
8285 if (i != 0) { 8330 if (i != 0) {
8286 strcpy(s.Config[i].DebugLevel, s.Config[0].DebugLevel); 8331 strcpy(s.Config[i].DebugLevel, s.Config[0].DebugLevel);
8287 free(s.Config[i].DebugFile); 8332 free(s.Config[i].DebugFile);
8288 s.Config[i].DebugFile = strdup(s.Config[0].DebugFile); 8333 s.Config[i].DebugFile = strdup(s.Config[0].DebugFile);
8289 } else { 8334 } else {
8290 /* Just for first config */ 8335 /* Just for first config */
8291 /* When user gave debug level on command line */ 8336 /* When user gave debug level on command line */
8292 if (argc > 1 + start && GSM_SetDebugLevel(argv[1 + start], &di)) { 8337 if (argc > 1 + start && GSM_SetDebugLevel(argv[1 + start], &di)) {
8293 /* Debug level from command line will be used with phone too */ 8338 /* Debug level from command line will be used with phone too */
8294 strcpy(s.Config[i].DebugLevel,argv[1 + start]); 8339 strcpy(s.Config[i].DebugLevel,argv[1 + start]);
8295 start++; 8340 start++;
8296 } else { 8341 } else {
8297 /* Try to set debug level from config file */ 8342 /* Try to set debug level from config file */
8298 GSM_SetDebugLevel(s.Config[i].DebugLevel, &di); 8343 GSM_SetDebugLevel(s.Config[i].DebugLevel, &di);
8299 } 8344 }
8300 /* If user gave debug file in gammurc, we will use it */ 8345 /* If user gave debug file in gammurc, we will use it */
8301 error=GSM_SetDebugFile(s.Config[i].DebugFile, &di); 8346 error=GSM_SetDebugFile(s.Config[i].DebugFile, &di);
8302 Print_Error(error); 8347 Print_Error(error);
8303 } 8348 }
8304 8349
8305 /* We wanted to read just user specified configuration. */ 8350 /* We wanted to read just user specified configuration. */
8306 if (only_config != -1) {break;} 8351 if (only_config != -1) {break;}
8307 } 8352 }
8308 8353#endif
8309 /* Do we have enough parameters? */ 8354 /* Do we have enough parameters? */
8310 if (argc == 1 + start) { 8355 if (argc == 1 + start) {
8311 HelpGeneral(); 8356 HelpGeneral();
8312 printmsg("Too few parameters!\n"); 8357 printmsg("Too few parameters!\n");
8313 exit(-2); 8358 exit(-2);
8314 } 8359 }
8315 8360
8316 /* Check used version vs. compiled */ 8361 /* Check used version vs. compiled */
8317 if (!mystrncasecmp(GetGammuVersion(),VERSION,0)) { 8362 if (!mystrncasecmp(GetGammuVersion(),VERSION,0)) {
8318 printmsg("ERROR: version of installed libGammu.so (%s) is different to version of Gammu (%s)\n", 8363 printmsg("ERROR: version of installed libGammu.so (%s) is different to version of Gammu (%s)\n",
8319 GetGammuVersion(),VERSION); 8364 GetGammuVersion(),VERSION);
8320 exit(-1); 8365 exit(-1);
8321 } 8366 }
8322 8367
8323 /* Check parameters */ 8368 /* Check parameters */
8324 while (Parameters[z].Function != NULL) { 8369 while (Parameters[z].Function != NULL) {
8325 if (mystrncasecmp(Parameters[z].parameter,argv[1+start], 0)) { 8370 if (mystrncasecmp(Parameters[z].parameter,argv[1+start], 0)) {
8326 if (argc-2-start >= Parameters[z].min_arg && argc-2-start <= Parameters[z].max_arg) { 8371 if (argc-2-start >= Parameters[z].min_arg && argc-2-start <= Parameters[z].max_arg) {
8327 Parameters[z].Function(argc - start, argv + start); 8372 Parameters[z].Function(argc - start, argv + start);
8328 break; 8373 break;
8329 } else { 8374 } else {
8330 count_failed = true; 8375 count_failed = true;
8331 } 8376 }
8332 } 8377 }
8333 z++; 8378 z++;
8334 } 8379 }
8335 8380
8336 /* Tell user when we did nothing */ 8381 /* Tell user when we did nothing */
8337 if (Parameters[z].Function == NULL) { 8382 if (Parameters[z].Function == NULL) {
8338 HelpGeneral(); 8383 HelpGeneral();
8339 if (count_failed) { 8384 if (count_failed) {
8340 printmsg("Bad parameter count!\n"); 8385 printmsg("Bad parameter count!\n");
8341 } else { 8386 } else {
8342 printmsg("Bad option!\n"); 8387 printmsg("Bad option!\n");
8343 } 8388 }
8344 } 8389 }
8345 8390
8346 /* Close debug output if opened */ 8391 /* Close debug output if opened */
8347 if (di.df!=stdout) fclose(di.df); 8392 if (di.df!=stdout) fclose(di.df);
8348 //#endif // 0 8393 //#endif // 0
8349 fprintf(stderr,"kammu: Success. End. \n"); 8394 fprintf(stderr,"kammu: Success. End. \n");
8350 exit(0); 8395 exit(0);
8351} 8396}
8352 8397
8353/* How should editor hadle tabs in this file? Add editor commands here. 8398/* How should editor hadle tabs in this file? Add editor commands here.
8354 * vim: noexpandtab sw=8 ts=8 sts=8: 8399 * vim: noexpandtab sw=8 ts=8 sts=8:
8355 */ 8400 */
8356 8401
diff --git a/libkcal/phoneformat.cpp b/libkcal/phoneformat.cpp
index 0bc9125..2ad1b5a 100644
--- a/libkcal/phoneformat.cpp
+++ b/libkcal/phoneformat.cpp
@@ -1,581 +1,583 @@
1/* 1/*
2 This file is part of libkcal. 2 This file is part of libkcal.
3 3
4 Copyright (c) 2004 Lutz Rogowski <rogowski@kde.org> 4 Copyright (c) 2004 Lutz Rogowski <rogowski@kde.org>
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22#include <qdatetime.h> 22#include <qdatetime.h>
23#include <qstring.h> 23#include <qstring.h>
24#include <qapplication.h> 24#include <qapplication.h>
25#include <qptrlist.h> 25#include <qptrlist.h>
26#include <qregexp.h> 26#include <qregexp.h>
27#include <qmessagebox.h> 27#include <qmessagebox.h>
28#include <qclipboard.h> 28#include <qclipboard.h>
29#include <qfile.h> 29#include <qfile.h>
30#include <qtextstream.h> 30#include <qtextstream.h>
31#include <qtextcodec.h> 31#include <qtextcodec.h>
32#include <qxml.h> 32#include <qxml.h>
33#include <qlabel.h> 33#include <qlabel.h>
34 34
35#include <kdebug.h> 35#include <kdebug.h>
36#include <klocale.h> 36#include <klocale.h>
37#include <kglobal.h> 37#include <kglobal.h>
38 38
39#include "calendar.h" 39#include "calendar.h"
40#include "alarm.h" 40#include "alarm.h"
41#include "recurrence.h" 41#include "recurrence.h"
42#include "calendarlocal.h" 42#include "calendarlocal.h"
43 43
44#include "phoneformat.h" 44#include "phoneformat.h"
45#include "syncdefines.h" 45#include "syncdefines.h"
46 46
47using namespace KCal; 47using namespace KCal;
48class PhoneParser : public QObject 48class PhoneParser : public QObject
49{ 49{
50public: 50public:
51 PhoneParser( ) { 51 PhoneParser( ) {
52 ; 52 ;
53 } 53 }
54 54
55 static QString dtToString( const QDateTime& dti, bool useTZ = false ) 55 static QString dtToString( const QDateTime& dti, bool useTZ = false )
56 { 56 {
57 QString datestr; 57 QString datestr;
58 QString timestr; 58 QString timestr;
59 int offset = KGlobal::locale()->localTimeOffset( dti ); 59 int offset = KGlobal::locale()->localTimeOffset( dti );
60 QDateTime dt; 60 QDateTime dt;
61 if (useTZ) 61 if (useTZ)
62 dt = dti.addSecs ( -(offset*60)); 62 dt = dti.addSecs ( -(offset*60));
63 else 63 else
64 dt = dti; 64 dt = dti;
65 if(dt.date().isValid()){ 65 if(dt.date().isValid()){
66 const QDate& date = dt.date(); 66 const QDate& date = dt.date();
67 datestr.sprintf("%04d%02d%02d", 67 datestr.sprintf("%04d%02d%02d",
68 date.year(), date.month(), date.day()); 68 date.year(), date.month(), date.day());
69 } 69 }
70 if(dt.time().isValid()){ 70 if(dt.time().isValid()){
71 const QTime& time = dt.time(); 71 const QTime& time = dt.time();
72 timestr.sprintf("T%02d%02d%02d", 72 timestr.sprintf("T%02d%02d%02d",
73 time.hour(), time.minute(), time.second()); 73 time.hour(), time.minute(), time.second());
74 } 74 }
75 return datestr + timestr; 75 return datestr + timestr;
76 } 76 }
77 77
78 78
79}; 79};
80 80
81 81
82 82
83PhoneFormat::PhoneFormat(QString profileName, QString device,QString connection, QString model ) 83PhoneFormat::PhoneFormat(QString profileName, QString device,QString connection, QString model )
84{ 84{
85 mProfileName = profileName; 85 mProfileName = profileName;
86 mDevice = device; 86 mDevice = device;
87 mConnection = connection; 87 mConnection = connection;
88 mModel = model; 88 mModel = model;
89} 89}
90 90
91PhoneFormat::~PhoneFormat() 91PhoneFormat::~PhoneFormat()
92{ 92{
93} 93}
94#if 0 94#if 0
95int PhoneFormat::initDevice(GSM_StateMachine *s) 95int PhoneFormat::initDevice(GSM_StateMachine *s)
96{ 96{
97 GSM_ReadConfig(NULL, &s->Config[0], 0); 97 GSM_ReadConfig(NULL, &s->Config[0], 0);
98 s->ConfigNum = 1; 98 s->ConfigNum = 1;
99 GSM_Config *cfg = &s->Config[0]; 99 GSM_Config *cfg = &s->Config[0];
100 if ( ! mConnection.isEmpty() ) { 100 if ( ! mConnection.isEmpty() ) {
101 cfg->Connection = strdup(mConnection.latin1()); 101 cfg->Connection = strdup(mConnection.latin1());
102 cfg->DefaultConnection = false; 102 cfg->DefaultConnection = false;
103 qDebug("Connection set %s ", cfg->Connection ); 103 qDebug("Connection set %s ", cfg->Connection );
104 104
105 } 105 }
106 if ( ! mDevice.isEmpty() ) { 106 if ( ! mDevice.isEmpty() ) {
107 cfg->Device = strdup(mDevice.latin1()); 107 cfg->Device = strdup(mDevice.latin1());
108 cfg->DefaultDevice = false; 108 cfg->DefaultDevice = false;
109 qDebug("Device set %s ", cfg->Device); 109 qDebug("Device set %s ", cfg->Device);
110 110
111 } 111 }
112 if ( ! mModel.isEmpty() ) { 112 if ( ! mModel.isEmpty() ) {
113 strcpy(cfg->Model,mModel.latin1() ); 113 strcpy(cfg->Model,mModel.latin1() );
114 cfg->DefaultModel = false; 114 cfg->DefaultModel = false;
115 qDebug("Model set %s ",cfg->Model ); 115 qDebug("Model set %s ",cfg->Model );
116 } 116 }
117 int error=GSM_InitConnection(s,3); 117 int error=GSM_InitConnection(s,3);
118 return error; 118 return error;
119} 119}
120#endif 120#endif
121ulong PhoneFormat::getCsumTodo( Todo* todo ) 121ulong PhoneFormat::getCsumTodo( Todo* todo )
122{ 122{
123 QStringList attList; 123 QStringList attList;
124 if ( todo->hasDueDate() ) 124 if ( todo->hasDueDate() )
125 attList << PhoneParser::dtToString ( todo->dtDue() ); 125 attList << PhoneParser::dtToString ( todo->dtDue() );
126 attList << todo->summary(); 126 attList << todo->summary();
127 QString completedString = "no"; 127 QString completedString = "no";
128 if ( todo->isCompleted() ) 128 if ( todo->isCompleted() )
129 completedString = "yes"; 129 completedString = "yes";
130 attList << completedString; 130 attList << completedString;
131 attList << QString::number( todo->priority() ); 131 attList << QString::number( todo->priority() );
132 QString alarmString = "na"; 132 QString alarmString = "na";
133 Alarm *alarm; 133 Alarm *alarm;
134 if ( todo->alarms().count() > 0 ) { 134 if ( todo->alarms().count() > 0 ) {
135 alarm = todo->alarms().first(); 135 alarm = todo->alarms().first();
136 if ( alarm->enabled() ) { 136 if ( alarm->enabled() ) {
137 alarmString = QString::number(alarm->startOffset().asSeconds() ); 137 alarmString = QString::number(alarm->startOffset().asSeconds() );
138 } 138 }
139 } 139 }
140 attList << alarmString; 140 attList << alarmString;
141 attList << todo->categoriesStr(); 141 attList << todo->categoriesStr();
142 attList << todo->secrecyStr(); 142 attList << todo->secrecyStr();
143 return PhoneFormat::getCsum(attList ); 143 return PhoneFormat::getCsum(attList );
144 144
145} 145}
146ulong PhoneFormat::getCsumEvent( Event* event ) 146ulong PhoneFormat::getCsumEvent( Event* event )
147{ 147{
148 QStringList attList; 148 QStringList attList;
149 attList << PhoneParser::dtToString ( event->dtStart() ); 149 attList << PhoneParser::dtToString ( event->dtStart() );
150 attList << PhoneParser::dtToString ( event->dtEnd() ); 150 attList << PhoneParser::dtToString ( event->dtEnd() );
151 attList << event->summary(); 151 attList << event->summary();
152 attList << event->location(); 152 attList << event->location();
153 QString alarmString = "na"; 153 QString alarmString = "na";
154 Alarm *alarm; 154 Alarm *alarm;
155 if ( event->alarms().count() > 0 ) { 155 if ( event->alarms().count() > 0 ) {
156 alarm = event->alarms().first(); 156 alarm = event->alarms().first();
157 if ( alarm->enabled() ) { 157 if ( alarm->enabled() ) {
158 alarmString = QString::number( alarm->startOffset().asSeconds() ); 158 alarmString = QString::number( alarm->startOffset().asSeconds() );
159 } 159 }
160 } 160 }
161 attList << alarmString; 161 attList << alarmString;
162 Recurrence* rec = event->recurrence(); 162 Recurrence* rec = event->recurrence();
163 QStringList list; 163 QStringList list;
164 bool writeEndDate = false; 164 bool writeEndDate = false;
165 switch ( rec->doesRecur() ) 165 switch ( rec->doesRecur() )
166 { 166 {
167 case Recurrence::rDaily: // 0 167 case Recurrence::rDaily: // 0
168 list.append( "0" ); 168 list.append( "0" );
169 list.append( QString::number( rec->frequency() ));//12 169 list.append( QString::number( rec->frequency() ));//12
170 list.append( "0" ); 170 list.append( "0" );
171 list.append( "0" ); 171 list.append( "0" );
172 writeEndDate = true; 172 writeEndDate = true;
173 break; 173 break;
174 case Recurrence::rWeekly:// 1 174 case Recurrence::rWeekly:// 1
175 list.append( "1" ); 175 list.append( "1" );
176 list.append( QString::number( rec->frequency()) );//12 176 list.append( QString::number( rec->frequency()) );//12
177 list.append( "0" ); 177 list.append( "0" );
178 { 178 {
179 int days = 0; 179 int days = 0;
180 QBitArray weekDays = rec->days(); 180 QBitArray weekDays = rec->days();
181 int i; 181 int i;
182 for( i = 1; i <= 7; ++i ) { 182 for( i = 1; i <= 7; ++i ) {
183 if ( weekDays[i-1] ) { 183 if ( weekDays[i-1] ) {
184 days += 1 << (i-1); 184 days += 1 << (i-1);
185 } 185 }
186 } 186 }
187 list.append( QString::number( days ) ); 187 list.append( QString::number( days ) );
188 } 188 }
189 //pending weekdays 189 //pending weekdays
190 writeEndDate = true; 190 writeEndDate = true;
191 191
192 break; 192 break;
193 case Recurrence::rMonthlyPos:// 2 193 case Recurrence::rMonthlyPos:// 2
194 list.append( "2" ); 194 list.append( "2" );
195 list.append( QString::number( rec->frequency()) );//12 195 list.append( QString::number( rec->frequency()) );//12
196 196
197 writeEndDate = true; 197 writeEndDate = true;
198 { 198 {
199 int count = 1; 199 int count = 1;
200 QPtrList<Recurrence::rMonthPos> rmp; 200 QPtrList<Recurrence::rMonthPos> rmp;
201 rmp = rec->monthPositions(); 201 rmp = rec->monthPositions();
202 if ( rmp.first()->negative ) 202 if ( rmp.first()->negative )
203 count = 5 - rmp.first()->rPos - 1; 203 count = 5 - rmp.first()->rPos - 1;
204 else 204 else
205 count = rmp.first()->rPos - 1; 205 count = rmp.first()->rPos - 1;
206 list.append( QString::number( count ) ); 206 list.append( QString::number( count ) );
207 207
208 } 208 }
209 209
210 list.append( "0" ); 210 list.append( "0" );
211 break; 211 break;
212 case Recurrence::rMonthlyDay:// 3 212 case Recurrence::rMonthlyDay:// 3
213 list.append( "3" ); 213 list.append( "3" );
214 list.append( QString::number( rec->frequency()) );//12 214 list.append( QString::number( rec->frequency()) );//12
215 list.append( "0" ); 215 list.append( "0" );
216 list.append( "0" ); 216 list.append( "0" );
217 writeEndDate = true; 217 writeEndDate = true;
218 break; 218 break;
219 case Recurrence::rYearlyMonth://4 219 case Recurrence::rYearlyMonth://4
220 list.append( "4" ); 220 list.append( "4" );
221 list.append( QString::number( rec->frequency()) );//12 221 list.append( QString::number( rec->frequency()) );//12
222 list.append( "0" ); 222 list.append( "0" );
223 list.append( "0" ); 223 list.append( "0" );
224 writeEndDate = true; 224 writeEndDate = true;
225 break; 225 break;
226 226
227 default: 227 default:
228 list.append( "255" ); 228 list.append( "255" );
229 list.append( QString() ); 229 list.append( QString() );
230 list.append( "0" ); 230 list.append( "0" );
231 list.append( QString() ); 231 list.append( QString() );
232 list.append( "0" ); 232 list.append( "0" );
233 list.append( "20991231T000000" ); 233 list.append( "20991231T000000" );
234 break; 234 break;
235 } 235 }
236 if ( writeEndDate ) { 236 if ( writeEndDate ) {
237 237
238 if ( rec->endDate().isValid() ) { // 15 + 16 238 if ( rec->endDate().isValid() ) { // 15 + 16
239 list.append( "1" ); 239 list.append( "1" );
240 list.append( PhoneParser::dtToString( rec->endDate()) ); 240 list.append( PhoneParser::dtToString( rec->endDate()) );
241 } else { 241 } else {
242 list.append( "0" ); 242 list.append( "0" );
243 list.append( "20991231T000000" ); 243 list.append( "20991231T000000" );
244 } 244 }
245 245
246 } 246 }
247 attList << list.join(""); 247 attList << list.join("");
248 attList << event->categoriesStr(); 248 attList << event->categoriesStr();
249 attList << event->secrecyStr(); 249 attList << event->secrecyStr();
250 return PhoneFormat::getCsum(attList ); 250 return PhoneFormat::getCsum(attList );
251} 251}
252ulong PhoneFormat::getCsum( const QStringList & attList) 252ulong PhoneFormat::getCsum( const QStringList & attList)
253{ 253{
254 int max = attList.count() -1; 254 int max = attList.count() -1;
255 ulong cSum = 0; 255 ulong cSum = 0;
256 int j,k,i; 256 int j,k,i;
257 int add; 257 int add;
258 for ( i = 1; i < max ; ++i ) { 258 for ( i = 1; i < max ; ++i ) {
259 QString s = attList[i]; 259 QString s = attList[i];
260 if ( ! s.isEmpty() ){ 260 if ( ! s.isEmpty() ){
261 j = s.length(); 261 j = s.length();
262 for ( k = 0; k < j; ++k ) { 262 for ( k = 0; k < j; ++k ) {
263 int mul = k +1; 263 int mul = k +1;
264 add = s[k].unicode (); 264 add = s[k].unicode ();
265 if ( k < 16 ) 265 if ( k < 16 )
266 mul = mul * mul; 266 mul = mul * mul;
267 add = add * mul *i*i*i; 267 add = add * mul *i*i*i;
268 cSum += add; 268 cSum += add;
269 } 269 }
270 } 270 }
271 } 271 }
272 return cSum; 272 return cSum;
273 273
274} 274}
275//extern "C" GSM_Error GSM_InitConnection(GSM_StateMachine *s, int ReplyNum); 275//extern "C" GSM_Error GSM_InitConnection(GSM_StateMachine *s, int ReplyNum);
276#include <stdlib.h> 276#include <stdlib.h>
277#define DEBUGMODE false 277#define DEBUGMODE false
278bool PhoneFormat::load( Calendar *calendar, Calendar *existingCal) 278bool PhoneFormat::load( Calendar *calendar, Calendar *existingCal)
279{ 279{
280 280
281 QString fileName; 281 QString fileName;
282#ifdef _WIN32_ 282#ifdef _WIN32_
283 fileName = locateLocal("data", "korganizer") + "\\tempfile.vcs"; 283 fileName = locateLocal("data", "korganizer") + "\\tempfile.vcs";
284#else 284#else
285 fileName = "/tmp/kdepimtemp.vcs"; 285 fileName = "/tmp/kdepimtemp.vcs";
286#endif 286#endif
287 QString command ="./kammu --backup " + fileName + " -yes"; 287 QString command ="./kammu --backup " + fileName + " -yes -C" +
288 mConnection +" -D" + mDevice +" -M" + mModel;
288 int ret = system ( command.latin1() ); 289 int ret = system ( command.latin1() );
289 if ( ret != 0 ) 290 if ( ret != 0 )
290 return false; 291 return false;
291 VCalFormat vfload; 292 VCalFormat vfload;
292 vfload.setLocalTime ( true ); 293 vfload.setLocalTime ( true );
293 if ( ! vfload.load( calendar, fileName ) ) 294 if ( ! vfload.load( calendar, fileName ) )
294 return false; 295 return false;
295 QPtrList<Event> er = calendar->rawEvents(); 296 QPtrList<Event> er = calendar->rawEvents();
296 Event* ev = er.first(); 297 Event* ev = er.first();
297 while ( ev ) { 298 while ( ev ) {
298 int id = ev->pilotId(); 299 int id = ev->pilotId();
299 Event *event; 300 Event *event;
300 event = existingCal->event( mProfileName ,QString::number( id ) ); 301 event = existingCal->event( mProfileName ,QString::number( id ) );
301 if ( event ) { 302 if ( event ) {
302 event = (Event*)event->clone(); 303 event = (Event*)event->clone();
303 copyEvent( event, ev ); 304 copyEvent( event, ev );
304 calendar->deleteEvent( ev ); 305 calendar->deleteEvent( ev );
305 calendar->addEvent( event); 306 calendar->addEvent( event);
306 } 307 }
307 else 308 else
308 event = ev; 309 event = ev;
309 uint cSum; 310 uint cSum;
310 cSum = PhoneFormat::getCsumEvent( event ); 311 cSum = PhoneFormat::getCsumEvent( event );
311 event->setCsum( mProfileName, QString::number( cSum )); 312 event->setCsum( mProfileName, QString::number( cSum ));
312 event->setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL ); 313 event->setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL );
313 event->setID( mProfileName,QString::number( id ) ); 314 event->setID( mProfileName,QString::number( id ) );
314 ev = er.next(); 315 ev = er.next();
315 } 316 }
316 { 317 {
317 QPtrList<Todo> tr = calendar->rawTodos(); 318 QPtrList<Todo> tr = calendar->rawTodos();
318 Todo* ev = tr.first(); 319 Todo* ev = tr.first();
319 while ( ev ) { 320 while ( ev ) {
320 321
321 QStringList cat = ev->categories(); 322 QStringList cat = ev->categories();
322 if ( cat.contains( "MeetingDEF" )) { 323 if ( cat.contains( "MeetingDEF" )) {
323 ev->setCategories( QStringList() ); 324 ev->setCategories( QStringList() );
324 } 325 }
325 int id = ev->pilotId(); 326 int id = ev->pilotId();
326 Todo *event; 327 Todo *event;
327 event = existingCal->todo( mProfileName ,QString::number( id ) ); 328 event = existingCal->todo( mProfileName ,QString::number( id ) );
328 if ( event ) { 329 if ( event ) {
329 event = (Todo*)event->clone(); 330 event = (Todo*)event->clone();
330 copyTodo( event, ev ); 331 copyTodo( event, ev );
331 calendar->deleteTodo( ev ); 332 calendar->deleteTodo( ev );
332 calendar->addTodo( event); 333 calendar->addTodo( event);
333 } 334 }
334 else 335 else
335 event = ev; 336 event = ev;
336 uint cSum; 337 uint cSum;
337 cSum = PhoneFormat::getCsumTodo( event ); 338 cSum = PhoneFormat::getCsumTodo( event );
338 event->setCsum( mProfileName, QString::number( cSum )); 339 event->setCsum( mProfileName, QString::number( cSum ));
339 event->setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL ); 340 event->setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL );
340 event->setID( mProfileName,QString::number( id ) ); 341 event->setID( mProfileName,QString::number( id ) );
341 ev = tr.next(); 342 ev = tr.next();
342 } 343 }
343 } 344 }
344 return true; 345 return true;
345} 346}
346void PhoneFormat::copyEvent( Event* to, Event* from ) 347void PhoneFormat::copyEvent( Event* to, Event* from )
347{ 348{
348 if ( from->dtStart().isValid() ) 349 if ( from->dtStart().isValid() )
349 to->setDtStart( from->dtStart() ); 350 to->setDtStart( from->dtStart() );
350 if ( from->dtEnd().isValid() ) 351 if ( from->dtEnd().isValid() )
351 to->setDtEnd( from->dtEnd() ); 352 to->setDtEnd( from->dtEnd() );
352 if ( !from->location().isEmpty() ) 353 if ( !from->location().isEmpty() )
353 to->setLocation( from->location() ); 354 to->setLocation( from->location() );
354 if ( !from->description().isEmpty() ) 355 if ( !from->description().isEmpty() )
355 to->setDescription( from->description() ); 356 to->setDescription( from->description() );
356 if ( !from->summary().isEmpty() ) 357 if ( !from->summary().isEmpty() )
357 to->setSummary( from->summary() ); 358 to->setSummary( from->summary() );
358 359
359 QPtrListIterator<Alarm> it( from->alarms() ); 360 QPtrListIterator<Alarm> it( from->alarms() );
360 to->clearAlarms(); 361 to->clearAlarms();
361 const Alarm *a; 362 const Alarm *a;
362 while( (a = it.current()) ) { 363 while( (a = it.current()) ) {
363 Alarm *b = new Alarm( *a ); 364 Alarm *b = new Alarm( *a );
364 b->setParent( to ); 365 b->setParent( to );
365 to->addAlarm( b ); 366 to->addAlarm( b );
366 ++it; 367 ++it;
367 } 368 }
368 QStringList cat = to->categories(); 369 QStringList cat = to->categories();
369 QStringList catFrom = from->categories(); 370 QStringList catFrom = from->categories();
370 QString nCat; 371 QString nCat;
371 int iii; 372 int iii;
372 for ( iii = 0; iii < catFrom.count();++iii ) { 373 for ( iii = 0; iii < catFrom.count();++iii ) {
373 nCat = catFrom[iii]; 374 nCat = catFrom[iii];
374 if ( !nCat.isEmpty() ) 375 if ( !nCat.isEmpty() )
375 if ( !cat.contains( nCat )) { 376 if ( !cat.contains( nCat )) {
376 cat << nCat; 377 cat << nCat;
377 } 378 }
378 } 379 }
379 to->setCategories( cat ); 380 to->setCategories( cat );
380 Recurrence * r = new Recurrence( *from->recurrence(),to); 381 Recurrence * r = new Recurrence( *from->recurrence(),to);
381 to->setRecurrence( r ) ; 382 to->setRecurrence( r ) ;
382 383
383 384
384} 385}
385void PhoneFormat::copyTodo( Todo* to, Todo* from ) 386void PhoneFormat::copyTodo( Todo* to, Todo* from )
386{ 387{
387 if ( from->dtStart().isValid() ) 388 if ( from->dtStart().isValid() )
388 to->setDtStart( from->dtStart() ); 389 to->setDtStart( from->dtStart() );
389 if ( from->dtDue().isValid() ) 390 if ( from->dtDue().isValid() )
390 to->setDtDue( from->dtDue() ); 391 to->setDtDue( from->dtDue() );
391 if ( !from->location().isEmpty() ) 392 if ( !from->location().isEmpty() )
392 to->setLocation( from->location() ); 393 to->setLocation( from->location() );
393 if ( !from->description().isEmpty() ) 394 if ( !from->description().isEmpty() )
394 to->setDescription( from->description() ); 395 to->setDescription( from->description() );
395 if ( !from->summary().isEmpty() ) 396 if ( !from->summary().isEmpty() )
396 to->setSummary( from->summary() ); 397 to->setSummary( from->summary() );
397 398
398 QPtrListIterator<Alarm> it( from->alarms() ); 399 QPtrListIterator<Alarm> it( from->alarms() );
399 to->clearAlarms(); 400 to->clearAlarms();
400 const Alarm *a; 401 const Alarm *a;
401 while( (a = it.current()) ) { 402 while( (a = it.current()) ) {
402 Alarm *b = new Alarm( *a ); 403 Alarm *b = new Alarm( *a );
403 b->setParent( to ); 404 b->setParent( to );
404 to->addAlarm( b ); 405 to->addAlarm( b );
405 ++it; 406 ++it;
406 } 407 }
407 QStringList cat = to->categories(); 408 QStringList cat = to->categories();
408 QStringList catFrom = from->categories(); 409 QStringList catFrom = from->categories();
409 QString nCat; 410 QString nCat;
410 int iii; 411 int iii;
411 for ( iii = 0; iii < catFrom.count();++iii ) { 412 for ( iii = 0; iii < catFrom.count();++iii ) {
412 nCat = catFrom[iii]; 413 nCat = catFrom[iii];
413 if ( !nCat.isEmpty() ) 414 if ( !nCat.isEmpty() )
414 if ( !cat.contains( nCat )) { 415 if ( !cat.contains( nCat )) {
415 cat << nCat; 416 cat << nCat;
416 } 417 }
417 } 418 }
418 to->setCategories( cat ); 419 to->setCategories( cat );
419 if ( from->isCompleted() ) { 420 if ( from->isCompleted() ) {
420 to->setCompleted( true ); 421 to->setCompleted( true );
421 if( from->completed().isValid() ) 422 if( from->completed().isValid() )
422 to->setCompleted( from->completed() ); 423 to->setCompleted( from->completed() );
423 } else { 424 } else {
424 // set percentcomplete only, if to->isCompleted() 425 // set percentcomplete only, if to->isCompleted()
425 if ( to->isCompleted() ) 426 if ( to->isCompleted() )
426 to->setPercentComplete(from->percentComplete()); 427 to->setPercentComplete(from->percentComplete());
427 } 428 }
428 to->setPriority(from->priority()); 429 to->setPriority(from->priority());
429 430
430} 431}
431#include <qcstring.h> 432#include <qcstring.h>
432 433
433void PhoneFormat::afterSave( Incidence* inc) 434void PhoneFormat::afterSave( Incidence* inc)
434{ 435{
435 uint csum; 436 uint csum;
436 inc->removeID( mProfileName ); 437 inc->removeID( mProfileName );
437 if ( inc->type() == "Event") 438 if ( inc->type() == "Event")
438 csum = PhoneFormat::getCsumEvent( (Event*) inc ); 439 csum = PhoneFormat::getCsumEvent( (Event*) inc );
439 else 440 else
440 csum = PhoneFormat::getCsumTodo( (Todo*) inc ); 441 csum = PhoneFormat::getCsumTodo( (Todo*) inc );
441 inc->setCsum( mProfileName, QString::number( csum )); 442 inc->setCsum( mProfileName, QString::number( csum ));
442 inc->setTempSyncStat( SYNC_TEMPSTATE_NEW_ID ); 443 inc->setTempSyncStat( SYNC_TEMPSTATE_NEW_ID );
443 444
444} 445}
445bool PhoneFormat::save( Calendar *calendar) 446bool PhoneFormat::save( Calendar *calendar)
446{ 447{
447 QLabel status ( i18n(" Opening device ..."), 0 ); 448 QLabel status ( i18n(" Opening device ..."), 0 );
448 int w = status.sizeHint().width()+20 ; 449 int w = status.sizeHint().width()+20 ;
449 if ( w < 200 ) w = 230; 450 if ( w < 200 ) w = 230;
450 int h = status.sizeHint().height()+20 ; 451 int h = status.sizeHint().height()+20 ;
451 int dw = QApplication::desktop()->width(); 452 int dw = QApplication::desktop()->width();
452 int dh = QApplication::desktop()->height(); 453 int dh = QApplication::desktop()->height();
453 status.setCaption(i18n("Writing to phone...") ); 454 status.setCaption(i18n("Writing to phone...") );
454 status.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 455 status.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
455 status.show(); 456 status.show();
456 status.raise(); 457 status.raise();
457 qApp->processEvents(); 458 qApp->processEvents();
458 QString message; 459 QString message;
459#ifdef _WIN32_ 460#ifdef _WIN32_
460 QString fileName = locateLocal("data", "korganizer") + "\\tempfile.vcs"; 461 QString fileName = locateLocal("data", "korganizer") + "\\tempfile.vcs";
461#else 462#else
462 QString fileName = "/tmp/kdepimtemp.vcs"; 463 QString fileName = "/tmp/kdepimtemp.vcs";
463#endif 464#endif
464 465
465 // 1 remove events which should be deleted 466 // 1 remove events which should be deleted
466 QPtrList<Event> er = calendar->rawEvents(); 467 QPtrList<Event> er = calendar->rawEvents();
467 Event* ev = er.first(); 468 Event* ev = er.first();
468 while ( ev ) { 469 while ( ev ) {
469 if ( ev->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { 470 if ( ev->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) {
470 calendar->deleteEvent( ev ); 471 calendar->deleteEvent( ev );
471 } else { 472 } else {
472 473
473 } 474 }
474 ev = er.next(); 475 ev = er.next();
475 } 476 }
476 // 2 remove todos which should be deleted 477 // 2 remove todos which should be deleted
477 QPtrList<Todo> tl = calendar->rawTodos(); 478 QPtrList<Todo> tl = calendar->rawTodos();
478 Todo* to = tl.first(); 479 Todo* to = tl.first();
479 while ( to ) { 480 while ( to ) {
480 if ( to->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { 481 if ( to->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) {
481 calendar->deleteTodo( to ); 482 calendar->deleteTodo( to );
482 } 483 }
483 to = tl.next(); 484 to = tl.next();
484 } 485 }
485 // 3 save file 486 // 3 save file
486 VCalFormat vfsave; 487 VCalFormat vfsave;
487 vfsave.setLocalTime ( true ); 488 vfsave.setLocalTime ( true );
488 if ( ! vfsave.save( calendar, fileName ) ) 489 if ( ! vfsave.save( calendar, fileName ) )
489 return false; 490 return false;
490 // 4 call kammu 491 // 4 call kammu
491 QString command ="./kammu --restore " + fileName ; 492 QString command ="./kammu --restore " + fileName + " -C" +
493 mConnection +" -D" + mDevice +" -M" + mModel;;
492 int ret = system ( command.latin1() ); 494 int ret = system ( command.latin1() );
493 if ( ret != 0 ) 495 if ( ret != 0 )
494 return false; 496 return false;
495 // 5 reread data 497 // 5 reread data
496 message = i18n(" Rereading all data ... "); 498 message = i18n(" Rereading all data ... ");
497 status.setText ( message ); 499 status.setText ( message );
498 qApp->processEvents(); 500 qApp->processEvents();
499 CalendarLocal* calendarTemp = new CalendarLocal(); 501 CalendarLocal* calendarTemp = new CalendarLocal();
500 calendarTemp->setTimeZoneId( calendar->timeZoneId()); 502 calendarTemp->setTimeZoneId( calendar->timeZoneId());
501 if ( ! load( calendarTemp,calendar) ){ 503 if ( ! load( calendarTemp,calendar) ){
502 qDebug("error reloading calendar "); 504 qDebug("error reloading calendar ");
503 delete calendarTemp; 505 delete calendarTemp;
504 return false; 506 return false;
505 } 507 }
506 // 6 compare data 508 // 6 compare data
507 509
508//algo 6 compare event 510//algo 6 compare event
509 er = calendar->rawEvents(); 511 er = calendar->rawEvents();
510 ev = er.first(); 512 ev = er.first();
511 message = i18n(" Comparing event # "); 513 message = i18n(" Comparing event # ");
512 QPtrList<Event> er1 = calendarTemp->rawEvents(); 514 QPtrList<Event> er1 = calendarTemp->rawEvents();
513 Event* ev1; 515 Event* ev1;
514 int procCount = 0; 516 int procCount = 0;
515 while ( ev ) { 517 while ( ev ) {
516 qDebug("event new ID "); 518 qDebug("event new ID ");
517 status.setText ( message + QString::number ( ++procCount ) ); 519 status.setText ( message + QString::number ( ++procCount ) );
518 qApp->processEvents(); 520 qApp->processEvents();
519 QString cSum = ev->getCsum(mProfileName); 521 QString cSum = ev->getCsum(mProfileName);
520 ev1 = er1.first(); 522 ev1 = er1.first();
521 while ( ev1 ) { 523 while ( ev1 ) {
522 if ( ev1->getCsum( mProfileName ) == cSum ) { 524 if ( ev1->getCsum( mProfileName ) == cSum ) {
523 er1.remove( ev1 ); 525 er1.remove( ev1 );
524 afterSave( ev ); 526 afterSave( ev );
525 ev->setID(mProfileName, ev1->getID(mProfileName) ); 527 ev->setID(mProfileName, ev1->getID(mProfileName) );
526 break; 528 break;
527 } 529 }
528 ev1 = er1.next(); 530 ev1 = er1.next();
529 } 531 }
530 if ( ! ev1 ) { 532 if ( ! ev1 ) {
531 ev->removeID(mProfileName); 533 ev->removeID(mProfileName);
532 qDebug("ERROR: No event found on phone for %s ", ev->summary().latin1()); 534 qDebug("ERROR: No event found on phone for %s ", ev->summary().latin1());
533 } 535 }
534 536
535 537
536 ev = er.next(); 538 ev = er.next();
537 } 539 }
538 //algo 6 compare todo 540 //algo 6 compare todo
539 to = tl.first(); 541 to = tl.first();
540 procCount = 0; 542 procCount = 0;
541 QPtrList<Todo> tl1 = calendarTemp->rawTodos(); 543 QPtrList<Todo> tl1 = calendarTemp->rawTodos();
542 Todo* to1 ; 544 Todo* to1 ;
543 message = i18n(" Comparing todo # "); 545 message = i18n(" Comparing todo # ");
544 while ( to ) { 546 while ( to ) {
545 qDebug("todo2 %d ", procCount); 547 qDebug("todo2 %d ", procCount);
546 status.setText ( message + QString::number ( ++procCount ) ); 548 status.setText ( message + QString::number ( ++procCount ) );
547 qApp->processEvents(); 549 qApp->processEvents();
548 QString cSum = to->getCsum(mProfileName); 550 QString cSum = to->getCsum(mProfileName);
549 Todo* to1 = tl1.first(); 551 Todo* to1 = tl1.first();
550 while ( to1 ) { 552 while ( to1 ) {
551 if ( to1->getCsum( mProfileName ) == cSum ) { 553 if ( to1->getCsum( mProfileName ) == cSum ) {
552 tl1.remove( to1 ); 554 tl1.remove( to1 );
553 afterSave( to ); 555 afterSave( to );
554 to->setID(mProfileName, to1->getID(mProfileName) ); 556 to->setID(mProfileName, to1->getID(mProfileName) );
555 break; 557 break;
556 } 558 }
557 to1 = tl1.next(); 559 to1 = tl1.next();
558 } 560 }
559 if ( ! to1 ) { 561 if ( ! to1 ) {
560 to->removeID(mProfileName); 562 to->removeID(mProfileName);
561 qDebug("ERROR: No todo found on phone for %s ", to->summary().latin1()); 563 qDebug("ERROR: No todo found on phone for %s ", to->summary().latin1());
562 } 564 }
563 565
564 to = tl.next(); 566 to = tl.next();
565 } 567 }
566 delete calendarTemp; 568 delete calendarTemp;
567 return true; 569 return true;
568 570
569 571
570 572
571} 573}
572 574
573 575
574QString PhoneFormat::toString( Calendar * ) 576QString PhoneFormat::toString( Calendar * )
575{ 577{
576 return QString::null; 578 return QString::null;
577} 579}
578bool PhoneFormat::fromString( Calendar *calendar, const QString & text) 580bool PhoneFormat::fromString( Calendar *calendar, const QString & text)
579{ 581{
580 return false; 582 return false;
581} 583}