98 lines
2.4 KiB
C++
98 lines
2.4 KiB
C++
/*
|
|
* TfHumidityBricklet.cpp
|
|
*
|
|
* Created on: 12.06.2014
|
|
* Author: matzman
|
|
*/
|
|
|
|
#include <tfcppsimple/devices/TfHumidityBricklet.h>
|
|
#include <tfcppsimple/TfException.h>
|
|
|
|
namespace tfcppsimple {
|
|
|
|
TfHumidityBricklet::TfHumidityBricklet(TfConnection& connection,
|
|
std::string uid,
|
|
std::string connected_uid,
|
|
TfDevicePosition position,
|
|
TfVersion hardware_version,
|
|
TfVersion firmware_version,
|
|
TfDevice* parent
|
|
)
|
|
: TfBricklet(connection, uid, connected_uid, position, hardware_version, firmware_version,
|
|
(uint16_t)TfDeviceIdentifier::HUMIDITY, TfDeviceIdentifier::HUMIDITY, parent) {
|
|
|
|
}
|
|
|
|
TfHumidityBricklet::~TfHumidityBricklet() {
|
|
// TODO Auto-generated destructor stub
|
|
}
|
|
|
|
|
|
std::string TfHumidityBricklet::getDeviceName(bool extended) {
|
|
std::ostringstream ss;
|
|
ss << "Humidity Bricklet";
|
|
if (extended) {
|
|
ss << " [" << uid << "]";
|
|
}
|
|
return ss.str();
|
|
}
|
|
|
|
void TfHumidityBricklet::doConfigureDevice() {
|
|
humidity_create(&humidityObj, uid.c_str(), &connection.getTfIpConnection());
|
|
int ret = humidity_set_response_expected_all(&humidityObj, true);
|
|
if (ret != E_OK) {
|
|
std::ostringstream ss;
|
|
ss << "Error while configuring: " << ret << ".";
|
|
throw TfError(ss.str(), (TfErrorCode)ret);
|
|
} else {
|
|
TfDevice::doConfigureDevice();
|
|
}
|
|
}
|
|
|
|
void TfHumidityBricklet::doReconfigureDevice() {
|
|
humidity_destroy(&humidityObj);
|
|
humidity_create(&humidityObj, uid.c_str(), &connection.getTfIpConnection());
|
|
int ret = humidity_set_response_expected_all(&humidityObj, true);
|
|
if (ret != E_OK) {
|
|
std::ostringstream ss;
|
|
ss << "Error while reconfiguring: " << ret << ".";
|
|
throw TfError(ss.str(), (TfErrorCode)ret);
|
|
} else {
|
|
TfDevice::doReconfigureDevice();
|
|
}
|
|
}
|
|
|
|
void TfHumidityBricklet::doConnectionLost() {
|
|
TfDevice::doConnectionLost();
|
|
}
|
|
|
|
void TfHumidityBricklet::doShutdown() {
|
|
humidity_destroy(&humidityObj);
|
|
TfDevice::doShutdown();
|
|
}
|
|
|
|
|
|
uint16_t TfHumidityBricklet::getHumidity() {
|
|
uint16_t retval;
|
|
int ret = humidity_get_humidity(&humidityObj, &retval);
|
|
if (ret != E_OK) {
|
|
std::ostringstream ss;
|
|
ss << "Error while reading humidity: " << ret << ".";
|
|
throw TfError(ss.str(), (TfErrorCode)ret);
|
|
}
|
|
return retval;
|
|
}
|
|
|
|
uint16_t TfHumidityBricklet::getHumidityRaw() {
|
|
uint16_t retval;
|
|
int ret = humidity_get_analog_value(&humidityObj, &retval);
|
|
if (ret != E_OK) {
|
|
std::ostringstream ss;
|
|
ss << "Error while reading raw humidity: " << ret << ".";
|
|
throw TfError(ss.str(), (TfErrorCode)ret);
|
|
}
|
|
return retval;
|
|
}
|
|
|
|
} /* namespace tfcppsimple */
|