void AhrsInitHandles(void)
{
	int idx = 0;
//Note: the first item in this list has the highest priority
//the last has the lowest priority
	ADDHANDLE(idx++, AttitudeRaw);
	ADDHANDLE(idx++, AttitudeActual);
	ADDHANDLE(idx++, AHRSCalibration);
	ADDHANDLE(idx++, AhrsStatus);
	ADDHANDLE(idx++, BaroAltitude);
	ADDHANDLE(idx++, GPSPosition);
	ADDHANDLE(idx++, PositionActual);
	ADDHANDLE(idx++, VelocityActual);
	ADDHANDLE(idx++, HomeLocation);
	ADDHANDLE(idx++, AHRSSettings);
	if (idx != MAX_AHRS_OBJECTS) {
		PIOS_DEBUG_Assert(0);
	}
//Note: Only connect objects that the AHRS needs to read
//When the AHRS writes to these the data does a round trip
//AHRS->OP->AHRS due to these events
#ifndef IN_AHRS
	AHRSSettingsConnectCallback(ObjectUpdatedCb);
	BaroAltitudeConnectCallback(ObjectUpdatedCb);
	GPSPositionConnectCallback(ObjectUpdatedCb);
	HomeLocationConnectCallback(ObjectUpdatedCb);
	AHRSCalibrationConnectCallback(ObjectUpdatedCb);

#endif
}
Beispiel #2
0
/**
 * Initialise the module.  Called before the start function
 * \returns 0 on success or -1 if initialisation failed
 */
int32_t AttitudeInitialize(void)
{
    AttitudeActualInitialize();
    AirspeedActualInitialize();
    AirspeedSensorInitialize();
    AttitudeSettingsInitialize();
    PositionActualInitialize();
    VelocityActualInitialize();
    RevoSettingsInitialize();
    RevoCalibrationInitialize();
    EKFConfigurationInitialize();
    EKFStateVarianceInitialize();
    FlightStatusInitialize();

    // Initialize this here while we aren't setting the homelocation in GPS
    HomeLocationInitialize();

    // Initialize quaternion
    AttitudeActualData attitude;
    AttitudeActualGet(&attitude);
    attitude.q1 = 1.0f;
    attitude.q2 = 0.0f;
    attitude.q3 = 0.0f;
    attitude.q4 = 0.0f;
    AttitudeActualSet(&attitude);

    // Cannot trust the values to init right above if BL runs
    GyrosBiasData gyrosBias;
    GyrosBiasGet(&gyrosBias);
    gyrosBias.x = 0.0f;
    gyrosBias.y = 0.0f;
    gyrosBias.z = 0.0f;
    GyrosBiasSet(&gyrosBias);

    AttitudeSettingsConnectCallback(&settingsUpdatedCb);
    RevoSettingsConnectCallback(&settingsUpdatedCb);
    RevoCalibrationConnectCallback(&settingsUpdatedCb);
    HomeLocationConnectCallback(&settingsUpdatedCb);
    EKFConfigurationConnectCallback(&settingsUpdatedCb);
    FlightStatusConnectCallback(&settingsUpdatedCb);

    return 0;
}