public async Task <bool> SetConnectionInfoAsync(int slot, string serviceHostname, string deviceId)
        {
            ServiceUrlParts serviceUrlParts = new ServiceUrlParts();

            serviceUrlParts.HostName = serviceHostname;
            serviceUrlParts.DeviceId = deviceId;
            bool isSuccess = await SetServiceUrlParts(slot, serviceUrlParts);

            return(isSuccess);
        }
        public async Task <string> GetConnectionStringAsync(int slot = -1, uint validity = 3600)
        {
            ServiceUrlParts serviceUrlParts = await GetServiceUrlParts(slot);

            string sasToken = await GetSASTokenAsync(slot, validity);

            string connectionString = "";

            if ((serviceUrlParts.HostName.Length > 0) && (serviceUrlParts.DeviceId.Length > 0) && (sasToken.Length > 0))
            {
                connectionString = "HostName=" + serviceUrlParts.HostName + ";DeviceId=" + serviceUrlParts.DeviceId + ";SharedAccessSignature=" + sasToken;
            }
            return(connectionString);
        }
        private async Task <bool> SetServiceUrlParts(int slot, ServiceUrlParts serviceUrlParts)
        {
            bool   isSuccess  = false;
            String serviceUrl = serviceUrlParts.HostName + "/" + serviceUrlParts.DeviceId;

            var result = await this._systemConfiguratorProxy.SendCommandAsync(new Message.TpmSetServiceUrlRequest(slot, serviceUrl));

            var status = (result as Message.StatusCodeResponse).Status;

            if (status != Message.ResponseStatus.Success)
            {
                throw new Exception("Unable to set service Url in TPM");
            }

            isSuccess = true;
            return(isSuccess);
        }
        private async Task <ServiceUrlParts> GetServiceUrlParts(int slot = -1)
        {
            var result = await this._systemConfiguratorProxy.SendCommandAsync(new Message.TpmGetServiceUrlRequest(slot));

            var serviceUrl = (result as Message.StringResponse).Response;
            var parts      = serviceUrl.Split('/');

            if (parts.Length != 2)
            {
                throw new Exception("Unable to parse service Url in TPM");
            }

            ServiceUrlParts serviceUrlParts = new ServiceUrlParts();

            serviceUrlParts.HostName = parts[0];
            serviceUrlParts.DeviceId = parts[1];
            return(serviceUrlParts);
        }