You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
(53) |
Apr
(48) |
May
(14) |
Jun
(3) |
Jul
(21) |
Aug
(11) |
Sep
(77) |
Oct
(67) |
Nov
(28) |
Dec
(163) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(112) |
Feb
(143) |
Mar
(114) |
Apr
(138) |
May
(173) |
Jun
(119) |
Jul
(119) |
Aug
(117) |
Sep
(187) |
Oct
(170) |
Nov
(254) |
Dec
(193) |
2005 |
Jan
(336) |
Feb
(284) |
Mar
(189) |
Apr
(100) |
May
(89) |
Jun
(52) |
Jul
(85) |
Aug
(138) |
Sep
(181) |
Oct
(137) |
Nov
(104) |
Dec
(98) |
2006 |
Jan
(76) |
Feb
(106) |
Mar
(224) |
Apr
(270) |
May
(103) |
Jun
(144) |
Jul
(77) |
Aug
(38) |
Sep
(37) |
Oct
(20) |
Nov
(14) |
Dec
(73) |
2007 |
Jan
(130) |
Feb
(68) |
Mar
(78) |
Apr
(60) |
May
(45) |
Jun
(63) |
Jul
(84) |
Aug
(45) |
Sep
(40) |
Oct
(12) |
Nov
(71) |
Dec
(56) |
2008 |
Jan
(44) |
Feb
(20) |
Mar
(25) |
Apr
(17) |
May
(33) |
Jun
(60) |
Jul
(97) |
Aug
(38) |
Sep
(10) |
Oct
(20) |
Nov
(13) |
Dec
(19) |
2009 |
Jan
(7) |
Feb
(5) |
Mar
(23) |
Apr
(10) |
May
(6) |
Jun
(5) |
Jul
(17) |
Aug
(7) |
Sep
(14) |
Oct
(27) |
Nov
(13) |
Dec
(12) |
2010 |
Jan
(37) |
Feb
(9) |
Mar
(13) |
Apr
(12) |
May
(8) |
Jun
(3) |
Jul
(1) |
Aug
(9) |
Sep
(3) |
Oct
(1) |
Nov
(1) |
Dec
(4) |
2011 |
Jan
(1) |
Feb
|
Mar
(1) |
Apr
(4) |
May
|
Jun
(2) |
Jul
(8) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
(5) |
Jun
|
Jul
|
Aug
|
Sep
(5) |
Oct
|
Nov
(3) |
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
2017 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
(2) |
Oct
|
Nov
|
Dec
|
From: Aaron G. S. <ags...@ho...> - 2008-07-02 23:48:16
|
Index: src/phones/com_lgvx9100.py =================================================================== --- src/phones/com_lgvx9100.py (revision 4628) +++ src/phones/com_lgvx9100.py (working copy) @@ -15,12 +15,13 @@ import common import com_brew import com_lg -import com_lgvx8550 +import com_lgvx10000 import p_lgvx9100 import helpids +import sms #------------------------------------------------------------------------------- -parentphone=com_lgvx8550.Phone +parentphone=com_lgvx10000.Phone class Phone(parentphone): "Talk to the LG VX9100 cell phone" @@ -82,8 +83,59 @@ self.ringtonelocations, results, merge, self.getringtoneindices, False) + def _getoutboxmessage(self, sf): + entry=sms.SMSEntry() + entry.folder=entry.Folder_Sent + entry.datetime="%d%02d%02dT%02d%02d%02d" % ((sf.timesent)) + # add all the recipients + for r in sf.recipients: + if r.number: + confirmed=(r.status==5) + confirmed_date=None + if confirmed: + confirmed_date="%d%02d%02dT%02d%02d%02d" % r.timereceived + entry.add_recipient(r.number, confirmed, confirmed_date) + entry.subject=sf.subject + txt="" + if sf.num_msg_elements==1 and not sf.messages[0].binary: + txt=self._get_text_from_sms_msg_without_header(sf.messages[0].msg, sf.messages[0].length) + else: + for i in range(sf.num_msg_elements): + txt+=self._get_text_from_sms_msg_with_header(sf.messages[i].msg, sf.messages[i].length) + entry.text=unicode(txt, errors='ignore') + if sf.priority==0: + entry.priority=sms.SMSEntry.Priority_Normal + else: + entry.priority=sms.SMSEntry.Priority_High + entry.locked=sf.locked + entry.callback=sf.callback + return entry + + def _getinboxmessage(self, sf): + entry=sms.SMSEntry() + entry.folder=entry.Folder_Inbox + entry.datetime="%d%02d%02dT%02d%02d%02d" % (sf.gtimerecv) + entry._from=sf.sender_callback + entry.subject=sf.subject + entry.locked=sf.locked + if sf.priority==0: + entry.priority=sms.SMSEntry.Priority_Normal + else: + entry.priority=sms.SMSEntry.Priority_High + entry.read=sf.read + + # read message data + txt="" + for msg in sf.msgs: + if msg.msg_length != 0: + txt += self._get_text_from_sms_msg_with_header(msg.msg_data.msg, msg.msg_length) + + entry.text=unicode(txt, errors='ignore') + entry.callback=sf.sender_callback + return entry + #------------------------------------------------------------------------------- -parentprofile=com_lgvx8550.Profile +parentprofile=com_lgvx10000.Profile class Profile(parentprofile): protocolclass=Phone.protocolclass serialsname=Phone.serialsname @@ -122,14 +174,15 @@ _supportedsyncs=( ## ('phonebook', 'read', None), # all phonebook reading -## ('calendar', 'read', None), # all calendar 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 + ('call_history', 'read', None),# all call history list reading + ('sms', 'read', None), # all SMS list reading + ('memo', 'read', None), # all memo list reading + ('t9_udb', 'read', 'OVERWRITE'), ## ('phonebook', 'write', 'OVERWRITE'), # only overwriting phonebook -## ('calendar', 'write', 'OVERWRITE'), # only overwriting calendar + ('calendar', 'write', 'OVERWRITE'), # only overwriting calendar ('wallpaper', 'write', 'MERGE'), # merge and overwrite wallpaper ## ('wallpaper', 'write', 'OVERWRITE'), ('ringtone', 'write', 'MERGE'), # merge and overwrite ringtone @@ -138,4 +191,5 @@ ## ('memo', 'write', 'OVERWRITE'), # all memo list writing #### ('playlist', 'read', 'OVERWRITE'), #### ('playlist', 'write', 'OVERWRITE'), + ('t9_udb', 'write', 'OVERWRITE'), ) Index: src/phones/p_lgvx9100.p =================================================================== --- src/phones/p_lgvx9100.p (revision 4628) +++ src/phones/p_lgvx9100.p (working copy) @@ -34,6 +34,18 @@ INDEX_VIDEO_TYPE=3 INDEX_IMAGE_TYPE=0 +SMS_CANNED_MAX_ITEMS=30 + +pb_file_name = 'pim/pbentry.dat' +pn_file_name = 'pim/pbnumber.dat' +speed_file_name = 'pim/pbspeed.dat' +ice_file_name = 'pim/pbiceentry.dat' + +# SMS index files +inbox_index = "dload/inbox.dat" +outbox_index = "dload/outbox.dat" +drafts_index = "dload/drafts.dat" + %} PACKET indexentry: @@ -50,3 +62,57 @@ "Used for tracking wallpaper and ringtones" * LIST {'elementclass': indexentry, 'createdefault': True} +items +PACKET sms_saved: + P BOOL { 'default': True } +outboxmsg + 4 GPSDATE GPStime # num seconds since 0h 1-6-80, time message received by phone + * sms_out outbox + +PACKET sms_out: + 4 UINT unk0 # zero + 4 UINT index # starting from 1, unique + 1 UINT locked # 1=locked + 3 UNKNOWN unk1 # zero + 4 GPSDATE timesent # time the message was sent + 4 GPSDATE timestamp + 61 USTRING {'encoding': PHONE_ENCODING} subject + 2 UINT num_msg_elements # up to 7 -- this may not be correct + 2 UINT priority # 0=normal, 2=high + 2 UNKNOWN unk2 # always 01 01 + 24 USTRING callback # this is probably not 24 bytes long + * LIST { 'elementclass': recipient_record,'length': 10 } +recipients + * LIST {'elementclass': msg_record, 'length': 7} +messages + * UNKNOWN pad1 + +PACKET SMSINBOXMSGFRAGMENT: + * LIST { 'length': 222 } +msg: + 1 UINT byte "individual byte of message" + +PACKET sms_in: + 4 UINT unk0 # zero + 4 UINT index + 4 UINT unk1 # 0x0002005C + 4 GPSDATE gtimerecv # num seconds since 0h 1-6-80, time message received by phone + 6 SMSDATE timesent + 2 UINT unk2 # zero + 4 GPSDATE gtimesent # num seconds since 0h 1-6-80, time message received by phone + 1 UINT read + 1 UINT locked + 1 UINT priority + 15 UNKNOWN dunno1 + 64 USTRING {'encoding': PHONE_ENCODING, + 'raiseonunterminatedread': False } subject + # phone could have more than 10 message fragments + * LIST { 'length': 10 } +msgs: + 1 UINT msg_id + 1 UINT msg_length + * SMSINBOXMSGFRAGMENT msg_data + 2292 UNKNOWN dunno3 + 33 USTRING sender_name + 33 USTRING sender_callback + 24 UNKNOWN unk3 + # this stuff is required by the code, but couldn't figure it out, + # so just fake it + P UINT { 'default': 0 } +bin_header1 + P UINT { 'default': 0 } +bin_header2 + P UINT { 'default': 0 } +multipartID + P UINT { 'default': 0 } +bin_header3 Index: src/phones/p_lgvx9100.py =================================================================== --- src/phones/p_lgvx9100.py (revision 4628) +++ src/phones/p_lgvx9100.py (working copy) @@ -16,6 +16,8 @@ UINT=UINTlsb BOOL=BOOLlsb +NUMSPEEDDIALS=1000 + BREW_FILE_SYSTEM=2 INDEX_RT_TYPE=257 @@ -23,6 +25,18 @@ INDEX_VIDEO_TYPE=3 INDEX_IMAGE_TYPE=0 +SMS_CANNED_MAX_ITEMS=30 + +pb_file_name = 'pim/pbentry.dat' +pn_file_name = 'pim/pbnumber.dat' +speed_file_name = 'pim/pbspeed.dat' +ice_file_name = 'pim/pbiceentry.dat' + +# SMS index files +inbox_index = "dload/inbox.dat" +outbox_index = "dload/outbox.dat" +drafts_index = "dload/drafts.dat" + class indexentry(BaseProtogenClass): __fields=['filename', 'size', 'date', 'type', 'dunno'] @@ -254,3 +268,1101 @@ +class sms_saved(BaseProtogenClass): + __fields=['outboxmsg', 'GPStime', 'outbox'] + + def __init__(self, *args, **kwargs): + dict={} + # What was supplied to this function + dict.update(kwargs) + # Parent constructor + super(sms_saved,self).__init__(**dict) + if self.__class__ is sms_saved: + self._update(args,dict) + + + def getfields(self): + return self.__fields + + + def _update(self, args, kwargs): + super(sms_saved,self)._update(args,kwargs) + keys=kwargs.keys() + for key in keys: + if key in self.__fields: + setattr(self, key, kwargs[key]) + del kwargs[key] + # Were any unrecognized kwargs passed in? + if __debug__: + self._complainaboutunusedargs(sms_saved,kwargs) + if len(args): raise TypeError('Unexpected arguments supplied: '+`args`) + # Make all P fields that haven't already been constructed + try: self.__field_outboxmsg + except: + self.__field_outboxmsg=BOOL(**{ 'default': True }) + + + def writetobuffer(self,buf,autolog=True,logtitle="<written data>"): + 'Writes this packet to the supplied buffer' + self._bufferstartoffset=buf.getcurrentoffset() + self.__field_GPStime.writetobuffer(buf) + self.__field_outbox.writetobuffer(buf) + self._bufferendoffset=buf.getcurrentoffset() + if autolog and self._bufferstartoffset==0: self.autologwrite(buf, logtitle=logtitle) + + + def readfrombuffer(self,buf,autolog=True,logtitle="<read data>"): + 'Reads this packet from the supplied buffer' + self._bufferstartoffset=buf.getcurrentoffset() + if autolog and self._bufferstartoffset==0: self.autologread(buf, logtitle=logtitle) + self.__field_GPStime=GPSDATE(**{'sizeinbytes': 4}) + self.__field_GPStime.readfrombuffer(buf) + self.__field_outbox=sms_out() + self.__field_outbox.readfrombuffer(buf) + self._bufferendoffset=buf.getcurrentoffset() + + + def __getfield_outboxmsg(self): + try: self.__field_outboxmsg + except: + self.__field_outboxmsg=BOOL(**{ 'default': True }) + return self.__field_outboxmsg.getvalue() + + def __setfield_outboxmsg(self, value): + if isinstance(value,BOOL): + self.__field_outboxmsg=value + else: + self.__field_outboxmsg=BOOL(value,**{ 'default': True }) + + def __delfield_outboxmsg(self): del self.__field_outboxmsg + + outboxmsg=property(__getfield_outboxmsg, __setfield_outboxmsg, __delfield_outboxmsg, None) + + def __getfield_GPStime(self): + return self.__field_GPStime.getvalue() + + def __setfield_GPStime(self, value): + if isinstance(value,GPSDATE): + self.__field_GPStime=value + else: + self.__field_GPStime=GPSDATE(value,**{'sizeinbytes': 4}) + + def __delfield_GPStime(self): del self.__field_GPStime + + GPStime=property(__getfield_GPStime, __setfield_GPStime, __delfield_GPStime, None) + + def __getfield_outbox(self): + return self.__field_outbox.getvalue() + + def __setfield_outbox(self, value): + if isinstance(value,sms_out): + self.__field_outbox=value + else: + self.__field_outbox=sms_out(value,) + + def __delfield_outbox(self): del self.__field_outbox + + outbox=property(__getfield_outbox, __setfield_outbox, __delfield_outbox, None) + + def iscontainer(self): + return True + + def containerelements(self): + yield ('outboxmsg', self.__field_outboxmsg, None) + yield ('GPStime', self.__field_GPStime, None) + yield ('outbox', self.__field_outbox, None) + + + + +class sms_out(BaseProtogenClass): + __fields=['unk0', 'index', 'locked', 'unk1', 'timesent', 'timestamp', 'subject', 'num_msg_elements', 'priority', 'unk2', 'callback', 'recipients', 'messages', 'pad1'] + + def __init__(self, *args, **kwargs): + dict={} + # What was supplied to this function + dict.update(kwargs) + # Parent constructor + super(sms_out,self).__init__(**dict) + if self.__class__ is sms_out: + self._update(args,dict) + + + def getfields(self): + return self.__fields + + + def _update(self, args, kwargs): + super(sms_out,self)._update(args,kwargs) + keys=kwargs.keys() + for key in keys: + if key in self.__fields: + setattr(self, key, kwargs[key]) + del kwargs[key] + # Were any unrecognized kwargs passed in? + if __debug__: + self._complainaboutunusedargs(sms_out,kwargs) + if len(args): raise TypeError('Unexpected arguments supplied: '+`args`) + # Make all P fields that haven't already been constructed + + + def writetobuffer(self,buf,autolog=True,logtitle="<written data>"): + 'Writes this packet to the supplied buffer' + self._bufferstartoffset=buf.getcurrentoffset() + self.__field_unk0.writetobuffer(buf) + self.__field_index.writetobuffer(buf) + self.__field_locked.writetobuffer(buf) + self.__field_unk1.writetobuffer(buf) + self.__field_timesent.writetobuffer(buf) + self.__field_timestamp.writetobuffer(buf) + self.__field_subject.writetobuffer(buf) + self.__field_num_msg_elements.writetobuffer(buf) + self.__field_priority.writetobuffer(buf) + self.__field_unk2.writetobuffer(buf) + self.__field_callback.writetobuffer(buf) + try: self.__field_recipients + except: + self.__field_recipients=LIST(**{ 'elementclass': recipient_record,'length': 10 }) + self.__field_recipients.writetobuffer(buf) + try: self.__field_messages + except: + self.__field_messages=LIST(**{'elementclass': msg_record, 'length': 7}) + self.__field_messages.writetobuffer(buf) + self.__field_pad1.writetobuffer(buf) + self._bufferendoffset=buf.getcurrentoffset() + if autolog and self._bufferstartoffset==0: self.autologwrite(buf, logtitle=logtitle) + + + def readfrombuffer(self,buf,autolog=True,logtitle="<read data>"): + 'Reads this packet from the supplied buffer' + self._bufferstartoffset=buf.getcurrentoffset() + if autolog and self._bufferstartoffset==0: self.autologread(buf, logtitle=logtitle) + self.__field_unk0=UINT(**{'sizeinbytes': 4}) + self.__field_unk0.readfrombuffer(buf) + self.__field_index=UINT(**{'sizeinbytes': 4}) + self.__field_index.readfrombuffer(buf) + self.__field_locked=UINT(**{'sizeinbytes': 1}) + self.__field_locked.readfrombuffer(buf) + self.__field_unk1=UNKNOWN(**{'sizeinbytes': 3}) + self.__field_unk1.readfrombuffer(buf) + self.__field_timesent=GPSDATE(**{'sizeinbytes': 4}) + self.__field_timesent.readfrombuffer(buf) + self.__field_timestamp=GPSDATE(**{'sizeinbytes': 4}) + self.__field_timestamp.readfrombuffer(buf) + self.__field_subject=USTRING(**{'sizeinbytes': 61, 'encoding': PHONE_ENCODING}) + self.__field_subject.readfrombuffer(buf) + self.__field_num_msg_elements=UINT(**{'sizeinbytes': 2}) + self.__field_num_msg_elements.readfrombuffer(buf) + self.__field_priority=UINT(**{'sizeinbytes': 2}) + self.__field_priority.readfrombuffer(buf) + self.__field_unk2=UNKNOWN(**{'sizeinbytes': 2}) + self.__field_unk2.readfrombuffer(buf) + self.__field_callback=USTRING(**{'sizeinbytes': 24}) + self.__field_callback.readfrombuffer(buf) + self.__field_recipients=LIST(**{ 'elementclass': recipient_record,'length': 10 }) + self.__field_recipients.readfrombuffer(buf) + self.__field_messages=LIST(**{'elementclass': msg_record, 'length': 7}) + self.__field_messages.readfrombuffer(buf) + self.__field_pad1=UNKNOWN() + self.__field_pad1.readfrombuffer(buf) + self._bufferendoffset=buf.getcurrentoffset() + + + def __getfield_unk0(self): + return self.__field_unk0.getvalue() + + def __setfield_unk0(self, value): + if isinstance(value,UINT): + self.__field_unk0=value + else: + self.__field_unk0=UINT(value,**{'sizeinbytes': 4}) + + def __delfield_unk0(self): del self.__field_unk0 + + unk0=property(__getfield_unk0, __setfield_unk0, __delfield_unk0, None) + + def __getfield_index(self): + return self.__field_index.getvalue() + + def __setfield_index(self, value): + if isinstance(value,UINT): + self.__field_index=value + else: + self.__field_index=UINT(value,**{'sizeinbytes': 4}) + + def __delfield_index(self): del self.__field_index + + index=property(__getfield_index, __setfield_index, __delfield_index, None) + + def __getfield_locked(self): + return self.__field_locked.getvalue() + + def __setfield_locked(self, value): + if isinstance(value,UINT): + self.__field_locked=value + else: + self.__field_locked=UINT(value,**{'sizeinbytes': 1}) + + def __delfield_locked(self): del self.__field_locked + + locked=property(__getfield_locked, __setfield_locked, __delfield_locked, None) + + def __getfield_unk1(self): + return self.__field_unk1.getvalue() + + def __setfield_unk1(self, value): + if isinstance(value,UNKNOWN): + self.__field_unk1=value + else: + self.__field_unk1=UNKNOWN(value,**{'sizeinbytes': 3}) + + def __delfield_unk1(self): del self.__field_unk1 + + unk1=property(__getfield_unk1, __setfield_unk1, __delfield_unk1, None) + + def __getfield_timesent(self): + return self.__field_timesent.getvalue() + + def __setfield_timesent(self, value): + if isinstance(value,GPSDATE): + self.__field_timesent=value + else: + self.__field_timesent=GPSDATE(value,**{'sizeinbytes': 4}) + + def __delfield_timesent(self): del self.__field_timesent + + timesent=property(__getfield_timesent, __setfield_timesent, __delfield_timesent, None) + + def __getfield_timestamp(self): + return self.__field_timestamp.getvalue() + + def __setfield_timestamp(self, value): + if isinstance(value,GPSDATE): + self.__field_timestamp=value + else: + self.__field_timestamp=GPSDATE(value,**{'sizeinbytes': 4}) + + def __delfield_timestamp(self): del self.__field_timestamp + + timestamp=property(__getfield_timestamp, __setfield_timestamp, __delfield_timestamp, None) + + def __getfield_subject(self): + return self.__field_subject.getvalue() + + def __setfield_subject(self, value): + if isinstance(value,USTRING): + self.__field_subject=value + else: + self.__field_subject=USTRING(value,**{'sizeinbytes': 61, 'encoding': PHONE_ENCODING}) + + def __delfield_subject(self): del self.__field_subject + + subject=property(__getfield_subject, __setfield_subject, __delfield_subject, None) + + def __getfield_num_msg_elements(self): + return self.__field_num_msg_elements.getvalue() + + def __setfield_num_msg_elements(self, value): + if isinstance(value,UINT): + self.__field_num_msg_elements=value + else: + self.__field_num_msg_elements=UINT(value,**{'sizeinbytes': 2}) + + def __delfield_num_msg_elements(self): del self.__field_num_msg_elements + + num_msg_elements=property(__getfield_num_msg_elements, __setfield_num_msg_elements, __delfield_num_msg_elements, None) + + def __getfield_priority(self): + return self.__field_priority.getvalue() + + def __setfield_priority(self, value): + if isinstance(value,UINT): + self.__field_priority=value + else: + self.__field_priority=UINT(value,**{'sizeinbytes': 2}) + + def __delfield_priority(self): del self.__field_priority + + priority=property(__getfield_priority, __setfield_priority, __delfield_priority, None) + + def __getfield_unk2(self): + return self.__field_unk2.getvalue() + + def __setfield_unk2(self, value): + if isinstance(value,UNKNOWN): + self.__field_unk2=value + else: + self.__field_unk2=UNKNOWN(value,**{'sizeinbytes': 2}) + + def __delfield_unk2(self): del self.__field_unk2 + + unk2=property(__getfield_unk2, __setfield_unk2, __delfield_unk2, None) + + def __getfield_callback(self): + return self.__field_callback.getvalue() + + def __setfield_callback(self, value): + if isinstance(value,USTRING): + self.__field_callback=value + else: + self.__field_callback=USTRING(value,**{'sizeinbytes': 24}) + + def __delfield_callback(self): del self.__field_callback + + callback=property(__getfield_callback, __setfield_callback, __delfield_callback, None) + + def __getfield_recipients(self): + try: self.__field_recipients + except: + self.__field_recipients=LIST(**{ 'elementclass': recipient_record,'length': 10 }) + return self.__field_recipients.getvalue() + + def __setfield_recipients(self, value): + if isinstance(value,LIST): + self.__field_recipients=value + else: + self.__field_recipients=LIST(value,**{ 'elementclass': recipient_record,'length': 10 }) + + def __delfield_recipients(self): del self.__field_recipients + + recipients=property(__getfield_recipients, __setfield_recipients, __delfield_recipients, None) + + def __getfield_messages(self): + try: self.__field_messages + except: + self.__field_messages=LIST(**{'elementclass': msg_record, 'length': 7}) + return self.__field_messages.getvalue() + + def __setfield_messages(self, value): + if isinstance(value,LIST): + self.__field_messages=value + else: + self.__field_messages=LIST(value,**{'elementclass': msg_record, 'length': 7}) + + def __delfield_messages(self): del self.__field_messages + + messages=property(__getfield_messages, __setfield_messages, __delfield_messages, None) + + def __getfield_pad1(self): + return self.__field_pad1.getvalue() + + def __setfield_pad1(self, value): + if isinstance(value,UNKNOWN): + self.__field_pad1=value + else: + self.__field_pad1=UNKNOWN(value,) + + def __delfield_pad1(self): del self.__field_pad1 + + pad1=property(__getfield_pad1, __setfield_pad1, __delfield_pad1, None) + + def iscontainer(self): + return True + + def containerelements(self): + yield ('unk0', self.__field_unk0, None) + yield ('index', self.__field_index, None) + yield ('locked', self.__field_locked, None) + yield ('unk1', self.__field_unk1, None) + yield ('timesent', self.__field_timesent, None) + yield ('timestamp', self.__field_timestamp, None) + yield ('subject', self.__field_subject, None) + yield ('num_msg_elements', self.__field_num_msg_elements, None) + yield ('priority', self.__field_priority, None) + yield ('unk2', self.__field_unk2, None) + yield ('callback', self.__field_callback, None) + yield ('recipients', self.__field_recipients, None) + yield ('messages', self.__field_messages, None) + yield ('pad1', self.__field_pad1, None) + + + + +class SMSINBOXMSGFRAGMENT(BaseProtogenClass): + __fields=['msg'] + + def __init__(self, *args, **kwargs): + dict={} + # What was supplied to this function + dict.update(kwargs) + # Parent constructor + super(SMSINBOXMSGFRAGMENT,self).__init__(**dict) + if self.__class__ is SMSINBOXMSGFRAGMENT: + self._update(args,dict) + + + def getfields(self): + return self.__fields + + + def _update(self, args, kwargs): + super(SMSINBOXMSGFRAGMENT,self)._update(args,kwargs) + keys=kwargs.keys() + for key in keys: + if key in self.__fields: + setattr(self, key, kwargs[key]) + del kwargs[key] + # Were any unrecognized kwargs passed in? + if __debug__: + self._complainaboutunusedargs(SMSINBOXMSGFRAGMENT,kwargs) + if len(args): + dict2={'elementclass': _gen_p_lgvx9100_88, 'length': 222 } + dict2.update(kwargs) + kwargs=dict2 + self.__field_msg=LIST(*args,**dict2) + # Make all P fields that haven't already been constructed + + + def writetobuffer(self,buf,autolog=True,logtitle="<written data>"): + 'Writes this packet to the supplied buffer' + self._bufferstartoffset=buf.getcurrentoffset() + try: self.__field_msg + except: + self.__field_msg=LIST(**{'elementclass': _gen_p_lgvx9100_88, 'length': 222 }) + self.__field_msg.writetobuffer(buf) + self._bufferendoffset=buf.getcurrentoffset() + if autolog and self._bufferstartoffset==0: self.autologwrite(buf, logtitle=logtitle) + + + def readfrombuffer(self,buf,autolog=True,logtitle="<read data>"): + 'Reads this packet from the supplied buffer' + self._bufferstartoffset=buf.getcurrentoffset() + if autolog and self._bufferstartoffset==0: self.autologread(buf, logtitle=logtitle) + self.__field_msg=LIST(**{'elementclass': _gen_p_lgvx9100_88, 'length': 222 }) + self.__field_msg.readfrombuffer(buf) + self._bufferendoffset=buf.getcurrentoffset() + + + def __getfield_msg(self): + try: self.__field_msg + except: + self.__field_msg=LIST(**{'elementclass': _gen_p_lgvx9100_88, 'length': 222 }) + return self.__field_msg.getvalue() + + def __setfield_msg(self, value): + if isinstance(value,LIST): + self.__field_msg=value + else: + self.__field_msg=LIST(value,**{'elementclass': _gen_p_lgvx9100_88, 'length': 222 }) + + def __delfield_msg(self): del self.__field_msg + + msg=property(__getfield_msg, __setfield_msg, __delfield_msg, None) + + def iscontainer(self): + return True + + def containerelements(self): + yield ('msg', self.__field_msg, None) + + + + +class _gen_p_lgvx9100_88(BaseProtogenClass): + 'Anonymous inner class' + __fields=['byte'] + + def __init__(self, *args, **kwargs): + dict={} + # What was supplied to this function + dict.update(kwargs) + # Parent constructor + super(_gen_p_lgvx9100_88,self).__init__(**dict) + if self.__class__ is _gen_p_lgvx9100_88: + self._update(args,dict) + + + def getfields(self): + return self.__fields + + + def _update(self, args, kwargs): + super(_gen_p_lgvx9100_88,self)._update(args,kwargs) + keys=kwargs.keys() + for key in keys: + if key in self.__fields: + setattr(self, key, kwargs[key]) + del kwargs[key] + # Were any unrecognized kwargs passed in? + if __debug__: + self._complainaboutunusedargs(_gen_p_lgvx9100_88,kwargs) + if len(args): + dict2={'sizeinbytes': 1} + dict2.update(kwargs) + kwargs=dict2 + self.__field_byte=UINT(*args,**dict2) + # Make all P fields that haven't already been constructed + + + def writetobuffer(self,buf,autolog=True,logtitle="<written data>"): + 'Writes this packet to the supplied buffer' + self._bufferstartoffset=buf.getcurrentoffset() + self.__field_byte.writetobuffer(buf) + self._bufferendoffset=buf.getcurrentoffset() + if autolog and self._bufferstartoffset==0: self.autologwrite(buf, logtitle=logtitle) + + + def readfrombuffer(self,buf,autolog=True,logtitle="<read data>"): + 'Reads this packet from the supplied buffer' + self._bufferstartoffset=buf.getcurrentoffset() + if autolog and self._bufferstartoffset==0: self.autologread(buf, logtitle=logtitle) + self.__field_byte=UINT(**{'sizeinbytes': 1}) + self.__field_byte.readfrombuffer(buf) + self._bufferendoffset=buf.getcurrentoffset() + + + def __getfield_byte(self): + return self.__field_byte.getvalue() + + def __setfield_byte(self, value): + if isinstance(value,UINT): + self.__field_byte=value + else: + self.__field_byte=UINT(value,**{'sizeinbytes': 1}) + + def __delfield_byte(self): del self.__field_byte + + byte=property(__getfield_byte, __setfield_byte, __delfield_byte, "individual byte of message") + + def iscontainer(self): + return True + + def containerelements(self): + yield ('byte', self.__field_byte, "individual byte of message") + + + + +class sms_in(BaseProtogenClass): + __fields=['unk0', 'index', 'unk1', 'gtimerecv', 'timesent', 'unk2', 'gtimesent', 'read', 'locked', 'priority', 'dunno1', 'subject', 'msgs', 'dunno3', 'sender_name', 'sender_callback', 'unk3', 'bin_header1', 'bin_header2', 'multipartID', 'bin_header3'] + + def __init__(self, *args, **kwargs): + dict={} + # What was supplied to this function + dict.update(kwargs) + # Parent constructor + super(sms_in,self).__init__(**dict) + if self.__class__ is sms_in: + self._update(args,dict) + + + def getfields(self): + return self.__fields + + + def _update(self, args, kwargs): + super(sms_in,self)._update(args,kwargs) + keys=kwargs.keys() + for key in keys: + if key in self.__fields: + setattr(self, key, kwargs[key]) + del kwargs[key] + # Were any unrecognized kwargs passed in? + if __debug__: + self._complainaboutunusedargs(sms_in,kwargs) + if len(args): raise TypeError('Unexpected arguments supplied: '+`args`) + # Make all P fields that haven't already been constructed + try: self.__field_bin_header1 + except: + self.__field_bin_header1=UINT(**{ 'default': 0 }) + try: self.__field_bin_header2 + except: + self.__field_bin_header2=UINT(**{ 'default': 0 }) + try: self.__field_multipartID + except: + self.__field_multipartID=UINT(**{ 'default': 0 }) + try: self.__field_bin_header3 + except: + self.__field_bin_header3=UINT(**{ 'default': 0 }) + + + def writetobuffer(self,buf,autolog=True,logtitle="<written data>"): + 'Writes this packet to the supplied buffer' + self._bufferstartoffset=buf.getcurrentoffset() + self.__field_unk0.writetobuffer(buf) + self.__field_index.writetobuffer(buf) + self.__field_unk1.writetobuffer(buf) + self.__field_gtimerecv.writetobuffer(buf) + self.__field_timesent.writetobuffer(buf) + self.__field_unk2.writetobuffer(buf) + self.__field_gtimesent.writetobuffer(buf) + self.__field_read.writetobuffer(buf) + self.__field_locked.writetobuffer(buf) + self.__field_priority.writetobuffer(buf) + self.__field_dunno1.writetobuffer(buf) + self.__field_subject.writetobuffer(buf) + try: self.__field_msgs + except: + self.__field_msgs=LIST(**{'elementclass': _gen_p_lgvx9100_106, 'length': 10 }) + self.__field_msgs.writetobuffer(buf) + self.__field_dunno3.writetobuffer(buf) + self.__field_sender_name.writetobuffer(buf) + self.__field_sender_callback.writetobuffer(buf) + self.__field_unk3.writetobuffer(buf) + self._bufferendoffset=buf.getcurrentoffset() + if autolog and self._bufferstartoffset==0: self.autologwrite(buf, logtitle=logtitle) + + + def readfrombuffer(self,buf,autolog=True,logtitle="<read data>"): + 'Reads this packet from the supplied buffer' + self._bufferstartoffset=buf.getcurrentoffset() + if autolog and self._bufferstartoffset==0: self.autologread(buf, logtitle=logtitle) + self.__field_unk0=UINT(**{'sizeinbytes': 4}) + self.__field_unk0.readfrombuffer(buf) + self.__field_index=UINT(**{'sizeinbytes': 4}) + self.__field_index.readfrombuffer(buf) + self.__field_unk1=UINT(**{'sizeinbytes': 4}) + self.__field_unk1.readfrombuffer(buf) + self.__field_gtimerecv=GPSDATE(**{'sizeinbytes': 4}) + self.__field_gtimerecv.readfrombuffer(buf) + self.__field_timesent=SMSDATE(**{'sizeinbytes': 6}) + self.__field_timesent.readfrombuffer(buf) + self.__field_unk2=UINT(**{'sizeinbytes': 2}) + self.__field_unk2.readfrombuffer(buf) + self.__field_gtimesent=GPSDATE(**{'sizeinbytes': 4}) + self.__field_gtimesent.readfrombuffer(buf) + self.__field_read=UINT(**{'sizeinbytes': 1}) + self.__field_read.readfrombuffer(buf) + self.__field_locked=UINT(**{'sizeinbytes': 1}) + self.__field_locked.readfrombuffer(buf) + self.__field_priority=UINT(**{'sizeinbytes': 1}) + self.__field_priority.readfrombuffer(buf) + self.__field_dunno1=UNKNOWN(**{'sizeinbytes': 15}) + self.__field_dunno1.readfrombuffer(buf) + self.__field_subject=USTRING(**{'sizeinbytes': 64, 'encoding': PHONE_ENCODING, 'raiseonunterminatedread': False }) + self.__field_subject.readfrombuffer(buf) + self.__field_msgs=LIST(**{'elementclass': _gen_p_lgvx9100_106, 'length': 10 }) + self.__field_msgs.readfrombuffer(buf) + self.__field_dunno3=UNKNOWN(**{'sizeinbytes': 2292}) + self.__field_dunno3.readfrombuffer(buf) + self.__field_sender_name=USTRING(**{'sizeinbytes': 33}) + self.__field_sender_name.readfrombuffer(buf) + self.__field_sender_callback=USTRING(**{'sizeinbytes': 33}) + self.__field_sender_callback.readfrombuffer(buf) + self.__field_unk3=UNKNOWN(**{'sizeinbytes': 24}) + self.__field_unk3.readfrombuffer(buf) + self._bufferendoffset=buf.getcurrentoffset() + + + def __getfield_unk0(self): + return self.__field_unk0.getvalue() + + def __setfield_unk0(self, value): + if isinstance(value,UINT): + self.__field_unk0=value + else: + self.__field_unk0=UINT(value,**{'sizeinbytes': 4}) + + def __delfield_unk0(self): del self.__field_unk0 + + unk0=property(__getfield_unk0, __setfield_unk0, __delfield_unk0, None) + + def __getfield_index(self): + return self.__field_index.getvalue() + + def __setfield_index(self, value): + if isinstance(value,UINT): + self.__field_index=value + else: + self.__field_index=UINT(value,**{'sizeinbytes': 4}) + + def __delfield_index(self): del self.__field_index + + index=property(__getfield_index, __setfield_index, __delfield_index, None) + + def __getfield_unk1(self): + return self.__field_unk1.getvalue() + + def __setfield_unk1(self, value): + if isinstance(value,UINT): + self.__field_unk1=value + else: + self.__field_unk1=UINT(value,**{'sizeinbytes': 4}) + + def __delfield_unk1(self): del self.__field_unk1 + + unk1=property(__getfield_unk1, __setfield_unk1, __delfield_unk1, None) + + def __getfield_gtimerecv(self): + return self.__field_gtimerecv.getvalue() + + def __setfield_gtimerecv(self, value): + if isinstance(value,GPSDATE): + self.__field_gtimerecv=value + else: + self.__field_gtimerecv=GPSDATE(value,**{'sizeinbytes': 4}) + + def __delfield_gtimerecv(self): del self.__field_gtimerecv + + gtimerecv=property(__getfield_gtimerecv, __setfield_gtimerecv, __delfield_gtimerecv, None) + + def __getfield_timesent(self): + return self.__field_timesent.getvalue() + + def __setfield_timesent(self, value): + if isinstance(value,SMSDATE): + self.__field_timesent=value + else: + self.__field_timesent=SMSDATE(value,**{'sizeinbytes': 6}) + + def __delfield_timesent(self): del self.__field_timesent + + timesent=property(__getfield_timesent, __setfield_timesent, __delfield_timesent, None) + + def __getfield_unk2(self): + return self.__field_unk2.getvalue() + + def __setfield_unk2(self, value): + if isinstance(value,UINT): + self.__field_unk2=value + else: + self.__field_unk2=UINT(value,**{'sizeinbytes': 2}) + + def __delfield_unk2(self): del self.__field_unk2 + + unk2=property(__getfield_unk2, __setfield_unk2, __delfield_unk2, None) + + def __getfield_gtimesent(self): + return self.__field_gtimesent.getvalue() + + def __setfield_gtimesent(self, value): + if isinstance(value,GPSDATE): + self.__field_gtimesent=value + else: + self.__field_gtimesent=GPSDATE(value,**{'sizeinbytes': 4}) + + def __delfield_gtimesent(self): del self.__field_gtimesent + + gtimesent=property(__getfield_gtimesent, __setfield_gtimesent, __delfield_gtimesent, None) + + def __getfield_read(self): + return self.__field_read.getvalue() + + def __setfield_read(self, value): + if isinstance(value,UINT): + self.__field_read=value + else: + self.__field_read=UINT(value,**{'sizeinbytes': 1}) + + def __delfield_read(self): del self.__field_read + + read=property(__getfield_read, __setfield_read, __delfield_read, None) + + def __getfield_locked(self): + return self.__field_locked.getvalue() + + def __setfield_locked(self, value): + if isinstance(value,UINT): + self.__field_locked=value + else: + self.__field_locked=UINT(value,**{'sizeinbytes': 1}) + + def __delfield_locked(self): del self.__field_locked + + locked=property(__getfield_locked, __setfield_locked, __delfield_locked, None) + + def __getfield_priority(self): + return self.__field_priority.getvalue() + + def __setfield_priority(self, value): + if isinstance(value,UINT): + self.__field_priority=value + else: + self.__field_priority=UINT(value,**{'sizeinbytes': 1}) + + def __delfield_priority(self): del self.__field_priority + + priority=property(__getfield_priority, __setfield_priority, __delfield_priority, None) + + def __getfield_dunno1(self): + return self.__field_dunno1.getvalue() + + def __setfield_dunno1(self, value): + if isinstance(value,UNKNOWN): + self.__field_dunno1=value + else: + self.__field_dunno1=UNKNOWN(value,**{'sizeinbytes': 15}) + + def __delfield_dunno1(self): del self.__field_dunno1 + + dunno1=property(__getfield_dunno1, __setfield_dunno1, __delfield_dunno1, None) + + def __getfield_subject(self): + return self.__field_subject.getvalue() + + def __setfield_subject(self, value): + if isinstance(value,USTRING): + self.__field_subject=value + else: + self.__field_subject=USTRING(value,**{'sizeinbytes': 64, 'encoding': PHONE_ENCODING, 'raiseonunterminatedread': False }) + + def __delfield_subject(self): del self.__field_subject + + subject=property(__getfield_subject, __setfield_subject, __delfield_subject, None) + + def __getfield_msgs(self): + try: self.__field_msgs + except: + self.__field_msgs=LIST(**{'elementclass': _gen_p_lgvx9100_106, 'length': 10 }) + return self.__field_msgs.getvalue() + + def __setfield_msgs(self, value): + if isinstance(value,LIST): + self.__field_msgs=value + else: + self.__field_msgs=LIST(value,**{'elementclass': _gen_p_lgvx9100_106, 'length': 10 }) + + def __delfield_msgs(self): del self.__field_msgs + + msgs=property(__getfield_msgs, __setfield_msgs, __delfield_msgs, None) + + def __getfield_dunno3(self): + return self.__field_dunno3.getvalue() + + def __setfield_dunno3(self, value): + if isinstance(value,UNKNOWN): + self.__field_dunno3=value + else: + self.__field_dunno3=UNKNOWN(value,**{'sizeinbytes': 2292}) + + def __delfield_dunno3(self): del self.__field_dunno3 + + dunno3=property(__getfield_dunno3, __setfield_dunno3, __delfield_dunno3, None) + + def __getfield_sender_name(self): + return self.__field_sender_name.getvalue() + + def __setfield_sender_name(self, value): + if isinstance(value,USTRING): + self.__field_sender_name=value + else: + self.__field_sender_name=USTRING(value,**{'sizeinbytes': 33}) + + def __delfield_sender_name(self): del self.__field_sender_name + + sender_name=property(__getfield_sender_name, __setfield_sender_name, __delfield_sender_name, None) + + def __getfield_sender_callback(self): + return self.__field_sender_callback.getvalue() + + def __setfield_sender_callback(self, value): + if isinstance(value,USTRING): + self.__field_sender_callback=value + else: + self.__field_sender_callback=USTRING(value,**{'sizeinbytes': 33}) + + def __delfield_sender_callback(self): del self.__field_sender_callback + + sender_callback=property(__getfield_sender_callback, __setfield_sender_callback, __delfield_sender_callback, None) + + def __getfield_unk3(self): + return self.__field_unk3.getvalue() + + def __setfield_unk3(self, value): + if isinstance(value,UNKNOWN): + self.__field_unk3=value + else: + self.__field_unk3=UNKNOWN(value,**{'sizeinbytes': 24}) + + def __delfield_unk3(self): del self.__field_unk3 + + unk3=property(__getfield_unk3, __setfield_unk3, __delfield_unk3, None) + + def __getfield_bin_header1(self): + try: self.__field_bin_header1 + except: + self.__field_bin_header1=UINT(**{ 'default': 0 }) + return self.__field_bin_header1.getvalue() + + def __setfield_bin_header1(self, value): + if isinstance(value,UINT): + self.__field_bin_header1=value + else: + self.__field_bin_header1=UINT(value,**{ 'default': 0 }) + + def __delfield_bin_header1(self): del self.__field_bin_header1 + + bin_header1=property(__getfield_bin_header1, __setfield_bin_header1, __delfield_bin_header1, None) + + def __getfield_bin_header2(self): + try: self.__field_bin_header2 + except: + self.__field_bin_header2=UINT(**{ 'default': 0 }) + return self.__field_bin_header2.getvalue() + + def __setfield_bin_header2(self, value): + if isinstance(value,UINT): + self.__field_bin_header2=value + else: + self.__field_bin_header2=UINT(value,**{ 'default': 0 }) + + def __delfield_bin_header2(self): del self.__field_bin_header2 + + bin_header2=property(__getfield_bin_header2, __setfield_bin_header2, __delfield_bin_header2, None) + + def __getfield_multipartID(self): + try: self.__field_multipartID + except: + self.__field_multipartID=UINT(**{ 'default': 0 }) + return self.__field_multipartID.getvalue() + + def __setfield_multipartID(self, value): + if isinstance(value,UINT): + self.__field_multipartID=value + else: + self.__field_multipartID=UINT(value,**{ 'default': 0 }) + + def __delfield_multipartID(self): del self.__field_multipartID + + multipartID=property(__getfield_multipartID, __setfield_multipartID, __delfield_multipartID, None) + + def __getfield_bin_header3(self): + try: self.__field_bin_header3 + except: + self.__field_bin_header3=UINT(**{ 'default': 0 }) + return self.__field_bin_header3.getvalue() + + def __setfield_bin_header3(self, value): + if isinstance(value,UINT): + self.__field_bin_header3=value + else: + self.__field_bin_header3=UINT(value,**{ 'default': 0 }) + + def __delfield_bin_header3(self): del self.__field_bin_header3 + + bin_header3=property(__getfield_bin_header3, __setfield_bin_header3, __delfield_bin_header3, None) + + def iscontainer(self): + return True + + def containerelements(self): + yield ('unk0', self.__field_unk0, None) + yield ('index', self.__field_index, None) + yield ('unk1', self.__field_unk1, None) + yield ('gtimerecv', self.__field_gtimerecv, None) + yield ('timesent', self.__field_timesent, None) + yield ('unk2', self.__field_unk2, None) + yield ('gtimesent', self.__field_gtimesent, None) + yield ('read', self.__field_read, None) + yield ('locked', self.__field_locked, None) + yield ('priority', self.__field_priority, None) + yield ('dunno1', self.__field_dunno1, None) + yield ('subject', self.__field_subject, None) + yield ('msgs', self.__field_msgs, None) + yield ('dunno3', self.__field_dunno3, None) + yield ('sender_name', self.__field_sender_name, None) + yield ('sender_callback', self.__field_sender_callback, None) + yield ('unk3', self.__field_unk3, None) + yield ('bin_header1', self.__field_bin_header1, None) + yield ('bin_header2', self.__field_bin_header2, None) + yield ('multipartID', self.__field_multipartID, None) + yield ('bin_header3', self.__field_bin_header3, None) + + + + +class _gen_p_lgvx9100_106(BaseProtogenClass): + 'Anonymous inner class' + __fields=['msg_id', 'msg_length', 'msg_data'] + + def __init__(self, *args, **kwargs): + dict={} + # What was supplied to this function + dict.update(kwargs) + # Parent constructor + super(_gen_p_lgvx9100_106,self).__init__(**dict) + if self.__class__ is _gen_p_lgvx9100_106: + self._update(args,dict) + + + def getfields(self): + return self.__fields + + + def _update(self, args, kwargs): + super(_gen_p_lgvx9100_106,self)._update(args,kwargs) + keys=kwargs.keys() + for key in keys: + if key in self.__fields: + setattr(self, key, kwargs[key]) + del kwargs[key] + # Were any unrecognized kwargs passed in? + if __debug__: + self._complainaboutunusedargs(_gen_p_lgvx9100_106,kwargs) + if len(args): raise TypeError('Unexpected arguments supplied: '+`args`) + # Make all P fields that haven't already been constructed + + + def writetobuffer(self,buf,autolog=True,logtitle="<written data>"): + 'Writes this packet to the supplied buffer' + self._bufferstartoffset=buf.getcurrentoffset() + self.__field_msg_id.writetobuffer(buf) + self.__field_msg_length.writetobuffer(buf) + self.__field_msg_data.writetobuffer(buf) + self._bufferendoffset=buf.getcurrentoffset() + if autolog and self._bufferstartoffset==0: self.autologwrite(buf, logtitle=logtitle) + + + def readfrombuffer(self,buf,autolog=True,logtitle="<read data>"): + 'Reads this packet from the supplied buffer' + self._bufferstartoffset=buf.getcurrentoffset() + if autolog and self._bufferstartoffset==0: self.autologread(buf, logtitle=logtitle) + self.__field_msg_id=UINT(**{'sizeinbytes': 1}) + self.__field_msg_id.readfrombuffer(buf) + self.__field_msg_length=UINT(**{'sizeinbytes': 1}) + self.__field_msg_length.readfrombuffer(buf) + self.__field_msg_data=SMSINBOXMSGFRAGMENT() + self.__field_msg_data.readfrombuffer(buf) + self._bufferendoffset=buf.getcurrentoffset() + + + def __getfield_msg_id(self): + return self.__field_msg_id.getvalue() + + def __setfield_msg_id(self, value): + if isinstance(value,UINT): + self.__field_msg_id=value + else: + self.__field_msg_id=UINT(value,**{'sizeinbytes': 1}) + + def __delfield_msg_id(self): del self.__field_msg_id + + msg_id=property(__getfield_msg_id, __setfield_msg_id, __delfield_msg_id, None) + + def __getfield_msg_length(self): + return self.__field_msg_length.getvalue() + + def __setfield_msg_length(self, value): + if isinstance(value,UINT): + self.__field_msg_length=value + else: + self.__field_msg_length=UINT(value,**{'sizeinbytes': 1}) + + def __delfield_msg_length(self): del self.__field_msg_length + + msg_length=property(__getfield_msg_length, __setfield_msg_length, __delfield_msg_length, None) + + def __getfield_msg_data(self): + return self.__field_msg_data.getvalue() + + def __setfield_msg_data(self, value): + if isinstance(value,SMSINBOXMSGFRAGMENT): + self.__field_msg_data=value + else: + self.__field_msg_data=SMSINBOXMSGFRAGMENT(value,) + + def __delfield_msg_data(self): del self.__field_msg_data + + msg_data=property(__getfield_msg_data, __setfield_msg_data, __delfield_msg_data, None) + + def iscontainer(self): + return True + + def containerelements(self): + yield ('msg_id', self.__field_msg_id, None) + yield ('msg_length', self.__field_msg_length, None) + yield ('msg_data', self.__field_msg_data, None) + + + + |
From: Nathan H. <hj...@ma...> - 2008-07-02 22:48:12
|
Yeah, I wasn't sure if you had one of the phones but it was clear that if you had one the phone wasn't active (if that was the case all of the file formats would have long since been decoded ;) ). Since the Dare and enV2 are from the same generation I hope Aaron can shed some light on the VX-9100 sms and call history so I can figure out the best inheritance for the Dare and the enV2. I have a feeling that the Decoy and Chocolate 3 will also be very similar. -Nathan On Wednesday, July 02, 2008, at 04:38PM, "Joe Pham" <dj...@ne...> wrote: >>no offense meant Joe. > >None taken. By the way, to avoid duplicate work, I'm working on the VX9100 support, except for the SMS feature because my unit is not currently active. > >-Joe Pham > > >____________________________________________________________ >Stop foreclosure. Click here to stay in your home and rebuild credit. >http://thirdpartyoffers.netzero.net/TGL2231/fc/Ioyw6ijlzUBlB7jfFdy4wgygra6yeJQnNSmd4AAS7I0CaVIDg8kgfi/ > >------------------------------------------------------------------------- >Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! >Studies have shown that voting for your favorite open source project, >along with a healthy diet, reduces your potential for chronic lameness >and boredom. Vote Now at http://www.sourceforge.net/community/cca08 >_______________________________________________ >BitPim-devel mailing list >Bit...@li... >https://lists.sourceforge.net/lists/listinfo/bitpim-devel > > |
From: Joe P. <dj...@ne...> - 2008-07-02 22:38:14
|
>no offense meant Joe. None taken. By the way, to avoid duplicate work, I'm working on the VX9100 support, except for the SMS feature because my unit is not currently active. -Joe Pham ____________________________________________________________ Stop foreclosure. Click here to stay in your home and rebuild credit. http://thirdpartyoffers.netzero.net/TGL2231/fc/Ioyw6ijlzUBlB7jfFdy4wgygra6yeJQnNSmd4AAS7I0CaVIDg8kgfi/ |
From: Joe P. <dj...@ne...> - 2008-07-02 22:34:43
|
>My reasoning for detecting DMv6 is that other phones will >eventually be switched over to DMv6. In order to avoid having to >update each phone's support code when the phone is updated to DMv6 >(with if fw_vers == statements) we could detect DMv6 I suspect that the short v6 command would work fine with existing phones, and if that's the case, we need to do nothing further. Othwerwise, feel free to give it a try. -Joe Pham ____________________________________________________________ Click to become a designer and quit your boring job. http://thirdpartyoffers.netzero.net/TGL2231/fc/Ioyw6ijlSIOg18SUUJfkAvRDovJdewqJ06CX8ut7BhmQoi7CZJpTMo/ |
From: Nathan H. <hj...@ma...> - 2008-07-02 20:00:34
|
Dare phone support is attached :D. Aaron, take a look at the sms and call history stuff from the VX-9700 code when you get a chance. It is quite possible that the VX-9100 uses the same (or similar) file formats. Also, I think that it might be a good idea to change the VX-9100 to inherit from the VX-8800 to get the sms read code (seems to be more related to the Voyager than the enV1 anyway). If the sms file formats are the same we can move the sms code (and packets) from the VX-9700 into the VX-9100 and then I can set VX-9700 can inherit from the VX-9100. Likewise with the call history. What works: - Phonebook (read/write) - Media (read/write) - Calendar (read/write) - SMS (read) - Call history (read) - Memo (read) -Nathan |
From: Nathan H. <hj...@ma...> - 2008-07-02 17:15:42
|
Oh shoot, no offense meant Joe. Was supposed to just go out just to Aaron. On Wednesday, July 02, 2008, at 11:09AM, "Nathan Hjelm" <hj...@ma...> wrote: >Thanks for helping me try to get Joe to accept a new idea. He can be difficult to convince at times. I understand where he is coming from (he doesn't want to break phone support for any phone for the benefit of another) but he takes it too far sometimes (read that as breaking my code). > >Anyway, it turns out the VX9700 also has a HPE entry at the end of the phonebook file. Can you check that entry and let me know if it just contains the phone model and the bytes bc 07 01 00 06 00 00 00 00 00 02 . > >Also, does SMS read work at all? How about media read? I have a feeling that if those don't work it is for the same reason as the Dare. > >-Nathan > >------------------------------------------------------------------------- >Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! >Studies have shown that voting for your favorite open source project, >along with a healthy diet, reduces your potential for chronic lameness >and boredom. Vote Now at http://www.sourceforge.net/community/cca08 >_______________________________________________ >BitPim-devel mailing list >Bit...@li... >https://lists.sourceforge.net/lists/listinfo/bitpim-devel > > |
From: Nathan H. <hj...@ma...> - 2008-07-02 17:09:15
|
Thanks for helping me try to get Joe to accept a new idea. He can be difficult to convince at times. I understand where he is coming from (he doesn't want to break phone support for any phone for the benefit of another) but he takes it too far sometimes (read that as breaking my code). Anyway, it turns out the VX9700 also has a HPE entry at the end of the phonebook file. Can you check that entry and let me know if it just contains the phone model and the bytes bc 07 01 00 06 00 00 00 00 00 02 . Also, does SMS read work at all? How about media read? I have a feeling that if those don't work it is for the same reason as the Dare. -Nathan |
From: <Kev...@bb...> - 2008-07-02 09:00:58
|
I will be out of the office starting 07/02/2008 and will not return until 08/02/2008. I will not be coming back... That is unless they have me!! ******************************************************************************** The information contained in this communication is confidential, may be attorney-client privileged, may constitute inside information, and is intended only for the use of the addressee. It is the property of the company of the sender of this e-mail. Unauthorized use, disclosure, or copying of this communication or any part thereof is strictly prohibited and may be unlawful. If you have received this communication in error, please notify us immediately by return e-mail and destroy this communication and all copies thereof, including all attachments. ******************************************************************************** |
From: Nathan H. <hj...@ma...> - 2008-07-02 06:24:17
|
DMv6 should work on unactivated phones the way it is coded though I have not been able to confirm it. My reasoning for detecting DMv6 is that other phones will eventually be switched over to DMv6. In order to avoid having to update each phone's support code when the phone is updated to DMv6 (with if fw_vers == statements) we could detect DMv6. This way a new release doesn't have to be pushed out every time firmware is updated. I think this is a very useful feature. We could also detect DMv5 by sending the DMv5 command on initialization of the DM code. LG phones respond with a 0x15 error if DMv5 is not available. At this point all the DMv4 phones that will go to DMv5 probably have so detecting DMv5 is less important but it still might be a nice feature as well. -Nathan On Jul 1, 2008, at 7:50 PM, Joe Pham wrote: >> Either way, it's likely that it needs to be conditional so that >> Bitpim will work with the phone before and after activation and >> still use the VX9100 profile. > > I'm fairly confident that it would. > > -Joe Pham > > > > ____________________________________________________________ > Sweepstakes!!! > Enter for your chance to WIN one of hundreds of daily prizes. > http://thirdpartyoffers.netzero.net/TGL2231/fc/JKFkuJO6pj2ouQ7XPBSfY7hMnfbxTB9HgEdYKNNGHX4CLxHSWZ0Olm/ > > ------------------------------------------------------------------------- > Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! > Studies have shown that voting for your favorite open source project, > along with a healthy diet, reduces your potential for chronic lameness > and boredom. Vote Now at http://www.sourceforge.net/community/cca08 > _______________________________________________ > BitPim-devel mailing list > Bit...@li... > https://lists.sourceforge.net/lists/listinfo/bitpim-devel |
From: Joe P. <dj...@ne...> - 2008-07-02 01:53:30
|
>I emailed the changes for initial support (detection only) of the >Samsung m520. Did they get checked in? Nope, may be in the next test release. We're back to having weekly test releases from this point on. -Joe Pham ____________________________________________________________ Sweepstakes!!! Enter for your chance to WIN a summer spa getaway! http://thirdpartyoffers.netzero.net/TGL2231/fc/JKFkuJO6pf0Azqg4WmknU2ewDZlCniYPvg0jqEDQFLBYiVZC3rVmLa/ |
From: Joe P. <dj...@ne...> - 2008-07-02 01:53:00
|
>Either way, it's likely that it needs to be conditional so that >Bitpim will work with the phone before and after activation and >still use the VX9100 profile. I'm fairly confident that it would. -Joe Pham ____________________________________________________________ Sweepstakes!!! Enter for your chance to WIN one of hundreds of daily prizes. http://thirdpartyoffers.netzero.net/TGL2231/fc/JKFkuJO6pj2ouQ7XPBSfY7hMnfbxTB9HgEdYKNNGHX4CLxHSWZ0Olm/ |
From: Vallevand, M. K <Mar...@UN...> - 2008-07-01 13:28:34
|
I emailed the changes for initial support (detection only) of the Samsung m520. Did they get checked in? I'm at work, so I can't do an svn update to find out. Regards. Mark K Vallevand We old folks have to find our cushions and pillows in our tankards. Strong beer is the milk of the old. - Martin Luther THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY MATERIAL and is thus for use only by the intended recipient. If you received this in error, please contact the sender and delete the e-mail and its attachments from all computers. -----Original Message----- From: bit...@li... [mailto:bit...@li...] On Behalf Of Joe Pham Sent: Tuesday, July 01, 2008 6:04 AM To: bit...@li...; bit...@li... Subject: [BitPim-devel] BitPim test release 1.0.6.20080630 available fordownload Grab it from: <http://sourceforge.net/project/showfiles.php?group_id=75211&package_id= 76673&release_id=610490> Changes in this release: * Bug fix: LG VX-8800/10000 Note Pad. * Improvement: LG AX-8600 Call History and Note Pad (patch submitted by David Ritter). * Bug fix: LG VX-8500/8800/10000: better BREW file access (i.e. fewer "file block" errors). * Bug fix: LG VX-9900: access to the mmc1 dir via Command Line Interface (CLI). * Bug fix: Motorola: BitPim failed to read phonebook from some Motorola models. * Improvement: Call History: Navigate to other subtrees. * Bug fix: SCP-6650: Fix Katana-II phone/port detection * Add "extrazero" fields to listfile and listdirectory responses so that filesystem view will work for Samsung SPHA-900. May break filesystem view for other phones. * New phone support: Sanyo SCP-8400 * New phone support: LG VX-9100 (enV2) (Initial) * Bug fix: Can't view Data Recording files on non-Intel Mac. -Joe Pham ____________________________________________________________ Click here for financial aid options. Quick and Easy. http://thirdpartyoffers.netzero.net/TGL2231/fc/Ioyw6ijndCzvL8ntGA5um6N9P yCNqOFzc16aAelRilhUssRMNjVPYQ/ ------------------------------------------------------------------------ - Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ BitPim-devel mailing list Bit...@li... https://lists.sourceforge.net/lists/listinfo/bitpim-devel |
From: Aaron G. S. <ags...@ho...> - 2008-07-01 12:11:33
|
I'm not sure what you mean. Bitpim works with the VX9100 under the VX10000 profile prior to being activated. If that's considered the "shorter v6 command", then so be it. Afterward, it requires the new DM scheme. Either way, it's likely that it needs to be conditional so that Bitpim will work with the phone before and after activation and still use the VX9100 profile. -A Joe Pham said: >>The benefit of having logic to detect DMv5 versus DMv6 is useful in >>the fact that a VX9100 phone that has not been activated still uses >>DMv5 > > You mean it'd use the shorter v6 command, I doubt that it needs the v5 > command. > > -Joe Pham > > > ____________________________________________________________ > Enter for Your Chance to WIN* > The TotalBeauty.com Summer Spa Sweepstakes! > http://thirdpartyoffers.netzero.net/TGL2231/fc/JKFkuJO6pbwo2y9aQsZTcrCXnOwkA5NIop6qlGMryQQOGHnVpHOb3m/ > > ------------------------------------------------------------------------- > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://sourceforge.net/services/buy/index.php > _______________________________________________ > BitPim-devel mailing list > Bit...@li... > https://lists.sourceforge.net/lists/listinfo/bitpim-devel > |
From: Joe P. <dj...@ne...> - 2008-07-01 11:08:20
|
>The benefit of having logic to detect DMv5 versus DMv6 is useful in >the fact that a VX9100 phone that has not been activated still uses >DMv5 You mean it'd use the shorter v6 command, I doubt that it needs the v5 command. -Joe Pham ____________________________________________________________ Enter for Your Chance to WIN* The TotalBeauty.com Summer Spa Sweepstakes! http://thirdpartyoffers.netzero.net/TGL2231/fc/JKFkuJO6pbwo2y9aQsZTcrCXnOwkA5NIop6qlGMryQQOGHnVpHOb3m/ |
From: Joe P. <dj...@ne...> - 2008-07-01 11:05:12
|
Grab it from: <http://sourceforge.net/project/showfiles.php?group_id=75211&package_id=76673&release_id=610490> Changes in this release: * Bug fix: LG VX-8800/10000 Note Pad. * Improvement: LG AX-8600 Call History and Note Pad (patch submitted by David Ritter). * Bug fix: LG VX-8500/8800/10000: better BREW file access (i.e. fewer "file block" errors). * Bug fix: LG VX-9900: access to the mmc1 dir via Command Line Interface (CLI). * Bug fix: Motorola: BitPim failed to read phonebook from some Motorola models. * Improvement: Call History: Navigate to other subtrees. * Bug fix: SCP-6650: Fix Katana-II phone/port detection * Add "extrazero" fields to listfile and listdirectory responses so that filesystem view will work for Samsung SPHA-900. May break filesystem view for other phones. * New phone support: Sanyo SCP-8400 * New phone support: LG VX-9100 (enV2) (Initial) * Bug fix: Can't view Data Recording files on non-Intel Mac. -Joe Pham ____________________________________________________________ Click here for financial aid options. Quick and Easy. http://thirdpartyoffers.netzero.net/TGL2231/fc/Ioyw6ijndCzvL8ntGA5um6N9PyCNqOFzc16aAelRilhUssRMNjVPYQ/ |
From: Aaron G. S. <ags...@ho...> - 2008-07-01 04:04:20
|
Joe, The benefit of having logic to detect DMv5 versus DMv6 is useful in the fact that a VX9100 phone that has not been activated still uses DMv5. It's not until the phone has been activated, and the new firmware is downloaded that the phone uses DMv6. This will allow a user to select the VX9100 and use Bitpim for it whether it has been activated or not. -A Joe Pham wrote: >> I have determined how the XOR key bytes are rotated in keys 1-4 of >> the 0xfe 03 command. >> > > It works on mine, so I'm including it in this test release. It could be refined later on. > > >> Experimental Dare support is also attached. >> > > Thanks for the patch, but that will have to go into next week release. > > >> Joe, would you be ok with going to a scheme where DMv6 is detected. >> > > I'm open to it, but not sure what that'd buy us. > > -Joe Pham > > > > ____________________________________________________________ > Save hundreds on Beauty School - Click here. > http://thirdpartyoffers.netzero.net/TGL2231/fc/Ioyw6ijngjIsZ1LfWBEVuTVpmphhI47khJKaf4suZS1kLF4pkdSSqQ/ > > ------------------------------------------------------------------------- > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://sourceforge.net/services/buy/index.php > _______________________________________________ > BitPim-devel mailing list > Bit...@li... > https://lists.sourceforge.net/lists/listinfo/bitpim-devel > |
From: Joe P. <dj...@ne...> - 2008-07-01 01:15:00
|
>I have determined how the XOR key bytes are rotated in keys 1-4 of >the 0xfe 03 command. It works on mine, so I'm including it in this test release. It could be refined later on. >Experimental Dare support is also attached. Thanks for the patch, but that will have to go into next week release. >Joe, would you be ok with going to a scheme where DMv6 is detected. I'm open to it, but not sure what that'd buy us. -Joe Pham ____________________________________________________________ Save hundreds on Beauty School - Click here. http://thirdpartyoffers.netzero.net/TGL2231/fc/Ioyw6ijngjIsZ1LfWBEVuTVpmphhI47khJKaf4suZS1kLF4pkdSSqQ/ |
From: Sean B. <sea...@gm...> - 2008-06-30 12:26:56
|
Ok, I believe that I have straightened out the previous problem. For you Leopard builders out there, you will need to update your python macholib to the most recent subversion source. ftp://depot.aecom.yu.edu/pub/9q4TgY4dd47926p4741/LEOPARD-bitpim-10.5.x86.dmg Leopard USB users, please try out the build and tell me what you get. -- Sean Burke Imaging Analysis Specialist Albert Einstein College of Medicine Yeshiva University Bronx, NY 10461 |
From: Jason <zz7...@ya...> - 2008-06-30 11:49:37
|
Please remove my address from the BitPim mailing list. Many thanks. Jason ----- Original Message ----- From: <bit...@li...> To: <bit...@li...> Sent: Monday, June 30, 2008 3:33 AM Subject: BitPim-devel Digest, Vol 26, Issue 16 > Send BitPim-devel mailing list submissions to > bit...@li... > > To subscribe or unsubscribe via the World Wide Web, visit > https://lists.sourceforge.net/lists/listinfo/bitpim-devel > or, via email, send a message with subject or body 'help' to > bit...@li... > > You can reach the person managing the list at > bit...@li... > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of BitPim-devel digest..." > > > Today's Topics: > > 1. DMv6 (Nathan Hjelm) > 2. Re: Data recording (Joe Pham) > 3. Re: Preliminary enV2/VX9100 Support (Joe Pham) > 4. Re: VZW LG Dare VX9700 (Joe Pham) > 5. Re: Preliminary enV2/VX9100 Support (Joe Pham) > 6. Re: Preliminary enV2/VX9100 Support (Nathan Hjelm) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Sun, 29 Jun 2008 13:26:13 -0600 > From: Nathan Hjelm <hj...@ma...> > Subject: [BitPim-devel] DMv6 > To: bit...@li... > Message-ID: <AC6...@ma...> > Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes > > It seems that the XOR key is not necessarily stored in keys 1-4 in > increasing byte significance. All phone appear to use a rotation of > the XOR bytes. I have seen 0123, 2301, and 3012. I have seen the same > phone accept different rotations of the key at different times so I > doubt the rotation is based solely off the phones ESN and software > build time as I previously thought. Also, the random bytes that are > stored with the XOR key have 0 effect on the rotation. I will try to > get to the bottom of this later tonight but in the mean time the patch > I sent out late last night will work about 80% of the time (possibly > 100% of the on the VX-9100). > > -Nathan > > > > ------------------------------ > > Message: 2 > Date: Mon, 30 Jun 2008 03:57:51 GMT > From: "Joe Pham" <dj...@ne...> > Subject: Re: [BitPim-devel] Data recording > To: bit...@li... > Message-ID: <200...@we...> > Content-Type: text/plain; charset=windows-1252 > >>It was easy enough to fix always assuming little endian. Patch >>attached. > > Committed. > > -Joe Pham > > > ____________________________________________________________ > Sweepstakes!!! > Enter for your chance to WIN one of hundreds of daily prizes. > http://thirdpartyoffers.netzero.net/TGL2231/fc/JKFkuJO6pj2J10lG9IORAJUheRhI8WLoFn5mr3qL7m3EVcAYpmjctG/ > > > > ------------------------------ > > Message: 3 > Date: Mon, 30 Jun 2008 04:01:01 GMT > From: "Joe Pham" <dj...@ne...> > Subject: Re: [BitPim-devel] Preliminary enV2/VX9100 Support > To: bit...@li... > Message-ID: <200...@we...> > Content-Type: text/plain; charset=windows-1252 > >>Attached are patches which implement the suggestion from my >>previous email (setting all the bytes of keys 1-4). > > That's a very good idea, this should cover most if not all cases. > Committed. > > -Joe Pham > > > ____________________________________________________________ > Summer Spa Sweepstakes > Enter for your chance to WIN a Summer Spa Vacation! > http://thirdpartyoffers.netzero.net/TGL2231/fc/JKFkuJO6pXuLlCZZ1ebIBfYiTLZO2D1YYVwSjsanyrLNnLau2HpPzG/ > > > > ------------------------------ > > Message: 4 > Date: Mon, 30 Jun 2008 04:02:50 GMT > From: "Joe Pham" <dj...@ne...> > Subject: Re: [BitPim-devel] VZW LG Dare VX9700 > To: bit...@li... > Message-ID: <200...@we...> > Content-Type: text/plain; charset=windows-1252 > > Thanks for DR file. The current scheme does not seem to work with the > Dare. Hopefully, Nathan's idea would improve it (currently in svn). > > -Joe Pham > > > ____________________________________________________________ > Beauty Advice Just Got a Makeover > Read reviews about the beauty products you have always wanted to try > http://thirdpartyoffers.netzero.net/TGL2231/fc/JKFkuJO6pwARnQRGnCzbm3mBqMp1hIoMxWLoxwz8wxlIpfSiWkbPt6/ > > > > ------------------------------ > > Message: 5 > Date: Mon, 30 Jun 2008 04:05:55 GMT > From: "Joe Pham" <dj...@ne...> > Subject: Re: [BitPim-devel] Preliminary enV2/VX9100 Support > To: bit...@li... > Message-ID: <200...@we...> > Content-Type: text/plain; charset=windows-1252 > >>Attached is a patch to enable support for media in the enV2. > > Thanks for this and the phonebook patch. > > -Joe Pham > > > > ____________________________________________________________ > Fabulous Spa Getaway! > Enter for your chance to WIN great beauty prizes everyday! > http://thirdpartyoffers.netzero.net/TGL2231/fc/JKFkuJO6pn4fkGwH2qXNxck1hTyAQIpyyufXWxaMWCrzCPCkDDcehe/ > > > > ------------------------------ > > Message: 6 > Date: Mon, 30 Jun 2008 01:33:37 -0600 > From: Nathan Hjelm <hj...@ma...> > Subject: Re: [BitPim-devel] Preliminary enV2/VX9100 Support > To: bit...@li... > Message-ID: <1A1...@ma...> > Content-Type: text/plain; charset="us-ascii" > > I have determined how the XOR key bytes are rotated in keys 1-4 of the > 0xfe 03 command. I am 99.99% certain that the attached update to the > DMv6 scheme will work with all DMv6 phones (including the Dare). > Experimental Dare support is also attached. > > Joe, would you be ok with going to a scheme where DMv6 is detected. I > am fairly certain LG does this in their Dll and I know that both the > Dare and the VX-9100 respond to the shorter DMv5 0xff 00 command > properly with the 0xfe 02 response. I can write up a patch that uses > your DMv6 packet for the 0xfe 03 command. > > -------------- next part -------------- > A non-text attachment was scrubbed... > Name: DMv6_update.diff > Type: application/octet-stream > Size: 21644 bytes > Desc: not available > -------------- next part -------------- > A non-text attachment was scrubbed... > Name: dare.tgz > Type: application/octet-stream > Size: 1820 bytes > Desc: not available > -------------- next part -------------- > > > -Nathan > > On Jun 29, 2008, at 10:01 PM, Joe Pham wrote: > >>> Attached are patches which implement the suggestion from my >>> previous email (setting all the bytes of keys 1-4). >> >> That's a very good idea, this should cover most if not all cases. >> Committed. >> >> -Joe Pham >> >> >> ____________________________________________________________ >> Summer Spa Sweepstakes >> Enter for your chance to WIN a Summer Spa Vacation! >> http://thirdpartyoffers.netzero.net/TGL2231/fc/JKFkuJO6pXuLlCZZ1ebIBfYiTLZO2D1YYVwSjsanyrLNnLau2HpPzG/ >> >> ------------------------------------------------------------------------- >> Check out the new SourceForge.net Marketplace. >> It's the best place to buy or sell services for >> just about anything Open Source. >> http://sourceforge.net/services/buy/index.php >> _______________________________________________ >> BitPim-devel mailing list >> Bit...@li... >> https://lists.sourceforge.net/lists/listinfo/bitpim-devel > > > ------------------------------ > > ------------------------------------------------------------------------- > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://sourceforge.net/services/buy/index.php > > ------------------------------ > > _______________________________________________ > BitPim-devel mailing list > Bit...@li... > https://lists.sourceforge.net/lists/listinfo/bitpim-devel > > > End of BitPim-devel Digest, Vol 26, Issue 16 > ******************************************** |
From: Nathan H. <hj...@ma...> - 2008-06-30 07:33:36
|
I have determined how the XOR key bytes are rotated in keys 1-4 of the 0xfe 03 command. I am 99.99% certain that the attached update to the DMv6 scheme will work with all DMv6 phones (including the Dare). Experimental Dare support is also attached. Joe, would you be ok with going to a scheme where DMv6 is detected. I am fairly certain LG does this in their Dll and I know that both the Dare and the VX-9100 respond to the shorter DMv5 0xff 00 command properly with the 0xfe 02 response. I can write up a patch that uses your DMv6 packet for the 0xfe 03 command. |
From: Joe P. <dj...@ne...> - 2008-06-30 04:06:59
|
>Attached is a patch to enable support for media in the enV2. Thanks for this and the phonebook patch. -Joe Pham ____________________________________________________________ Fabulous Spa Getaway! Enter for your chance to WIN great beauty prizes everyday! http://thirdpartyoffers.netzero.net/TGL2231/fc/JKFkuJO6pn4fkGwH2qXNxck1hTyAQIpyyufXWxaMWCrzCPCkDDcehe/ |
From: Joe P. <dj...@ne...> - 2008-06-30 04:04:22
|
Thanks for DR file. The current scheme does not seem to work with the Dare. Hopefully, Nathan's idea would improve it (currently in svn). -Joe Pham ____________________________________________________________ Beauty Advice Just Got a Makeover Read reviews about the beauty products you have always wanted to try http://thirdpartyoffers.netzero.net/TGL2231/fc/JKFkuJO6pwARnQRGnCzbm3mBqMp1hIoMxWLoxwz8wxlIpfSiWkbPt6/ |
From: Joe P. <dj...@ne...> - 2008-06-30 04:02:10
|
>Attached are patches which implement the suggestion from my >previous email (setting all the bytes of keys 1-4). That's a very good idea, this should cover most if not all cases. Committed. -Joe Pham ____________________________________________________________ Summer Spa Sweepstakes Enter for your chance to WIN a Summer Spa Vacation! http://thirdpartyoffers.netzero.net/TGL2231/fc/JKFkuJO6pXuLlCZZ1ebIBfYiTLZO2D1YYVwSjsanyrLNnLau2HpPzG/ |
From: Joe P. <dj...@ne...> - 2008-06-30 03:58:50
|
>It was easy enough to fix always assuming little endian. Patch >attached. Committed. -Joe Pham ____________________________________________________________ Sweepstakes!!! Enter for your chance to WIN one of hundreds of daily prizes. http://thirdpartyoffers.netzero.net/TGL2231/fc/JKFkuJO6pj2J10lG9IORAJUheRhI8WLoFn5mr3qL7m3EVcAYpmjctG/ |
From: Nathan H. <hj...@ma...> - 2008-06-29 19:26:11
|
It seems that the XOR key is not necessarily stored in keys 1-4 in increasing byte significance. All phone appear to use a rotation of the XOR bytes. I have seen 0123, 2301, and 3012. I have seen the same phone accept different rotations of the key at different times so I doubt the rotation is based solely off the phones ESN and software build time as I previously thought. Also, the random bytes that are stored with the XOR key have 0 effect on the rotation. I will try to get to the bottom of this later tonight but in the mean time the patch I sent out late last night will work about 80% of the time (possibly 100% of the on the VX-9100). -Nathan |