Skip to content

feat(ricoh): add RICOH GR III/IIIx/IV BLE shutter control#268

Open
sky18Dragon wants to merge 4 commits into
gkoh:masterfrom
sky18Dragon:feature/ricoh-gr-bluetooth-remote
Open

feat(ricoh): add RICOH GR III/IIIx/IV BLE shutter control#268
sky18Dragon wants to merge 4 commits into
gkoh:masterfrom
sky18Dragon:feature/ricoh-gr-bluetooth-remote

Conversation

@sky18Dragon

Copy link
Copy Markdown

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

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 gkoh left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread lib/furble/Ricoh.cpp
&& timesync.minute <= 59 && timesync.second <= 60 && timesync.centisecond <= 99;
}

const char *powerName(uint8_t value) {

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would you be OK with making the helper functions either private scope or static?

Comment thread lib/furble/Ricoh.cpp Outdated
Comment thread lib/furble/Ricoh.cpp
Comment thread lib/furble/Ricoh.cpp Outdated
Comment thread lib/furble/Ricoh.cpp
m_Progress = 0;

constexpr uint8_t kDefaultIOCap = BLE_HS_IO_DISPLAY_YESNO;
NimBLEDevice::setSecurityIOCap(BLE_HS_IO_KEYBOARD_DISPLAY);

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread lib/furble/Ricoh.cpp
writeOperation(OperationCode::START, OperationParameter::AF);
}

void Ricoh::shutterRelease(void) {

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants