X-Git-Url: https://git.jankratochvil.net/?p=gnokii.git;a=blobdiff_plain;f=common%2Fnewmodules%2Fn6110.c;h=7033493d92c2a8ac38bc521adb05c6f20c6d77d6;hp=12d572a85d9b0ec08c9ba1833d14032c7f033bdf;hb=07e8833740d5c2268df6000ef3856bb05bf0dc67;hpb=75fee3944a3fa77dae48012152a9d70f2145f148 diff --git a/common/newmodules/n6110.c b/common/newmodules/n6110.c index 12d572a..7033493 100644 --- a/common/newmodules/n6110.c +++ b/common/newmodules/n6110.c @@ -41,11 +41,6 @@ supported by this model of phone. */ - - - - - /* Here we initialise model specific functions. */ GSM_Functions N6110_Functions = { N6110_Initialise, @@ -136,12 +131,11 @@ GSM_Functions N6110_Functions = { #ifndef UCLINUX N6110_GetProfile, N6110_SetProfile, - N6110_SendRLPFrame, #else /* UCLINUX */ NULL, NULL, - NULL, #endif /* UCLINUX */ + N6110_SendRLPFrame, N6110_CancelCall, #ifndef UCLINUX N6110_PressKey, @@ -437,6 +431,8 @@ GSM_Error N6110_SendStatusRequest(void) static void N6110_ReplyGetAuthentication(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) { + LIVE; + #if defined WIN32 || !defined HAVE_SNPRINTF sprintf(Current_IMEI, "%s", MessageBuffer+9); sprintf(Current_Model, "%s", MessageBuffer+25); @@ -600,6 +596,14 @@ static GSM_Error N6110_Authentication() 0x00, 0x00, 0x00, 0x00}; + unsigned char req3_55[] = { N6110_FRAME_HEADER, 0x42,0x05,0x01, + 0x07,0xa2,0x88,0x81,0x21,0x55,0x63,0xa8,0x00,0x00, + 0x07,0xa3,0xb8,0x81,0x20,0x15,0x63,0x80 }; + unsigned char req3[] = { N6110_FRAME_HEADER, 0x42,0x05,0x01, + 0x07,0xa2,0x88,0x81,0x21,0x15,0x63,0xa8,0x00,0x00, + 0x07,0xa3,0xb8,0x81,0x20,0x15,0x63,0x80 }; + unsigned char unknown_05[] = {N6110_FRAME_HEADER, 0x05}; + #ifdef DEBUG fprintf(stdout,_("Making authentication!\n")); #endif @@ -608,15 +612,23 @@ static GSM_Error N6110_Authentication() usleep(100); Protocol->SendMessage(5, 0x02, connect2); usleep(100); Protocol->SendMessage(7, 0x02, connect3); + usleep(100); Protocol->SendMessage(sizeof(req3_55), 0x01, req3_55); /* Lace */ + CurrentMagicError = GE_BUSY; usleep(100); Protocol->SendMessage(4, 0x64, connect4); + + usleep(100); Protocol->SendMessage(sizeof(req3_55), 0x01, req3_55); /* Lace */ + usleep(100); Protocol->SendMessage(sizeof(req3), 0x01, req3); /* Lace */ + if (NULL_WaitUntil(50,&CurrentMagicError)!=GE_NONE) return GE_TIMEOUT; N6110_GetNokiaAuth(Current_IMEI, MagicBytes, magic_connect+4); Protocol->SendMessage(45, 0x64, magic_connect); + usleep(100); Protocol->SendMessage(4, 0x04, unknown_05); /* Lace */ + #ifdef DEBUG fprintf(stdout,_("End of authentication!\n")); #endif @@ -727,7 +739,12 @@ GSM_Error N6110_Initialise(char *port_device, char *initlength, After making it phone display "Accessory connected" and probably give access to some function (I'm not too sure about it !) Anyway, I make it now for N51xx/61xx */ - if (GetModelFeature (FN_AUTHENTICATION)!=0) { +#if 1 + if (GetModelFeature (FN_AUTHENTICATION)!=0) +#else + if (0/*Lace-hack:GetModelFeature (FN_AUTHENTICATION)!=0*/) +#endif + { if (N6110_Authentication()!=GE_NONE) return GE_TIMEOUT; } else { /* No authentication */ if (N6110_SendIMEIFrame()!=GE_NONE) return GE_TIMEOUT; @@ -1898,6 +1915,8 @@ GSM_Error N6110_SetProfile(GSM_Profile *Profile) return (GE_NONE); } +#endif /* UCLINUX */ + bool N6110_SendRLPFrame(RLP_F96Frame *frame, bool out_dtx) { u8 req[60] = { 0x00, 0xd9 }; @@ -1913,6 +1932,8 @@ bool N6110_SendRLPFrame(RLP_F96Frame *frame, bool out_dtx) return (Protocol->SendFrame(32, 0xf0, req)); } +#ifndef UCLINUX + void N6110_ReplyGetCalendarNote(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) { int i, j; @@ -2559,9 +2580,11 @@ GSM_Error N6110_DialData(char *Number, char type, void (* callpassup)(char c)) 0x02,0x01,0x05,0x81,0x01,0x00,0x00,0x01,0x02,0x0a, 0x07,0xa1,0x88,0x89,0x21,0x15,0x63,0xa0,0x00,0x06, 0x88,0x90,0x21,0x48,0x40,0xbb }; +#if 0 unsigned char req2[] = { N6110_FRAME_HEADER, 0x42,0x05,0x01, 0x07,0xa2,0xc8,0x81,0x21,0x15,0x63,0xa8,0x00,0x00, 0x07,0xa3,0xb8,0x81,0x20,0x15,0x63,0x80,0x01,0x60 }; +#endif unsigned char req3[] = { N6110_FRAME_HEADER, 0x42,0x05,0x01, 0x07,0xa2,0x88,0x81,0x21,0x15,0x63,0xa8,0x00,0x00, 0x07,0xa3,0xb8,0x81,0x20,0x15,0x63,0x80 }; @@ -2577,12 +2600,16 @@ GSM_Error N6110_DialData(char *Number, char type, void (* callpassup)(char c)) switch (type) { case 0: + usleep(100); Protocol->SendMessage(sizeof(req3), 0x01, req3); /* Lace */ + usleep(100); req_end = req_end0; size = sizeof(req_end0); break; case 1: Protocol->SendMessage(sizeof(req3), 0x01, req3); + usleep(1000000); Protocol->SendMessage(sizeof(req4), 0x01, req4); + usleep(1000000); req_end = req_end1; size = sizeof(req_end1); break; @@ -2603,7 +2630,11 @@ GSM_Error N6110_DialData(char *Number, char type, void (* callpassup)(char c)) memcpy(req + 5 + strlen(Number), req_end, size); Protocol->SendMessage(5 + size + strlen(Number), 0x01, req); + usleep(1000000); + +#if 0 if (type != 1) Protocol->SendMessage(26, 0x01, req2); +#endif return (GE_NONE); } @@ -5232,8 +5263,6 @@ static void N6110_Dispatch0x06Message(u16 MessageLength, u8 *MessageBuffer, u8 M } } -#endif /* UCLINUX */ - static void N6110_Dispatch0x09Message(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) { switch (MessageBuffer[3]) { @@ -5259,8 +5288,6 @@ static void N6110_Dispatch0x09Message(u16 MessageLength, u8 *MessageBuffer, u8 M } } -#ifndef UCLINUX - static void N6110_Dispatch0x13Message(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) { switch(MessageBuffer[3]) { @@ -5646,7 +5673,6 @@ void N6110_DispatchMessage(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) default :N6110_ReplyEnterSecurityCode (MessageLength,MessageBuffer,MessageType);break; } break; -#endif /* UCLINUX */ /* SIM login */ case 0x09: @@ -5654,7 +5680,6 @@ void N6110_DispatchMessage(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) N6110_Dispatch0x09Message(MessageLength, MessageBuffer, MessageType); break; -#ifndef UCLINUX /* Network info */ case 0x0a: switch (MessageBuffer[3]) {