/*ARGSUSED*/ static void ActionStart(Widget gw, XEvent *event, String *params, Cardinal *num_params) { RepeaterWidget rw = (RepeaterWidget)gw; CLEAR_TIMEOUT(rw); if (rw->repeater.start_callbacks) XtCallCallbackList(gw, rw->repeater.start_callbacks, NULL); DO_CALLBACK(rw); rw->repeater.timer = ADD_TIMEOUT(rw, rw->repeater.initial_delay); rw->repeater.next_delay = rw->repeater.repeat_delay; }
void timeout_cb(int fd, short event, void *arg) { // printf("in timeout_cb\n"); DOWNLINK_SEND_ALIVE(DefaultChannel, 16, MD5SUM); float foof = 3.14159265358979323846; double food = 3.14159265358979323846; DOWNLINK_SEND_TEST_FORMAT(DefaultChannel, &food, &foof); UdpTransportPeriodic(); ADD_TIMEOUT(); }
int main(int argc, char** argv) { network = network_new(GCS_HOST, GCS_PORT, DATALINK_PORT, FALSE); /* Initalize the event library */ event_init(); /* Add a timeout event */ evtimer_set(&timeout, timeout_cb, &timeout); ADD_TIMEOUT(); event_dispatch(); return 0; }
/*ARGSUSED*/ static void tic(XtPointer client_data, XtIntervalId *id) { RepeaterWidget rw = (RepeaterWidget)client_data; rw->repeater.timer = 0; /* timer is removed */ if (rw->repeater.flash) { Widget w = (Widget)rw; XClearWindow(XtDisplay(w), XtWindow(w)); XtCallActionProc(w, "reset", NULL, NULL, 0); XClearWindow(XtDisplay(w), XtWindow(w)); XtCallActionProc(w, "set", NULL, NULL, 0); } DO_CALLBACK(rw); rw->repeater.timer = ADD_TIMEOUT(rw, rw->repeater.next_delay); if (rw->repeater.decay) { rw->repeater.next_delay -= rw->repeater.decay; if (rw->repeater.next_delay < rw->repeater.minimum_delay) rw->repeater.next_delay = rw->repeater.minimum_delay; } }