A board support package for the LPC4088 Display Module.

Dependencies:   DM_HttpServer DM_USBHost

Dependents:   lpc4088_displaymodule_emwin lpc4088_displaymodule_demo_sphere sampleGUI sampleEmptyGUI ... more

Fork of DMSupport by EmbeddedArtists AB

Committer:
embeddedartists
Date:
Sat Jan 17 14:12:37 2015 +0100
Revision:
24:9a677afc86f1
Parent:
23:6afd6a716e80
Child:
26:a65fbb4bde5c
- Added string parameter to the BIOS debug function to be able to print information about which BIOS_BOARD is selected

Who changed what in which revision?

UserRevisionLine numberNew contents of line
embeddedartists 22:1a58a518435c 1 /*
embeddedartists 22:1a58a518435c 2 * Copyright 2014 Embedded Artists AB
embeddedartists 22:1a58a518435c 3 *
embeddedartists 22:1a58a518435c 4 * Licensed under the Apache License, Version 2.0 (the "License");
embeddedartists 22:1a58a518435c 5 * you may not use this file except in compliance with the License.
embeddedartists 22:1a58a518435c 6 * You may obtain a copy of the License at
embeddedartists 22:1a58a518435c 7 *
embeddedartists 22:1a58a518435c 8 * http://www.apache.org/licenses/LICENSE-2.0
embeddedartists 22:1a58a518435c 9 *
embeddedartists 22:1a58a518435c 10 * Unless required by applicable law or agreed to in writing, software
embeddedartists 22:1a58a518435c 11 * distributed under the License is distributed on an "AS IS" BASIS,
embeddedartists 22:1a58a518435c 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
embeddedartists 22:1a58a518435c 13 * See the License for the specific language governing permissions and
embeddedartists 22:1a58a518435c 14 * limitations under the License.
embeddedartists 22:1a58a518435c 15 */
embeddedartists 22:1a58a518435c 16
embeddedartists 22:1a58a518435c 17 #include "mbed.h"
embeddedartists 22:1a58a518435c 18 #include "BiosTouch.h"
embeddedartists 22:1a58a518435c 19 #include "BiosLoader.h"
embeddedartists 22:1a58a518435c 20 #include "DMBoard.h"
embeddedartists 22:1a58a518435c 21 #include "bios.h"
embeddedartists 22:1a58a518435c 22 #include "meas.h"
embeddedartists 22:1a58a518435c 23
embeddedartists 22:1a58a518435c 24 /******************************************************************************
embeddedartists 22:1a58a518435c 25 * Defines and typedefs
embeddedartists 22:1a58a518435c 26 *****************************************************************************/
embeddedartists 22:1a58a518435c 27
embeddedartists 22:1a58a518435c 28 #define SIG_NEW_DATA 0x1
embeddedartists 22:1a58a518435c 29 class TouchHandler {
embeddedartists 22:1a58a518435c 30 public:
embeddedartists 22:1a58a518435c 31 TouchHandler(bios_header_t* bios, void* biosData, int num) :
embeddedartists 22:1a58a518435c 32 _latest(NULL), _touchIRQ(P2_25), _bios(bios),
embeddedartists 22:1a58a518435c 33 _biosData(biosData), _haveData(false), _points(num),
embeddedartists 22:1a58a518435c 34 _thread(NULL), _listener(NULL) {}
embeddedartists 22:1a58a518435c 35 void handleTouchInterrupt();
embeddedartists 22:1a58a518435c 36 void changeTouchInterrupt(bool enable, bool rising);
embeddedartists 22:1a58a518435c 37 TouchPanel::TouchError read(touch_coordinate_t* coord, int num);
embeddedartists 22:1a58a518435c 38 void run();
embeddedartists 22:1a58a518435c 39 void setThread(Thread* t) { _thread = t; }
embeddedartists 22:1a58a518435c 40 FunctionPointer* setListener(FunctionPointer* listener);
embeddedartists 22:1a58a518435c 41 private:
embeddedartists 22:1a58a518435c 42 Mutex _mutex;
embeddedartists 22:1a58a518435c 43 touch_coordinate_t* _latest;
embeddedartists 22:1a58a518435c 44 InterruptIn _touchIRQ;
embeddedartists 22:1a58a518435c 45 bios_header_t* _bios;
embeddedartists 22:1a58a518435c 46 void* _biosData;
embeddedartists 22:1a58a518435c 47 bool _haveData; //TODO: improve
embeddedartists 22:1a58a518435c 48 int _points;
embeddedartists 22:1a58a518435c 49 Thread* _thread;
embeddedartists 22:1a58a518435c 50 FunctionPointer* _listener;
embeddedartists 22:1a58a518435c 51 };
embeddedartists 22:1a58a518435c 52
embeddedartists 22:1a58a518435c 53 /******************************************************************************
embeddedartists 22:1a58a518435c 54 * Local variables
embeddedartists 22:1a58a518435c 55 *****************************************************************************/
embeddedartists 22:1a58a518435c 56
embeddedartists 22:1a58a518435c 57 /******************************************************************************
embeddedartists 22:1a58a518435c 58 * Private Functions
embeddedartists 22:1a58a518435c 59 *****************************************************************************/
embeddedartists 22:1a58a518435c 60
embeddedartists 22:1a58a518435c 61 BiosTouch::BiosTouch() :
embeddedartists 22:1a58a518435c 62 _initialized(false),
embeddedartists 22:1a58a518435c 63 _haveInfo(false),
embeddedartists 22:1a58a518435c 64 _poweredOn(false),
embeddedartists 22:1a58a518435c 65 //_touchIRQ(P2_25),
embeddedartists 22:1a58a518435c 66 _bios(NULL),
embeddedartists 22:1a58a518435c 67 _biosData(NULL),
embeddedartists 22:1a58a518435c 68 _handlerThread(NULL),
embeddedartists 22:1a58a518435c 69 _handler(NULL),
embeddedartists 22:1a58a518435c 70 _supportsTouch(false)
embeddedartists 22:1a58a518435c 71 {
embeddedartists 22:1a58a518435c 72 }
embeddedartists 22:1a58a518435c 73
embeddedartists 22:1a58a518435c 74 BiosTouch::~BiosTouch()
embeddedartists 22:1a58a518435c 75 {
embeddedartists 22:1a58a518435c 76 // _bios and _biosData are deallocated by BiosLoader
embeddedartists 22:1a58a518435c 77
embeddedartists 22:1a58a518435c 78 if (_handlerThread != NULL) {
embeddedartists 22:1a58a518435c 79 delete _handlerThread;
embeddedartists 22:1a58a518435c 80 _handlerThread = NULL;
embeddedartists 22:1a58a518435c 81 }
embeddedartists 22:1a58a518435c 82 if (_handler != NULL) {
embeddedartists 22:1a58a518435c 83 delete _handler;
embeddedartists 22:1a58a518435c 84 _handler = NULL;
embeddedartists 22:1a58a518435c 85 }
embeddedartists 22:1a58a518435c 86 }
embeddedartists 22:1a58a518435c 87
embeddedartists 22:1a58a518435c 88 // Function called from the BIOS
embeddedartists 22:1a58a518435c 89 static void touchIrqEnabler(uint32_t arg, bool enable, bool rising)
embeddedartists 22:1a58a518435c 90 {
embeddedartists 22:1a58a518435c 91 ((TouchHandler*)arg)->changeTouchInterrupt(enable, rising);
embeddedartists 24:9a677afc86f1 92 //#if defined(DM_BOARD_ENABLE_MEASSURING_PINS)
embeddedartists 24:9a677afc86f1 93 // if (enable) {
embeddedartists 24:9a677afc86f1 94 // SET_MEAS_PIN_1();
embeddedartists 24:9a677afc86f1 95 // } else {
embeddedartists 24:9a677afc86f1 96 // CLR_MEAS_PIN_1();
embeddedartists 24:9a677afc86f1 97 // }
embeddedartists 24:9a677afc86f1 98 //#endif
embeddedartists 22:1a58a518435c 99 }
embeddedartists 22:1a58a518435c 100
embeddedartists 22:1a58a518435c 101 static void touchTask(void const* args)
embeddedartists 22:1a58a518435c 102 {
embeddedartists 22:1a58a518435c 103 ((TouchHandler*)args)->run();
embeddedartists 22:1a58a518435c 104 }
embeddedartists 22:1a58a518435c 105
embeddedartists 22:1a58a518435c 106
embeddedartists 22:1a58a518435c 107 void TouchHandler::run()
embeddedartists 22:1a58a518435c 108 {
embeddedartists 22:1a58a518435c 109 RtosLog* log = DMBoard::instance().logger();
embeddedartists 22:1a58a518435c 110 BiosError_t err;
embeddedartists 22:1a58a518435c 111
embeddedartists 22:1a58a518435c 112 _latest = (touch_coordinate_t*)malloc(_points*sizeof(touch_coordinate_t));
embeddedartists 22:1a58a518435c 113 if (_latest == NULL) {
embeddedartists 22:1a58a518435c 114 log->printf("Failed to allocate memory for touch events\n");
embeddedartists 22:1a58a518435c 115 mbed_die();
embeddedartists 22:1a58a518435c 116 }
embeddedartists 22:1a58a518435c 117 memset(_latest, 0, _points*sizeof(touch_coordinate_t));
embeddedartists 24:9a677afc86f1 118 uint32_t maxDelay = osWaitForever;
embeddedartists 24:9a677afc86f1 119 SET_MEAS_PIN_1();
embeddedartists 22:1a58a518435c 120 while(true) {
embeddedartists 24:9a677afc86f1 121 #if 1
embeddedartists 24:9a677afc86f1 122 osEvent evt = Thread::signal_wait(SIG_NEW_DATA, maxDelay);
embeddedartists 24:9a677afc86f1 123 if (evt.status == osEventTimeout) {
embeddedartists 24:9a677afc86f1 124 // got a timeout after the last touch event, now go back to
embeddedartists 24:9a677afc86f1 125 // waiting forever for the next one
embeddedartists 24:9a677afc86f1 126 maxDelay = osWaitForever;
embeddedartists 24:9a677afc86f1 127 SET_MEAS_PIN_1();
embeddedartists 24:9a677afc86f1 128 } else {
embeddedartists 24:9a677afc86f1 129 // normal event, start a timeout to make sure that we get an
embeddedartists 24:9a677afc86f1 130 // event when the user stops fiddling with the display
embeddedartists 24:9a677afc86f1 131 //maxDelay = 10;
embeddedartists 24:9a677afc86f1 132 CLR_MEAS_PIN_1();
embeddedartists 24:9a677afc86f1 133 }
embeddedartists 24:9a677afc86f1 134 SET_MEAS_PIN_3();
embeddedartists 24:9a677afc86f1 135 _bios->touchIrqHandler(_biosData);
embeddedartists 24:9a677afc86f1 136 CLR_MEAS_PIN_3();
embeddedartists 24:9a677afc86f1 137
embeddedartists 24:9a677afc86f1 138 _mutex.lock();
embeddedartists 24:9a677afc86f1 139 err = _bios->touchRead(_biosData, _latest, _points);
embeddedartists 24:9a677afc86f1 140 FunctionPointer* fp = _listener;
embeddedartists 24:9a677afc86f1 141 _mutex.unlock();
embeddedartists 24:9a677afc86f1 142
embeddedartists 24:9a677afc86f1 143 if (err == BiosError_Ok) {
embeddedartists 24:9a677afc86f1 144 //notify registered callbacks
embeddedartists 24:9a677afc86f1 145 if (fp != NULL) {
embeddedartists 24:9a677afc86f1 146 SET_MEAS_PIN_4();
embeddedartists 24:9a677afc86f1 147 fp->call();
embeddedartists 24:9a677afc86f1 148 CLR_MEAS_PIN_4();
embeddedartists 24:9a677afc86f1 149 }
embeddedartists 24:9a677afc86f1 150 } else {
embeddedartists 24:9a677afc86f1 151 log->printf("Failed to read touch event, err = %d\n", err);
embeddedartists 24:9a677afc86f1 152 }
embeddedartists 24:9a677afc86f1 153
embeddedartists 24:9a677afc86f1 154 // mode 2 - wait max 10ms for touch event and simulate
embeddedartists 24:9a677afc86f1 155 // one if there isn't anyone (for the "touch up"
embeddedartists 24:9a677afc86f1 156 // event)
embeddedartists 24:9a677afc86f1 157 #else
embeddedartists 22:1a58a518435c 158 Thread::signal_wait(SIG_NEW_DATA);
embeddedartists 22:1a58a518435c 159 // if (_haveData) {
embeddedartists 22:1a58a518435c 160 // _haveData = false;
embeddedartists 22:1a58a518435c 161 SET_MEAS_PIN_3();
embeddedartists 22:1a58a518435c 162 _bios->touchIrqHandler(_biosData);
embeddedartists 22:1a58a518435c 163 CLR_MEAS_PIN_3();
embeddedartists 22:1a58a518435c 164 //read
embeddedartists 22:1a58a518435c 165 _mutex.lock();
embeddedartists 22:1a58a518435c 166 err = _bios->touchRead(_biosData, _latest, _points);
embeddedartists 22:1a58a518435c 167 FunctionPointer* fp = _listener;
embeddedartists 22:1a58a518435c 168 _mutex.unlock();
embeddedartists 22:1a58a518435c 169 if (err == BiosError_Ok) {
embeddedartists 22:1a58a518435c 170 //notify registered callbacks
embeddedartists 22:1a58a518435c 171 if (fp != NULL) {
embeddedartists 22:1a58a518435c 172 SET_MEAS_PIN_4();
embeddedartists 22:1a58a518435c 173 fp->call();
embeddedartists 24:9a677afc86f1 174 CLR_MEAS_PIN_4();
embeddedartists 22:1a58a518435c 175 }
embeddedartists 22:1a58a518435c 176 } else {
embeddedartists 22:1a58a518435c 177 log->printf("Failed to read touch event, err = %d\n", err);
embeddedartists 22:1a58a518435c 178 }
embeddedartists 22:1a58a518435c 179 // }
embeddedartists 24:9a677afc86f1 180 #endif
embeddedartists 22:1a58a518435c 181 }
embeddedartists 22:1a58a518435c 182 //if (_latest != NULL) {
embeddedartists 22:1a58a518435c 183 // free(_latest);
embeddedartists 22:1a58a518435c 184 // _latest = NULL;
embeddedartists 22:1a58a518435c 185 //}
embeddedartists 22:1a58a518435c 186 }
embeddedartists 22:1a58a518435c 187
embeddedartists 22:1a58a518435c 188 TouchPanel::TouchError TouchHandler::read(touch_coordinate_t* coord, int num)
embeddedartists 22:1a58a518435c 189 {
embeddedartists 22:1a58a518435c 190 if (num > _points || num < 1) {
embeddedartists 22:1a58a518435c 191 return TouchPanel::TouchError_InvalidParam;
embeddedartists 22:1a58a518435c 192 }
embeddedartists 22:1a58a518435c 193 _mutex.lock();
embeddedartists 22:1a58a518435c 194 memcpy(coord, _latest, num*sizeof(touch_coordinate_t));
embeddedartists 22:1a58a518435c 195 _mutex.unlock();
embeddedartists 22:1a58a518435c 196
embeddedartists 22:1a58a518435c 197 return TouchPanel::TouchError_Ok;
embeddedartists 22:1a58a518435c 198 }
embeddedartists 22:1a58a518435c 199
embeddedartists 22:1a58a518435c 200 void TouchHandler::handleTouchInterrupt()
embeddedartists 22:1a58a518435c 201 {
embeddedartists 22:1a58a518435c 202 SET_MEAS_PIN_2();
embeddedartists 22:1a58a518435c 203 //_haveData = true;
embeddedartists 22:1a58a518435c 204 if (_thread != NULL) {
embeddedartists 22:1a58a518435c 205 _thread->signal_set(SIG_NEW_DATA);
embeddedartists 22:1a58a518435c 206 }
embeddedartists 22:1a58a518435c 207 CLR_MEAS_PIN_2();
embeddedartists 22:1a58a518435c 208 }
embeddedartists 22:1a58a518435c 209
embeddedartists 22:1a58a518435c 210 void TouchHandler::changeTouchInterrupt(bool enable, bool rising)
embeddedartists 22:1a58a518435c 211 {
embeddedartists 22:1a58a518435c 212 if (enable) {
embeddedartists 22:1a58a518435c 213 if (rising) {
embeddedartists 22:1a58a518435c 214 _touchIRQ.rise(this, &TouchHandler::handleTouchInterrupt);
embeddedartists 22:1a58a518435c 215 } else {
embeddedartists 22:1a58a518435c 216 _touchIRQ.fall(this, &TouchHandler::handleTouchInterrupt);
embeddedartists 22:1a58a518435c 217 }
embeddedartists 22:1a58a518435c 218 } else {
embeddedartists 22:1a58a518435c 219 if (rising) {
embeddedartists 22:1a58a518435c 220 _touchIRQ.rise(NULL);
embeddedartists 22:1a58a518435c 221 } else {
embeddedartists 22:1a58a518435c 222 _touchIRQ.fall(NULL);
embeddedartists 22:1a58a518435c 223 }
embeddedartists 22:1a58a518435c 224 }
embeddedartists 22:1a58a518435c 225 }
embeddedartists 22:1a58a518435c 226
embeddedartists 22:1a58a518435c 227 FunctionPointer* TouchHandler::setListener(FunctionPointer* listener)
embeddedartists 22:1a58a518435c 228 {
embeddedartists 22:1a58a518435c 229 _mutex.lock();
embeddedartists 22:1a58a518435c 230 FunctionPointer* old = _listener;
embeddedartists 22:1a58a518435c 231 _listener = listener;
embeddedartists 22:1a58a518435c 232 _mutex.unlock();
embeddedartists 22:1a58a518435c 233 return old;
embeddedartists 22:1a58a518435c 234 }
embeddedartists 22:1a58a518435c 235
embeddedartists 22:1a58a518435c 236
embeddedartists 22:1a58a518435c 237 /******************************************************************************
embeddedartists 22:1a58a518435c 238 * Public Functions
embeddedartists 22:1a58a518435c 239 *****************************************************************************/
embeddedartists 22:1a58a518435c 240
embeddedartists 22:1a58a518435c 241 BiosTouch::TouchError BiosTouch::init()
embeddedartists 22:1a58a518435c 242 {
embeddedartists 22:1a58a518435c 243 TouchError result = TouchError_Ok;
embeddedartists 22:1a58a518435c 244 if (!_initialized) {
embeddedartists 22:1a58a518435c 245 do {
embeddedartists 22:1a58a518435c 246 if (BiosLoader::instance().params(&_bios, &_biosData) != DMBoard::Ok) {
embeddedartists 22:1a58a518435c 247 result = TouchError_ConfigError;
embeddedartists 22:1a58a518435c 248 break;
embeddedartists 22:1a58a518435c 249 }
embeddedartists 22:1a58a518435c 250
embeddedartists 22:1a58a518435c 251 result = (TouchError)_bios->touchInformation(_biosData, &_supportsTouch, &_supportsTouchCalibration, &_touchIsResistive, &_touchNumFingers);
embeddedartists 22:1a58a518435c 252 if (result != TouchError_Ok) {
embeddedartists 22:1a58a518435c 253 break;
embeddedartists 22:1a58a518435c 254 }
embeddedartists 22:1a58a518435c 255 _haveInfo = true;
embeddedartists 22:1a58a518435c 256
embeddedartists 22:1a58a518435c 257 // is it supported at all?
embeddedartists 22:1a58a518435c 258 if (!_supportsTouch) {
embeddedartists 22:1a58a518435c 259 result = TouchError_TouchNotSupported;
embeddedartists 22:1a58a518435c 260 break;
embeddedartists 22:1a58a518435c 261 }
embeddedartists 22:1a58a518435c 262
embeddedartists 22:1a58a518435c 263 _handler = new TouchHandler(_bios, _biosData, _touchNumFingers);
embeddedartists 22:1a58a518435c 264
embeddedartists 22:1a58a518435c 265 result = (TouchError)_bios->touchInit(_biosData, touchIrqEnabler, (uint32_t)_handler);
embeddedartists 22:1a58a518435c 266 if (result != TouchError_Ok) {
embeddedartists 22:1a58a518435c 267 break;
embeddedartists 22:1a58a518435c 268 }
embeddedartists 22:1a58a518435c 269
embeddedartists 22:1a58a518435c 270 result = (TouchError)_bios->touchPowerUp(_biosData);
embeddedartists 22:1a58a518435c 271 if (result != TouchError_Ok) {
embeddedartists 22:1a58a518435c 272 break;
embeddedartists 22:1a58a518435c 273 }
embeddedartists 22:1a58a518435c 274
embeddedartists 22:1a58a518435c 275 _handlerThread = new Thread(touchTask, _handler);
embeddedartists 22:1a58a518435c 276 _handler->setThread(_handlerThread);
embeddedartists 22:1a58a518435c 277
embeddedartists 22:1a58a518435c 278 _initialized = true;
embeddedartists 22:1a58a518435c 279 } while(0);
embeddedartists 22:1a58a518435c 280
embeddedartists 22:1a58a518435c 281 if (!_initialized) {
embeddedartists 22:1a58a518435c 282 if (_handler != NULL) {
embeddedartists 22:1a58a518435c 283 delete _handler;
embeddedartists 22:1a58a518435c 284 _handler = NULL;
embeddedartists 22:1a58a518435c 285 }
embeddedartists 22:1a58a518435c 286 }
embeddedartists 22:1a58a518435c 287 }
embeddedartists 22:1a58a518435c 288 return result;
embeddedartists 22:1a58a518435c 289 }
embeddedartists 22:1a58a518435c 290
embeddedartists 22:1a58a518435c 291 BiosTouch::TouchError BiosTouch::read(touch_coordinate_t &coord)
embeddedartists 22:1a58a518435c 292 {
embeddedartists 22:1a58a518435c 293 TouchError err = TouchError_Ok;
embeddedartists 22:1a58a518435c 294 if (!_initialized) {
embeddedartists 22:1a58a518435c 295 err = TouchError_NoInit;
embeddedartists 22:1a58a518435c 296 } else {
embeddedartists 22:1a58a518435c 297 err = _handler->read(&coord, 1);
embeddedartists 22:1a58a518435c 298 }
embeddedartists 22:1a58a518435c 299 return err;
embeddedartists 22:1a58a518435c 300 }
embeddedartists 22:1a58a518435c 301
embeddedartists 22:1a58a518435c 302 BiosTouch::TouchError BiosTouch::read(touch_coordinate_t* coord, int num)
embeddedartists 22:1a58a518435c 303 {
embeddedartists 22:1a58a518435c 304 TouchError err = TouchError_Ok;
embeddedartists 22:1a58a518435c 305 if (!_initialized) {
embeddedartists 22:1a58a518435c 306 err = TouchError_NoInit;
embeddedartists 22:1a58a518435c 307 } else {
embeddedartists 22:1a58a518435c 308 err = _handler->read(coord, num);
embeddedartists 22:1a58a518435c 309 }
embeddedartists 22:1a58a518435c 310 return err;
embeddedartists 22:1a58a518435c 311 }
embeddedartists 22:1a58a518435c 312
embeddedartists 22:1a58a518435c 313 BiosTouch::TouchError BiosTouch::info(bool* resistive, int* maxPoints, bool* calibrated)
embeddedartists 22:1a58a518435c 314 {
embeddedartists 22:1a58a518435c 315 TouchError err = TouchError_Ok;
embeddedartists 22:1a58a518435c 316 if (!_haveInfo) {
embeddedartists 22:1a58a518435c 317 err = TouchError_NoInit;
embeddedartists 22:1a58a518435c 318 } else {
embeddedartists 22:1a58a518435c 319 *resistive = _touchIsResistive;
embeddedartists 22:1a58a518435c 320 *maxPoints = _touchNumFingers;
embeddedartists 22:1a58a518435c 321 *calibrated = _supportsTouchCalibration;
embeddedartists 22:1a58a518435c 322 }
embeddedartists 22:1a58a518435c 323 return err;
embeddedartists 22:1a58a518435c 324 }
embeddedartists 22:1a58a518435c 325
embeddedartists 22:1a58a518435c 326 bool BiosTouch::isTouchSupported()
embeddedartists 22:1a58a518435c 327 {
embeddedartists 22:1a58a518435c 328 #if defined(DM_BOARD_USE_TOUCH)
embeddedartists 22:1a58a518435c 329 if (_haveInfo) {
embeddedartists 22:1a58a518435c 330 return _supportsTouch;
embeddedartists 22:1a58a518435c 331 }
embeddedartists 22:1a58a518435c 332 #endif
embeddedartists 22:1a58a518435c 333 return false;
embeddedartists 22:1a58a518435c 334 }
embeddedartists 22:1a58a518435c 335
embeddedartists 22:1a58a518435c 336 BiosTouch::TouchError BiosTouch::calibrateStart()
embeddedartists 22:1a58a518435c 337 {
embeddedartists 22:1a58a518435c 338 TouchError err = TouchError_Ok;
embeddedartists 22:1a58a518435c 339 if (!_initialized) {
embeddedartists 22:1a58a518435c 340 err = TouchError_NoInit;
embeddedartists 22:1a58a518435c 341 } else {
embeddedartists 22:1a58a518435c 342 err = (TouchError)_bios->touchCalibrateStart(_biosData);
embeddedartists 22:1a58a518435c 343 }
embeddedartists 22:1a58a518435c 344 return err;
embeddedartists 22:1a58a518435c 345 }
embeddedartists 22:1a58a518435c 346
embeddedartists 22:1a58a518435c 347 BiosTouch::TouchError BiosTouch::getNextCalibratePoint(uint16_t* x, uint16_t* y, bool* last)
embeddedartists 22:1a58a518435c 348 {
embeddedartists 22:1a58a518435c 349 TouchError err = TouchError_Ok;
embeddedartists 22:1a58a518435c 350 if (!_initialized) {
embeddedartists 22:1a58a518435c 351 err = TouchError_NoInit;
embeddedartists 22:1a58a518435c 352 } else {
embeddedartists 22:1a58a518435c 353 err = (TouchError)_bios->touchGetNextCalibPoint(_biosData, x, y, last);
embeddedartists 22:1a58a518435c 354 }
embeddedartists 22:1a58a518435c 355 return err;
embeddedartists 22:1a58a518435c 356 }
embeddedartists 22:1a58a518435c 357
embeddedartists 22:1a58a518435c 358 BiosTouch::TouchError BiosTouch::waitForCalibratePoint(bool* morePoints, uint32_t timeout)
embeddedartists 22:1a58a518435c 359 {
embeddedartists 22:1a58a518435c 360 TouchError err = TouchError_Ok;
embeddedartists 22:1a58a518435c 361 if (!_initialized) {
embeddedartists 22:1a58a518435c 362 err = TouchError_NoInit;
embeddedartists 22:1a58a518435c 363 } else {
embeddedartists 22:1a58a518435c 364 err = (TouchError)_bios->touchWaitForCalibratePoint(_biosData, morePoints, timeout);
embeddedartists 22:1a58a518435c 365 }
embeddedartists 22:1a58a518435c 366 return err;
embeddedartists 22:1a58a518435c 367 }
embeddedartists 22:1a58a518435c 368
embeddedartists 22:1a58a518435c 369 FunctionPointer* BiosTouch::setListener(FunctionPointer* listener)
embeddedartists 22:1a58a518435c 370 {
embeddedartists 22:1a58a518435c 371 if (_initialized) {
embeddedartists 22:1a58a518435c 372 return _handler->setListener(listener);
embeddedartists 22:1a58a518435c 373 }
embeddedartists 22:1a58a518435c 374 return NULL;
embeddedartists 22:1a58a518435c 375 }