diff --git a/flight/Modules/Battery/battery.c b/flight/Modules/Battery/battery.c
index 6d072496e..aaec1d7c5 100644
--- a/flight/Modules/Battery/battery.c
+++ b/flight/Modules/Battery/battery.c
@@ -49,6 +49,7 @@
#include "flightbatterystate.h"
#include "flightbatterysettings.h"
+#include "hwsettings.h"
//
// Configuration
@@ -58,6 +59,7 @@
// Private types
// Private variables
+static bool batteryEnabled = false;
// Private functions
static void onTimer(UAVObjEvent* ev);
@@ -68,13 +70,30 @@ static void onTimer(UAVObjEvent* ev);
*/
int32_t BatteryInitialize(void)
{
- FlightBatteryStateInitialize();
- FlightBatterySettingsInitialize();
-
- static UAVObjEvent ev;
- memset(&ev,0,sizeof(UAVObjEvent));
- EventPeriodicCallbackCreate(&ev, onTimer, SAMPLE_PERIOD_MS / portTICK_RATE_MS);
+#ifdef MODULE_BATTERY_BUILTIN
+ batteryEnabled = true;
+#else
+ HwSettingsInitialize();
+ uint8_t optionalModules[HWSETTINGS_OPTIONALMODULES_NUMELEM];
+
+ HwSettingsOptionalModulesGet(optionalModules);
+
+ if (optionalModules[HWSETTINGS_OPTIONALMODULES_BATTERY] == HWSETTINGS_OPTIONALMODULES_ENABLED)
+ batteryEnabled = true;
+ else
+ batteryEnabled = false;
+#endif
+
+ if (batteryEnabled) {
+ FlightBatteryStateInitialize();
+ FlightBatterySettingsInitialize();
+
+ static UAVObjEvent ev;
+
+ memset(&ev,0,sizeof(UAVObjEvent));
+ EventPeriodicCallbackCreate(&ev, onTimer, SAMPLE_PERIOD_MS / portTICK_RATE_MS);
+ }
return 0;
}
diff --git a/shared/uavobjectdefinition/hwsettings.xml b/shared/uavobjectdefinition/hwsettings.xml
index 37c8cc9ff..a4d948767 100644
--- a/shared/uavobjectdefinition/hwsettings.xml
+++ b/shared/uavobjectdefinition/hwsettings.xml
@@ -18,7 +18,7 @@
-
+