예제 #1
0
        /// <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;
            }
        }