46 , registered(property != nullptr)
52 , registered(property != nullptr)
58 , registered(property != nullptr)
64 , registered(property != nullptr)
70 , registered(property != nullptr)
76 , registered(property != nullptr)
79 #ifdef INDI_PROPERTY_BACKWARD_COMPATIBILE
93 return isValid() ? &d->self :
nullptr;
99 return isValid() ? &d->self :
nullptr;
106 return isValid() ? &d->self :
nullptr;
109 #define PROPERTY_CASE(CODE) \
110 switch (d->property != nullptr ? d->type : INDI_UNKNOWN) \
112 case INDI_NUMBER: { auto property = static_cast<PropertyViewNumber *>(d->property); CODE } break; \
113 case INDI_TEXT: { auto property = static_cast<PropertyViewText *>(d->property); CODE } break; \
114 case INDI_SWITCH: { auto property = static_cast<PropertyViewSwitch *>(d->property); CODE } break; \
115 case INDI_LIGHT: { auto property = static_cast<PropertyViewLight *>(d->property); CODE } break; \
116 case INDI_BLOB: { auto property = static_cast<PropertyViewBlob *>(d->property); CODE } break; \
136 : d_ptr(property.d_ptr)
140 : d_ptr(property.d_ptr)
144 : d_ptr(property.d_ptr)
148 : d_ptr(property.d_ptr)
152 : d_ptr(property.d_ptr)
155 #ifdef INDI_PROPERTY_BACKWARD_COMPATIBILE
213 d->registered = p !=
nullptr;
238 d->baseDevice = (idp ==
nullptr ?
BaseDevice() : *idp);
244 d->baseDevice = baseDevice;
264 return "INDI_NUMBER";
266 return "INDI_SWITCH";
274 return "INDI_UNKNOWN";
276 return "INDI_UNKNOWN";
282 return d->registered;
294 return d->baseDevice;
510 va_start(ap, format);
519 va_start(ap, format);
527 d->onUpdateCallback = callback;
533 if (d->onUpdateCallback)
534 d->onUpdateCallback();
540 return d->onUpdateCallback !=
nullptr;
Class to provide basic INDI device functionality.
PropertyPrivate(void *property, INDI_PROPERTY_TYPE type)
virtual ~PropertyPrivate()
Provides generic container for INDI properties.
bool isDeviceNameMatch(const char *otherDeviceName) const
void onUpdate(const std::function< void()> &callback)
INDI::PropertyViewSwitch * getSwitch() const
const char * getGroupName() const
INDI::PropertyViewBlob * getBLOB() const
INDI::PropertyViewText * getText() const
void void void apply() const
const char * getDeviceName() const
void setTimestamp(const char *timestamp)
INDI::Property * operator->()
void setLabel(const char *label)
void save(FILE *fp) const
const char * getStateAsString() const
INDI::PropertyViewNumber * getNumber() const
const char * getName() const
INDI::PropertyViewLight * getLight() const
IPerm getPermission() const
void setType(INDI_PROPERTY_TYPE t)
void setGroupName(const char *groupName)
void * getProperty() const
bool hasUpdateCallback() const
void setTimeout(double timeout)
void setDeviceName(const char *deviceName)
bool isNameMatch(const char *otherName) const
const char * getTypeAsString() const
BaseDevice getBaseDevice() const
const char * getLabel() const
void setBaseDevice(BaseDevice *idp)
bool getRegistered() const
void setName(const char *name)
INDI_PROPERTY_TYPE getType() const
bool isLabelMatch(const char *otherLabel) const
void setRegistered(bool r)
const char * getTimestamp() const
bool isTypeMatch(INDI_PROPERTY_TYPE otherType) const
void setState(IPState state)
void setPermission(IPerm permission)
IPerm
Permission hint, with respect to client.
const char * pstateStr(IPState s)
#define PROPERTY_CASE(CODE)
Namespace to encapsulate INDI client, drivers, and mediator classes.
Provides decorator for Low-Level IXXXVectorProperty/IXXX.
BLOB (Binary Large Object) vector property descriptor.
Light vector property descriptor.
Number vector property descriptor.
Switch vector property descriptor.
Text vector property descriptor.