diff --git a/Kconfig b/Kconfig index aaf0d3db17..08768add5f 100644 --- a/Kconfig +++ b/Kconfig @@ -220,6 +220,10 @@ menu "examples" source "src/examples/Kconfig" endmenu +menu "templates" +source "src/templates/Kconfig" +endmenu + menu "platforms" depends on PLATFORM_QURT || PLATFORM_POSIX || PLATFORM_NUTTX source "platforms/Kconfig" diff --git a/src/templates/Kconfig b/src/templates/Kconfig new file mode 100644 index 0000000000..6353836988 --- /dev/null +++ b/src/templates/Kconfig @@ -0,0 +1 @@ +rsource "*/Kconfig" diff --git a/src/templates/template_module/Kconfig b/src/templates/template_module/Kconfig new file mode 100644 index 0000000000..704f45ea32 --- /dev/null +++ b/src/templates/template_module/Kconfig @@ -0,0 +1,5 @@ +menuconfig TEMPLATES_TEMPLATE_MODULE + bool "template_module" + default n + ---help--- + Enable support for template_module diff --git a/src/templates/template_module/template_module.cpp b/src/templates/template_module/template_module.cpp index c528ebd3c3..ce572fec43 100644 --- a/src/templates/template_module/template_module.cpp +++ b/src/templates/template_module/template_module.cpp @@ -38,7 +38,6 @@ #include #include -#include ModuleBase::Descriptor TemplateModule::desc{task_spawn, custom_command, print_usage}; @@ -145,42 +144,20 @@ TemplateModule::TemplateModule(int example_param, bool example_flag) void TemplateModule::run() { - // Example: run the loop synchronized to the sensor_combined topic publication - int sensor_combined_sub = orb_subscribe(ORB_ID(sensor_combined)); - - px4_pollfd_struct_t fds[1]; - fds[0].fd = sensor_combined_sub; - fds[0].events = POLLIN; - // initialize parameters parameters_update(true); while (!should_exit()) { - // wait for up to 1000ms for data - int pret = px4_poll(fds, (sizeof(fds) / sizeof(fds[0])), 1000); - - if (pret == 0) { - // Timeout: let the loop run anyway, don't do `continue` here - - } else if (pret < 0) { - // this is undesirable but not much we can do - PX4_ERR("poll error %d, %d", pret, errno); - px4_usleep(50000); - continue; - - } else if (fds[0].revents & POLLIN) { - - struct sensor_combined_s sensor_combined; - orb_copy(ORB_ID(sensor_combined), sensor_combined_sub, &sensor_combined); + if (_sensor_accel_sub.updated()) { + sensor_accel_s accel{}; + _sensor_accel_sub.copy(&accel); // TODO: do something with the data... - } parameters_update(); + px4_usleep(10_ms); } - - orb_unsubscribe(sensor_combined_sub); } void TemplateModule::parameters_update(bool force) diff --git a/src/templates/template_module/template_module.h b/src/templates/template_module/template_module.h index 017a60922d..cdf63f7a66 100644 --- a/src/templates/template_module/template_module.h +++ b/src/templates/template_module/template_module.h @@ -35,8 +35,10 @@ #include #include +#include #include #include +#include using namespace time_literals; @@ -89,5 +91,6 @@ private: // Subscriptions uORB::SubscriptionInterval _parameter_update_sub{ORB_ID(parameter_update), 1_s}; + uORB::Subscription _sensor_accel_sub{ORB_ID(sensor_accel)}; };