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;
517 va_start(ap, format);
526 va_start(ap, format);
534 d->onUpdateCallback = callback;
540 if (d->onUpdateCallback)
541 d->onUpdateCallback();
547 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.
BLOB (Binary Large Object) vector property descriptor.
Light vector property descriptor.
Number vector property descriptor.
Switch vector property descriptor.
Text vector property descriptor.