/** * Runs in a separate thread */ void *Gpio::monitor(void *arg) { mMonitorRunning = true; while (mMonitorRunning){ double now = Engine::timeNow(); for (auto iter = mMonitorList.begin(); iter != mMonitorList.end(); iter++) { Gpio *obj = *iter; int pin = obj->getPin(); switch (mMonType[pin]) { case INACTIVE: break; case MON_IN: monitorInput(pin, now); break; case PWM_RANDOM: monitorPwmRandom(pin, now); break; case PWM_LINEAR: monitorPwmLinear(pin, now); break; case PWM_SINE: monitorPwmSine(pin, now); break; default: printf("Unknown monitor pin type\n", mMonType[pin]); mMonitorRunning = false; pthread_exit(NULL); } } Engine::sleep(10); } pthread_exit(NULL); }
static int doWindowsPipeConnected (NamedPipeObject *obj) { return monitorInput(obj); }