takashi kadono
/
Nucleo446_SSD1331
Color Oled(SSD1331) connect to STMicroelectronics Nucleo-F466
mbed-os/TESTS/host_tests/system_reset.py@0:8fdf9a60065b, 2018-10-10 (annotated)
- Committer:
- kadonotakashi
- Date:
- Wed Oct 10 00:33:53 2018 +0000
- Revision:
- 0:8fdf9a60065b
how to make mbed librry
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kadonotakashi | 0:8fdf9a60065b | 1 | """ |
kadonotakashi | 0:8fdf9a60065b | 2 | Copyright (c) 2018 ARM Limited |
kadonotakashi | 0:8fdf9a60065b | 3 | |
kadonotakashi | 0:8fdf9a60065b | 4 | Licensed under the Apache License, Version 2.0 (the "License"); |
kadonotakashi | 0:8fdf9a60065b | 5 | you may not use this file except in compliance with the License. |
kadonotakashi | 0:8fdf9a60065b | 6 | You may obtain a copy of the License at |
kadonotakashi | 0:8fdf9a60065b | 7 | |
kadonotakashi | 0:8fdf9a60065b | 8 | http://www.apache.org/licenses/LICENSE-2.0 |
kadonotakashi | 0:8fdf9a60065b | 9 | |
kadonotakashi | 0:8fdf9a60065b | 10 | Unless required by applicable law or agreed to in writing, software |
kadonotakashi | 0:8fdf9a60065b | 11 | distributed under the License is distributed on an "AS IS" BASIS, |
kadonotakashi | 0:8fdf9a60065b | 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
kadonotakashi | 0:8fdf9a60065b | 13 | See the License for the specific language governing permissions and |
kadonotakashi | 0:8fdf9a60065b | 14 | limitations under the License. |
kadonotakashi | 0:8fdf9a60065b | 15 | """ |
kadonotakashi | 0:8fdf9a60065b | 16 | import time |
kadonotakashi | 0:8fdf9a60065b | 17 | from mbed_host_tests import BaseHostTest |
kadonotakashi | 0:8fdf9a60065b | 18 | from mbed_host_tests.host_tests_runner.host_test_default import DefaultTestSelector |
kadonotakashi | 0:8fdf9a60065b | 19 | |
kadonotakashi | 0:8fdf9a60065b | 20 | DEFAULT_CYCLE_PERIOD = 1.0 |
kadonotakashi | 0:8fdf9a60065b | 21 | |
kadonotakashi | 0:8fdf9a60065b | 22 | MSG_VALUE_DUMMY = '0' |
kadonotakashi | 0:8fdf9a60065b | 23 | |
kadonotakashi | 0:8fdf9a60065b | 24 | MSG_KEY_DEVICE_READY = 'ready' |
kadonotakashi | 0:8fdf9a60065b | 25 | MSG_KEY_DEVICE_RESET = 'reset' |
kadonotakashi | 0:8fdf9a60065b | 26 | MSG_KEY_SYNC = '__sync' |
kadonotakashi | 0:8fdf9a60065b | 27 | |
kadonotakashi | 0:8fdf9a60065b | 28 | class SystemResetTest(BaseHostTest): |
kadonotakashi | 0:8fdf9a60065b | 29 | """Test for the system_reset API. |
kadonotakashi | 0:8fdf9a60065b | 30 | |
kadonotakashi | 0:8fdf9a60065b | 31 | Given a device running code |
kadonotakashi | 0:8fdf9a60065b | 32 | When the device is restarted using @a system_reset() |
kadonotakashi | 0:8fdf9a60065b | 33 | Then the device is restarted |
kadonotakashi | 0:8fdf9a60065b | 34 | """ |
kadonotakashi | 0:8fdf9a60065b | 35 | |
kadonotakashi | 0:8fdf9a60065b | 36 | def __init__(self): |
kadonotakashi | 0:8fdf9a60065b | 37 | super(SystemResetTest, self).__init__() |
kadonotakashi | 0:8fdf9a60065b | 38 | self.reset = False |
kadonotakashi | 0:8fdf9a60065b | 39 | self.test_steps_sequence = self.test_steps() |
kadonotakashi | 0:8fdf9a60065b | 40 | # Advance the coroutine to it's first yield statement. |
kadonotakashi | 0:8fdf9a60065b | 41 | self.test_steps_sequence.send(None) |
kadonotakashi | 0:8fdf9a60065b | 42 | |
kadonotakashi | 0:8fdf9a60065b | 43 | def setup(self): |
kadonotakashi | 0:8fdf9a60065b | 44 | self.register_callback(MSG_KEY_DEVICE_READY, self.cb_device_ready) |
kadonotakashi | 0:8fdf9a60065b | 45 | |
kadonotakashi | 0:8fdf9a60065b | 46 | def cb_device_ready(self, key, value, timestamp): |
kadonotakashi | 0:8fdf9a60065b | 47 | """Acknowledge device rebooted correctly and feed the test execution |
kadonotakashi | 0:8fdf9a60065b | 48 | """ |
kadonotakashi | 0:8fdf9a60065b | 49 | self.reset = True |
kadonotakashi | 0:8fdf9a60065b | 50 | |
kadonotakashi | 0:8fdf9a60065b | 51 | try: |
kadonotakashi | 0:8fdf9a60065b | 52 | if self.test_steps_sequence.send(value): |
kadonotakashi | 0:8fdf9a60065b | 53 | self.notify_complete(True) |
kadonotakashi | 0:8fdf9a60065b | 54 | except (StopIteration, RuntimeError) as exc: |
kadonotakashi | 0:8fdf9a60065b | 55 | self.notify_complete(False) |
kadonotakashi | 0:8fdf9a60065b | 56 | |
kadonotakashi | 0:8fdf9a60065b | 57 | def test_steps(self): |
kadonotakashi | 0:8fdf9a60065b | 58 | """Reset the device and check the status |
kadonotakashi | 0:8fdf9a60065b | 59 | """ |
kadonotakashi | 0:8fdf9a60065b | 60 | system_reset = yield |
kadonotakashi | 0:8fdf9a60065b | 61 | self.reset = False |
kadonotakashi | 0:8fdf9a60065b | 62 | |
kadonotakashi | 0:8fdf9a60065b | 63 | wait_after_reset = self.get_config_item('forced_reset_timeout') |
kadonotakashi | 0:8fdf9a60065b | 64 | wait_after_reset = wait_after_reset if wait_after_reset is not None else DEFAULT_CYCLE_PERIOD |
kadonotakashi | 0:8fdf9a60065b | 65 | |
kadonotakashi | 0:8fdf9a60065b | 66 | self.send_kv(MSG_KEY_DEVICE_RESET, MSG_VALUE_DUMMY) |
kadonotakashi | 0:8fdf9a60065b | 67 | time.sleep(wait_after_reset) |
kadonotakashi | 0:8fdf9a60065b | 68 | self.send_kv(MSG_KEY_SYNC, MSG_VALUE_DUMMY) |
kadonotakashi | 0:8fdf9a60065b | 69 | |
kadonotakashi | 0:8fdf9a60065b | 70 | system_reset = yield |
kadonotakashi | 0:8fdf9a60065b | 71 | if self.reset == False: |
kadonotakashi | 0:8fdf9a60065b | 72 | raise RuntimeError('Platform did not reset as expected.') |
kadonotakashi | 0:8fdf9a60065b | 73 | |
kadonotakashi | 0:8fdf9a60065b | 74 | # The sequence is correct -- test passed. |
kadonotakashi | 0:8fdf9a60065b | 75 | yield True |