private static void TestAnalogEvent(AnalogEvent e, ref XRControllerAnalog analog, XRControllerSide side) { if (e != null && analog.value != 0) { e(side, analog.value); } }
/// <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); }
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)); } } } }
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); }
public GamePadTriggerBinding(string alias, Trigger trigger, AnalogEvent aEvent, AnalogData aData, AnalogBindingDelegate aDel) : base(alias, aEvent, aData, aDel) { Trigger = trigger; }
public GamePadTriggerBinding(string alias, Trigger trigger, AnalogEvent aEvent, AnalogData aData) : this(alias, trigger, aEvent, aData, null) { }
protected AnalogBinding(string alias, AnalogEvent aEvent, AnalogData aData, AnalogBindingDelegate aDel) : this(alias, aEvent, aData) { Callback = aDel; }
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) { }