move basic tags from type utils to DeviceClass

This commit is contained in:
Simon Stürz 2016-01-03 14:24:28 +01:00 committed by Michael Zanetti
parent ac1e3d32a1
commit bf1235b4a7
9 changed files with 104 additions and 142 deletions

View File

@ -180,11 +180,11 @@
\li - \underline{\e name:} The visible name of the \l{DeviceClass} \unicode{0x2192} \l{DeviceClass::name()} \li - \underline{\e name:} The visible name of the \l{DeviceClass} \unicode{0x2192} \l{DeviceClass::name()}
\li - \underline{\e idName:} This parameter will be used to define the DeviceClassId variable named <idName>DeviceClassId in the plugininfo.h, so it can be used in the code. \li - \underline{\e idName:} This parameter will be used to define the DeviceClassId variable named <idName>DeviceClassId in the plugininfo.h, so it can be used in the code.
\li - \underline{\e deviceClassesId:} The actual uuid (\l{DeviceClassId}) of the \l{DeviceClass} \unicode{0x2192} \l{DeviceClass::id()}. \li - \underline{\e deviceClassesId:} The actual uuid (\l{DeviceClassId}) of the \l{DeviceClass} \unicode{0x2192} \l{DeviceClass::id()}.
\li - \underline{\e basicTags:} A list of \l{Types::BasicTag}{BasicTags} for this device \unicode{0x2192} \l{DeviceClass::basicTags()}. A \l{DeviceClass} can have multiple \l{Types::BasicTag}{BasicTags} which describe the basic category of the DeviceClass. A \l{DeviceClass} should be eighter a Service or a Device, never both. See enum \l{Types::BasicTag} for more information. The expected value for the \e basicTags parameters matches the enum name like this: \li - \underline{\e basicTags:} A list of \l{DeviceClass::BasicTag}{BasicTags} for this device \unicode{0x2192} \l{DeviceClass::basicTags()}. A \l{DeviceClass} can have multiple \l{DeviceClass::BasicTag}{BasicTags} which describe the basic category of the DeviceClass. A \l{DeviceClass} should be eighter a Service or a Device, never both. See enum \l{DeviceClass::BasicTag} for more information. The expected value for the \e basicTags parameters matches the enum name like this:
\tt {Types::BasicTagService} \unicode{0x2192} \tt {"basicTags": [ "Service" ]} \tt {DeviceClass::BasicTagService} \unicode{0x2192} \tt {"basicTags": [ "Service" ]}
\tt {Types::BasicTagLighting} \unicode{0x2192} \tt {"basicTags": [ "Lighting" ]} \tt {DeviceClass::BasicTagLighting} \unicode{0x2192} \tt {"basicTags": [ "Lighting" ]}
\tt ... \tt ...

View File

@ -18,8 +18,6 @@
\li The logical OR \tt | operator for two \l{State}{States} \li The logical OR \tt | operator for two \l{State}{States}
\endtable \endtable
\chapter Types::ValueOperator \chapter Types::ValueOperator
\table \table
\header \header
@ -52,6 +50,7 @@
\li The \tt >= operator to compare two \a values of a \l{Param}. \li The \tt >= operator to compare two \a values of a \l{Param}.
\endtable \endtable
\chapter Types::InputType \chapter Types::InputType
\table \table
\header \header
@ -100,88 +99,6 @@
\li The \l{ParamType} indicates that a MAC hardware address is requested as \l{Types::InputType}{InputType}. \li The \l{ParamType} indicates that a MAC hardware address is requested as \l{Types::InputType}{InputType}.
\endtable \endtable
\chapter Types::BasicTag
A \l{DeviceClass} can have multiple \l{Types::BasicTag}{BasicTags} which describe the basic category of the DeviceClass. A \l{DeviceClass} should be at least a \tt Service or a \tt Device, never both.
\table
\header
\li Constant
\li Value
\li Description
\row
\li Types::BasicTagService
\li 0
\li The \l{DeviceClass} describes a service.
\row
\li Types::BasicTagDevice
\li 1
\li The \l{DeviceClass} describes a real device.
\row
\li Types::BasicTagSensor
\li 2
\li The \l{DeviceClass} describes a sensor. Any device which can measure or detect something is a sensor.
\row
\li Types::BasicTagActuator
\li 3
\li The \l{DeviceClass} describes an actuator. Any device which can do something is an actuator.
\row
\li Types::BasicTagLighting
\li 4
\li The \l{DeviceClass} describes a lighting device.
\row
\li Types::BasicTagEnergy
\li 5
\li The \l{DeviceClass} describes an energy device.
\row
\li Types::BasicTagMultimedia
\li 6
\li The \l{DeviceClass} describes a multimedia device.
\row
\li Types::BasicTagWeather
\li 7
\li The \l{DeviceClass} describes a weather service/device.
\row
\li Types::BasicTagGateway
\li 8
\li The \l{DeviceClass} describes a gateway device.
\row
\li Types::BasicTagHeating
\li 9
\li The \l{DeviceClass} describes a heating device.
\row
\li Types::BasicTagCooling
\li 10
\li The \l{DeviceClass} describes a cooling device.
\row
\li Types::BasicTagNotification
\li 11
\li The \l{DeviceClass} describes a notification device/service.
\row
\li Types::BasicTagSecurity
\li 12
\li The \l{DeviceClass} describes a security device/service.
\row
\li Types::BasicTagTime
\li 13
\li The \l{DeviceClass} describes a time device/service.
\row
\li Types::BasicTagShading
\li 14
\li The \l{DeviceClass} describes a shading device.
\row
\li Types::BasicTagAppliance
\li 15
\li The \l{DeviceClass} describes an appliance.
\row
\li Types::BasicTagCamera
\li 16
\li The \l{DeviceClass} describes a camera device.
\row
\li Types::BasicTagLock
\li 17
\li The \l{DeviceClass} describes a lock device.
\endtable
\chapter Types::Unit \chapter Types::Unit
\table \table
\header \header

View File

@ -60,6 +60,50 @@
During the setup, a button has to be pushed in order to pair the \l{Device}. During the setup, a button has to be pushed in order to pair the \l{Device}.
*/ */
/*! \enum DeviceClass::BasicTag
This enum type specifies the basic tags which describe the categories of the DeviceClass.
A DeviceClass can have multiple tags.
\value BasicTagService
The \l{DeviceClass} describes a service.
\value BasicTagDevice
The \l{DeviceClass} describes a real device.
\value BasicTagSensor
The \l{DeviceClass} describes a sensor. Any device which can measure or detect something is a sensor.
\value BasicTagActuator
The \l{DeviceClass} describes an actuator. Any device which can do something is an actuator.
\value BasicTagLighting
The \l{DeviceClass} describes a lighting device.
\value BasicTagEnergy
The \l{DeviceClass} describes an energy device.
\value BasicTagMultimedia
The \l{DeviceClass} describes a multimedia device/service.
\value BasicTagWeather
The \l{DeviceClass} describes a weather device/service.
\value BasicTagGateway
The \l{DeviceClass} describes a gateway device.
\value BasicTagHeating
The \l{DeviceClass} describes a heating device.
\value BasicTagCooling
The \l{DeviceClass} describes a cooling device.
\value BasicTagNotification
The \l{DeviceClass} describes a notification service.
\value BasicTagSecurity
The \l{DeviceClass} describes a security device/service.
\value BasicTagTime
The \l{DeviceClass} describes a time device/service.
\value BasicTagShading
The \l{DeviceClass} describes a shading device.
\value BasicTagAppliance
The \l{DeviceClass} describes an appliance.
\value BasicTagCamera
The \l{DeviceClass} describes a camera device.
\value BasicTagLock
The \l{DeviceClass} describes a lock device.
*/
#include "deviceclass.h" #include "deviceclass.h"
/*! Constructs a DeviceClass with the give \a pluginId ,\a vendorId and \a id . /*! Constructs a DeviceClass with the give \a pluginId ,\a vendorId and \a id .
@ -113,18 +157,18 @@ void DeviceClass::setName(const QString &name)
/*! Returns the list of basicTags of this DeviceClass. /*! Returns the list of basicTags of this DeviceClass.
\sa Types::BasicTag \sa DeviceClass::BasicTag
*/ */
QList<Types::BasicTag> DeviceClass::basicTags() const QList<DeviceClass::BasicTag> DeviceClass::basicTags() const
{ {
return m_basicTags; return m_basicTags;
} }
/*! Set the list of \a basicTags of this DeviceClass. /*! Set the list of \a basicTags of this DeviceClass.
\sa Types::BasicTag \sa DeviceClass::BasicTag
*/ */
void DeviceClass::setBasicTags(const QList<Types::BasicTag> &basicTags) void DeviceClass::setBasicTags(const QList<DeviceClass::BasicTag> &basicTags)
{ {
m_basicTags = basicTags; m_basicTags = basicTags;
} }

View File

@ -37,6 +37,8 @@ class DeviceClass
Q_GADGET Q_GADGET
Q_ENUMS(CreateMethod) Q_ENUMS(CreateMethod)
Q_ENUMS(SetupMethod) Q_ENUMS(SetupMethod)
Q_ENUMS(BasicTag)
public: public:
enum CreateMethod { enum CreateMethod {
CreateMethodUser = 0x01, CreateMethodUser = 0x01,
@ -52,6 +54,28 @@ public:
SetupMethodPushButton SetupMethodPushButton
}; };
enum BasicTag {
BasicTagService,
BasicTagDevice,
BasicTagSensor,
BasicTagActuator,
BasicTagLighting,
BasicTagEnergy,
BasicTagMultimedia,
BasicTagWeather,
BasicTagGateway,
BasicTagHeating,
BasicTagCooling,
BasicTagNotification,
BasicTagSecurity,
BasicTagTime,
BasicTagShading,
BasicTagAppliance,
BasicTagCamera,
BasicTagLock
};
DeviceClass(const PluginId &pluginId = PluginId(), const VendorId &vendorId = VendorId(), const DeviceClassId &id = DeviceClassId()); DeviceClass(const PluginId &pluginId = PluginId(), const VendorId &vendorId = VendorId(), const DeviceClassId &id = DeviceClassId());
DeviceClassId id() const; DeviceClassId id() const;
@ -62,8 +86,8 @@ public:
QString name() const; QString name() const;
void setName(const QString &name); void setName(const QString &name);
QList<Types::BasicTag> basicTags() const; QList<BasicTag> basicTags() const;
void setBasicTags(const QList<Types::BasicTag> &basicTags); void setBasicTags(const QList<BasicTag> &basicTags);
QList<StateType> stateTypes() const; QList<StateType> stateTypes() const;
void setStateTypes(const QList<StateType> &stateTypes); void setStateTypes(const QList<StateType> &stateTypes);
@ -99,7 +123,7 @@ private:
VendorId m_vendorId; VendorId m_vendorId;
PluginId m_pluginId; PluginId m_pluginId;
QString m_name; QString m_name;
QList<Types::BasicTag> m_basicTags; QList<BasicTag> m_basicTags;
QList<StateType> m_stateTypes; QList<StateType> m_stateTypes;
QList<EventType> m_eventTypes; QList<EventType> m_eventTypes;
QList<EventType> m_allEventTypes; QList<EventType> m_allEventTypes;

View File

@ -234,7 +234,7 @@ QList<DeviceClass> DevicePlugin::supportedDevices() const
deviceClass.setPairingInfo(jo.value("pairingInfo").toString()); deviceClass.setPairingInfo(jo.value("pairingInfo").toString());
deviceClass.setParamTypes(parseParamTypes(jo.value("paramTypes").toArray())); deviceClass.setParamTypes(parseParamTypes(jo.value("paramTypes").toArray()));
QList<Types::BasicTag> basicTags; QList<DeviceClass::BasicTag> basicTags;
foreach (const QJsonValue &basicTagJson, jo.value("basicTags").toArray()) { foreach (const QJsonValue &basicTagJson, jo.value("basicTags").toArray()) {
basicTags.append(basicTagStringToBasicTag(basicTagJson.toString())); basicTags.append(basicTagStringToBasicTag(basicTagJson.toString()));
} }
@ -812,47 +812,47 @@ Types::InputType DevicePlugin::inputTypeStringToInputType(const QString &inputTy
return Types::InputTypeNone; return Types::InputTypeNone;
} }
Types::BasicTag DevicePlugin::basicTagStringToBasicTag(const QString &basicTag) const DeviceClass::BasicTag DevicePlugin::basicTagStringToBasicTag(const QString &basicTag) const
{ {
if (basicTag == "Device") { if (basicTag == "Device") {
return Types::BasicTagDevice; return DeviceClass::BasicTagDevice;
} else if (basicTag == "Service") { } else if (basicTag == "Service") {
return Types::BasicTagService; return DeviceClass::BasicTagService;
} else if (basicTag == "Actuator") { } else if (basicTag == "Actuator") {
return Types::BasicTagActuator; return DeviceClass::BasicTagActuator;
} else if (basicTag == "Sensor") { } else if (basicTag == "Sensor") {
return Types::BasicTagSensor; return DeviceClass::BasicTagSensor;
} else if (basicTag == "Lighting") { } else if (basicTag == "Lighting") {
return Types::BasicTagLighting; return DeviceClass::BasicTagLighting;
} else if (basicTag == "Energy") { } else if (basicTag == "Energy") {
return Types::BasicTagEnergy; return DeviceClass::BasicTagEnergy;
} else if (basicTag == "Multimedia") { } else if (basicTag == "Multimedia") {
return Types::BasicTagMultimedia; return DeviceClass::BasicTagMultimedia;
} else if (basicTag == "Weather") { } else if (basicTag == "Weather") {
return Types::BasicTagWeather; return DeviceClass::BasicTagWeather;
} else if (basicTag == "Gateway") { } else if (basicTag == "Gateway") {
return Types::BasicTagGateway; return DeviceClass::BasicTagGateway;
} else if (basicTag == "Heating") { } else if (basicTag == "Heating") {
return Types::BasicTagHeating; return DeviceClass::BasicTagHeating;
} else if (basicTag == "Cooling") { } else if (basicTag == "Cooling") {
return Types::BasicTagCooling; return DeviceClass::BasicTagCooling;
} else if (basicTag == "Notification") { } else if (basicTag == "Notification") {
return Types::BasicTagNotification; return DeviceClass::BasicTagNotification;
} else if (basicTag == "Security") { } else if (basicTag == "Security") {
return Types::BasicTagSecurity; return DeviceClass::BasicTagSecurity;
} else if (basicTag == "Time") { } else if (basicTag == "Time") {
return Types::BasicTagTime; return DeviceClass::BasicTagTime;
} else if (basicTag == "Shading") { } else if (basicTag == "Shading") {
return Types::BasicTagShading; return DeviceClass::BasicTagShading;
} else if (basicTag == "Appliance") { } else if (basicTag == "Appliance") {
return Types::BasicTagAppliance; return DeviceClass::BasicTagAppliance;
} else if (basicTag == "Camera") { } else if (basicTag == "Camera") {
return Types::BasicTagCamera; return DeviceClass::BasicTagCamera;
} else if (basicTag == "Lock") { } else if (basicTag == "Lock") {
return Types::BasicTagLock; return DeviceClass::BasicTagLock;
} else { } else {
qCWarning(dcDeviceManager) << "Could not parse basicTag:" << basicTag << "in plugin" << this->pluginName(); qCWarning(dcDeviceManager) << "Could not parse basicTag:" << basicTag << "in plugin" << this->pluginName();
} }
return Types::BasicTagDevice; return DeviceClass::BasicTagDevice;
} }

View File

@ -128,7 +128,7 @@ private:
Types::Unit unitStringToUnit(const QString &unitString) const; Types::Unit unitStringToUnit(const QString &unitString) const;
Types::InputType inputTypeStringToInputType(const QString &inputType) const; Types::InputType inputTypeStringToInputType(const QString &inputType) const;
Types::BasicTag basicTagStringToBasicTag(const QString &basicTag) const; DeviceClass::BasicTag basicTagStringToBasicTag(const QString &basicTag) const;
DeviceManager *m_deviceManager; DeviceManager *m_deviceManager;

View File

@ -59,7 +59,6 @@ class Types
{ {
Q_GADGET Q_GADGET
Q_ENUMS(InputType) Q_ENUMS(InputType)
Q_ENUMS(BasicTag)
Q_ENUMS(Unit) Q_ENUMS(Unit)
Q_ENUMS(StateOperator) Q_ENUMS(StateOperator)
Q_ENUMS(ValueOperator) Q_ENUMS(ValueOperator)
@ -78,27 +77,6 @@ public:
InputTypeMacAddress InputTypeMacAddress
}; };
enum BasicTag {
BasicTagService,
BasicTagDevice,
BasicTagSensor,
BasicTagActuator,
BasicTagLighting,
BasicTagEnergy,
BasicTagMultimedia,
BasicTagWeather,
BasicTagGateway,
BasicTagHeating,
BasicTagCooling,
BasicTagNotification,
BasicTagSecurity,
BasicTagTime,
BasicTagShading,
BasicTagAppliance,
BasicTagCamera,
BasicTagLock
};
enum Unit { enum Unit {
UnitNone, UnitNone,
UnitSeconds, UnitSeconds,
@ -161,7 +139,6 @@ public:
Q_DECLARE_METATYPE(Types::InputType) Q_DECLARE_METATYPE(Types::InputType)
Q_DECLARE_METATYPE(Types::Unit) Q_DECLARE_METATYPE(Types::Unit)
Q_DECLARE_METATYPE(Types::BasicTag)
Q_DECLARE_METATYPE(Types::ValueOperator) Q_DECLARE_METATYPE(Types::ValueOperator)
Q_DECLARE_METATYPE(Types::StateOperator) Q_DECLARE_METATYPE(Types::StateOperator)

View File

@ -80,7 +80,7 @@ void JsonTypes::init()
{ {
// BasicTypes // BasicTypes
s_basicType = enumToStrings(JsonTypes::staticMetaObject, "BasicType"); s_basicType = enumToStrings(JsonTypes::staticMetaObject, "BasicType");
s_basicTag = enumToStrings(Types::staticMetaObject, "BasicTag"); s_basicTag = enumToStrings(DeviceClass::staticMetaObject, "BasicTag");
s_stateOperator = enumToStrings(Types::staticMetaObject, "StateOperator"); s_stateOperator = enumToStrings(Types::staticMetaObject, "StateOperator");
s_valueOperator = enumToStrings(Types::staticMetaObject, "ValueOperator"); s_valueOperator = enumToStrings(Types::staticMetaObject, "ValueOperator");
s_inputType = enumToStrings(Types::staticMetaObject, "InputType"); s_inputType = enumToStrings(Types::staticMetaObject, "InputType");
@ -522,7 +522,7 @@ QVariantMap JsonTypes::packDeviceClass(const DeviceClass &deviceClass)
variant.insert("vendorId", deviceClass.vendorId()); variant.insert("vendorId", deviceClass.vendorId());
QVariantList basicTags; QVariantList basicTags;
foreach (const Types::BasicTag &basicTag, deviceClass.basicTags()) { foreach (const DeviceClass::BasicTag &basicTag, deviceClass.basicTags()) {
basicTags.append(s_basicTag.at(basicTag)); basicTags.append(s_basicTag.at(basicTag));
} }
QVariantList stateTypes; QVariantList stateTypes;

View File

@ -100,7 +100,7 @@ public:
static QVariantMap allTypes(); static QVariantMap allTypes();
DECLARE_TYPE(basicType, "BasicType", JsonTypes, BasicType) DECLARE_TYPE(basicType, "BasicType", JsonTypes, BasicType)
DECLARE_TYPE(basicTag, "BasicTag", Types, BasicTag) DECLARE_TYPE(basicTag, "BasicTag", DeviceClass, BasicTag)
DECLARE_TYPE(stateOperator, "StateOperator", Types, StateOperator) DECLARE_TYPE(stateOperator, "StateOperator", Types, StateOperator)
DECLARE_TYPE(valueOperator, "ValueOperator", Types, ValueOperator) DECLARE_TYPE(valueOperator, "ValueOperator", Types, ValueOperator)
DECLARE_TYPE(inputType, "InputType", Types, InputType) DECLARE_TYPE(inputType, "InputType", Types, InputType)