예제 #1
0
        public static bool SetMeasurePoint(MeasurePoint measurePoint)
        {
            //MeasurePointData measurePointData = new MeasurePointData
            //{
            //    RecordId = Guid.NewGuid(),
            //    Bssid = measurePoint.Bssid,
            //    CenterFrequency = measurePoint.CenterFrequency,
            //    Constant = measurePoint.Constant,
            //    Quality = measurePoint.Quality,
            //    RssiLevel = measurePoint.RssiLevel,
            //    Ssid = measurePoint.Ssid
            //};

            //using (DataClassesDataContext dataContex = new DataClassesDataContext())
            //{
            //    dataContex.MeasurePointDatas.InsertOnSubmit(measurePointData);

            //    dataContex.SubmitChanges();
            //}

            return true;
        }
 public bool SetMeasurePoint(MeasurePoint measurePoint)
 {
     return DBOperation.SetMeasurePoint(measurePoint);
 }
        private double MeasureConstant(MeasurePoint item, List<MeasurePoint> measurePointList)
        {
            List<MeasurePoint> measurePointConstantList = measurePointList.Where(m => m.Bssid == item.Bssid)
                                                                          .OrderBy(m => m.RssiLevel)
                                                                          .ToList();
            double measurePointConstant;
            if (measurePointConstantList.Count == 0)
            {
                measurePointConstant = -27.55;
            }
            else if (measurePointConstantList.Count == 1)
            {
                measurePointConstant = measurePointConstantList.First().Constant;
            }
            else
            {
                //that this value will range between -10 and -100 dBm
                double min = -100;
                double max = -10;

                List<ConstantClass> ConstantList = new List<ConstantClass>();
                List<ConstantClass> ConstantTempList = measurePointConstantList.Select(m =>
                {
                    var nextItem = measurePointConstantList.GetNext(m);
                    var previousItem = measurePointConstantList.GetPrevious(m);

                    double maxItem;
                    double minItem;

                    if (measurePointConstantList.IsFirst(m))
                    {
                        double teilLevel = ((m.RssiLevel - nextItem.RssiLevel) / 3);

                        minItem = min;
                        maxItem = m.RssiLevel - teilLevel;
                    }
                    else if (measurePointConstantList.IsLast(m))
                    {
                        double teilLevel = ((previousItem.RssiLevel - m.RssiLevel) / 3);
                        double middleConstant = ((previousItem.Constant + m.Constant) / 2);

                        minItem = m.RssiLevel + teilLevel;
                        maxItem = max;

                        ConstantList.Add(new ConstantClass
                        {
                            MaxLevel = minItem,
                            MinLevel = minItem + teilLevel,
                            Constant = middleConstant
                        });
                    }
                    else
                    {
                        double teilLevelMax = ((m.RssiLevel - nextItem.RssiLevel) / 3);
                        double teilLevelMin = ((previousItem.RssiLevel - m.RssiLevel) / 3);
                        double middleConstant = ((previousItem.Constant + m.Constant) / 2);

                        minItem = m.RssiLevel + teilLevelMin;
                        maxItem = m.RssiLevel - teilLevelMax;

                        ConstantList.Add(new ConstantClass
                        {
                            MaxLevel = minItem,
                            MinLevel = minItem + teilLevelMin,
                            Constant = middleConstant
                        });
                    }

                    return new ConstantClass { MaxLevel = maxItem, MinLevel = minItem, Constant = m.Constant };

                }).ToList();

                ConstantTempList.AddRange(ConstantList);

                double constant = ConstantTempList.First(m => m.MinLevel < item.RssiLevel && item.RssiLevel <= m.MaxLevel).Constant;

                measurePointConstant = constant;
            }

            return measurePointConstant;
        }