Bi-monthly release with minor bug fixes and improvements
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
typedef void* sched_arg[2];
INDI::CCD::CCD() {
...
INDI::BaseDevice::AddScheduler("SCHED_EXPOSURE");
...
}
...
bool INDI:CCD::Schedule(char *name, void* args, timespec *tp) //virtual from INDI::BaseDevice
{
...
else if("SCHED_EXPOSURE"== name) {
timer_t timerid; //should not stay here
sched_arg arg;
arg[0] = (void*)this;
arg[1] = args;
struct sigevent sevp;
sevp.sigev_notify = SIGEV_THREAD;
sevp.sigev_notify_function = sched_start_exposure;
sevp.sigev_value = arg;
if(timer_create(CLOCK_REALTIME, &sevp, &timerid) == 0 && timer_settime(timerid, 0, tp, NULL))
return true;
}
else return false;
}
...
void* sched_start_exposure(void* arg)
{
sched_arg args = (sched_arg)arg;
INDI::CCD *sender = (INDI::CCD *)args[0];
sender->StartExposure((double)args[1]); //PROBLEM: protected member...just an example BTW
}
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.