00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __INTERFACES_BATTERYINTERFACE_H_
00025 #define __INTERFACES_BATTERYINTERFACE_H_
00026
00027 #include <interface/interface.h>
00028 #include <interface/message.h>
00029 #include <interface/field_iterator.h>
00030
00031 namespace fawkes {
00032
00033 class BatteryInterface : public Interface
00034 {
00035
00036 INTERFACE_MGMT_FRIENDS(BatteryInterface)
00037
00038 public:
00039
00040
00041 private:
00042 #pragma pack(push,4)
00043
00044 typedef struct {
00045 int64_t timestamp_sec;
00046 int64_t timestamp_usec;
00047 uint32_t current;
00048 uint32_t voltage;
00049 uint32_t temperature;
00050 float absolute_soc;
00051 float relative_soc;
00052 } BatteryInterface_data_t;
00053 #pragma pack(pop)
00054
00055 BatteryInterface_data_t *data;
00056
00057 public:
00058
00059 class PushButtonMessage : public Message
00060 {
00061 private:
00062 #pragma pack(push,4)
00063
00064 typedef struct {
00065 int64_t timestamp_sec;
00066 int64_t timestamp_usec;
00067 } PushButtonMessage_data_t;
00068 #pragma pack(pop)
00069
00070 PushButtonMessage_data_t *data;
00071
00072 public:
00073 PushButtonMessage();
00074 ~PushButtonMessage();
00075
00076 PushButtonMessage(const PushButtonMessage *m);
00077
00078 virtual Message * clone() const;
00079 };
00080
00081 class SleepMessage : public Message
00082 {
00083 private:
00084 #pragma pack(push,4)
00085
00086 typedef struct {
00087 int64_t timestamp_sec;
00088 int64_t timestamp_usec;
00089 } SleepMessage_data_t;
00090 #pragma pack(pop)
00091
00092 SleepMessage_data_t *data;
00093
00094 public:
00095 SleepMessage();
00096 ~SleepMessage();
00097
00098 SleepMessage(const SleepMessage *m);
00099
00100 virtual Message * clone() const;
00101 };
00102
00103 virtual bool message_valid(const Message *message) const;
00104 private:
00105 BatteryInterface();
00106 ~BatteryInterface();
00107
00108 public:
00109
00110 uint32_t current() const;
00111 void set_current(const uint32_t new_current);
00112 size_t maxlenof_current() const;
00113 uint32_t voltage() const;
00114 void set_voltage(const uint32_t new_voltage);
00115 size_t maxlenof_voltage() const;
00116 uint32_t temperature() const;
00117 void set_temperature(const uint32_t new_temperature);
00118 size_t maxlenof_temperature() const;
00119 float absolute_soc() const;
00120 void set_absolute_soc(const float new_absolute_soc);
00121 size_t maxlenof_absolute_soc() const;
00122 float relative_soc() const;
00123 void set_relative_soc(const float new_relative_soc);
00124 size_t maxlenof_relative_soc() const;
00125 virtual Message * create_message(const char *type) const;
00126
00127 virtual void copy_values(const Interface *other);
00128 virtual const char * enum_tostring(const char *enumtype, int val) const;
00129
00130 };
00131
00132 }
00133
00134 #endif