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-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-15 17:07:47 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
class GpsPrimaryDataset: public StaticLocalDataSet<5> {
|
|
|
|
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-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_ */
|