Skip to content

Commit d2e8e97

Browse files
Merge pull request #97 from ARMmbed/devel_dap_ver_updates
Add extended support for DAPlink / mbed.htm file parsing
2 parents baa5037 + 8e630f4 commit d2e8e97

File tree

2 files changed

+62
-11
lines changed

2 files changed

+62
-11
lines changed

mbed_lstools/lstools_base.py

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -483,22 +483,40 @@ def get_mbed_htm_target_id(self, mount_point):
483483
return target_id
484484
return result
485485

486+
def get_mbed_htm_comment_section_ver_build(self, line):
487+
"""! Check for Version and Build date of interface chip firmware im mbed.htm file
488+
@return (version, build) tuple if successful, None if no info found
489+
"""
490+
# <!-- Version: 0200 Build: Mar 26 2014 13:22:20 -->
491+
m = re.search(r'^<!-- Version: (\d+) Build: ([\d\w: ]+) -->', line)
492+
if m:
493+
version_str, build_str = m.groups()
494+
return (version_str.strip(), build_str.strip())
495+
496+
# <!-- Version: 0219 Build: Feb 2 2016 15:20:54 Git Commit SHA: 0853ba0cdeae2436c52efcba0ba76a6434c200ff Git local mods:No-->
497+
m = re.search(r'^<!-- Version: (\d+) Build: ([\d\w: ]+) Git Commit SHA', line)
498+
if m:
499+
version_str, build_str = m.groups()
500+
return (version_str.strip(), build_str.strip())
501+
502+
# <!-- Version: 0.14.3. build 471 -->
503+
m = re.search(r'^<!-- Version: ([\d+\.]+)\. build (\d+) -->', line)
504+
if m:
505+
version_str, build_str = m.groups()
506+
return (version_str.strip(), build_str.strip())
507+
return None
508+
486509
def get_mbed_htm(self, mount_point):
487-
"""!
488-
<!-- mbed Microcontroller Website and Authentication Shortcut -->
489-
<!-- Version: 0200 Build: Mar 26 2014 13:22:20 -->
490-
<html>
491-
...
492-
</html>
510+
"""! Check for version, build date/timestamp, URL in mbed.htm file
511+
@param mount_point Where to look for mbed.htm file
512+
@return Dictoionary with additional DAPlink names
493513
"""
494514
result = {}
495515
for line in self.get_mbed_htm_lines(mount_point):
496516
# Check for Version and Build date of interface chip firmware
497-
m = re.search(r'^<!-- Version: (\d+) Build: ([\d\w: ]+) -->', line)
498-
if m:
499-
version_str, build_str = m.groups()
500-
result['Version'] = version_str.strip()
501-
result['Build'] = build_str.strip()
517+
ver_bld = self.get_mbed_htm_comment_section_ver_build(line)
518+
if ver_bld:
519+
result['version'], result['build'] = ver_bld
502520

503521
# Check for mbed URL
504522
m = re.search(r'url=([\w\d\:/\\\?\.=-_]+)', line)

test/mbed_htm.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class ParseMbedHTMTestCase(unittest.TestCase):
3535
test_mbed_htm_l152re_url_str = '<meta http-equiv="refresh" content="0; url=http://mbed.org/device/?code=07100200656A9A955A0F0CB8"/>'
3636
test_mbed_htm_lpc1768_url_str = '<meta http-equiv="refresh" content="0; url=http://mbed.org/start?auth=101000000000000000000002F7F1869557200730298d254d3ff3509e3fe4722d&loader=11972&firmware=16457&configuration=4" />'
3737
test_mbed_htm_nucleo_l031k6_str = '<meta http-equiv="refresh" content="0; url=http://mbed.org/device/?code=07900221461663077952F5AA"/>'
38+
test_mbed_htm_nrf51_url_str = '<meta http-equiv="refresh" content="0; url=http://mbed.org/device/?code=1100021952333120353935373130313232323032AFD5DFD8"/>'
3839

3940
# DAPLink 0240
4041
test_daplink_240_mbed_html_str = 'window.location.replace("https://mbed.org/device/?code=0240000029164e45002f0012706e0006f301000097969900?version=0240?target_id=0007ffffffffffff4e45315450090023");'
@@ -65,6 +66,38 @@ def test_daplink_240_mbed_html(self):
6566
target_id = self.mbeds.scan_html_line_for_target_id(self.test_daplink_240_mbed_html_str)
6667
self.assertEqual('0240000029164e45002f0012706e0006f301000097969900', target_id)
6768

69+
def test_mbed_htm_nrf51_url(self):
70+
target_id = self.mbeds.scan_html_line_for_target_id(self.test_mbed_htm_nrf51_url_str)
71+
self.assertEqual('1100021952333120353935373130313232323032AFD5DFD8', target_id)
72+
73+
def get_mbed_htm_comment_section_ver_build(self):
74+
# Incorrect data
75+
ver_bld = self.mbeds.get_mbed_htm_comment_section_ver_build('<!-- Version: XXXX Build: Mar 26 2014 13:22:20 -->')
76+
self.assertIsNone(ver_bld)
77+
78+
ver_bld = self.mbeds.get_mbed_htm_comment_section_ver_build('<!-- mbed Platform Website and Authentication Shortcut -->')
79+
self.assertIsNone(ver_bld)
80+
81+
ver_bld = self.mbeds.get_mbed_htm_comment_section_ver_build('')
82+
self.assertIsNone(ver_bld)
83+
84+
# Correct data
85+
ver_bld = self.mbeds.get_mbed_htm_comment_section_ver_build('<!-- Version: 0200 Build: Mar 26 2014 13:22:20 -->')
86+
self.assertIsNotNone(ver_bld)
87+
self.assertEqual(('0200', 'Mar 26 2014 13:22:20'), ver_bld)
88+
89+
ver_bld = self.mbeds.get_mbed_htm_comment_section_ver_build('<!-- Version: 0200 Build: Aug 27 2014 13:29:28 -->')
90+
self.assertIsNotNone(ver_bld)
91+
self.assertEqual(('0200', 'Aug 27 2014 13:29:28'), ver_bld)
92+
93+
ver_bld = self.mbeds.get_mbed_htm_comment_section_ver_build('<!-- Version: 0219 Build: Feb 2 2016 15:20:54 Git Commit SHA: 0853ba0cdeae2436c52efcba0ba76a6434c200ff Git local mods:No-->')
94+
self.assertIsNotNone(ver_bld)
95+
self.assertEqual(('0219', 'Feb 2 2016 15:20:54'), ver_bld)
96+
97+
ver_bld = self.mbeds.get_mbed_htm_comment_section_ver_build('<!-- Version: 0.14.3. build 471 -->')
98+
self.assertIsNotNone(ver_bld)
99+
self.assertEqual(('0.14.3', '471'), ver_bld)
100+
68101
def test_(self):
69102
pass
70103

0 commit comments

Comments
 (0)