예제 #1
0
//FIXME not the correct place
static void send_filter_status(struct transport_tx *trans, struct link_device *dev) {
  uint8_t mde = 3;
  if (ahrs.status == AHRS_UNINIT) mde = 2;
  if (ahrs_timeout_counter > 10) mde = 5;
  uint16_t val = 0;
  pprz_msg_send_STATE_FILTER_STATUS(trans, dev, AC_ID, &mde, &val);
}
예제 #2
0
static void send_status(struct transport_tx *trans, struct link_device *dev)
{
  uint16_t contrast = abs(infrared.roll) + abs(infrared.pitch) + abs(infrared.top);
  uint8_t mde = 3;
  uint8_t id = INFRARED_FILTER_ID;
  if (contrast < 50) { mde = 7; }
  pprz_msg_send_STATE_FILTER_STATUS(trans, dev, AC_ID, &id, &mde, &contrast);
}
예제 #3
0
static void send_filter_status(struct transport_tx *trans, struct link_device *dev)
{
  uint8_t mde = 3;
  if (!DefaultAhrsImpl.is_aligned) { mde = 2; }
  if (navdata.imu_lost) { mde = 5; }
  uint16_t val = navdata.lost_imu_frames;
  pprz_msg_send_STATE_FILTER_STATUS(trans, dev, AC_ID, &mde, &val);
}
static void send_filter_status(struct transport_tx *trans, struct link_device *dev)
{
  uint8_t mde = 3;
  uint16_t val = 0;
  if (!ahrs_dcm.is_aligned) { mde = 2; }
  uint32_t t_diff = get_sys_time_usec() - ahrs_dcm_last_stamp;
  /* set lost if no new gyro measurements for 50ms */
  if (t_diff > 50000) { mde = 5; }
  pprz_msg_send_STATE_FILTER_STATUS(trans, dev, AC_ID, &ahrs_dcm_id, &mde, &val);
}
예제 #5
0
static void send_filter_status(struct transport_tx *trans, struct link_device *dev)
{
  uint8_t mde = 3; // OK
  uint16_t val = 0;
  if (!ins_mekf_wind.is_aligned) {
    mde = 2; // ALIGN
  } else if (!ins_mekf_wind.baro_initialized || !ins_mekf_wind.gps_initialized) {
    mde = 1; // INIT
  }
  uint32_t t_diff = get_sys_time_usec() - last_imu_stamp;
  /* set lost if no new gyro measurements for 50ms */
  if (t_diff > 50000) {
    mde = 5; // IMU_LOST
  }
  uint8_t id = INS_MEKF_WIND_FILTER_ID;
  pprz_msg_send_STATE_FILTER_STATUS(trans, dev, AC_ID, &id, &mde, &val);
}