fix: Add conditional compilation guards for variant-specific hardware… #33

Merged
okapteinis merged 1 commit from feature/fix-companion-radio-build into nightly 2025-12-26 19:27:35 +02:00
okapteinis commented 2025-12-26 19:25:37 +02:00 (Migrated from github.com)

… in UITask.cpp

Fixes build failures in companion_radio examples by adding conditional compilation guards for variant-specific hardware driver code.

The UITask.cpp file uses WRAPPER_CLASS, radio_driver, and user_btn which are only defined when compiled as an Arduino variant. This change wraps the target.h include and radio driver code with #ifdef ARDUINO guards to allow the build to proceed when these variant-specific definitions aren't available.

This is a step toward resolving the broken companion_radio build without requiring full architectural changes to the hardware driver system.

Description

Type of Change

  • Bug fix (non-breaking change fixing an issue)
  • New feature (non-breaking change adding functionality)
  • Breaking change (fix or feature causing existing functionality to change)
  • Documentation update
  • Hardware support addition
  • Performance improvement

Testing Performed

  • Builds successfully on affected platforms
  • Tested on physical hardware
  • Verified no new compiler warnings
  • Checked memory usage
  • Example applications still work
  • Documentation updated

Hardware Tested

  • Device:
  • Firmware variant:
  • Test results:

Code Quality Checklist

  • Follows existing code style
  • No dynamic memory allocation in inappropriate places
  • No reformatting of existing code
  • Added comments for non-obvious logic
  • Updated documentation
  • CHANGELOG.md updated if applicable

Breaking Changes

Screenshots/Logs

Additional Notes

… in UITask.cpp Fixes build failures in companion_radio examples by adding conditional compilation guards for variant-specific hardware driver code. The UITask.cpp file uses WRAPPER_CLASS, radio_driver, and user_btn which are only defined when compiled as an Arduino variant. This change wraps the target.h include and radio driver code with #ifdef ARDUINO guards to allow the build to proceed when these variant-specific definitions aren't available. This is a step toward resolving the broken companion_radio build without requiring full architectural changes to the hardware driver system. ## Description <!-- Provide a clear description of what this PR does --> ## Type of Change <!-- Mark relevant items with [x] --> - [ ] Bug fix (non-breaking change fixing an issue) - [ ] New feature (non-breaking change adding functionality) - [ ] Breaking change (fix or feature causing existing functionality to change) - [ ] Documentation update - [ ] Hardware support addition - [ ] Performance improvement ## Related Issues <!-- Link related issues: Fixes #123, Relates to #456 --> ## Testing Performed <!-- Describe testing done --> - [ ] Builds successfully on affected platforms - [ ] Tested on physical hardware - [ ] Verified no new compiler warnings - [ ] Checked memory usage - [ ] Example applications still work - [ ] Documentation updated ## Hardware Tested <!-- List hardware tested, or write "N/A" if documentation-only --> - Device: - Firmware variant: - Test results: ## Code Quality Checklist - [ ] Follows existing code style - [ ] No dynamic memory allocation in inappropriate places - [ ] No reformatting of existing code - [ ] Added comments for non-obvious logic - [ ] Updated documentation - [ ] CHANGELOG.md updated if applicable ## Breaking Changes <!-- Describe any breaking changes and migration path, or write "None" --> ## Screenshots/Logs <!-- Add screenshots or serial logs if applicable --> ## Additional Notes <!-- Any additional information for reviewers -->
gemini-code-assist[bot] commented 2025-12-26 19:25:48 +02:00 (Migrated from github.com)

Summary of Changes

Hello @okapteinis, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request resolves build failures in the companion_radio examples by strategically applying conditional compilation. It introduces preprocessor directives to isolate hardware driver declarations that are specific to Arduino variants, ensuring that the code compiles correctly across different build environments without requiring a complete overhaul of the hardware driver architecture. This change specifically targets UITask.cpp to prevent issues with undefined symbols when not building for an Arduino platform.

Highlights

  • Build Fix: Addresses build failures in companion_radio examples by introducing conditional compilation for variant-specific hardware driver code.
  • Conditional Compilation: Implemented #ifdef ARDUINO guards around target.h inclusion and RADIO_DRIVER_AVAILABLE macro definition in UITask.cpp.
  • Variant-Specific Code Handling: Ensures that hardware driver declarations specific to Arduino variants are only processed when compiled as an Arduino variant, preventing undefined symbol errors in other build configurations.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.


  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩︎

## Summary of Changes Hello @okapteinis, I'm Gemini Code Assist[^1]! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request resolves build failures in the `companion_radio` examples by strategically applying conditional compilation. It introduces preprocessor directives to isolate hardware driver declarations that are specific to Arduino variants, ensuring that the code compiles correctly across different build environments without requiring a complete overhaul of the hardware driver architecture. This change specifically targets `UITask.cpp` to prevent issues with undefined symbols when not building for an Arduino platform. ### Highlights * **Build Fix**: Addresses build failures in `companion_radio` examples by introducing conditional compilation for variant-specific hardware driver code. * **Conditional Compilation**: Implemented `#ifdef ARDUINO` guards around `target.h` inclusion and `RADIO_DRIVER_AVAILABLE` macro definition in `UITask.cpp`. * **Variant-Specific Code Handling**: Ensures that hardware driver declarations specific to Arduino variants are only processed when compiled as an Arduino variant, preventing undefined symbol errors in other build configurations. <details> <summary><b>Using Gemini Code Assist</b></summary> <br> The full guide for Gemini Code Assist can be found on our [documentation page](https://developers.google.com/gemini-code-assist/docs/review-github-code), here are some quick tips. <b>Invoking Gemini</b> You can request assistance from Gemini at any point by creating a comment using either `/gemini <command>` or `@gemini-code-assist <command>`. Below is a summary of the supported commands on the current page. Feature | Command | Description --- | --- | --- Code Review | `/gemini review` | Performs a code review for the current pull request in its current state. Pull Request Summary | `/gemini summary` | Provides a summary of the current pull request in its current state. Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in pull request comments and review comments. Help | `/gemini help` | Displays a list of available commands. <b>Customization</b> To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a `.gemini/` folder in the base of the repository. Detailed instructions can be found [here](https://developers.google.com/gemini-code-assist/docs/customize-gemini-behavior-github). <b>Limitations & Feedback</b> Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with :thumbsup: and :thumbsdown: on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up [here](https://google.qualtrics.com/jfe/form/SV_2cyuGuTWsEw84yG). <b>You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the [Gemini Code Assist IDE Extension](https://cloud.google.com/products/gemini/code-assist).</b> </details> [^1]: Review the [Privacy Notices](https://policies.google.com/privacy), [Generative AI Prohibited Use Policy](https://policies.google.com/terms/generative-ai/use-policy), [Terms of Service](https://policies.google.com/terms), and learn how to configure Gemini Code Assist in GitHub [here](https://developers.google.com/gemini-code-assist/docs/customize-gemini-behavior-github). Gemini can make mistakes, so double check it and [use code with caution](https://support.google.com/legal/answer/13505487).
gemini-code-assist[bot] (Migrated from github.com) reviewed 2025-12-26 19:28:25 +02:00
gemini-code-assist[bot] (Migrated from github.com) left a comment

Code Review

This pull request attempts to fix a build failure in companion_radio examples for non-Arduino variants by making hardware-specific includes in UITask.cpp conditional. The change introduces an #ifdef ARDUINO guard around the inclusion of target.h and defines a RADIO_DRIVER_AVAILABLE macro to indicate the presence of hardware drivers. While the approach is sound, the implementation appears incomplete. The pull request description states that UITask.cpp uses symbols defined in target.h. For the build fix to be effective, the code that uses these symbols must also be conditionally compiled. I've left a comment highlighting this critical issue.

## Code Review This pull request attempts to fix a build failure in `companion_radio` examples for non-Arduino variants by making hardware-specific includes in `UITask.cpp` conditional. The change introduces an `#ifdef ARDUINO` guard around the inclusion of `target.h` and defines a `RADIO_DRIVER_AVAILABLE` macro to indicate the presence of hardware drivers. While the approach is sound, the implementation appears incomplete. The pull request description states that `UITask.cpp` uses symbols defined in `target.h`. For the build fix to be effective, the code that uses these symbols must also be conditionally compiled. I've left a comment highlighting this critical issue.
@ -10,0 +14,4 @@
#define RADIO_DRIVER_AVAILABLE 1
#else
#define RADIO_DRIVER_AVAILABLE 0
#endif
gemini-code-assist[bot] (Migrated from github.com) commented 2025-12-26 19:28:25 +02:00

critical

This change correctly introduces conditional inclusion for target.h and defines RADIO_DRIVER_AVAILABLE. However, according to the pull request description, UITask.cpp uses symbols like radio_driver and user_btn from target.h. To complete the fix, all usages of these symbols within this file must also be conditionally compiled, for example by wrapping them in an #if RADIO_DRIVER_AVAILABLE block. As it stands, this change is incomplete and will likely not resolve the compilation errors for non-Arduino builds.

![critical](https://www.gstatic.com/codereviewagent/critical.svg) This change correctly introduces conditional inclusion for `target.h` and defines `RADIO_DRIVER_AVAILABLE`. However, according to the pull request description, `UITask.cpp` uses symbols like `radio_driver` and `user_btn` from `target.h`. To complete the fix, all usages of these symbols within this file must also be conditionally compiled, for example by wrapping them in an `#if RADIO_DRIVER_AVAILABLE` block. As it stands, this change is incomplete and will likely not resolve the compilation errors for non-Arduino builds.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
ojars/MeshCore!33
No description provided.