void mag_hmc58xx_module_event(void) { hmc58xx_event(&mag_hmc58xx); if (mag_hmc58xx.data_available) { #if MODULE_HMC58XX_UPDATE_AHRS // current timestamp uint32_t now_ts = get_sys_time_usec(); // set channel order struct Int32Vect3 mag = { (int32_t)(mag_hmc58xx.data.value[HMC58XX_CHAN_X]), (int32_t)(mag_hmc58xx.data.value[HMC58XX_CHAN_Y]), (int32_t)(mag_hmc58xx.data.value[HMC58XX_CHAN_Z]) }; // unscaled vector VECT3_COPY(imu.mag_unscaled, mag); // scale vector imu_scale_mag(&imu); AbiSendMsgIMU_MAG_INT32(MAG_HMC58XX_SENDER_ID, now_ts, &imu.mag); #endif #if MODULE_HMC58XX_SYNC_SEND mag_hmc58xx_report(); #endif #if MODULE_HMC58XX_UPDATE_AHRS || MODULE_HMC58XX_SYNC_SEND mag_hmc58xx.data_available = FALSE; #endif } }
void mag_hmc58xx_module_event(void) { hmc58xx_event(&mag_hmc58xx); #if MODULE_HMC58XX_SYNC_SEND if (mag_hmc58xx.data_available) { mag_hmc58xx_report(); mag_hmc58xx.data_available = FALSE; } #endif }