// Setter functions return:
// - true when value passed is not clamped, modified, or rejected
// - false when value passed is clamped, modified, or rejected
class WsprMessageTelemetryBasic
{
public:
/////////////////////////////////////////
// Setters / Getters for Telemetry
/////////////////////////////////////////
// 'A' through 'X' for each char
bool SetGrid56(const char *grid56);
const char *GetGrid56() const;
// 0 through 21,340, steps of 20
bool SetAltitudeMeters(int32_t altitudeMeters);
uint16_t GetAltitudeMeters() const;
// -50 through 39
bool SetTemperatureCelsius(int32_t temperatureCelsius);
int8_t GetTemperatureCelsius() const;
// 3.0v through 4.95v, steps of 0.05v
bool SetVoltageVolts(double voltageVolts);
double GetVoltageVolts() const;
// 0 through 82, steps of 2
bool SetSpeedKnots(int32_t speedKnots);
uint8_t GetSpeedKnots() const;
bool SetGpsIsValid(bool gpsValid);
bool GetGpsIsValid() const;
/////////////////////////////////////////
// Setters / Getters for Encode / Decode
/////////////////////////////////////////
bool SetCallsign(const char *callsign);
const char *GetCallsign() const;
// 'A' through 'X' for chars 1 and 2
// '0' through '9' for chars 3 and 4
bool SetGrid4(const char *grid4);
const char *GetGrid4() const;
// 0, 3, 7, 10, 13, 17, 20, 23, 27, 30, 33, 37, 40, 43, 47, 50, 53, 57, 60
bool SetPowerDbm(uint8_t powerDbm);
uint8_t GetPowerDbm() const;
// Special Channel Map input into Encoding
// 00 through 09, 10 through 19, Q0 through Q9
bool SetId13(const char *id13);
const char *GetId13() const;
/////////////////////////////////////////
// Encode / Decode
/////////////////////////////////////////
void Encode();
bool Decode(); // return true on successful decode, false otherwise
/////////////////////////////////////////
// Reset the object to initial values
/////////////////////////////////////////
void Reset();
};