Bi-monthly release with major changes to INDI properties and client API in addition to new drivers 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.
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.