feat(ricoh): add RICOH GR III/IIIx/IV BLE shutter control#268
feat(ricoh): add RICOH GR III/IIIx/IV BLE shutter control#268sky18Dragon wants to merge 4 commits into
Conversation
Add Ricoh camera class implementing single-write shutter capture and MITM LE Secure Connections pairing. GPS geotagging deferred as stub. - New: lib/furble/Ricoh.h — Camera subclass header (6 services, 11 characteristics) - New: lib/furble/Ricoh.cpp — BLE connect/secure/shutter/GPS stub (447 lines) - Modified: lib/furble/Camera.h — add RICOH = 9 to Type enum - Modified: lib/furble/CameraList.cpp — register match() and load() - All 5 PlatformIO targets compile without warnings - No existing camera code modified Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
gkoh
left a comment
There was a problem hiding this comment.
I've left a few comments, none are strictly necessary to address.
Overall your submission is excellent, thank you.
I do want to explore the changing of the security IO capabilities.
I'll run some tests locally with what I have to see if upgrading the display capability breaks anything.
| && timesync.minute <= 59 && timesync.second <= 60 && timesync.centisecond <= 99; | ||
| } | ||
|
|
||
| const char *powerName(uint8_t value) { |
There was a problem hiding this comment.
Would you be OK with making the helper functions either private scope or static?
| m_Progress = 0; | ||
|
|
||
| constexpr uint8_t kDefaultIOCap = BLE_HS_IO_DISPLAY_YESNO; | ||
| NimBLEDevice::setSecurityIOCap(BLE_HS_IO_KEYBOARD_DISPLAY); |
There was a problem hiding this comment.
This part is very, very interesting.
I assume it will not work without changing the security capabilities?
We may be able to change the defaults and test with other cameras, this would avoid having the Ricoh modify the settings.
| writeOperation(OperationCode::START, OperationParameter::AF); | ||
| } | ||
|
|
||
| void Ricoh::shutterRelease(void) { |
There was a problem hiding this comment.
Also very interesting.
This means we don't have exposure control, so the timer operation for 'shutter open' won't be quite right.
This is OK, we just need to document it so there are no surprises.
Add Ricoh camera class implementing single-write shutter capture and MITM LE Secure Connections pairing. GPS geotagging deferred as stub.
New: lib/furble/Ricoh.h — Camera subclass header (6 services, 11 characteristics)
New: lib/furble/Ricoh.cpp — BLE connect/secure/shutter/GPS stub (447 lines)
Modified: lib/furble/Camera.h — add RICOH = 9 to Type enum
Modified: lib/furble/CameraList.cpp — register match() and load()
Test Status: Successfully tested and verified on real hardware with Ricoh GR IIII HDF (Firmware 1.11). Theoretically, this should fully support Ricoh GR II, GR III, GR IIII models running their respective latest firmwares.
All 5 PlatformIO targets compile without warnings
No existing camera code modified