Ersa Wearable Platform
Embedded smartwatch firmware and application framework
Loading...
Searching...
No Matches
companion_source.h
Go to the documentation of this file.
1#pragma once
2
3#include "ersa/common/types.h"
4#include <stdint.h>
5
6namespace ersa {
7namespace hal {
8
13enum class CompanionCallAction : uint8_t { Incoming = 0, Answered, Rejected, Ended };
16
23using CompanionCallCallback = void (*)(CompanionCallAction, const char*, const char*, void*);
24using CompanionMediaCallback = void (*)(bool, const char*, const char*, void*);
25using CompanionTimeCallback = void (*)(uint32_t, void*);
26using CompanionAvailabilityCallback = void (*)(bool, void*);
27// Null title/message remove one UID; null app as well clears the provider session.
28using CompanionNotificationCallback = void (*)(const char*, const char*, const char*, uint32_t, bool, void*);
29
32 bool notifications{false};
33 bool media{false};
34 bool calls{false};
35 bool answerReject{false};
36 bool hangup{false};
37 bool dial{false};
38 bool remoteDismiss{false};
39 bool timeSync{false};
40};
41
50public:
52 virtual ~ICompanionSource() = default;
53
54 // Stable, non-null, machine-readable ID (e.g. "apple-ancs-ams",
55 // "android-companion", "linux-mpris"). Keep it independent of transport
56 // and UI labels; returned storage must remain valid for the source lifetime.
57 virtual const char* sourceId() const = 0;
59 virtual Result<void> initSource() { return Result<void>(); }
60 // Release source-owned transient resources before memory-intensive work.
61 // Providers may stop workers, queues, or protocol sessions without
62 // requiring the transport or OTA service to know their implementation.
64 virtual bool pauseForMaintenance() { return true; }
66 virtual void resumeFromMaintenance() {}
67 // Called regularly from the application task; asynchronous sources can
68 // leave this empty. It must not busy-wait.
70 virtual void tickSource() {}
72 virtual void shutdownSource() {}
73 // Capabilities may vary by peer/session. Notify when availability flips;
74 // consumers query capabilities() again after the callback.
76 virtual bool isAvailable() const = 0;
79
80 // Passing nullptr unregisters the corresponding sink; sources must never
81 // retain a callback after shutdownSource().
83 virtual void setCallCallback(CompanionCallCallback, void*) = 0;
85 virtual void setMediaCallback(CompanionMediaCallback, void*) = 0;
89 virtual void setTimeCallback(CompanionTimeCallback, void*) = 0;
92
93 // Return true only when the provider accepted the command for processing;
94 // this does not claim that the remote endpoint executed it.
96 virtual bool acceptCall() = 0;
98 virtual bool rejectCall() = 0;
100 virtual bool hangupCall() = 0;
102 virtual bool dial(const char* number) = 0;
104 virtual bool mediaCommand(CompanionMediaAction action) = 0;
106 virtual bool dismissNotification(uint32_t uid) = 0;
107};
108
109} // namespace hal
110} // namespace ersa
Definition types.h:52
Definition companion_source.h:49
virtual Result< void > initSource()
Definition companion_source.h:59
virtual void setNotificationCallback(CompanionNotificationCallback, void *)=0
virtual bool rejectCall()=0
virtual bool dial(const char *number)=0
virtual ~ICompanionSource()=default
virtual const char * sourceId() const =0
virtual void shutdownSource()
Definition companion_source.h:72
virtual bool hangupCall()=0
virtual CompanionCapabilities capabilities() const =0
virtual void tickSource()
Definition companion_source.h:70
virtual void setCallCallback(CompanionCallCallback, void *)=0
virtual void setTimeCallback(CompanionTimeCallback, void *)=0
virtual bool dismissNotification(uint32_t uid)=0
virtual bool pauseForMaintenance()
Definition companion_source.h:64
virtual bool isAvailable() const =0
virtual bool acceptCall()=0
virtual void setAvailabilityCallback(CompanionAvailabilityCallback, void *)=0
virtual void resumeFromMaintenance()
Definition companion_source.h:66
virtual void setMediaCallback(CompanionMediaCallback, void *)=0
virtual bool mediaCommand(CompanionMediaAction action)=0
void(*)(bool, void *) CompanionAvailabilityCallback
Definition companion_source.h:26
void(*)(const char *, const char *, const char *, uint32_t, bool, void *) CompanionNotificationCallback
Definition companion_source.h:28
void(*)(uint32_t, void *) CompanionTimeCallback
Definition companion_source.h:25
CompanionCallAction
Definition companion_source.h:13
void(*)(bool, const char *, const char *, void *) CompanionMediaCallback
Definition companion_source.h:24
CompanionMediaAction
Definition companion_source.h:15
void(*)(CompanionCallAction, const char *, const char *, void *) CompanionCallCallback
Definition companion_source.h:23
Definition application.h:10
Definition companion_source.h:31
bool hangup
Definition companion_source.h:36
bool remoteDismiss
Definition companion_source.h:38
bool calls
Definition companion_source.h:34
bool notifications
Definition companion_source.h:32
bool dial
Definition companion_source.h:37
bool timeSync
Definition companion_source.h:39
bool answerReject
Definition companion_source.h:35
bool media
Definition companion_source.h:33