You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.4 KiB
69 lines
1.4 KiB
#ifndef GPS_IMU_h |
|
#define GPS_IMU_h |
|
|
|
#include <inttypes.h> |
|
|
|
#define IMU_MAXPAYLOAD 32 |
|
|
|
class GPS_IMU_Class |
|
{ |
|
private: |
|
// Internal variables |
|
union int_union { |
|
int16_t word; |
|
uint8_t byte[2]; |
|
} intUnion; |
|
|
|
union long_union { |
|
int32_t dword; |
|
uint8_t byte[4]; |
|
} longUnion; |
|
|
|
uint8_t ck_a; // Packet checksum |
|
uint8_t ck_b; |
|
uint8_t IMU_ck_a; |
|
uint8_t IMU_ck_b; |
|
uint8_t IMU_step; |
|
uint8_t IMU_class; |
|
uint8_t message_num; |
|
uint8_t payload_length; |
|
uint8_t payload_counter; |
|
uint8_t buffer[IMU_MAXPAYLOAD]; |
|
|
|
long IMU_timer; |
|
long IMU_ecefVZ; |
|
void IMU_join_data(); |
|
void IMU2_join_data(); |
|
void GPS_join_data(); |
|
void checksum(unsigned char IMU_data); |
|
long join_4_bytes(unsigned char Buffer[]); |
|
|
|
public: |
|
// Methods |
|
GPS_IMU_Class(); |
|
void Init(); |
|
void Read(); |
|
|
|
// Properties |
|
long roll_sensor; // how much we're turning in deg * 100 |
|
long pitch_sensor; // our angle of attack in deg * 100 |
|
int airspeed; |
|
float imu_health; |
|
uint8_t imu_ok; |
|
|
|
long Time; //GPS Millisecond Time of Week |
|
long Lattitude; // Geographic coordinates |
|
long Longitude; |
|
long Altitude; |
|
long Ground_Speed; |
|
long Ground_Course; |
|
long Speed_3d; |
|
|
|
uint8_t NumSats; // Number of visible satelites |
|
uint8_t Fix; // 1:GPS FIX 0:No FIX (normal logic) |
|
uint8_t NewData; // 1:New GPS Data |
|
uint8_t PrintErrors; // 1: To Print GPS Errors (for debug) |
|
}; |
|
|
|
extern GPS_IMU_Class GPS; |
|
#endif |