diff --git a/CMakeLists.txt b/CMakeLists.txt index 6210ef7..1798c7e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,23 +1,27 @@ cmake_minimum_required(VERSION 3.5) project(vermin_collector_ros_msgs) # Default to C++14 if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 14) endif() if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Wpedantic) endif() find_package(ament_cmake REQUIRED) -# find_package(geometry_msgs REQUIRED) find_package(std_msgs REQUIRED) +find_package(builtin_interfaces REQUIRED) find_package(rosidl_default_generators REQUIRED) rosidl_generate_interfaces(${PROJECT_NAME} -# "msg/Num.msg" -# "msg/TargetCoordinates.msg" -"msg/Command.msg" -"msg/Feedback.msg" -"msg/BeetleDetection.msg" -DEPENDENCIES std_msgs - ) + "msg/Command.msg" + "msg/Feedback.msg" + "msg/BeetleDetection.msg" + "msg/DeviceHealth.msg" + "msg/DeviceStatus.msg" + "msg/SessionState.msg" + "srv/StartRecording.srv" + "srv/StopRecording.srv" + "srv/AbortRecording.srv" + DEPENDENCIES std_msgs builtin_interfaces +) ament_export_dependencies(rosidl_default_runtime) ament_package() diff --git a/msg/DeviceHealth.msg b/msg/DeviceHealth.msg new file mode 100644 index 0000000..951d7bd --- /dev/null +++ b/msg/DeviceHealth.msg @@ -0,0 +1,8 @@ +# Per-device health snapshot, polled and published periodically. +string device_id +bool ok +float32 battery_pct # 0-100, NaN if unknown +float32 storage_free_gb # NaN if unknown +int8 link_quality # 0-100, -1 if unknown +float32 temperature_c # NaN if unknown +string notes # free-form, used for human-readable hints diff --git a/msg/DeviceStatus.msg b/msg/DeviceStatus.msg new file mode 100644 index 0000000..815299a --- /dev/null +++ b/msg/DeviceStatus.msg @@ -0,0 +1,5 @@ +# Per-device recording status during a session. +string device_id +string state # "idle" | "recording" | "error" +builtin_interfaces/Time last_ack +string current_file # empty if none diff --git a/msg/SessionState.msg b/msg/SessionState.msg new file mode 100644 index 0000000..a78955d --- /dev/null +++ b/msg/SessionState.msg @@ -0,0 +1,6 @@ +# Current state of the recording manager. Published on a latched topic. +string session_id # empty when IDLE +string state # "IDLE" | "ARMING" | "RECORDING" | "STOPPING" | "COLLECTING" | "DONE" | "FAILED" +builtin_interfaces/Time started_at +string[] devices +string note diff --git a/package.xml b/package.xml index de92626..b554863 100644 --- a/package.xml +++ b/package.xml @@ -1,21 +1,22 @@ vermin_collector_ros_msgs 0.0.1 custom message format for vermin collector communication to ESP32 user Apache-2.0 ament_cmake std_msgs + builtin_interfaces rosidl_default_generators rosidl_default_runtime rosidl_interface_packages ament_lint_auto ament_lint_common ament_cmake \ No newline at end of file diff --git a/srv/AbortRecording.srv b/srv/AbortRecording.srv new file mode 100644 index 0000000..ae8bfa0 --- /dev/null +++ b/srv/AbortRecording.srv @@ -0,0 +1,3 @@ +string reason +--- +bool success diff --git a/srv/StartRecording.srv b/srv/StartRecording.srv new file mode 100644 index 0000000..bb14958 --- /dev/null +++ b/srv/StartRecording.srv @@ -0,0 +1,5 @@ +string plant_label +--- +string session_id +string[] accepted_devices +string[] rejected_devices diff --git a/srv/StopRecording.srv b/srv/StopRecording.srv new file mode 100644 index 0000000..51d1ff2 --- /dev/null +++ b/srv/StopRecording.srv @@ -0,0 +1,4 @@ +string notes +--- +string manifest_path +bool success