module ItsAutoInterop_TestSystem { 
    
    // Libcommon
    import from LibCommon_BasicTypesAndValues all;
    import from LibCommon_DataStrings all;
    
    // LibItsCommon
    import from LibItsExternal_TypesAndValues all;
    
    // LibItsGeoNetworking
    import from LibItsGeoNetworking_TypesAndValues all;
    import from LibItsGeoNetworking_TestSystem all;
    
    // ItsAutoInterop
    import from ItsAutoInterop_TypesAndValues all;
    
    group portDefinitions {
        
        /**
         * @desc EUT's HMI port
         */
        type port HmiPort message {
            in 
                HmiAutoInteropResults, HmiNeighborEventInds, HmiSignageEventInd;
            out 
                HmiInitialize
        }
        
    } // End of group portDefinitions 
    
    group systemInterface {
        
        /**
         * @desc ITS System Adapter
         */
        type component ItsAutoInteropGeoNetworkingSystem extends ItsGeoNetworkingSystem {
            
            port HmiPort hmiPort;
            
        } // End of component ItsAutoInteropGeoNetworkingSystem
        
    } // End of group systemInterface
    
    group componentDefinitions {
        
        /**
         * @desc Test component for ITS Network and Transport layer
         */
        type component ItsAutoInteropGeonetworking extends ItsGeoNetworking { 
            port EutGeoNetworkingPort eutGeoNetworkingPort;
            
            port HmiPort hmiPort;
            
            // HMI indications
            var HmiNeighborEventIndList vc_hmiNeighborEventIndsList := {};
            var HmiSignageEventIndList vc_hmiSignageEventIndList := {};
            
            var boolean vc_hmiDefaultActive := true;
        } // End of component ItsAutoInteropGeonetworking
        
    } // End of group componentDefinitions
    
    type port EutGeoNetworkingPort message {
        inout EutGeoNetworking
    } with {
        extension "internal"
    }
    
    /**
     * @desc Inter EUT component communication
     */
    type record EutGeoNetworking {
        GeoNetworkingPdu    msg,
        MacAddress          macDestinationAddress,
        Bit256              ssp optional,
        UInt32              its_aid optional
    } with {
        encode "RAW";
        variant ""
    } // End of type EutGeoNetworking
    
} // End of module ItsAutoInterop_TestSystem 