omi icon indicating copy to clipboard operation
omi copied to clipboard

fixed disconnect broadcast bug, firmware side offset capture, large packet sending

Open kevvz opened this issue 1 year ago • 1 comments

Fixed a bug in the firmware where if you send a stop flag to the storage stream, the bluetooth module will permanently broadcast, wasting battery. Also, instead of the app tracking the offset of the storage in the case of discontinuous storage transmission, the device keeps track of the offset. The app should request the offset every time it needs to continue downloading, although this is not enforced.

Summary by CodeRabbit

  • New Features

    • Updated Bluetooth device name and model information.
    • Enhanced Bluetooth capabilities with new settings.
    • Added functions for managing audio file offsets.
    • Introduced methods for file operations on the device in the CaptureProvider.
    • Added support for processing two different packet sizes in the backend.
  • Bug Fixes

    • Improved LED state management based on charging status.
    • Enhanced error handling for audio processing functions.
  • Improvements

    • Streamlined initialization sequence for firmware.
    • Optimized data handling for audio and storage in Bluetooth GATT services.
    • Enhanced packet handling for storage streaming.
    • Adjusted memory management settings for improved performance.
  • Documentation

    • Updated comments and error messages for clarity.

kevvz avatar Oct 07 '24 19:10 kevvz

Walkthrough

The changes encompass a series of modifications across various files in the firmware and application layers, focusing on enhancing Bluetooth capabilities, memory management, and file handling. Key updates include renaming device identifiers, adjusting configuration settings, and refining initialization logic. New functions for managing audio file offsets are introduced, while existing functions are optimized for better error handling and performance. The application layer sees improvements in the CaptureProvider for storage management, and the backend introduces packet handling for varying sizes in audio data processing.

Changes

File Path Change Summary
Friend/firmware/firmware_v1.0/prj_xiao_ble_sense_devkitv2-adafruit.conf Updated Bluetooth device name and model, firmware revision, added Bluetooth settings, and modified memory configurations.
Friend/firmware/firmware_v1.0/src/main.c Enhanced LED control logic and refined firmware initialization sequence.
Friend/firmware/firmware_v1.0/src/sdcard.c Reduced file_num_array size, added offset management functions, and improved error logging.
Friend/firmware/firmware_v1.0/src/sdcard.h Added declarations for save_offset and get_offset functions.
Friend/firmware/firmware_v1.0/src/speaker.c Increased MAX_BLOCK_SIZE, refined audio handling logic, and added error handling for audio functions.
Friend/firmware/firmware_v1.0/src/storage.c Modified storage command handling, adjusted file_num_array size, and integrated heartbeat management.
Friend/firmware/firmware_v1.0/src/transport.c Updated GATT service definitions, adjusted file_num_array size, and improved data handling efficiency.
app/lib/providers/capture_provider.dart Added methods for storage management and refined data handling logic in CaptureProvider.
backend/routers/sdcard.py Introduced new packet handling for varying sizes and added a helper function for segmenting socket data.

Poem

In the meadow where changes bloom,
Omi DevKit dances, dispelling gloom.
With LEDs bright and Bluetooth's embrace,
We hop through updates, quickening our pace.
Offsets saved, and audio flows,
A rabbit's delight in the code that grows! 🐇✨


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

coderabbitai[bot] avatar Oct 10 '24 17:10 coderabbitai[bot]

@kevvz quick question: are you confident with the PR?

beastoin avatar Oct 16 '24 08:10 beastoin