summaryrefslogtreecommitdiffstats
path: root/src/ahl-policy-utils.h
diff options
context:
space:
mode:
authorTai Vuong <tvuong@audiokinetic.com>2017-11-01 18:08:22 -0400
committerTai Vuong <tvuong@audiokinetic.com>2017-11-01 18:08:22 -0400
commitd0a169abb8d3069f311bab522b2c43bc295ed36e (patch)
tree1e04f8a38ebd562be8032b6dd9404915151cf8dc /src/ahl-policy-utils.h
parent74658c8befeb312e8e2e9ffaf5bfa6f8d7615612 (diff)
API change with API simplification and streamID optional for Stream Open and Close
Diffstat (limited to 'src/ahl-policy-utils.h')
-rwxr-xr-x[-rw-r--r--]src/ahl-policy-utils.h60
1 files changed, 21 insertions, 39 deletions
diff --git a/src/ahl-policy-utils.h b/src/ahl-policy-utils.h
index 6adfa4e..65b5432 100644..100755
--- a/src/ahl-policy-utils.h
+++ b/src/ahl-policy-utils.h
@@ -27,6 +27,8 @@
#define AHL_POLICY_UTIL_SUCCESS 0
#define AHL_POLICY_UTIL_FAIL 1
+#define AHL_UNDEFINED -1
+
typedef int endpointID_t;
typedef int streamID_t;
@@ -118,60 +120,40 @@ typedef enum EndpointSelectionMode {
ENDPOINTSELMODEMAXVALUE, // Enum count, keep at the end
} EndpointSelectionModeT;
-typedef struct EndpointInfo
-{
+
+typedef struct EndPointInterfaceInfo {
endpointID_t endpointID; // Unique endpoint ID (per type)
EndpointTypeT type; // Source or sink device
char * gsDeviceName; // Unique device card name
char * gsDisplayName; // Application display name
char * gsDeviceURI; // Associated URI
char * gsDeviceDomain; // Device URI domain (e.g. alsa or pulse)
- char * pRoleName; // Role assigned to this endpoint
DeviceURITypeT deviceURIType; // Device URI type (includes audio domain information)
char * gsHALAPIName; // HAL associated with the device (for volume control)
+ char * pRoleName; // Role string identifier (from role config but could be programatically overriden later)
AlsaDeviceInfoT alsaInfo; // ALSA specific device information
AudioFormatT format; // Preferred audio format supported (later could be array of supported formats)
- int iVolume; // Storage for current endpoint volume (policy effected).
- GHashTable * pPropTable; // Storage for array of properties (policy effected)
-} EndpointInfoT;
+ int iVolume; // Storage for current endpoint volume (policy effected).
+ json_object *pPropTableJ; //Property Table
+} EndPointInterfaceInfoT;
-typedef struct StreamInfo {
+
+typedef struct StreamInterfaceInfo {
streamID_t streamID; // Stream unique ID
- EndpointInfoT * pEndpointInfo; // Associated endpoint information (reference)
StreamStateT streamState; // Stream activity state
StreamMuteT streamMute; // Stream mute state
- struct afb_event streamStateEvent; // Stream specific event for stream state changes
- EndpointSelectionModeT endpointSelMode; // Automatic (priority based) or manual endpoint selection
char * pRoleName; // Role string identifier (from role config but could be programatically overriden later)
int iPriority; // Role normalized priority (0-100) (from role config but could be programatically overriden later)
- InterruptBehaviorT eInterruptBehavior; // Role behavior when interrupting lower priority streams (from role config but could be programatically overriden later)
-} StreamInfoT;
-
-
-typedef struct StreamPolicyInfo {
- streamID_t streamID;
- int RolePriority;
- char * pAudioRole;
- InterruptBehaviorT interruptBehavior;
- int iDuckVolume; //duck Volume
-} StreamPolicyInfoT;
-
-typedef struct EndPointPolicyInfo {
- endpointID_t endpointID;
- EndpointTypeT type;
- DeviceURITypeT deviceType;
- char * pDeviceName;
- char * pHalApiName;
- int iVolume; //Current Volume
- GArray * streamInfo; //List of playing or duck stream at a given endpoint
-} EndPointPolicyInfoT;
-
-void Add_Endpoint_Property_Double( EndpointInfoT * io_pEndpointInfo, char * in_pPropertyName, double in_dPropertyValue);
-void Add_Endpoint_Property_Int( EndpointInfoT * io_pEndpointInfo, char * in_pPropertyName, int in_iPropertyValue);
-void Add_Endpoint_Property_String( EndpointInfoT * io_pEndpointInfo, char * in_pPropertyName, const char * in_pPropertyValue);
-int PolicyEndpointStructToJSON(EndpointInfoT * pPolicyEndpoint, json_object **ppPolicyEndpointJ);
-int PolicyCtxJSONToEndpoint(json_object *pEndpointJ, EndpointInfoT * pPolicyStream);
-int PolicyStreamStructToJSON(StreamInfoT * pPolicyStream, json_object **ppPolicyStreamJ);
-int PolicyCtxJSONToStream(json_object *pStreamJ, StreamInfoT * pPolicyStream);
+ InterruptBehaviorT eInterruptBehavior; // Role behavior when interrupting lower priority streams (from role config but could be programatically overriden later)
+ EndPointInterfaceInfoT endpoint;
+} StreamInterfaceInfoT;
+
+void Add_Endpoint_Property_Double( json_object * io_pPropertyArray, char * in_pPropertyName, double in_dPropertyValue);
+void Add_Endpoint_Property_Int( json_object * io_pPropertyArray, char * in_pPropertyName, int in_iPropertyValue);
+void Add_Endpoint_Property_String( json_object * io_pPropertyArray, char * in_pPropertyName, const char * in_pPropertyValue);
+int EndpointToJSON(EndPointInterfaceInfoT * pEndpoint, json_object **ppEndpointJ);
+int JSONToEndpoint(json_object *pEndpointJ, EndPointInterfaceInfoT * pStream);
+int StreamToJSON(StreamInterfaceInfoT * pPolicyStream, json_object **ppStreamJ);
+int JSONToStream(json_object *pStreamJ, StreamInterfaceInfoT * pPolicyStream);
#endif // AHL_POLICY_UTILS_INCLUDE