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
InitWindow.cpp@10:71359af61af8, 2017-04-10 (annotated)
- Committer:
- IanBenzMaxim
- Date:
- Mon Apr 10 11:55:33 2017 -0500
- Revision:
- 10:71359af61af8
- Parent:
- 8:a0d75dff3c9b
- Child:
- 11:989eabe2a376
Reduced copying and dynamic allocations during rendering. Added support for partial redrawing of a scene.
Who changed what in which revision?
| User | Revision | Line number | New 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 | 0:33d4e66780c0 | 107 | { |
| IanBenzMaxim | 0:33d4e66780c0 | 108 | Bitmap maximLogo(maximLogoWidth, maximLogoHeight, maximLogoData, Bitmap::ScanLineFormat); |
| IanBenzMaxim | 8:a0d75dff3c9b | 109 | Text title; |
| IanBenzMaxim | 8:a0d75dff3c9b | 110 | title.setText("MAXREFDES155#"); |
| IanBenzMaxim | 8:a0d75dff3c9b | 111 | title.resize(title.preferredWidth(), title.preferredHeight()); |
| IanBenzMaxim | 8:a0d75dff3c9b | 112 | title.move(0, maximLogo.height() + 5); |
| IanBenzMaxim | 8:a0d75dff3c9b | 113 | Text description; |
| IanBenzMaxim | 8:a0d75dff3c9b | 114 | description.setText(m_state == Completed ? "Any key to begin" : "Initializing..."); |
| IanBenzMaxim | 8:a0d75dff3c9b | 115 | description.resize(description.preferredWidth(), description.preferredHeight()); |
| IanBenzMaxim | 8:a0d75dff3c9b | 116 | description.move(0, title.y() + title.height() + 5); |
| IanBenzMaxim | 10:71359af61af8 | 117 | bitmap.overlay(maximLogo, xOffset + x(), yOffset + y()); |
| 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 | } |