Exemplo n.º 1
0
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;
}
Exemplo n.º 2
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;

  }

}