Repository navigation
Add Panasonic Lumix BLE camera support - #79
Merged
Merged
Conversation
Firmware size report
Base comparison: latest |
MaxRink
force-pushed
the
feat/72-lumix
branch
3 times, most recently
from
August 19, 2026 21:12
60b49a2 to
d394b71
Compare
MaxRink
marked this pull request as draft
August 21, 2026 19:19
Port the Lumix vendor class from upstream PR 282 onto the fork vendor API. Adds Camera::Type::PANASONIC_LUMIX (value 10) and registers the saved-camera and scan paths in CameraList. Implements the MEI0 session path from S5II and BGH1 traces plus shutter, focus, and GPS sidecar writes. Untested: no Lumix hardware available. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Rebase feat/72-lumix onto fork master 734b759 and record the implementation state: vendor type id PANASONIC_LUMIX = 10 kept (sibling DJI Osmo branch took 11 to resolve the Type-10 collision), protocol source verified against upstream PR 282 and the lat-long-log notes, m5stick-s3 firmware build green, host tests 7 of 7, protocol goldens deterministic. Declared untested with no Lumix hardware. Merge held for a human nod. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
MaxRink
marked this pull request as ready for review
August 22, 2026 17:52
The FURBLE_CONSOLE-only cameraTypeName() switch over Camera::Type is exhaustive (-Werror=switch), so the new PANASONIC_LUMIX value broke every -debug build. Add its case. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
MaxRink
added a commit
that referenced
this pull request
Aug 22, 2026
The cameraTypeName DJI case was dropped when this branch rebased onto master (which already carried the Lumix case from #79). Restore it so the -debug -Werror=switch build passes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
MaxRink
added a commit
that referenced
this pull request
Aug 22, 2026
* Add DJI Osmo Action BLE remote vendor Add a DJIOsmo camera class implementing the DJI R SDK protocol over the documented FFF0 service. It supports advertisement matching, secure NimBLE connection, the protocol handshake, camera status subscription, and recording start/stop for Osmo Action 4 and Action 5 Pro. Register the vendor as Camera::Type::DJI_OSMO in Camera.h and CameraList, and update the lib/furble guide. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs: record DJI Osmo rebase and verification state Rebase feat/74-dji-osmo onto fork master 734b759 and record the implementation state: vendor type id DJI_OSMO = 11 (id 10 left to the sibling Lumix branch to resolve the Type-10 collision), protocol source verified against DJI's Osmo-GPS-Controller-Demo including both CRC seeds and polynomials and all command ids, m5stick-s3 firmware build green, host tests 7 of 7, protocol goldens deterministic. Declared untested with no DJI hardware. Merge held for a human nod. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(console): handle DJI_OSMO in cameraTypeName after rebase The cameraTypeName DJI case was dropped when this branch rebased onto master (which already carried the Lumix case from #79). Restore it so the -debug -Werror=switch build passes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
MaxRink
added a commit
that referenced
this pull request
Aug 25, 2026
* Add Panasonic Lumix BLE camera support Port the Lumix vendor class from upstream PR 282 onto the fork vendor API. Adds Camera::Type::PANASONIC_LUMIX (value 10) and registers the saved-camera and scan paths in CameraList. Implements the MEI0 session path from S5II and BGH1 traces plus shutter, focus, and GPS sidecar writes. Untested: no Lumix hardware available. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs: record Lumix rebase and verification state Rebase feat/72-lumix onto fork master 734b759 and record the implementation state: vendor type id PANASONIC_LUMIX = 10 kept (sibling DJI Osmo branch took 11 to resolve the Type-10 collision), protocol source verified against upstream PR 282 and the lat-long-log notes, m5stick-s3 firmware build green, host tests 7 of 7, protocol goldens deterministic. Declared untested with no Lumix hardware. Merge held for a human nod. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(console): handle PANASONIC_LUMIX in cameraTypeName switch The FURBLE_CONSOLE-only cameraTypeName() switch over Camera::Type is exhaustive (-Werror=switch), so the new PANASONIC_LUMIX value broke every -debug build. Add its case. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
MaxRink
added a commit
that referenced
this pull request
Aug 25, 2026
* Add DJI Osmo Action BLE remote vendor Add a DJIOsmo camera class implementing the DJI R SDK protocol over the documented FFF0 service. It supports advertisement matching, secure NimBLE connection, the protocol handshake, camera status subscription, and recording start/stop for Osmo Action 4 and Action 5 Pro. Register the vendor as Camera::Type::DJI_OSMO in Camera.h and CameraList, and update the lib/furble guide. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs: record DJI Osmo rebase and verification state Rebase feat/74-dji-osmo onto fork master 734b759 and record the implementation state: vendor type id DJI_OSMO = 11 (id 10 left to the sibling Lumix branch to resolve the Type-10 collision), protocol source verified against DJI's Osmo-GPS-Controller-Demo including both CRC seeds and polynomials and all command ids, m5stick-s3 firmware build green, host tests 7 of 7, protocol goldens deterministic. Declared untested with no DJI hardware. Merge held for a human nod. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(console): handle DJI_OSMO in cameraTypeName after rebase The cameraTypeName DJI case was dropped when this branch rebased onto master (which already carried the Lumix case from #79). Restore it so the -debug -Werror=switch build passes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
MaxRink
added a commit
that referenced
this pull request
Aug 30, 2026
* Add Panasonic Lumix BLE camera support Port the Lumix vendor class from upstream PR 282 onto the fork vendor API. Adds Camera::Type::PANASONIC_LUMIX (value 10) and registers the saved-camera and scan paths in CameraList. Implements the MEI0 session path from S5II and BGH1 traces plus shutter, focus, and GPS sidecar writes. Untested: no Lumix hardware available. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs: record Lumix rebase and verification state Rebase feat/72-lumix onto fork master 734b759 and record the implementation state: vendor type id PANASONIC_LUMIX = 10 kept (sibling DJI Osmo branch took 11 to resolve the Type-10 collision), protocol source verified against upstream PR 282 and the lat-long-log notes, m5stick-s3 firmware build green, host tests 7 of 7, protocol goldens deterministic. Declared untested with no Lumix hardware. Merge held for a human nod. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(console): handle PANASONIC_LUMIX in cameraTypeName switch The FURBLE_CONSOLE-only cameraTypeName() switch over Camera::Type is exhaustive (-Werror=switch), so the new PANASONIC_LUMIX value broke every -debug build. Add its case. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
MaxRink
added a commit
that referenced
this pull request
Aug 30, 2026
* Add DJI Osmo Action BLE remote vendor Add a DJIOsmo camera class implementing the DJI R SDK protocol over the documented FFF0 service. It supports advertisement matching, secure NimBLE connection, the protocol handshake, camera status subscription, and recording start/stop for Osmo Action 4 and Action 5 Pro. Register the vendor as Camera::Type::DJI_OSMO in Camera.h and CameraList, and update the lib/furble guide. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs: record DJI Osmo rebase and verification state Rebase feat/74-dji-osmo onto fork master 734b759 and record the implementation state: vendor type id DJI_OSMO = 11 (id 10 left to the sibling Lumix branch to resolve the Type-10 collision), protocol source verified against DJI's Osmo-GPS-Controller-Demo including both CRC seeds and polynomials and all command ids, m5stick-s3 firmware build green, host tests 7 of 7, protocol goldens deterministic. Declared untested with no DJI hardware. Merge held for a human nod. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(console): handle DJI_OSMO in cameraTypeName after rebase The cameraTypeName DJI case was dropped when this branch rebased onto master (which already carried the Lumix case from #79). Restore it so the -debug -Werror=switch build passes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
Panasonic Lumix cameras are the highest-ranked missing vendor in plan 61.
Adding them broadens furble camera coverage so Lumix owners get the same
native BLE shutter, focus, and GPS sidecar support the other vendors already
have.
What changed
Furble::Lumixvendor class (lib/furble/Lumix.h/Lumix.cpp), oneclass per vendor mode, ported from upstream PR 282 onto the fork vendor API.
Camera::Type::PANASONIC_LUMIXadded as enum value 10 (NVS-persisted typeid, never renumbered).
CameraListregisters the saved-camera load path and the scanmatch()path.
the device-name identity write, single-byte shutter/focus commands, and the
GPS location plus clock sidecar writes. The GPS-epoch conversion is kept
local since the fork has no
Camera::toUnixTime()helper.lib/furble/CLAUDE.md,plans/72-lumix.md,plans/61implementationstate, and
plans/README.mdindex updated.Wire ids
PANASONIC_LUMIX = 10(NVS-persisted). No new settings wireid is used; the settings ledger next-free stays 41. Provisional ids may be
renumbered at integration if sibling vendor branches collide.
Verification
(
FURBLE_VERSION=dev FURBLE_TEST=0 pio run -e m5stick-s3).sim/build.shSUCCESS. No sim shim was needed; the simuses the
shim/CameraList.hfake and does not compile the real registry.UNTESTED on hardware
No Panasonic Lumix camera is available in this workspace. This change is
validated only by code review, the S3 compile, and the FauxNY/simulator path.
It has not been exercised against a real Lumix camera. The S5II first-pair path
may still need the camera-side WiFi-assisted Lumix Sync handshake, and the
G9II-generation XOR login is not implemented.
🤖 Generated with Claude Code
Data sources
Untested on Panasonic hardware; code review + FauxNY only.
Upstream issues
Addresses gkoh#247.