how can i test Fusion Library ?

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

how can i test Fusion Library ?

1,433件の閲覧回数
navidansari
Contributor III

hi

im trying to port nxp fusion library to another MCU

i did download sdk that have issdk in it 

till now i dont have any sensor so i want to feed fusion library some data to see if it calculate right or not

this is my feedeing value function like

// sfg = pointer to top level (generally global) data structure for sensor fusion
int8_t FXAS21002_Init(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
{
    sfg->Gyro.iFIFOCount=0;
    sensor->isInitialized = F_USING_GYRO;
    sfg->Gyro.isEnabled = true;
    return SENSOR_ERROR_NONE;
}

// read FXAS21002 gyro over I2C
int8_t FXAS21002_Read(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
{
    int16_t     sample[3];
    // place the measurements read into the gyroscope buffer structure
    sample[CHX] = 200;
    sample[CHY] = 100;
    sample[CHZ] = 100;
    conditionSample(sample);  // truncate negative values to -32767
    addToFifo((union FifoSensor*) &(sfg->Gyro), GYRO_FIFO_SIZE, sample);
          return SENSOR_ERROR_NONE;
}

// sfg = pointer to top level (generally global) data structure for sensor fusion
int8_t FXOS8700_Init(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
{
    sfg->Accel.iFIFOCount=0;
    sensor->isInitialized = F_USING_ACCEL;
    sfg->Accel.isEnabled = true;
    return SENSOR_ERROR_NONE;
}

// read FXAS21002 gyro over I2C
int8_t FXOS8700_Read(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
{
    int16_t     sample[3];
    // place the measurements read into the gyroscope buffer structure
    sample[CHX] = 300;
    sample[CHY] = 100;
    sample[CHZ] = 100;
    conditionSample(sample);  // truncate negative values to -32767
    addToFifo((union FifoSensor*) &(sfg->Accel), ACCEL_FIFO_SIZE, sample);
          return SENSOR_ERROR_NONE;
}

// sfg = pointer to top level (generally global) data structure for sensor fusion
int8_t MPL3115_Init(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
{
    sfg->Mag.iFIFOCount=0;
    sensor->isInitialized = F_USING_MAG;
    sfg->Mag.isEnabled = true;
    return SENSOR_ERROR_NONE;
}

// read FXAS21002 gyro over I2C
int8_t MPL3115_Read(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
{
    int16_t     sample[3];
    // place the measurements read into the gyroscope buffer structure
    sample[CHX] = 100;
    sample[CHY] = 100;
    sample[CHZ] = 200;
    conditionSample(sample);  // truncate negative values to -32767
    addToFifo((union FifoSensor*) &(sfg->Mag), MAG_FIFO_SIZE, sample);
          return SENSOR_ERROR_NONE;
}

and then in the rest of main.c

// Global data structures
SensorFusionGlobals sfg;                ///< This is the primary sensor fusion data structure
struct ControlSubsystem controlSubsystem;      ///< used for serial communications
struct StatusSubsystem statusSubsystem;        ///< provides visual (usually LED) status indicator
struct PhysicalSensor sensors[3];              ///< This implementation uses up to 3 sensors

registerDeviceInfo_t i2cBusInfo ;
typedef struct _ARM_DRIVER_I2C {
  char navid;                                                               ///< Pointer to \ref ARM_I2C_GetStatus : Get I2C status.
} const ARM_DRIVER_I2C;

int main(){

     ARM_DRIVER_I2C* I2Cdrv ;;   // defined in the <shield>.h file
     
     initializeControlPort(&controlSubsystem);                           // configure pins and ports for the control sub-system
  initializeStatusSubsystem(&statusSubsystem);                        // configure pins and ports for the status sub-system
  initSensorFusionGlobals(&sfg, &statusSubsystem, &controlSubsystem); // Initialize sensor fusion structures
     
     sfg.installSensor(&sfg, &sensors[0], 0,  1, (void*) I2Cdrv, &i2cBusInfo, FXOS8700_Init,  FXOS8700_Read);
     sfg.installSensor(&sfg, &sensors[1], 0, 1, (void*) I2Cdrv, &i2cBusInfo, FXAS21002_Init, FXAS21002_Read);
     sfg.installSensor(&sfg, &sensors[2], 0,   1, (void*) I2Cdrv, &i2cBusInfo, MPL3115_Init,   MPL3115_Read);
     
     sfg.initializeFusionEngine(&sfg);             // This will initialize sensors and magnetic calibration
     
     
     
     
     
     int i = 0 ;
     
     while(1){
          
          sfg.readSensors(&sfg, 1);           // Reads sensors, applies HAL and does averaging (if applicable)
    sfg.conditionSensorReadings(&sfg);  // magCal is run as part of this
    sfg.runFusion(&sfg);                // Run the actual fusion algorithms
    sfg.applyPerturbation(&sfg);        // apply debug perturbation (testing only)
    sfg.loopcounter++;                  // The loop counter is used to "serialize" mag cal operations
    


     }

}

u see data that i feed is in sample variable in each sensor read function 

when i watch sfg. SV_9DOF_GBY_KALMAN  all of the parameter is zero

what valuse should i feed in accel and mag and gyro to see if it work right . do u have any sample to give me so i can try with it?

my build.h 

#define F_USING_ACCEL           0x0001  ///< nominally 0x0001 if an accelerometer is to be used, 0x0000 otherwise
#define F_USING_MAG             0x0002  ///< nominally 0x0002 if an magnetometer  is to be used, 0x0000 otherwise
#define F_USING_GYRO            0x0004  ///< nominally 0x0004 if a gyro           is to be used, 0x0000 otherwise
#define F_USING_PRESSURE        0x0000  ///< nominally 0x0008 if altimeter        is to be used, 0x0000 otherwise
#define F_USING_TEMPERATURE     0x0000  ///< nominally 0x0010 if temp sensor      is to be used, 0x0000 otherwise
#define F_ALL_SENSORS           0x001F  ///< refers to all applicable sensor types for the given physical unit
#define F_1DOF_P_BASIC             0x0000     ///< 1DOF pressure (altitude) and temperature algorithm selector  - 0x0100 to include, 0x0000 otherwise
#define F_3DOF_G_BASIC             0x0200     ///< 3DOF accel tilt (accel) algorithm selector                   - 0x0200 to include, 0x0000 otherwise
#define F_3DOF_B_BASIC             0x0400     ///< 3DOF mag eCompass (vehicle/mag) algorithm selector           - 0x0400 to include, 0x0000 otherwise
#define F_3DOF_Y_BASIC             0x0800     ///< 3DOF gyro integration algorithm selector                     - 0x0800 to include, 0x0000 otherwise
#define F_6DOF_GB_BASIC             0x1000     ///< 6DOF accel and mag eCompass algorithm selector               - 0x1000 to include, 0x0000 otherwise
#define F_6DOF_GY_KALMAN        0x2000     ///< 6DOF accel and gyro (Kalman) algorithm selector              - 0x2000 to include, 0x0000 otherwise
#define F_9DOF_GBY_KALMAN     0x4000     ///< 9DOF accel, mag and gyro algorithm selector                  - 0x4000 to include, 0x0000 otherwise

thanks allot

ラベル(1)
0 件の賞賛
0 返答(返信)
%3CLINGO-SUB%20id%3D%22lingo-sub-812740%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EFusion%20%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%82%92%E3%83%86%E3%82%B9%E3%83%88%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-812740%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3Ehi%3C%2FP%3E%3CP%3ENXP%20Fusion%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%82%92%E5%88%A5%E3%81%AEMCU%E3%81%AB%E7%A7%BB%E6%A4%8D%E3%81%97%E3%82%88%E3%81%86%E3%81%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%3C%2FP%3E%3CP%3E%E7%A7%81%E3%81%AFissdk%E3%82%92%E5%90%AB%E3%82%80sdk%E3%82%92%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%3C%2FP%3E%3CP%3E%E4%BB%8A%E3%81%AE%E3%81%A8%E3%81%93%E3%82%8D%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%E3%81%8C%E3%81%AA%E3%81%84%E3%81%AE%E3%81%A7%E3%80%81Fusion%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AB%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%85%A5%E5%8A%9B%E3%81%97%E3%81%A6%E3%81%BF%E3%81%A6%E3%80%81%E6%AD%A3%E3%81%97%E3%81%8F%E8%A8%88%E7%AE%97%E3%81%95%E3%82%8C%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%9F%E3%81%84%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E3%81%93%E3%82%8C%E3%81%AF%E7%A7%81%E3%81%AE%E3%83%95%E3%82%A3%E3%83%BC%E3%83%89%E5%80%A4%E9%96%A2%E6%95%B0%E3%81%A7%E3%81%99%3C%2FP%3E%3CPRE%20class%3D%22language-c%20line-numbers%22%3E%3CCODE%20translate%3D%22no%22%3E%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20sfg%20%3D%20pointer%20to%20top%20level%20(generally%20global)%20data%20structure%20for%20sensor%20fusion%3C%2FSPAN%3E%0Aint8_t%20%3CSPAN%20class%3D%22token%20function%22%3EFXAS21002_Init%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22keyword%20token%22%3Estruct%3C%2FSPAN%3E%20PhysicalSensor%20%3CSPAN%20class%3D%22operator%20token%22%3E*%3C%2FSPAN%3Esensor%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20SensorFusionGlobals%20%3CSPAN%20class%3D%22operator%20token%22%3E*%3C%2FSPAN%3Esfg%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22punctuation%20token%22%3E%7B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sfg%3CSPAN%20class%3D%22operator%20token%22%3E-%26gt%3B%3C%2FSPAN%3EGyro%3CSPAN%20class%3D%22punctuation%20token%22%3E.%3C%2FSPAN%3EiFIFOCount%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22number%20token%22%3E0%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sensor%3CSPAN%20class%3D%22operator%20token%22%3E-%26gt%3B%3C%2FSPAN%3EisInitialized%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20F_USING_GYRO%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sfg%3CSPAN%20class%3D%22operator%20token%22%3E-%26gt%3B%3C%2FSPAN%3EGyro%3CSPAN%20class%3D%22punctuation%20token%22%3E.%3C%2FSPAN%3EisEnabled%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20true%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22keyword%20token%22%3Ereturn%3C%2FSPAN%3E%20SENSOR_ERROR_NONE%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22punctuation%20token%22%3E%7D%3C%2FSPAN%3E%0A%0A%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20read%20FXAS21002%20gyro%20over%20I2C%3C%2FSPAN%3E%0Aint8_t%20%3CSPAN%20class%3D%22token%20function%22%3EFXAS21002_Read%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22keyword%20token%22%3Estruct%3C%2FSPAN%3E%20PhysicalSensor%20%3CSPAN%20class%3D%22operator%20token%22%3E*%3C%2FSPAN%3Esensor%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20SensorFusionGlobals%20%3CSPAN%20class%3D%22operator%20token%22%3E*%3C%2FSPAN%3Esfg%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22punctuation%20token%22%3E%7B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20int16_t%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sample%3CSPAN%20class%3D%22punctuation%20token%22%3E%5B%3C%2FSPAN%3E%3CSPAN%20class%3D%22number%20token%22%3E3%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%5D%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20place%20the%20measurements%20read%20into%20the%20gyroscope%20buffer%20structure%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sample%3CSPAN%20class%3D%22punctuation%20token%22%3E%5B%3C%2FSPAN%3ECHX%3CSPAN%20class%3D%22punctuation%20token%22%3E%5D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22number%20token%22%3E200%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sample%3CSPAN%20class%3D%22punctuation%20token%22%3E%5B%3C%2FSPAN%3ECHY%3CSPAN%20class%3D%22punctuation%20token%22%3E%5D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22number%20token%22%3E100%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sample%3CSPAN%20class%3D%22punctuation%20token%22%3E%5B%3C%2FSPAN%3ECHZ%3CSPAN%20class%3D%22punctuation%20token%22%3E%5D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22number%20token%22%3E100%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22token%20function%22%3EconditionSample%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3Esample%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20truncate%20negative%20values%20to%20-32767%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22token%20function%22%3EaddToFifo%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22keyword%20token%22%3Eunion%3C%2FSPAN%3E%20FifoSensor%3CSPAN%20class%3D%22operator%20token%22%3E*%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3Esfg%3CSPAN%20class%3D%22operator%20token%22%3E-%26gt%3B%3C%2FSPAN%3EGyro%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20GYRO_FIFO_SIZE%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20sample%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3CSPAN%20class%3D%22keyword%20token%22%3Ereturn%3C%2FSPAN%3E%20SENSOR_ERROR_NONE%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22punctuation%20token%22%3E%7D%3C%2FSPAN%3E%0A%0A%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20sfg%20%3D%20pointer%20to%20top%20level%20(generally%20global)%20data%20structure%20for%20sensor%20fusion%3C%2FSPAN%3E%0Aint8_t%20%3CSPAN%20class%3D%22token%20function%22%3EFXOS8700_Init%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22keyword%20token%22%3Estruct%3C%2FSPAN%3E%20PhysicalSensor%20%3CSPAN%20class%3D%22operator%20token%22%3E*%3C%2FSPAN%3Esensor%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20SensorFusionGlobals%20%3CSPAN%20class%3D%22operator%20token%22%3E*%3C%2FSPAN%3Esfg%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22punctuation%20token%22%3E%7B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sfg%3CSPAN%20class%3D%22operator%20token%22%3E-%26gt%3B%3C%2FSPAN%3EAccel%3CSPAN%20class%3D%22punctuation%20token%22%3E.%3C%2FSPAN%3EiFIFOCount%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22number%20token%22%3E0%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sensor%3CSPAN%20class%3D%22operator%20token%22%3E-%26gt%3B%3C%2FSPAN%3EisInitialized%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20F_USING_ACCEL%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sfg%3CSPAN%20class%3D%22operator%20token%22%3E-%26gt%3B%3C%2FSPAN%3EAccel%3CSPAN%20class%3D%22punctuation%20token%22%3E.%3C%2FSPAN%3EisEnabled%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20true%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22keyword%20token%22%3Ereturn%3C%2FSPAN%3E%20SENSOR_ERROR_NONE%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22punctuation%20token%22%3E%7D%3C%2FSPAN%3E%0A%0A%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20read%20FXAS21002%20gyro%20over%20I2C%3C%2FSPAN%3E%0Aint8_t%20%3CSPAN%20class%3D%22token%20function%22%3EFXOS8700_Read%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22keyword%20token%22%3Estruct%3C%2FSPAN%3E%20PhysicalSensor%20%3CSPAN%20class%3D%22operator%20token%22%3E*%3C%2FSPAN%3Esensor%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20SensorFusionGlobals%20%3CSPAN%20class%3D%22operator%20token%22%3E*%3C%2FSPAN%3Esfg%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22punctuation%20token%22%3E%7B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20int16_t%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sample%3CSPAN%20class%3D%22punctuation%20token%22%3E%5B%3C%2FSPAN%3E%3CSPAN%20class%3D%22number%20token%22%3E3%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%5D%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20place%20the%20measurements%20read%20into%20the%20gyroscope%20buffer%20structure%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sample%3CSPAN%20class%3D%22punctuation%20token%22%3E%5B%3C%2FSPAN%3ECHX%3CSPAN%20class%3D%22punctuation%20token%22%3E%5D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22number%20token%22%3E300%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sample%3CSPAN%20class%3D%22punctuation%20token%22%3E%5B%3C%2FSPAN%3ECHY%3CSPAN%20class%3D%22punctuation%20token%22%3E%5D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22number%20token%22%3E100%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sample%3CSPAN%20class%3D%22punctuation%20token%22%3E%5B%3C%2FSPAN%3ECHZ%3CSPAN%20class%3D%22punctuation%20token%22%3E%5D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22number%20token%22%3E100%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22token%20function%22%3EconditionSample%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3Esample%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20truncate%20negative%20values%20to%20-32767%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22token%20function%22%3EaddToFifo%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22keyword%20token%22%3Eunion%3C%2FSPAN%3E%20FifoSensor%3CSPAN%20class%3D%22operator%20token%22%3E*%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3Esfg%3CSPAN%20class%3D%22operator%20token%22%3E-%26gt%3B%3C%2FSPAN%3EAccel%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20ACCEL_FIFO_SIZE%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20sample%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3CSPAN%20class%3D%22keyword%20token%22%3Ereturn%3C%2FSPAN%3E%20SENSOR_ERROR_NONE%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22punctuation%20token%22%3E%7D%3C%2FSPAN%3E%0A%0A%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20sfg%20%3D%20pointer%20to%20top%20level%20(generally%20global)%20data%20structure%20for%20sensor%20fusion%3C%2FSPAN%3E%0Aint8_t%20%3CSPAN%20class%3D%22token%20function%22%3EMPL3115_Init%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22keyword%20token%22%3Estruct%3C%2FSPAN%3E%20PhysicalSensor%20%3CSPAN%20class%3D%22operator%20token%22%3E*%3C%2FSPAN%3Esensor%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20SensorFusionGlobals%20%3CSPAN%20class%3D%22operator%20token%22%3E*%3C%2FSPAN%3Esfg%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22punctuation%20token%22%3E%7B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sfg%3CSPAN%20class%3D%22operator%20token%22%3E-%26gt%3B%3C%2FSPAN%3EMag%3CSPAN%20class%3D%22punctuation%20token%22%3E.%3C%2FSPAN%3EiFIFOCount%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22number%20token%22%3E0%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sensor%3CSPAN%20class%3D%22operator%20token%22%3E-%26gt%3B%3C%2FSPAN%3EisInitialized%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20F_USING_MAG%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sfg%3CSPAN%20class%3D%22operator%20token%22%3E-%26gt%3B%3C%2FSPAN%3EMag%3CSPAN%20class%3D%22punctuation%20token%22%3E.%3C%2FSPAN%3EisEnabled%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20true%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22keyword%20token%22%3Ereturn%3C%2FSPAN%3E%20SENSOR_ERROR_NONE%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22punctuation%20token%22%3E%7D%3C%2FSPAN%3E%0A%0A%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20read%20FXAS21002%20gyro%20over%20I2C%3C%2FSPAN%3E%0Aint8_t%20%3CSPAN%20class%3D%22token%20function%22%3EMPL3115_Read%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22keyword%20token%22%3Estruct%3C%2FSPAN%3E%20PhysicalSensor%20%3CSPAN%20class%3D%22operator%20token%22%3E*%3C%2FSPAN%3Esensor%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20SensorFusionGlobals%20%3CSPAN%20class%3D%22operator%20token%22%3E*%3C%2FSPAN%3Esfg%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22punctuation%20token%22%3E%7B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20int16_t%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sample%3CSPAN%20class%3D%22punctuation%20token%22%3E%5B%3C%2FSPAN%3E%3CSPAN%20class%3D%22number%20token%22%3E3%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%5D%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20place%20the%20measurements%20read%20into%20the%20gyroscope%20buffer%20structure%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sample%3CSPAN%20class%3D%22punctuation%20token%22%3E%5B%3C%2FSPAN%3ECHX%3CSPAN%20class%3D%22punctuation%20token%22%3E%5D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22number%20token%22%3E100%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sample%3CSPAN%20class%3D%22punctuation%20token%22%3E%5B%3C%2FSPAN%3ECHY%3CSPAN%20class%3D%22punctuation%20token%22%3E%5D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22number%20token%22%3E100%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sample%3CSPAN%20class%3D%22punctuation%20token%22%3E%5B%3C%2FSPAN%3ECHZ%3CSPAN%20class%3D%22punctuation%20token%22%3E%5D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22number%20token%22%3E200%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22token%20function%22%3EconditionSample%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3Esample%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20truncate%20negative%20values%20to%20-32767%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22token%20function%22%3EaddToFifo%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22keyword%20token%22%3Eunion%3C%2FSPAN%3E%20FifoSensor%3CSPAN%20class%3D%22operator%20token%22%3E*%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3Esfg%3CSPAN%20class%3D%22operator%20token%22%3E-%26gt%3B%3C%2FSPAN%3EMag%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20MAG_FIFO_SIZE%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20sample%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3CSPAN%20class%3D%22keyword%20token%22%3Ereturn%3C%2FSPAN%3E%20SENSOR_ERROR_NONE%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22punctuation%20token%22%3E%7D%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22line-numbers-rows%22%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%81%9D%E3%81%97%E3%81%A6main.c%E3%81%AE%E6%AE%8B%E3%82%8A%E3%81%AE%E9%83%A8%E5%88%86%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CPRE%20class%3D%22language-c%20line-numbers%22%3E%3CCODE%20translate%3D%22no%22%3E%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20Global%20data%20structures%3C%2FSPAN%3E%0ASensorFusionGlobals%20sfg%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%2F%26lt%3B%20This%20is%20the%20primary%20sensor%20fusion%20data%20structure%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22keyword%20token%22%3Estruct%3C%2FSPAN%3E%20ControlSubsystem%20controlSubsystem%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%2F%26lt%3B%20used%20for%20serial%20communications%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22keyword%20token%22%3Estruct%3C%2FSPAN%3E%20StatusSubsystem%20statusSubsystem%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%2F%26lt%3B%20provides%20visual%20(usually%20LED)%20status%20indicator%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22keyword%20token%22%3Estruct%3C%2FSPAN%3E%20PhysicalSensor%20sensors%3CSPAN%20class%3D%22punctuation%20token%22%3E%5B%3C%2FSPAN%3E%3CSPAN%20class%3D%22number%20token%22%3E3%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%5D%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%2F%26lt%3B%20This%20implementation%20uses%20up%20to%203%20sensors%3C%2FSPAN%3E%0A%0AregisterDeviceInfo_t%20i2cBusInfo%20%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22keyword%20token%22%3Etypedef%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22keyword%20token%22%3Estruct%3C%2FSPAN%3E%20_ARM_DRIVER_I2C%20%3CSPAN%20class%3D%22punctuation%20token%22%3E%7B%3C%2FSPAN%3E%0A%26nbsp%3B%20%3CSPAN%20class%3D%22keyword%20token%22%3Echar%3C%2FSPAN%3E%20navid%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%2F%26lt%3B%20Pointer%20to%20%5Cref%20ARM_I2C_GetStatus%20%3A%20Get%20I2C%20status.%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22punctuation%20token%22%3E%7D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22keyword%20token%22%3Econst%3C%2FSPAN%3E%20ARM_DRIVER_I2C%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%0A%3CSPAN%20class%3D%22keyword%20token%22%3Eint%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22token%20function%22%3Emain%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%7B%3C%2FSPAN%3E%0A%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3BARM_DRIVER_I2C%3CSPAN%20class%3D%22operator%20token%22%3E*%3C%2FSPAN%3E%20I2Cdrv%20%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20defined%20in%20the%20%3CSHIELD%3E.h%20file%3C%2FSHIELD%3E%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3CSPAN%20class%3D%22token%20function%22%3EinitializeControlPort%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3EcontrolSubsystem%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20configure%20pins%20and%20ports%20for%20the%20control%20sub-system%3C%2FSPAN%3E%0A%26nbsp%3B%20%3CSPAN%20class%3D%22token%20function%22%3EinitializeStatusSubsystem%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3EstatusSubsystem%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20configure%20pins%20and%20ports%20for%20the%20status%20sub-system%3C%2FSPAN%3E%0A%26nbsp%3B%20%3CSPAN%20class%3D%22token%20function%22%3EinitSensorFusionGlobals%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3Esfg%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3EstatusSubsystem%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3EcontrolSubsystem%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20Initialize%20sensor%20fusion%20structures%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3Bsfg%3CSPAN%20class%3D%22punctuation%20token%22%3E.%3C%2FSPAN%3E%3CSPAN%20class%3D%22token%20function%22%3EinstallSensor%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3Esfg%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3Esensors%3CSPAN%20class%3D%22punctuation%20token%22%3E%5B%3C%2FSPAN%3E%3CSPAN%20class%3D%22number%20token%22%3E0%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%5D%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22number%20token%22%3E0%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%26nbsp%3B%20%3CSPAN%20class%3D%22number%20token%22%3E1%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22keyword%20token%22%3Evoid%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E*%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%20I2Cdrv%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3Ei2cBusInfo%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20FXOS8700_Init%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%26nbsp%3B%20FXOS8700_Read%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3Bsfg%3CSPAN%20class%3D%22punctuation%20token%22%3E.%3C%2FSPAN%3E%3CSPAN%20class%3D%22token%20function%22%3EinstallSensor%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3Esfg%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3Esensors%3CSPAN%20class%3D%22punctuation%20token%22%3E%5B%3C%2FSPAN%3E%3CSPAN%20class%3D%22number%20token%22%3E1%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%5D%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22number%20token%22%3E0%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22number%20token%22%3E1%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22keyword%20token%22%3Evoid%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E*%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%20I2Cdrv%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3Ei2cBusInfo%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20FXAS21002_Init%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20FXAS21002_Read%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3Bsfg%3CSPAN%20class%3D%22punctuation%20token%22%3E.%3C%2FSPAN%3E%3CSPAN%20class%3D%22token%20function%22%3EinstallSensor%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3Esfg%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3Esensors%3CSPAN%20class%3D%22punctuation%20token%22%3E%5B%3C%2FSPAN%3E%3CSPAN%20class%3D%22number%20token%22%3E2%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%5D%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22number%20token%22%3E0%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22number%20token%22%3E1%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22keyword%20token%22%3Evoid%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E*%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%20I2Cdrv%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3Ei2cBusInfo%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20MPL3115_Init%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%26nbsp%3B%26nbsp%3B%20MPL3115_Read%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3Bsfg%3CSPAN%20class%3D%22punctuation%20token%22%3E.%3C%2FSPAN%3E%3CSPAN%20class%3D%22token%20function%22%3EinitializeFusionEngine%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3Esfg%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20This%20will%20initialize%20sensors%20and%20magnetic%20calibration%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3CSPAN%20class%3D%22keyword%20token%22%3Eint%3C%2FSPAN%3E%20i%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22number%20token%22%3E0%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3CSPAN%20class%3D%22keyword%20token%22%3Ewhile%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22number%20token%22%3E1%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%7B%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3Bsfg%3CSPAN%20class%3D%22punctuation%20token%22%3E.%3C%2FSPAN%3E%3CSPAN%20class%3D%22token%20function%22%3EreadSensors%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3Esfg%3CSPAN%20class%3D%22punctuation%20token%22%3E%2C%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22number%20token%22%3E1%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20Reads%20sensors%2C%20applies%20HAL%20and%20does%20averaging%20(if%20applicable)%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sfg%3CSPAN%20class%3D%22punctuation%20token%22%3E.%3C%2FSPAN%3E%3CSPAN%20class%3D%22token%20function%22%3EconditionSensorReadings%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3Esfg%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20magCal%20is%20run%20as%20part%20of%20this%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sfg%3CSPAN%20class%3D%22punctuation%20token%22%3E.%3C%2FSPAN%3E%3CSPAN%20class%3D%22token%20function%22%3ErunFusion%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3Esfg%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20Run%20the%20actual%20fusion%20algorithms%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sfg%3CSPAN%20class%3D%22punctuation%20token%22%3E.%3C%2FSPAN%3E%3CSPAN%20class%3D%22token%20function%22%3EapplyPerturbation%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3Esfg%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20apply%20debug%20perturbation%20(testing%20only)%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sfg%3CSPAN%20class%3D%22punctuation%20token%22%3E.%3C%2FSPAN%3Eloopcounter%3CSPAN%20class%3D%22operator%20token%22%3E%2B%2B%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20The%20loop%20counter%20is%20used%20to%20%22serialize%22%20mag%20cal%20operations%3C%2FSPAN%3E%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%0A%0A%0A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3CSPAN%20class%3D%22punctuation%20token%22%3E%7D%3C%2FSPAN%3E%0A%0A%3CSPAN%20class%3D%22punctuation%20token%22%3E%7D%3C%2FSPAN%3E%3CSPAN%20class%3D%22line-numbers-rows%22%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%3C%2FP%3E%3CP%3E%E7%A7%81%E3%81%8C%E5%85%A5%E5%8A%9B%E3%81%97%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AF%E3%80%81%E5%90%84%E3%82%BB%E3%83%B3%E3%82%B5%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%E9%96%A2%E6%95%B0%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E5%A4%89%E6%95%B0%E3%81%AB%E3%81%82%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3ESFG%E3%82%92%E8%A6%B3%E3%82%8B%E3%81%A8%E3%81%8D%E3%80%82%3CSPAN%20class%3D%22%22%3ESV_9DOF_GBY_KALMAN%3C%2FSPAN%3E%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%81%8C%E3%82%BC%E3%83%AD%3C%2FP%3E%3CP%3E%E6%AD%A3%E3%81%97%E3%81%8F%E5%8B%95%E4%BD%9C%E3%81%99%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%80%81%E5%8A%A0%E9%80%9F%E3%80%81%E7%A3%81%E6%B0%97%E3%80%81%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%AD%E3%81%AB%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%E5%80%A4%E3%82%92%E5%85%A5%E5%8A%9B%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%E3%80%82%E8%A9%A6%E3%81%99%E3%81%9F%E3%82%81%E3%81%AB%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%82%92%E3%81%84%E3%81%9F%E3%81%A0%E3%81%91%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FP%3E%3CP%3E%E7%A7%81%E3%81%AE%E3%83%93%E3%83%AB%E3%83%89.h%3C%2FP%3E%3CPRE%20class%3D%22language-c%20line-numbers%22%3E%3CCODE%20translate%3D%22no%22%3E%3CSPAN%20class%3D%22property%20macro%20token%22%3E%23define%20F_USING_ACCEL%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x0001%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%2F%26lt%3B%20nominally%200x0001%20if%20an%20accelerometer%20is%20to%20be%20used%2C%200x0000%20otherwise%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22property%20macro%20token%22%3E%23define%20F_USING_MAG%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x0002%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%2F%26lt%3B%20nominally%200x0002%20if%20an%20magnetometer%26nbsp%3B%20is%20to%20be%20used%2C%200x0000%20otherwise%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22property%20macro%20token%22%3E%23define%20F_USING_GYRO%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x0004%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%2F%26lt%3B%20nominally%200x0004%20if%20a%20gyro%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20is%20to%20be%20used%2C%200x0000%20otherwise%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22property%20macro%20token%22%3E%23define%20F_USING_PRESSURE%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x0000%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%2F%26lt%3B%20nominally%200x0008%20if%20altimeter%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20is%20to%20be%20used%2C%200x0000%20otherwise%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22property%20macro%20token%22%3E%23define%20F_USING_TEMPERATURE%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x0000%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%2F%26lt%3B%20nominally%200x0010%20if%20temp%20sensor%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20is%20to%20be%20used%2C%200x0000%20otherwise%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22property%20macro%20token%22%3E%23define%20F_ALL_SENSORS%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x001F%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%2F%26lt%3B%20refers%20to%20all%20applicable%20sensor%20types%20for%20the%20given%20physical%20unit%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22property%20macro%20token%22%3E%23define%20F_1DOF_P_BASIC%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x0000%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%2F%26lt%3B%201DOF%20pressure%20(altitude)%20and%20temperature%20algorithm%20selector%26nbsp%3B%20-%200x0100%20to%20include%2C%200x0000%20otherwise%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22property%20macro%20token%22%3E%23define%20F_3DOF_G_BASIC%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x0200%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%2F%26lt%3B%203DOF%20accel%20tilt%20(accel)%20algorithm%20selector%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20-%200x0200%20to%20include%2C%200x0000%20otherwise%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22property%20macro%20token%22%3E%23define%20F_3DOF_B_BASIC%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x0400%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%2F%26lt%3B%203DOF%20mag%20eCompass%20(vehicle%2Fmag)%20algorithm%20selector%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20-%200x0400%20to%20include%2C%200x0000%20otherwise%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22property%20macro%20token%22%3E%23define%20F_3DOF_Y_BASIC%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x0800%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%2F%26lt%3B%203DOF%20gyro%20integration%20algorithm%20selector%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20-%200x0800%20to%20include%2C%200x0000%20otherwise%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22property%20macro%20token%22%3E%23define%20F_6DOF_GB_BASIC%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x1000%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%2F%26lt%3B%206DOF%20accel%20and%20mag%20eCompass%20algorithm%20selector%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20-%200x1000%20to%20include%2C%200x0000%20otherwise%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22property%20macro%20token%22%3E%23define%20F_6DOF_GY_KALMAN%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x2000%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%2F%26lt%3B%206DOF%20accel%20and%20gyro%20(Kalman)%20algorithm%20selector%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20-%200x2000%20to%20include%2C%200x0000%20otherwise%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22property%20macro%20token%22%3E%23define%20F_9DOF_GBY_KALMAN%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B0x4000%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%2F%26lt%3B%209DOF%20accel%2C%20mag%20and%20gyro%20algorithm%20selector%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20-%200x4000%20to%20include%2C%200x0000%20otherwise%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22line-numbers-rows%22%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%E6%9C%AC%E5%BD%93%E3%81%AB%E3%81%82%E3%82%8A%E3%81%8C%E3%81%A8%E3%81%86%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-812740%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3E%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BB%E3%83%95%E3%83%A5%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E