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.
StatusIndicator.h@6:02df5c1108f1, 2020-04-09 (annotated)
- Committer:
- kabukistarship
- Date:
- Thu Apr 09 22:40:13 2020 +0000
- Revision:
- 6:02df5c1108f1
- Parent:
- LEDStatus.h@2:aa9a1377aa0d
Renamed StatusLED to StatusIndicator.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kabukistarship | 2:aa9a1377aa0d | 1 | /* mbedBug @version 0.x |
kabukistarship | 2:aa9a1377aa0d | 2 | @link https://github.com/KabukiStarship/mbedBug.git |
kabukistarship | 6:02df5c1108f1 | 3 | @file /StatusIndicator.h |
kabukistarship | 2:aa9a1377aa0d | 4 | @author Cale McCollough <https://cale-mccollough.github.io> |
kabukistarship | 2:aa9a1377aa0d | 5 | @license Copyright 2016-20 (C) Kabuki Starship <kabukistarship.com>; all rights |
kabukistarship | 2:aa9a1377aa0d | 6 | reserved (R). This Source Code Form is subject to the terms of the Mozilla |
kabukistarship | 2:aa9a1377aa0d | 7 | Public License, v. 2.0. If a copy of the MPL was not distributed with this file, |
kabukistarship | 2:aa9a1377aa0d | 8 | You can obtain one at <https://mozilla.org/MPL/2.0/>. */ |
kabukistarship | 2:aa9a1377aa0d | 9 | #ifndef _mbedBug_StatusLED_header |
kabukistarship | 2:aa9a1377aa0d | 10 | #define _mbedBug_StatusLED_header |
kabukistarship | 2:aa9a1377aa0d | 11 | #define _Debug 0 //< Use this flag to turn this library into a debug example program. @see mbedBug.cpp:int main () |
kabukistarship | 6:02df5c1108f1 | 12 | #include <mbedBug.h> |
kabukistarship | 2:aa9a1377aa0d | 13 | #define _CreateStatusLED \ |
kabukistarship | 6:02df5c1108f1 | 14 | static StatusIndicator<0,1> Status (GREEN_LED);\ |
kabukistarship | 2:aa9a1377aa0d | 15 | |
kabukistarship | 6:02df5c1108f1 | 16 | #define Assert(Statement, Message) {\ |
kabukistarship | 6:02df5c1108f1 | 17 | if (!(Statement)) {\ |
kabukistarship | 6:02df5c1108f1 | 18 | printf("Assert: %s\r\n%s, line %d\r\n", #Message, __FILE__, __LINE__)\ |
kabukistarship | 6:02df5c1108f1 | 19 | Status.HandleAssert ()\ |
kabukistarship | 6:02df5c1108f1 | 20 | while (true)\ |
kabukistarship | 6:02df5c1108f1 | 21 | }\ |
kabukistarship | 2:aa9a1377aa0d | 22 | } |
kabukistarship | 2:aa9a1377aa0d | 23 | |
kabukistarship | 2:aa9a1377aa0d | 24 | namespace mbedBug { |
kabukistarship | 2:aa9a1377aa0d | 25 | |
kabukistarship | 6:02df5c1108f1 | 26 | /* Outputs the firmware Status using an LED/buzzer/etc. |
kabukistarship | 2:aa9a1377aa0d | 27 | This class works by using strings with ASCII Mores Code. Each char in a |
kabukistarship | 2:aa9a1377aa0d | 28 | represents a pulse split into 4 lengths. |
kabukistarship | 2:aa9a1377aa0d | 29 | |
kabukistarship | 2:aa9a1377aa0d | 30 | | Frame | ASCII | Index | Duty Cycle | |
kabukistarship | 2:aa9a1377aa0d | 31 | |:-----:|:-----:|:-----:|:----------:| |
kabukistarship | 2:aa9a1377aa0d | 32 | | Off | ' ' | <= 44 | 0% | |
kabukistarship | 2:aa9a1377aa0d | 33 | | Long | '-' | 45 | 1/3 | |
kabukistarship | 2:aa9a1377aa0d | 34 | | Short | '.' | 46 | 1/3 | |
kabukistarship | 2:aa9a1377aa0d | 35 | | On | '_' | >= 47 | 100% | |
kabukistarship | 2:aa9a1377aa0d | 36 | |
kabukistarship | 2:aa9a1377aa0d | 37 | Off could be any value less than 44, and On could be any value greater than |
kabukistarship | 2:aa9a1377aa0d | 38 | 47, but ASCII space (' ') and Period ('.') are used by convention because |
kabukistarship | 2:aa9a1377aa0d | 39 | they look like the pulse widths. |
kabukistarship | 2:aa9a1377aa0d | 40 | |
kabukistarship | 2:aa9a1377aa0d | 41 | ## Terminology |
kabukistarship | 2:aa9a1377aa0d | 42 | * Frame - Each character in a char Sequence represents 3 timer interrupts. |
kabukistarship | 2:aa9a1377aa0d | 43 | * Pattern - A null-terminated string of frames. |
kabukistarship | 2:aa9a1377aa0d | 44 | * Sequence - A null-terminated string of const char*. |
kabukistarship | 2:aa9a1377aa0d | 45 | |
kabukistarship | 2:aa9a1377aa0d | 46 | @code |
kabukistarship | 6:02df5c1108f1 | 47 | StatusIndicator<0, 1> stausLED (); //< Use <0, 1> if you're LED is active low. |
kabukistarship | 6:02df5c1108f1 | 48 | StatusIndicator<1, 0> stausLED (LED_2); //< Use <0, 1> if you're LED is active high. |
kabukistarship | 2:aa9a1377aa0d | 49 | |
kabukistarship | 2:aa9a1377aa0d | 50 | const char* ExamplePattern[] = { |
kabukistarship | 2:aa9a1377aa0d | 51 | "... ", //< Blinks fast three times in a row. |
kabukistarship | 2:aa9a1377aa0d | 52 | "...---... ", //< SOS in Mores Code. |
kabukistarship | 2:aa9a1377aa0d | 53 | "____ ", //< Slowly blinks on and off. |
kabukistarship | 2:aa9a1377aa0d | 54 | 0 //< Must have null-termination pointer. |
kabukistarship | 2:aa9a1377aa0d | 55 | }; |
kabukistarship | 2:aa9a1377aa0d | 56 | |
kabukistarship | 2:aa9a1377aa0d | 57 | statusLED.SetPattern (exapmlePattern, 1.5f); |
kabukistarship | 2:aa9a1377aa0d | 58 | |
kabukistarship | 2:aa9a1377aa0d | 59 | @endcode |
kabukistarship | 2:aa9a1377aa0d | 60 | */ |
kabukistarship | 2:aa9a1377aa0d | 61 | template <int On, int Off> |
kabukistarship | 6:02df5c1108f1 | 62 | class StatusIndicator { |
kabukistarship | 2:aa9a1377aa0d | 63 | public: |
kabukistarship | 2:aa9a1377aa0d | 64 | |
kabukistarship | 6:02df5c1108f1 | 65 | char Count, //< Counter counts from from 1-3. |
kabukistarship | 6:02df5c1108f1 | 66 | Period; //< The current Period char. |
kabukistarship | 2:aa9a1377aa0d | 67 | |
kabukistarship | 6:02df5c1108f1 | 68 | float Frequency; //< The Period length |
kabukistarship | 6:02df5c1108f1 | 69 | |
kabukistarship | 6:02df5c1108f1 | 70 | const char** Sequence; //< Null-terminated string of pointers. |
kabukistarship | 6:02df5c1108f1 | 71 | |
kabukistarship | 6:02df5c1108f1 | 72 | const char* Pattern, //< The current string in the Sequence. |
kabukistarship | 6:02df5c1108f1 | 73 | * Cursor; //< The current char in the current string. |
kabukistarship | 2:aa9a1377aa0d | 74 | |
kabukistarship | 6:02df5c1108f1 | 75 | DigitalOut Pin; //< Red LED on the mbed board. |
kabukistarship | 6:02df5c1108f1 | 76 | |
kabukistarship | 6:02df5c1108f1 | 77 | Ticker Blinker; //< Ticker for blinking the LEDs. |
kabukistarship | 2:aa9a1377aa0d | 78 | |
kabukistarship | 6:02df5c1108f1 | 79 | static const float FrequencyDefault = 0.5f, //< Default Frequency in hertz. |
kabukistarship | 6:02df5c1108f1 | 80 | FrequencyMin = 0.01f, //< Min Frequency in hertz. |
kabukistarship | 6:02df5c1108f1 | 81 | FrequencyMax = 2.0f; //< Max Frequency in hertz. |
kabukistarship | 2:aa9a1377aa0d | 82 | |
kabukistarship | 2:aa9a1377aa0d | 83 | typedef enum { |
kabukistarship | 6:02df5c1108f1 | 84 | Off = 0, |
kabukistarship | 6:02df5c1108f1 | 85 | Short = 63, |
kabukistarship | 6:02df5c1108f1 | 86 | Long = 127, |
kabukistarship | 6:02df5c1108f1 | 87 | On = 255 |
kabukistarship | 2:aa9a1377aa0d | 88 | } Pulse; |
kabukistarship | 2:aa9a1377aa0d | 89 | |
kabukistarship | 2:aa9a1377aa0d | 90 | /* Simple constructor. */ |
kabukistarship | 6:02df5c1108f1 | 91 | StatusIndicator (PinName LEDPin = LED1, float Frequency = FrequencyDefault): |
kabukistarship | 6:02df5c1108f1 | 92 | Count (0), |
kabukistarship | 6:02df5c1108f1 | 93 | Period (0), |
kabukistarship | 6:02df5c1108f1 | 94 | Sequence (0), |
kabukistarship | 6:02df5c1108f1 | 95 | Pattern (0), |
kabukistarship | 6:02df5c1108f1 | 96 | Cursor (0), |
kabukistarship | 6:02df5c1108f1 | 97 | Frequency (Frequency), |
kabukistarship | 6:02df5c1108f1 | 98 | Pin (LEDPin, Off) { |
kabukistarship | 6:02df5c1108f1 | 99 | /// Nothing to do here. |
kabukistarship | 2:aa9a1377aa0d | 100 | } |
kabukistarship | 2:aa9a1377aa0d | 101 | |
kabukistarship | 2:aa9a1377aa0d | 102 | /* Sets the light blinking Sequence. */ |
kabukistarship | 2:aa9a1377aa0d | 103 | void SetSequence (char** SequenceNew) { |
kabukistarship | 6:02df5c1108f1 | 104 | if (!SequenceNew) { |
kabukistarship | 6:02df5c1108f1 | 105 | Sequence = 0; |
kabukistarship | 6:02df5c1108f1 | 106 | StopBlinking (); |
kabukistarship | 6:02df5c1108f1 | 107 | return; |
kabukistarship | 6:02df5c1108f1 | 108 | } |
kabukistarship | 2:aa9a1377aa0d | 109 | |
kabukistarship | 6:02df5c1108f1 | 110 | const char* TempString = Sequence[0]; |
kabukistarship | 2:aa9a1377aa0d | 111 | |
kabukistarship | 6:02df5c1108f1 | 112 | if (TempString == 0 || TempString[0] == 0) { |
kabukistarship | 6:02df5c1108f1 | 113 | DPrintf("\r\n\nError: First Sequence and first char can't be null." |
kabukistarship | 6:02df5c1108f1 | 114 | "\r\n\n"); |
kabukistarship | 6:02df5c1108f1 | 115 | return; |
kabukistarship | 6:02df5c1108f1 | 116 | } |
kabukistarship | 6:02df5c1108f1 | 117 | Sequence = SequenceNew; |
kabukistarship | 6:02df5c1108f1 | 118 | Pattern = SequenceNew[0]; |
kabukistarship | 6:02df5c1108f1 | 119 | Cursor = Pattern; |
kabukistarship | 6:02df5c1108f1 | 120 | CurrentByte = *Cursor; |
kabukistarship | 6:02df5c1108f1 | 121 | Update (); |
kabukistarship | 2:aa9a1377aa0d | 122 | } |
kabukistarship | 2:aa9a1377aa0d | 123 | |
kabukistarship | 2:aa9a1377aa0d | 124 | /* Turns off the Blinker. */ |
kabukistarship | 2:aa9a1377aa0d | 125 | void TurnOff () { |
kabukistarship | 6:02df5c1108f1 | 126 | Pin = Off; |
kabukistarship | 2:aa9a1377aa0d | 127 | } |
kabukistarship | 2:aa9a1377aa0d | 128 | |
kabukistarship | 2:aa9a1377aa0d | 129 | /* Turns on the Blinker. */ |
kabukistarship | 2:aa9a1377aa0d | 130 | void TurnOn () { |
kabukistarship | 6:02df5c1108f1 | 131 | Color = ColorA; |
kabukistarship | 6:02df5c1108f1 | 132 | Update (); |
kabukistarship | 2:aa9a1377aa0d | 133 | } |
kabukistarship | 2:aa9a1377aa0d | 134 | |
kabukistarship | 2:aa9a1377aa0d | 135 | /* Starts flashing the SOS Sequence. */ |
kabukistarship | 2:aa9a1377aa0d | 136 | void FlashSOS () { |
kabukistarship | 6:02df5c1108f1 | 137 | Sequence = SoSPattern (); |
kabukistarship | 6:02df5c1108f1 | 138 | Cursor = Sequence[0]; |
kabukistarship | 6:02df5c1108f1 | 139 | Cursor = *Cursor; |
kabukistarship | 6:02df5c1108f1 | 140 | Period = *Cursor; |
kabukistarship | 2:aa9a1377aa0d | 141 | } |
kabukistarship | 2:aa9a1377aa0d | 142 | |
kabukistarship | 2:aa9a1377aa0d | 143 | /* Starts blinking. */ |
kabukistarship | 2:aa9a1377aa0d | 144 | void StartBlinking () { |
kabukistarship | 6:02df5c1108f1 | 145 | const char* _pattern = Sequence[0]; |
kabukistarship | 6:02df5c1108f1 | 146 | Pattern = _pattern; |
kabukistarship | 6:02df5c1108f1 | 147 | Cursor = _pattern; |
kabukistarship | 6:02df5c1108f1 | 148 | Period = *_pattern; |
kabukistarship | 2:aa9a1377aa0d | 149 | |
kabukistarship | 6:02df5c1108f1 | 150 | Blinker.attach (this, &StatusIndicator::blink, Frequency / 4); |
kabukistarship | 6:02df5c1108f1 | 151 | Update (); |
kabukistarship | 2:aa9a1377aa0d | 152 | } |
kabukistarship | 2:aa9a1377aa0d | 153 | |
kabukistarship | 2:aa9a1377aa0d | 154 | /* Stops blinking and turns off the LED. */ |
kabukistarship | 2:aa9a1377aa0d | 155 | void StopBlinking () { |
kabukistarship | 6:02df5c1108f1 | 156 | TurnOff (); |
kabukistarship | 6:02df5c1108f1 | 157 | Blinker.detach (); |
kabukistarship | 6:02df5c1108f1 | 158 | Pin = Off; |
kabukistarship | 6:02df5c1108f1 | 159 | Update (); |
kabukistarship | 2:aa9a1377aa0d | 160 | } |
kabukistarship | 2:aa9a1377aa0d | 161 | |
kabukistarship | 2:aa9a1377aa0d | 162 | /* Sets the blink Frequency. */ |
kabukistarship | 2:aa9a1377aa0d | 163 | void FrequencySet (float Value) { |
kabukistarship | 6:02df5c1108f1 | 164 | Frequency = Value; |
kabukistarship | 6:02df5c1108f1 | 165 | Blinker.attach (this, &StatusIndicator::Blink, Value); |
kabukistarship | 2:aa9a1377aa0d | 166 | } |
kabukistarship | 2:aa9a1377aa0d | 167 | |
kabukistarship | 6:02df5c1108f1 | 168 | /* Handler for the Assert macro. */ |
kabukistarship | 2:aa9a1377aa0d | 169 | void HandleAssert () { |
kabukistarship | 6:02df5c1108f1 | 170 | SetPattern (SoSPattern ()); |
kabukistarship | 2:aa9a1377aa0d | 171 | } |
kabukistarship | 2:aa9a1377aa0d | 172 | |
kabukistarship | 2:aa9a1377aa0d | 173 | /* Pattern blinks three times in a row. */ |
kabukistarship | 2:aa9a1377aa0d | 174 | const char** Blink3TimesPattern () { |
kabukistarship | 6:02df5c1108f1 | 175 | static const char** Sequence = { "... ", 0 }; |
kabukistarship | 6:02df5c1108f1 | 176 | return &Sequence; |
kabukistarship | 2:aa9a1377aa0d | 177 | } |
kabukistarship | 2:aa9a1377aa0d | 178 | |
kabukistarship | 2:aa9a1377aa0d | 179 | /* Standard blink Sequence. */ |
kabukistarship | 2:aa9a1377aa0d | 180 | const char** SlowBlinkPattern () { |
kabukistarship | 2:aa9a1377aa0d | 181 | static const char** Sequence = { "__ ", 0 }; |
kabukistarship | 2:aa9a1377aa0d | 182 | return &Sequence; |
kabukistarship | 2:aa9a1377aa0d | 183 | } |
kabukistarship | 2:aa9a1377aa0d | 184 | |
kabukistarship | 2:aa9a1377aa0d | 185 | /* Standard blink Sequence. */ |
kabukistarship | 2:aa9a1377aa0d | 186 | const char** FastBlinkPattern () { |
kabukistarship | 2:aa9a1377aa0d | 187 | static const char** Sequence = { "_ ", 0 }; |
kabukistarship | 2:aa9a1377aa0d | 188 | return &Sequence; |
kabukistarship | 2:aa9a1377aa0d | 189 | } |
kabukistarship | 2:aa9a1377aa0d | 190 | |
kabukistarship | 2:aa9a1377aa0d | 191 | /* Standard SOS Sequence. */ |
kabukistarship | 2:aa9a1377aa0d | 192 | const char** SoSPattern () { |
kabukistarship | 2:aa9a1377aa0d | 193 | static const char** Sequence = { "...---... ", 0 }; |
kabukistarship | 2:aa9a1377aa0d | 194 | return &Sequence; |
kabukistarship | 2:aa9a1377aa0d | 195 | } |
kabukistarship | 2:aa9a1377aa0d | 196 | |
kabukistarship | 2:aa9a1377aa0d | 197 | /* Returns the next char in the Sequence. */ |
kabukistarship | 2:aa9a1377aa0d | 198 | inline char GetNextPeriod () { |
kabukistarship | 2:aa9a1377aa0d | 199 | /// We've already checked that the Sequence and Cursor and not null. |
kabukistarship | 2:aa9a1377aa0d | 200 | |
kabukistarship | 2:aa9a1377aa0d | 201 | char period_temp = *(++Cursor); |
kabukistarship | 2:aa9a1377aa0d | 202 | |
kabukistarship | 2:aa9a1377aa0d | 203 | if (period_temp == 0) { |
kabukistarship | 2:aa9a1377aa0d | 204 | const char* temp_pattern = *(Pattern + sizeof (const char*)); |
kabukistarship | 2:aa9a1377aa0d | 205 | |
kabukistarship | 2:aa9a1377aa0d | 206 | if (!temp_pattern) { |
kabukistarship | 2:aa9a1377aa0d | 207 | const char* _cursor = Sequence[0]; |
kabukistarship | 2:aa9a1377aa0d | 208 | Cursor = Pattern = _cursor; |
kabukistarship | 2:aa9a1377aa0d | 209 | return *_cursor; |
kabukistarship | 2:aa9a1377aa0d | 210 | } |
kabukistarship | 2:aa9a1377aa0d | 211 | Pattern = temp_pattern; |
kabukistarship | 2:aa9a1377aa0d | 212 | return *temp_pattern; //< We don't particularly care if the Period is '\0'. |
kabukistarship | 2:aa9a1377aa0d | 213 | } |
kabukistarship | 2:aa9a1377aa0d | 214 | |
kabukistarship | 2:aa9a1377aa0d | 215 | return period_temp; |
kabukistarship | 2:aa9a1377aa0d | 216 | } |
kabukistarship | 2:aa9a1377aa0d | 217 | |
kabukistarship | 2:aa9a1377aa0d | 218 | /* Updates the Status LED. */ |
kabukistarship | 2:aa9a1377aa0d | 219 | inline void Update () { |
kabukistarship | 2:aa9a1377aa0d | 220 | const char* period_temp = Period; |
kabukistarship | 2:aa9a1377aa0d | 221 | if (!Sequence || !period_temp) return; |
kabukistarship | 2:aa9a1377aa0d | 222 | |
kabukistarship | 2:aa9a1377aa0d | 223 | if (Count == 0) { //< Beginning of cycle Period. |
kabukistarship | 2:aa9a1377aa0d | 224 | char _period = GetNextPeriod (); |
kabukistarship | 2:aa9a1377aa0d | 225 | Period = _period; |
kabukistarship | 2:aa9a1377aa0d | 226 | Count = 1; |
kabukistarship | 2:aa9a1377aa0d | 227 | if (_period < '-') { |
kabukistarship | 2:aa9a1377aa0d | 228 | Pin = Off; |
kabukistarship | 2:aa9a1377aa0d | 229 | return; |
kabukistarship | 2:aa9a1377aa0d | 230 | } |
kabukistarship | 2:aa9a1377aa0d | 231 | Pin = On; |
kabukistarship | 2:aa9a1377aa0d | 232 | return; |
kabukistarship | 2:aa9a1377aa0d | 233 | } |
kabukistarship | 2:aa9a1377aa0d | 234 | else if (Count == 1) { //< 1/3 duty cycle. |
kabukistarship | 2:aa9a1377aa0d | 235 | Count = 2; |
kabukistarship | 2:aa9a1377aa0d | 236 | if (Period == '.') { |
kabukistarship | 2:aa9a1377aa0d | 237 | Pin = Off; |
kabukistarship | 2:aa9a1377aa0d | 238 | return; |
kabukistarship | 2:aa9a1377aa0d | 239 | } |
kabukistarship | 2:aa9a1377aa0d | 240 | return; |
kabukistarship | 2:aa9a1377aa0d | 241 | } |
kabukistarship | 2:aa9a1377aa0d | 242 | /// 2/3 duty cycle. |
kabukistarship | 2:aa9a1377aa0d | 243 | Count = 0; |
kabukistarship | 2:aa9a1377aa0d | 244 | if (Period > '.') //< Leave the LED on |
kabukistarship | 2:aa9a1377aa0d | 245 | return; |
kabukistarship | 2:aa9a1377aa0d | 246 | Pin = Off; |
kabukistarship | 2:aa9a1377aa0d | 247 | } |
kabukistarship | 2:aa9a1377aa0d | 248 | }; |
kabukistarship | 2:aa9a1377aa0d | 249 | } |
kabukistarship | 2:aa9a1377aa0d | 250 | |
kabukistarship | 2:aa9a1377aa0d | 251 | // _D_e_m_o_____________________________________________________________________ |
kabukistarship | 2:aa9a1377aa0d | 252 | |
kabukistarship | 2:aa9a1377aa0d | 253 | #if 0 //< Set to non-zero to run this demo. |
kabukistarship | 2:aa9a1377aa0d | 254 | |
kabukistarship | 2:aa9a1377aa0d | 255 | using namespace mbedBug; |
kabukistarship | 2:aa9a1377aa0d | 256 | |
kabukistarship | 6:02df5c1108f1 | 257 | StatusIndicator Status (); |
kabukistarship | 2:aa9a1377aa0d | 258 | InterruptIn switch3 (SW3); |
kabukistarship | 2:aa9a1377aa0d | 259 | |
kabukistarship | 2:aa9a1377aa0d | 260 | const char* ExamplePattern[] = { |
kabukistarship | 2:aa9a1377aa0d | 261 | "... ", //< Blinks fast three times in a row. |
kabukistarship | 2:aa9a1377aa0d | 262 | "...---... ", //< SOS in Mores Code. |
kabukistarship | 2:aa9a1377aa0d | 263 | "____ ", //< Slowly blinks on and off. |
kabukistarship | 2:aa9a1377aa0d | 264 | 0 //< Pattern must have null-term pointer. |
kabukistarship | 2:aa9a1377aa0d | 265 | }; |
kabukistarship | 2:aa9a1377aa0d | 266 | /* Interrupt handler for SW2. */ |
kabukistarship | 2:aa9a1377aa0d | 267 | void SwitchIRQHandler () { |
kabukistarship | 6:02df5c1108f1 | 268 | static bool ExamplePatterMode = true; |
kabukistarship | 2:aa9a1377aa0d | 269 | |
kabukistarship | 6:02df5c1108f1 | 270 | if (ExamplePatterMode) { |
kabukistarship | 6:02df5c1108f1 | 271 | Status.SetPattern (ExamplePattern); |
kabukistarship | 6:02df5c1108f1 | 272 | Status.StartBlinking (); |
kabukistarship | 6:02df5c1108f1 | 273 | ExamplePatterMode = false; |
kabukistarship | 6:02df5c1108f1 | 274 | } |
kabukistarship | 6:02df5c1108f1 | 275 | else { |
kabukistarship | 6:02df5c1108f1 | 276 | Status.SetPattern(Status.SOSPattern ())); |
kabukistarship | 6:02df5c1108f1 | 277 | ExamplePatterMode = true; |
kabukistarship | 6:02df5c1108f1 | 278 | } |
kabukistarship | 2:aa9a1377aa0d | 279 | } |
kabukistarship | 2:aa9a1377aa0d | 280 | |
kabukistarship | 2:aa9a1377aa0d | 281 | int main() { |
kabukistarship | 6:02df5c1108f1 | 282 | printf ("\r\n\nTesting mbed Utils.\r\n\n"); |
kabukistarship | 6:02df5c1108f1 | 283 | PrintLine (); |
kabukistarship | 2:aa9a1377aa0d | 284 | |
kabukistarship | 6:02df5c1108f1 | 285 | switch3.rise (&SwitchIRQHandler); |
kabukistarship | 6:02df5c1108f1 | 286 | //Status.StartBlinking () |
kabukistarship | 2:aa9a1377aa0d | 287 | |
kabukistarship | 6:02df5c1108f1 | 288 | while (true); |
kabukistarship | 2:aa9a1377aa0d | 289 | } |
kabukistarship | 2:aa9a1377aa0d | 290 | |
kabukistarship | 2:aa9a1377aa0d | 291 | #endif //< Demo |
kabukistarship | 2:aa9a1377aa0d | 292 | #endif |