Maxim Integrated / Mbed OS MAXREFDES155#

Dependencies:   MaximInterface

Committer:
IanBenzMaxim
Date:
Wed May 03 16:08:59 2017 -0500
Revision:
11:989eabe2a376
Parent:
10:71359af61af8
Child:
13:6a6225690c2e
Changed to always using scanline encoding for bitmaps.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
IanBenzMaxim 0:33d4e66780c0 1 /*******************************************************************************
IanBenzMaxim 0:33d4e66780c0 2 * Copyright (C) 2017 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 0:33d4e66780c0 34 #include <wait_api.h>
IanBenzMaxim 0:33d4e66780c0 35 #include "Bitmap.hpp"
IanBenzMaxim 0:33d4e66780c0 36 #include "Text.hpp"
IanBenzMaxim 0:33d4e66780c0 37 #include "WindowManager.hpp"
IanBenzMaxim 0:33d4e66780c0 38 #include "RomId.h"
IanBenzMaxim 0:33d4e66780c0 39 #include "CC3100.hpp"
IanBenzMaxim 0:33d4e66780c0 40 #include "DS2476.hpp"
IanBenzMaxim 0:33d4e66780c0 41 #include "SensorNode.hpp"
IanBenzMaxim 0:33d4e66780c0 42 #include "Factory.hpp"
IanBenzMaxim 0:33d4e66780c0 43 #include "ErrorWindow.hpp"
IanBenzMaxim 0:33d4e66780c0 44 #include "InitWindow.hpp"
IanBenzMaxim 0:33d4e66780c0 45 #include "HexConversions.hpp"
IanBenzMaxim 0:33d4e66780c0 46
IanBenzMaxim 0:33d4e66780c0 47 #ifdef HARDWARE_TEST
IanBenzMaxim 0:33d4e66780c0 48 #include "HardwareTestWindow.hpp"
IanBenzMaxim 0:33d4e66780c0 49 #else
IanBenzMaxim 0:33d4e66780c0 50 #include "DisplayIdWindow.hpp"
IanBenzMaxim 0:33d4e66780c0 51 #endif
IanBenzMaxim 0:33d4e66780c0 52
IanBenzMaxim 0:33d4e66780c0 53 extern DS2476 coproc;
IanBenzMaxim 0:33d4e66780c0 54 extern SensorNode sensorNode;
IanBenzMaxim 0:33d4e66780c0 55 extern std::string webId;
IanBenzMaxim 0:33d4e66780c0 56
IanBenzMaxim 8:a0d75dff3c9b 57 static const int maximLogoWidth = 128;
IanBenzMaxim 8:a0d75dff3c9b 58 static const int maximLogoHeight = 39;
IanBenzMaxim 0:33d4e66780c0 59 static const uint8_t maximLogoData[] = {
IanBenzMaxim 0:33d4e66780c0 60 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 61 ,0x00,0x01,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 62 ,0x00,0x0f,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 63 ,0x00,0x1f,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 64 ,0x00,0x7f,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 65 ,0x00,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 66 ,0x01,0xff,0xff,0xff,0x00,0x1b,0x9c,0x1f,0x18,0xcc,0x6e,0x70,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 67 ,0x03,0xff,0xff,0xff,0x80,0x1f,0xfe,0x3f,0x98,0xcc,0x7f,0xf8,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 68 ,0x07,0xff,0xff,0xff,0xc0,0x1c,0xe6,0x31,0x8d,0x8c,0x73,0x98,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 69 ,0x0f,0xff,0xff,0xff,0xe0,0x18,0xc6,0x01,0x8f,0x8c,0x63,0x18,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 70 ,0x0f,0x80,0xfe,0x03,0xe0,0x18,0xc6,0x1f,0x87,0x0c,0x63,0x18,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 71 ,0x1f,0x00,0x7c,0x01,0xf0,0x18,0xc6,0x39,0x8f,0x8c,0x63,0x18,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 72 ,0x1f,0x00,0x3c,0x01,0xf0,0x18,0xc6,0x31,0x8d,0x8c,0x63,0x18,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 73 ,0x3f,0x00,0x38,0x01,0xf8,0x18,0xc6,0x3f,0x98,0xcc,0x63,0x18,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 74 ,0x3f,0x04,0x10,0x41,0xf8,0x18,0xc6,0x1d,0x98,0xcc,0x63,0x18,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 75 ,0x3f,0x06,0x30,0xe1,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 76 ,0x7f,0x06,0x20,0xe1,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 77 ,0x7f,0x07,0x61,0xe1,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18
IanBenzMaxim 0:33d4e66780c0 78 ,0x7f,0x07,0xc1,0xe1,0xfc,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18
IanBenzMaxim 0:33d4e66780c0 79 ,0x7f,0x07,0xc3,0xe1,0xfc,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x18
IanBenzMaxim 0:33d4e66780c0 80 ,0x7f,0x07,0x83,0xe1,0xfc,0x00,0x00,0x18,0x00,0x00,0x40,0x00,0x06,0x00,0x00,0x18
IanBenzMaxim 0:33d4e66780c0 81 ,0x7f,0x07,0x81,0xe1,0xfc,0x18,0xde,0x3e,0x1e,0x0f,0xcd,0x8f,0x8f,0x87,0x81,0xd8
IanBenzMaxim 0:33d4e66780c0 82 ,0x3f,0x07,0x01,0xe1,0xf8,0x18,0xff,0x3e,0x3f,0x1f,0xcf,0x9f,0xcf,0x8f,0xc3,0xf8
IanBenzMaxim 0:33d4e66780c0 83 ,0x3f,0x07,0x00,0xe1,0xf8,0x18,0xe3,0x18,0x73,0x99,0x8e,0x18,0xc6,0x1c,0xe7,0x38
IanBenzMaxim 0:33d4e66780c0 84 ,0x3f,0x06,0x00,0xe1,0xf8,0x18,0xc3,0x18,0x61,0x99,0x8c,0x00,0xc6,0x18,0x66,0x18
IanBenzMaxim 0:33d4e66780c0 85 ,0x1f,0x06,0x10,0x61,0xf0,0x18,0xc3,0x18,0x7f,0x9f,0x8c,0x0f,0xc6,0x1f,0xe6,0x18
IanBenzMaxim 0:33d4e66780c0 86 ,0x1f,0x04,0x38,0x61,0xf0,0x18,0xc3,0x18,0x60,0x0f,0x0c,0x1c,0xc6,0x18,0x06,0x18
IanBenzMaxim 0:33d4e66780c0 87 ,0x1f,0x04,0x38,0x21,0xf0,0x18,0xc3,0x18,0x71,0x98,0x0c,0x18,0xc6,0x1c,0x67,0x38
IanBenzMaxim 0:33d4e66780c0 88 ,0x0f,0xff,0xff,0xff,0xe0,0x18,0xc3,0x1e,0x3f,0x9f,0x8c,0x1f,0xc7,0x8f,0xe3,0xf8
IanBenzMaxim 0:33d4e66780c0 89 ,0x07,0xff,0xff,0xff,0xe0,0x18,0xc3,0x0e,0x1f,0x3f,0xcc,0x0e,0xc3,0x87,0xc1,0xd8
IanBenzMaxim 0:33d4e66780c0 90 ,0x07,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x30,0xc0,0x00,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 91 ,0x03,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x3f,0xc0,0x00,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 92 ,0x01,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 93 ,0x00,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 94 ,0x00,0x3f,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 95 ,0x00,0x1f,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 96 ,0x00,0x0f,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 97 ,0x00,0x01,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 98 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
IanBenzMaxim 0:33d4e66780c0 99 };
IanBenzMaxim 0:33d4e66780c0 100
IanBenzMaxim 8:a0d75dff3c9b 101 InitWindow::InitWindow() : m_state(NotStarted)
IanBenzMaxim 0:33d4e66780c0 102 {
IanBenzMaxim 0:33d4e66780c0 103 setFocused();
IanBenzMaxim 0:33d4e66780c0 104 }
IanBenzMaxim 0:33d4e66780c0 105
IanBenzMaxim 10:71359af61af8 106 void InitWindow::doRender(Bitmap & bitmap, int xOffset, int yOffset) const
IanBenzMaxim 11:989eabe2a376 107 {
IanBenzMaxim 8:a0d75dff3c9b 108 Text title;
IanBenzMaxim 8:a0d75dff3c9b 109 title.setText("MAXREFDES155#");
IanBenzMaxim 8:a0d75dff3c9b 110 title.resize(title.preferredWidth(), title.preferredHeight());
IanBenzMaxim 11:989eabe2a376 111 title.move(0, maximLogoHeight + 5);
IanBenzMaxim 8:a0d75dff3c9b 112 Text description;
IanBenzMaxim 8:a0d75dff3c9b 113 description.setText(m_state == Completed ? "Any key to begin" : "Initializing...");
IanBenzMaxim 8:a0d75dff3c9b 114 description.resize(description.preferredWidth(), description.preferredHeight());
IanBenzMaxim 8:a0d75dff3c9b 115 description.move(0, title.y() + title.height() + 5);
IanBenzMaxim 11:989eabe2a376 116 bitmap.overlay(xOffset + x(), yOffset + y(),
IanBenzMaxim 11:989eabe2a376 117 maximLogoData, sizeof(maximLogoData) / sizeof(maximLogoData[0]), maximLogoWidth);
IanBenzMaxim 10:71359af61af8 118 title.render(bitmap, xOffset + x(), yOffset + y());
IanBenzMaxim 10:71359af61af8 119 description.render(bitmap, xOffset + x(), yOffset + y());
IanBenzMaxim 0:33d4e66780c0 120 }
IanBenzMaxim 0:33d4e66780c0 121
IanBenzMaxim 8:a0d75dff3c9b 122 void InitWindow::updated()
IanBenzMaxim 0:33d4e66780c0 123 {
IanBenzMaxim 0:33d4e66780c0 124 switch (m_state)
IanBenzMaxim 0:33d4e66780c0 125 {
IanBenzMaxim 0:33d4e66780c0 126 case NotStarted:
IanBenzMaxim 0:33d4e66780c0 127 m_state = Running;
IanBenzMaxim 8:a0d75dff3c9b 128 invalidate();
IanBenzMaxim 0:33d4e66780c0 129 break;
IanBenzMaxim 0:33d4e66780c0 130
IanBenzMaxim 0:33d4e66780c0 131 case Running:
IanBenzMaxim 0:33d4e66780c0 132 {
IanBenzMaxim 0:33d4e66780c0 133 {
IanBenzMaxim 0:33d4e66780c0 134 DS2476::Page page;
IanBenzMaxim 0:33d4e66780c0 135
IanBenzMaxim 0:33d4e66780c0 136 // Enable coprocessor.
IanBenzMaxim 0:33d4e66780c0 137 DS2476::CmdResult result = coproc.readMemory(DS2476::GpioControl, page);
IanBenzMaxim 0:33d4e66780c0 138 if (result == DS2476::Success)
IanBenzMaxim 0:33d4e66780c0 139 {
IanBenzMaxim 0:33d4e66780c0 140 page[0] = 0xAA;
IanBenzMaxim 0:33d4e66780c0 141 result = coproc.writeMemory(DS2476::GpioControl, page);
IanBenzMaxim 0:33d4e66780c0 142 }
IanBenzMaxim 0:33d4e66780c0 143 if (result != DS2476::Success)
IanBenzMaxim 0:33d4e66780c0 144 {
IanBenzMaxim 0:33d4e66780c0 145 if (windowManager() != NULL)
IanBenzMaxim 0:33d4e66780c0 146 {
IanBenzMaxim 0:33d4e66780c0 147 windowManager()->pop();
IanBenzMaxim 7:66c5dedc750b 148 std::auto_ptr<Window> window(new ErrorWindow("Failed to enable coprocessor"));
IanBenzMaxim 7:66c5dedc750b 149 windowManager()->push(window);
IanBenzMaxim 0:33d4e66780c0 150 }
IanBenzMaxim 0:33d4e66780c0 151 break;
IanBenzMaxim 0:33d4e66780c0 152 }
IanBenzMaxim 0:33d4e66780c0 153
IanBenzMaxim 0:33d4e66780c0 154 // Enable ROM ID.
IanBenzMaxim 0:33d4e66780c0 155 result = coproc.readMemory(DS2476::RomOptions, page);
IanBenzMaxim 0:33d4e66780c0 156 if (result == DS2476::Success)
IanBenzMaxim 0:33d4e66780c0 157 {
IanBenzMaxim 0:33d4e66780c0 158 page[0] = 0xAA;
IanBenzMaxim 0:33d4e66780c0 159 result = coproc.writeMemory(DS2476::RomOptions, page);
IanBenzMaxim 0:33d4e66780c0 160 }
IanBenzMaxim 0:33d4e66780c0 161 if (result != DS2476::Success)
IanBenzMaxim 0:33d4e66780c0 162 {
IanBenzMaxim 0:33d4e66780c0 163 if (windowManager() != NULL)
IanBenzMaxim 0:33d4e66780c0 164 {
IanBenzMaxim 0:33d4e66780c0 165 windowManager()->pop();
IanBenzMaxim 7:66c5dedc750b 166 std::auto_ptr<Window> window(new ErrorWindow("Failed to enable ROM ID"));
IanBenzMaxim 7:66c5dedc750b 167 windowManager()->push(window);
IanBenzMaxim 0:33d4e66780c0 168 }
IanBenzMaxim 0:33d4e66780c0 169 break;
IanBenzMaxim 0:33d4e66780c0 170 }
IanBenzMaxim 0:33d4e66780c0 171 }
IanBenzMaxim 0:33d4e66780c0 172
IanBenzMaxim 0:33d4e66780c0 173 // Read ROM ID.
IanBenzMaxim 0:33d4e66780c0 174 {
IanBenzMaxim 0:33d4e66780c0 175 OneWire::RomId romId;
IanBenzMaxim 0:33d4e66780c0 176 DS2476::CmdResult result = DS2476::readRomId(coproc, romId);
IanBenzMaxim 0:33d4e66780c0 177 if (result != DS2476::Success)
IanBenzMaxim 0:33d4e66780c0 178 {
IanBenzMaxim 0:33d4e66780c0 179 if (windowManager() != NULL)
IanBenzMaxim 0:33d4e66780c0 180 {
IanBenzMaxim 0:33d4e66780c0 181 windowManager()->pop();
IanBenzMaxim 7:66c5dedc750b 182 std::auto_ptr<Window> window(new ErrorWindow("Failed to read ROM ID"));
IanBenzMaxim 7:66c5dedc750b 183 windowManager()->push(window);
IanBenzMaxim 0:33d4e66780c0 184 }
IanBenzMaxim 0:33d4e66780c0 185 break;
IanBenzMaxim 0:33d4e66780c0 186 }
IanBenzMaxim 0:33d4e66780c0 187 if (!romId.valid())
IanBenzMaxim 0:33d4e66780c0 188 {
IanBenzMaxim 0:33d4e66780c0 189 if (windowManager() != NULL)
IanBenzMaxim 0:33d4e66780c0 190 {
IanBenzMaxim 0:33d4e66780c0 191 windowManager()->pop();
IanBenzMaxim 7:66c5dedc750b 192 std::auto_ptr<Window> window(new ErrorWindow("ROM ID is not valid"));
IanBenzMaxim 7:66c5dedc750b 193 windowManager()->push(window);
IanBenzMaxim 0:33d4e66780c0 194 }
IanBenzMaxim 0:33d4e66780c0 195 break;
IanBenzMaxim 0:33d4e66780c0 196 }
IanBenzMaxim 0:33d4e66780c0 197 webId = byteArrayToHexString(romId.buffer.data(), romId.buffer.size());
IanBenzMaxim 0:33d4e66780c0 198 }
IanBenzMaxim 0:33d4e66780c0 199
IanBenzMaxim 0:33d4e66780c0 200 // Provision DS2476 if necessary.
IanBenzMaxim 0:33d4e66780c0 201 {
IanBenzMaxim 0:33d4e66780c0 202 bool provisioned;
IanBenzMaxim 0:33d4e66780c0 203 bool result = checkCoprocessorProvisioned(coproc, provisioned);
IanBenzMaxim 0:33d4e66780c0 204 if (!result)
IanBenzMaxim 0:33d4e66780c0 205 {
IanBenzMaxim 0:33d4e66780c0 206 if (windowManager() != NULL)
IanBenzMaxim 0:33d4e66780c0 207 {
IanBenzMaxim 0:33d4e66780c0 208 windowManager()->pop();
IanBenzMaxim 7:66c5dedc750b 209 std::auto_ptr<Window> window(new ErrorWindow("Failed to check coprocessor provisioned"));
IanBenzMaxim 7:66c5dedc750b 210 windowManager()->push(window);
IanBenzMaxim 0:33d4e66780c0 211 }
IanBenzMaxim 0:33d4e66780c0 212 break;
IanBenzMaxim 0:33d4e66780c0 213 }
IanBenzMaxim 0:33d4e66780c0 214 if (!provisioned)
IanBenzMaxim 0:33d4e66780c0 215 {
IanBenzMaxim 0:33d4e66780c0 216 bool provisionResult = provisionCoprocessor(coproc);
IanBenzMaxim 0:33d4e66780c0 217 if (!provisionResult)
IanBenzMaxim 0:33d4e66780c0 218 {
IanBenzMaxim 0:33d4e66780c0 219 if (windowManager() != NULL)
IanBenzMaxim 0:33d4e66780c0 220 {
IanBenzMaxim 0:33d4e66780c0 221 windowManager()->pop();
IanBenzMaxim 7:66c5dedc750b 222 std::auto_ptr<Window> window(new ErrorWindow("Failed to provision coprocessor"));
IanBenzMaxim 7:66c5dedc750b 223 windowManager()->push(window);
IanBenzMaxim 0:33d4e66780c0 224 }
IanBenzMaxim 0:33d4e66780c0 225 break;
IanBenzMaxim 0:33d4e66780c0 226 }
IanBenzMaxim 0:33d4e66780c0 227 }
IanBenzMaxim 0:33d4e66780c0 228 }
IanBenzMaxim 0:33d4e66780c0 229
IanBenzMaxim 0:33d4e66780c0 230 // Always start with laser disabled.
IanBenzMaxim 0:33d4e66780c0 231 sensorNode.setLaserEnabled(false);
IanBenzMaxim 0:33d4e66780c0 232
IanBenzMaxim 0:33d4e66780c0 233 int result = CC3100::instance().start();
IanBenzMaxim 0:33d4e66780c0 234 if (result != 0)
IanBenzMaxim 0:33d4e66780c0 235 {
IanBenzMaxim 0:33d4e66780c0 236 if (windowManager() != NULL)
IanBenzMaxim 0:33d4e66780c0 237 {
IanBenzMaxim 0:33d4e66780c0 238 windowManager()->pop();
IanBenzMaxim 7:66c5dedc750b 239 std::auto_ptr<Window> window(new ErrorWindow("Failed to start WiFi interface"));
IanBenzMaxim 7:66c5dedc750b 240 windowManager()->push(window);
IanBenzMaxim 0:33d4e66780c0 241 }
IanBenzMaxim 0:33d4e66780c0 242 }
IanBenzMaxim 0:33d4e66780c0 243 wait_ms(1500);
IanBenzMaxim 0:33d4e66780c0 244 }
IanBenzMaxim 0:33d4e66780c0 245
IanBenzMaxim 0:33d4e66780c0 246 m_state = Completed;
IanBenzMaxim 8:a0d75dff3c9b 247 invalidate();
IanBenzMaxim 0:33d4e66780c0 248 break;
IanBenzMaxim 3:d2799d8497c0 249
IanBenzMaxim 3:d2799d8497c0 250 case Completed:
IanBenzMaxim 3:d2799d8497c0 251 break;
IanBenzMaxim 0:33d4e66780c0 252 }
IanBenzMaxim 0:33d4e66780c0 253 }
IanBenzMaxim 0:33d4e66780c0 254
IanBenzMaxim 0:33d4e66780c0 255 bool InitWindow::doProcessKey(Key)
IanBenzMaxim 0:33d4e66780c0 256 {
IanBenzMaxim 0:33d4e66780c0 257 if (m_state == Completed)
IanBenzMaxim 0:33d4e66780c0 258 {
IanBenzMaxim 0:33d4e66780c0 259 if (windowManager() != NULL)
IanBenzMaxim 0:33d4e66780c0 260 {
IanBenzMaxim 0:33d4e66780c0 261 windowManager()->pop();
IanBenzMaxim 0:33d4e66780c0 262 #ifdef HARDWARE_TEST
IanBenzMaxim 7:66c5dedc750b 263 std::auto_ptr<Window> window(new HardwareTestWindow);
IanBenzMaxim 0:33d4e66780c0 264 #else
IanBenzMaxim 7:66c5dedc750b 265 std::auto_ptr<Window> window(new DisplayIdWindow(DisplayIdWindow::PreConnectMode));
IanBenzMaxim 0:33d4e66780c0 266 #endif
IanBenzMaxim 7:66c5dedc750b 267 windowManager()->push(window);
IanBenzMaxim 0:33d4e66780c0 268 }
IanBenzMaxim 0:33d4e66780c0 269 }
IanBenzMaxim 0:33d4e66780c0 270 return true;
IanBenzMaxim 0:33d4e66780c0 271 }