Maxim Integrated / Mbed OS MAXREFDES155#

Dependencies:   MaximInterface

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?

UserRevisionLine numberNew 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 }