Feature/complete radio driver guards #36

Merged
okapteinis merged 2 commits from feature/complete-radio-driver-guards into nightly 2025-12-26 20:39:58 +02:00
okapteinis commented 2025-12-26 20:38:21 +02:00 (Migrated from github.com)

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

## 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 20:38:34 +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 enhances the robustness and portability of the codebase by introducing conditional compilation guards around radio driver-related code. The changes ensure that radio driver initialization and declarations are only included when the RADIO_DRIVER_AVAILABLE macro is defined, preventing compilation errors and allowing the system to build correctly across various hardware configurations, regardless of radio driver support.

Highlights

  • Radio Driver Initialization Guard: The initialization of the radio driver (radio_init()) and the seeding of the fast random number generator (fast_rng.begin(radio_get_rng_seed())) in examples/companion_radio/main.cpp are now conditionally compiled using #if RADIO_DRIVER_AVAILABLE. This ensures these operations only occur when a radio driver is present, preventing compilation errors on platforms without one.
  • Conditional Driver Declaration: The extern declaration for radio_driver in variants/sensecap_indicator_d1l/target.h has been placed inside an #if RADIO_DRIVER_AVAILABLE block. This prevents compilation issues on platforms where the radio driver is not supported or available, improving code portability.
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 enhances the robustness and portability of the codebase by introducing conditional compilation guards around radio driver-related code. The changes ensure that radio driver initialization and declarations are only included when the `RADIO_DRIVER_AVAILABLE` macro is defined, preventing compilation errors and allowing the system to build correctly across various hardware configurations, regardless of radio driver support. ### Highlights * **Radio Driver Initialization Guard**: The initialization of the radio driver (`radio_init()`) and the seeding of the fast random number generator (`fast_rng.begin(radio_get_rng_seed())`) in `examples/companion_radio/main.cpp` are now conditionally compiled using `#if RADIO_DRIVER_AVAILABLE`. This ensures these operations only occur when a radio driver is present, preventing compilation errors on platforms without one. * **Conditional Driver Declaration**: The `extern` declaration for `radio_driver` in `variants/sensecap_indicator_d1l/target.h` has been placed inside an `#if RADIO_DRIVER_AVAILABLE` block. This prevents compilation issues on platforms where the radio driver is not supported or available, improving code portability. <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 20:39:40 +02:00
gemini-code-assist[bot] (Migrated from github.com) left a comment

Code Review

This pull request aims to add preprocessor guards to conditionally compile radio driver code. While the intent is good, the implementation is incomplete and introduces compilation errors. The changes make the definition of key objects like the_mesh and radio_driver conditional, but their usages are not, which will break the build when RADIO_DRIVER_AVAILABLE is disabled. I've left two critical comments with details on how to fix these issues by ensuring all related code is properly guarded.

## Code Review This pull request aims to add preprocessor guards to conditionally compile radio driver code. While the intent is good, the implementation is incomplete and introduces compilation errors. The changes make the definition of key objects like `the_mesh` and `radio_driver` conditional, but their usages are not, which will break the build when `RADIO_DRIVER_AVAILABLE` is disabled. I've left two critical comments with details on how to fix these issues by ensuring all related code is properly guarded.
@ -128,3 +129,4 @@
if (!radio_init()) { halt(); }
fast_rng.begin(radio_get_rng_seed());
#endif
gemini-code-assist[bot] (Migrated from github.com) commented 2025-12-26 20:39:40 +02:00

critical

While adding this guard is a good start, it introduces a compilation issue. The object the_mesh is defined within an #if RADIO_DRIVER_AVAILABLE block (lines 96-102), but its usages throughout setup() and loop() are not conditionally compiled. This will cause a build failure when RADIO_DRIVER_AVAILABLE is not defined. Please wrap all usages of the_mesh with the same preprocessor directive. For example, the_mesh.loop() at line 229 and multiple calls within setup() need to be guarded.

![critical](https://www.gstatic.com/codereviewagent/critical.svg) While adding this guard is a good start, it introduces a compilation issue. The object `the_mesh` is defined within an `#if RADIO_DRIVER_AVAILABLE` block (lines 96-102), but its usages throughout `setup()` and `loop()` are not conditionally compiled. This will cause a build failure when `RADIO_DRIVER_AVAILABLE` is not defined. Please wrap all usages of `the_mesh` with the same preprocessor directive. For example, `the_mesh.loop()` at line 229 and multiple calls within `setup()` need to be guarded.
@ -26,2 +26,4 @@
extern ESP32Board board;
#if RADIO_DRIVER_AVAILABLE
extern WRAPPER_CLASS radio_driver;
#endif
gemini-code-assist[bot] (Migrated from github.com) commented 2025-12-26 20:39:40 +02:00

critical

Guarding the extern declaration of radio_driver is correct, but this change is incomplete and will lead to compilation errors. The definition of radio_driver in variants/sensecap_indicator_d1l/target.cpp (line 67) is not guarded. Furthermore, radio-related functions like radio_init() (declared at line 49) use radio_driver but are not guarded. When RADIO_DRIVER_AVAILABLE is false, radio_driver will be undeclared, causing a build failure. To fix this, you need to wrap all radio-related code, including function declarations in this file (lines 49-53) and their definitions and related objects in target.cpp, with #if RADIO_DRIVER_AVAILABLE.

![critical](https://www.gstatic.com/codereviewagent/critical.svg) Guarding the `extern` declaration of `radio_driver` is correct, but this change is incomplete and will lead to compilation errors. The definition of `radio_driver` in `variants/sensecap_indicator_d1l/target.cpp` (line 67) is not guarded. Furthermore, radio-related functions like `radio_init()` (declared at line 49) use `radio_driver` but are not guarded. When `RADIO_DRIVER_AVAILABLE` is false, `radio_driver` will be undeclared, causing a build failure. To fix this, you need to wrap all radio-related code, including function declarations in this file (lines 49-53) and their definitions and related objects in `target.cpp`, with `#if RADIO_DRIVER_AVAILABLE`.
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!36
No description provided.