Skip to content

Commit

Permalink
Rename signalk_position to signalk_types
Browse files Browse the repository at this point in the history
Implement ENUVector and AttitudeVector and provide serializers for them.
  • Loading branch information
mairas committed Sep 25, 2024
1 parent befa9b4 commit d07b5e5
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 48 deletions.
30 changes: 0 additions & 30 deletions src/sensesp/signalk/signalk_position.cpp

This file was deleted.

18 changes: 0 additions & 18 deletions src/sensesp/signalk/signalk_position.h

This file was deleted.

46 changes: 46 additions & 0 deletions src/sensesp/signalk/signalk_types.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@

#include "signalk_types.h"

namespace sensesp {

/**
* @brief Template specialization for SKOutputPosition::as_signalk_json()
*
* This specialization allows `Position` objects to be output as Signal K
* deltas.
*
* @tparam
* @return String
*/
template <>
void SKOutput<Position>::as_signalk_json(JsonDocument& doc) {
doc["path"] = this->get_sk_path();
JsonObject value = doc["value"].to<JsonObject>();
value["latitude"] = output.latitude;
value["longitude"] = output.longitude;
if (output.altitude != kPositionInvalidAltitude) {
value["altitude"] = output.altitude;
}
}

template <>
void SKOutput<ENUVector>::as_signalk_json(JsonDocument& doc) {
doc["path"] = this->get_sk_path();
JsonObject value = doc["value"].to<JsonObject>();
value["east"] = output.east;
value["north"] = output.north;
if (output.up != kPositionInvalidAltitude) {
value["up"] = output.up;
}
}

template <>
void SKOutput<AttitudeVector>::as_signalk_json(JsonDocument& doc) {
doc["path"] = this->get_sk_path();
JsonObject value = doc["value"].to<JsonObject>();
value["roll"] = output.roll;
value["pitch"] = output.pitch;
value["yaw"] = output.yaw;
}

} // namespace sensesp
26 changes: 26 additions & 0 deletions src/sensesp/signalk/signalk_types.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#ifndef SENSESP_SRC_SENSESP_SIGNALK_SIGNALK_TYPES_H_
#define SENSESP_SRC_SENSESP_SIGNALK_SIGNALK_TYPES_H_

#include <vector>

#include "sensesp/signalk/signalk_output.h"
#include "sensesp/types/position.h"

namespace sensesp {

template <>
void SKOutput<Position>::as_signalk_json(JsonDocument& doc);

template <>
void SKOutput<ENUVector>::as_signalk_json(JsonDocument& doc);

template <>
void SKOutput<AttitudeVector>::as_signalk_json(JsonDocument& doc);

typedef SKOutput<Position> SKOutputPosition;
typedef SKOutput<ENUVector> SKOutputENUVector;
typedef SKOutput<AttitudeVector> SKOutputAttitudeVector;

} // namespace sensesp

#endif

0 comments on commit d07b5e5

Please sign in to comment.