mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-05-23 15:57:35 +08:00
batt_smbus move to new WQ
This commit is contained in:
@@ -48,9 +48,8 @@
|
||||
|
||||
extern "C" __EXPORT int batt_smbus_main(int argc, char *argv[]);
|
||||
|
||||
struct work_s BATT_SMBUS::_work = {};
|
||||
|
||||
BATT_SMBUS::BATT_SMBUS(SMBus *interface, const char *path) :
|
||||
ScheduledWorkItem(px4::device_bus_to_wq(interface->get_device_id())),
|
||||
_interface(interface),
|
||||
_cycle(perf_alloc(PC_ELAPSED, "batt_smbus_cycle")),
|
||||
_batt_topic(nullptr),
|
||||
@@ -151,8 +150,7 @@ int BATT_SMBUS::task_spawn(int argc, char *argv[])
|
||||
return PX4_ERROR;
|
||||
}
|
||||
|
||||
// Throw it into the work queue.
|
||||
work_queue(HPWORK, &_work, (worker_t)&BATT_SMBUS::cycle_trampoline, dev, 0);
|
||||
dev->ScheduleNow();
|
||||
|
||||
return PX4_OK;
|
||||
|
||||
@@ -163,13 +161,7 @@ int BATT_SMBUS::task_spawn(int argc, char *argv[])
|
||||
return PX4_ERROR;
|
||||
}
|
||||
|
||||
void BATT_SMBUS::cycle_trampoline(void *arg)
|
||||
{
|
||||
BATT_SMBUS *dev = (BATT_SMBUS *)arg;
|
||||
dev->cycle();
|
||||
}
|
||||
|
||||
void BATT_SMBUS::cycle()
|
||||
void BATT_SMBUS::Run()
|
||||
{
|
||||
// Get the current time.
|
||||
uint64_t now = hrt_absolute_time();
|
||||
@@ -279,8 +271,7 @@ void BATT_SMBUS::cycle()
|
||||
}
|
||||
|
||||
// Schedule a fresh cycle call when the measurement is done.
|
||||
work_queue(HPWORK, &_work, (worker_t)&BATT_SMBUS::cycle_trampoline, this,
|
||||
USEC2TICK(BATT_SMBUS_MEASUREMENT_INTERVAL_US));
|
||||
ScheduleDelayed(BATT_SMBUS_MEASUREMENT_INTERVAL_US);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
#include <lib/drivers/smbus/SMBus.hpp>
|
||||
#include <mathlib/mathlib.h>
|
||||
#include <px4_config.h>
|
||||
#include <px4_workqueue.h>
|
||||
#include <px4_work_queue/ScheduledWorkItem.hpp>
|
||||
#include <perf/perf_counter.h>
|
||||
#include <platforms/px4_module.h>
|
||||
#include <uORB/topics/battery_status.h>
|
||||
@@ -144,7 +144,7 @@ int serial_number();
|
||||
|
||||
|
||||
|
||||
class BATT_SMBUS : public ModuleBase<BATT_SMBUS>
|
||||
class BATT_SMBUS : public ModuleBase<BATT_SMBUS>, public px4::ScheduledWorkItem
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -280,9 +280,7 @@ public:
|
||||
|
||||
private:
|
||||
|
||||
static void cycle_trampoline(void *arg);
|
||||
|
||||
static work_s _work;
|
||||
void Run() override;
|
||||
|
||||
perf_counter_t _cycle;
|
||||
|
||||
@@ -294,8 +292,6 @@ private:
|
||||
|
||||
bool _should_suspend{false};
|
||||
|
||||
void cycle();
|
||||
|
||||
/** @param _last_report Last published report, used for test(). */
|
||||
battery_status_s _last_report = battery_status_s{};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user