InfiniTimeOrg / InfiniTimeOrg/InfiniTime

Add companion capabilities system

Open
#1,041 9 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

feature request
Dominant language
C
Stars
3.4k
Forks
1.1k
PR merge metrics
No merged PRs in 30d

Description

Verification
  • I searched for similar feature request and found none was relevant.
Pitch us your idea!

This would allow a companion app to broadcast its capabilities to the watch. Then, the watch can hide features unsupported by the companion.

Description

I think this could be implemented by using an enum to represent the capabilities, and exposing a characteristic where a companion can send a CBOR array containing the features they support. That data can then be used when determining whether to show certain items.

This is useful because not all companions are able to support all the features, and having the button for that feature visible but doing nothing causes confusion among users and causes users to file feature requests for things that cannot be supported.

For example, ITD cannot support muting on calls because ModemManager isn't responsible for the audio and there is no way to mute a call specifically. I would have to mute the entire system, which is not ideal and would be very unreliable in terms of turning off when the ringing is over.

I do not know how feasible this is on the watch side, it would probably be a lot of work, but I think it would be a very useful feature.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing how the watch currently receives companion data and decides which features or buttons to show; the issue does not name specific files or tests. Define the capability enum and CBOR characteristic, connect the received capabilities to feature visibility, and verify that unsupported actions are no longer presented.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
embedded-iot
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.