2018 revision to classic DataBus AVC code.

Dependencies:   LSM303DLM Servo SerialGraphicLCD L3G4200D IncrementalEncoder SimpleShell

SystemState.h

Committer:
shimniok
Date:
2019-01-07
Revision:
44:0d72a8a1288a
Parent:
32:eb673f6f5734

File content as of revision 44:0d72a8a1288a:

#ifndef _SYSTEMSTATE_H
#define _SYSTEMSTATE_H

/** System State is the main mechanism for communicating current realtime system state to
 * the rest of the system for logging, data display, etc.
 */

#include <stdbool.h>

/* struct systemState
 * structure containing system sensor data
 ****** System Status
 * millis               number of milliseconds since epoch (or startup)
 * current              current draw in amps
 * voltage              voltage in volts
 ****** Data reported by IMU
 * g[3]                 raw 3-axis gyro values; if using 1-axis, then store data in gx
 * gTemp                Gyro temperature
 * a[3]                 raw 3-axis accelerometer values
 * m[3]                 raw 3-axis magnetometer values; if using 2d then store data in mx and my
 * gHeading             independently calculated gyro heading in degrees
 * cHeading             independently calculated compass heading in degrees
 ****** AHRS Estimates
 * roll, pitch, yaw     estimated attitude in degrees relative to the world frame
 ****** Data reported by GPS
 * gpsLatitude          raw GPS latitude in fractional degrees (e.g., 39.123456)
 * gpsLongitude         raw GPS longitude in fractional degrees (e.g., -104.123456
 * gpsCourse_deg        raw GPS course in degrees
 * gpsSpeed_mps         raw GPS speed in m/s
 * gpsHDOP              raw GPS Horizontal Dilution of Precision
 * gpsSats              raw GPS Satellite fix count
 ****** Odometry data
 * lrEncDistance        left rear encoder distance since last log update
 * rrEncDistance        right rear encoder distance since last log update
 * lrEncSpeed           left rear encoder speed 
 * rrEncSpeed           right rear encoder speed
 * encHeading           estimated heading based on encoder readings
 ****** Estimated Position and Heading
 * estLagHeading        estimated heading in degrees, lagged to sync with gps
 * estHeading           estimated current heading
 * estLatitude          estimated latitude in fractional degrees (e.g., 39.123456)
 * estLongitude         estimated longitude in fractional degrees (e.g., -104.123456)
 * estNorthing          some algorithms use UTM.  Estimated UTM northing
 * estEasting           estimated UTM easting
 * estX, estY           some algorithms use simple x, y distance from origin (meters)
 ****** Waypoint data
 * nextWaypoint         integer ID of the next waypoint
 * bearing              estimated bearing to next waypoint in degrees
 * distance             estimated distance to next waypoint in meters
 ****** Control data
 * throttle             raw servo setting(units?)
 * steering             raw servo setting(units?)
 */

typedef struct {
    uint64_t timestamp;
    double latitude;
    double longitude;
    float course;
    float speed;
    float hdop;
    int svcount;
} GpsData;


typedef struct {
    uint64_t timestamp;
    int encoder;
    int gyro[3];
    int accel[3];
    int mag[3];
} SensorData;

#endif