private void DoConnectCOMAPI() { try { // Connect to the Plantronics COM API _sessionManager = new COMSessionManager(); _sessionManager.Register(AppName, out _session); _sessionManagerEvents = (ICOMSessionManagerEvents_Event)_sessionManager; // obtain session manager events interface _sessionManagerEvents.onDeviceStateChanged += _sessionManagerEvents_onDeviceStateChanged; // register for device state changed events (device arrival / removal) _sessionManagerEvents.onCallStateChanged += _sessionManagerEvents_onCallStateChanged; _session.onCallStateChanged += _session_onCallStateChanged; // register for call state changed events (headset call control) _callCommand = _session.GetCallCommand(); // obtain Plantronics object for controlling call state of Plantronics device AttachDevice(); // register for device events and obtain device listener _apiConnected = true; OnSDKInfo(new SDKInfoArgs(SDKInfoType.sdk_connected, "SDK now connected")); } catch (Exception e) { DoTidyUpSDK(_session != null); OnSDKError(new SDKErrorArgs(SDKErrorType.sdk_connection_failed, e.ToString())); DoAttemptReconnectAfterDelay(); } }
private static int _callid; // variable to track call id between my app and Plantronics static void Main() { Console.WriteLine("C# Plantronics COM API Sample"); bool quit = false; // Connect to the Plantronics COM API _sessionManager = new COMSessionManager(); _sessionManager.Register("My App", out _session); _sessionManagerEvents = (ICOMSessionManagerEvents_Event)_sessionManager; // obtain session manager events interface _sessionManagerEvents.onDeviceStateChanged += _sessionManagerEvents_onDeviceStateChanged; // register for device state changed events (device arrival / removal) _session.onCallStateChanged += _session_onCallStateChanged; // register for call state changed events (headset call control) _callCommand = _session.GetCallCommand(); // obtain Plantronics object for controlling call state of Plantronics device AttachDevice(); // register for device events and obtain device listener while (!quit) { ShowMenu(); string cmd = Console.ReadLine(); switch (cmd) { case "1": _callid++; DoIncomingCall(_callid, "Bob%20Smith"); // inform Plantronics my app has an incoming (ringing) call break; case "2": _callid++; DoOutgoingCall(_callid, "Bob%20Smith"); // inform Plantronics my app has an outgoing call break; case "3": DoAnswerCall(_callid); // inform Plantronics my app has now answered an incoming (ringing) call break; case "4": DoHoldCall(_callid); // place call on hold break; case "5": DoResumeCall(_callid); // resume the call break; case "6": DoMuteCall(true); // mute the headset (note for wireless products, audio link must be active) break; case "7": DoMuteCall(false); // unmute the headset (note for wireless products, audio link must be active) break; case "8": DoTerminateCall(_callid); // inform Plantronics my app has now terminated the call break; case "0": quit = true; break; default: Console.WriteLine("Unrecognised menu choice."); break; } } // Cleanup the Plantronics COM API DetachDevice(); _session.onCallStateChanged -= _session_onCallStateChanged; _sessionManagerEvents.onDeviceStateChanged -= _sessionManagerEvents_onDeviceStateChanged; _sessionManager.Unregister(_session); Marshal.ReleaseComObject(_session); Marshal.ReleaseComObject(_sessionManager); }