Program Listing for File dispatch.idl#

Return to documentation for file (interfaces\dispatch.idl)

 /********************************************************************************
 * Copyright (c) 2025-2026 ZF Friedrichshafen AG
 *
 * This program and the accompanying materials are made available under the
 * terms of the Apache License Version 2.0 which is available at
 * https://www.apache.org/licenses/LICENSE-2.0
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Contributors:
 *   Erik Verhoeven - initial API and implementation
 ********************************************************************************/

#include "core.idl"

module sdv
{
    module core
    {
        local interface ISignalTransmission
        {
            enum ETxTriggerBehavior : uint32
            {
                none = 0,
                spontaneous = 1,
                periodic_if_active = 2,
            };

            IInterfaceAccess CreateTxTrigger(in uint32 uiCycleTime, in uint32 uiDelayTime, in uint32 uiBehaviorFlags,
                in IInterfaceAccess pTriggerCallback);

            IInterfaceAccess RegisterTxSignal(in u8string ssSignalName, in any anyDefVal);

            IInterfaceAccess RegisterRxSignal(in u8string ssSignalName);
        };

        interface ITxTrigger
        {
            boolean AddSignal(in u8string ssSignalName);

            void RemoveSignal(in u8string ssSignalName);
        };

        interface ITxTriggerCallback
        {
            void Execute();
        };

        enum ESignalDirection
        {
            sigdir_tx,
            sigdir_rx,
        };

        struct SSignalRegistration
        {
            u8string            ssName;
            ESignalDirection    eType;
        };

        local interface ISignalAccess
        {
            IInterfaceAccess RequestSignalPublisher(in u8string ssSignalName);

            IInterfaceAccess AddSignalSubscription(in u8string ssSignalName, in IInterfaceAccess pSubscriber);

            sequence<SSignalRegistration> GetRegisteredSignals() const;
        };

        local interface IDispatchTransaction
        {
            IInterfaceAccess CreateTransaction();
        };

        local interface ISignalWrite
        {
            void Write(in any anyVal, in IInterfaceAccess pTransaction);
        };

        local interface ISignalRead
        {
            any Read(in IInterfaceAccess pTransaction) const;
        };

        local interface ISignalReceiveEvent
        {
            void Receive(in any anyVal);
        };

    };      // core module
};      // sdv module