int processSimple (Context_t * context, int argc, char* argv[]) { int vCurrentCode = -1; if (((RemoteControl_t*)context->r)->Init) context->fd = (((RemoteControl_t*)context->r)->Init)(context, argc, argv); else { fprintf(stderr, "driver does not support init function\n"); exit(1); } if (context->fd < 0) { fprintf(stderr, "error in device initialization\n"); exit(1); } while ( true ) { //wait for new command if (((RemoteControl_t*)context->r)->Read) vCurrentCode = ((RemoteControl_t*)context->r)->Read(context); if(vCurrentCode <= 0) continue; //activate visual notification if (((RemoteControl_t*)context->r)->Notification) ((RemoteControl_t*)context->r)->Notification(context, 1); //Check if tuxtxt is running if (checkTuxTxt(vCurrentCode) == false) sendInputEvent(vCurrentCode); //deactivate visual notification if (((RemoteControl_t*)context->r)->Notification) ((RemoteControl_t*)context->r)->Notification(context, 0); } if (((RemoteControl_t*)context->r)->Shutdown) ((RemoteControl_t*)context->r)->Shutdown(context); else close(context->fd); return 0; }
void InputHandler::work() { std::vector<PinState> pinState; for (auto pinNo : _pins) { auto pinValue = digitalRead(pinNo); if (pinValue != _pinState[pinNo]) { sendInputEvent(pinNo, _pinState[pinNo], pinValue); } _pinState[pinNo] = pinValue; } }