15 uint16_t receive_id {0x51};
16 uint16_t command_id {0x61};
17 uint16_t max_power_limit {150};
18 uint16_t buffer_target {50};
19 std::chrono::steady_clock::duration resend_time {std::chrono::milliseconds{50}};
20 std::chrono::steady_clock::duration command_timeout {std::chrono::milliseconds{100}};
24 static bool valid_configuration(
const info_type& info) {
25 return !info.can_name.empty() && info.receive_id <= 0x7ff && info.command_id <= 0x7ff
26 && info.receive_id != info.command_id && info.max_power_limit > 0
27 && info.resend_time > std::chrono::steady_clock::duration::zero()
28 && info.command_timeout >= info.resend_time;
30 std::string desc()
const {
return "super cap"; }
31 bool init(
const info_type& info);
34 awaitable<void> task();
35 awaitable<void> stop_output();
36 awaitable<void> set(
bool enable, uint16_t power_limit);
37 bool configured()
const {
return configured_; }
38 float chassis_power()
const {
return chassis_power_; }
39 uint16_t chassis_power_limit()
const {
return chassis_power_limit_; }
40 uint8_t energy()
const {
return energy_; }
41 uint8_t error_code()
const {
return error_code_; }
42 uint64_t sample_sequence()
const {
return sample_sequence_; }
46 float chassis_power_ {0.f};
47 uint16_t chassis_power_limit_ {0};
49 uint8_t error_code_ {0};
50 uint64_t sample_sequence_ {0};
51 uint16_t requested_power_limit_ {0};
52 bool requested_enabled_ {
false};
53 bool configured_ {
false};
54 bool connected_ {
false};
55 bool started_ {
false};
56 std::chrono::steady_clock::time_point last_command_ {};