public PlantronicsManager(IStatusManager statusManager, 
            IInteractionManager interactionManager,
            INotificationService notificationService,
            ITraceContext traceContext)
        {
            _statusManager = statusManager;
            _interactionManager = interactionManager;
            _traceContext = traceContext;
            _notificationService = notificationService;

            m_sessionComManager = new SessionComManagerClass();
            m_sessionManagerEvents = m_sessionComManager as ISessionCOMManagerEvents_Event;
            m_comSession = m_sessionComManager.Register("Interaction Client Plantronics AddIn");

            // Now check if our plugin session was created
            if (m_comSession != null)
            {
                // detect devices added/removed
                m_sessionManagerEvents.DeviceStateChanged += OnDeviceStateChanged;

                //Get current Device
                m_device = m_comSession.ActiveDevice;

                // if we have a device register for events
                if (m_device != null)
                {
                    // Register for device events
                    RegisterEvents();
                }
            }
        }
Example #2
0
        /**
         * Remove all of the event listeners and release the COM objects
         */
        private static void CleanUp()
        {
            DetachDevice();

            if (m_comSession != null)
            {
                if (m_sessionEvents != null)
                {
                    // release session events
                    Marshal.ReleaseComObject(m_sessionEvents);
                    m_sessionEvents = null;
                }
                // unregister session
                m_sessionComManager.UnRegister(m_comSession);
                Marshal.ReleaseComObject(m_comSession);
                m_comSession = null;
            }
            if (m_sessionComManager != null)
            {
                Marshal.ReleaseComObject(m_sessionComManager);
                m_sessionComManager = null;
            }

            allSockets.Clear();

            if (server != null)
            {
                server.Dispose();
            }
        }
Example #3
0
        private static void InitializePlantronics()
        {
            try
            {
                m_sessionComManager = new SessionComManagerClass();
                Console.WriteLine("Session Manager created");
                m_sessionManagerEvents = m_sessionComManager as ISessionCOMManagerEvents_Event;
                if (m_sessionManagerEvents != null)
                {
                    m_sessionManagerEvents.DeviceStateChanged += m_sessionComManager_DeviceStateChanged;
                    Console.WriteLine("Attached to session manager events");
                }
                else
                {
                    Console.WriteLine("Error: Unable to attach to session manager events");
                }
                ////////////////////////////////////////////////////////////////////////////////////////
                // register session to spokes
                m_comSession = m_sessionComManager.Register("COM Session");
                if (m_comSession != null)
                {
                    // attach to session call events
                    m_sessionEvents = m_comSession.CallEvents as ICOMCallEvents_Event;
                    if (m_sessionEvents != null)
                    {
                        m_sessionEvents.CallStateChanged += m_sessionEvents_CallStateChanged;
                        Console.WriteLine("Attached to session call events");
                    }
                    else
                    {
                        Console.WriteLine("Error: Unable to attach to session call events");
                    }

                    // Attach to active device and print all device information
                    m_activeDevice = m_comSession.ActiveDevice;

                    AttachDevice();
                }
                else
                {
                    Console.WriteLine("Error: Unable to register session");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
                Console.Read();
            }
        }
Example #4
0
        private static void InitializePlantronics()
        {
            try
            {
                m_sessionComManager = new SessionComManagerClass();
                Console.WriteLine("Session Manager created");
                m_sessionManagerEvents = m_sessionComManager as ISessionCOMManagerEvents_Event;
                if (m_sessionManagerEvents != null)
                {
                    m_sessionManagerEvents.DeviceStateChanged += m_sessionComManager_DeviceStateChanged;
                    Console.WriteLine("Attached to session manager events");
                }
                else
                {
                    Console.WriteLine("Error: Unable to attach to session manager events");
                }
                ////////////////////////////////////////////////////////////////////////////////////////
                // register session to spokes
                m_comSession = m_sessionComManager.Register("COM Session");
                if (m_comSession != null)
                {
                    // attach to session call events
                    m_sessionEvents = m_comSession.CallEvents as ICOMCallEvents_Event;
                    if (m_sessionEvents != null)
                    {
                        m_sessionEvents.CallStateChanged += m_sessionEvents_CallStateChanged;
                        Console.WriteLine("Attached to session call events");
                    }
                    else
                    {
                        Console.WriteLine("Error: Unable to attach to session call events");
                    }

                    // Attach to active device and print all device information
                    m_activeDevice = m_comSession.ActiveDevice;

                    AttachDevice();
                }
                else
                    Console.WriteLine("Error: Unable to register session");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
                Console.Read();
            }
        }
Example #5
0
        /**
         * Remove all of the event listeners and release the COM objects
         */
        private static void CleanUp()
        {
            DetachDevice();

            if (m_comSession != null)
            {
                if (m_sessionEvents != null)
                {
                    // release session events
                    Marshal.ReleaseComObject(m_sessionEvents);
                    m_sessionEvents = null;
                }
                // unregister session
                m_sessionComManager.UnRegister(m_comSession);
                Marshal.ReleaseComObject(m_comSession);
                m_comSession = null;
            }
            if (m_sessionComManager != null)
            {
                Marshal.ReleaseComObject(m_sessionComManager);
                m_sessionComManager = null;
            }

            allSockets.Clear();

            if (server != null)
            {
                server.Dispose();
            }
        }
Example #6
0
        /// <summary>
        /// Instruct Spokes object to disconnect from Spokes runtime engine and unregister its
        /// session in Spokes.
        /// </summary>
        public void Disconnect()
        {
            DetachDevice();
            try
            {

            if (m_comSession != null)
            {
                if (m_sessionEvents != null)
                {
                    // release session events
                    m_sessionEvents.CallRequested -= m_sessionEvents_CallRequested;
                    m_sessionEvents.CallStateChanged -= m_sessionEvents_CallStateChanged;
                    Marshal.ReleaseComObject(m_sessionEvents);
                    m_sessionEvents = null;
                }
                // unregister session
                if (m_sessionEvents != null)
                {
                    m_sessionManagerEvents.DeviceStateChanged -= m_sessionComManager_DeviceStateChanged;
                }
                m_sessionComManager.UnRegister(m_comSession);
                Marshal.ReleaseComObject(m_comSession);
                m_comSession = null;
            }
            if (m_sessionComManager != null)
            {
                Marshal.ReleaseComObject(m_sessionComManager);
                m_sessionComManager = null;
            }
            }
            catch (Exception e)
            {
                DebugPrint(MethodInfo.GetCurrentMethod().Name, "Exception caught in disconnect: " + e.ToString());
            }
        }
Example #7
0
        /// <summary>
        /// Instruct Spokes object to connect to Spokes runtime engine and register itself
        /// so that it can begin to communicate with the attached Plantronics device.
        /// </summary>
        /// <param name="SessionName">Optional name of your appplication's session within Spokes runtime engine. If omitted it will default to "COM Session".</param>
        public bool Connect(string SessionName = "COM Session")
        {
            if (!IsSpokesInstalled())
            {
                DebugPrint(MethodInfo.GetCurrentMethod().Name, "FATAL ERROR: cannot connect if Spokes COMSessionManager/SessionCOMManager class is not registered! Spokes not installed (or wrong major version installed for this Spokes Wrapper)!");
                return false; // cannot connect if Spokes COM SessionManager class is not registered! Spokes not installed!
            }
            if (isConnected) return true;
            DeviceCapabilities =
                new SpokesDeviceCaps(false, false, false, false, false, false, false); // we don't yet know what the capabilities are
            OnCapabilitiesChanged(EventArgs.Empty);
            bool success = false;
            try
            {
                ////////////////////////////////////////////////////////////////////////////////////////
                // create session manager, and attach to session manager events
                m_sessionComManager = new SessionComManagerClass();
                m_sessionManagerEvents = m_sessionComManager as ISessionCOMManagerEvents_Event;
                if (m_sessionManagerEvents != null)
                {
                    m_sessionManagerEvents.CallStateChanged += m_sessionComManager_CallStateChanged;
                    m_sessionManagerEvents.DeviceStateChanged += m_sessionComManager_DeviceStateChanged;
                }
                else
                    success = false;

                ////////////////////////////////////////////////////////////////////////////////////////
                // register session to spokes
                m_comSession = m_sessionComManager.Register(SessionName);
                if (m_comSession != null)
                {
                    // attach to session call events
                    m_sessionEvents = m_comSession.CallEvents as ICOMCallEvents_Event;
                    if (m_sessionEvents != null)
                    {
                        m_sessionEvents.CallRequested += m_sessionEvents_CallRequested;
                        m_sessionEvents.CallStateChanged += m_sessionEvents_CallStateChanged;

                    }
                    else
                        success = false;

                    ////////////////////////////////////////////////////////////////////////////////////////
                    // Attach to active device and print all device information
                    // and registers for proximity (if supported by device)
                    AttachDevice();
                    success = true;
                }
            }
            catch (System.Exception e)
            {
                success = false;
                throw new Exception("Failed to connect to Spokes", e);
            }
            return success;
        }