Added Characteristic Constants

Added constants to Characteristics that describe states.

Example: Characteristic::SecuritySystemTargetState::ARM_STAY
This commit is contained in:
Gregg 2023-11-25 18:22:59 -06:00
parent 70126cb04f
commit ead05d8690
2 changed files with 47 additions and 47 deletions

View File

@ -5,8 +5,8 @@
struct DEV_GarageDoor : Service::GarageDoorOpener { // A Garage Door Opener struct DEV_GarageDoor : Service::GarageDoorOpener { // A Garage Door Opener
SpanCharacteristic *current; // reference to the Current Door State Characteristic (specific to Garage Door Openers) Characteristic::CurrentDoorState *current; // reference to the Current Door State Characteristic (specific to Garage Door Openers)
SpanCharacteristic *target; // reference to the Target Door State Characteristic (specific to Garage Door Openers) Characteristic::TargetDoorState *target; // reference to the Target Door State Characteristic (specific to Garage Door Openers)
SpanCharacteristic *obstruction; // reference to the Obstruction Detected Characteristic (specific to Garage Door Openers) SpanCharacteristic *obstruction; // reference to the Obstruction Detected Characteristic (specific to Garage Door Openers)
DEV_GarageDoor() : Service::GarageDoorOpener(){ // constructor() method DEV_GarageDoor() : Service::GarageDoorOpener(){ // constructor() method

View File

@ -408,47 +408,47 @@ namespace Service {
// Macro to define Span Characteristic structures based on name of HAP Characteristic, default value, and min/max value (not applicable for STRING or BOOL which default to min=0, max=1) // Macro to define Span Characteristic structures based on name of HAP Characteristic, default value, and min/max value (not applicable for STRING or BOOL which default to min=0, max=1)
#define CREATE_CHAR(TYPE,HAPCHAR,DEFVAL,MINVAL,MAXVAL) \ #define CREATE_CHAR(TYPE,HAPCHAR,DEFVAL,MINVAL,MAXVAL,...) \
struct HAPCHAR : SpanCharacteristic { HAPCHAR(TYPE val=DEFVAL, boolean nvsStore=false) : SpanCharacteristic {&hapChars.HAPCHAR} { init(val,nvsStore,(TYPE)MINVAL,(TYPE)MAXVAL); } }; struct HAPCHAR : SpanCharacteristic { __VA_OPT__(enum{) __VA_ARGS__ __VA_OPT__(};) HAPCHAR(TYPE val=DEFVAL, boolean nvsStore=false) : SpanCharacteristic {&hapChars.HAPCHAR} { init(val,nvsStore,(TYPE)MINVAL,(TYPE)MAXVAL); } };
namespace Characteristic { namespace Characteristic {
CREATE_CHAR(uint32_t,AccessoryFlags,1,1,1); CREATE_CHAR(uint32_t,AccessoryFlags,1,1,1);
CREATE_CHAR(uint8_t,Active,0,0,1); CREATE_CHAR(uint8_t,Active,0,0,1,INACTIVE,ACIVE);
CREATE_CHAR(uint32_t,ActiveIdentifier,0,0,255); CREATE_CHAR(uint32_t,ActiveIdentifier,0,0,255);
CREATE_CHAR(uint8_t,AirQuality,0,0,5); CREATE_CHAR(uint8_t,AirQuality,0,0,5,UNKNOWN,EXCELLENT,GOOD,FAIR,INFERIOR,POOR);
CREATE_CHAR(uint8_t,BatteryLevel,0,0,100); CREATE_CHAR(uint8_t,BatteryLevel,0,0,100);
CREATE_CHAR(int,Brightness,0,0,100); CREATE_CHAR(int,Brightness,0,0,100);
CREATE_CHAR(double,CarbonMonoxideLevel,0,0,100); CREATE_CHAR(double,CarbonMonoxideLevel,0,0,100);
CREATE_CHAR(double,CarbonMonoxidePeakLevel,0,0,100); CREATE_CHAR(double,CarbonMonoxidePeakLevel,0,0,100);
CREATE_CHAR(uint8_t,CarbonMonoxideDetected,0,0,1); CREATE_CHAR(uint8_t,CarbonMonoxideDetected,0,0,1,NORMAL,ABNORMAL);
CREATE_CHAR(double,CarbonDioxideLevel,0,0,100000); CREATE_CHAR(double,CarbonDioxideLevel,0,0,100000);
CREATE_CHAR(double,CarbonDioxidePeakLevel,0,0,100000); CREATE_CHAR(double,CarbonDioxidePeakLevel,0,0,100000);
CREATE_CHAR(uint8_t,CarbonDioxideDetected,0,0,1); CREATE_CHAR(uint8_t,CarbonDioxideDetected,0,0,1,NORMAL,ABNORMAL);
CREATE_CHAR(uint8_t,ChargingState,0,0,2); CREATE_CHAR(uint8_t,ChargingState,0,0,2,NOT_CHARGING,CHARGING,NOT_CHARGEABLE);
CREATE_CHAR(uint8_t,ClosedCaptions,0,0,1); CREATE_CHAR(uint8_t,ClosedCaptions,0,0,1);
CREATE_CHAR(double,CoolingThresholdTemperature,10,10,35); CREATE_CHAR(double,CoolingThresholdTemperature,10,10,35);
CREATE_CHAR(uint32_t,ColorTemperature,200,140,500); CREATE_CHAR(uint32_t,ColorTemperature,200,140,500);
CREATE_CHAR(uint8_t,ContactSensorState,1,0,1); CREATE_CHAR(uint8_t,ContactSensorState,1,0,1,DETECTED,NOT_DETECTED);
CREATE_CHAR(const char *,ConfiguredName,"unnamed",0,1); CREATE_CHAR(const char *,ConfiguredName,"unnamed",0,1);
CREATE_CHAR(double,CurrentAmbientLightLevel,1,0.0001,100000); CREATE_CHAR(double,CurrentAmbientLightLevel,1,0.0001,100000);
CREATE_CHAR(int,CurrentHorizontalTiltAngle,0,-90,90); CREATE_CHAR(int,CurrentHorizontalTiltAngle,0,-90,90);
CREATE_CHAR(uint8_t,CurrentAirPurifierState,1,0,2); CREATE_CHAR(uint8_t,CurrentAirPurifierState,1,0,2,INACTIVE,IDLE,PURIFYING);
CREATE_CHAR(uint8_t,CurrentSlatState,0,0,2); CREATE_CHAR(uint8_t,CurrentSlatState,0,0,2,FIXED,JAMMED,SWINGING);
CREATE_CHAR(uint8_t,CurrentPosition,0,0,100); CREATE_CHAR(uint8_t,CurrentPosition,0,0,100);
CREATE_CHAR(int,CurrentVerticalTiltAngle,0,-90,90); CREATE_CHAR(int,CurrentVerticalTiltAngle,0,-90,90);
CREATE_CHAR(uint8_t,CurrentVisibilityState,0,0,1); CREATE_CHAR(uint8_t,CurrentVisibilityState,0,0,1);
CREATE_CHAR(uint8_t,CurrentHumidifierDehumidifierState,1,0,3); CREATE_CHAR(uint8_t,CurrentHumidifierDehumidifierState,1,0,3,INACTIVE,IDLE,HUMIDIFYING,DEHUMIDIFYING);
CREATE_CHAR(uint8_t,CurrentDoorState,1,0,4); CREATE_CHAR(uint8_t,CurrentDoorState,1,0,4,OPEN,CLOSED,OPENING,CLOSING,STOPPED);
CREATE_CHAR(uint8_t,CurrentFanState,1,0,2); CREATE_CHAR(uint8_t,CurrentFanState,1,0,2,INACTIVE,IDLE,BLOWING);
CREATE_CHAR(uint8_t,CurrentHeatingCoolingState,0,0,2); CREATE_CHAR(uint8_t,CurrentHeatingCoolingState,0,0,2,OFF,HEATING,COOLING);
CREATE_CHAR(uint8_t,CurrentHeaterCoolerState,1,0,3); CREATE_CHAR(uint8_t,CurrentHeaterCoolerState,1,0,3,INACTIVE,IDLE,HEATING,COOLING);
CREATE_CHAR(uint8_t,CurrentMediaState,0,0,5); CREATE_CHAR(uint8_t,CurrentMediaState,0,0,5);
CREATE_CHAR(double,CurrentRelativeHumidity,0,0,100); CREATE_CHAR(double,CurrentRelativeHumidity,0,0,100);
CREATE_CHAR(double,CurrentTemperature,0,0,100); CREATE_CHAR(double,CurrentTemperature,0,0,100);
CREATE_CHAR(int,CurrentTiltAngle,0,-90,90); CREATE_CHAR(int,CurrentTiltAngle,0,-90,90);
CREATE_CHAR(double,FilterLifeLevel,0,0,100); CREATE_CHAR(double,FilterLifeLevel,0,0,100);
CREATE_CHAR(uint8_t,FilterChangeIndication,0,0,1); CREATE_CHAR(uint8_t,FilterChangeIndication,0,0,1,NO_CHANGE_NEEDED,CHANGE_NEEDED);
CREATE_CHAR(const char *,FirmwareRevision,"1.0.0",0,1); CREATE_CHAR(const char *,FirmwareRevision,"1.0.0",0,1);
CREATE_CHAR(const char *,HardwareRevision,"1.0.0",0,1); CREATE_CHAR(const char *,HardwareRevision,"1.0.0",0,1);
CREATE_CHAR(double,HeatingThresholdTemperature,16,0,25); CREATE_CHAR(double,HeatingThresholdTemperature,16,0,25);
@ -458,64 +458,64 @@ namespace Characteristic {
CREATE_CHAR(uint32_t,Identifier,0,0,255); CREATE_CHAR(uint32_t,Identifier,0,0,255);
CREATE_CHAR(uint8_t,InputDeviceType,0,0,6); CREATE_CHAR(uint8_t,InputDeviceType,0,0,6);
CREATE_CHAR(uint8_t,InputSourceType,0,0,10); CREATE_CHAR(uint8_t,InputSourceType,0,0,10);
CREATE_CHAR(uint8_t,InUse,0,0,1); CREATE_CHAR(uint8_t,InUse,0,0,1,NOT_IN_USE,IN_USE);
CREATE_CHAR(uint8_t,IsConfigured,0,0,1); CREATE_CHAR(uint8_t,IsConfigured,0,0,1,NOT_CONFIGURED,CONFIGURED);
CREATE_CHAR(uint8_t,LeakDetected,0,0,1); CREATE_CHAR(uint8_t,LeakDetected,0,0,1,NOT_DETECTED,DETECTED);
CREATE_CHAR(uint8_t,LockCurrentState,0,0,3); CREATE_CHAR(uint8_t,LockCurrentState,0,0,3,UNLOCKED,LOCKED,JAMMED,UNKNOWN);
CREATE_CHAR(uint8_t,LockPhysicalControls,0,0,1); CREATE_CHAR(uint8_t,LockPhysicalControls,0,0,1,CONTROL_LOCK_DISABLED,CONTROL_LOCK_ENABLED);
CREATE_CHAR(uint8_t,LockTargetState,0,0,1); CREATE_CHAR(uint8_t,LockTargetState,0,0,1,UNLOCK,LOCK);
CREATE_CHAR(const char *,Manufacturer,"HomeSpan",0,1); CREATE_CHAR(const char *,Manufacturer,"HomeSpan",0,1);
CREATE_CHAR(const char *,Model,"HomeSpan-ESP32",0,1); CREATE_CHAR(const char *,Model,"HomeSpan-ESP32",0,1);
CREATE_CHAR(boolean,MotionDetected,false,0,1); CREATE_CHAR(boolean,MotionDetected,false,0,1);
CREATE_CHAR(boolean,Mute,false,0,1); CREATE_CHAR(boolean,Mute,false,0,1,OFF,ON);
CREATE_CHAR(const char *,Name,"unnamed",0,1); CREATE_CHAR(const char *,Name,"unnamed",0,1);
CREATE_CHAR(double,NitrogenDioxideDensity,0,0,1000); CREATE_CHAR(double,NitrogenDioxideDensity,0,0,1000);
CREATE_CHAR(boolean,ObstructionDetected,false,0,1); CREATE_CHAR(boolean,ObstructionDetected,false,0,1);
CREATE_CHAR(double,PM25Density,0,0,1000); CREATE_CHAR(double,PM25Density,0,0,1000);
CREATE_CHAR(uint8_t,OccupancyDetected,0,0,1); CREATE_CHAR(uint8_t,OccupancyDetected,0,0,1,NOT_DETECTED,DETECTED);
CREATE_CHAR(boolean,OutletInUse,false,0,1); CREATE_CHAR(boolean,OutletInUse,false,0,1);
CREATE_CHAR(boolean,On,false,0,1); CREATE_CHAR(boolean,On,false,0,1);
CREATE_CHAR(double,OzoneDensity,0,0,1000); CREATE_CHAR(double,OzoneDensity,0,0,1000);
CREATE_CHAR(uint8_t,PictureMode,0,0,13); CREATE_CHAR(uint8_t,PictureMode,0,0,13);
CREATE_CHAR(double,PM10Density,0,0,1000); CREATE_CHAR(double,PM10Density,0,0,1000);
CREATE_CHAR(uint8_t,PositionState,2,0,2); CREATE_CHAR(uint8_t,PositionState,2,0,2,GOING_TO_MINIMUM,GOING_TO_MAXIMUM,STOPPED);
CREATE_CHAR(uint8_t,PowerModeSelection,0,0,1); CREATE_CHAR(uint8_t,PowerModeSelection,0,0,1);
CREATE_CHAR(uint8_t,ProgramMode,0,0,2); CREATE_CHAR(uint8_t,ProgramMode,0,0,2,NONE,SCHEDULED,SCHEDULE_OVERRIDEN);
CREATE_CHAR(uint8_t,ProgrammableSwitchEvent,0,0,2); CREATE_CHAR(uint8_t,ProgrammableSwitchEvent,0,0,2,SINGLE_PRESS,DOUBLE_PRESS,LONG_PRESS);
CREATE_CHAR(double,RelativeHumidityDehumidifierThreshold,50,0,100); CREATE_CHAR(double,RelativeHumidityDehumidifierThreshold,50,0,100);
CREATE_CHAR(double,RelativeHumidityHumidifierThreshold,50,0,100); CREATE_CHAR(double,RelativeHumidityHumidifierThreshold,50,0,100);
CREATE_CHAR(uint32_t,RemainingDuration,60,0,3600); CREATE_CHAR(uint32_t,RemainingDuration,60,0,3600);
CREATE_CHAR(uint8_t,RemoteKey,0,0,16); CREATE_CHAR(uint8_t,RemoteKey,0,0,16);
CREATE_CHAR(uint8_t,ResetFilterIndication,0,1,1); CREATE_CHAR(uint8_t,ResetFilterIndication,0,1,1);
CREATE_CHAR(int,RotationDirection,0,0,1); CREATE_CHAR(int,RotationDirection,0,0,1,CLOCKWISE,COUNTERCLOCKWISE);
CREATE_CHAR(double,RotationSpeed,0,0,100); CREATE_CHAR(double,RotationSpeed,0,0,100);
CREATE_CHAR(double,Saturation,0,0,100); CREATE_CHAR(double,Saturation,0,0,100);
CREATE_CHAR(uint8_t,SecuritySystemAlarmType,0,0,1); CREATE_CHAR(uint8_t,SecuritySystemAlarmType,0,0,1,KNOWN,UNKNOWN);
CREATE_CHAR(uint8_t,SecuritySystemCurrentState,3,0,4); CREATE_CHAR(uint8_t,SecuritySystemCurrentState,3,0,4,ARMED_STAY,ARMED_AWAY,ARMED_NIGHT,DISARMED,ALARM_TRIGGERED);
CREATE_CHAR(uint8_t,SecuritySystemTargetState,3,0,3); CREATE_CHAR(uint8_t,SecuritySystemTargetState,3,0,3,ARM_STAY,ARM_AWAY,ARM_NIGHT,DISARM);
CREATE_CHAR(const char *,SerialNumber,"HS-12345",0,1); CREATE_CHAR(const char *,SerialNumber,"HS-12345",0,1);
CREATE_CHAR(uint8_t,ServiceLabelIndex,1,1,255); CREATE_CHAR(uint8_t,ServiceLabelIndex,1,1,255);
CREATE_CHAR(uint8_t,ServiceLabelNamespace,1,0,1); CREATE_CHAR(uint8_t,ServiceLabelNamespace,1,0,1,DOTS,NUMERALS);
CREATE_CHAR(uint8_t,SlatType,0,0,1); CREATE_CHAR(uint8_t,SlatType,0,0,1,HORIZONTAL,VERTICAL);
CREATE_CHAR(uint8_t,SleepDiscoveryMode,0,0,1); CREATE_CHAR(uint8_t,SleepDiscoveryMode,0,0,1);
CREATE_CHAR(uint8_t,SmokeDetected,0,0,1); CREATE_CHAR(uint8_t,SmokeDetected,0,0,1,NOT_DETECTED,DETECTED);
CREATE_CHAR(boolean,StatusActive,true,0,1); CREATE_CHAR(boolean,StatusActive,true,0,1);
CREATE_CHAR(uint8_t,StatusFault,0,0,1); CREATE_CHAR(uint8_t,StatusFault,0,0,1,NO_FAULT,FAULT);
CREATE_CHAR(uint8_t,StatusJammed,0,0,1); CREATE_CHAR(uint8_t,StatusJammed,0,0,1,NOT_JAMMED,JAMMED);
CREATE_CHAR(uint8_t,StatusLowBattery,0,0,1); CREATE_CHAR(uint8_t,StatusLowBattery,0,0,1,NOT_LOW_BATTERY,LOW_BATTERY);
CREATE_CHAR(uint8_t,StatusTampered,0,0,1); CREATE_CHAR(uint8_t,StatusTampered,0,0,1,NOT_TAMPERED,TAMPERED);
CREATE_CHAR(double,SulphurDioxideDensity,0,0,1000); CREATE_CHAR(double,SulphurDioxideDensity,0,0,1000);
CREATE_CHAR(uint8_t,SwingMode,0,0,1); CREATE_CHAR(uint8_t,SwingMode,0,0,1,SWING_DISABLED,SWING_ENABLED);
CREATE_CHAR(uint8_t,TargetAirPurifierState,1,0,1); CREATE_CHAR(uint8_t,TargetAirPurifierState,1,0,1,MANUAL,AUTO);
CREATE_CHAR(uint8_t,TargetFanState,1,0,1); CREATE_CHAR(uint8_t,TargetFanState,1,0,1,MANUAL,AUTO);
CREATE_CHAR(int,TargetTiltAngle,0,-90,90); CREATE_CHAR(int,TargetTiltAngle,0,-90,90);
CREATE_CHAR(uint8_t,TargetHeaterCoolerState,0,0,2); CREATE_CHAR(uint8_t,TargetHeaterCoolerState,0,0,2,AUTO,HEAT,COOL);
CREATE_CHAR(uint32_t,SetDuration,60,0,3600); CREATE_CHAR(uint32_t,SetDuration,60,0,3600);
CREATE_CHAR(int,TargetHorizontalTiltAngle,0,-90,90); CREATE_CHAR(int,TargetHorizontalTiltAngle,0,-90,90);
CREATE_CHAR(uint8_t,TargetHumidifierDehumidifierState,0,0,2); CREATE_CHAR(uint8_t,TargetHumidifierDehumidifierState,0,0,2,AUTO,HUMIDIFY,DEHUMIDIFY);
CREATE_CHAR(uint8_t,TargetPosition,0,0,100); CREATE_CHAR(uint8_t,TargetPosition,0,0,100);
CREATE_CHAR(uint8_t,TargetDoorState,1,0,1); CREATE_CHAR(uint8_t,TargetDoorState,1,0,1,OPEN,CLOSED);
CREATE_CHAR(uint8_t,TargetHeatingCoolingState,0,0,3); CREATE_CHAR(uint8_t,TargetHeatingCoolingState,0,0,3,OFF,HEAT,COOL,AUTO);
CREATE_CHAR(uint8_t,TargetMediaState,0,0,2); CREATE_CHAR(uint8_t,TargetMediaState,0,0,2);
CREATE_CHAR(double,TargetRelativeHumidity,0,0,100); CREATE_CHAR(double,TargetRelativeHumidity,0,0,100);
CREATE_CHAR(double,TargetTemperature,16,10,38); CREATE_CHAR(double,TargetTemperature,16,10,38);