예제 #1
0
        public void RemoveSensor(ITtlSensor sensor)
        {
            if (sessionThreadControl.InvokeRequired)
            {
                sessionThreadControl.Invoke(new Action<ITtlSensor>(RemoveSensor), sensor);
                return;
            }

            int channelHandle = GetChannelHandle(sensor);
            session.DropChannel(channelHandle);
            return;
        }
예제 #2
0
        int GetChannelHandle(ITtlSensor sensor)
        {
            KeyValuePair<int, TtlSensor> pair = channelHandleToSensor.First((x) => x.Value == sensor);

            int channelHandle = pair.Key;
            return channelHandle;
        }
예제 #3
0
        public void RemoveSensor(ITtlSensor sensor)
        {
            if (sessionThreadControl.InvokeRequired)
            {
                sessionThreadControl.Invoke(new Action<ITtlSensor>(RemoveSensor), sensor);
                return;
            }

            // Get channel handle
            int channelHandle = channelToChannelHandle[sensor.Channel];

            // Get sensor list for the channel
            List<TtlSensor> sensors = channelHandleToSensor[channelHandle];

            // Remove sensor
            bool ret = sensors.Remove((TtlSensor)sensor);
            Debug.Assert(ret);

            sensorsCreated--;

            // Remove channel if no sensors left
            if (sensorsCreated == 0)
            {
                // Drop all channels (we can't drop the channels individually because the TTLLive SDK is broken)
                session.DropChannels();
                channelToChannelHandle.Clear();
                channelHandleToSensor.Clear();
            }

            return;
        }