Exemple #1
0
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;
}
Exemple #2
0
/**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;
}
Exemple #3
0
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);
}
Exemple #4
0
/**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;
}
Exemple #5
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;
}
Exemple #6
0
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;
}