/// <summary> /// Temperature characteristics discovered. /// </summary> /// <returns>The characteristics discovered.</returns> public async Task TemperatureCharacteristicsDiscovered() { try { if (_temperatureService != null && _temperatureService.Characteristics != null && _temperatureService.Characteristics.Count > 0) { _measurementTimeChar = _temperatureService.Characteristics.FirstOrDefault( x => x.ID.ToString().Contains(HaccpConstant.MeasurementtimingCharacteristicsUuid)); _measurementScaleChar = _temperatureService.Characteristics.FirstOrDefault( x => x.ID.ToString().Contains(HaccpConstant.MeasurementScaleUuid)); _autooffIntervalChar = _temperatureService.Characteristics.FirstOrDefault( x => x.ID.ToString().Contains(HaccpConstant.AutoOffIntervalUuid)); _sleepTimeChar = _temperatureService.Characteristics.FirstOrDefault( x => x.ID.ToString().Contains(HaccpConstant.SleepTimeUuid)); _probeNameChar = _temperatureService.Characteristics.FirstOrDefault( x => x.ID.ToString().Contains(HaccpConstant.ProbeUuid)); _resetAutoOffChar = _temperatureService.Characteristics.FirstOrDefault( x => x.ID.ToString().Contains(HaccpConstant.ResetAutooffUuid)); _disConnectPeripheralChar = _temperatureService.Characteristics.FirstOrDefault( x => x.ID.ToString().Contains(HaccpConstant.DiscoonectPeripheralUuid)); _measurementTimeChar = await _measurementTimeChar.ReadAsync(); _measurementScaleChar = await _measurementScaleChar.ReadAsync(); _autooffIntervalChar = await _autooffIntervalChar.ReadAsync(); _sleepTimeChar = await _sleepTimeChar.ReadAsync(); if (_measurementScaleChar != null && !string.IsNullOrEmpty(_measurementScaleChar.StringValue)) { var unit = _measurementScaleChar.StringValue; Settings.Scale = unit == HaccpConstant.C ? (short)0 : (short)1; Debug.WriteLine("Temperature unit : {0}", unit); } if (_autooffIntervalChar != null && _autooffIntervalChar.Value != null) { var hexstring = string.Join(string.Empty, _autooffIntervalChar.Value); Settings.AutoOff = Convert.ToInt32(hexstring); if (Settings.AutoOff > 30) { Settings.AutoOff = 30; } if (Settings.AutoOff < 1) { Settings.AutoOff = 1; } Debug.WriteLine("autooffIntervalChar : {0}", Settings.AutoOff); } if (_sleepTimeChar != null && _sleepTimeChar.Value != null) { var hexstring = string.Join(string.Empty, _sleepTimeChar.Value); Settings.Sleep = Convert.ToInt32(hexstring); if (Settings.Sleep > 30) { Settings.Sleep = 30; } if (Settings.Sleep < 1) { Settings.Sleep = 1; } Debug.WriteLine("sleepTimeChar : {0}", Settings.Sleep); } if (_measurementTimeChar != null && _measurementTimeChar.Value != null) { var hexstring = string.Join(string.Empty, _measurementTimeChar.Value); Debug.WriteLine("measurementTimeChar : {0}", hexstring); var measurementTiming = Convert.ToInt32(hexstring) * 1000; Settings.MeasurementLevel = Convert.ToInt32(hexstring); if (Settings.MeasurementLevel > 5) { Settings.MeasurementLevel = 5; } if (Settings.MeasurementLevel < 1) { Settings.MeasurementLevel = 1; } //get the temperature ascii characteristics .Contains temperature string value var characts = _temperatureService.Characteristics.FirstOrDefault( x => x.ID.ToString().Contains(HaccpConstant.AsciiTemperatureUuid)); if (characts != null && characts.CanRead) { ReadTemperatureValue(characts, measurementTiming); } } if (_probeNameChar != null) { _probeNameChar = await _probeNameChar.ReadAsync(); if (_probeNameChar.Value != null) { var hexstring = HACCPUtil.GetStringFromBytes(_probeNameChar.Value); Settings.Prob = hexstring; Debug.WriteLine("probeNameChar : {0}", Settings.Prob); } } //============================================================================ // if (Device.OS == TargetPlatform.Android) { // probeNameChar = temperatureService.Characteristics.FirstOrDefault (x => x.ID.ToString ().Contains (HACCPConstant.PROBE_UUID)); // if (probeNameChar != null) { // probeNameChar = await probeNameChar.ReadAsync (); // if (probeNameChar.Value != null) { // var hexstring = HACCPUtil.GetStringFromBytes (probeNameChar.Value); // Settings.Prob = hexstring; // Debug.WriteLine ("probeNameChar : {0}", Settings.Prob); // } // } // } //============================================================================ } else { Debug.WriteLine("Couldn't read temperature service"); } } catch (Exception ex) { Debug.WriteLine("CharacteristicsDicovered exception {0}", ex.Message); } finally { ReadingBlue2Data = false; } }