AP_BattMonitor: remove PX4 driver

This commit is contained in:
Randy Mackay 2017-02-07 14:48:00 +09:00
parent 3e445fd4b8
commit ebb60e8d2f
5 changed files with 0 additions and 150 deletions

View File

@ -172,11 +172,7 @@ AP_BattMonitor::init()
break;
case BattMonitor_TYPE_SOLO:
state[instance].instance = instance;
#if CONFIG_HAL_BOARD == HAL_BOARD_PX4
drivers[instance] = new AP_BattMonitor_SMBus_PX4(*this, instance, state[instance]);
#else
drivers[instance] = new AP_BattMonitor_SMBus_Solo(*this, instance, state[instance],
#endif
hal.i2c_mgr->get_device(AP_BATTMONITOR_SMBUS_BUS_INTERNAL, AP_BATTMONITOR_SMBUS_I2C_ADDR));
_num_instances++;
break;

View File

@ -19,7 +19,6 @@ class AP_BattMonitor_Backend;
class AP_BattMonitor_Analog;
class AP_BattMonitor_SMBus;
class AP_BattMonitor_SMBus_Solo;
class AP_BattMonitor_SMBus_PX4;
class AP_BattMonitor_SMBus_Maxell;
class AP_BattMonitor
@ -28,7 +27,6 @@ class AP_BattMonitor
friend class AP_BattMonitor_Analog;
friend class AP_BattMonitor_SMBus;
friend class AP_BattMonitor_SMBus_Solo;
friend class AP_BattMonitor_SMBus_PX4;
friend class AP_BattMonitor_SMBus_Maxell;
public:

View File

@ -25,6 +25,5 @@ public:
};
// include specific implementations
#include "AP_BattMonitor_SMBus_PX4.h"
#include "AP_BattMonitor_SMBus_Solo.h"
#include "AP_BattMonitor_SMBus_Maxell.h"

View File

@ -1,102 +0,0 @@
/*
Battery SMBus PX4 driver
*/
/*
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <AP_HAL/AP_HAL.h>
#include <AP_Notify/AP_Notify.h>
#if CONFIG_HAL_BOARD == HAL_BOARD_PX4
#include <AP_BoardConfig/AP_BoardConfig.h>
#include "AP_BattMonitor_SMBus_PX4.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <drivers/drv_batt_smbus.h>
#include <uORB/topics/battery_status.h>
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),
_batt_fd(-1),
_capacity_updated(false)
{
// orb subscription for battery status
_batt_sub = orb_subscribe(ORB_ID(battery_status));
}
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) {
hal.console->printf("Unable to open " BATT_SMBUS0_DEVICE_PATH);
_state.healthy = false;
}
}
// read - read latest voltage and current
void AP_BattMonitor_SMBus_PX4::read()
{
bool updated = false;
struct battery_status_s batt_status;
// check if new info has arrived from the orb
orb_check(_batt_sub, &updated);
// retrieve latest info
if (updated) {
if (OK == orb_copy(ORB_ID(battery_status), _batt_sub, &batt_status)) {
_state.voltage = batt_status.voltage_v;
_state.current_amps = batt_status.current_a;
_state.last_time_micros = AP_HAL::micros();
_state.current_total_mah = batt_status.discharged_mah;
_state.healthy = true;
_state.is_powering_off = batt_status.is_powering_off;
AP_Notify::flags.powering_off = batt_status.is_powering_off;
// read capacity
if ((_batt_fd >= 0) && !_capacity_updated) {
uint16_t tmp;
if (ioctl(_batt_fd, BATT_SMBUS_GET_CAPACITY, (unsigned long)&tmp) == OK) {
_capacity_updated = true;
set_capacity(tmp);
}
}
}
} else if (_state.healthy) {
// timeout after 5 seconds
if ((AP_HAL::micros() - _state.last_time_micros) > AP_BATTMONITOR_SMBUS_TIMEOUT_MICROS) {
_state.healthy = false;
}
}
}
#endif // CONFIG_HAL_BOARD == HAL_BOARD_PX4

View File

@ -1,41 +0,0 @@
/*
Battery SMBus PX4 driver
*/
/*
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include <AP_Common/AP_Common.h>
#include <AP_Param/AP_Param.h>
#include <AP_Math/AP_Math.h>
#include "AP_BattMonitor_SMBus.h"
class AP_BattMonitor_SMBus_PX4 : public AP_BattMonitor_SMBus
{
public:
// Constructor
AP_BattMonitor_SMBus_PX4(AP_BattMonitor &mon, uint8_t instance, AP_BattMonitor::BattMonitor_State &mon_state);
/// init
void init();
/// read - read the battery voltage and current
void read();
private:
int _batt_sub; // orb subscription description
int _batt_fd; // file descriptor
bool _capacity_updated; // capacity info read
};