new LG phonebook protocol

Nathan Hjelm <[email protected]> Wed, 04 Nov 2009 08:25:16 -0700
Newsgroups gmane.comp.mobile.bitpim.devel
Message-ID <[email protected]>
It turns out LG did not completely remove the phonebook protocol (old  
command 0xff). Newer phones (VX-5500, VX-9600, VX-11K, and likely  
others) use the 0xf1 command. Here is what I know so far (still  
looking for commands):

      command index option1 option2     effect
0xf1 0x01    --    --      --          returns carrier name at offset 38
0xf1 0x0a    --    --      --          phone info (mtn, phone kind, sw  
version, hw revision, etc)
0xf1 0x28    --    --      --          phonebook info. returns the  
maximum count for contacts and calendar events
0xf1 0x29    0-max ??      ??          read contact
0xf1 0x2a    0-max ??      ??          write contact
0xf1 0x2c    0-max ??      ??          clear contact
0xf1 0x2d    0-max ??      ??          read name of built-in ringtone  
at index. last valid name is No Ring
0xf1 0x2e    ??    ??      group index read group names
0xf1 0x2f    ??    ??      ??          clears all contacts when index,  
option1, option2 are 0 (haven't tried any other values)
0xf1 0x32    0-max ??      ??          read event
0xf1 0x33    0-max ??      ??          delete event??

Here is the basic structure of the 0xf1 0x29 and 0xf1 0x2a commands:
struct lg_pbv1_standard {
   u_int8_t  command;        /* 0xf1 */
   u_int8_t  option;         /* 0x29: read, 0x2a: write */
   u_int16_t index;          /* */
   u_int8_t  unknown0[6];    /* 00 00 00 00 00 00 on write. might  
contain pic id/ring id settings */
   char      name[33];       /* contact name (iso-latin 1) */
   u_int16_t gid;            /* 0(no group)-30 */
   char      emails[2][49];  /* contact emails (iso-latin 1) */
   u_int8_t  unknown1[6];    /* 00 00 00 00 00 00 */
   char      numbers[5][49]; /* mobile1, home, work, mobile2, fax  
(ascii) */
   u_int16_t default_number; /* 1-5 (index in numbers array + 1) */
   u_int8_t  unknown2[96];   /* doesn't matter */
   u_int16_t validflag;      /* 0x012f == invalid, 0x0000 == valid */
   /* unknown/phone specific */
} __attribute__ ((__packed__));

UTF-16 version (VX-5500):
struct lg_pbv1_unicode {
   u_int8_t  command;        /* 0xf1 */
   u_int8_t  option;         /* 0x29: read, 0x2a: write */
   u_int16_t index;          /* */
   u_int8_t  unknown0[6];    /* 00 00 00 00 00 00 on write. might  
contain pic id/ring id settings */
   u_int16_t name[33];       /* contact name (utf-16 le) */
   u_int16_t gid;            /* 0(no group)-30 */
   char      emails[2][49];  /* contact emails (iso-latin 1) */
   u_int8_t  unknown1[6];    /* 00 00 00 00 00 00 */
   char      numbers[5][49]; /* mobile1, home, work, mobile2, fax  
(ascii) */
   u_int16_t default_number; /* 1-5 (index in numbers array + 1) */
   u_int8_t  unknown2[96];   /* doesn't matter */
   u_int16_t validflag;      /* 0x012f == invalid, 0x0000 == valid */
   /* unknown/phone specific */
} __attribute__ ((__packed__));

If anyone has the time (and an older LGPBv1 phone-- VX-8550 and newer)  
I want to know if all LGPBv1 phones use the above protocol. If so then  
the 0xf1 0x2d command could be used in com_lgvx8550.py to generate the  
built-in ringtone list instead of us hard-coding the list. I still  
prefer directly modifying pbentry.dat and pbnumber.dat for reading/ 
writing the phonebook as they are more powerful (street address flags,  
for example, do not appear in the 0xf1 protocol).

-Nathan

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july

_______________________________________________
BitPim-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bitpim-devel