[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gnokii-users
Subject:    Re: [PATCH] 6310i ToDo writing improved
From:       Balint Reczey <balint_reczey () yahoo ! com>
Date:       2004-12-19 19:31:25
Message-ID: 20041219193125.26320.qmail () web41206 ! mail ! yahoo ! com
[Download RAW message or body]

--- Pawel Kot <pkot@bezsensu.pl> wrote: 
> On Sun, 19 Dec 2004, Balint Reczey wrote:
> 
> Hi,
> 
> > This patch hopefully fixes ToDo writing.
> > The previous patch did not fix all problems, the
> phone
> > appended memory random characters to todo texts
> even
> > after patching.

> >                                 0x0E, /* length of
> text + 1*/
> I need to test this on other phones. I didn't have
> such problems with my
> 6310 but will verify that.
> >       req[10 + length ] = '\0';    // kind of
> padding
> >       req[10 + length + 1] = '\0'; //
> Looks ugly. Very ugly. Why do you need both fields
> zeroed? Perhaps it's
Probably beacause of the two byte unicode format.
I dont't have protocol definition, but sending just
one  byte padding caused an appended random character
after the todo text.

> better to zero all req[] table. Or at least:
Zeroing all values is obsolete since sm_message_send()
does not send them.

> 	req[10+length] = req[11+length] = 0;
> looks much nicer.
:-). 

> >               free(req);
> Looks very incorrect to me. req is allocated
> statically and I belive it
> will segfault is most cases.
Mea culpa, it was left from a test.

Balint


		
___________________________________________________________ 
Win a castle for NYE with your mates and Yahoo! Messenger 
http://uk.messenger.yahoo.com
["nokia6310itodowrite-3.patch" (text/x-patch)]

Index: gnokii/common/phones/nk6510.c
===================================================================
RCS file: /cvsroot/gnokii/gnokii/common/phones/nk6510.c,v
retrieving revision 1.160
diff -u -r1.160 nk6510.c
--- gnokii/common/phones/nk6510.c	19 Dec 2004 15:34:34 -0000	1.160
+++ gnokii/common/phones/nk6510.c	19 Dec 2004 19:00:18 -0000
@@ -4105,7 +4105,9 @@
 {
 	unsigned char req[300] = {FBUS_FRAME_HEADER, 0x01, 
 				  0x02, /* prority */
-				  0x0D, 0x80, 0x00, 0x00, 0x01};	/* Location */
+				  0x0E, /* length of text + 1*/
+				  0x80, 0x00,
+				  0x00, 0x01};	/* Location */
 	unsigned char text[257];
 	int length;
 	gn_error error;
@@ -4118,10 +4120,17 @@
 	req[9] = data->todo->location % 256;
 
 	length = char_unicode_encode(text, data->todo->text, strlen(data->todo->text));
+	
+	if (length > GN_TODO_MAX_LENGTH) return GN_ERR_ENTRYTOOLONG;
+	
+	req[5] = length + 1;
+	
 	memcpy(req + 10, text, length);
-
+	
+	req[10 + length ] = '\0';    // kind of padding 
+	req[10 + length + 1] = '\0'; // 
 	dprintf("Setting ToDo\n");
-	if (sm_message_send(length, NK6510_MSG_TODO, req, state)) return GN_ERR_NOTREADY;
+	if (sm_message_send(length+12, NK6510_MSG_TODO, req, state)) return GN_ERR_NOTREADY;
 	error = sm_block(NK6510_MSG_TODO, data, state);
 	if (error == GN_ERR_NONE) {
 		error = NK6510_GetToDo_Internal(data, state, data->todo->location);


_______________________________________________
gnokii-users mailing list
gnokii-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/gnokii-users


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic