Update Services.h
Completed macro to use HAPCharType for define Span Characteristic structures. HAPCharType includes name, ID, and permissions. The macro adds value type (e.g. int, double) and default value. To do: Create Span Characteristics for all remaining HAPCharTypes defined in HAPConstants.h
This commit is contained in:
parent
5838768f38
commit
a584cbb042
137
src/Services.h
137
src/Services.h
|
|
@ -1,7 +1,9 @@
|
||||||
|
|
||||||
//////////////////////////////////
|
///////////////////////////////////
|
||||||
// HAP SERVICES (HAP Chapter 8) //
|
// SPAN SERVICES (HAP Chapter 8) //
|
||||||
//////////////////////////////////
|
///////////////////////////////////
|
||||||
|
|
||||||
|
// Macros to define vectors of required and optional characteristics for each Span Service structure
|
||||||
|
|
||||||
#define REQ(name) req.push_back(&homeSpan.chr.name)
|
#define REQ(name) req.push_back(&homeSpan.chr.name)
|
||||||
#define OPT(name) opt.push_back(&homeSpan.chr.name)
|
#define OPT(name) opt.push_back(&homeSpan.chr.name)
|
||||||
|
|
@ -322,90 +324,55 @@ namespace Service {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////
|
//////////////////////////////////////////
|
||||||
// HAP CHARACTERISTICS (HAP Chapter 9) //
|
// SPAN CHARACTERISTICS (HAP Chapter 9) //
|
||||||
/////////////////////////////////////////
|
//////////////////////////////////////////
|
||||||
|
|
||||||
|
// Macro to define Span Characteristic structures based on name of HAP Characteristic (see HAPConstants.h), its type (e.g. int, double) and its default value
|
||||||
|
|
||||||
|
#define CREATE_CHAR(CHR,TYPE,DEFVAL) struct CHR : SpanCharacteristic { CHR(TYPE value=DEFVAL) : SpanCharacteristic{homeSpan.chr.CHR.id, homeSpan.chr.CHR.perms,(TYPE)value, homeSpan.chr.CHR.name}{} }
|
||||||
|
|
||||||
namespace Characteristic {
|
namespace Characteristic {
|
||||||
|
|
||||||
struct Active : SpanCharacteristic { Active(uint8_t value=0) : SpanCharacteristic{"B0",PR+PW+EV,(uint8_t)value,"Active"}{} };
|
CREATE_CHAR(Active,uint8_t,0);
|
||||||
|
CREATE_CHAR(AirQuality,uint8_t,0);
|
||||||
struct AirQuality : SpanCharacteristic { AirQuality(uint8_t value=0) : SpanCharacteristic{"95",PR+EV,(uint8_t)value,"AirQuality"}{} };
|
CREATE_CHAR(Brightness,int,0);
|
||||||
|
CREATE_CHAR(ColorTemperature,uint32_t,50);
|
||||||
struct Brightness : SpanCharacteristic { Brightness(int value=0) : SpanCharacteristic{"8",PR+PW+EV,(int)value,"Brightness"}{} };
|
CREATE_CHAR(CurrentDoorState,uint8_t,1);
|
||||||
|
CREATE_CHAR(CurrentPosition,uint8_t,0);
|
||||||
struct ColorTemperature : SpanCharacteristic { ColorTemperature(uint32_t value=50) : SpanCharacteristic{"CE",PR+PW+EV,(uint32_t)value,"ColorTemperature"}{} };
|
CREATE_CHAR(CurrentTemperature,double,0);
|
||||||
|
CREATE_CHAR(FirmwareRevision,char *,"");
|
||||||
struct CurrentDoorState : SpanCharacteristic { CurrentDoorState(uint8_t value=1) : SpanCharacteristic{"E",PR+EV,(uint8_t)value,"CurrentDoorState"}{} };
|
CREATE_CHAR(HoldPosition,boolean,false);
|
||||||
|
CREATE_CHAR(Hue,double,0);
|
||||||
struct CurrentPosition : SpanCharacteristic { CurrentPosition(uint8_t value=0) : SpanCharacteristic{"6D",PR+EV,(uint8_t)value,"CurrentPosition"}{} };
|
CREATE_CHAR(Identify,boolean,false);
|
||||||
|
CREATE_CHAR(Manufacturer,char *,"");
|
||||||
struct CurrentTemperature : SpanCharacteristic { CurrentTemperature(double value=0) : SpanCharacteristic{"11",PR+EV,(double)value,"CurrentTemperature"}{} };
|
CREATE_CHAR(Model,char *,"");
|
||||||
|
CREATE_CHAR(Name,char *,"");
|
||||||
struct FirmwareRevision : SpanCharacteristic { FirmwareRevision(char *value) : SpanCharacteristic{"52",PR,(char *)value,"FirmwareRevision"}{} };
|
CREATE_CHAR(NitrogenDioxideDensity,double,0);
|
||||||
|
CREATE_CHAR(ObstructionDetected,boolean,false);
|
||||||
struct HoldPosition : SpanCharacteristic { HoldPosition(boolean value=false) : SpanCharacteristic{"6F",PW,(boolean)value,"HoldPosition"}{} };
|
CREATE_CHAR(On,boolean,false);
|
||||||
|
CREATE_CHAR(OutletInUse,boolean,false);
|
||||||
struct Hue : SpanCharacteristic { Hue(double value=0) : SpanCharacteristic{"13",PR+PW+EV,(double)value,"Hue"}{} };
|
CREATE_CHAR(OzoneDensity,double,0);
|
||||||
|
CREATE_CHAR(PM10Density,double,0);
|
||||||
struct Identify : SpanCharacteristic { Identify() : SpanCharacteristic{"14",PW,(boolean)false,"Identify"}{} };
|
CREATE_CHAR(PM25Density,double,0);
|
||||||
|
CREATE_CHAR(PositionState,uint8_t,2);
|
||||||
struct Manufacturer : SpanCharacteristic { Manufacturer(char *value) : SpanCharacteristic{"20",PR,(char *)value,"Manufacturer"}{} };
|
CREATE_CHAR(RotationDirection,int,0);
|
||||||
|
CREATE_CHAR(RotationSpeed,double,0);
|
||||||
struct Model : SpanCharacteristic { Model(char *value) : SpanCharacteristic{"21",PR,(char *)value,"Model"}{} };
|
CREATE_CHAR(Saturation,double,0);
|
||||||
|
CREATE_CHAR(SerialNumber,char *,"");
|
||||||
struct Name : SpanCharacteristic { Name(char *value) : SpanCharacteristic{"23",PR,(char *)value,"Name"}{} };
|
CREATE_CHAR(SlatType,uint8_t,0);
|
||||||
|
CREATE_CHAR(SmokeDetected,uint8_t,0);
|
||||||
struct NitrogenDioxideDensity : SpanCharacteristic { NitrogenDioxideDensity(double value=0) : SpanCharacteristic{"C4",PR+EV,(double)value,"NitrogenDioxideDensity"}{} };
|
CREATE_CHAR(StatusActive,boolean,true);
|
||||||
|
CREATE_CHAR(StatusFault,uint8_t,0);
|
||||||
struct ObstructionDetected : SpanCharacteristic { ObstructionDetected(boolean value=false) : SpanCharacteristic{"24",PR+EV,(boolean)value,"ObstructionDetected"}{} };
|
CREATE_CHAR(StatusJammed,uint8_t,0);
|
||||||
|
CREATE_CHAR(StatusLowBattery,uint8_t,0);
|
||||||
struct On : SpanCharacteristic { On(boolean value=false) : SpanCharacteristic{"25",PR+PW+EV,(boolean)value,"On"}{} };
|
CREATE_CHAR(StatusTampered,uint8_t,0);
|
||||||
|
CREATE_CHAR(SulphurDioxideDensity,double,0);
|
||||||
struct OutletInUse : SpanCharacteristic { OutletInUse(boolean value=false) : SpanCharacteristic{"26",PR+EV,(boolean)value,"OutletInUse"}{} };
|
CREATE_CHAR(SwingMode,uint8_t,0);
|
||||||
|
CREATE_CHAR(TargetDoorState,uint8_t,1);
|
||||||
struct OzoneDensity : SpanCharacteristic { OzoneDensity(double value=0) : SpanCharacteristic{"C3",PR+EV,(double)value,"OzoneDensity"}{} };
|
CREATE_CHAR(TargetPosition,uint8_t,0);
|
||||||
|
CREATE_CHAR(TemperatureDisplayUnits,uint8_t,0);
|
||||||
struct PM10Density : SpanCharacteristic { PM10Density(double value=0) : SpanCharacteristic{"C7",PR+EV,(double)value,"PM10Density"}{} };
|
CREATE_CHAR(Version,char *,"");
|
||||||
|
CREATE_CHAR(VOCDensity,double,0);
|
||||||
struct PM25Density : SpanCharacteristic { PM25Density(double value=0) : SpanCharacteristic{"C6",PR+EV,(double)value,"PM25Density"}{} };
|
|
||||||
|
|
||||||
struct PositionState : SpanCharacteristic { PositionState(uint8_t value=2) : SpanCharacteristic{"72",PR+EV,(uint8_t)value,"PositionState"}{} };
|
|
||||||
|
|
||||||
struct RotationDirection : SpanCharacteristic { RotationDirection(int value=0) : SpanCharacteristic{"28",PR+PW+EV,(int)value,"RotationDirection"}{} };
|
|
||||||
|
|
||||||
struct RotationSpeed : SpanCharacteristic { RotationSpeed(double value=0) : SpanCharacteristic{"29",PR+PW+EV,(double)value,"RotationSpeed"}{} };
|
|
||||||
|
|
||||||
struct Saturation : SpanCharacteristic { Saturation(double value=0) : SpanCharacteristic{"2F",PR+PW+EV,(double)value,"Saturation"}{} };
|
|
||||||
|
|
||||||
struct SerialNumber : SpanCharacteristic { SerialNumber(char *value) : SpanCharacteristic{"30",PR,(char *)value,"SerialNumber"}{} };
|
|
||||||
|
|
||||||
struct SlatType : SpanCharacteristic { SlatType(uint8_t value=0) : SpanCharacteristic{"C0",PR,(uint8_t)value,"SlatType"}{} };
|
|
||||||
|
|
||||||
struct SmokeDetected : SpanCharacteristic { SmokeDetected(uint8_t value=0) : SpanCharacteristic{"76",PR+EV,(uint8_t)value,"SmokeDetected"}{} };
|
|
||||||
|
|
||||||
struct StatusActive : SpanCharacteristic { StatusActive(boolean value=true) : SpanCharacteristic{"75",PR+EV,(boolean)value,"StatusActive"}{} };
|
|
||||||
|
|
||||||
struct StatusFault : SpanCharacteristic { StatusFault(uint8_t value=0) : SpanCharacteristic{"77",PR+EV,(uint8_t)value,"StatusFault"}{} };
|
|
||||||
|
|
||||||
struct StatusJammed : SpanCharacteristic { StatusJammed(uint8_t value=0) : SpanCharacteristic{"78",PR+EV,(uint8_t)value,"StatusJammed"}{} };
|
|
||||||
|
|
||||||
struct StatusLowBattery : SpanCharacteristic { StatusLowBattery(uint8_t value=0) : SpanCharacteristic{"79",PR+EV,(uint8_t)value,"StatusLowBattery"}{} };
|
|
||||||
|
|
||||||
struct StatusTampered : SpanCharacteristic { StatusTampered(uint8_t value=0) : SpanCharacteristic{"7A",PR+EV,(uint8_t)value,"StatusTampered"}{} };
|
|
||||||
|
|
||||||
struct SulphurDioxideDensity : SpanCharacteristic { SulphurDioxideDensity(double value=0) : SpanCharacteristic{"C5",PR+EV,(double)value,"SulphurDioxideDensity"}{} };
|
|
||||||
|
|
||||||
struct SwingMode : SpanCharacteristic { SwingMode(uint8_t value=0) : SpanCharacteristic{"B6",PR+PW+EV,(uint8_t)value,"SwingMode"}{} };
|
|
||||||
|
|
||||||
struct TargetDoorState : SpanCharacteristic { TargetDoorState(uint8_t value=1) : SpanCharacteristic{"32",PR+PW+EV,(uint8_t)value,"TargetDoorState"}{} };
|
|
||||||
|
|
||||||
struct TargetPosition : SpanCharacteristic { TargetPosition(uint8_t value=0) : SpanCharacteristic{"7C",PR+PW+EV,(uint8_t)value,"TargetPosition"}{} };
|
|
||||||
|
|
||||||
struct TemperatureDisplayUnits : SpanCharacteristic { TemperatureDisplayUnits(uint8_t value=0) : SpanCharacteristic{"36",PR+PW+EV,(uint8_t)value,"TemperatureDisplayUnits"}{} };
|
|
||||||
|
|
||||||
struct Version : SpanCharacteristic { Version(char *value) : SpanCharacteristic{"37",PR,(char *)value,"Version"}{} };
|
|
||||||
|
|
||||||
struct VOCDensity : SpanCharacteristic { VOCDensity(double value=0) : SpanCharacteristic{"C8",PR+EV,(double)value,"VOCDensity"}{} };
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue