Skip to content

Commit 9636c09

Browse files
committed
plat_db now provides jlink_device_name
1 parent db6c97c commit 9636c09

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
@@ -263,11 +263,23 @@
263263
u'FFFF': u'K20 BOOTLOADER',
264264
u'RIOT': u'RIOT',
265265
},
266-
'jlink': {
267-
u'X349858SLYN': u'NRF52_DK',
268-
u'FRDM-KL25Z': u'KL25Z',
269-
u'FRDM-KL27Z': u'KL27Z',
270-
u'FRDM-KL43Z': u'KL43Z'
266+
u'jlink': {
267+
u'X349858SLYN': {
268+
u'platform_name': u'NRF52_DK',
269+
u'jlink_device_name': u'nRF52832_xxaa'
270+
},
271+
u'FRDM-KL25Z': {
272+
u'platform_name': u'KL25Z',
273+
u'jlink_device_name': u'MKL25Z128xxx4'
274+
},
275+
u'FRDM-KL27Z': {
276+
u'platform_name': u'KL27Z',
277+
u'jlink_device_name': u'MKL27Z64xxx4'
278+
},
279+
u'FRDM-KL43Z': {
280+
u'platform_name': u'KL43Z',
281+
u'jlink_device_name': u'MKL43Z256xxx4'
282+
}
271283
}
272284
}
273285

@@ -284,6 +296,21 @@ def _older_than_me(path):
284296
return _get_modified_time(path) < _get_modified_time(__file__)
285297

286298

299+
def _modify_data_format(data, verbose_data, simple_data_key='platform_name'):
300+
if isinstance(data, dict):
301+
if verbose_data:
302+
return data
303+
304+
return data[simple_data_key]
305+
else:
306+
if verbose_data:
307+
return {
308+
simple_data_key: data
309+
}
310+
311+
return data
312+
313+
287314
def _overwrite_or_open(db):
288315
try:
289316
if db is LOCAL_PLATFORM_DATABASE and _older_than_me(db):
@@ -355,13 +382,14 @@ def items(self, device_type='daplink'):
355382
def all_ids(self, device_type='daplink'):
356383
return iter(self._keys[device_type])
357384

358-
def get(self, index, default=None, device_type='daplink'):
359-
"""Standard lookup function. Works exactly like a dict"""
385+
def get(self, index, default=None, device_type='daplink', verbose_data=False):
386+
"""Standard lookup function. Works exactly like a dict. If 'verbose_data'
387+
is True, all data for the platform is returned as a dict."""
360388
for db in self._dbs.values():
361389
if device_type in db:
362390
maybe_answer = db[device_type].get(index, None)
363391
if maybe_answer:
364-
return maybe_answer
392+
return _modify_data_format(maybe_answer, verbose_data)
365393

366394
return default
367395

@@ -409,9 +437,10 @@ def add(self, id, platform_name, permanent=False, device_type='daplink'):
409437
else:
410438
raise ValueError("Invald target id: %s" % id)
411439

412-
def remove(self, id, permanent=False, device_type='daplink'):
440+
def remove(self, id, permanent=False, device_type='daplink', verbose_data=False):
413441
"""Remove a platform from this database, optionally updating an origin
414-
database
442+
database. If 'verbose_data' is True, all data for the platform is returned
443+
as a dict.
415444
"""
416445
logger.debug("Trying remove of %s", id)
417446
if id is '*' and device_type in self._dbs[self._prim_db]:
@@ -424,4 +453,5 @@ def remove(self, id, permanent=False, device_type='daplink'):
424453
self._keys[device_type].remove(id)
425454
if permanent:
426455
self._update_db()
427-
return removed
456+
457+
return _modify_data_format(removed, verbose_data)

0 commit comments

Comments
 (0)