예제 #1
0
        public async Task <LineStatus> GetLineStatusAsync(string hostAddress, string lineEncoder = "ProgramL1")
        {
            // TODO: Get actual amount of lines from CCM and add to CodecInformation object to determine if it exists
            using (var socket = await ProdysSocketPool.TakeSocket(hostAddress))
            {
                // If the device have multiple lines and encoders
                var         deviceLineEncoder         = string.IsNullOrEmpty(lineEncoder) || lineEncoder == "null" ? "ProgramL1" : lineEncoder;
                IkusNetLine statusSelectedLineEncoder = IkusNetLine.ProgramL1;
                try
                {
                    statusSelectedLineEncoder = (IkusNetLine)Enum.Parse(typeof(IkusNetLine), deviceLineEncoder, true);
                }
                catch (Exception)
                {
                    statusSelectedLineEncoder = IkusNetLine.ProgramL1;
                }

                log.Debug($"Trying to GetLineStatus statusSelectedLine: {statusSelectedLineEncoder} , hostAddress: {hostAddress}");

                SendCommand(socket, new CommandIkusNetGetLineStatus
                {
                    Line = statusSelectedLineEncoder
                });

                var response = new IkusNetGetLineStatusResponse(socket);

                return(new LineStatus
                {
                    LineEncoder = statusSelectedLineEncoder.ToString(),
                    StatusCode = IkusNetMapper.MapToLineStatus(response.LineStatus),
                    DisconnectReason = IkusNetMapper.MapToDisconnectReason(response.DisconnectionCode),
                    RemoteAddress = response.Address
                });
            }
        }
예제 #2
0
 // For test only
 public async Task <string> GetDeviceNameAsync(string hostAddress)
 {
     using (var socket = await ProdysSocketPool.TakeSocket(hostAddress))
     {
         SendCommand(socket, new CommandIkusNetSysGetDeviceName());
         var response = new IkusNetGetDeviceNameResponse(socket);
         return(response.DeviceName);
     }
 }
예제 #3
0
 public async Task <VuValues> GetVuValuesAsync(string hostAddress)
 {
     using (var socket = await ProdysSocketPool.TakeSocket(hostAddress))
     {
         SendCommand(socket, new CommandIkusNetGetVuMeters());
         var response = new IkusNetGetVumetersResponse(socket);
         return(IkusNetMapper.MapToVuValues(response));
     }
 }
예제 #4
0
 public async Task <bool?> GetGpoAsync(string hostAddress, int gpio)
 {
     using (var socket = await ProdysSocketPool.TakeSocket(hostAddress))
     {
         SendCommand(socket, new CommandIkusNetGetGpo {
             Gpio = gpio
         });
         var response = new IkusNetGetGpoResponse(socket);
         return(response.Active);
     }
 }
예제 #5
0
 public async Task <bool> CheckIfAvailableAsync(string ip)
 {
     try
     {
         using (var socket = await ProdysSocketPool.TakeSocket(ip))
         {
             // Send dummy command to codec.
             SendCommand(socket, new CommandIkusNetGetVuMeters());
             var dummResponse = new IkusNetGetVumetersResponse(socket);
             return(true); // Success
         }
     }
     catch (Exception)
     {
         return(false);
     }
 }
예제 #6
0
        public async Task <AudioMode> GetAudioModeAsync(string hostAddress)
        {
            using (var socket = await ProdysSocketPool.TakeSocket(hostAddress))
            {
                // Get encoder algoritm
                SendCommand(socket, new CommandIkusNetGetEncoderAudioMode());
                var encoderResponse = IkusNetGetEncoderAudioModeResponse.GetResponse(socket);

                // Get decoder algoritm
                SendCommand(socket, new CommandIkusNetGetDecoderAudioMode());
                var decoderResponse = IkusNetGetDecoderAudioModeResponse.GetResponse(socket);

                return(new AudioMode
                {
                    EncoderAudioAlgoritm = IkusNetMapper.MapToAudioAlgorithm(encoderResponse.AudioAlgorithm),
                    DecoderAudioAlgoritm = IkusNetMapper.MapToAudioAlgorithm(decoderResponse.AudioAlgorithm)
                });
            }
        }
예제 #7
0
        public virtual async Task <AudioStatus> GetAudioStatusAsync(string hostAddress, int nrOfInputs, int nrOfGpos)
        {
            var audioStatus = new AudioStatus();

            using (var socket = await ProdysSocketPool.TakeSocket(hostAddress))
            {
                SendCommand(socket, new CommandIkusNetGetVuMeters());
                var vuResponse = new IkusNetGetVumetersResponse(socket);
                audioStatus.VuValues = IkusNetMapper.MapToVuValues(vuResponse);

                // // Input status not implemented in Quantum ST
                audioStatus.InputStatus = new List <InputStatus>();

                audioStatus.Gpos = new List <GpoStatus>();

                for (int gpo = 0; gpo < nrOfGpos; gpo++)
                {
                    SendCommand(socket, new CommandIkusNetGetGpo {
                        Gpio = gpo
                    });
                    var response  = new IkusNetGetGpoResponse(socket);
                    var gpoEnable = response.Active;
                    if (!gpoEnable.HasValue)
                    {
                        // Indication of missing GPO for the number. Probably we passed the last one.
                        break;
                    }
                    audioStatus.Gpos.Add(new GpoStatus()
                    {
                        Index = gpo, Active = gpoEnable.Value
                    });
                }
            }

            return(audioStatus);
        }
예제 #8
0
 public IkusNetStApi(ProdysSocketPool prodysSocketPool) : base(prodysSocketPool)
 {
 }