Skip to content

MOB-30: refresh mobile_surface_matrix.md (magnetometer/compass/orientation-lock/BLE) - #60

Merged
GenericJam merged 1 commit into
masterfrom
MOB-30-refresh-surface-matrix
Jul 5, 2026
Merged

MOB-30: refresh mobile_surface_matrix.md (magnetometer/compass/orientation-lock/BLE)#60
GenericJam merged 1 commit into
masterfrom
MOB-30-refresh-surface-matrix

Conversation

@GenericJam

Copy link
Copy Markdown
Owner

Refreshes the hand-maintained capability matrix, which had drifted behind shipped work. Closes MOB-30.

Rows corrected (verified against current code, not just the issue text)

Row Was Now Evidence
Screen orientation lock ✅ ✓/✓ Mob.Device.lock_orientation/1 + unlock_orientation/0 (device.ex)
Bluetooth Low Energy 🟡 ✓/✓ MobBluetooth.Le (mob_bluetooth 0.3.0) — GATT peripheral role (advertise + notify + receive writes), iOS + Android; BLE central/scan is future
Magnetometer ✅ ✓/✓ Mob.Motion :magnetometer — µT mag + fused heading, shipped 0.7.14 (MOB-6)
Compass / heading ✅ ✓/✓ fused heading via the same path

Also corrected the Bluetooth Classic note: mob_bluetooth has no Hid sub-module (only Hfp/Spp), and clarified its central/host, Android-only scope.

Sweep

Per the issue's "sweep every ❌/🟡 row" ask, the remaining missing rows were checked against current lib/ and cross-referenced with the MOB backlog — sensors (barometer/proximity/ambient/pedometer), NFC, WiFi, screen brightness, keep-awake, network state, speech-recognition, contacts/calendar, etc. all still map to open MOB issues and remain absent from core. No further changes.

Docs-only; no code paths touched.

🤖 Generated with Claude Code

…tation-lock/BLE

Four rows were stale against shipped code:

- Screen orientation lock  ❌ → ✅  (Mob.Device.lock_orientation/1 + unlock_orientation/0)
- Bluetooth Low Energy      ❌ → 🟡  (MobBluetooth.Le 0.3.0 — GATT peripheral role,
                                      advertise + notify, iOS + Android; no BLE central yet)
- Magnetometer              ❌ → ✅  (Mob.Motion :magnetometer — mag + fused heading, 0.7.14, MOB-6)
- Compass / heading         ❌ → ✅  (fused heading via same path)

Also corrected the Bluetooth Classic note (no Hid sub-module in mob_bluetooth;
only Hfp/Spp) and clarified its central/host, Android-only scope.

Swept the remaining ❌/🟡 rows against current lib/ and the MOB backlog:
all other missing capabilities still map to open MOB issues (sensors, NFC,
WiFi, brightness, keep-awake, network state, speech-recognition, etc.) —
verified still absent from core, no further changes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@GenericJam

Copy link
Copy Markdown
Owner Author

Reviewed — LGTM, endorse merge. (Same account, so posting as a comment rather than a formal approval.)

Verified every changed row against origin/master + the mob_bluetooth repo, not just the PR text:

  • Orientation lock ✅ — Mob.Device.lock_orientation/1 (device.ex:189) + unlock_orientation/0 (199); native on both platforms (iOS g_locked_orientation_mask + supported-orientations/geometry, Android nif_device_lock_orientationsetRequestedOrientation). iOS ✓ / Android ✓ is correct.
  • BLE 🟡 — MobBluetooth.Le in mob_bluetooth 0.3.0, GATT peripheral role, cross-platform (iOS CBPeripheralManager + Android); central/scan is future. Accurate.
  • Bluetooth Classic — confirmed mob_bluetooth/lib/mob_bluetooth/ has only hfp.ex / spp.ex / le.ex (no hid.ex), so dropping the "Hid" claim is a genuine correction.
  • Magnetometer / compass ✅ — matches the 0.7.14 Mob.Motion :magnetometer contract, including "keys present only when requested."

Nice catch on the orientation-lock row (stale but not even in the issue title) and the Hid error. Sweep of the remaining ❌ rows is sound — they all still map to open MOB backlog issues.

Non-blocking nit: Mob.Motion.start(:magnetometer, ...) is loose vs the real start(socket, sensors: [:magnetometer]), but it just mirrors the existing accel/gyro rows — pre-existing doc style, fine to leave.

Good to merge and close MOB-30.

@GenericJam
GenericJam merged commit f071e0f into master Jul 5, 2026
4 checks passed
@GenericJam
GenericJam deleted the MOB-30-refresh-surface-matrix branch July 5, 2026 01:33
pshoukry pushed a commit to pshoukry/mob that referenced this pull request Sep 9, 2026
…tation-lock/BLE (GenericJam#60)

Four rows were stale against shipped code:

- Screen orientation lock  ❌ → ✅  (Mob.Device.lock_orientation/1 + unlock_orientation/0)
- Bluetooth Low Energy      ❌ → 🟡  (MobBluetooth.Le 0.3.0 — GATT peripheral role,
                                      advertise + notify, iOS + Android; no BLE central yet)
- Magnetometer              ❌ → ✅  (Mob.Motion :magnetometer — mag + fused heading, 0.7.14, MOB-6)
- Compass / heading         ❌ → ✅  (fused heading via same path)

Also corrected the Bluetooth Classic note (no Hid sub-module in mob_bluetooth;
only Hfp/Spp) and clarified its central/host, Android-only scope.

Swept the remaining ❌/🟡 rows against current lib/ and the MOB backlog:
all other missing capabilities still map to open MOB issues (sensors, NFC,
WiFi, brightness, keep-awake, network state, speech-recognition, etc.) —
verified still absent from core, no further changes.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

1 participant