Skip to content

Commit 3aa1962

Browse files
committed
plat_db now provides jlink_device_name
1 parent 6d57fab commit 3aa1962

File tree

2 files changed

+54
-16
lines changed

2 files changed

+54
-16
lines changed

mbed_lstools/lstools_base.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,9 @@ def _fs_never(self, device, filter_function, read_details_txt):
167167
"""Filter device without touching the file system of the device"""
168168
device['target_id'] = device['target_id_usb_id']
169169
device['target_id_mbed_htm'] = None
170-
device['platform_name'] = self.plat_db.get(device['target_id'][0:4])
170+
platform_data = self.plat_db.get(device['target_id'][0:4],
171+
verbose_data=True)
172+
device.update(platform_data or {'platform_name': None})
171173
if not filter_function or filter_function(device):
172174
return device
173175
else:
@@ -192,7 +194,8 @@ def _fs_after_id_check(self, device, filter_function, read_details_txt):
192194
"""
193195
device['target_id'] = device['target_id_usb_id']
194196
device['target_id_mbed_htm'] = None
195-
device['platform_name'] = self.plat_db.get(device['target_id'][0:4])
197+
platform_data = self.plat_db.get(device['target_id'][0:4], verbose_data=True)
198+
device.update(platform_data or {'platform_name': None})
196199
if not filter_function or filter_function(device):
197200
self._update_device_from_fs(device, read_details_txt)
198201
return device
@@ -239,8 +242,10 @@ def _update_device_details_daplink(self, device, read_details_txt):
239242
for f, v in details_txt.items()})
240243

241244
if device['target_id']:
242-
device['platform_name'] = self.plat_db.get(device['target_id'][0:4],
243-
device_type='daplink')
245+
platform_data = self.plat_db.get(device['target_id'][0:4],
246+
device_type='daplink',
247+
verbose_data=True)
248+
device.update(platform_data or {'platform_name': None})
244249
else:
245250
device['platform_name'] = None
246251

@@ -270,7 +275,10 @@ def _update_device_details_jlink(self, device, read_details_txt):
270275
if m:
271276
device['url'] = m.group(1).strip()
272277
identifier = device['url'].split('/')[-1]
273-
device['platform_name'] = self.plat_db.get(identifier, device_type='jlink')
278+
platform_data = self.plat_db.get(identifier,
279+
device_type='jlink',
280+
verbose_data=True)
281+
device.update(platform_data or {'platform_name': None})
274282
break
275283

276284

mbed_lstools/platform_database.py

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -265,11 +265,23 @@
265265
u'FFFF': u'K20 BOOTLOADER',
266266
u'RIOT': u'RIOT',
267267
},
268-
'jlink': {
269-
u'X349858SLYN': u'NRF52_DK',
270-
u'FRDM-KL25Z': u'KL25Z',
271-
u'FRDM-KL27Z': u'KL27Z',
272-
u'FRDM-KL43Z': u'KL43Z'
268+
u'jlink': {
269+
u'X349858SLYN': {
270+
u'platform_name': u'NRF52_DK',
271+
u'jlink_device_name': u'nRF52832_xxaa'
272+
},
273+
u'FRDM-KL25Z': {
274+
u'platform_name': u'KL25Z',
275+
u'jlink_device_name': u'MKL25Z128xxx4'
276+
},
277+
u'FRDM-KL27Z': {
278+
u'platform_name': u'KL27Z',
279+
u'jlink_device_name': u'MKL27Z64xxx4'
280+
},
281+
u'FRDM-KL43Z': {
282+
u'platform_name': u'KL43Z',
283+
u'jlink_device_name': u'MKL43Z256xxx4'
284+
}
273285
}
274286
}
275287

@@ -286,6 +298,21 @@ def _older_than_me(path):
286298
return _get_modified_time(path) < _get_modified_time(__file__)
287299

288300

301+
def _modify_data_format(data, verbose_data, simple_data_key='platform_name'):
302+
if isinstance(data, dict):
303+
if verbose_data:
304+
return data
305+
306+
return data[simple_data_key]
307+
else:
308+
if verbose_data:
309+
return {
310+
simple_data_key: data
311+
}
312+
313+
return data
314+
315+
289316
def _overwrite_or_open(db):
290317
try:
291318
if db is LOCAL_PLATFORM_DATABASE and _older_than_me(db):
@@ -357,13 +384,14 @@ def items(self, device_type='daplink'):
357384
def all_ids(self, device_type='daplink'):
358385
return iter(self._keys[device_type])
359386

360-
def get(self, index, default=None, device_type='daplink'):
361-
"""Standard lookup function. Works exactly like a dict"""
387+
def get(self, index, default=None, device_type='daplink', verbose_data=False):
388+
"""Standard lookup function. Works exactly like a dict. If 'verbose_data'
389+
is True, all data for the platform is returned as a dict."""
362390
for db in self._dbs.values():
363391
if device_type in db:
364392
maybe_answer = db[device_type].get(index, None)
365393
if maybe_answer:
366-
return maybe_answer
394+
return _modify_data_format(maybe_answer, verbose_data)
367395

368396
return default
369397

@@ -411,9 +439,10 @@ def add(self, id, platform_name, permanent=False, device_type='daplink'):
411439
else:
412440
raise ValueError("Invald target id: %s" % id)
413441

414-
def remove(self, id, permanent=False, device_type='daplink'):
442+
def remove(self, id, permanent=False, device_type='daplink', verbose_data=False):
415443
"""Remove a platform from this database, optionally updating an origin
416-
database
444+
database. If 'verbose_data' is True, all data for the platform is returned
445+
as a dict.
417446
"""
418447
logger.debug("Trying remove of %s", id)
419448
if id is '*' and device_type in self._dbs[self._prim_db]:
@@ -426,4 +455,5 @@ def remove(self, id, permanent=False, device_type='daplink'):
426455
self._keys[device_type].remove(id)
427456
if permanent:
428457
self._update_db()
429-
return removed
458+
459+
return _modify_data_format(removed, verbose_data)

0 commit comments

Comments
 (0)