mbed-os
Dependents: cobaLCDJoyMotor_Thread odometry_omni_3roda_v3 odometry_omni_3roda_v1 odometry_omni_3roda_v2 ... more
tools/compliance/ioper_test_target_id.py@0:b74591d5ab33, 2017-12-11 (annotated)
- Committer:
- be_bryan
- Date:
- Mon Dec 11 17:54:04 2017 +0000
- Revision:
- 0:b74591d5ab33
motor ++
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
be_bryan | 0:b74591d5ab33 | 1 | """ |
be_bryan | 0:b74591d5ab33 | 2 | mbed SDK |
be_bryan | 0:b74591d5ab33 | 3 | Copyright (c) 2011-2015 ARM Limited |
be_bryan | 0:b74591d5ab33 | 4 | |
be_bryan | 0:b74591d5ab33 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); |
be_bryan | 0:b74591d5ab33 | 6 | you may not use this file except in compliance with the License. |
be_bryan | 0:b74591d5ab33 | 7 | You may obtain a copy of the License at |
be_bryan | 0:b74591d5ab33 | 8 | |
be_bryan | 0:b74591d5ab33 | 9 | http://www.apache.org/licenses/LICENSE-2.0 |
be_bryan | 0:b74591d5ab33 | 10 | |
be_bryan | 0:b74591d5ab33 | 11 | Unless required by applicable law or agreed to in writing, software |
be_bryan | 0:b74591d5ab33 | 12 | distributed under the License is distributed on an "AS IS" BASIS, |
be_bryan | 0:b74591d5ab33 | 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
be_bryan | 0:b74591d5ab33 | 14 | See the License for the specific language governing permissions and |
be_bryan | 0:b74591d5ab33 | 15 | limitations under the License. |
be_bryan | 0:b74591d5ab33 | 16 | |
be_bryan | 0:b74591d5ab33 | 17 | Author: Przemyslaw Wirkus <Przemyslaw.Wirkus@arm.com> |
be_bryan | 0:b74591d5ab33 | 18 | |
be_bryan | 0:b74591d5ab33 | 19 | """ |
be_bryan | 0:b74591d5ab33 | 20 | |
be_bryan | 0:b74591d5ab33 | 21 | from ioper_base import IOperTestCaseBase |
be_bryan | 0:b74591d5ab33 | 22 | |
be_bryan | 0:b74591d5ab33 | 23 | |
be_bryan | 0:b74591d5ab33 | 24 | class IOperTest_TargetID(IOperTestCaseBase): |
be_bryan | 0:b74591d5ab33 | 25 | """ tests related to target_id value |
be_bryan | 0:b74591d5ab33 | 26 | """ |
be_bryan | 0:b74591d5ab33 | 27 | |
be_bryan | 0:b74591d5ab33 | 28 | def __init__(self, scope=None): |
be_bryan | 0:b74591d5ab33 | 29 | IOperTestCaseBase.__init__(self, scope) |
be_bryan | 0:b74591d5ab33 | 30 | self.TARGET_ID_LEN = 24 |
be_bryan | 0:b74591d5ab33 | 31 | |
be_bryan | 0:b74591d5ab33 | 32 | def test_target_id_format(self, target_id, target_id_name): |
be_bryan | 0:b74591d5ab33 | 33 | # Expected length == 24, eg. "02400203D94B0E7724B7F3CF" |
be_bryan | 0:b74591d5ab33 | 34 | result = [] |
be_bryan | 0:b74591d5ab33 | 35 | target_id_len = len(target_id) if target_id else 0 |
be_bryan | 0:b74591d5ab33 | 36 | if target_id_len == self.TARGET_ID_LEN: |
be_bryan | 0:b74591d5ab33 | 37 | result.append((self.PASS, "TARGET_ID_LEN", self.scope, "%s '%s' is %d chars long " % (target_id_name, target_id, target_id_len))) |
be_bryan | 0:b74591d5ab33 | 38 | result.append((self.INFO, "FW_VER_STR", self.scope, "%s Version String is %s.%s.%s " % (target_id_name, |
be_bryan | 0:b74591d5ab33 | 39 | target_id[0:4], |
be_bryan | 0:b74591d5ab33 | 40 | target_id[4:8], |
be_bryan | 0:b74591d5ab33 | 41 | target_id[8:24], |
be_bryan | 0:b74591d5ab33 | 42 | ))) |
be_bryan | 0:b74591d5ab33 | 43 | else: |
be_bryan | 0:b74591d5ab33 | 44 | result.append((self.ERROR, "TARGET_ID_LEN", self.scope, "%s '%s' is %d chars long. Expected %d chars" % (target_id_name, target_id, target_id_len, self.TARGET_ID_LEN))) |
be_bryan | 0:b74591d5ab33 | 45 | return result |
be_bryan | 0:b74591d5ab33 | 46 | |
be_bryan | 0:b74591d5ab33 | 47 | def test_decode_target_id(self, target_id, target_id_name): |
be_bryan | 0:b74591d5ab33 | 48 | result = [] |
be_bryan | 0:b74591d5ab33 | 49 | target_id_len = len(target_id) if target_id else 0 |
be_bryan | 0:b74591d5ab33 | 50 | if target_id_len >= 4: |
be_bryan | 0:b74591d5ab33 | 51 | result.append((self.INFO, "FW_VEN_CODE", self.scope, "%s Vendor Code is '%s'" % (target_id_name, target_id[0:2]))) |
be_bryan | 0:b74591d5ab33 | 52 | result.append((self.INFO, "FW_PLAT_CODE", self.scope, "%s Platform Code is '%s'" % (target_id_name, target_id[2:4]))) |
be_bryan | 0:b74591d5ab33 | 53 | result.append((self.INFO, "FW_VER", self.scope, "%s Firmware Version is '%s'" % (target_id_name, target_id[4:8]))) |
be_bryan | 0:b74591d5ab33 | 54 | result.append((self.INFO, "FW_HASH_SEC", self.scope, "%s Hash of secret is '%s'" % (target_id_name, target_id[8:24]))) |
be_bryan | 0:b74591d5ab33 | 55 | return result |
be_bryan | 0:b74591d5ab33 | 56 | |
be_bryan | 0:b74591d5ab33 | 57 | def test(self, param=None): |
be_bryan | 0:b74591d5ab33 | 58 | result = [] |
be_bryan | 0:b74591d5ab33 | 59 | if param: |
be_bryan | 0:b74591d5ab33 | 60 | pass |
be_bryan | 0:b74591d5ab33 | 61 | return result |
be_bryan | 0:b74591d5ab33 | 62 | |
be_bryan | 0:b74591d5ab33 | 63 | |
be_bryan | 0:b74591d5ab33 | 64 | class IOperTest_TargetID_Basic(IOperTest_TargetID): |
be_bryan | 0:b74591d5ab33 | 65 | """ Basic interoperability tests checking TargetID compliance |
be_bryan | 0:b74591d5ab33 | 66 | """ |
be_bryan | 0:b74591d5ab33 | 67 | |
be_bryan | 0:b74591d5ab33 | 68 | def __init__(self, scope=None): |
be_bryan | 0:b74591d5ab33 | 69 | IOperTest_TargetID.__init__(self, scope) |
be_bryan | 0:b74591d5ab33 | 70 | |
be_bryan | 0:b74591d5ab33 | 71 | def test(self, param=None): |
be_bryan | 0:b74591d5ab33 | 72 | result = [] |
be_bryan | 0:b74591d5ab33 | 73 | |
be_bryan | 0:b74591d5ab33 | 74 | if param: |
be_bryan | 0:b74591d5ab33 | 75 | result.append((self.PASS, "TARGET_ID", self.scope, "TargetID '%s' found" % param['target_id'])) |
be_bryan | 0:b74591d5ab33 | 76 | |
be_bryan | 0:b74591d5ab33 | 77 | # Check if target name can be decoded with mbed-ls |
be_bryan | 0:b74591d5ab33 | 78 | if param['platform_name']: |
be_bryan | 0:b74591d5ab33 | 79 | result.append((self.PASS, "TARGET_ID_DECODE", self.scope, "TargetID '%s' decoded as '%s'" % (param['target_id'][0:4], param['platform_name']))) |
be_bryan | 0:b74591d5ab33 | 80 | else: |
be_bryan | 0:b74591d5ab33 | 81 | result.append((self.ERROR, "TARGET_ID_DECODE", self.scope, "TargetID '%s'... not decoded" % (param['target_id'] if param['target_id'] else ''))) |
be_bryan | 0:b74591d5ab33 | 82 | |
be_bryan | 0:b74591d5ab33 | 83 | # Test for USBID and mbed.htm consistency |
be_bryan | 0:b74591d5ab33 | 84 | if param['target_id_mbed_htm'] == param['target_id_usb_id']: |
be_bryan | 0:b74591d5ab33 | 85 | result.append((self.PASS, "TARGET_ID_MATCH", self.scope, "TargetID (USBID) and TargetID (mbed.htm) match")) |
be_bryan | 0:b74591d5ab33 | 86 | else: |
be_bryan | 0:b74591d5ab33 | 87 | text = "TargetID (USBID) and TargetID (mbed.htm) don't match: '%s' != '%s'" % (param['target_id_usb_id'], param['target_id_mbed_htm']) |
be_bryan | 0:b74591d5ab33 | 88 | result.append((self.WARN, "TARGET_ID_MATCH", self.scope, text)) |
be_bryan | 0:b74591d5ab33 | 89 | else: |
be_bryan | 0:b74591d5ab33 | 90 | result.append((self.ERROR, "TARGET_ID", self.scope, "TargetID not found")) |
be_bryan | 0:b74591d5ab33 | 91 | return result |
be_bryan | 0:b74591d5ab33 | 92 | |
be_bryan | 0:b74591d5ab33 | 93 | class IOperTest_TargetID_MbedEnabled(IOperTest_TargetID): |
be_bryan | 0:b74591d5ab33 | 94 | """ Basic interoperability tests checking TargetID compliance |
be_bryan | 0:b74591d5ab33 | 95 | """ |
be_bryan | 0:b74591d5ab33 | 96 | |
be_bryan | 0:b74591d5ab33 | 97 | def __init__(self, scope=None): |
be_bryan | 0:b74591d5ab33 | 98 | IOperTest_TargetID.__init__(self, scope) |
be_bryan | 0:b74591d5ab33 | 99 | |
be_bryan | 0:b74591d5ab33 | 100 | def test(self, param=None): |
be_bryan | 0:b74591d5ab33 | 101 | result = [] |
be_bryan | 0:b74591d5ab33 | 102 | |
be_bryan | 0:b74591d5ab33 | 103 | if param: |
be_bryan | 0:b74591d5ab33 | 104 | # Target ID tests: |
be_bryan | 0:b74591d5ab33 | 105 | result += self.test_target_id_format(param['target_id_usb_id'], "TargetId (USBID)") |
be_bryan | 0:b74591d5ab33 | 106 | result += self.test_target_id_format(param['target_id_mbed_htm'], "TargetId (mbed.htm)") |
be_bryan | 0:b74591d5ab33 | 107 | |
be_bryan | 0:b74591d5ab33 | 108 | # Some extra info about TargetID itself |
be_bryan | 0:b74591d5ab33 | 109 | result += self.test_decode_target_id(param['target_id_usb_id'], "TargetId (USBID)") |
be_bryan | 0:b74591d5ab33 | 110 | result += self.test_decode_target_id(param['target_id_mbed_htm'], "TargetId (mbed.htm)") |
be_bryan | 0:b74591d5ab33 | 111 | return result |