Signal Generator
Dependencies: IniManager RA8875 Watchdog mbed-rtos mbed
Fork of speaker_demo_Analog by
SignalGenDisplay.h@3:d22f3e52d06a, 2017-01-16 (annotated)
- Committer:
- WiredHome
- Date:
- Mon Jan 16 04:33:06 2017 +0000
- Revision:
- 3:d22f3e52d06a
- Parent:
- 2:8f71b71fce1b
- Child:
- 5:49dd0c647a40
Added button for Start/Stop/Pulse
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
WiredHome | 1:dd07e1deec6c | 1 | |
WiredHome | 1:dd07e1deec6c | 2 | #ifndef SIGNALGENDISPLAY_H |
WiredHome | 1:dd07e1deec6c | 3 | #define SIGNALGENDISPLAY_H |
WiredHome | 1:dd07e1deec6c | 4 | |
WiredHome | 1:dd07e1deec6c | 5 | #include "mbed.h" |
WiredHome | 1:dd07e1deec6c | 6 | #include "RA8875.h" |
WiredHome | 2:8f71b71fce1b | 7 | #include "SignalGenDAC.h" |
WiredHome | 3:d22f3e52d06a | 8 | #include "IniManager.h" |
WiredHome | 1:dd07e1deec6c | 9 | |
WiredHome | 1:dd07e1deec6c | 10 | #define SG_MIN_V 0.0 // Constraint, to match to the hardware |
WiredHome | 1:dd07e1deec6c | 11 | #define SG_MAX_V 3.3 // |
WiredHome | 1:dd07e1deec6c | 12 | #define SG_AOUT_FS 3.3 // Analog output full scale |
WiredHome | 1:dd07e1deec6c | 13 | |
WiredHome | 2:8f71b71fce1b | 14 | #define SAVE_AFTER_IDLE_S 10 // How long after idle should it save |
WiredHome | 2:8f71b71fce1b | 15 | |
WiredHome | 1:dd07e1deec6c | 16 | class SignalGenDisplay { |
WiredHome | 1:dd07e1deec6c | 17 | public: |
WiredHome | 1:dd07e1deec6c | 18 | /// Constructor for the Signal Generator User Interface. |
WiredHome | 1:dd07e1deec6c | 19 | /// |
WiredHome | 2:8f71b71fce1b | 20 | /// This will also load the initial settings from the |
WiredHome | 2:8f71b71fce1b | 21 | /// file system. |
WiredHome | 2:8f71b71fce1b | 22 | /// |
WiredHome | 3:d22f3e52d06a | 23 | /// @code |
WiredHome | 3:d22f3e52d06a | 24 | /// #include "SignalGenDisplay.h" |
WiredHome | 3:d22f3e52d06a | 25 | /// #include "SignalGenDAC.h" |
WiredHome | 3:d22f3e52d06a | 26 | /// RA8875 lcd(p5,p6,p7,p12, NC, "tft"); // SPI:{MOSI,MISO,SCK,/ChipSelect,/reset}, name |
WiredHome | 3:d22f3e52d06a | 27 | /// INI ini; |
WiredHome | 3:d22f3e52d06a | 28 | /// |
WiredHome | 3:d22f3e52d06a | 29 | /// RawSerial pc(USBTX, USBRX); |
WiredHome | 3:d22f3e52d06a | 30 | /// LocalFileSystem local("local"); |
WiredHome | 3:d22f3e52d06a | 31 | /// SignalGenDAC g_signal(p18); |
WiredHome | 3:d22f3e52d06a | 32 | /// SignalGenDisplay ui(&lcd, &g_signal); |
WiredHome | 3:d22f3e52d06a | 33 | /// |
WiredHome | 3:d22f3e52d06a | 34 | /// int main() { |
WiredHome | 3:d22f3e52d06a | 35 | /// pc.baud(460800); |
WiredHome | 3:d22f3e52d06a | 36 | /// |
WiredHome | 3:d22f3e52d06a | 37 | /// if (wd.WatchdogCausedReset()) { |
WiredHome | 3:d22f3e52d06a | 38 | /// pc.printf("**** Watchdog Event caused reset ****\r\n"); |
WiredHome | 3:d22f3e52d06a | 39 | /// } |
WiredHome | 3:d22f3e52d06a | 40 | /// wd.Configure(30.0); |
WiredHome | 3:d22f3e52d06a | 41 | /// ini.SetFile("/local/SigGen.ini", 2); |
WiredHome | 3:d22f3e52d06a | 42 | /// |
WiredHome | 3:d22f3e52d06a | 43 | /// lcd.init(480,272,16, true, true, true); |
WiredHome | 3:d22f3e52d06a | 44 | /// while (true) |
WiredHome | 3:d22f3e52d06a | 45 | /// { |
WiredHome | 3:d22f3e52d06a | 46 | /// wd.Service(); |
WiredHome | 3:d22f3e52d06a | 47 | /// if (pc.readable()) { |
WiredHome | 3:d22f3e52d06a | 48 | /// int c = pc.getc(); |
WiredHome | 3:d22f3e52d06a | 49 | /// ui.Poll(c); |
WiredHome | 3:d22f3e52d06a | 50 | /// } else { |
WiredHome | 3:d22f3e52d06a | 51 | /// ui.Poll(); |
WiredHome | 3:d22f3e52d06a | 52 | /// } |
WiredHome | 3:d22f3e52d06a | 53 | /// } // End of 'while' statement |
WiredHome | 3:d22f3e52d06a | 54 | /// } // End of main program |
WiredHome | 3:d22f3e52d06a | 55 | /// @endcode |
WiredHome | 3:d22f3e52d06a | 56 | /// |
WiredHome | 1:dd07e1deec6c | 57 | /// @param[in] lcd is a pointer to the Graphics Display |
WiredHome | 1:dd07e1deec6c | 58 | /// @param[in] signal is a handle to the signal generator |
WiredHome | 3:d22f3e52d06a | 59 | /// @param[in] Path is a pointer to an optional file system path. If |
WiredHome | 3:d22f3e52d06a | 60 | /// not provided, "/local" is used. If you do not have the |
WiredHome | 3:d22f3e52d06a | 61 | /// original mbed, your device might not have the local file |
WiredHome | 3:d22f3e52d06a | 62 | /// system. |
WiredHome | 3:d22f3e52d06a | 63 | /// @param[in] ProgrName is an optional pointer to a constant string |
WiredHome | 3:d22f3e52d06a | 64 | /// proclaiming the program name. If not provided, |
WiredHome | 3:d22f3e52d06a | 65 | /// "Signal Generator" is used. |
WiredHome | 3:d22f3e52d06a | 66 | /// @param[in] Manuf is an optional pointer to a constant string. If |
WiredHome | 3:d22f3e52d06a | 67 | /// not provided, "Smartware Computing" is used. |
WiredHome | 3:d22f3e52d06a | 68 | /// @param[in] Ver is an optional pointer to a constant string. If not |
WiredHome | 3:d22f3e52d06a | 69 | /// provided, "0.01" (or similar) is used. |
WiredHome | 3:d22f3e52d06a | 70 | /// @param[in] Build is an optional pointer to a constant string. If not |
WiredHome | 3:d22f3e52d06a | 71 | /// provided, __DATE__ " " __TIME__ is used. |
WiredHome | 1:dd07e1deec6c | 72 | /// |
WiredHome | 3:d22f3e52d06a | 73 | SignalGenDisplay(RA8875 * lcd, SignalGenDAC * signal, |
WiredHome | 3:d22f3e52d06a | 74 | const char * Path = "/local", |
WiredHome | 3:d22f3e52d06a | 75 | const char * ProgName = "Signal Generator", |
WiredHome | 3:d22f3e52d06a | 76 | const char * Manuf = "Smartware Computing", |
WiredHome | 3:d22f3e52d06a | 77 | const char * Ver = "0.01", |
WiredHome | 3:d22f3e52d06a | 78 | const char * Build = __DATE__ " " __TIME__); |
WiredHome | 1:dd07e1deec6c | 79 | |
WiredHome | 1:dd07e1deec6c | 80 | /// Destructor |
WiredHome | 1:dd07e1deec6c | 81 | //// |
WiredHome | 1:dd07e1deec6c | 82 | ~SignalGenDisplay(); |
WiredHome | 1:dd07e1deec6c | 83 | |
WiredHome | 2:8f71b71fce1b | 84 | /// Refresh the display for the current settings |
WiredHome | 2:8f71b71fce1b | 85 | /// and display mode. |
WiredHome | 1:dd07e1deec6c | 86 | /// |
WiredHome | 2:8f71b71fce1b | 87 | void Refresh(void); |
WiredHome | 1:dd07e1deec6c | 88 | |
WiredHome | 1:dd07e1deec6c | 89 | /// Set the frequency information |
WiredHome | 1:dd07e1deec6c | 90 | /// |
WiredHome | 1:dd07e1deec6c | 91 | /// This automatically sets the period as 1/frequency |
WiredHome | 1:dd07e1deec6c | 92 | /// |
WiredHome | 1:dd07e1deec6c | 93 | /// @param[in] frequency desired |
WiredHome | 1:dd07e1deec6c | 94 | /// @returns true if the value was accepted |
WiredHome | 1:dd07e1deec6c | 95 | /// |
WiredHome | 1:dd07e1deec6c | 96 | bool SetFrequency(float frequency); |
WiredHome | 1:dd07e1deec6c | 97 | |
WiredHome | 1:dd07e1deec6c | 98 | /// Get the current frequency setting |
WiredHome | 1:dd07e1deec6c | 99 | /// |
WiredHome | 1:dd07e1deec6c | 100 | /// @returns current frequency |
WiredHome | 1:dd07e1deec6c | 101 | /// |
WiredHome | 1:dd07e1deec6c | 102 | float GetFrequency(void) { return frequency; } |
WiredHome | 1:dd07e1deec6c | 103 | |
WiredHome | 1:dd07e1deec6c | 104 | /// Set the period instead of the frequency |
WiredHome | 1:dd07e1deec6c | 105 | /// |
WiredHome | 1:dd07e1deec6c | 106 | /// This automatically sets the frequency as 1/period |
WiredHome | 1:dd07e1deec6c | 107 | /// |
WiredHome | 1:dd07e1deec6c | 108 | /// @param[in] period desired |
WiredHome | 1:dd07e1deec6c | 109 | /// @returns true if the value was accepted |
WiredHome | 1:dd07e1deec6c | 110 | /// |
WiredHome | 1:dd07e1deec6c | 111 | bool SetPeriod(float period); |
WiredHome | 1:dd07e1deec6c | 112 | |
WiredHome | 1:dd07e1deec6c | 113 | /// Get the current period |
WiredHome | 1:dd07e1deec6c | 114 | /// |
WiredHome | 1:dd07e1deec6c | 115 | /// @returns current period |
WiredHome | 1:dd07e1deec6c | 116 | /// |
WiredHome | 1:dd07e1deec6c | 117 | float GetPeriod(void) { return 1/frequency; } |
WiredHome | 1:dd07e1deec6c | 118 | |
WiredHome | 1:dd07e1deec6c | 119 | /// Set the Duty Cycle |
WiredHome | 1:dd07e1deec6c | 120 | /// |
WiredHome | 1:dd07e1deec6c | 121 | /// This adjusts the duty cycle of the waveform |
WiredHome | 1:dd07e1deec6c | 122 | /// |
WiredHome | 1:dd07e1deec6c | 123 | /// @param[in] dutyCycle is a value ranging from 0 to 100. |
WiredHome | 1:dd07e1deec6c | 124 | /// @returns true if the value was accepted |
WiredHome | 1:dd07e1deec6c | 125 | /// |
WiredHome | 1:dd07e1deec6c | 126 | bool SetDutyCycle(float dutyCycle); |
WiredHome | 1:dd07e1deec6c | 127 | |
WiredHome | 1:dd07e1deec6c | 128 | /// Get the current duty cycle |
WiredHome | 1:dd07e1deec6c | 129 | /// |
WiredHome | 1:dd07e1deec6c | 130 | /// @returns the duty cycle |
WiredHome | 1:dd07e1deec6c | 131 | /// |
WiredHome | 1:dd07e1deec6c | 132 | float GetDutyCycle(void) { return dutycycle; } |
WiredHome | 1:dd07e1deec6c | 133 | |
WiredHome | 1:dd07e1deec6c | 134 | /// Set the peak-to-peak voltage of the of the waveform |
WiredHome | 1:dd07e1deec6c | 135 | /// |
WiredHome | 1:dd07e1deec6c | 136 | /// In the range of 0 to 3.3v |
WiredHome | 1:dd07e1deec6c | 137 | /// |
WiredHome | 1:dd07e1deec6c | 138 | /// @param[in] voltage is the peak to peak voltage |
WiredHome | 1:dd07e1deec6c | 139 | /// @returns true if the value was accepted |
WiredHome | 1:dd07e1deec6c | 140 | /// |
WiredHome | 1:dd07e1deec6c | 141 | bool SetVoltagePeakToPeak(float voltage); |
WiredHome | 1:dd07e1deec6c | 142 | |
WiredHome | 1:dd07e1deec6c | 143 | /// Get the Peak to Peak voltage |
WiredHome | 1:dd07e1deec6c | 144 | /// |
WiredHome | 1:dd07e1deec6c | 145 | /// @returns peak to peak voltage |
WiredHome | 1:dd07e1deec6c | 146 | /// |
WiredHome | 1:dd07e1deec6c | 147 | float GetVoltagePeakToPeak(void) { return voltage; } |
WiredHome | 1:dd07e1deec6c | 148 | |
WiredHome | 1:dd07e1deec6c | 149 | /// Set the offset in the range of +/- 1.65v |
WiredHome | 1:dd07e1deec6c | 150 | /// |
WiredHome | 1:dd07e1deec6c | 151 | /// A zero volt offset is biased to VCC/2 (3.3/2) |
WiredHome | 1:dd07e1deec6c | 152 | /// |
WiredHome | 1:dd07e1deec6c | 153 | /// @param[in] voltage is the offset voltage. |
WiredHome | 1:dd07e1deec6c | 154 | /// @returns true if the value was accepted |
WiredHome | 1:dd07e1deec6c | 155 | /// |
WiredHome | 1:dd07e1deec6c | 156 | bool SetVoltageOffset(float voltage); |
WiredHome | 1:dd07e1deec6c | 157 | |
WiredHome | 1:dd07e1deec6c | 158 | /// Get the offset voltage |
WiredHome | 1:dd07e1deec6c | 159 | /// |
WiredHome | 1:dd07e1deec6c | 160 | /// @returns offset voltage |
WiredHome | 1:dd07e1deec6c | 161 | /// |
WiredHome | 1:dd07e1deec6c | 162 | float GetVoltageOffset(void) { return offset; } |
WiredHome | 1:dd07e1deec6c | 163 | |
WiredHome | 1:dd07e1deec6c | 164 | /// Select a Waveform Mode |
WiredHome | 1:dd07e1deec6c | 165 | /// |
WiredHome | 1:dd07e1deec6c | 166 | /// The selection will update the display to reflect the current state |
WiredHome | 1:dd07e1deec6c | 167 | /// |
WiredHome | 1:dd07e1deec6c | 168 | /// @param[in] mode sets the signal generator mode. |
WiredHome | 2:8f71b71fce1b | 169 | /// @param[in] force as true will force it to set the mode, redrawing the screen |
WiredHome | 1:dd07e1deec6c | 170 | /// @returns true if the value was accepted |
WiredHome | 1:dd07e1deec6c | 171 | /// |
WiredHome | 2:8f71b71fce1b | 172 | bool SetWaveformMode(SG_Mode mode, bool force = false); |
WiredHome | 1:dd07e1deec6c | 173 | |
WiredHome | 1:dd07e1deec6c | 174 | /// Operating mode changes |
WiredHome | 1:dd07e1deec6c | 175 | /// |
WiredHome | 3:d22f3e52d06a | 176 | /// Changes in the operating mode or other parameters are reported by a |
WiredHome | 3:d22f3e52d06a | 177 | /// bitmask value, where zero or more bits are set. |
WiredHome | 1:dd07e1deec6c | 178 | /// |
WiredHome | 1:dd07e1deec6c | 179 | typedef enum { |
WiredHome | 2:8f71b71fce1b | 180 | OM_NONE = 0, ///< No change in operating mode |
WiredHome | 2:8f71b71fce1b | 181 | OM_MODE = 1, ///< Signal mode changed; Sine, Square, Triangle, Sawtooth, User |
WiredHome | 2:8f71b71fce1b | 182 | OM_FREQ = 2, ///< Change in the frequency |
WiredHome | 2:8f71b71fce1b | 183 | OM_PERI = 4, ///< Change in the period (effectively same as frequency) |
WiredHome | 2:8f71b71fce1b | 184 | OM_DUTY = 8, ///< Change in the duty cycle |
WiredHome | 2:8f71b71fce1b | 185 | OM_VOLT = 16, ///< Change in the peak to peak amplitude |
WiredHome | 2:8f71b71fce1b | 186 | OM_OFFS = 32, ///< Change in the offset voltage |
WiredHome | 3:d22f3e52d06a | 187 | OM_BACKL = 64, ///< Change in the backlight setting |
WiredHome | 2:8f71b71fce1b | 188 | } OM_Changes; |
WiredHome | 1:dd07e1deec6c | 189 | |
WiredHome | 1:dd07e1deec6c | 190 | /// Poll the Signal Generator UI for changes in operation. |
WiredHome | 1:dd07e1deec6c | 191 | /// |
WiredHome | 1:dd07e1deec6c | 192 | /// Call this periodically, in order to determine if there is a user-activated |
WiredHome | 1:dd07e1deec6c | 193 | /// change in the operating mode of the signal generator. |
WiredHome | 1:dd07e1deec6c | 194 | /// |
WiredHome | 1:dd07e1deec6c | 195 | /// @param[in] c is the optional character, emulating the onscreen keypad |
WiredHome | 1:dd07e1deec6c | 196 | /// - 'd' duty cycle entry |
WiredHome | 1:dd07e1deec6c | 197 | /// - 'f' frequency entry |
WiredHome | 1:dd07e1deec6c | 198 | /// - 'p' period entry |
WiredHome | 1:dd07e1deec6c | 199 | /// - 'v' voltage entry |
WiredHome | 1:dd07e1deec6c | 200 | /// - 'o' offset voltage entry |
WiredHome | 1:dd07e1deec6c | 201 | /// - '0'-'9','.' numeric entry |
WiredHome | 1:dd07e1deec6c | 202 | /// - <enter> complete numeric entry |
WiredHome | 1:dd07e1deec6c | 203 | /// - <esc> abandon numeric entry |
WiredHome | 1:dd07e1deec6c | 204 | /// - <nul> do nothing, just poll |
WiredHome | 1:dd07e1deec6c | 205 | /// @returns a bitmask of which non-zero indicates changes in mode. |
WiredHome | 1:dd07e1deec6c | 206 | /// |
WiredHome | 2:8f71b71fce1b | 207 | OM_Changes Poll(char c = 0); |
WiredHome | 1:dd07e1deec6c | 208 | |
WiredHome | 1:dd07e1deec6c | 209 | /// Show the menu of commands on the console interface |
WiredHome | 1:dd07e1deec6c | 210 | /// |
WiredHome | 1:dd07e1deec6c | 211 | void ShowMenu(void); |
WiredHome | 1:dd07e1deec6c | 212 | |
WiredHome | 1:dd07e1deec6c | 213 | private: |
WiredHome | 1:dd07e1deec6c | 214 | RA8875 * lcd; |
WiredHome | 2:8f71b71fce1b | 215 | SignalGenDAC * signal; |
WiredHome | 3:d22f3e52d06a | 216 | const char * Path; |
WiredHome | 1:dd07e1deec6c | 217 | const char * ProgName; |
WiredHome | 1:dd07e1deec6c | 218 | const char * Manuf; |
WiredHome | 1:dd07e1deec6c | 219 | const char * Ver; |
WiredHome | 1:dd07e1deec6c | 220 | const char * Build; |
WiredHome | 2:8f71b71fce1b | 221 | bool needsInit; ///< allows defering first init to after the constructor |
WiredHome | 3:d22f3e52d06a | 222 | INI ini; |
WiredHome | 1:dd07e1deec6c | 223 | typedef enum { |
WiredHome | 1:dd07e1deec6c | 224 | VS_MainScreen, |
WiredHome | 1:dd07e1deec6c | 225 | VS_Settings, |
WiredHome | 1:dd07e1deec6c | 226 | } VisualScreen; |
WiredHome | 1:dd07e1deec6c | 227 | VisualScreen vis; |
WiredHome | 1:dd07e1deec6c | 228 | SG_Mode mode; ///< signal mode |
WiredHome | 1:dd07e1deec6c | 229 | float frequency; ///< selected frequency |
WiredHome | 1:dd07e1deec6c | 230 | float dutycycle; ///< selected duty cycle |
WiredHome | 1:dd07e1deec6c | 231 | float voltage; ///< selected voltage |
WiredHome | 1:dd07e1deec6c | 232 | float offset; ///< selected offset |
WiredHome | 3:d22f3e52d06a | 233 | int pulseMode; ///< 0 == continuos, 1 == one-shot |
WiredHome | 1:dd07e1deec6c | 234 | char textBuffer[10]; ///< a place to enter text |
WiredHome | 1:dd07e1deec6c | 235 | int textLen; ///< num chars in textBuffer |
WiredHome | 3:d22f3e52d06a | 236 | Timer timerRepeat; ///< Keypad repeat timer |
WiredHome | 2:8f71b71fce1b | 237 | OM_Changes EntryMd; ///< indicates if in data entry mode |
WiredHome | 2:8f71b71fce1b | 238 | uint16_t Changes; ///< combined from EntryMd for what to save |
WiredHome | 2:8f71b71fce1b | 239 | Timer timerSave; ///< Save state timer |
WiredHome | 3:d22f3e52d06a | 240 | Timer timerForceTSCal; ///< tracks continuous touch to force TS Calibration |
WiredHome | 3:d22f3e52d06a | 241 | |
WiredHome | 3:d22f3e52d06a | 242 | void ShowProductInfo(bool builddate = false); |
WiredHome | 1:dd07e1deec6c | 243 | void ShowBrightnessSetting(void); |
WiredHome | 1:dd07e1deec6c | 244 | char GetTouchEvent(void); |
WiredHome | 1:dd07e1deec6c | 245 | void ClearScope(void); |
WiredHome | 1:dd07e1deec6c | 246 | void UpdateScope(void); |
WiredHome | 1:dd07e1deec6c | 247 | void updateDutyCycle(void); |
WiredHome | 1:dd07e1deec6c | 248 | void updateFrequency(void); |
WiredHome | 1:dd07e1deec6c | 249 | void updatePeriod(void); |
WiredHome | 1:dd07e1deec6c | 250 | void updateVoltage(void); |
WiredHome | 1:dd07e1deec6c | 251 | void updateOffset(void); |
WiredHome | 1:dd07e1deec6c | 252 | void updateTextWindow(void); |
WiredHome | 2:8f71b71fce1b | 253 | void clearTextWindow(void); |
WiredHome | 2:8f71b71fce1b | 254 | /// Set a flag to request modified settings to be saved. |
WiredHome | 2:8f71b71fce1b | 255 | /// |
WiredHome | 2:8f71b71fce1b | 256 | /// This is also called with OM_NONE as a background task to see if |
WiredHome | 2:8f71b71fce1b | 257 | /// any settings have been changed. In this way, settings changes are not |
WiredHome | 2:8f71b71fce1b | 258 | /// written immediately, which is both slow, and unnecessary if another |
WiredHome | 2:8f71b71fce1b | 259 | /// change is about to be made. |
WiredHome | 2:8f71b71fce1b | 260 | /// |
WiredHome | 2:8f71b71fce1b | 261 | /// @param[in] reportMode indicates what setting, if any, has changed. |
WiredHome | 2:8f71b71fce1b | 262 | /// |
WiredHome | 2:8f71b71fce1b | 263 | void SaveSettings(OM_Changes reportMode = OM_NONE); |
WiredHome | 2:8f71b71fce1b | 264 | void resetDataEntry(OM_Changes mode = OM_NONE, bool save = false); ///< save the current value if exiting entry mode |
WiredHome | 2:8f71b71fce1b | 265 | void DrawNavGadget(void); |
WiredHome | 2:8f71b71fce1b | 266 | void DrawModeButtons(void); |
WiredHome | 1:dd07e1deec6c | 267 | void DrawKeypadEnabled(bool enable = false); |
WiredHome | 1:dd07e1deec6c | 268 | void DrawButton(rect_t r, bool pressed, SG_Mode mode, bool enable = false, int label=0); |
WiredHome | 2:8f71b71fce1b | 269 | void DrawWaveform(rect_t r, SG_Mode mode, color_t color, bool drawPure = false); // pure ignores, voltage,offset,dutycycle |
WiredHome | 1:dd07e1deec6c | 270 | float rangelimit(float value, float minV, float maxV); |
WiredHome | 3:d22f3e52d06a | 271 | void ShowCyclesControl(void); |
WiredHome | 3:d22f3e52d06a | 272 | |
WiredHome | 3:d22f3e52d06a | 273 | /// Force a calibration of the resistive touchscreen |
WiredHome | 3:d22f3e52d06a | 274 | void CalibrateTS(void); |
WiredHome | 3:d22f3e52d06a | 275 | |
WiredHome | 3:d22f3e52d06a | 276 | /// Try to load a previous resistive touch screen calibration from storage. If it |
WiredHome | 3:d22f3e52d06a | 277 | /// doesn't exist, activate the touch screen calibration process. |
WiredHome | 3:d22f3e52d06a | 278 | void InitializeTS(void); |
WiredHome | 3:d22f3e52d06a | 279 | void ShowStartStop(bool showIt); |
WiredHome | 1:dd07e1deec6c | 280 | }; |
WiredHome | 1:dd07e1deec6c | 281 | |
WiredHome | 1:dd07e1deec6c | 282 | |
WiredHome | 1:dd07e1deec6c | 283 | #endif // SIGNALGENDISPLAY_H |