AP_BattMonitor: auto-start batt_smbus driver if enabled

This commit is contained in:
Andrew Tridgell 2016-08-03 14:44:41 +10:00
parent 00f3113e83
commit d05a08ff4d
1 changed files with 9 additions and 0 deletions

View File

@ -21,6 +21,7 @@
#if CONFIG_HAL_BOARD == HAL_BOARD_PX4
#include <AP_BoardConfig/AP_BoardConfig.h>
#include "AP_BattMonitor_SMBus_PX4.h"
#include <sys/types.h>
@ -33,6 +34,8 @@
extern const AP_HAL::HAL& hal;
extern "C" int batt_smbus_main(int, char **);
// Constructor
AP_BattMonitor_SMBus_PX4::AP_BattMonitor_SMBus_PX4(AP_BattMonitor &mon, uint8_t instance, AP_BattMonitor::BattMonitor_State &mon_state) :
AP_BattMonitor_SMBus(mon, instance, mon_state),
@ -45,6 +48,12 @@ AP_BattMonitor_SMBus_PX4::AP_BattMonitor_SMBus_PX4(AP_BattMonitor &mon, uint8_t
void AP_BattMonitor_SMBus_PX4::init()
{
if (!AP_BoardConfig::px4_start_driver(batt_smbus_main, "batt_smbus", "-b 2 start")) {
hal.console->printf("Unable to start batt_smbus driver\n");
} else {
// give it time to initialise
hal.scheduler->delay(500);
}
// open the device
_batt_fd = open(BATT_SMBUS0_DEVICE_PATH, O_RDWR);
if (_batt_fd == -1) {