From 65dcdf6e0204c667ba1c84ee662d81acc389203f Mon Sep 17 00:00:00 2001 From: VeithMetro Date: Wed, 28 May 2025 09:19:06 +0200 Subject: [PATCH 01/11] Adjust the IPerformance interface to generate JSON-RPC from it --- interfaces/IPerformance.h | 42 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/interfaces/IPerformance.h b/interfaces/IPerformance.h index 627b7f1e..423e0c75 100644 --- a/interfaces/IPerformance.h +++ b/interfaces/IPerformance.h @@ -18,18 +18,54 @@ */ #pragma once + #include "Module.h" namespace Thunder { + namespace Exchange { struct EXTERNAL IPerformance : virtual public Core::IUnknown { enum { ID = ID_PERFORMANCE }; - virtual uint32_t Send(const uint16_t sendSize, const uint8_t buffer[] /* @length:sendSize @in */ ) = 0; - virtual uint32_t Receive(uint16_t& bufferSize /* @inout */, uint8_t buffer[] /* @length:bufferSize @out */) const = 0; - virtual uint32_t Exchange(uint16_t& bufferSize /* @inout */, uint8_t buffer[] /* @length:bufferSize @maxlength:maxBufferSize @inout*/, const uint16_t maxBufferSize) = 0; + struct Statistics { + uint32_t minimum /* @brief Minimum value of measurements (e.g. 1) */; + uint32_t maximum /* @brief Maximum value of measurements (e.g. 4) */; + uint32_t average /* @brief Average value of measurements (e.g. 2) */; + uint32_t count /* How many times measurement has been collected (e.g. 5) */; + }; + + struct Measurement { + Statistics serialization /* @brief Time taken to complete serialization */; + Statistics deserialization /* @brief Time taken to complete deserialization */; + Statistics execution /* @brief Time taken to complete execution */; + Statistics threadPool /* Time taken to complete threadpool wait */; + Statistics communication /* @brief Time taken to complete communication */; + Statistics total /* @brief Time taken to complete whole jsonrpc process */; + }; + + // @property + // @brief Retrieve the performance measurement against given package size. Measurements will be provided in milliseconds + // @param index: Size of package whose statistics info has to be retrieved (e.g. 1000) + // @param measurement: Various performance measurements against given package size + virtual Core::hresult Measurement(const uint32_t index /* @index */, Measurement& measurement /* @out */) const = 0; + + // @brief Clear all performance data collected + virtual Core::hresult Clear() = 0; + + // @brief Test the process of sending data + // @param data: Any string data to be sent (e.g. HelloWorld) + virtual Core::hresult Send(const uint16_t length, const uint8_t data[] /* @length:length */) = 0; + + // @brief Test the process of receiving data + // @param datasize: Size of data to be provided by the jsonrpc interface (e.g. 10) + // @param data: String data with a specified length to be received (e.g. fhrjtus4p1) + virtual Core::hresult Receive(uint16_t& length /* @inout */, uint8_t data[] /* @maxlength:length @out */) const = 0; + + // @brief Test the process of both sending and receiving data + // @param data: String data to be sent and then also received (e.g. kjrpq018rt) + virtual Core::hresult Exchange(uint16_t& length /* @inout */, uint8_t data[] /* @length:length @maxlength:length @inout*/) = 0; }; } } From ce5d59469ad3f430950dbbd6b180e6a042530539 Mon Sep 17 00:00:00 2001 From: VeithMetro Date: Tue, 22 Jul 2025 09:11:48 +0200 Subject: [PATCH 02/11] Split the interfaces in two, remove the .json file --- interfaces/IPerformance.h | 57 +++++++----- interfaces/Ids.h | 1 + jsonrpc/PerformanceMonitor.json | 157 -------------------------------- 3 files changed, 35 insertions(+), 180 deletions(-) delete mode 100644 jsonrpc/PerformanceMonitor.json diff --git a/interfaces/IPerformance.h b/interfaces/IPerformance.h index 423e0c75..56f3b704 100644 --- a/interfaces/IPerformance.h +++ b/interfaces/IPerformance.h @@ -25,47 +25,58 @@ namespace Thunder { namespace Exchange { + // @json 1.0.0 @text:legacy_lowercase struct EXTERNAL IPerformance : virtual public Core::IUnknown { enum { ID = ID_PERFORMANCE }; + // @brief Test the process of sending the data + // @param sendSize: Length of the sent data (e.g. 15) + // @param buffer: Any data to be sent (e.g. HelloWorld) + virtual Core::hresult Send(const uint16_t sendSize, const uint8_t buffer[] /* @encode:base64 @length:sendSize */) = 0; + + // @brief Test the process of receiving the data + // @param bufferSize: Size of data to be provided (e.g. 10) + // @param buffer: Data with a specified length (e.g. fhrjtus4p1) + virtual Core::hresult Receive(uint16_t& bufferSize /* @inout */, uint8_t buffer[] /* @encode:base64 @length:bufferSize @maxlength:bufferSize @out */) const = 0; + + // @brief Test the process of both sending and receiving the data + // @param bufferSize: Length of the data to be both sent as well as received (e.g. 20) + // @param buffer: Data to be sent and then also received (e.g. kjrpq018rt) + // @param maxBufferSize: Maximum size of the buffer that can be received (e.g. 100) + virtual Core::hresult Exchange(uint16_t& bufferSize /* @inout */, uint8_t buffer[] /* @encode:base64 @length:bufferSize @maxlength:maxBufferSize @inout */, const uint16_t maxBufferSize) = 0; + }; + + // @json 1.0.0 @text:legacy_lowercase + struct EXTERNAL IPerformanceStatistics : virtual public Core::IUnknown { + + enum { ID = ID_PERFORMANCE_STATISTICS }; + struct Statistics { uint32_t minimum /* @brief Minimum value of measurements (e.g. 1) */; uint32_t maximum /* @brief Maximum value of measurements (e.g. 4) */; uint32_t average /* @brief Average value of measurements (e.g. 2) */; - uint32_t count /* How many times measurement has been collected (e.g. 5) */; + uint32_t count /* @brief How many times measurement has been collected (e.g. 5) */; }; - struct Measurement { + struct Measurements { Statistics serialization /* @brief Time taken to complete serialization */; Statistics deserialization /* @brief Time taken to complete deserialization */; Statistics execution /* @brief Time taken to complete execution */; - Statistics threadPool /* Time taken to complete threadpool wait */; + Statistics threadPool /* @brief Time taken to complete threadpool wait */; Statistics communication /* @brief Time taken to complete communication */; - Statistics total /* @brief Time taken to complete whole jsonrpc process */; + Statistics total /* @brief Time taken to complete whole JSON-RPC process */; }; // @property - // @brief Retrieve the performance measurement against given package size. Measurements will be provided in milliseconds - // @param index: Size of package whose statistics info has to be retrieved (e.g. 1000) - // @param measurement: Various performance measurements against given package size - virtual Core::hresult Measurement(const uint32_t index /* @index */, Measurement& measurement /* @out */) const = 0; - - // @brief Clear all performance data collected - virtual Core::hresult Clear() = 0; - - // @brief Test the process of sending data - // @param data: Any string data to be sent (e.g. HelloWorld) - virtual Core::hresult Send(const uint16_t length, const uint8_t data[] /* @length:length */) = 0; - - // @brief Test the process of receiving data - // @param datasize: Size of data to be provided by the jsonrpc interface (e.g. 10) - // @param data: String data with a specified length to be received (e.g. fhrjtus4p1) - virtual Core::hresult Receive(uint16_t& length /* @inout */, uint8_t data[] /* @maxlength:length @out */) const = 0; + // @brief Retrieve the performance measurement against a given package size. Measurements will be provided in milliseconds + // @param index: Size of package which statistics info is about to be retrieved (e.g. 1000) + // @param measurement: Various performance measurements against a given package size + virtual Core::hresult Measurement(const uint32_t index /* @index */, Measurements& measurement /* @out */) const = 0; - // @brief Test the process of both sending and receiving data - // @param data: String data to be sent and then also received (e.g. kjrpq018rt) - virtual Core::hresult Exchange(uint16_t& length /* @inout */, uint8_t data[] /* @length:length @maxlength:length @inout*/) = 0; + // @brief Clear all performance data collected so far + // @alt:deprecated clear + virtual Core::hresult Reset() = 0; }; } } diff --git a/interfaces/Ids.h b/interfaces/Ids.h index ccf72f16..f02afba3 100644 --- a/interfaces/Ids.h +++ b/interfaces/Ids.h @@ -188,6 +188,7 @@ namespace Exchange { ID_DSGCC_CLIENT_NOTIFICATION = ID_DSGCC_CLIENT + 1, ID_PERFORMANCE = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x230, + ID_PERFORMANCE_STATISTICS = ID_PERFORMANCE + 1, ID_WEBPA = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x240, ID_WEBPA_CLIENT = ID_WEBPA + 1, diff --git a/jsonrpc/PerformanceMonitor.json b/jsonrpc/PerformanceMonitor.json deleted file mode 100644 index 8887fbd6..00000000 --- a/jsonrpc/PerformanceMonitor.json +++ /dev/null @@ -1,157 +0,0 @@ -{ - "$schema": "interface.schema.json", - "jsonrpc": "2.0", - "info": { - "version": "1.0.0", - "title": "Performance Monitor API", - "class": "PerformanceMonitor", - "format": "uncompliant-collapsed", - "description": "Performance Monitor JSON-RPC interface" - }, - "common": { - "$ref": "common.json" - }, - "definitions": { - "time": { - "type": "number", - "size": 32 - }, - "datasize": { - "type": "number", - "size": 32 - }, - "buffer": { - "type": "object", - "properties": { - "data": { - "type": "string", - "description": "Any string data upto the size specified in the length", - "example": "abababababab" - }, - "length": { - "type": "number", - "description": "Size of the data", - "size": 16 - }, - "duration": { - "type": "number", - "description": "Duration of the measurements", - "size": 16 - } - } - }, - "statistics": { - "type": "object", - "properties": { - "minimum": { - "description": "Minimum value of measurements", - "$ref": "#/definitions/time", - "example": 1 - }, - "maximum": { - "description": "Maximum value of measurements", - "$ref": "#/definitions/time", - "example": 4 - }, - "average": { - "description": "Average value of measurements", - "$ref": "#/definitions/time", - "example": 2 - }, - "count": { - "description": "How many times measurement has been collected", - "$ref": "#/definitions/time", - "example": 5 - } - } - } - }, - "properties": { - "measurement": { - "summary": "Retrieve the performance measurement against given package size. Measurements will be provided in milliseconds", - "readonly": true, - "params": { - "type": "object", - "properties": { - "serialization": { - "description": "Time taken to complete serialization", - "$ref": "#/definitions/statistics" - }, - "deserialization": { - "description": "Time taken to complete deserialization", - "$ref": "#/definitions/statistics" - }, - "execution": { - "description": "Time taken to complete execution", - "$ref": "#/definitions/statistics" - }, - "threadpool": { - "description": "Time taken to complete threadpool wait", - "$ref": "#/definitions/statistics" - }, - "communication": { - "description": "Time taken to complete communication", - "$ref": "#/definitions/statistics" - }, - "total": { - "description": "Time taken to complete whole jsonrpc process", - "$ref": "#/definitions/statistics" - } - }, - "required": [ - "serialization", - "deserialization", - "execution", - "threadpool", - "communication", - "total" - ] - }, - "index": { - "name": "Package size", - "description": "Size of package whose statistics info has to be retrieved", - "example": "1000" - }, - "result": { - "$ref": "#/common/results/void" - } - } - }, - "methods": { - "clear": { - "summary": "Clear all performance data collected", - "result": { - "$ref": "#/common/results/void" - } - }, - "send": { - "summary": "Interface to test send data", - "params": { - "$ref": "#/definitions/buffer" - }, - "result": { - "$ref": "#/definitions/datasize", - "description": "Size of data received by the jsonrpc interface" - } - }, - "receive": { - "summary": "Interface to test receive data", - "params": { - "$ref": "#/definitions/datasize", - "description": "Size of data to be provided by the jsonrpc interface" - }, - "result": { - "$ref": "#/definitions/buffer" - } - }, - "exchange": { - "summary": "Interface to test exchange data", - "params": { - "$ref": "#/definitions/buffer" - }, - "result": { - "$ref": "#/definitions/buffer" - } - } - } -} From 7d916e78041553d25c1ac0d79c6e2b7889f65e08 Mon Sep 17 00:00:00 2001 From: VeithMetro Date: Tue, 22 Jul 2025 09:19:26 +0200 Subject: [PATCH 03/11] Adjust the Windows project files --- definitions/Definitions.vcxproj | 17 ++++++++++++++--- definitions/Definitions.vcxproj.filters | 6 +++--- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/definitions/Definitions.vcxproj b/definitions/Definitions.vcxproj index 4fff291e..1bad4594 100644 --- a/definitions/Definitions.vcxproj +++ b/definitions/Definitions.vcxproj @@ -220,6 +220,20 @@ $(ProjectDir)../interfaces/json/JSubsystemControl.h $(ProjectDir)../interfaces/json/JSubsystemControl.h + + python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force + ClInclude + python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force + ClInclude + python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force + ClInclude + python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force + ClInclude + $(ProjectDir)../interfaces/json/JPerformance.h + $(ProjectDir)../interfaces/json/JPerformance.h + $(ProjectDir)../interfaces/json/JPerformance.h + $(ProjectDir)../interfaces/json/JPerformance.h + $(ProjectDir)../interfaces/json/JMath.h @@ -408,9 +422,6 @@ Document - - Document - Document diff --git a/definitions/Definitions.vcxproj.filters b/definitions/Definitions.vcxproj.filters index 88e26df6..426c4103 100644 --- a/definitions/Definitions.vcxproj.filters +++ b/definitions/Definitions.vcxproj.filters @@ -224,9 +224,6 @@ JSON Files - - JSON Files - JSON Files @@ -255,6 +252,9 @@ Interface Files + + Interface Files + From 843991b47f7a86410338bc3bc7de59c806b3fee0 Mon Sep 17 00:00:00 2001 From: Mateusz Daniluk <121170681+VeithMetro@users.noreply.github.com> Date: Tue, 22 Jul 2025 09:53:59 +0200 Subject: [PATCH 04/11] Fix the formatting error --- definitions/Definitions.vcxproj | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/definitions/Definitions.vcxproj b/definitions/Definitions.vcxproj index 809f67f0..0c5ee19c 100644 --- a/definitions/Definitions.vcxproj +++ b/definitions/Definitions.vcxproj @@ -265,10 +265,7 @@ $(ProjectDir)../interfaces/json/JValuePoint.h - - - - + ClInclude $(ProjectDir)../interfaces/json/JValuePoint.h ClInclude $(ProjectDir)../interfaces/json/JValuePoint.h @@ -761,4 +758,4 @@ - \ No newline at end of file + From fee913f87afb1df3990d490c3e17c0d374ebd602 Mon Sep 17 00:00:00 2001 From: VeithMetro Date: Tue, 22 Jul 2025 10:25:19 +0200 Subject: [PATCH 05/11] Revert "Fix the formatting error" This reverts commit 843991b47f7a86410338bc3bc7de59c806b3fee0. --- definitions/Definitions.vcxproj | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/definitions/Definitions.vcxproj b/definitions/Definitions.vcxproj index 0c5ee19c..809f67f0 100644 --- a/definitions/Definitions.vcxproj +++ b/definitions/Definitions.vcxproj @@ -265,7 +265,10 @@ $(ProjectDir)../interfaces/json/JValuePoint.h - ClInclude + + + + $(ProjectDir)../interfaces/json/JValuePoint.h ClInclude $(ProjectDir)../interfaces/json/JValuePoint.h @@ -758,4 +761,4 @@ - + \ No newline at end of file From bc63a5734f20be62eebeb50fbe8ae1c013aa8c33 Mon Sep 17 00:00:00 2001 From: VeithMetro Date: Tue, 22 Jul 2025 10:26:16 +0200 Subject: [PATCH 06/11] Revert "Merge branch 'master' into development/performance-monitor-interface" This reverts commit 4bdb1312814a86a86b516df315fe2f399057b4e3, reversing changes made to 7d916e78041553d25c1ac0d79c6e2b7889f65e08. --- definitions/Definitions.cpp | 1 - definitions/Definitions.vcxproj | 19 +-- definitions/Definitions.vcxproj.filters | 5 - interfaces/IButler.h | 2 +- interfaces/IContentDecryption.h | 2 - interfaces/IContentProtection.h | 73 +-------- interfaces/IInputSwitch.h | 2 - interfaces/IPluginAsyncStateControl.h | 64 -------- interfaces/IPower.h | 2 - interfaces/IProvisioning.h | 2 - interfaces/IStream.h | 2 - interfaces/ITextToSpeech.h | 2 - interfaces/Ids.h | 199 ++++++++++++------------ interfaces/Interfaces.vcxproj | 10 +- interfaces/Interfaces.vcxproj.filters | 2 - 15 files changed, 109 insertions(+), 278 deletions(-) delete mode 100644 interfaces/IPluginAsyncStateControl.h diff --git a/definitions/Definitions.cpp b/definitions/Definitions.cpp index 1410442c..9b690c39 100644 --- a/definitions/Definitions.cpp +++ b/definitions/Definitions.cpp @@ -65,7 +65,6 @@ #include #include #include -#include #include #include #include diff --git a/definitions/Definitions.vcxproj b/definitions/Definitions.vcxproj index 809f67f0..1bad4594 100644 --- a/definitions/Definitions.vcxproj +++ b/definitions/Definitions.vcxproj @@ -234,20 +234,6 @@ $(ProjectDir)../interfaces/json/JPerformance.h $(ProjectDir)../interfaces/json/JPerformance.h - - $(ProjectDir)../interfaces/json/JPluginAsyncStateControl.h - python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force - ClInclude - python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force - $(ProjectDir)../interfaces/json/JPluginAsyncStateControl.h - $(ProjectDir)../interfaces/json/JPluginAsyncStateControl.h - $(ProjectDir)../interfaces/json/JPluginAsyncStateControl.h - python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force - python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force - ClInclude - ClInclude - ClInclude - $(ProjectDir)../interfaces/json/JMath.h @@ -265,10 +251,7 @@ $(ProjectDir)../interfaces/json/JValuePoint.h - - - - + ClInclude $(ProjectDir)../interfaces/json/JValuePoint.h ClInclude $(ProjectDir)../interfaces/json/JValuePoint.h diff --git a/definitions/Definitions.vcxproj.filters b/definitions/Definitions.vcxproj.filters index 676c45e1..426c4103 100644 --- a/definitions/Definitions.vcxproj.filters +++ b/definitions/Definitions.vcxproj.filters @@ -249,17 +249,12 @@ Interface Files - Interface Files - Interface Files Interface Files - - Interface Files - diff --git a/interfaces/IButler.h b/interfaces/IButler.h index e600c165..c530a6e6 100644 --- a/interfaces/IButler.h +++ b/interfaces/IButler.h @@ -23,7 +23,7 @@ #include #include -// @stubgen:include +// @stubgen:include namespace Thunder { namespace Exchange { diff --git a/interfaces/IContentDecryption.h b/interfaces/IContentDecryption.h index 6ca1b509..9c2b7b49 100644 --- a/interfaces/IContentDecryption.h +++ b/interfaces/IContentDecryption.h @@ -22,8 +22,6 @@ #include "Module.h" #include "IDRM.h" -// @insert - namespace Thunder { namespace Exchange { diff --git a/interfaces/IContentProtection.h b/interfaces/IContentProtection.h index 720aa323..44068b6c 100644 --- a/interfaces/IContentProtection.h +++ b/interfaces/IContentProtection.h @@ -55,17 +55,14 @@ namespace Exchange { FAILED = 4 /* @text:FAILED */, }; - // (e.g. NOT_REQUIRED) State state; - // @brief same as that returned by the SecManager. - // For other cases greater than 20000 (e.g. 2) + // @brief same as that returned by the SecManager // @text failureReason int32_t failureReason; }; // @alt onWatermarkStatusChanged // @param sessionId session id for the content protection session - // (e.g. 930762523) // @param appId application that should receive the notification virtual void WatermarkStatusChanged( uint32_t sessionId /* @text:sessionId */, @@ -79,50 +76,23 @@ namespace Exchange { // @alt openDrmSession // @param clientId client that establishes the playback session - // (e.g. "com.comcast.vipa:1") // @param appId application requesting the new watermarking session // @param licenseRequest base64-encoded DRM license request // @param initData video platform specific init data - // (e.g. "{\"sessionConfiguration\":{\"distributedTraceId\":\"...\"},\"accessToken\":\"...\",\"contentMetadata\":\"...\"}") // @param sessionId generated by SecManager to track sessions - // (e.g. 930762523) // @param response video platform specific response data - // (e.g. "{\"license\":\"...\",\"refreshDuration\":0}") - // @retval 21003 Invalid key system - // @retval 21004 Invalid license request - // @retval 21005 Invalid content metadata - // @retval 21006 Invalid media usage - // @retval 21007 Invalid access token - // @retval 21008 Invalid access attributes - // @retval 21009 Invalid session id - // @retval 21012 Invalid client id - // @retval 21014 Invalid watermarking system - // @retval 21015 Invalid content attributes - // @retval 22001 DRM general failure - // @retval 22003 DRM license timeout - // @retval 22004 DRM license network failure - // @retval 22008 DRM access token expired - // @retval 22011 DRM MAC token not provisioned - // @retval 22012 DRM memory allocation error - // @retval 22013 DRM SecAPI usage failure - // @retval 22016 DRM entitlement error - // @retval 23001 Watermark general failure - // @retval 23003 Watermark request timeout - // @retval 23012 Watermark memory allocation error virtual uint32_t OpenDrmSession( const string& clientId /* @text:clientId */, const string& appId /* @text:appId */, KeySystem keySystem /* @text:keySystem */, const string& licenseRequest /* @text:licenseRequest */, - const string& initData /* @text:initData */, + const string& initData /* @text:initData @opaque */, uint32_t& sessionId /* @text:sessionId @out */, - string& response /* @text:openSessionResponse @out */) + string& response /* @text:openSessionResponse @opaque @out */) = 0; // @alt setDrmSessionState // @param sessionId sec manager generated playback session id - // (e.g. 930762523) - // @retval 21009 Invalid session id virtual uint32_t SetDrmSessionState( uint32_t sessionId /* @text:sessionId */, State sessionState /* @text:sessionState */) @@ -130,54 +100,24 @@ namespace Exchange { // @alt updateDrmSession // @param sessionId sec manager generated playback session id - // (e.g. 930762523) // @param licenseRequest base64-encoded DRM license request // @param initData video platform specific init data - // (e.g. "{\"sessionConfiguration\":{\"distributedTraceId\":\"...\"},\"accessToken\":\"...\",\"contentMetadata\":\"...\"}") // @param response video platform specific response data - // (e.g. "{\"license\":\"...\",\"refreshDuration\":0}") - // @retval 21003 Invalid key system - // @retval 21004 Invalid license request - // @retval 21005 Invalid content metadata - // @retval 21006 Invalid media usage - // @retval 21007 Invalid access token - // @retval 21008 Invalid access attributes - // @retval 21009 Invalid session id - // @retval 21012 Invalid client id - // @retval 21014 Invalid watermarking system - // @retval 21015 Invalid content attributes - // @retval 22001 DRM general failure - // @retval 22003 DRM license timeout - // @retval 22004 DRM license network failure - // @retval 22008 DRM access token expired - // @retval 22011 DRM MAC token not provisioned - // @retval 22012 DRM memory allocation error - // @retval 22013 DRM SecAPI usage failure - // @retval 22016 DRM entitlement error - // @retval 23001 Watermark general failure - // @retval 23003 Watermark request timeout - // @retval 23012 Watermark memory allocation error virtual uint32_t UpdateDrmSession( uint32_t sessionId /* @text:sessionId */, const string& licenseRequest /* @text:licenseRequest */, - const string& initData /* @text:initData */, - string& response /* @text:updateSessionResponse @out */) + const string& initData /* @text:initData @opaque */, + string& response /* @text:updateSessionResponse @opaque @out */) = 0; // @alt closeDrmSession // @param sessionId sec manager generated playback session id - // (e.g. 930762523) - // @param response video platform specific response data - // @retval 21009 Invalid session id - // @retval 21012 Invalid client id virtual uint32_t CloseDrmSession( - uint32_t sessionId /* @text:sessionId */, - string& response /* @text:closeSessionResponse @out */) + uint32_t sessionId /* @text:sessionId */) = 0; // @alt showWatermark // @param sessionId id returned on a call to openDrmSession - // (e.g. 930762523) // @param show true when watermark has to be presented virtual uint32_t ShowWatermark( uint32_t sessionId /* @text:sessionId */, @@ -187,7 +127,6 @@ namespace Exchange { // @alt setPlaybackPosition // @param sessionId sec manager generated playback session id - // (e.g. 930762523) // @param speed current playback speed // @param position current playback position virtual uint32_t SetPlaybackPosition( diff --git a/interfaces/IInputSwitch.h b/interfaces/IInputSwitch.h index c48df090..e9aa3e91 100644 --- a/interfaces/IInputSwitch.h +++ b/interfaces/IInputSwitch.h @@ -20,8 +20,6 @@ #pragma once #include "Module.h" -// @insert - namespace Thunder { namespace Exchange { diff --git a/interfaces/IPluginAsyncStateControl.h b/interfaces/IPluginAsyncStateControl.h deleted file mode 100644 index 72826db1..00000000 --- a/interfaces/IPluginAsyncStateControl.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * If not stated otherwise in this file or this component's LICENSE file the - * following copyright and licenses apply: - * - * Copyright 2025 Metrological - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once -#include "Module.h" - -namespace Thunder { -namespace Exchange { - - struct EXTERNAL IPluginAsyncStateControl : virtual public Core::IUnknown { - - enum { ID = ID_PLUGINASYNCSTATECONTROL }; - - ~IPluginAsyncStateControl() override = default; - - struct EXTERNAL IActivationCallback : virtual public Core::IUnknown { - enum { ID = ID_PLUGINASYNCSTATECONTROL_ACTIVATIONCALLBACK }; - ~IActivationCallback() override = default; - - enum class state : uint8_t { - SUCCESS, - FAILURE, - ABORTED - }; - - // @brief callback called when an activation request has finished. Note this can be called while the Activate call has not yet returned - // @param state result state of the activation request (ABORTED when AbortActivate was called AND the plugin did not reach activated state yet before the request was aborted, otherwise SUCCESS will be reported as a result of an AbortActivate request) - // @param numberofretries Number of retries that happened the moment this callback was called - virtual void Finished(const string& callsign, const state state, const uint8_t numberofretries) = 0; - }; - - // @brief Activate a plugin. Passed callbcak will be called on failure or success - // @param callsign: callsign of plugin to activate - // @param maxnumberretries: maximum number of retries to initialize the plugin (default used when not specified) - // @param delay: delay to be used (in ms) between initialization retries (default used when not specified) - // @param cb: callback interface called on success or failure - // @retval ERROR_INPROGRESS Activation request is already in progress for this callsign - // @retval ERROR_ILLEGAL_STATE Plugin with this callsign is in an invalid state for it to be able to be started (e.g. DESTROYED or UNAVAILABLE) - // @retval ERROR_NOT_EXIST Plugin is unknown to Thunder (at this moment in case of Dynamic plugins) - virtual Core::hresult Activate(const string& callsign, const Core::OptionalType& maxnumberretries, const Core::OptionalType& delay, IActivationCallback* const cb) = 0; - - // @brief Abort a previously started Activate request - // @retval ERROR_NOT_EXIST There is no ongoing activation request - virtual Core::hresult AbortActivate(const string& callsign) = 0; - - }; -} -} diff --git a/interfaces/IPower.h b/interfaces/IPower.h index d6cefaba..34b7ab20 100644 --- a/interfaces/IPower.h +++ b/interfaces/IPower.h @@ -61,13 +61,11 @@ namespace Exchange { virtual Core::hresult Unregister(const INotification* const sink) = 0; // @property - // @alt:deprecated state // @brief Get the current power state // @param state: The current power state (e.g. PassiveStandby) virtual Core::hresult GetState(PCState& state /* @out */) const = 0; // @brief Set the power state - // @alt:deprecated set // @param state: The power state to set (e.g. Hibernate) // @param waitTime: The time to wait for the power state to be set in seconds (e.g. 10) // @retval ERROR_GENERAL: General failure diff --git a/interfaces/IProvisioning.h b/interfaces/IProvisioning.h index 4c86af7c..fda20c40 100644 --- a/interfaces/IProvisioning.h +++ b/interfaces/IProvisioning.h @@ -20,8 +20,6 @@ #pragma once #include "Module.h" -// @insert - namespace Thunder { namespace Exchange { diff --git a/interfaces/IStream.h b/interfaces/IStream.h index 915c82d4..37df8030 100644 --- a/interfaces/IStream.h +++ b/interfaces/IStream.h @@ -20,8 +20,6 @@ #pragma once #include "Module.h" -// @insert - #define WPEPLAYER_PROCESS_NODE_ID "/tmp/player" namespace Thunder { diff --git a/interfaces/ITextToSpeech.h b/interfaces/ITextToSpeech.h index c509d0be..3768af21 100644 --- a/interfaces/ITextToSpeech.h +++ b/interfaces/ITextToSpeech.h @@ -1,8 +1,6 @@ #ifndef __ITEXTTOSPEECH_H #define __ITEXTTOSPEECH_H -// @insert - #include "Module.h" namespace Thunder { diff --git a/interfaces/Ids.h b/interfaces/Ids.h index 9bc19447..f02afba3 100644 --- a/interfaces/Ids.h +++ b/interfaces/Ids.h @@ -315,108 +315,103 @@ namespace Exchange { ID_STORE = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x440, ID_STORE_NOTIFICATION = ID_STORE + 1, - ID_STORE_CACHE = ID_STORE + 2, - ID_STORE2 = ID_STORE + 3, - ID_STORE2_NOTIFICATION = ID_STORE + 4, - ID_STORE_INSPECTOR = ID_STORE + 5, - ID_STORE_INSPECTOR_NAMESPACE_SIZE_ITERATOR = ID_STORE + 6, - ID_STORE_LIMIT = ID_STORE + 7, - - ID_LISA = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x450, - ID_LISA_NOTIFICATION = ID_LISA + 1, - ID_LISA_APP_VERSION = ID_LISA + 2, - ID_LISA_APP_VERSION_ITERATOR = ID_LISA + 3, - ID_LISA_APP = ID_LISA + 4, - ID_LISA_APP_ITERATOR = ID_LISA + 5, - ID_LISA_APPS_PAYLOAD = ID_LISA + 6, - ID_LISA_STORAGE = ID_LISA + 7, - ID_LISA_STORAGE_PAYLOAD = ID_LISA + 8, - ID_LISA_PROGRESS = ID_LISA + 9, - ID_LISA_KEY_VALUE = ID_LISA + 10, - ID_LISA_KEY_VALUE_ITERATOR = ID_LISA + 11, - ID_LISA_METADATA_PAYLOAD = ID_LISA + 12, - ID_LISA_LOCK_INFO = ID_LISA + 13, - ID_LISA_HANDLE_RESULT = ID_LISA + 14, - - ID_PACKAGEMANAGER = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x460, - ID_PACKAGEMANAGER_KEY_VALUE_ITERATOR = ID_PACKAGEMANAGER + 1, - ID_PACKAGEMANAGER_NOTIFICATION = ID_PACKAGEMANAGER + 2, - ID_PACKAGEMANAGER_PACKAGE_KEY_ITERATOR = ID_PACKAGEMANAGER + 3, - ID_PACKAGEMANAGER_BROKER = ID_PACKAGEMANAGER + 4, - ID_PACKAGEMANAGER_CALLBACK = ID_PACKAGEMANAGER + 5, - - ID_RUST_BRIDGE = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x470, - ID_RUST_BRIDGE_NOTIFICATION = ID_RUST_BRIDGE + 1, - - ID_WIFICONTROL = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x480, - ID_WIFICONTROL_NOTIFICATION = ID_WIFICONTROL + 1, - ID_WIFICONTROL_NETWORK_INFO_ITERATOR = ID_WIFICONTROL + 2, - ID_WIFICONTROL_SECURITY_INFO_ITERATOR = ID_WIFICONTROL + 3, - - ID_NETWORKCONTROL = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x490, - ID_NETWORKCONTROL_NOTIFICATION = ID_NETWORKCONTROL + 1, - ID_NETWORKCONTROL_NETWORK_INFO_ITERATOR = ID_NETWORKCONTROL + 2, - - ID_WATCHDOG = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4A0, - - ID_SCRIPT_ENGINE = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4B0, - ID_SCRIPT_ENGINE_NOTIFICATION = ID_SCRIPT_ENGINE + 1, - - ID_TEXT_TO_SPEECH = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4C0, - ID_TEXT_TO_SPEECH_NOTIFICATION = ID_TEXT_TO_SPEECH + 1, - - ID_CRYPTOGRAPHY = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4D0, - ID_CRYPTOGRAPHY_VAULT = ID_CRYPTOGRAPHY + 1, - ID_CRYPTOGRAPHY_HASH = ID_CRYPTOGRAPHY + 2, - ID_CRYPTOGRAPHY_CIPHER = ID_CRYPTOGRAPHY + 3, - ID_CRYPTOGRAPHY_DIFFIEHELLMAN = ID_CRYPTOGRAPHY + 4, - ID_CRYPTOGRAPHY_PERSISTENT = ID_CRYPTOGRAPHY + 5, - ID_CRYPTOGRAPHY_RANDOM = ID_CRYPTOGRAPHY + 6, - ID_CRYPTOGRAPHY_DEVICEOBJECTS = ID_CRYPTOGRAPHY + 7, - - ID_DNS_SERVER = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4E0, - ID_DNS_ZONE = ID_DNS_SERVER + 1, - ID_DNS_RECORD = ID_DNS_SERVER + 2, - - ID_USB_HUB = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4F0, - ID_USB_HUB_NOTIFICATION = ID_USB_HUB + 1, - ID_USB_DEVICE = ID_USB_HUB + 2, - - ID_TESTAUTOMATIONMEMORY = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x9F0, - ID_TESTAUTOMATIONCOMRPC = ID_TESTAUTOMATIONMEMORY + 1, - ID_TESTAUTOMATIONCOMRPCINTERNAL = ID_TESTAUTOMATIONMEMORY + 2, - - ID_CONTENTPROTECTION = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x500, - ID_CONTENTPROTECTION_NOTIFICATION = ID_CONTENTPROTECTION + 1, - - ID_WATERMARK = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x510, - ID_WATERMARK_NOTIFICATION = ID_WATERMARK + 2, - - ID_SYSTEMAUDIOPLAYER = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x520, - ID_SYSTEMAUDIOPLAYER_NOTIFICATION = ID_SYSTEMAUDIOPLAYER + 1, - - ID_BLUETOOTHREMOTECONTROL = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x530, - ID_BLUETOOTHREMOTECONTROL_NOTIFICATION = ID_BLUETOOTHREMOTECONTROL + 1, - - ID_DEVICEIDENTIFICATION = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x540, - - ID_SECURITYAGENT = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x550, - - ID_LOCATIONSYNC = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x560, - ID_LOCATIONSYNC_NOTIFICATION = ID_LOCATIONSYNC + 1, - ID_SAMPLEITERATOR = ID_LOCATIONSYNC + 2, - ID_SAMPLEITERATOR2 = ID_LOCATIONSYNC + 3, - - ID_MEMORY_MONITOR = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x570, - ID_MEMORY_MONITOR_NOTIFICATION = ID_MEMORY_MONITOR + 1, - - ID_IOCONNECTOR = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x580, - ID_IOCONNECTOR_NOTIFICATION = ID_IOCONNECTOR + 1, - - ID_SUBSYSTEM_CONTROL = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x590, - - ID_PLUGINASYNCSTATECONTROL = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x5A0, - ID_PLUGINASYNCSTATECONTROL_ACTIVATIONCALLBACK = ID_PLUGINASYNCSTATECONTROL + 1 + ID_STORE_CACHE = ID_STORE + 2, + ID_STORE2 = ID_STORE + 3, + ID_STORE2_NOTIFICATION = ID_STORE + 4, + ID_STORE_INSPECTOR = ID_STORE + 5, + ID_STORE_INSPECTOR_NAMESPACE_SIZE_ITERATOR = ID_STORE + 6, + ID_STORE_LIMIT = ID_STORE + 7, + + ID_LISA = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x450, + ID_LISA_NOTIFICATION = ID_LISA + 1, + ID_LISA_APP_VERSION = ID_LISA + 2, + ID_LISA_APP_VERSION_ITERATOR = ID_LISA + 3, + ID_LISA_APP = ID_LISA + 4, + ID_LISA_APP_ITERATOR = ID_LISA + 5, + ID_LISA_APPS_PAYLOAD = ID_LISA + 6, + ID_LISA_STORAGE = ID_LISA + 7, + ID_LISA_STORAGE_PAYLOAD = ID_LISA + 8, + ID_LISA_PROGRESS = ID_LISA + 9, + ID_LISA_KEY_VALUE = ID_LISA + 10, + ID_LISA_KEY_VALUE_ITERATOR = ID_LISA + 11, + ID_LISA_METADATA_PAYLOAD = ID_LISA + 12, + ID_LISA_LOCK_INFO = ID_LISA + 13, + ID_LISA_HANDLE_RESULT = ID_LISA + 14, + + ID_PACKAGEMANAGER = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x460, + ID_PACKAGEMANAGER_KEY_VALUE_ITERATOR = ID_PACKAGEMANAGER + 1, + ID_PACKAGEMANAGER_NOTIFICATION = ID_PACKAGEMANAGER + 2, + ID_PACKAGEMANAGER_PACKAGE_KEY_ITERATOR = ID_PACKAGEMANAGER + 3, + ID_PACKAGEMANAGER_BROKER = ID_PACKAGEMANAGER + 4, + ID_PACKAGEMANAGER_CALLBACK = ID_PACKAGEMANAGER + 5, + + ID_RUST_BRIDGE = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x470, + ID_RUST_BRIDGE_NOTIFICATION = ID_RUST_BRIDGE + 1, + + ID_WIFICONTROL = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x480, + ID_WIFICONTROL_NOTIFICATION = ID_WIFICONTROL + 1, + ID_WIFICONTROL_NETWORK_INFO_ITERATOR = ID_WIFICONTROL + 2, + ID_WIFICONTROL_SECURITY_INFO_ITERATOR = ID_WIFICONTROL + 3, + + ID_NETWORKCONTROL = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x490, + ID_NETWORKCONTROL_NOTIFICATION = ID_NETWORKCONTROL + 1, + ID_NETWORKCONTROL_NETWORK_INFO_ITERATOR = ID_NETWORKCONTROL + 2, + + ID_WATCHDOG = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4A0, + + ID_SCRIPT_ENGINE = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4B0, + ID_SCRIPT_ENGINE_NOTIFICATION = ID_SCRIPT_ENGINE + 1, + + ID_TEXT_TO_SPEECH = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4C0, + ID_TEXT_TO_SPEECH_NOTIFICATION = ID_TEXT_TO_SPEECH + 1, + + ID_CRYPTOGRAPHY = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4D0, + ID_CRYPTOGRAPHY_VAULT = ID_CRYPTOGRAPHY + 1, + ID_CRYPTOGRAPHY_HASH = ID_CRYPTOGRAPHY + 2, + ID_CRYPTOGRAPHY_CIPHER = ID_CRYPTOGRAPHY + 3, + ID_CRYPTOGRAPHY_DIFFIEHELLMAN = ID_CRYPTOGRAPHY + 4, + ID_CRYPTOGRAPHY_PERSISTENT = ID_CRYPTOGRAPHY + 5, + ID_CRYPTOGRAPHY_RANDOM = ID_CRYPTOGRAPHY + 6, + ID_CRYPTOGRAPHY_DEVICEOBJECTS = ID_CRYPTOGRAPHY + 7, + + ID_DNS_SERVER = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4E0, + ID_DNS_ZONE = ID_DNS_SERVER + 1, + ID_DNS_RECORD = ID_DNS_SERVER + 2, + + ID_USB_HUB = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4F0, + ID_USB_HUB_NOTIFICATION = ID_USB_HUB + 1, + ID_USB_DEVICE = ID_USB_HUB + 2, + + ID_TESTAUTOMATIONMEMORY = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x9F0, + ID_TESTAUTOMATIONCOMRPC = ID_TESTAUTOMATIONMEMORY + 1, + ID_TESTAUTOMATIONCOMRPCINTERNAL = ID_TESTAUTOMATIONMEMORY + 2, + + ID_CONTENTPROTECTION = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x500, + ID_CONTENTPROTECTION_NOTIFICATION = ID_CONTENTPROTECTION + 1, + + ID_WATERMARK = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x510, + ID_WATERMARK_NOTIFICATION = ID_WATERMARK + 2, + + ID_SYSTEMAUDIOPLAYER = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x520, + ID_SYSTEMAUDIOPLAYER_NOTIFICATION = ID_SYSTEMAUDIOPLAYER + 1, + + ID_BLUETOOTHREMOTECONTROL = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x530, + ID_BLUETOOTHREMOTECONTROL_NOTIFICATION = ID_BLUETOOTHREMOTECONTROL + 1, + + ID_DEVICEIDENTIFICATION = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x540, + + ID_SECURITYAGENT = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x550, + + ID_LOCATIONSYNC = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x560, + ID_LOCATIONSYNC_NOTIFICATION = ID_LOCATIONSYNC + 1, + + ID_MEMORY_MONITOR = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x570, + ID_MEMORY_MONITOR_NOTIFICATION = ID_MEMORY_MONITOR + 1, + + ID_IOCONNECTOR = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x580, + ID_IOCONNECTOR_NOTIFICATION = ID_IOCONNECTOR + 1, + + ID_SUBSYSTEM_CONTROL = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x590 }; } } diff --git a/interfaces/Interfaces.vcxproj b/interfaces/Interfaces.vcxproj index 487190f6..9b13b63a 100644 --- a/interfaces/Interfaces.vcxproj +++ b/interfaces/Interfaces.vcxproj @@ -69,7 +69,6 @@ - @@ -142,7 +141,6 @@ - @@ -392,10 +390,10 @@ - - - - + + + + diff --git a/interfaces/Interfaces.vcxproj.filters b/interfaces/Interfaces.vcxproj.filters index 75d6ce4d..46169342 100644 --- a/interfaces/Interfaces.vcxproj.filters +++ b/interfaces/Interfaces.vcxproj.filters @@ -73,7 +73,6 @@ - @@ -144,7 +143,6 @@ - From 20778725c2d22bd4f7539dc2e49b23eb0fc0f82c Mon Sep 17 00:00:00 2001 From: VeithMetro Date: Tue, 22 Jul 2025 10:26:40 +0200 Subject: [PATCH 07/11] Revert "Adjust the Windows project files" This reverts commit 7d916e78041553d25c1ac0d79c6e2b7889f65e08. --- definitions/Definitions.vcxproj | 17 +++-------------- definitions/Definitions.vcxproj.filters | 6 +++--- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/definitions/Definitions.vcxproj b/definitions/Definitions.vcxproj index 1bad4594..4fff291e 100644 --- a/definitions/Definitions.vcxproj +++ b/definitions/Definitions.vcxproj @@ -220,20 +220,6 @@ $(ProjectDir)../interfaces/json/JSubsystemControl.h $(ProjectDir)../interfaces/json/JSubsystemControl.h - - python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force - ClInclude - python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force - ClInclude - python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force - ClInclude - python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force - ClInclude - $(ProjectDir)../interfaces/json/JPerformance.h - $(ProjectDir)../interfaces/json/JPerformance.h - $(ProjectDir)../interfaces/json/JPerformance.h - $(ProjectDir)../interfaces/json/JPerformance.h - $(ProjectDir)../interfaces/json/JMath.h @@ -422,6 +408,9 @@ Document + + Document + Document diff --git a/definitions/Definitions.vcxproj.filters b/definitions/Definitions.vcxproj.filters index 426c4103..88e26df6 100644 --- a/definitions/Definitions.vcxproj.filters +++ b/definitions/Definitions.vcxproj.filters @@ -224,6 +224,9 @@ JSON Files + + JSON Files + JSON Files @@ -252,9 +255,6 @@ Interface Files - - Interface Files - From ff4e4a2b6552fa7296ef46288e235421cd1ee36a Mon Sep 17 00:00:00 2001 From: VeithMetro Date: Tue, 22 Jul 2025 10:35:17 +0200 Subject: [PATCH 08/11] Revert "Revert "Merge branch 'master' into development/performance-monitor-interface"" This reverts commit bc63a5734f20be62eebeb50fbe8ae1c013aa8c33. --- definitions/Definitions.cpp | 1 + interfaces/IButler.h | 2 +- interfaces/IContentDecryption.h | 2 + interfaces/IContentProtection.h | 73 +++++++++- interfaces/IInputSwitch.h | 2 + interfaces/IPluginAsyncStateControl.h | 64 +++++++++ interfaces/IPower.h | 2 + interfaces/IProvisioning.h | 2 + interfaces/IStream.h | 2 + interfaces/ITextToSpeech.h | 2 + interfaces/Ids.h | 199 +++++++++++++------------- interfaces/Interfaces.vcxproj | 10 +- interfaces/Interfaces.vcxproj.filters | 2 + 13 files changed, 255 insertions(+), 108 deletions(-) create mode 100644 interfaces/IPluginAsyncStateControl.h diff --git a/definitions/Definitions.cpp b/definitions/Definitions.cpp index 9b690c39..1410442c 100644 --- a/definitions/Definitions.cpp +++ b/definitions/Definitions.cpp @@ -65,6 +65,7 @@ #include #include #include +#include #include #include #include diff --git a/interfaces/IButler.h b/interfaces/IButler.h index c530a6e6..e600c165 100644 --- a/interfaces/IButler.h +++ b/interfaces/IButler.h @@ -23,7 +23,7 @@ #include #include -// @stubgen:include +// @stubgen:include namespace Thunder { namespace Exchange { diff --git a/interfaces/IContentDecryption.h b/interfaces/IContentDecryption.h index 9c2b7b49..6ca1b509 100644 --- a/interfaces/IContentDecryption.h +++ b/interfaces/IContentDecryption.h @@ -22,6 +22,8 @@ #include "Module.h" #include "IDRM.h" +// @insert + namespace Thunder { namespace Exchange { diff --git a/interfaces/IContentProtection.h b/interfaces/IContentProtection.h index 44068b6c..720aa323 100644 --- a/interfaces/IContentProtection.h +++ b/interfaces/IContentProtection.h @@ -55,14 +55,17 @@ namespace Exchange { FAILED = 4 /* @text:FAILED */, }; + // (e.g. NOT_REQUIRED) State state; - // @brief same as that returned by the SecManager + // @brief same as that returned by the SecManager. + // For other cases greater than 20000 (e.g. 2) // @text failureReason int32_t failureReason; }; // @alt onWatermarkStatusChanged // @param sessionId session id for the content protection session + // (e.g. 930762523) // @param appId application that should receive the notification virtual void WatermarkStatusChanged( uint32_t sessionId /* @text:sessionId */, @@ -76,23 +79,50 @@ namespace Exchange { // @alt openDrmSession // @param clientId client that establishes the playback session + // (e.g. "com.comcast.vipa:1") // @param appId application requesting the new watermarking session // @param licenseRequest base64-encoded DRM license request // @param initData video platform specific init data + // (e.g. "{\"sessionConfiguration\":{\"distributedTraceId\":\"...\"},\"accessToken\":\"...\",\"contentMetadata\":\"...\"}") // @param sessionId generated by SecManager to track sessions + // (e.g. 930762523) // @param response video platform specific response data + // (e.g. "{\"license\":\"...\",\"refreshDuration\":0}") + // @retval 21003 Invalid key system + // @retval 21004 Invalid license request + // @retval 21005 Invalid content metadata + // @retval 21006 Invalid media usage + // @retval 21007 Invalid access token + // @retval 21008 Invalid access attributes + // @retval 21009 Invalid session id + // @retval 21012 Invalid client id + // @retval 21014 Invalid watermarking system + // @retval 21015 Invalid content attributes + // @retval 22001 DRM general failure + // @retval 22003 DRM license timeout + // @retval 22004 DRM license network failure + // @retval 22008 DRM access token expired + // @retval 22011 DRM MAC token not provisioned + // @retval 22012 DRM memory allocation error + // @retval 22013 DRM SecAPI usage failure + // @retval 22016 DRM entitlement error + // @retval 23001 Watermark general failure + // @retval 23003 Watermark request timeout + // @retval 23012 Watermark memory allocation error virtual uint32_t OpenDrmSession( const string& clientId /* @text:clientId */, const string& appId /* @text:appId */, KeySystem keySystem /* @text:keySystem */, const string& licenseRequest /* @text:licenseRequest */, - const string& initData /* @text:initData @opaque */, + const string& initData /* @text:initData */, uint32_t& sessionId /* @text:sessionId @out */, - string& response /* @text:openSessionResponse @opaque @out */) + string& response /* @text:openSessionResponse @out */) = 0; // @alt setDrmSessionState // @param sessionId sec manager generated playback session id + // (e.g. 930762523) + // @retval 21009 Invalid session id virtual uint32_t SetDrmSessionState( uint32_t sessionId /* @text:sessionId */, State sessionState /* @text:sessionState */) @@ -100,24 +130,54 @@ namespace Exchange { // @alt updateDrmSession // @param sessionId sec manager generated playback session id + // (e.g. 930762523) // @param licenseRequest base64-encoded DRM license request // @param initData video platform specific init data + // (e.g. "{\"sessionConfiguration\":{\"distributedTraceId\":\"...\"},\"accessToken\":\"...\",\"contentMetadata\":\"...\"}") // @param response video platform specific response data + // (e.g. "{\"license\":\"...\",\"refreshDuration\":0}") + // @retval 21003 Invalid key system + // @retval 21004 Invalid license request + // @retval 21005 Invalid content metadata + // @retval 21006 Invalid media usage + // @retval 21007 Invalid access token + // @retval 21008 Invalid access attributes + // @retval 21009 Invalid session id + // @retval 21012 Invalid client id + // @retval 21014 Invalid watermarking system + // @retval 21015 Invalid content attributes + // @retval 22001 DRM general failure + // @retval 22003 DRM license timeout + // @retval 22004 DRM license network failure + // @retval 22008 DRM access token expired + // @retval 22011 DRM MAC token not provisioned + // @retval 22012 DRM memory allocation error + // @retval 22013 DRM SecAPI usage failure + // @retval 22016 DRM entitlement error + // @retval 23001 Watermark general failure + // @retval 23003 Watermark request timeout + // @retval 23012 Watermark memory allocation error virtual uint32_t UpdateDrmSession( uint32_t sessionId /* @text:sessionId */, const string& licenseRequest /* @text:licenseRequest */, - const string& initData /* @text:initData @opaque */, - string& response /* @text:updateSessionResponse @opaque @out */) + const string& initData /* @text:initData */, + string& response /* @text:updateSessionResponse @out */) = 0; // @alt closeDrmSession // @param sessionId sec manager generated playback session id + // (e.g. 930762523) + // @param response video platform specific response data + // @retval 21009 Invalid session id + // @retval 21012 Invalid client id virtual uint32_t CloseDrmSession( - uint32_t sessionId /* @text:sessionId */) + uint32_t sessionId /* @text:sessionId */, + string& response /* @text:closeSessionResponse @out */) = 0; // @alt showWatermark // @param sessionId id returned on a call to openDrmSession + // (e.g. 930762523) // @param show true when watermark has to be presented virtual uint32_t ShowWatermark( uint32_t sessionId /* @text:sessionId */, @@ -127,6 +187,7 @@ namespace Exchange { // @alt setPlaybackPosition // @param sessionId sec manager generated playback session id + // (e.g. 930762523) // @param speed current playback speed // @param position current playback position virtual uint32_t SetPlaybackPosition( diff --git a/interfaces/IInputSwitch.h b/interfaces/IInputSwitch.h index e9aa3e91..c48df090 100644 --- a/interfaces/IInputSwitch.h +++ b/interfaces/IInputSwitch.h @@ -20,6 +20,8 @@ #pragma once #include "Module.h" +// @insert + namespace Thunder { namespace Exchange { diff --git a/interfaces/IPluginAsyncStateControl.h b/interfaces/IPluginAsyncStateControl.h new file mode 100644 index 00000000..72826db1 --- /dev/null +++ b/interfaces/IPluginAsyncStateControl.h @@ -0,0 +1,64 @@ +/* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2025 Metrological + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once +#include "Module.h" + +namespace Thunder { +namespace Exchange { + + struct EXTERNAL IPluginAsyncStateControl : virtual public Core::IUnknown { + + enum { ID = ID_PLUGINASYNCSTATECONTROL }; + + ~IPluginAsyncStateControl() override = default; + + struct EXTERNAL IActivationCallback : virtual public Core::IUnknown { + enum { ID = ID_PLUGINASYNCSTATECONTROL_ACTIVATIONCALLBACK }; + ~IActivationCallback() override = default; + + enum class state : uint8_t { + SUCCESS, + FAILURE, + ABORTED + }; + + // @brief callback called when an activation request has finished. Note this can be called while the Activate call has not yet returned + // @param state result state of the activation request (ABORTED when AbortActivate was called AND the plugin did not reach activated state yet before the request was aborted, otherwise SUCCESS will be reported as a result of an AbortActivate request) + // @param numberofretries Number of retries that happened the moment this callback was called + virtual void Finished(const string& callsign, const state state, const uint8_t numberofretries) = 0; + }; + + // @brief Activate a plugin. Passed callbcak will be called on failure or success + // @param callsign: callsign of plugin to activate + // @param maxnumberretries: maximum number of retries to initialize the plugin (default used when not specified) + // @param delay: delay to be used (in ms) between initialization retries (default used when not specified) + // @param cb: callback interface called on success or failure + // @retval ERROR_INPROGRESS Activation request is already in progress for this callsign + // @retval ERROR_ILLEGAL_STATE Plugin with this callsign is in an invalid state for it to be able to be started (e.g. DESTROYED or UNAVAILABLE) + // @retval ERROR_NOT_EXIST Plugin is unknown to Thunder (at this moment in case of Dynamic plugins) + virtual Core::hresult Activate(const string& callsign, const Core::OptionalType& maxnumberretries, const Core::OptionalType& delay, IActivationCallback* const cb) = 0; + + // @brief Abort a previously started Activate request + // @retval ERROR_NOT_EXIST There is no ongoing activation request + virtual Core::hresult AbortActivate(const string& callsign) = 0; + + }; +} +} diff --git a/interfaces/IPower.h b/interfaces/IPower.h index 34b7ab20..d6cefaba 100644 --- a/interfaces/IPower.h +++ b/interfaces/IPower.h @@ -61,11 +61,13 @@ namespace Exchange { virtual Core::hresult Unregister(const INotification* const sink) = 0; // @property + // @alt:deprecated state // @brief Get the current power state // @param state: The current power state (e.g. PassiveStandby) virtual Core::hresult GetState(PCState& state /* @out */) const = 0; // @brief Set the power state + // @alt:deprecated set // @param state: The power state to set (e.g. Hibernate) // @param waitTime: The time to wait for the power state to be set in seconds (e.g. 10) // @retval ERROR_GENERAL: General failure diff --git a/interfaces/IProvisioning.h b/interfaces/IProvisioning.h index fda20c40..4c86af7c 100644 --- a/interfaces/IProvisioning.h +++ b/interfaces/IProvisioning.h @@ -20,6 +20,8 @@ #pragma once #include "Module.h" +// @insert + namespace Thunder { namespace Exchange { diff --git a/interfaces/IStream.h b/interfaces/IStream.h index 37df8030..915c82d4 100644 --- a/interfaces/IStream.h +++ b/interfaces/IStream.h @@ -20,6 +20,8 @@ #pragma once #include "Module.h" +// @insert + #define WPEPLAYER_PROCESS_NODE_ID "/tmp/player" namespace Thunder { diff --git a/interfaces/ITextToSpeech.h b/interfaces/ITextToSpeech.h index 3768af21..c509d0be 100644 --- a/interfaces/ITextToSpeech.h +++ b/interfaces/ITextToSpeech.h @@ -1,6 +1,8 @@ #ifndef __ITEXTTOSPEECH_H #define __ITEXTTOSPEECH_H +// @insert + #include "Module.h" namespace Thunder { diff --git a/interfaces/Ids.h b/interfaces/Ids.h index f02afba3..9bc19447 100644 --- a/interfaces/Ids.h +++ b/interfaces/Ids.h @@ -315,103 +315,108 @@ namespace Exchange { ID_STORE = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x440, ID_STORE_NOTIFICATION = ID_STORE + 1, - ID_STORE_CACHE = ID_STORE + 2, - ID_STORE2 = ID_STORE + 3, - ID_STORE2_NOTIFICATION = ID_STORE + 4, - ID_STORE_INSPECTOR = ID_STORE + 5, - ID_STORE_INSPECTOR_NAMESPACE_SIZE_ITERATOR = ID_STORE + 6, - ID_STORE_LIMIT = ID_STORE + 7, - - ID_LISA = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x450, - ID_LISA_NOTIFICATION = ID_LISA + 1, - ID_LISA_APP_VERSION = ID_LISA + 2, - ID_LISA_APP_VERSION_ITERATOR = ID_LISA + 3, - ID_LISA_APP = ID_LISA + 4, - ID_LISA_APP_ITERATOR = ID_LISA + 5, - ID_LISA_APPS_PAYLOAD = ID_LISA + 6, - ID_LISA_STORAGE = ID_LISA + 7, - ID_LISA_STORAGE_PAYLOAD = ID_LISA + 8, - ID_LISA_PROGRESS = ID_LISA + 9, - ID_LISA_KEY_VALUE = ID_LISA + 10, - ID_LISA_KEY_VALUE_ITERATOR = ID_LISA + 11, - ID_LISA_METADATA_PAYLOAD = ID_LISA + 12, - ID_LISA_LOCK_INFO = ID_LISA + 13, - ID_LISA_HANDLE_RESULT = ID_LISA + 14, - - ID_PACKAGEMANAGER = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x460, - ID_PACKAGEMANAGER_KEY_VALUE_ITERATOR = ID_PACKAGEMANAGER + 1, - ID_PACKAGEMANAGER_NOTIFICATION = ID_PACKAGEMANAGER + 2, - ID_PACKAGEMANAGER_PACKAGE_KEY_ITERATOR = ID_PACKAGEMANAGER + 3, - ID_PACKAGEMANAGER_BROKER = ID_PACKAGEMANAGER + 4, - ID_PACKAGEMANAGER_CALLBACK = ID_PACKAGEMANAGER + 5, - - ID_RUST_BRIDGE = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x470, - ID_RUST_BRIDGE_NOTIFICATION = ID_RUST_BRIDGE + 1, - - ID_WIFICONTROL = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x480, - ID_WIFICONTROL_NOTIFICATION = ID_WIFICONTROL + 1, - ID_WIFICONTROL_NETWORK_INFO_ITERATOR = ID_WIFICONTROL + 2, - ID_WIFICONTROL_SECURITY_INFO_ITERATOR = ID_WIFICONTROL + 3, - - ID_NETWORKCONTROL = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x490, - ID_NETWORKCONTROL_NOTIFICATION = ID_NETWORKCONTROL + 1, - ID_NETWORKCONTROL_NETWORK_INFO_ITERATOR = ID_NETWORKCONTROL + 2, - - ID_WATCHDOG = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4A0, - - ID_SCRIPT_ENGINE = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4B0, - ID_SCRIPT_ENGINE_NOTIFICATION = ID_SCRIPT_ENGINE + 1, - - ID_TEXT_TO_SPEECH = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4C0, - ID_TEXT_TO_SPEECH_NOTIFICATION = ID_TEXT_TO_SPEECH + 1, - - ID_CRYPTOGRAPHY = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4D0, - ID_CRYPTOGRAPHY_VAULT = ID_CRYPTOGRAPHY + 1, - ID_CRYPTOGRAPHY_HASH = ID_CRYPTOGRAPHY + 2, - ID_CRYPTOGRAPHY_CIPHER = ID_CRYPTOGRAPHY + 3, - ID_CRYPTOGRAPHY_DIFFIEHELLMAN = ID_CRYPTOGRAPHY + 4, - ID_CRYPTOGRAPHY_PERSISTENT = ID_CRYPTOGRAPHY + 5, - ID_CRYPTOGRAPHY_RANDOM = ID_CRYPTOGRAPHY + 6, - ID_CRYPTOGRAPHY_DEVICEOBJECTS = ID_CRYPTOGRAPHY + 7, - - ID_DNS_SERVER = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4E0, - ID_DNS_ZONE = ID_DNS_SERVER + 1, - ID_DNS_RECORD = ID_DNS_SERVER + 2, - - ID_USB_HUB = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4F0, - ID_USB_HUB_NOTIFICATION = ID_USB_HUB + 1, - ID_USB_DEVICE = ID_USB_HUB + 2, - - ID_TESTAUTOMATIONMEMORY = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x9F0, - ID_TESTAUTOMATIONCOMRPC = ID_TESTAUTOMATIONMEMORY + 1, - ID_TESTAUTOMATIONCOMRPCINTERNAL = ID_TESTAUTOMATIONMEMORY + 2, - - ID_CONTENTPROTECTION = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x500, - ID_CONTENTPROTECTION_NOTIFICATION = ID_CONTENTPROTECTION + 1, - - ID_WATERMARK = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x510, - ID_WATERMARK_NOTIFICATION = ID_WATERMARK + 2, - - ID_SYSTEMAUDIOPLAYER = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x520, - ID_SYSTEMAUDIOPLAYER_NOTIFICATION = ID_SYSTEMAUDIOPLAYER + 1, - - ID_BLUETOOTHREMOTECONTROL = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x530, - ID_BLUETOOTHREMOTECONTROL_NOTIFICATION = ID_BLUETOOTHREMOTECONTROL + 1, - - ID_DEVICEIDENTIFICATION = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x540, - - ID_SECURITYAGENT = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x550, - - ID_LOCATIONSYNC = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x560, - ID_LOCATIONSYNC_NOTIFICATION = ID_LOCATIONSYNC + 1, - - ID_MEMORY_MONITOR = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x570, - ID_MEMORY_MONITOR_NOTIFICATION = ID_MEMORY_MONITOR + 1, - - ID_IOCONNECTOR = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x580, - ID_IOCONNECTOR_NOTIFICATION = ID_IOCONNECTOR + 1, - - ID_SUBSYSTEM_CONTROL = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x590 + ID_STORE_CACHE = ID_STORE + 2, + ID_STORE2 = ID_STORE + 3, + ID_STORE2_NOTIFICATION = ID_STORE + 4, + ID_STORE_INSPECTOR = ID_STORE + 5, + ID_STORE_INSPECTOR_NAMESPACE_SIZE_ITERATOR = ID_STORE + 6, + ID_STORE_LIMIT = ID_STORE + 7, + + ID_LISA = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x450, + ID_LISA_NOTIFICATION = ID_LISA + 1, + ID_LISA_APP_VERSION = ID_LISA + 2, + ID_LISA_APP_VERSION_ITERATOR = ID_LISA + 3, + ID_LISA_APP = ID_LISA + 4, + ID_LISA_APP_ITERATOR = ID_LISA + 5, + ID_LISA_APPS_PAYLOAD = ID_LISA + 6, + ID_LISA_STORAGE = ID_LISA + 7, + ID_LISA_STORAGE_PAYLOAD = ID_LISA + 8, + ID_LISA_PROGRESS = ID_LISA + 9, + ID_LISA_KEY_VALUE = ID_LISA + 10, + ID_LISA_KEY_VALUE_ITERATOR = ID_LISA + 11, + ID_LISA_METADATA_PAYLOAD = ID_LISA + 12, + ID_LISA_LOCK_INFO = ID_LISA + 13, + ID_LISA_HANDLE_RESULT = ID_LISA + 14, + + ID_PACKAGEMANAGER = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x460, + ID_PACKAGEMANAGER_KEY_VALUE_ITERATOR = ID_PACKAGEMANAGER + 1, + ID_PACKAGEMANAGER_NOTIFICATION = ID_PACKAGEMANAGER + 2, + ID_PACKAGEMANAGER_PACKAGE_KEY_ITERATOR = ID_PACKAGEMANAGER + 3, + ID_PACKAGEMANAGER_BROKER = ID_PACKAGEMANAGER + 4, + ID_PACKAGEMANAGER_CALLBACK = ID_PACKAGEMANAGER + 5, + + ID_RUST_BRIDGE = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x470, + ID_RUST_BRIDGE_NOTIFICATION = ID_RUST_BRIDGE + 1, + + ID_WIFICONTROL = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x480, + ID_WIFICONTROL_NOTIFICATION = ID_WIFICONTROL + 1, + ID_WIFICONTROL_NETWORK_INFO_ITERATOR = ID_WIFICONTROL + 2, + ID_WIFICONTROL_SECURITY_INFO_ITERATOR = ID_WIFICONTROL + 3, + + ID_NETWORKCONTROL = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x490, + ID_NETWORKCONTROL_NOTIFICATION = ID_NETWORKCONTROL + 1, + ID_NETWORKCONTROL_NETWORK_INFO_ITERATOR = ID_NETWORKCONTROL + 2, + + ID_WATCHDOG = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4A0, + + ID_SCRIPT_ENGINE = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4B0, + ID_SCRIPT_ENGINE_NOTIFICATION = ID_SCRIPT_ENGINE + 1, + + ID_TEXT_TO_SPEECH = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4C0, + ID_TEXT_TO_SPEECH_NOTIFICATION = ID_TEXT_TO_SPEECH + 1, + + ID_CRYPTOGRAPHY = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4D0, + ID_CRYPTOGRAPHY_VAULT = ID_CRYPTOGRAPHY + 1, + ID_CRYPTOGRAPHY_HASH = ID_CRYPTOGRAPHY + 2, + ID_CRYPTOGRAPHY_CIPHER = ID_CRYPTOGRAPHY + 3, + ID_CRYPTOGRAPHY_DIFFIEHELLMAN = ID_CRYPTOGRAPHY + 4, + ID_CRYPTOGRAPHY_PERSISTENT = ID_CRYPTOGRAPHY + 5, + ID_CRYPTOGRAPHY_RANDOM = ID_CRYPTOGRAPHY + 6, + ID_CRYPTOGRAPHY_DEVICEOBJECTS = ID_CRYPTOGRAPHY + 7, + + ID_DNS_SERVER = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4E0, + ID_DNS_ZONE = ID_DNS_SERVER + 1, + ID_DNS_RECORD = ID_DNS_SERVER + 2, + + ID_USB_HUB = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4F0, + ID_USB_HUB_NOTIFICATION = ID_USB_HUB + 1, + ID_USB_DEVICE = ID_USB_HUB + 2, + + ID_TESTAUTOMATIONMEMORY = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x9F0, + ID_TESTAUTOMATIONCOMRPC = ID_TESTAUTOMATIONMEMORY + 1, + ID_TESTAUTOMATIONCOMRPCINTERNAL = ID_TESTAUTOMATIONMEMORY + 2, + + ID_CONTENTPROTECTION = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x500, + ID_CONTENTPROTECTION_NOTIFICATION = ID_CONTENTPROTECTION + 1, + + ID_WATERMARK = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x510, + ID_WATERMARK_NOTIFICATION = ID_WATERMARK + 2, + + ID_SYSTEMAUDIOPLAYER = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x520, + ID_SYSTEMAUDIOPLAYER_NOTIFICATION = ID_SYSTEMAUDIOPLAYER + 1, + + ID_BLUETOOTHREMOTECONTROL = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x530, + ID_BLUETOOTHREMOTECONTROL_NOTIFICATION = ID_BLUETOOTHREMOTECONTROL + 1, + + ID_DEVICEIDENTIFICATION = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x540, + + ID_SECURITYAGENT = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x550, + + ID_LOCATIONSYNC = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x560, + ID_LOCATIONSYNC_NOTIFICATION = ID_LOCATIONSYNC + 1, + ID_SAMPLEITERATOR = ID_LOCATIONSYNC + 2, + ID_SAMPLEITERATOR2 = ID_LOCATIONSYNC + 3, + + ID_MEMORY_MONITOR = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x570, + ID_MEMORY_MONITOR_NOTIFICATION = ID_MEMORY_MONITOR + 1, + + ID_IOCONNECTOR = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x580, + ID_IOCONNECTOR_NOTIFICATION = ID_IOCONNECTOR + 1, + + ID_SUBSYSTEM_CONTROL = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x590, + + ID_PLUGINASYNCSTATECONTROL = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x5A0, + ID_PLUGINASYNCSTATECONTROL_ACTIVATIONCALLBACK = ID_PLUGINASYNCSTATECONTROL + 1 }; } } diff --git a/interfaces/Interfaces.vcxproj b/interfaces/Interfaces.vcxproj index 9b13b63a..487190f6 100644 --- a/interfaces/Interfaces.vcxproj +++ b/interfaces/Interfaces.vcxproj @@ -69,6 +69,7 @@ + @@ -141,6 +142,7 @@ + @@ -390,10 +392,10 @@ - - - - + + + + diff --git a/interfaces/Interfaces.vcxproj.filters b/interfaces/Interfaces.vcxproj.filters index 46169342..75d6ce4d 100644 --- a/interfaces/Interfaces.vcxproj.filters +++ b/interfaces/Interfaces.vcxproj.filters @@ -73,6 +73,7 @@ + @@ -143,6 +144,7 @@ + From bab21283471b8b31f93bca9462c4f2197d4a3fa3 Mon Sep 17 00:00:00 2001 From: VeithMetro Date: Tue, 22 Jul 2025 10:38:04 +0200 Subject: [PATCH 09/11] Bring back the JPluginAsyncStateControl generation on Windows --- definitions/Definitions.vcxproj | 14 ++++++++++++++ definitions/Definitions.vcxproj.filters | 3 +++ 2 files changed, 17 insertions(+) diff --git a/definitions/Definitions.vcxproj b/definitions/Definitions.vcxproj index 4fff291e..4091280b 100644 --- a/definitions/Definitions.vcxproj +++ b/definitions/Definitions.vcxproj @@ -220,6 +220,20 @@ $(ProjectDir)../interfaces/json/JSubsystemControl.h $(ProjectDir)../interfaces/json/JSubsystemControl.h + + python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force + ClInclude + python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force + ClInclude + python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force + ClInclude + python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force + ClInclude + $(ProjectDir)../interfaces/json/JPluginAsyncStateControl.h + $(ProjectDir)../interfaces/json/JPluginAsyncStateControl.h + $(ProjectDir)../interfaces/json/JPluginAsyncStateControl.h + $(ProjectDir)../interfaces/json/JPluginAsyncStateControl.h + $(ProjectDir)../interfaces/json/JMath.h diff --git a/definitions/Definitions.vcxproj.filters b/definitions/Definitions.vcxproj.filters index 88e26df6..b7cf283f 100644 --- a/definitions/Definitions.vcxproj.filters +++ b/definitions/Definitions.vcxproj.filters @@ -255,6 +255,9 @@ Interface Files + + Interface Files + From 9ee1d1d3aa494985995e32a35e2f7991dac03c33 Mon Sep 17 00:00:00 2001 From: VeithMetro Date: Tue, 22 Jul 2025 10:41:23 +0200 Subject: [PATCH 10/11] Adjust the Windows files for IPerformance after cleaning-up the merge --- definitions/Definitions.vcxproj | 15 ++++++++++++++- definitions/Definitions.vcxproj.filters | 6 +++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/definitions/Definitions.vcxproj b/definitions/Definitions.vcxproj index 4091280b..a62f29b0 100644 --- a/definitions/Definitions.vcxproj +++ b/definitions/Definitions.vcxproj @@ -43,7 +43,6 @@ - @@ -234,6 +233,20 @@ $(ProjectDir)../interfaces/json/JPluginAsyncStateControl.h $(ProjectDir)../interfaces/json/JPluginAsyncStateControl.h + + ClInclude + ClInclude + ClInclude + ClInclude + python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force + python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force + python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force + python "$(ToolPath)\JsonGenerator\JsonGenerator.py" -I "$(FrameworkPath)\" -I "$(ProjectDir)\" --keep-empty --case-convention legacy -c -j "$(ProjectDir)../interfaces" -o "$(ProjectDir)../interfaces/json" "%(FullPath)" --force + $(ProjectDir)../interfaces/json/JPerformance.h + $(ProjectDir)../interfaces/json/JPerformance.h + $(ProjectDir)../interfaces/json/JPerformance.h + $(ProjectDir)../interfaces/json/JPerformance.h + $(ProjectDir)../interfaces/json/JMath.h diff --git a/definitions/Definitions.vcxproj.filters b/definitions/Definitions.vcxproj.filters index b7cf283f..5d49aa1b 100644 --- a/definitions/Definitions.vcxproj.filters +++ b/definitions/Definitions.vcxproj.filters @@ -76,9 +76,6 @@ Generated Files - - Generated Files - Generated Files @@ -258,6 +255,9 @@ Interface Files + + Interface Files + From 0ec17d751031124b1a3a2e83bf922cc83d7633dd Mon Sep 17 00:00:00 2001 From: VeithMetro Date: Tue, 22 Jul 2025 10:50:05 +0200 Subject: [PATCH 11/11] Don't forget to once again remove the old .json file --- definitions/Definitions.vcxproj | 3 --- definitions/Definitions.vcxproj.filters | 3 --- 2 files changed, 6 deletions(-) diff --git a/definitions/Definitions.vcxproj b/definitions/Definitions.vcxproj index a62f29b0..580cfee0 100644 --- a/definitions/Definitions.vcxproj +++ b/definitions/Definitions.vcxproj @@ -435,9 +435,6 @@ Document - - Document - Document diff --git a/definitions/Definitions.vcxproj.filters b/definitions/Definitions.vcxproj.filters index 5d49aa1b..ed7357e2 100644 --- a/definitions/Definitions.vcxproj.filters +++ b/definitions/Definitions.vcxproj.filters @@ -221,9 +221,6 @@ JSON Files - - JSON Files - JSON Files