load_mon: update orb_publish to uORB::Publication<>

This commit is contained in:
Daniel Agar 2019-09-02 20:41:34 -04:00 committed by GitHub
parent 4d9f2bf776
commit c8f77d438d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 16 deletions

View File

@ -4,3 +4,5 @@ uint64 timestamp # time since system start (microseconds)
uint16 stack_free uint16 stack_free
char[24] task_name char[24] task_name
uint8 ORB_QUEUE_LENGTH = 2

View File

@ -47,9 +47,10 @@
#include <px4_module_params.h> #include <px4_module_params.h>
#include <px4_platform_common/px4_work_queue/ScheduledWorkItem.hpp> #include <px4_platform_common/px4_work_queue/ScheduledWorkItem.hpp>
#include <systemlib/cpuload.h> #include <systemlib/cpuload.h>
#include <uORB/Publication.hpp>
#include <uORB/PublicationQueued.hpp>
#include <uORB/topics/cpuload.h> #include <uORB/topics/cpuload.h>
#include <uORB/topics/task_stack_info.h> #include <uORB/topics/task_stack_info.h>
#include <uORB/uORB.h>
#if defined(__PX4_NUTTX) && !defined(CONFIG_SCHED_INSTRUMENTATION) #if defined(__PX4_NUTTX) && !defined(CONFIG_SCHED_INSTRUMENTATION)
# error load_mon support requires CONFIG_SCHED_INSTRUMENTATION # error load_mon support requires CONFIG_SCHED_INSTRUMENTATION
@ -105,14 +106,14 @@ private:
void _stack_usage(); void _stack_usage();
int _stack_task_index{0}; int _stack_task_index{0};
orb_advert_t _task_stack_info_pub{nullptr}; uORB::PublicationQueued<task_stack_info_s> _task_stack_info_pub{ORB_ID(task_stack_info)};
#endif #endif
DEFINE_PARAMETERS( DEFINE_PARAMETERS(
(ParamBool<px4::params::SYS_STCK_EN>) _param_sys_stck_en (ParamBool<px4::params::SYS_STCK_EN>) _param_sys_stck_en
) )
orb_advert_t _cpuload_pub{nullptr}; uORB::Publication<cpuload_s> _cpuload_pub{ORB_ID(cpuload)};
hrt_abstime _last_idle_time{0}; hrt_abstime _last_idle_time{0};
hrt_abstime _last_idle_time_sample{0}; hrt_abstime _last_idle_time_sample{0};
@ -192,17 +193,12 @@ void LoadMon::_cpuload()
_last_idle_time = total_runtime; _last_idle_time = total_runtime;
_last_idle_time_sample = hrt_absolute_time(); _last_idle_time_sample = hrt_absolute_time();
cpuload_s cpuload = {}; cpuload_s cpuload{};
cpuload.load = 1.0f - (float)interval_idletime / (float)interval; cpuload.load = 1.0f - (float)interval_idletime / (float)interval;
cpuload.ram_usage = _ram_used(); cpuload.ram_usage = _ram_used();
cpuload.timestamp = hrt_absolute_time(); cpuload.timestamp = hrt_absolute_time();
if (_cpuload_pub == nullptr) { _cpuload_pub.publish(cpuload);
_cpuload_pub = orb_advertise(ORB_ID(cpuload), &cpuload);
} else {
orb_publish(ORB_ID(cpuload), _cpuload_pub, &cpuload);
}
} }
float LoadMon::_ram_used() float LoadMon::_ram_used()
@ -284,12 +280,7 @@ void LoadMon::_stack_usage()
task_stack_info.stack_free = stack_free; task_stack_info.stack_free = stack_free;
task_stack_info.timestamp = hrt_absolute_time(); task_stack_info.timestamp = hrt_absolute_time();
if (_task_stack_info_pub == nullptr) { _task_stack_info_pub.publish(task_stack_info);
_task_stack_info_pub = orb_advertise_queue(ORB_ID(task_stack_info), &task_stack_info, num_tasks_per_cycle);
} else {
orb_publish(ORB_ID(task_stack_info), _task_stack_info_pub, &task_stack_info);
}
/* /*
* Found task low on stack, report and exit. Continue here in next cycle. * Found task low on stack, report and exit. Continue here in next cycle.