How many kinds of GPS protocol are supported in openimu300 opensource code?

As title.

OpenIMU open-source code has built-in support for the following GPS protocols:

    However, NMEA is not recommened since it lacks some infomation required by the fusion algorithm.

A framework to support other GPS protocols is provided. Users can refer to driverGPS.c for details.

Generally a GPS receiver should provide information to fill the members of the following struct:

typedef struct  {
    int                  gpsValid;   // 1 if data is valid
    uint8_t              updateFlag;    // 1 if contains new data
    double               latitude;   // latitude ,  degrees 
    double               longitude;  // longitude,  degrees 
    double               vNed[3];    // velocities,  m/s  NED (North East Down) x, y, z
    double               trueCourse; // [deg]
    double               rawGroundSpeed;    // NMEA kph, SiRf m/s - change to m/s
    double               altitude;          // above ellipsoid [m]
    double               GPSSecondFraction; 
    float                altEllipsoid; // [km] altitude above ellipsoid for WMM

    uint32_t             itow;         // gps Time Of Week, miliseconds
    uint8_t              GPSmonth;     // mm
    uint8_t              GPSday;       // dd
    uint8_t              GPSyear;      // yy last two digits of year
    char                 GPSHour;      // hh
    char                 GPSMinute;    // mm
    char                 GPSSecond;    // ss

    float                GPSHorizAcc, GPSVertAcc;
    float                HDOP;
} gpsDataStruct_t;