public Task <bool> CheckIfAvailableAsync(string hostAddress)
 {
     log.Debug("Checking if codec at " + hostAddress + " is reachable");
     try
     {
         using (var client = new UmacClient(hostAddress, Sdk.Umac.ExternalProtocolIpCommandsPort))
         {
             return(Task.FromResult(true));
         }
     }
     catch (Exception)
     {
         return(Task.FromResult(false));
     }
 }
 public Task <LineStatus> GetLineStatusAsync(string hostAddress, string lineEncoder = "ProgramL1")
 {
     log.Debug("Getting line status from Umac codec at {0}", hostAddress);
     try
     {
         using (var client = new UmacClient(hostAddress, Sdk.Umac.ExternalProtocolIpCommandsPort))
         {
             var lineStatus = client.GetLineStatus();
             return(Task.FromResult(lineStatus));
         }
     }
     catch (Exception)
     {
         return(Task.FromResult(new LineStatus
         {
             StatusCode = LineStatusCode.Unknown,
             DisconnectReason = DisconnectReason.None
         }));
     }
 }
        public Task <bool> HangUpAsync(string hostAddress, string deviceEncoder = "Program")
        {
            log.Debug("Hanging up Umac codec at {0}", hostAddress);

            /* Example dialog:
             *          admin> hangup
             *          admin> not streaming
             *          CALL_STATE disconnected [tx: idle, rx: idle]
             */

            try
            {
                using (var client = new UmacClient(hostAddress, Sdk.Umac.ExternalProtocolIpCommandsPort))
                {
                    var lineStatus = client.HangUp();
                    return(Task.FromResult(lineStatus));
                }
            }
            catch (Exception ex)
            {
                log.Warn(ex);
                return(Task.FromResult(false));
            }
        }
        public Task <bool> CallAsync(string hostAddress, string callee, string profileName, string deviceEncoder = "Program")
        {
            log.Debug("Call from Umac codec at {0}", hostAddress);

            if (profileName != "Telefon")
            {
                // We can't deal with anything but the phone profile for now
                return(Task.FromResult(false));
            }

            try
            {
                using (var client = new UmacClient(hostAddress, Sdk.Umac.ExternalProtocolIpCommandsPort))
                {
                    var lineStatus = client.Call(callee, profileName);
                    return(Task.FromResult(lineStatus));
                }
            }
            catch (Exception ex)
            {
                log.Warn(ex);
                return(Task.FromResult(false));
            }
        }