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; } }
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); } }
public static bool FilterByModel(FirmwareRemoteBinary item) { return(BluetoothImpl.Instance.ActiveModel == item.Model); }