int srv_handle_meas_ctl_req(srv_t *srv) { meas_ctl_req_t *req = (meas_ctl_req_t *)srv->req; if(srv->test_mode) { srv_update_status(srv); return RRW_RV_BUSY; } switch(req->mode) { case RRW_MEAS_ON_REQ: if(rcli_meas_mode(srv->rcli)==MEAS_MODE_CYCLE) { rcli_en_onreq_mode(srv->rcli); } rcli_set_cycle_dly(srv->rcli,req->cycle_dly); rcli_set_cycle_dur(srv->rcli,req->cycle_dur); break; case RRW_MEAS_CYCLE: if(rcli_meas_mode(srv->rcli)==MEAS_MODE_ON_REQ) { rcli_set_cycle_dly(srv->rcli,req->cycle_dly); rcli_set_cycle_dur(srv->rcli,req->cycle_dur); rcli_en_cycle_mode(srv->rcli); } else { rcli_cycle_stop(srv->rcli); rcli_set_cycle_dly(srv->rcli,req->cycle_dly); rcli_set_cycle_dur(srv->rcli,req->cycle_dur); rcli_cycle_start(srv->rcli); } break; } srv_update_status(srv); return RRW_RV_SUCCESS; }
/**Perform measurement control requst related routines*/ int srv_handle_meas_ctl_req(srv_t *srv) { meas_ctl_req_t *req = (meas_ctl_req_t *)srv->req; switch(req->mode) { case RRW_MEAS_ON_REQ: //if in cyclic mode switch to on-request mode if(rcli_meas_mode(srv->rcli)==MEAS_MODE_CYCLE) { rcli_en_onreq_mode(srv->rcli); } // rcli_set_cycle_dly(srv->rcli,req->cycle_dly); rcli_set_cycle_dur(srv->rcli,req->cycle_dur); break; case RRW_MEAS_CYCLE: //if in on-request mode switch to cyclic mode if(rcli_meas_mode(srv->rcli)==MEAS_MODE_ON_REQ) { // rcli_set_cycle_dly(srv->rcli,req->cycle_dly); rcli_set_cycle_dur(srv->rcli,req->cycle_dur); rcli_en_cycle_mode(srv->rcli); } else { rcli_cycle_stop(srv->rcli); // rcli_set_cycle_dly(srv->rcli,req->cycle_dly); rcli_set_cycle_dur(srv->rcli,req->cycle_dur); rcli_cycle_start(srv->rcli); } break; } srv_update_status(srv); return RRW_RV_SUCCESS; }
void srv_test_mode(srv_t *srv, int ctl) { if(ctl) { if(rcli_meas_mode(srv->rcli)==MEAS_MODE_CYCLE) rcli_cycle_stop(srv->rcli); srv->test_mode = 1; } else { if(rcli_meas_mode(srv->rcli)==MEAS_MODE_CYCLE) rcli_cycle_start(srv->rcli); srv->test_mode = 0; } srv_update_status(srv); }
/**Update status*/ void srv_update_status(srv_t *srv) { srv->status.has_unread = rcli_has_unread(srv->rcli); srv->status.last_unsucc = rcli_is_last_unsucc(srv->rcli); srv->status.meas_mode = rcli_meas_mode(srv->rcli); srv->status.ready = srv_is_ready(srv); srv->status.fault = 0; }
/**Perform data request related routines*/ int srv_handle_data_req(srv_t *srv) { //perform measurement if in on-request mode if(rcli_meas_mode(srv->rcli)==MEAS_MODE_ON_REQ) { rcli_meas(srv->rcli); } srv_update_status(srv); return RRW_RV_SUCCESS; }
int srv_handle_data_req(srv_t *srv) { if(srv->test_mode) { return RRW_RV_BUSY; } if(rcli_meas_mode(srv->rcli)==MEAS_MODE_ON_REQ) { rcli_meas(srv->rcli); } srv_update_status(srv); return RRW_RV_SUCCESS; }