type adaptive remote variable
This commit is contained in:
parent
57dfa30cf0
commit
1b9163d468
|
@ -135,10 +135,85 @@ void RemoteVariable::setValue(const char* value) {
|
||||||
this->iot->publish(this->setValueTopic, value);
|
this->iot->publish(this->setValueTopic, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Register a callback for value change
|
||||||
|
* This method will be called when the value of the variable changes on the remote device
|
||||||
|
* @param callback The callback function
|
||||||
|
* @return uint8_t The handler for the callback
|
||||||
|
*/
|
||||||
uint8_t RemoteVariable::registerCallback(std::function<void(char*)> callback) {
|
uint8_t RemoteVariable::registerCallback(std::function<void(char*)> callback) {
|
||||||
this->valueChangeCallback[this->valueChangeCallbackCount] = callback;
|
this->valueChangeCallback[this->valueChangeCallbackCount] = callback;
|
||||||
return valueChangeCallbackCount++;
|
return valueChangeCallbackCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Unregister a callback
|
||||||
|
* This method is used to unregister a callback
|
||||||
|
* @param handler The handler of the callback
|
||||||
|
*/
|
||||||
void RemoteVariable::unregisterCallback(uint8_t handler) {
|
void RemoteVariable::unregisterCallback(uint8_t handler) {
|
||||||
this->valueChangeCallback.erase(handler);
|
this->valueChangeCallback.erase(handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the value of the variable as an integer
|
||||||
|
* This method is used to get the value of the variable as an integer
|
||||||
|
* @return int The value of the variable as an integer
|
||||||
|
* @note If the value is not a valid integer, it will return 0
|
||||||
|
*/
|
||||||
|
int RemoteVariable::getValueAsInt() {
|
||||||
|
return atoi(this->value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the value of the variable as a long
|
||||||
|
* This method is used to get the value of the variable as a long
|
||||||
|
* @return long The value of the variable as a long
|
||||||
|
* @note If the value is not a valid long, it will return 0
|
||||||
|
*/
|
||||||
|
long RemoteVariable::getValueAsLong() {
|
||||||
|
return atol(this->value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the value of the variable as a double
|
||||||
|
* This method is used to get the value of the variable as a double
|
||||||
|
* @return double The value of the variable as a double
|
||||||
|
* @note If the value is not a valid double, it will return 0
|
||||||
|
*/
|
||||||
|
double RemoteVariable::getValueAsDouble() {
|
||||||
|
return atof(this->value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set the value of the variable as an integer
|
||||||
|
* This method is used to set the value of the variable as an integer
|
||||||
|
* @param value The value to set
|
||||||
|
*/
|
||||||
|
void RemoteVariable::setIntValue(int value) {
|
||||||
|
char buffer[this->size];
|
||||||
|
itoa(value, buffer, DEC);
|
||||||
|
this->setValue(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set the value of the variable as a long
|
||||||
|
* This method is used to set the value of the variable as a long
|
||||||
|
* @param value The value to set
|
||||||
|
*/
|
||||||
|
void RemoteVariable::setLongValue(long value) {
|
||||||
|
char buffer[this->size];
|
||||||
|
ltoa(value, buffer, DEC);
|
||||||
|
this->setValue(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set the value of the variable as a double
|
||||||
|
* This method is used to set the value of the variable as a double
|
||||||
|
* @param value The value to set
|
||||||
|
*/
|
||||||
|
void RemoteVariable::setDoubleValue(double value) {
|
||||||
|
char buffer[this->size];
|
||||||
|
snprintf(buffer, this->size, "%f", value);
|
||||||
|
this->setValue(buffer);
|
||||||
|
}
|
||||||
|
|
|
@ -20,6 +20,12 @@ class RemoteVariable
|
||||||
void subscribe();
|
void subscribe();
|
||||||
void requestValue();
|
void requestValue();
|
||||||
char* getValue();
|
char* getValue();
|
||||||
|
int getValueAsInt();
|
||||||
|
long getValueAsLong();
|
||||||
|
double getValueAsDouble();
|
||||||
|
void setIntValue(int value);
|
||||||
|
void setLongValue(long value);
|
||||||
|
void setDoubleValue(double value);
|
||||||
uint8_t registerCallback(std::function<void(char*)>);
|
uint8_t registerCallback(std::function<void(char*)>);
|
||||||
void unregisterCallback(uint8_t handler);
|
void unregisterCallback(uint8_t handler);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue