BlueOS icon indicating copy to clipboard operation
BlueOS copied to clipboard

Accurately reflect PWM output configuration

Open Williangalvani opened this issue 4 months ago • 3 comments

mixed feelings about the store. thoughts? the idea is to slowly move logic away from .vue files

Summary by Sourcery

Extract actuator capability detection to a Vuex module and enhance the gripper component with generic channel mapping and misconfiguration warnings.

New Features:

  • Add ardupilot_capabilities Vuex module to detect actuator support in firmware
  • Display misconfiguration warnings for gripper setup when no actuator or PWM output is configured

Enhancements:

  • Refactor gripper channel detection to iterate over dynamically defined channel arrays
  • Introduce configured_actuators computed property for flexible actuator value mapping
  • Limit gripper card width with max-width styling

Williangalvani avatar Aug 25 '25 18:08 Williangalvani

Reviewer's Guide

This PR refactors gripper-related logic by moving configuration checks into computed properties and a new Vuex module, replaces hardcoded channel detection with a dynamic loop over expanded channel definitions, and enhances the UI with validation messaging and layout constraints.

Class diagram for new ArdupilotCapabilitiesStore Vuex module

classDiagram
  class ArdupilotCapabilitiesStore {
    +firmware_supports_actuators: boolean
  }
  ArdupilotCapabilitiesStore <|-- ardupilot_capabilities: instance
  ArdupilotCapabilitiesStore ..> autopilot_data: uses

Class diagram for updated gripper.vue component logic

classDiagram
  class Gripper {
    +gripper: number | null
    +boardType: string | undefined
    +configured_actuators(): number[]
    +misconfigured_gripper(): string | null
    +toBoardFriendlyChannel(servo: string): string
  }
  Gripper ..> ardupilot_capabilities: uses
  Gripper ..> autopilot_data: uses
  Gripper ..> autopilot: uses

File-Level Changes

Change Details Files
Refactored servo channel detection into a dynamic loop
  • Expanded channel arrays to include all toggle and PWM functions for servos 1–5
  • Replaced manual channel1/2/3 if-blocks with a loop over the channels array
core/frontend/src/components/vehiclesetup/overview/gripper.vue
Added misconfigured gripper validation and messaging
  • Introduced misconfigured_gripper computed property with capability checks
  • Displayed error text in template when gripper or actuator setup is invalid
  • Imported ardupilot_capabilities store to gate validation logic
core/frontend/src/components/vehiclesetup/overview/gripper.vue
Created ardupilot_capabilities Vuex module for firmware checks
  • Added ardupilot_capabilities.ts store module
  • Exposed firmware_supports_actuators getter based on ACTUATOR1_INC parameter
core/frontend/src/store/ardupilot_capabilities.ts
Introduced configured_actuators computed property
  • Filter parameters matching SERVO(\d+)_FUNCTION to derive active actuators
  • Map parameter values to actuator indices
core/frontend/src/components/vehiclesetup/overview/gripper.vue
Minor UI and import adjustments
  • Added max-width="250px" to v-card
  • Imported SERVO_FUNCTION enum and reordered imports
core/frontend/src/components/vehiclesetup/overview/gripper.vue

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an issue from a review comment by replying to it. You can also reply to a review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull request title to generate a title at any time. You can also comment @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in the pull request body to generate a PR summary at any time exactly where you want it. You can also comment @sourcery-ai summary on the pull request to (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the pull request to resolve all Sourcery comments. Useful if you've already addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull request to dismiss all existing Sourcery reviews. Especially useful if you want to start fresh with a new review - don't forget to comment @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

  • Contact our support team for questions or feedback.
  • Visit our documentation for detailed guides and information.
  • Keep in touch with the Sourcery team by following us on X/Twitter, LinkedIn or GitHub.

sourcery-ai[bot] avatar Aug 25 '25 18:08 sourcery-ai[bot]

Relevant to #3501

ES-Alexander avatar Aug 29 '25 19:08 ES-Alexander

Needs to include outputs displaying as RCIN9/10 when using a firmware that supports the new lights outputs (if the output parameters are not using Lights1/2 values)

ES-Alexander avatar Sep 15 '25 16:09 ES-Alexander