OpenStickCommunity / GP2040-CE

Multi-Platform Gamepad Firmware for Raspberry Pi Pico and other RP2040 boards
https://gp2040-ce.info
MIT License
1.48k stars 322 forks source link

Saving Protobuf breaks Core0 functionality #867

Open arntsonl opened 8 months ago

arntsonl commented 8 months ago

Prerequisites

Please check the following before posting an issue / bug report.

Context

Please provide all relevant information about your setup. This is important in case the issue is not reproducible except for under certain conditions.

Expected Behavior

Protobuf should be able to save via the Save() system without breaking any functionality on the GP2040 project.

Current Behavior

Save() causes everything to lock up including the tud_task and tuh_task calls because of how complex protobuf is. This should be moved over to Core1 if possible to leave Core0's usb processing abilities.

Steps to Reproduce

Please provide detailed steps for reproducing the issue.

  1. Turn on PS passthrough and plug in a dongle
  2. Change led animations
  3. Observe the ps passthrough device reconnects
  4. Change turbo speed
  5. Observe the ps passthrough device reconnects

Screenshots & Files

Please include any relevant screenshots or files here. If you are having issues with a board please include images of the front and back of the board.

arntsonl commented 8 months ago

I'll take point on this one since I've been doing a lot of core revamping.

bsstephan commented 8 months ago

Is it because protobuf is complicated, or is it because FlashPROM locks the cores when writing?

bsstephan commented 8 months ago

@arntsonl --- https://github.com/OpenStickCommunity/GP2040-CE/blob/main/lib/FlashPROM/src/FlashPROM.cpp#L16 is what I mean, by the way. I would have to look at nanopb but I would be surprised if the serialization was a major problem, since the config is already in a struct at runtime and just has to be packed in order to be written.

arntsonl commented 8 months ago

Oooooh I'm not sure! That will have to be part of the investigation