private void LogEvent(object sender, ParticleEventResponse particeEvent)
        {
            ++eventCount;

            NoEventsProgress.IsActive = false;

            if (eventCount > 100)
                EventsListView.Items.RemoveAt(EventsListView.Items.Count - 1);
                
            EventsListView.Items.Insert(0, particeEvent);
        }
Exemple #2
0
        private void OnParticleEvent(object sender, ParticleEventResponse particeEvent)
        {
            var deviceEvent = new DeviceEvent
            {
                Type      = particeEvent.Name,
                Data      = particeEvent.Data,
                Timestamp = particeEvent.PublishedAt
            };

            _eventHistory.RecordEvent(deviceEvent);
            DeviceHadEvent?.Invoke(this, deviceEvent);
        }
Exemple #3
0
 /// <summary>
 /// New message for this group of event handlers
 /// </summary>
 /// <param name="sender">Object sending request</param>
 /// <param name="particeEvent">ParticleEventResponse</param>
 public void NewMessage(object sender, ParticleEventResponse particeEvent)
 {
     try {
         if (HasHandlers)
         {
             OnMessage(sender, particeEvent);
         }
     }
     catch
     {
     }
 }
Exemple #4
0
 /// <summary>
 /// A ParticleEventHandler to look for the specific event that this device is online
 /// </summary>
 /// <param name="sender">Object sending request</param>
 /// <param name="particeEvent">ParticleEventResponse</param>
 private void CheckForOnlineEvent(object sender, ParticleEventResponse particeEvent)
 {
     if (particeEvent.Name.Equals("spark/status") && particeEvent.Data.Equals("online"))
     {
         UnsubscribeFromEvent(onlineEventListenerID);
         isFlashing = false;
         particleCloud.SynchronizationContextPost(async a =>
         {
             UpdateState();
             await RefreshAsync();
         }, null);
     }
 }
        private void LogEvent(object sender, ParticleEventResponse particeEvent)
        {
            ++eventCount;

            NoEventsProgress.IsActive = false;

            if (eventCount > 100)
            {
                EventsListView.Items.RemoveAt(EventsListView.Items.Count - 1);
            }

            EventsListView.Items.Insert(0, particeEvent);
        }
        private async void SparkMessages(object sender, ParticleEventResponse particeEvent)
        {
            var particleDevice = TinkerData.Devices.FirstOrDefault(device => device.Id == particeEvent.DeviceId);

            if (particleDevice == null)
            {
                return;
            }

            switch (particeEvent.Name)
            {
            case "spark/status":
                if (particleDevice.IsFlashing && particeEvent.Data.Equals("online"))
                {
                    particleDevice.FlagFlashStatusChange(true);
                }

                bool success = await particleDevice.RefreshAsync();

                if (success)
                {
                    var sortedDevices = TinkerData.Devices.OrderByDescending(device => device.Connected).ThenBy(device => device.Name).ToList();
                    var newIndex      = sortedDevices.IndexOf(particleDevice);
                    var oldIndex      = TinkerData.Devices.IndexOf(particleDevice);
                    if (newIndex != oldIndex)
                    {
                        TinkerData.Devices.Remove(particleDevice);
                        TinkerData.Devices.Insert(newIndex, particleDevice);
                    }
                }
                break;

            case "spark/flash/status":
                if (particeEvent.Data.StartsWith("started"))
                {
                    particleDevice.FlagFlashStatusChange();
                }

                break;
            }
        }