summaryrefslogtreecommitdiffstats
path: root/src/HvacCanHelper.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/HvacCanHelper.h')
-rw-r--r--src/HvacCanHelper.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/HvacCanHelper.h b/src/HvacCanHelper.h
new file mode 100644
index 0000000..0787834
--- /dev/null
+++ b/src/HvacCanHelper.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2022,2023 Konsulko Group
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#ifndef _HVAC_CAN_HELPER_H
+#define _HVAC_CAN_HELPER_H
+
+#include <cstdint>
+#include <string>
+#include <linux/can.h>
+
+class HvacCanHelper
+{
+public:
+ HvacCanHelper();
+
+ ~HvacCanHelper();
+
+ void set_left_temperature(uint8_t temp);
+
+ void set_right_temperature(uint8_t temp);
+
+ void set_fan_speed(uint8_t temp);
+
+private:
+ uint8_t convert_temp(uint8_t value) {
+ int result = ((0xF0 - 0x10) / 15) * (value - 15) + 0x10;
+ if (result < 0x10)
+ result = 0x10;
+ if (result > 0xF0)
+ result = 0xF0;
+
+ return (uint8_t) result;
+ }
+
+ void read_config();
+
+ void can_open();
+
+ void can_close();
+
+ void can_update();
+
+ std::string m_port;
+ unsigned m_verbose;
+ bool m_config_valid;
+ bool m_active;
+ int m_can_socket;
+ struct sockaddr_can m_can_addr;
+
+ uint8_t m_temp_left;
+ uint8_t m_temp_right;
+ uint8_t m_fan_speed;
+};
+
+#endif // _HVAC_CAN_HELPER_H