mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-11-01 13:31:36 +08:00
batt_smbus cleanup unnecessary Device CDev usage
This commit is contained in:
@@ -48,7 +48,7 @@
|
|||||||
#include "batt_smbus.h"
|
#include "batt_smbus.h"
|
||||||
|
|
||||||
BATT_SMBUS::BATT_SMBUS(device::Device *interface, const char *path) :
|
BATT_SMBUS::BATT_SMBUS(device::Device *interface, const char *path) :
|
||||||
CDev("BATT_SMBUS", path),
|
CDev(path),
|
||||||
_interface(interface),
|
_interface(interface),
|
||||||
_batt_topic(nullptr),
|
_batt_topic(nullptr),
|
||||||
_batt_orb_id(nullptr),
|
_batt_orb_id(nullptr),
|
||||||
@@ -61,10 +61,6 @@ BATT_SMBUS::BATT_SMBUS(device::Device *interface, const char *path) :
|
|||||||
_low_thr(0.0f),
|
_low_thr(0.0f),
|
||||||
_manufacturer_name(nullptr)
|
_manufacturer_name(nullptr)
|
||||||
{
|
{
|
||||||
// Set the device type from the interface.
|
|
||||||
_device_id.devid_s.bus_type = _interface->get_device_bus_type();
|
|
||||||
_device_id.devid_s.bus = _interface->get_device_bus();
|
|
||||||
_device_id.devid_s.address = _interface->get_device_address();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BATT_SMBUS::~BATT_SMBUS()
|
BATT_SMBUS::~BATT_SMBUS()
|
||||||
@@ -107,7 +103,7 @@ int BATT_SMBUS::block_read(const uint8_t cmd_code, void *data, const unsigned le
|
|||||||
}
|
}
|
||||||
|
|
||||||
// addr(wr), cmd_code, addr(r), byte_count, rx_data[]
|
// addr(wr), cmd_code, addr(r), byte_count, rx_data[]
|
||||||
uint8_t device_address = get_device_address();
|
uint8_t device_address = _interface->get_device_address();
|
||||||
uint8_t full_data_packet[DATA_BUFFER_SIZE + 4] = {0};
|
uint8_t full_data_packet[DATA_BUFFER_SIZE + 4] = {0};
|
||||||
|
|
||||||
full_data_packet[0] = (device_address << 1) | 0x00;
|
full_data_packet[0] = (device_address << 1) | 0x00;
|
||||||
@@ -560,7 +556,7 @@ int BATT_SMBUS::read_word(const uint8_t cmd_code, void *data)
|
|||||||
|
|
||||||
if (PX4_OK == result) {
|
if (PX4_OK == result) {
|
||||||
// Check PEC.
|
// Check PEC.
|
||||||
uint8_t addr = (get_device_address() << 1);
|
uint8_t addr = (_interface->get_device_address() << 1);
|
||||||
uint8_t full_data_packet[5];
|
uint8_t full_data_packet[5];
|
||||||
full_data_packet[0] = addr | 0x00;
|
full_data_packet[0] = addr | 0x00;
|
||||||
full_data_packet[1] = cmd_code;
|
full_data_packet[1] = cmd_code;
|
||||||
@@ -584,12 +580,12 @@ int BATT_SMBUS::search_addresses()
|
|||||||
{
|
{
|
||||||
uint16_t tmp;
|
uint16_t tmp;
|
||||||
|
|
||||||
set_device_address(BATT_SMBUS_ADDR);
|
_interface->set_device_address(BATT_SMBUS_ADDR);
|
||||||
|
|
||||||
if (PX4_OK != read_word(BATT_SMBUS_VOLTAGE, &tmp)) {
|
if (PX4_OK != read_word(BATT_SMBUS_VOLTAGE, &tmp)) {
|
||||||
// Search through all valid SMBus addresses.
|
// Search through all valid SMBus addresses.
|
||||||
for (uint8_t i = BATT_SMBUS_ADDR_MIN; i < BATT_SMBUS_ADDR_MAX; i++) {
|
for (uint8_t i = BATT_SMBUS_ADDR_MIN; i < BATT_SMBUS_ADDR_MAX; i++) {
|
||||||
set_device_address(i);
|
_interface->set_device_address(i);
|
||||||
|
|
||||||
if (read_word(BATT_SMBUS_VOLTAGE, &tmp) == PX4_OK) {
|
if (read_word(BATT_SMBUS_VOLTAGE, &tmp) == PX4_OK) {
|
||||||
if (tmp > 0) {
|
if (tmp > 0) {
|
||||||
@@ -604,7 +600,7 @@ int BATT_SMBUS::search_addresses()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PX4_INFO("Smart battery found at 0x%x", get_device_address());
|
PX4_INFO("Smart battery found at 0x%x", _interface->get_device_address());
|
||||||
PX4_INFO("Smart battery connected");
|
PX4_INFO("Smart battery connected");
|
||||||
|
|
||||||
return PX4_OK;
|
return PX4_OK;
|
||||||
|
|||||||
@@ -43,7 +43,6 @@
|
|||||||
* @author Jacob Dahl <dahl.jakejacob@gmail.com>
|
* @author Jacob Dahl <dahl.jakejacob@gmail.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <px4_config.h>
|
#include <px4_config.h>
|
||||||
#include <px4_workqueue.h>
|
#include <px4_workqueue.h>
|
||||||
|
|
||||||
@@ -52,7 +51,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ecl/geo/geo.h>
|
#include <ecl/geo/geo.h>
|
||||||
|
|
||||||
#include <drivers/device/CDev.hpp>
|
#include <lib/cdev/CDev.hpp>
|
||||||
#include <drivers/device/Device.hpp>
|
#include <drivers/device/Device.hpp>
|
||||||
#include <drivers/device/i2c.h>
|
#include <drivers/device/i2c.h>
|
||||||
#include <drivers/drv_device.h>
|
#include <drivers/drv_device.h>
|
||||||
@@ -119,7 +118,7 @@ int serial_number();
|
|||||||
extern device::Device *BATT_SMBUS_I2C_interface(int bus);
|
extern device::Device *BATT_SMBUS_I2C_interface(int bus);
|
||||||
typedef device::Device *(*BATT_SMBUS_constructor)(int);
|
typedef device::Device *(*BATT_SMBUS_constructor)(int);
|
||||||
|
|
||||||
class BATT_SMBUS : public device::CDev
|
class BATT_SMBUS : public cdev::CDev
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@@ -264,9 +263,8 @@ public:
|
|||||||
*/
|
*/
|
||||||
int unseal();
|
int unseal();
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Device *_interface;
|
device::Device *_interface;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user