22constexpr
double default_charge = 50.0;
23constexpr
double default_voltage = 30.0;
24constexpr
double default_current = 3.0;
25constexpr
double default_temperature = 20.0;
26constexpr const
char* default_info = "Fake battery system v2.0";
37 double period = config.
check(
"thread_period",
Value(
default_period),
"Thread period (smaller implies faster charge/discharge)").asFloat64();
40 double charge = config.
check(
"charge",
Value(default_charge),
"Initial charge (%)").asFloat64();
41 double voltage = config.
check(
"voltage",
Value(default_voltage),
"Initial voltage (V)").asFloat64();
42 double current = config.
check(
"current",
Value(default_current),
"Initial current (A)").asFloat64();
43 double temperature = config.
check(
"temperature",
Value(default_temperature),
"Initial temperature (°C)").asFloat64();
44 std::string info = config.
check(
"info",
Value(default_info),
"Initial battery information").asString();
46 std::lock_guard<std::mutex> lock(
m_mutex);
58 yCError(FAKEBATTERY,
"Could not open rpc port");
63 PeriodicThread::start();
71 PeriodicThread::stop();
81 std::lock_guard<std::mutex> lock(
m_mutex);
92 std::lock_guard<std::mutex> lock(
m_mutex);
99 std::lock_guard<std::mutex> lock(
m_mutex);
106 std::lock_guard<std::mutex> lock(
m_mutex);
113 std::lock_guard<std::mutex> lock(
m_mutex);
120 std::lock_guard<std::mutex> lock(
m_mutex);
127 std::lock_guard<std::mutex> lock(
m_mutex);
134 std::lock_guard<std::mutex> lock(
m_mutex);
142 std::lock_guard<std::mutex> lock(
m_mutex);
150 std::lock_guard<std::mutex> lock(
m_mutex);
158 std::lock_guard<std::mutex> lock(
m_mutex);
165 std::lock_guard<std::mutex> lock(
m_mutex);
171 std::lock_guard<std::mutex> lock(
m_mutex);
177 std::lock_guard<std::mutex> lock(
m_mutex);
183 std::lock_guard<std::mutex> lock(
m_mutex);
189 std::lock_guard<std::mutex> lock(
m_mutex);
195 std::lock_guard<std::mutex> lock(
m_mutex);
202 std::lock_guard<std::mutex> lock(
m_mutex);
205 return "0: BATTERY_OK_STANBY";
207 return "1: BATTERY_OK_IN_CHARGE";
209 return "2: BATTERY_OK_IN_USE";
211 return "3: BATTERY_GENERAL_ERROR";
213 return "4: BATTERY_TIMEOUT";
215 return "5: BATTERY_LOW_WARNING";
217 return "6: BATTERY_CRITICAL_WARNING";
219 return "Invalid battery status";
225 std::lock_guard<std::mutex> lock(
m_mutex);
231 std::lock_guard<std::mutex> lock(
m_mutex);
236void FakeBattery::updateStatus()
244 battery_status = yarp::dev::IBattery::Battery_status::BATTERY_OK_IN_USE;
246 battery_status = yarp::dev::IBattery::Battery_status::BATTERY_LOW_WARNING;
248 battery_status = yarp::dev::IBattery::Battery_status::BATTERY_CRITICAL_WARNING;
251 battery_status = yarp::dev::IBattery::Battery_status::BATTERY_OK_STANBY;
253 battery_status = yarp::dev::IBattery::Battery_status::BATTERY_OK_IN_CHARGE;
constexpr double default_period
fakeBattery: Documentation to be added
void setBatteryTemperature(const double temperature) override
double getBatteryCharge() override
std::string getBatteryInfo() override
double battery_temperature
void setBatteryStatus(const yarp::dev::IBattery::Battery_status status) override
void setBatteryInfo(const std::string &info) override
Battery_status getBatteryStatus() override
yarp::os::RpcServer ctrl_port
void setBatteryCurrent(const double current) override
void run() override
Loop function.
Battery_status battery_status
bool suspend_battery_status_update
bool open(yarp::os::Searchable &config) override
Open the DeviceDriver.
void setBatteryVoltage(const double voltage) override
bool close() override
Close the DeviceDriver.
void setBatteryCharge(const double charge) override
double getBatteryVoltage() override
double getBatteryCurrent() override
std::string getBatteryStatusString() override
double getBatteryTemperature() override
@ BATTERY_CRITICAL_WARNING
An abstraction for a periodic thread.
bool setPeriod(double period)
Set the (new) period of the thread.
A base class for nested structures that can be searched.
virtual bool check(const std::string &key) const =0
Check if there exists a property of the given name.
virtual Value & find(const std::string &key) const =0
Gets a value corresponding to a given keyword.
A single value (typically within a Bottle).
virtual std::string asString() const
Get string value.
bool attachAsServer(yarp::os::UnbufferedContactable &port)
Tag this WireLink as a server, receiving commands via the specified port.
yarp::os::WireLink & yarp()
Get YARP state associated with this object.
#define yCInfo(component,...)
#define yCError(component,...)
#define YARP_LOG_COMPONENT(name,...)
constexpr const T & clamp(const T &v, const T &lo, const T &hi)
For streams capable of holding different kinds of content, check what they actually have.
An interface to the operating system, including Port based communication.