From f231182cd9707fa0fcfdc40a032cbfa7124f4bf0 Mon Sep 17 00:00:00 2001
From: Julien BERAUD <julien.beraud@parrot.com>
Date: Fri, 2 Oct 2015 11:29:27 +0200
Subject: [PATCH] AP_HAL: Add support for a Heater

Add heater class and non-pure virtual method to Util class in order to do
nothing in case the function is not implemented
---
 libraries/AP_HAL/AP_HAL_Boards.h | 9 +++++++++
 libraries/AP_HAL/Util.h          | 3 +++
 2 files changed, 12 insertions(+)

diff --git a/libraries/AP_HAL/AP_HAL_Boards.h b/libraries/AP_HAL/AP_HAL_Boards.h
index b4b752653..42c963824 100644
--- a/libraries/AP_HAL/AP_HAL_Boards.h
+++ b/libraries/AP_HAL/AP_HAL_Boards.h
@@ -89,6 +89,9 @@
 #define HAL_COMPASS_HMC5843_MPU6000 7
 #define HAL_COMPASS_RASPILOT  8
 
+// Heat Types
+#define HAL_LINUX_HEAT_PWM 1
+
 /**
    CPU classes, used to select if CPU intensive algorithms should be used
 
@@ -228,6 +231,12 @@
 #define HAL_BARO_MS5607_I2C_BUS 1
 #define HAL_BARO_MS5607_I2C_ADDR 0x77
 #define HAL_BARO_DEFAULT HAL_BARO_MS5607
+#define HAL_UTILS_HEAT HAL_LINUX_HEAT_PWM
+#define HAL_LINUX_HEAT_PWM_SYSFS_DIR "/sys/class/pwm/pwm_6"
+#define HAL_LINUX_HEAT_KP 20000
+#define HAL_LINUX_HEAT_KI 6
+#define HAL_LINUX_HEAT_PERIOD_NS 125000
+#define HAL_LINUX_HEAT_TARGET_TEMP 50
 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO
 #define HAL_BOARD_LOG_DIRECTORY "/var/APM/logs"
 #define HAL_BOARD_TERRAIN_DIRECTORY "/var/APM/terrain"
diff --git a/libraries/AP_HAL/Util.h b/libraries/AP_HAL/Util.h
index f23f2138e..de76343f3 100644
--- a/libraries/AP_HAL/Util.h
+++ b/libraries/AP_HAL/Util.h
@@ -81,6 +81,9 @@ public:
      */
     virtual AP_HAL::Stream *get_shell_stream() { return NULL; }
 
+    /* Support for an imu heating system */
+    virtual void set_imu_temp(float current) {}
+
 protected:
     // we start soft_armed false, so that actuators don't send any
     // values until the vehicle code has fully started
-- 
GitLab