Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: MaximInterface
src/InitWindow.cpp@17:5926077e5345, 2019-10-04 (annotated)
- Committer:
- IanBenzMaxim
- Date:
- Fri Oct 04 12:10:11 2019 -0500
- Revision:
- 17:5926077e5345
- Parent:
- 16:a004191a79ab
Set pin maps through the mbed configuration system. Added support for MAX32625MBED target. Updated mbed-os to version 5.7.7 for MAX32625 I2C fixes. Consolidated simplelink hook definitions.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| IanBenzMaxim | 0:33d4e66780c0 | 1 | /******************************************************************************* |
| IanBenzMaxim | 16:a004191a79ab | 2 | * Copyright (C) Maxim Integrated Products, Inc., All Rights Reserved. |
| IanBenzMaxim | 0:33d4e66780c0 | 3 | * |
| IanBenzMaxim | 0:33d4e66780c0 | 4 | * Permission is hereby granted, free of charge, to any person obtaining a |
| IanBenzMaxim | 0:33d4e66780c0 | 5 | * copy of this software and associated documentation files (the "Software"), |
| IanBenzMaxim | 0:33d4e66780c0 | 6 | * to deal in the Software without restriction, including without limitation |
| IanBenzMaxim | 0:33d4e66780c0 | 7 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, |
| IanBenzMaxim | 0:33d4e66780c0 | 8 | * and/or sell copies of the Software, and to permit persons to whom the |
| IanBenzMaxim | 0:33d4e66780c0 | 9 | * Software is furnished to do so, subject to the following conditions: |
| IanBenzMaxim | 0:33d4e66780c0 | 10 | * |
| IanBenzMaxim | 0:33d4e66780c0 | 11 | * The above copyright notice and this permission notice shall be included |
| IanBenzMaxim | 0:33d4e66780c0 | 12 | * in all copies or substantial portions of the Software. |
| IanBenzMaxim | 0:33d4e66780c0 | 13 | * |
| IanBenzMaxim | 0:33d4e66780c0 | 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
| IanBenzMaxim | 0:33d4e66780c0 | 15 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
| IanBenzMaxim | 0:33d4e66780c0 | 16 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
| IanBenzMaxim | 0:33d4e66780c0 | 17 | * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES |
| IanBenzMaxim | 0:33d4e66780c0 | 18 | * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, |
| IanBenzMaxim | 0:33d4e66780c0 | 19 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
| IanBenzMaxim | 0:33d4e66780c0 | 20 | * OTHER DEALINGS IN THE SOFTWARE. |
| IanBenzMaxim | 0:33d4e66780c0 | 21 | * |
| IanBenzMaxim | 0:33d4e66780c0 | 22 | * Except as contained in this notice, the name of Maxim Integrated |
| IanBenzMaxim | 0:33d4e66780c0 | 23 | * Products, Inc. shall not be used except as stated in the Maxim Integrated |
| IanBenzMaxim | 0:33d4e66780c0 | 24 | * Products, Inc. Branding Policy. |
| IanBenzMaxim | 0:33d4e66780c0 | 25 | * |
| IanBenzMaxim | 0:33d4e66780c0 | 26 | * The mere transfer of this software does not imply any licenses |
| IanBenzMaxim | 0:33d4e66780c0 | 27 | * of trade secrets, proprietary technology, copyrights, patents, |
| IanBenzMaxim | 0:33d4e66780c0 | 28 | * trademarks, maskwork rights, or any other form of intellectual |
| IanBenzMaxim | 0:33d4e66780c0 | 29 | * property whatsoever. Maxim Integrated Products, Inc. retains all |
| IanBenzMaxim | 0:33d4e66780c0 | 30 | * ownership rights. |
| IanBenzMaxim | 0:33d4e66780c0 | 31 | *******************************************************************************/ |
| IanBenzMaxim | 0:33d4e66780c0 | 32 | |
| IanBenzMaxim | 0:33d4e66780c0 | 33 | #include <string> |
| IanBenzMaxim | 16:a004191a79ab | 34 | #include <MaximInterfaceCore/HexString.hpp> |
| IanBenzMaxim | 16:a004191a79ab | 35 | #include <MaximInterfaceCore/RomId.hpp> |
| IanBenzMaxim | 16:a004191a79ab | 36 | #include <MaximInterfaceDevices/DS28C36_DS2476.hpp> |
| IanBenzMaxim | 16:a004191a79ab | 37 | #include <mbed-os/platform/mbed_wait_api.h> |
| IanBenzMaxim | 0:33d4e66780c0 | 38 | #include "Bitmap.hpp" |
| IanBenzMaxim | 16:a004191a79ab | 39 | #include "DisplayIdWindow.hpp" |
| IanBenzMaxim | 13:6a6225690c2e | 40 | #include "CC3100.hpp" |
| IanBenzMaxim | 13:6a6225690c2e | 41 | #include "ErrorWindow.hpp" |
| IanBenzMaxim | 16:a004191a79ab | 42 | #include "HardwareTestWindow.hpp" |
| IanBenzMaxim | 13:6a6225690c2e | 43 | #include "InitWindow.hpp" |
| IanBenzMaxim | 16:a004191a79ab | 44 | #include "MakeFunction.hpp" |
| IanBenzMaxim | 13:6a6225690c2e | 45 | #include "SensorNode.hpp" |
| IanBenzMaxim | 0:33d4e66780c0 | 46 | #include "Text.hpp" |
| IanBenzMaxim | 0:33d4e66780c0 | 47 | #include "WindowManager.hpp" |
| IanBenzMaxim | 0:33d4e66780c0 | 48 | |
| IanBenzMaxim | 16:a004191a79ab | 49 | using MaximInterfaceCore::Result; |
| IanBenzMaxim | 16:a004191a79ab | 50 | using MaximInterfaceDevices::DS2476; |
| IanBenzMaxim | 13:6a6225690c2e | 51 | |
| IanBenzMaxim | 0:33d4e66780c0 | 52 | extern DS2476 coproc; |
| IanBenzMaxim | 0:33d4e66780c0 | 53 | extern SensorNode sensorNode; |
| IanBenzMaxim | 0:33d4e66780c0 | 54 | extern std::string webId; |
| IanBenzMaxim | 0:33d4e66780c0 | 55 | |
| IanBenzMaxim | 8:a0d75dff3c9b | 56 | static const int maximLogoWidth = 128; |
| IanBenzMaxim | 8:a0d75dff3c9b | 57 | static const int maximLogoHeight = 39; |
| IanBenzMaxim | 0:33d4e66780c0 | 58 | static const uint8_t maximLogoData[] = { |
| IanBenzMaxim | 13:6a6225690c2e | 59 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 60 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 61 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xe0, |
| IanBenzMaxim | 13:6a6225690c2e | 62 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 63 | 0x00, 0x1f, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 64 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 65 | 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, |
| IanBenzMaxim | 13:6a6225690c2e | 66 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 67 | 0x01, 0xff, 0xff, 0xff, 0x00, 0x1b, 0x9c, 0x1f, 0x18, 0xcc, 0x6e, 0x70, |
| IanBenzMaxim | 13:6a6225690c2e | 68 | 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xfe, 0x3f, |
| IanBenzMaxim | 13:6a6225690c2e | 69 | 0x98, 0xcc, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, |
| IanBenzMaxim | 13:6a6225690c2e | 70 | 0xc0, 0x1c, 0xe6, 0x31, 0x8d, 0x8c, 0x73, 0x98, 0x00, 0x00, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 71 | 0x0f, 0xff, 0xff, 0xff, 0xe0, 0x18, 0xc6, 0x01, 0x8f, 0x8c, 0x63, 0x18, |
| IanBenzMaxim | 13:6a6225690c2e | 72 | 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0xfe, 0x03, 0xe0, 0x18, 0xc6, 0x1f, |
| IanBenzMaxim | 13:6a6225690c2e | 73 | 0x87, 0x0c, 0x63, 0x18, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x7c, 0x01, |
| IanBenzMaxim | 13:6a6225690c2e | 74 | 0xf0, 0x18, 0xc6, 0x39, 0x8f, 0x8c, 0x63, 0x18, 0x00, 0x00, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 75 | 0x1f, 0x00, 0x3c, 0x01, 0xf0, 0x18, 0xc6, 0x31, 0x8d, 0x8c, 0x63, 0x18, |
| IanBenzMaxim | 13:6a6225690c2e | 76 | 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x38, 0x01, 0xf8, 0x18, 0xc6, 0x3f, |
| IanBenzMaxim | 13:6a6225690c2e | 77 | 0x98, 0xcc, 0x63, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x04, 0x10, 0x41, |
| IanBenzMaxim | 13:6a6225690c2e | 78 | 0xf8, 0x18, 0xc6, 0x1d, 0x98, 0xcc, 0x63, 0x18, 0x00, 0x00, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 79 | 0x3f, 0x06, 0x30, 0xe1, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 80 | 0x00, 0x00, 0x00, 0x00, 0x7f, 0x06, 0x20, 0xe1, 0xfc, 0x00, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 81 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x07, 0x61, 0xe1, |
| IanBenzMaxim | 13:6a6225690c2e | 82 | 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, |
| IanBenzMaxim | 13:6a6225690c2e | 83 | 0x7f, 0x07, 0xc1, 0xe1, 0xfc, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 84 | 0x00, 0x00, 0x00, 0x18, 0x7f, 0x07, 0xc3, 0xe1, 0xfc, 0x18, 0x00, 0x18, |
| IanBenzMaxim | 13:6a6225690c2e | 85 | 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x18, 0x7f, 0x07, 0x83, 0xe1, |
| IanBenzMaxim | 13:6a6225690c2e | 86 | 0xfc, 0x00, 0x00, 0x18, 0x00, 0x00, 0x40, 0x00, 0x06, 0x00, 0x00, 0x18, |
| IanBenzMaxim | 13:6a6225690c2e | 87 | 0x7f, 0x07, 0x81, 0xe1, 0xfc, 0x18, 0xde, 0x3e, 0x1e, 0x0f, 0xcd, 0x8f, |
| IanBenzMaxim | 13:6a6225690c2e | 88 | 0x8f, 0x87, 0x81, 0xd8, 0x3f, 0x07, 0x01, 0xe1, 0xf8, 0x18, 0xff, 0x3e, |
| IanBenzMaxim | 13:6a6225690c2e | 89 | 0x3f, 0x1f, 0xcf, 0x9f, 0xcf, 0x8f, 0xc3, 0xf8, 0x3f, 0x07, 0x00, 0xe1, |
| IanBenzMaxim | 13:6a6225690c2e | 90 | 0xf8, 0x18, 0xe3, 0x18, 0x73, 0x99, 0x8e, 0x18, 0xc6, 0x1c, 0xe7, 0x38, |
| IanBenzMaxim | 13:6a6225690c2e | 91 | 0x3f, 0x06, 0x00, 0xe1, 0xf8, 0x18, 0xc3, 0x18, 0x61, 0x99, 0x8c, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 92 | 0xc6, 0x18, 0x66, 0x18, 0x1f, 0x06, 0x10, 0x61, 0xf0, 0x18, 0xc3, 0x18, |
| IanBenzMaxim | 13:6a6225690c2e | 93 | 0x7f, 0x9f, 0x8c, 0x0f, 0xc6, 0x1f, 0xe6, 0x18, 0x1f, 0x04, 0x38, 0x61, |
| IanBenzMaxim | 13:6a6225690c2e | 94 | 0xf0, 0x18, 0xc3, 0x18, 0x60, 0x0f, 0x0c, 0x1c, 0xc6, 0x18, 0x06, 0x18, |
| IanBenzMaxim | 13:6a6225690c2e | 95 | 0x1f, 0x04, 0x38, 0x21, 0xf0, 0x18, 0xc3, 0x18, 0x71, 0x98, 0x0c, 0x18, |
| IanBenzMaxim | 13:6a6225690c2e | 96 | 0xc6, 0x1c, 0x67, 0x38, 0x0f, 0xff, 0xff, 0xff, 0xe0, 0x18, 0xc3, 0x1e, |
| IanBenzMaxim | 13:6a6225690c2e | 97 | 0x3f, 0x9f, 0x8c, 0x1f, 0xc7, 0x8f, 0xe3, 0xf8, 0x07, 0xff, 0xff, 0xff, |
| IanBenzMaxim | 13:6a6225690c2e | 98 | 0xe0, 0x18, 0xc3, 0x0e, 0x1f, 0x3f, 0xcc, 0x0e, 0xc3, 0x87, 0xc1, 0xd8, |
| IanBenzMaxim | 13:6a6225690c2e | 99 | 0x07, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x30, 0xc0, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 100 | 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 101 | 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, |
| IanBenzMaxim | 13:6a6225690c2e | 102 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 103 | 0x00, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 104 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 105 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf0, |
| IanBenzMaxim | 13:6a6225690c2e | 106 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 107 | 0x00, 0x0f, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 108 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 109 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
| IanBenzMaxim | 13:6a6225690c2e | 110 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; |
| IanBenzMaxim | 0:33d4e66780c0 | 111 | |
| IanBenzMaxim | 16:a004191a79ab | 112 | InitWindow::InitWindow(Mode mode) |
| IanBenzMaxim | 16:a004191a79ab | 113 | : state((mode == InitMode) ? NotStarted : Completed) { |
| IanBenzMaxim | 16:a004191a79ab | 114 | startButton.setParent(this); |
| IanBenzMaxim | 16:a004191a79ab | 115 | startButton.setText("Start"); |
| IanBenzMaxim | 16:a004191a79ab | 116 | startButton.setClickedHandler( |
| IanBenzMaxim | 16:a004191a79ab | 117 | makeFunction(this, &InitWindow::startButtonClicked)); |
| IanBenzMaxim | 16:a004191a79ab | 118 | hardwareTestButton.setParent(this); |
| IanBenzMaxim | 16:a004191a79ab | 119 | hardwareTestButton.setText("Hardware test"); |
| IanBenzMaxim | 16:a004191a79ab | 120 | hardwareTestButton.setClickedHandler( |
| IanBenzMaxim | 16:a004191a79ab | 121 | makeFunction(this, &InitWindow::hardwareTestButtonClicked)); |
| IanBenzMaxim | 16:a004191a79ab | 122 | startButton.setFocused(); |
| IanBenzMaxim | 16:a004191a79ab | 123 | } |
| IanBenzMaxim | 16:a004191a79ab | 124 | |
| IanBenzMaxim | 16:a004191a79ab | 125 | void InitWindow::resized() { |
| IanBenzMaxim | 16:a004191a79ab | 126 | startButton.resize(startButton.preferredWidth(), |
| IanBenzMaxim | 16:a004191a79ab | 127 | startButton.preferredHeight()); |
| IanBenzMaxim | 16:a004191a79ab | 128 | startButton.move(0, height() - startButton.height()); |
| IanBenzMaxim | 16:a004191a79ab | 129 | hardwareTestButton.resize(hardwareTestButton.preferredWidth(), |
| IanBenzMaxim | 16:a004191a79ab | 130 | hardwareTestButton.preferredHeight()); |
| IanBenzMaxim | 16:a004191a79ab | 131 | hardwareTestButton.move(width() - hardwareTestButton.width(), |
| IanBenzMaxim | 16:a004191a79ab | 132 | height() - hardwareTestButton.height()); |
| IanBenzMaxim | 16:a004191a79ab | 133 | } |
| IanBenzMaxim | 0:33d4e66780c0 | 134 | |
| IanBenzMaxim | 13:6a6225690c2e | 135 | void InitWindow::doRender(Bitmap & bitmap, int xOffset, int yOffset) const { |
| IanBenzMaxim | 13:6a6225690c2e | 136 | bitmap.overlay(xOffset + x(), yOffset + y(), maximLogoData, |
| IanBenzMaxim | 13:6a6225690c2e | 137 | sizeof(maximLogoData) / sizeof(maximLogoData[0]), |
| IanBenzMaxim | 13:6a6225690c2e | 138 | maximLogoWidth); |
| IanBenzMaxim | 16:a004191a79ab | 139 | Text description; |
| IanBenzMaxim | 16:a004191a79ab | 140 | description.setText("MAXREFDES155#"); |
| IanBenzMaxim | 16:a004191a79ab | 141 | if (state == Completed) { |
| IanBenzMaxim | 16:a004191a79ab | 142 | startButton.render(bitmap, xOffset + x(), yOffset + y()); |
| IanBenzMaxim | 16:a004191a79ab | 143 | hardwareTestButton.render(bitmap, xOffset + x(), yOffset + y()); |
| IanBenzMaxim | 16:a004191a79ab | 144 | } else { |
| IanBenzMaxim | 16:a004191a79ab | 145 | description.setText(description.text() + "\nInitializing..."); |
| IanBenzMaxim | 16:a004191a79ab | 146 | description.setLineSpacing(3); |
| IanBenzMaxim | 16:a004191a79ab | 147 | } |
| IanBenzMaxim | 16:a004191a79ab | 148 | description.resize(description.preferredWidth(), |
| IanBenzMaxim | 16:a004191a79ab | 149 | description.preferredHeight()); |
| IanBenzMaxim | 16:a004191a79ab | 150 | description.move(0, maximLogoHeight + 2); |
| IanBenzMaxim | 13:6a6225690c2e | 151 | description.render(bitmap, xOffset + x(), yOffset + y()); |
| IanBenzMaxim | 0:33d4e66780c0 | 152 | } |
| IanBenzMaxim | 0:33d4e66780c0 | 153 | |
| IanBenzMaxim | 13:6a6225690c2e | 154 | void InitWindow::updated() { |
| IanBenzMaxim | 16:a004191a79ab | 155 | switch (state) { |
| IanBenzMaxim | 13:6a6225690c2e | 156 | case NotStarted: |
| IanBenzMaxim | 16:a004191a79ab | 157 | state = Running; |
| IanBenzMaxim | 13:6a6225690c2e | 158 | invalidate(); |
| IanBenzMaxim | 13:6a6225690c2e | 159 | break; |
| IanBenzMaxim | 13:6a6225690c2e | 160 | |
| IanBenzMaxim | 13:6a6225690c2e | 161 | case Running: { |
| IanBenzMaxim | 13:6a6225690c2e | 162 | // Enable coprocessor. |
| IanBenzMaxim | 16:a004191a79ab | 163 | if (!enableCoprocessor(coproc)) { |
| IanBenzMaxim | 16:a004191a79ab | 164 | if (windowManager()) { |
| IanBenzMaxim | 13:6a6225690c2e | 165 | std::auto_ptr<Window> window( |
| IanBenzMaxim | 13:6a6225690c2e | 166 | new ErrorWindow("Failed to enable coprocessor")); |
| IanBenzMaxim | 13:6a6225690c2e | 167 | windowManager()->push(window); |
| IanBenzMaxim | 13:6a6225690c2e | 168 | } |
| IanBenzMaxim | 13:6a6225690c2e | 169 | break; |
| IanBenzMaxim | 13:6a6225690c2e | 170 | } |
| IanBenzMaxim | 13:6a6225690c2e | 171 | |
| IanBenzMaxim | 13:6a6225690c2e | 172 | // Enable ROM ID. |
| IanBenzMaxim | 16:a004191a79ab | 173 | if (!enableRomId(coproc)) { |
| IanBenzMaxim | 16:a004191a79ab | 174 | if (windowManager()) { |
| IanBenzMaxim | 16:a004191a79ab | 175 | std::auto_ptr<Window> window( |
| IanBenzMaxim | 16:a004191a79ab | 176 | new ErrorWindow("Failed to enable ROM ID")); |
| IanBenzMaxim | 16:a004191a79ab | 177 | windowManager()->push(window); |
| IanBenzMaxim | 13:6a6225690c2e | 178 | } |
| IanBenzMaxim | 16:a004191a79ab | 179 | break; |
| IanBenzMaxim | 13:6a6225690c2e | 180 | } |
| IanBenzMaxim | 13:6a6225690c2e | 181 | |
| IanBenzMaxim | 13:6a6225690c2e | 182 | // Read ROM ID. |
| IanBenzMaxim | 16:a004191a79ab | 183 | if (Result<DS2476::Page::array> page = |
| IanBenzMaxim | 16:a004191a79ab | 184 | coproc.readMemory(DS2476::romOptionsPage)) { |
| IanBenzMaxim | 16:a004191a79ab | 185 | const MaximInterfaceCore::RomId::const_span romId = |
| IanBenzMaxim | 16:a004191a79ab | 186 | DS2476::RomOptions(page.value()).romId(); |
| IanBenzMaxim | 13:6a6225690c2e | 187 | if (!valid(romId)) { |
| IanBenzMaxim | 16:a004191a79ab | 188 | if (windowManager()) { |
| IanBenzMaxim | 13:6a6225690c2e | 189 | std::auto_ptr<Window> window(new ErrorWindow("ROM ID is not valid")); |
| IanBenzMaxim | 13:6a6225690c2e | 190 | windowManager()->push(window); |
| IanBenzMaxim | 13:6a6225690c2e | 191 | } |
| IanBenzMaxim | 13:6a6225690c2e | 192 | break; |
| IanBenzMaxim | 13:6a6225690c2e | 193 | } |
| IanBenzMaxim | 16:a004191a79ab | 194 | webId = MaximInterfaceCore::toHexString(romId); |
| IanBenzMaxim | 16:a004191a79ab | 195 | } else { |
| IanBenzMaxim | 16:a004191a79ab | 196 | if (windowManager()) { |
| IanBenzMaxim | 16:a004191a79ab | 197 | std::auto_ptr<Window> window(new ErrorWindow("Failed to read ROM ID")); |
| IanBenzMaxim | 16:a004191a79ab | 198 | windowManager()->push(window); |
| IanBenzMaxim | 13:6a6225690c2e | 199 | } |
| IanBenzMaxim | 16:a004191a79ab | 200 | break; |
| IanBenzMaxim | 0:33d4e66780c0 | 201 | } |
| IanBenzMaxim | 13:6a6225690c2e | 202 | |
| IanBenzMaxim | 13:6a6225690c2e | 203 | // Always start with laser disabled. |
| IanBenzMaxim | 13:6a6225690c2e | 204 | sensorNode.detect(); |
| IanBenzMaxim | 13:6a6225690c2e | 205 | sensorNode.setLaserEnabled(false); |
| IanBenzMaxim | 13:6a6225690c2e | 206 | |
| IanBenzMaxim | 16:a004191a79ab | 207 | if (CC3100::instance().start() != 0) { |
| IanBenzMaxim | 16:a004191a79ab | 208 | if (windowManager()) { |
| IanBenzMaxim | 13:6a6225690c2e | 209 | std::auto_ptr<Window> window( |
| IanBenzMaxim | 13:6a6225690c2e | 210 | new ErrorWindow("Failed to start WiFi interface")); |
| IanBenzMaxim | 13:6a6225690c2e | 211 | windowManager()->push(window); |
| IanBenzMaxim | 13:6a6225690c2e | 212 | } |
| IanBenzMaxim | 16:a004191a79ab | 213 | break; |
| IanBenzMaxim | 13:6a6225690c2e | 214 | } |
| IanBenzMaxim | 13:6a6225690c2e | 215 | wait_ms(1500); |
| IanBenzMaxim | 13:6a6225690c2e | 216 | invalidate(); |
| IanBenzMaxim | 16:a004191a79ab | 217 | state = Completed; |
| IanBenzMaxim | 13:6a6225690c2e | 218 | break; |
| IanBenzMaxim | 13:6a6225690c2e | 219 | } |
| IanBenzMaxim | 13:6a6225690c2e | 220 | |
| IanBenzMaxim | 13:6a6225690c2e | 221 | case Completed: |
| IanBenzMaxim | 13:6a6225690c2e | 222 | break; |
| IanBenzMaxim | 13:6a6225690c2e | 223 | } |
| IanBenzMaxim | 0:33d4e66780c0 | 224 | } |
| IanBenzMaxim | 0:33d4e66780c0 | 225 | |
| IanBenzMaxim | 16:a004191a79ab | 226 | bool InitWindow::doProcessKey(Key key) { |
| IanBenzMaxim | 16:a004191a79ab | 227 | bool handled = false; |
| IanBenzMaxim | 16:a004191a79ab | 228 | if (state == Completed) { |
| IanBenzMaxim | 16:a004191a79ab | 229 | switch (key) { |
| IanBenzMaxim | 16:a004191a79ab | 230 | case LeftKey: |
| IanBenzMaxim | 16:a004191a79ab | 231 | startButton.setFocused(); |
| IanBenzMaxim | 16:a004191a79ab | 232 | handled = true; |
| IanBenzMaxim | 16:a004191a79ab | 233 | break; |
| IanBenzMaxim | 16:a004191a79ab | 234 | |
| IanBenzMaxim | 16:a004191a79ab | 235 | case RightKey: |
| IanBenzMaxim | 16:a004191a79ab | 236 | hardwareTestButton.setFocused(); |
| IanBenzMaxim | 16:a004191a79ab | 237 | handled = true; |
| IanBenzMaxim | 16:a004191a79ab | 238 | break; |
| IanBenzMaxim | 16:a004191a79ab | 239 | |
| IanBenzMaxim | 16:a004191a79ab | 240 | default: |
| IanBenzMaxim | 16:a004191a79ab | 241 | break; |
| IanBenzMaxim | 0:33d4e66780c0 | 242 | } |
| IanBenzMaxim | 13:6a6225690c2e | 243 | } |
| IanBenzMaxim | 16:a004191a79ab | 244 | return handled; |
| IanBenzMaxim | 0:33d4e66780c0 | 245 | } |
| IanBenzMaxim | 16:a004191a79ab | 246 | |
| IanBenzMaxim | 16:a004191a79ab | 247 | void InitWindow::startButtonClicked(Button *) { |
| IanBenzMaxim | 16:a004191a79ab | 248 | if (windowManager()) { |
| IanBenzMaxim | 16:a004191a79ab | 249 | std::auto_ptr<Window> window( |
| IanBenzMaxim | 16:a004191a79ab | 250 | new DisplayIdWindow(DisplayIdWindow::PreConnectMode)); |
| IanBenzMaxim | 16:a004191a79ab | 251 | windowManager()->push(window); |
| IanBenzMaxim | 16:a004191a79ab | 252 | } |
| IanBenzMaxim | 16:a004191a79ab | 253 | } |
| IanBenzMaxim | 16:a004191a79ab | 254 | |
| IanBenzMaxim | 16:a004191a79ab | 255 | void InitWindow::hardwareTestButtonClicked(Button *) { |
| IanBenzMaxim | 16:a004191a79ab | 256 | if (windowManager()) { |
| IanBenzMaxim | 16:a004191a79ab | 257 | windowManager()->pop(); |
| IanBenzMaxim | 16:a004191a79ab | 258 | std::auto_ptr<Window> window(new HardwareTestWindow); |
| IanBenzMaxim | 16:a004191a79ab | 259 | windowManager()->push(window); |
| IanBenzMaxim | 16:a004191a79ab | 260 | } |
| IanBenzMaxim | 16:a004191a79ab | 261 | } |