Re: [bitpim-devel] want to help with lg cosmos
Seth Randall <[email protected]> Tue, 25 May 2010 19:47:50 -0600
| Newsgroups | gmane.comp.mobile.bitpim.devel |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --------------000701070703060801060008 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Nathan, I've attached some preliminary support for the Accolade (VX5600) that I was able to use for my address book. I haven't gotten SMS working yet though. I haven't had time to work on it, but I figure I might as well make it available for someone else to look at. On 05/24/2010 10:29 AM, hjelmn wrote: > To get started follow this link: http://www.bitpim.org/developerhtml > > Once the development environment is set up I recommend taking a look at > com_lgvx11000.py and p_lgvx11000.p . You will probably want to subclass > com_lgvx11000. If you need any help let me know > > Also, I am working on Accolade support which, in all likelihood, is > similar to the Cosmos (same generation phone). I will let you know when > that is complete. > > -Nathan --------------000701070703060801060008 Content-Type: text/x-python; name="com_lgvx5600.py" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="com_lgvx5600.py" #!/usr/bin/env python ### BITPIM ### ### Copyright (C) 2007-2008 Nathan Hjelm <[email protected]> ### ### This program is free software; you can redistribute it and/or modify ### it under the terms of the BitPim license as detailed in the LICENSE file. ### $Id$ """ Communicate with the LG VX5600 cell phone. """ # BitPim modules import common import com_brew import bpcalendar import prototypes import com_lgvx8575 import p_lgvx5600 import p_brew import helpids import copy import time import os.path import phonebookentryeditor DEBUG1=False #------------------------------------------------------------------------------- parentphone=com_lgvx8575.Phone class Phone(parentphone): desc="LG-VX5600" helpid=None protocolclass=p_lgvx5600 serialsname='lgvx5600' my_model='VX5600' calendarringerlocation='sch/toolsRinger.dat' ringtonelocations= ( # type index file default dir external dir max type index ( 'ringers', 'dload/myringtone.dat','brew/mod/10889/ringtones', '', 100, 0x01, 100), ( 'sounds', 'dload/mysound.dat', 'brew/mod/18067', '', 100, 0x02, None), ( 'music', 'dload/efs_music.dat', 'my_music', '', 100, 0x104, None), ) #add picture ids to list of wallpapers, seems to be new for this phone wallpaperlocations= ( # type index file default dir external dir max type Index ( 'images', 'dload/image.dat', 'brew/mod/10888', '', 100, 0x00, 100), ( 'video', 'dload/video.dat', 'brew/mod/10890', '', 100, 0x03, None), ( 'picture ids','set_as_pic_id_dir/setas_pic_id.dat', 'set_as_pic_id_dir', '', 999, 0x00, None), ) #------------------------------------------------------------------------------- parentprofile=com_lgvx8575.Profile class Profile(parentprofile): protocolclass=Phone.protocolclass serialsname=Phone.serialsname BP_Calendar_Version=3 phone_manufacturer='LG Electronics Inc' phone_model=Phone.my_model # inside screen resoluation WALLPAPER_WIDTH=176 WALLPAPER_HEIGHT=220 imageorigins={} imageorigins.update(common.getkv(parentprofile.stockimageorigins, "images")) imageorigins.update(common.getkv(parentprofile.stockimageorigins, "video")) # our targets are the same for all origins imagetargets={} imagetargets.update(common.getkv(parentprofile.stockimagetargets, "fullscreen", {'width': 238, 'height': 246, 'format': "JPEG"})) imagetargets.update(common.getkv(parentprofile.stockimagetargets, "wallpaper", {'width': 240, 'height': 274, 'format': "JPEG"})) imagetargets.update(common.getkv(parentprofile.stockimagetargets, "pictureid", {'width': 120, 'height': 100, 'format': "JPEG"})) _supportedsyncs=( ('phonebook', 'read', None), # all phonebook reading ('calendar', 'read', None), # all calendar reading ('wallpaper', 'read', None), # all wallpaper reading ('ringtone', 'read', None), # all ringtone reading ('call_history', 'read', None),# all call history list reading ('sms', 'read', None), # all SMS list reading ('memo', 'read', None), # all memo list reading ('phonebook', 'write', 'OVERWRITE'), # only overwriting phonebook ('calendar', 'write', 'OVERWRITE'), # only overwriting calendar ('wallpaper', 'write', 'MERGE'), # merge and overwrite wallpaper ('wallpaper', 'write', 'OVERWRITE'), ('ringtone', 'write', 'MERGE'), # merge and overwrite ringtone ('ringtone', 'write', 'OVERWRITE'), ('sms', 'write', 'OVERWRITE'), # all SMS list writing ('memo', 'write', 'OVERWRITE'), # all memo list writing ('t9_udb', 'write', 'OVERWRITE'), ) if __debug__: _supportedsyncs+=( ('t9_udb', 'read', 'OVERWRITE'), ) field_color_data={ 'phonebook': { 'name': { 'first': False, 'middle': False, 'last': False, 'full': 1, 'nickname': False, 'details': 1 }, 'number': { 'type': 5, 'speeddial': 5, 'number': 5, 'ringtone': False, 'wallpaper': False, 'details': 5 }, 'email': 2, 'email_details': { 'emailspeeddial': False, 'emailringtone': False, 'emailwallpaper': False }, 'address': { 'type': False, 'company': False, 'street': 1, 'street2': False, 'city': 1, 'state': 1, 'postalcode': 1, 'country': 1, 'details': 1 }, 'url': 0, 'memo': 0, 'category': 1, 'wallpaper': 1, 'group_wallpaper': 1, #'wallpaper_type': False, 'ringtone': 1, 'storage': False, 'secret': False, 'ICE': 1, 'Favorite': 1, }, 'calendar': { 'description': True, 'location': False, 'allday': False, 'start': True, 'end': True, 'priority': False, 'alarm': True, 'vibrate': True, 'repeat': True, 'memo': False, 'category': False, 'wallpaper': False, 'ringtone': True, }, 'memo': { 'subject': False, 'date': True, 'secret': False, 'category': False, 'memo': True, }, 'todo': { 'summary': False, 'status': False, 'due_date': False, 'percent_complete': False, 'completion_date': False, 'private': False, 'priority': False, 'category': False, 'memo': False, }, } --------------000701070703060801060008 Content-Type: text/x-pascal; name="p_lgvx5600.p" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="p_lgvx5600.p" ### ( -*- Python -*- ) ### Copyright (C) 2007-2008 Nathan Hjelm <[email protected]> ### ### This program is free software; you can redistribute it and/or modify ### it under the terms of the BitPim license as detailed in the LICENSE file. ### ### $Id$ %{ """Various descriptions of data specific to LG VX5600""" from p_lgvx8575 import * %} # /pim/pbentry.dat format PACKET pbfileentry: 5 STRING { 'raiseonunterminatedread': False, 'raiseontruncate': False, 'default': '\xff\xff\xff\xff\xff' } +entry_tag if self.entry_tag==PB_ENTRY_SOR: 1 UINT { 'default': 0xff } +unk0 * PBDateTime { 'defaulttocurrenttime': True } +mod_date 6 STRING { 'terminator': None, 'default': '\xff\xff\xff\xff\xff\xff' } +unk1 4 UINT entry_number1 # 1 based entry number -- might be just 2 bytes long 2 UINT entry_number0 # 0 based entry number 34 USTRING { 'encoding': PHONE_ENCODING, 'raiseonunterminatedread': False, 'raiseontruncate': False} +name * LIST {'length': NUMGROUPS } +groups: 2 UINT { 'default': 0 } +gid * LIST {'length': NUMEMAILS} +emails: 49 USTRING {'encoding': PHONE_ENCODING, 'raiseonunterminatedread': False, 'default': ''} email 2 UINT { 'default': 0xffff } +ringtone 2 UINT { 'default': 0 } +wallpaper * LIST {'length': NUMPHONENUMBERS} +numbertypes: 1 UINT { 'default': 0 } numbertype 4 UINT { 'default': 0 } +unk2 31 USTRING {'encoding': PHONE_ENCODING, 'raiseonunterminatedread': False, 'default': ''} +memo * LIST {'length': NUMPHONENUMBERS} +numberindices: 2 UINT { 'default': 0xffff } numberindex 2 UINT { 'default': 0xffff } +addressindex 2 UINT { 'default': 0xffff } +unk3 2 UINT { 'default': 0xffff } +imindex 224 DATA { 'default': '\x00'*224 } +reserved 6 USTRING { 'encoding': PHONE_ENCODING, 'raiseonunterminatedread': False, 'raiseontruncate': False, 'default': '</PE>'} +exit_tag else: # this is a blank entry, fill it up with 0xFF 507 DATA { 'default': '\xff'*507 } +dontcare %{ def valid(self): global PB_ENTRY_SOR return self.entry_tag==PB_ENTRY_SOR and \ (self.name and ord(self.name[0]) != 0xff) %} PACKET pbfile: * LIST { 'elementclass': pbfileentry, 'length': NUMPHONEBOOKENTRIES, 'createdefault': True} +items 6 STRING { 'default': '<HPE>', 'raiseonunterminatedread': False, 'raiseontruncate': False } +eof_tag 10 STRING { 'raiseonunterminatedread': False, 'raiseontruncate': False } +model_name * PBDateTime { 'defaulttocurrenttime': True } +mod_date 477 DATA { 'default': '\x00'*477 } + blanks 7 STRING { 'default': '</HPE>', 'raiseonunterminatedread': False, 'raiseontruncate': False } +eof_close_tag PACKET pafileentry: 5 STRING { 'raiseonunterminatedread': False, 'raiseontruncate': False, 'default': '\xff\xff\xff\xff\xff' } +entry_tag if self.entry_tag==PA_ENTRY_SOR: 1 UINT { 'default': 0x00 } +pad0 * PBDateTime { 'defaulttocurrenttime': True } +mod_date 6 UNKNOWN +zeros 2 UINT +index 2 UINT +pb_entry 34 USTRING { 'encoding': PHONE_ENCODING, 'raiseonunterminatedread': False, 'raiseontruncate': False, 'default': '' } +street 34 USTRING { 'encoding': PHONE_ENCODING, 'raiseonunterminatedread': False, 'raiseontruncate': False, 'default': '' } +city 34 USTRING { 'encoding': PHONE_ENCODING, 'raiseonunterminatedread': False, 'raiseontruncate': False, 'default': '' } +state 12 USTRING { 'encoding': PHONE_ENCODING, 'raiseonunterminatedread': False, 'raiseontruncate': False, 'default': '' } +zip_code 34 USTRING { 'encoding': PHONE_ENCODING, 'raiseonunterminatedread': False, 'raiseontruncate': False, 'default': '' } +country 74 DATA { 'default': '\x00'*74 } +pad1 6 USTRING { 'encoding': PHONE_ENCODING, 'raiseonunterminatedread': False, 'raiseontruncate': False, 'default': '</PA>'} +exit_tag else: # this is a blank entry, fill it up with 0xFF 251 DATA { 'default': '\xff'*251 } +dontcare %{ def valid(self): global PA_ENTRY_SOR return self.entry_tag==PA_ENTRY_SOR %} PACKET pafile: * LIST { 'elementclass': pafileentry, 'length': NUMPHONEBOOKENTRIES, 'createdefault': True } +items # similar to the VX-8575 with a shorter name and shorter number_location PACKET call: 4 GPSDATE GPStime # no. of seconds since 0h 1-6-80, based off local time. 4 UINT unk0 # different for each call 4 UINT duration # seconds, not certain about length of this field 49 USTRING {'raiseonunterminatedread': False} number 33 USTRING {'encoding': PHONE_ENCODING, 'raiseonunterminatedread': False} name 1 UINT numberlength # length of phone number 1 UINT status # 0=outgoing, 1=incoming, 2=missed, etc 1 UINT pbnumbertype # 1=cell, 2=home, 3=office, 4=cell2, 5=fax, 6=vmail, 0xFF=not in phone book 4 UINT unk1 # always seems to be 0 2 UINT pbentrynum # entry number in phonebook 75 DATA number_location # set by pay software # similar to the VX-8575 but with an single unknown before the calls instead of 4 PACKET callhistory: 4 UINT { 'default': 0x00050000 } unk0 4 UINT numcalls 1 UINT { 'default': 0 } unk1 * LIST { 'elementclass': call, 'length': self.numcalls} +calls --------------000701070703060801060008 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------------ --------------000701070703060801060008 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ BitPim-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/bitpim-devel --------------000701070703060801060008--