From b5627f487fe285ce6366f3d0dfe33265b376a7e7 Mon Sep 17 00:00:00 2001 From: Hamish Willee Date: Wed, 29 May 2024 19:37:27 +1000 Subject: [PATCH] camera_trigger: module docs for camera trigger driver (#23104) --- Tools/px4moduledoc/srcparser.py | 2 +- src/drivers/camera_trigger/camera_trigger.cpp | 41 ++++++++++++++++++- .../interfaces/src/camera_interface.h | 3 +- 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/Tools/px4moduledoc/srcparser.py b/Tools/px4moduledoc/srcparser.py index b9b3482520..3eacbf4325 100644 --- a/Tools/px4moduledoc/srcparser.py +++ b/Tools/px4moduledoc/srcparser.py @@ -15,7 +15,7 @@ class ModuleDocumentation(object): # TOC in https://github.com/PX4/PX4-user_guide/blob/main/en/SUMMARY.md valid_categories = ['driver', 'estimator', 'controller', 'system', 'communication', 'command', 'template', 'simulation', 'autotune'] - valid_subcategories = ['', 'distance_sensor', 'imu', 'ins', 'airspeed_sensor', + valid_subcategories = ['', 'camera', 'distance_sensor', 'imu', 'ins', 'airspeed_sensor', 'magnetometer', 'baro', 'optical_flow', 'rpm_sensor', 'transponder'] max_line_length = 80 # wrap lines that are longer than this diff --git a/src/drivers/camera_trigger/camera_trigger.cpp b/src/drivers/camera_trigger/camera_trigger.cpp index 4f49e5692b..33d89f3c01 100644 --- a/src/drivers/camera_trigger/camera_trigger.cpp +++ b/src/drivers/camera_trigger/camera_trigger.cpp @@ -53,6 +53,7 @@ #include #include #include +#include #include #include @@ -924,7 +925,45 @@ CameraTrigger::status() static int usage() { - PX4_INFO("usage: camera_trigger {start|stop|status|test|test_power}\n"); + PRINT_MODULE_DESCRIPTION( + R"DESCR_STR( +### Description + +Camera trigger driver. + +This module triggers cameras that are connected to the flight-controller outputs, +or simple MAVLink cameras that implement the MAVLink trigger protocol. + +The driver responds to the following MAVLink trigger commands being found in missions or recieved over MAVLink: + +- `MAV_CMD_DO_TRIGGER_CONTROL` +- `MAV_CMD_DO_DIGICAM_CONTROL` +- `MAV_CMD_DO_SET_CAM_TRIGG_DIST` +- `MAV_CMD_OBLIQUE_SURVEY` + +The commands cause the driver to trigger camera image capture based on time or distance. +Each time an image capture is triggered, the `CAMERA_TRIGGER` MAVLink message is emitted. + +A "simple MAVLink camera" is one that supports the above command set. +When configured for this kind of camera, all the driver does is emit the `CAMERA_TRIGGER` MAVLink message as expected. +The incoming commands must be forwarded to the MAVLink camera, and are automatically emitted to MAVLink channels +when found in missions. + +The driver is configured using [Camera Trigger parameters](../advanced_config/parameter_reference.md#camera-trigger). +In particular: + +- `TRIG_INTERFACE` - How the camera is connected to flight controller (PWM, GPIO, Seagull, MAVLink) +- `TRIG_MODE` - Distance or time based triggering, with values set by `TRIG_DISTANCE` and `TRIG_INTERVAL`. + +[Setup/usage information](../camera/index.md). +)DESCR_STR"); + PRINT_MODULE_USAGE_NAME("camera_trigger", "driver"); + PRINT_MODULE_USAGE_SUBCATEGORY("camera"); + PRINT_MODULE_USAGE_COMMAND("start"); + PRINT_MODULE_USAGE_COMMAND_DESCR("stop","Stop driver"); + PRINT_MODULE_USAGE_COMMAND_DESCR("status","Print driver status information"); + PRINT_MODULE_USAGE_COMMAND_DESCR("test","Trigger one image (not logged or forwarded to GCS)"); + PRINT_MODULE_USAGE_COMMAND_DESCR("test_power","Toggle power"); return 1; } diff --git a/src/drivers/camera_trigger/interfaces/src/camera_interface.h b/src/drivers/camera_trigger/interfaces/src/camera_interface.h index f9079ea2ba..d3c9a699ff 100644 --- a/src/drivers/camera_trigger/interfaces/src/camera_interface.h +++ b/src/drivers/camera_trigger/interfaces/src/camera_interface.h @@ -39,8 +39,7 @@ #include #include - -#define arraySize(a) (sizeof((a))/sizeof(((a)[0]))) +#include class CameraInterface {