void RangingBeaconsInRegion(object sender, RangeEventArgs e)
        {
            if (e.Beacons.Count > 0)
            {
                foreach (var b in e.Beacons)
                {
                    if ((ProximityType)b.Proximity != ProximityType.Unknown)
                    {
                        var exists = false;
                        for (int i = 0; i < beacons.Count; i++)
                        {
                            if (beacons[i].Minor.Equals(b.Minor.ToString()))
                            {
                                beacons[i].CurrentDistance = Math.Round(b.Accuracy, 2);
                                SetProximity(b, beacons [i]);
                                exists = true;
                            }
                        }

                        if (!exists)
                        {
                            var newBeacon = new BeaconItem {
                                Minor           = b.Minor.ToString(),
                                Name            = "",
                                CurrentDistance = Math.Round(b.Accuracy, 2)
                            };
                            SetProximity(b, newBeacon);
                            beacons.Add(newBeacon);
                        }
                    }
                }
            }
        }
        void HandleDidRangeBeacons(object sender, CLRegionBeaconsRangedEventArgs e)
        {
            if (e.Beacons.Length > 0)
            {
                foreach (var b in e.Beacons)
                {
                    if (b.Proximity != CLProximity.Unknown)
                    {
                        Console.WriteLine("UUID: {0} | Major: {1} | Minor: {2} | Accuracy: {3} | Proximity: {4} | RSSI: {5}", b.ProximityUuid, b.Major, b.Minor, b.Accuracy, b.Proximity, b.Rssi);
                        var exists = false;
                        for (int i = 0; i < beacons.Count; i++)
                        {
                            if (beacons[i].Minor.Equals(b.Minor.ToString()))
                            {
                                beacons[i].CurrentDistance = Math.Round(b.Accuracy, 2);
                                SetProximity(b, beacons[i]);
                                exists = true;
                            }
                        }

                        if (!exists)
                        {
                            var newBeacon = new BeaconItem
                            {
                                Minor           = b.Minor.ToString(),
                                Name            = "",
                                CurrentDistance = Math.Round(b.Accuracy, 2)
                            };
                            SetProximity(b, newBeacon);
                            beacons.Add(newBeacon);
                        }
                    }
                }
            }
        }
        void SetProximity(IBeacon source, BeaconItem dest)
        {
            Proximity p = Proximity.Unknown;

            switch ((ProximityType)source.Proximity)
            {
            case ProximityType.Immediate:
                p = Proximity.Immediate;
                break;

            case ProximityType.Near:
                p = Proximity.Near;
                break;

            case ProximityType.Far:
                p = Proximity.Far;
                break;
            }

            if (p > dest.Proximity || p < dest.Proximity)
            {
                dest.ProximityChangeTimestamp = DateTime.Now;
            }

            dest.Proximity = p;
        }
Exemple #4
0
        public void BeaconItem_Click(object sender, MouseEventArgs e)
        {
            BeaconItem item = (BeaconItem)sender;

            panel_main.Controls.Clear();
            panel_main.Controls.Add(new BeaconPanel(item.BeaconModuleData));
        }
Exemple #5
0
        public IActionResult Create(BeaconItem item)
        {
            _context.beaconItems.Add(item);
            _context.SaveChanges();

            return(CreatedAtRoute("GetBeacon", new { beaconId = item.BeaconId }, item));
        }
Exemple #6
0
		public void SetLocationLabel ()
		{
			closestBeacon = GetClosestBeacon();
			if (closestBeacon != null) {
				locationLabel.Text = "You are closest to " + closestBeacon.Name + " (Approximately " + closestBeacon.CurrentDistance + "m away)";
			}
		}
Exemple #7
0
        void SetProximity(CLBeacon source, BeaconItem dest)
        {
            CLProximity p = CLProximity.Unknown;

            switch (source.Proximity)
            {
            case CLProximity.Immediate:
                p = CLProximity.Immediate;
                var notification = new UILocalNotification
                {
                    FireDate    = NSDate.FromTimeIntervalSinceNow(1),
                    AlertAction = "Device Proximity Alert",
                    AlertBody   = "We are close to required bluetooth device!",
                    SoundName   = UILocalNotification.DefaultSoundName
                };
                //notify main app about beacon proximity
                UIApplication.SharedApplication.ScheduleLocalNotification(notification);
                break;

            case CLProximity.Near:
                p = CLProximity.Near;
                break;

            case CLProximity.Far:
                p = CLProximity.Far;
                break;
            }


            dest.Proximity = p;
        }
Exemple #8
0
 public void BeaconFound(BeaconItem item)
 {
     if (item.Minor >= 0 && item.Minor <= 3)
     {
         beaconLocater.PauseTracking();
         arPage = new ARPage(item.Minor.ToString());
         Navigation.PushAsync(arPage);
     }
 }
Exemple #9
0
        public BeaconMonitor()
        {
            locationManager = new CLLocationManager();
            var beaconRegion = new CLBeaconRegion(new NSUuid(PollViewModel.LOOKUP_UUID), "My Beacon")
            {
                NotifyEntryStateOnDisplay = true,
                NotifyOnEntry             = true
            };

            locationManager.RegionEntered += (s, e) => {
                if (e.Region.Identifier == "My Beacon")
                {
                    Console.WriteLine("Found My Beacon");

                    locationManager.StartRangingBeacons(beaconRegion);

                    locationManager.DidRangeBeacons += (lm, e2) => {
                        if (e2.Beacons.Length > 0)
                        {
                            foreach (var b in e2.Beacons)
                            {
                                if (b.Proximity != CLProximity.Unknown)
                                {
                                    Console.WriteLine("UUID: {0} | Major: {1} | Minor: {2} | Accuracy: {3} | Proximity: {4} | RSSI: {5}", b.ProximityUuid, b.Major, b.Minor, b.Accuracy, b.Proximity, b.Rssi);
                                    var exists = false;
                                    foreach (var beacon in Beacons)
                                    {
                                        if (beacon.Minor.Equals(b.Minor.ToString()))
                                        {
                                            beacon.CurrentDistance = Math.Round(b.Accuracy, 2);
                                            SetProximity(b, beacon);
                                            exists = true;
                                        }
                                    }

                                    if (!exists)
                                    {
                                        var newBeacon = new BeaconItem
                                        {
                                            Minor           = b.Minor.ToString(),
                                            Name            = "",
                                            CurrentDistance = Math.Round(b.Accuracy, 2)
                                        };
                                        SetProximity(b, newBeacon);
                                        Beacons.Add(newBeacon);
                                    }
                                }
                            }
                        }
                    };
                }
            };
            locationManager.StartMonitoring(beaconRegion);
        }
Exemple #10
0
        public async Task <IActionResult> OnGetAsync(string id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            BeaconItem = await _context.beaconItems.FirstOrDefaultAsync(m => m.BeaconId == id);

            if (BeaconItem == null)
            {
                return(NotFound());
            }
            return(Page());
        }
Exemple #11
0
        private async void TestModule(Object ip_obj)
        {
            IPAddress    ip     = (IPAddress)ip_obj;
            BeaconModule module = await BeaconModule.GetBeacon(ip);

            scanEvent.Signal();

            if (module != null)
            {
                Invoke(new MethodInvoker(() =>
                {
                    BeaconItem item = new BeaconItem(module, BeaconItem_Click);
                    panel_list.Controls.Add(item);
                }));
            }
        }
Exemple #12
0
        public async Task <IActionResult> OnPostAsync(string id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            BeaconItem = await _context.beaconItems.FindAsync(id);

            if (BeaconItem != null)
            {
                _context.beaconItems.Remove(BeaconItem);
                await _context.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
Exemple #13
0
        public IActionResult Update(string beaconId, BeaconItem item)
        {
            var beacon = _context.beaconItems.Find(beaconId);

            if (beacon == null)
            {
                return(NotFound());
            }

            beacon.Name      = item.Name;
            beacon.ExtraInfo = item.ExtraInfo;
            beacon.BeaconId  = item.BeaconId;

            _context.beaconItems.Update(beacon);
            _context.SaveChanges();
            return(NoContent());
        }
Exemple #14
0
		void SetProximity (CLBeacon source, BeaconItem dest)
		{

			Proximity p = Proximity.Unknown;

			switch (source.Proximity) {
			case CLProximity.Immediate:
				p = Proximity.Immediate;
				break;
			case CLProximity.Near:
				p = Proximity.Near;
				break;
			case CLProximity.Far:
				p = Proximity.Far;
				break;
			}

			if (p > dest.Proximity || p < dest.Proximity) {
				dest.ProximityChangeTimestamp = DateTime.Now;
			} 

			dest.Proximity = p;
		}
Exemple #15
0
		void HandleDidRangeBeacons (object sender, CLRegionBeaconsRangedEventArgs e)
		{
			if (e.Beacons.Length > 0) {
				foreach (var b in e.Beacons) {

					if (b.Proximity != CLProximity.Unknown) {
						Console.WriteLine ("UUID: {0} | Major: {1} | Minor: {2} | Accuracy: {3} | Proximity: {4} | RSSI: {5}", b.ProximityUuid, b.Major, b.Minor, b.Accuracy, b.Proximity, b.Rssi);
						var exists = false;
						for (int i = 0; i < beacons.Count; i++) {
							if (beacons [i].Minor.Equals (b.Minor.ToString ())) {
								beacons [i].CurrentDistance = Math.Round (b.Accuracy, 2);
								SetProximity (b, beacons [i]);
								exists = true;
							}
						}

						if (!exists) {
							var newBeacon = new BeaconItem {
								Minor = b.Minor.ToString (),
								Name = "",
								CurrentDistance = Math.Round (b.Accuracy, 2)
							};
							SetProximity (b, newBeacon);
							beacons.Add (newBeacon);
						}
					}
				}
			}
		}
        void RangingBeaconsInRegion(object sender, RangeEventArgs e)
        {
            if (e.Beacons.Count > 0) {
                foreach (var b in e.Beacons) {
                    if ((ProximityType)b.Proximity != ProximityType.Unknown) {

                        var exists = false;
                        for (int i = 0; i < beacons.Count; i++) {
                            if (beacons [i].Minor.Equals (b.Minor.ToString ())) {
                                beacons [i].CurrentDistance = Math.Round (b.Accuracy, 2);
                                SetProximity (b, beacons [i]);
                                exists = true;
                            }
                        }

                        if (!exists) {
                            var newBeacon = new BeaconItem {
                                Minor = b.Minor.ToString (),
                                Name = "",
                                CurrentDistance = Math.Round (b.Accuracy, 2)
                            };
                            SetProximity (b, newBeacon);
                            beacons.Add (newBeacon);
                        }
                    }
                }
            } else {
                System.Diagnostics.Debug.WriteLine ("!!!!!!!!!!!!!!!!!!!");
                System.Diagnostics.Debug.WriteLine ("NO BEACON IN REGION");
                System.Diagnostics.Debug.WriteLine ("!!!!!!!!!!!!!!!!!!!");
            }
        }