5 #if CONFIG_HAL_BOARD == HAL_BOARD_SITL 13 if (
_sitl !=
nullptr) {
39 uint32_t best_time_delta = 1000;
40 uint8_t best_index = 0;
58 uint32_t time_delta = abs((int32_t)(delayed_time -
buffer[i].time));
60 if (time_delta < best_time_delta) {
62 best_time_delta = time_delta;
65 if (best_time_delta < 1000) {
66 new_mag_data =
buffer[best_index].data;
static AP_Param * find_object(const char *name)
VectorN< readings_compass, buffer_length > buffer
void rotate_field(Vector3f &mag, uint8_t instance)
void publish_filtered_field(const Vector3f &mag, uint8_t instance)
void correct_field(Vector3f &mag, uint8_t i)
#define HAL_SEMAPHORE_BLOCK_FOREVER
virtual bool take(uint32_t timeout_ms) WARN_IF_UNUSED=0
void _setup_earth_field()
#define FUNCTOR_BIND(obj, func, rettype,...)
virtual bool take_nonblocking() WARN_IF_UNUSED=0
uint8_t register_compass(void) const
static const uint8_t buffer_length
uint8_t _compass_instance[SITL_NUM_COMPASSES]
virtual void register_timer_process(AP_HAL::MemberProc)=0
Vector3f rand_vec3f(void)
#define SITL_NUM_COMPASSES
void publish_raw_field(const Vector3f &mag, uint8_t instance)
uint32_t _last_sample_time
AP_HAL::Scheduler * scheduler
AP_Compass_SITL(Compass &)