Post by Simon C4400 caused an
Please post the exception. There's a reason I have
debugging statements in the code.
Here it is.
An unexpected exception has occurred.
Please see the help for details on what to do.
Traceback (most recent call last):
File "C:\projects\bitpim\gui.py", line 173, in run
res=call()
File "C:\projects\bitpim\gui.py", line 113, in
__call__
return apply(self.method, self.args+args, d)
File "C:\projects\bitpim\gui.py", line 1735, in
detectphone
return
phone_detect.DetectPhone(self).detect(using_port)
File "C:\projects\bitpim\phone_detect.py", line 217,
in detect
module)
File "C:\projects\bitpim\com_lgvx4400.py", line
1039, in detectphone
p.eval_detect_data(res[port])
File "C:\projects\bitpim\com_lgvx4400.py", line
1008, in eval_detect_data
if res.get(self.brew_version_txt_key,
'')[:len(self.my_model)]==self.my_model or \
TypeError: unsubscriptable object
Variables by last 8 frames, innermost last
Frame __bootstrap in c:\python23\lib\threading.py at
line 442
self = <WorkerThread(BitPim helper,
started daemon)>
Frame run in C:\projects\bitpim\gui.py at line 166
e = <exceptions.TypeError instance at
0x0314D120>
res = None
self = <WorkerThread(BitPim helper,
started daemon)>
item = (<gui.Request instance at
0x020C8738>, <gui.Callback instance at 0x0211CA80>)
call = <gui.Request instance at
0x020C8738>
ex = <exceptions.TypeError instance at
0x0314D120>
resultcb = <gui.Callback instance at
0x0211CA80>
first = 0
Frame __call__ in C:\projects\bitpim\gui.py at line
113
self = <gui.Request instance at
0x020C8738>
args = ()
d = Keys []
{}
kwargs = Keys []
{}
Frame detectphone in C:\projects\bitpim\gui.py at line
1735
self = <WorkerThread(BitPim helper,
started daemon)>
using_port = 'COM7'
Frame detect in C:\projects\bitpim\phone_detect.py at
line 217
models = ['Audiovox CDM-8900', 'LG-TM520',
'LG-VX10', 'LG-VX3200', 'LG-VX4400', 'LG-VX450
using_port = 'COM7'
coms = [{'available': True, 'driverdate':
(2001, 7, 1), 'description': 'Communications
found_port = None
threads = []
likely_ports = ['COM7']
found_model = None
x = Keys ['active', 'available',
'class', 'description', 'driverdate',
'driverdescription', 'driverprovider',
'driverversion', 'hardwareinstance', 'name']
{'available': False, 'driverdate':
(2004, 8, 3), 'description': 'Standard Modem
model = 'LG-VX4400'
pm = Keys ['Audiovox CDM-8900',
'LG-TM520', 'LG-VX10', 'LG-VX3200', 'LG-VX4400',
'LG-VX4500', 'LG-VX4600 (Telus Mobility)', 'LG-VX4650
(VZW)', 'LG-VX6000', 'LG-VX6100', 'LG-VX7000',
'LG-VX8000 (Verizon Wireless)', 'LG-VX8100 (Verizon
Wireless)', 'MM-7400', 'Other CDMA phone', 'PM-8200',
'RL-4920', 'SCH-A310', 'SCH-A650', 'SCH-A670',
'SCP-4900', 'SCP-5300', 'SCP-5400', 'SCP-5500',
'SCP-7200', 'SCP-7300', 'SCP-8100', 'SCP-8100 (Bell
Mobility)', 'SK6100 (Pelephone)', 'SPH-A460',
'SPH-A620 (VGA1000)']
{'LG-VX3200': 'com_lgvx3200',
'SCP-7200': 'com_sanyo7200', 'SCP-4900': 'com_sany
available_coms = ['COM7']
self = <phone_detect.DetectPhone object at
0x020E5950>
available_modem_coms = []
Frame detectphone in
C:\projects\bitpim\com_lgvx4400.py at line 1043
res = Keys ['COM7']
{'COM7': {'mode_modem': None,
'esn_file': '\xff\xff\xff\xff\xff\xff\xff\xff\xff\
coms = [{'available': True, 'driverdate':
(2001, 7, 1), 'description': 'Communications
p = <com_lgvx4400.Phone instance at
0x0211CB48>
likely_ports = ['COM7']
port = 'COM7'
Frame eval_detect_data in
C:\projects\bitpim\com_lgvx4400.py at line 1008
res = Keys ['brew_version.txt', 'esn',
'esn_file', 'firmware_version', 'firmwareresponse',
'lgpbinfo', 'manufacturer', 'mode_brew', 'mode_modem',
'model']
{'mode_modem': None, 'esn_file':
'\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x
self = <com_lgvx4400.Phone instance at
0x0211CB48>
Post by Simon CPost by Simon CAlso some data is stored in the res passed to
detect_phone and that
Post by Simon Cis persistant from one model to the next as all the
phone models are
Post by Simon Ccalled, this causes problems, I changed the info to
not be
That was by design. The idea is to initially read
as much info as possible and share that info with
other phone codes. Please elaborate on the problems
that this caused you.
I did not debug into it in great detail, but when I
changed the info to be reevaluated for each model the
problem went away, however I also changed the
algorithm to use the version file if present at the
same time and ignore the other information so it may
be that this does not really make a difference.
The critical change was in eval_detect_data(self,
res):
Changing :
if res.get(self.brew_version_txt_key,
'')[:len(self.my_model)]==self.my_model or \
res.get(self.lgpbinfo_key,
'').find(self.my_model)!=-1:
To:
version=phone_info.get(self.brew_version_txt_key, '')
if (version!=None and
version[:len(self.my_model)]==self.my_model) or \
(version==None and
phone_info.get(self.lgpbinfo_key,
'').find(self.my_model)!=-1):
Got rid of the exception and stopped the 6100 showing
up as a 6000.