eive-obsw/mission/devices/devicedefinitions/GPSDefinitions.h

67 lines
2.3 KiB
C
Raw Normal View History

2021-06-15 17:07:47 +02:00
#ifndef MISSION_DEVICES_DEVICEDEFINITIONS_GPSDEFINITIONS_H_
#define MISSION_DEVICES_DEVICEDEFINITIONS_GPSDEFINITIONS_H_
2021-06-24 11:42:40 +02:00
#include "fsfw/devicehandlers/DeviceHandlerIF.h"
#include "fsfw/datapoollocal/StaticLocalDataSet.h"
2021-06-15 17:07:47 +02:00
namespace GpsHyperion {
static constexpr DeviceCommandId_t GPS_REPLY = 0;
2021-09-07 16:11:02 +02:00
static constexpr DeviceCommandId_t TRIGGER_RESET_PIN = 5;
2021-06-15 17:07:47 +02:00
2021-06-24 11:42:40 +02:00
static constexpr uint32_t DATASET_ID = 0;
2021-06-15 17:07:47 +02:00
2021-06-24 11:42:40 +02:00
enum GpsPoolIds: lp_id_t {
LATITUDE = 0,
LONGITUDE = 1,
ALTITUDE = 2,
FIX_MODE = 3,
2021-06-24 13:55:51 +02:00
SATS_IN_USE = 4,
UNIX_SECONDS = 5,
YEAR = 6,
MONTH = 7,
DAY = 8,
HOURS = 9,
MINUTES = 10,
SECONDS = 11
};
enum GpsFixModes: uint8_t {
INVALID = 0,
NO_FIX = 1,
FIX_2D = 2,
FIX_3D = 3
2021-06-15 17:07:47 +02:00
};
}
2021-06-24 13:55:51 +02:00
class GpsPrimaryDataset: public StaticLocalDataSet<18> {
2021-06-15 17:07:47 +02:00
public:
2021-06-24 11:42:40 +02:00
GpsPrimaryDataset(object_id_t gpsId):
StaticLocalDataSet(sid_t(gpsId, GpsHyperion::DATASET_ID)) {
setAllVariablesReadOnly();
}
lp_var_t<double> latitude = lp_var_t<double>(sid.objectId,
GpsHyperion::LATITUDE, this);
lp_var_t<double> longitude = lp_var_t<double>(sid.objectId,
GpsHyperion::LONGITUDE, this);
lp_var_t<double> altitude = lp_var_t<double>(sid.objectId, GpsHyperion::ALTITUDE, this);
lp_var_t<uint8_t> fixMode = lp_var_t<uint8_t>(sid.objectId, GpsHyperion::FIX_MODE, this);
2021-06-24 13:55:51 +02:00
lp_var_t<uint8_t> satInUse = lp_var_t<uint8_t>(sid.objectId, GpsHyperion::SATS_IN_USE, this);
lp_var_t<uint16_t> year = lp_var_t<uint16_t>(sid.objectId, GpsHyperion::YEAR, this);
lp_var_t<uint8_t> month = lp_var_t<uint8_t>(sid.objectId, GpsHyperion::MONTH, this);
lp_var_t<uint8_t> day = lp_var_t<uint8_t>(sid.objectId, GpsHyperion::DAY, this);
lp_var_t<uint8_t> hours = lp_var_t<uint8_t>(sid.objectId, GpsHyperion::HOURS, this);
lp_var_t<uint8_t> minutes = lp_var_t<uint8_t>(sid.objectId, GpsHyperion::MINUTES, this);
lp_var_t<uint8_t> seconds = lp_var_t<uint8_t>(sid.objectId, GpsHyperion::SECONDS, this);
lp_var_t<uint32_t> unixSeconds = lp_var_t<uint32_t>(sid.objectId,
GpsHyperion::UNIX_SECONDS, this);
2021-06-15 17:07:47 +02:00
private:
2021-06-24 11:42:40 +02:00
friend class GPSHyperionHandler;
GpsPrimaryDataset(HasLocalDataPoolIF* hkOwner):
StaticLocalDataSet(hkOwner, GpsHyperion::DATASET_ID) {}
2021-06-15 17:07:47 +02:00
};
#endif /* MISSION_DEVICES_DEVICEDEFINITIONS_GPSDEFINITIONS_H_ */