classdef (Abstract) ITargetServices < handle & matlab.mixin.CustomDisplay
%ITARGETSERVICES is the main service interface for target specific
% information and actions. Implementations of this interface allow PIL
% and other connectivity workflows to support different targets.

%   Copyright 2020-2022 The MathWorks, Inc.
        
    methods (Abstract)
        
        % Initialize the services using the XIL component args
        initialize(this, componentArgs);
        
        % Get the name for the target services implementation
        value = getName(this);
                
        % Get a unique identifier for the target service collection. This
        % is used to determine whether re-processing of the target data is
        % required
        uuid = getServiceInstanceIdentifier(this);
        
        % Returns true if this ITargetServices instance is able to
        % run independently from the specified instance. i.e. there is no
        % conflicting shared resources, etc.
        concurrent = runsConcurrentlyWith(this, otherTargetService);
        
        % Perform toolchain validation for SIL & PIL simulations to prevent
        % unsupported workflows
        validateToolchainSupport(this, toolchain);

        % Get the IDataTypeService associated with the connectivity target
        % services
        service = getDataTypeService(this);
        
        % Get the IRtIOStreamApplicationService associated with the connectivity target
        % services
        service = getRtIOStreamApplicationService(this);
        
        % Get the IBuildService associated with the connectivity target
        % services
        service = getBuildDependencyService(this);        
        
        % Get the IProfilingService associated with the connectivity target
        % services
        service = getProfilingService(this);

        % Return true is there is an IProfilingService associated
        res = hasProfilingService(this);

        % Return true if debugging is supported
        res = supportsDebugging(this);
    end
    
    methods (Abstract, Access=protected)        
        
        % Display summary information about the connectivity.
        displayScalarObject(this);
    end
end

% LocalWords:  IData IRt IProfiling
