Skip to content

File ManagedSystem.h

File List > SpinnakerNET > ManagedSystem.h

Go to the documentation of this file

//=============================================================================
// Copyright (c) 2026 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved.
//
// This software is the confidential and proprietary information of FLIR
// Integrated Imaging Solutions, Inc. ("Confidential Information"). You
// shall not disclose such Confidential Information and shall use it only in
// accordance with the terms of the license agreement you entered into
// with FLIR Integrated Imaging Solutions, Inc. (FLIR).
//
// FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
// SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES
// SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
// THIS SOFTWARE OR ITS DERIVATIVES.
//=============================================================================

#ifndef FLIR_SPINNAKER_MANAGED_SYSTEM_H
#define FLIR_SPINNAKER_MANAGED_SYSTEM_H

#include "SystemPtr.h"
#include "IManagedSystem.h"
#include "ManagedLogger.h"
#include "ManagedLoggingEventHandler.h"

using namespace ::System;
using namespace ::System::Collections::Generic;

namespace SpinnakerNET
{
#if defined(_WIN32) || defined(_WIN64)
#if _MSC_VER == 1800
    [Obsolete("Spinnaker support for Visual Studio 2013 is deprecated, please upgrade to Visual Studio 2015 instead", false)]
#elif _MSC_VER == 1600
    [Obsolete("Spinnaker support for Visual Studio 2010 is deprecated, please upgrade to Visual Studio 2015 instead", false)]
#endif
#endif
    public ref class ManagedSystem : IManagedSystem
    {
        public:
            ManagedSystem();
            ~ManagedSystem();

            virtual ManagedInterfaceList^ GetInterfaces();

            virtual ManagedInterfaceList^ GetInterfaces(bool updateInterface);

            virtual ManagedCameraList^ GetCameras();

            virtual ManagedCameraList^ GetCameras(bool updateInterfaces, bool updateCameras);

            /*
            * Get the native system pointer.
            *
            * @return  The native system pointer.
            */
            virtual Spinnaker::SystemPtr* GetNativeSystemPtr();

            /*
            * Get a nodemap.  This nodemap is generated from a GenICam
            * XML file for the GenTL system Module.
            *
            * @return  A handle to a NodeMap object.
            */
            virtual SpinnakerNET::GenApi::INodeMap^ GetTLNodeMap();

            virtual const LibraryVersion^ GetLibraryVersion();

            virtual bool UpdateCameras();

            virtual bool UpdateCameras(bool updateInterfaces);

            virtual void UpdateInterfaceList();

            virtual bool UpdateProducers();

            virtual bool UpdateProducers(::System::String ^ ctiPath);

            virtual void RegisterLoggingEventHandler(SpinnakerNET::ManagedLoggingEventHandler^ loggingCallback);

            virtual void UnregisterLoggingEventHandler(SpinnakerNET::ManagedLoggingEventHandler^ loggingCallback);

            virtual void UnregisterLoggingEventHandler();

            /*
            * Registers an event handler to the system.
            * 
            * @see ManagedSystemEventHandler
            *
            * @param event The event to register to the system
            */
            virtual void RegisterEventHandler(ManagedEventHandler^ event);

            /*
            * Unregisters an event handler from the system.
            *
            * @see ManagedSystemEventHandler
            * 
            * @param event The event to unregister from the system
            */
            virtual void UnregisterEventHandler(ManagedEventHandler^ event);

            virtual bool IsInUse(void);

            virtual List<ActionCommandResult^>^ SendActionCommand(unsigned int deviceKey, unsigned int groupKey, unsigned int groupMask, [Optional] Nullable<unsigned long long> actionTime, bool requestAck);

            virtual void DisposeInterfaces(ManagedInterfaceList^ interfaceList);

            virtual SpinnakerNET::ManagedLoggingLevel GetLoggingEventPriorityLevel();

            virtual void SetLoggingEventPriorityLevel(SpinnakerNET::ManagedLoggingLevel level);

        protected:
            !ManagedSystem();

        private:
            Spinnaker::SystemPtr* m_pNativeSystemPtr;
            List<SpinnakerNET::ManagedLoggingEventHandler^ >^ m_callbackList;
            Object^ m_interfaceListLock;
            Object^ m_cameraListLock;
            SpinnakerNET::GenApi::NodeMap^ m_pSysNodeMap;

            ManagedTransportLayerSystem^ m_genTLSystemInfo;

        public:
            virtual property SpinnakerNET::ManagedTransportLayerSystem^ TLSystem
            {
                SpinnakerNET::ManagedTransportLayerSystem^ get()
                {
                    return m_genTLSystemInfo;
                }
            }
    };
}

#endif // FLIR_SPINNAKER_MANAGED_SYSTEM_H