Пример #1
0
 private static void TestAnalogEvent(AnalogEvent e, ref XRControllerAnalog analog, XRControllerSide side)
 {
     if (e != null && analog.value != 0)
     {
         e(side, analog.value);
     }
 }
Пример #2
0
        /// <summary>
        /// Sets up the notifications;
        /// Will call Status
        /// </summary>
        /// <param name="notifyType"></param>
        /// <returns>true if the notify was set up. </returns>

        public async Task <bool> NotifyAnalogAsync(GattClientCharacteristicConfigurationDescriptorValue notifyType = GattClientCharacteristicConfigurationDescriptorValue.Notify)
        {
            if (!await EnsureCharacteristicAsync())
            {
                return(false);
            }
            var ch = Characteristics[4];

            if (ch == null)
            {
                return(false);
            }
            GattCommunicationStatus result = GattCommunicationStatus.ProtocolError;

            try
            {
                result = await ch.WriteClientCharacteristicConfigurationDescriptorAsync(notifyType);

                if (!NotifyAnalog_ValueChanged_Set)
                {
                    // Only set the event callback once
                    NotifyAnalog_ValueChanged_Set = true;
                    ch.ValueChanged += (sender, args) =>
                    {
                        var datameaning = "I32^100000_/|FIXED|A1|volts I32^100000_/|FIXED|A2|volts I32^100000_/|FIXED|A3|volts I32^100000_/|FIXED|A4|volts";
                        var parseResult = BluetoothDeviceController.BleEditor.ValueParser.Parse(args.CharacteristicValue, datameaning);

                        Analog_A1 = parseResult.ValueList.GetValue("A1").AsDouble;

                        Analog_A2 = parseResult.ValueList.GetValue("A2").AsDouble;

                        Analog_A3 = parseResult.ValueList.GetValue("A3").AsDouble;

                        Analog_A4 = parseResult.ValueList.GetValue("A4").AsDouble;

                        AnalogEvent?.Invoke(parseResult);
                    };
                }
            }
            catch (Exception e)
            {
                Status.ReportStatus($"NotifyAnalog: {e.Message}", result);
                return(false);
            }
            Status.ReportStatus($"NotifyAnalog: set notification", result);

            return(true);
        }
Пример #3
0
    void Update()
    {
        byte[] bytes = myDevice.readQueue();
        if (bytes != null && bytes.Length > 0)
        {
            foreach (byte b in bytes)
            {
                incoming.Enqueue(b);
            }
        }

        Event evt = ProcessQueue();

        if (evt != null)
        {
            if (evt.Type == EventTypes.AnalogValue)
            {
                AnalogEvent analog = evt as AnalogEvent;

                AnalogInputs[analog.AnalogInput].Value = analog.AnalogValue;

                if (AnalogInputEvent != null)
                {
                    AnalogInputEvent.Invoke(this, new AnalogInputChangedArgs(analog));
                }
            }
            else if (evt.Type == EventTypes.InputChanged)
            {
                InputEvent input = evt as InputEvent;
                Debug.Log("Digital: " + input.DigitalInput.ToString() + " " + input.State);

                DigitalInputs[input.DigitalInput].State = input.State;

                if (DigitalInputEvent != null)
                {
                    DigitalInputEvent.Invoke(this, new DigitalInputChangedArgs(input));
                }
            }
        }
    }
Пример #4
0
        public static Event parse(byte[] bytes)
        {
            Event evt       = null;
            byte  eventType = bytes[EventOffsetType];

            switch (eventType)
            {
            case EventInputChanged:
                evt = new InputEvent(bytes);
                break;

            case EventAnalogValue:
                evt = new AnalogEvent(bytes);
                break;

            default:
                Debug.LogWarning("Invalid event type: " + eventType.ToString("X"));
                break;
            }

            return(evt);
        }
Пример #5
0
 public GamePadTriggerBinding(string alias, Trigger trigger, AnalogEvent aEvent, AnalogData aData, AnalogBindingDelegate aDel)
     : base(alias, aEvent, aData, aDel)
 {
     Trigger = trigger;
 }
Пример #6
0
 public GamePadTriggerBinding(string alias, Trigger trigger, AnalogEvent aEvent, AnalogData aData)
     : this(alias, trigger, aEvent, aData, null)
 {
 }
Пример #7
0
 protected AnalogBinding(string alias, AnalogEvent aEvent, AnalogData aData, AnalogBindingDelegate aDel)
     : this(alias, aEvent, aData)
 {
     Callback = aDel;
 }
Пример #8
0
 protected AnalogBinding(string alias, AnalogEvent aEvent, AnalogData aData)
     : base(alias)
 {
     AnalogEvent = aEvent;
     AnalogData  = aData;
 }
 public GamePadThumbStickBinding(string alias, ThumbStick tStick, AnalogEvent aEvent, AnalogData aData, AnalogBindingDelegate aDel)
     : base(alias, aEvent, aData, aDel)
 {
     Stick = tStick;
 }
 public GamePadThumbStickBinding(string alias, ThumbStick tStick, AnalogEvent aEvent, AnalogData aData)
     : this(alias, tStick, aEvent, aData, null)
 {
 }