コード例 #1
0
        public async Task <byte[]> DownloadFirmware(FirmwareRemoteBinary target)
        {
            Log.Debug($"FirmwareRemoteClient: Downloading firmware '{target.BuildName}'...");

            try
            {
                byte[] binary;
                HttpResponseMessage response = await _client.GetAsync($"{API_DOWNLOAD_FIRMWARE}/{target.BuildName}");

                if (response.IsSuccessStatusCode)
                {
                    MediaTypeFormatterCollection formatters = new MediaTypeFormatterCollection();
                    formatters.JsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter());

                    binary = await response.Content.ReadAsByteArrayAsync();
                }
                else
                {
                    Log.Debug($"FirmwareRemoteClient: Error code: " + response.StatusCode);
                    throw new NetworkInformationException((int)response.StatusCode);
                }

                return(binary);
            }
            catch (HttpRequestException ex)
            {
                Log.Error("FirmwareRemoteClient: Search failed due to network issues: " + ex.Message);
                throw;
            }
            catch (Exception ex)
            {
                Log.Error("FirmwareRemoteClient: Search failed: " + ex.Message);
                throw;
            }
        }
コード例 #2
0
        public static bool FilterByVersion(FirmwareRemoteBinary item)
        {
            var current = DeviceMessageCache.Instance.DebugGetAllData?.SoftwareVersion;

            if (current == null || item.BuildName == null)
            {
                return(false);
            }

            if (current.Length == 12 && item.BuildName.Length == 12)
            {
                var versionData  = current.Substring(current.Length - 3, 3).ToCharArray();
                var versionData2 = item.BuildName.Substring(item.BuildName.Length - 3, 3).ToCharArray();

                for (var i = 0; i < 3; i++)
                {
                    if (CHAR_ORDER.IndexOf(versionData[i]) < CHAR_ORDER.IndexOf(versionData2[i]))
                    {
                        // Newer version
                        return(true);
                    }
                    if (CHAR_ORDER.IndexOf(versionData[i]) > CHAR_ORDER.IndexOf(versionData2[i]))
                    {
                        // Older version
                        return(false);
                    }
                }
                // Equal version
                return(false);
            }
            else
            {
                Log.Warning("FirmwareRemoteBinary: Device version info length is wrong: " +
                            current.Length + " vs " + item.BuildName.Length);
                return(false);
            }
        }
コード例 #3
0
 public static bool FilterByModel(FirmwareRemoteBinary item)
 {
     return(BluetoothImpl.Instance.ActiveModel == item.Model);
 }