Skip to content

Add missing metadata fields#850

Open
mxtommy wants to merge 1 commit intoSignalK:mainfrom
mxtommy:main
Open

Add missing metadata fields#850
mxtommy wants to merge 1 commit intoSignalK:mainfrom
mxtommy:main

Conversation

@mxtommy
Copy link

@mxtommy mxtommy commented Mar 1, 2026

First time using Claude :-)

Implement #848

Backward Compatibility

  • Existing constructor signature is unchanged
  • add_entry emits identical JSON to before when no new fields are set (all new blocks are conditional)
  • New members are value types that copy correctly with the default copy constructor

signalk_metadata.h

  • SKAlarmState enum class with 6 values: kNominal, kNormal, kAlert, kWarn, kAlarm, kEmergency
  • SKZone struct with optional lower_/upper_ bounds (NAN = not set), message_, and state_
  • 5 new public members on SKMetadata: example_, supports_put_, display_scale_lower_, display_scale_upper_, zones_
    Private alarm_state_to_string() helper

signalk_metadata.cpp

  • Constructor initializes sentinels: supports_put_ = -1, both scale bounds = NAN
  • add_entry() conditionally serializes all 4 new fields
  • alarm_state_to_string() maps enum values to the spec's lowercase strings

Usage example:

SKMetadata* meta = new SKMetadata("rpm", "Engine RPM");
meta->display_scale_lower_ = 0.0f;
meta->display_scale_upper_ = 8000.0f;
meta->zones_.push_back(SKZone(SKAlarmState::kNominal, "Normal range", 600.0f, 6500.0f));
meta->zones_.push_back(SKZone(SKAlarmState::kAlarm, "Overspeed", 7000.0f));
meta->supports_put_ = 0;  // false

@mairas
Copy link
Collaborator

mairas commented Mar 14, 2026

Sorry about the delay! Please wait a bit - I'm having some discussion with the notification/alert future, related to this: https://github.com/hatlabs/signalk-alert-manager

@mxtommy
Copy link
Author

mxtommy commented Mar 14, 2026

Oh that's so cool :-)

No worries will be months until I'm in the water! I'm useing Waveshare ESP32-S3-Relay-6CH for some digital switching, and it needs supports_put :-D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants