/// <summary> /// Subscribe to a DataRef, notification will be sent every time the value changes /// </summary> /// <param name="dataref">DataRef to subscribe to</param> /// <param name="frequency">Times per seconds X-Plane will be seding this value</param> /// <param name="onchange">Callback invoked every time a change in the value is detected</param> public void Subscribe(StringDataRefElement dataref, int frequency = -1, Action <StringDataRefElement, string> onchange = null) { //if (onchange != null) // dataref.OnValueChange += (e, v) => { onchange(e, v); }; //Subscribe((DataRefElement)dataref, frequency); if (dataref == null) { throw new ArgumentNullException(nameof(dataref)); } dataref.OnValueChange += (e, v) => { onchange(e, v); }; for (var c = 0; c < dataref.StringLenght; c++) { var arrayElementDataRef = new DataRefElement { DataRef = $"{dataref.DataRef}[{c}]", Description = "" }; var currentIndex = c; Subscribe(arrayElementDataRef, frequency, (e, v) => { var character = Convert.ToChar(Convert.ToInt32(v)); dataref.Update(currentIndex, character); }); } }
/// <summary> /// Informs X-Plane to change the value of the DataRef /// </summary> /// <param name="dataref">DataRef that will be changed</param> /// <param name="value">New value of the DataRef</param> public void SetDataRefValue(DataRefElement dataref, float value) { if (dataref == null) { throw new ArgumentNullException(nameof(dataref)); } SetDataRefValue(dataref.DataRef, value); }
public void Subscribe(DataRefElement dataref, int frequency = -1, Action <DataRefElement, float> onchange = null) { if (onchange != null) { dataref.OnValueChange += (e, v) => { onchange(e, v); } } ; if (frequency > 0) { dataref.Frequency = frequency; } DataRefs.Add(dataref); }
private void RequestDataRef(DataRefElement element) { if (client != null) { var dg = new XPDatagram(); dg.Add("RREF"); dg.Add(element.Frequency); dg.Add(element.Id); dg.Add(element.DataRef); dg.FillTo(413); client.Send(dg.Get(), dg.Len); OnLog?.Invoke($"Requested {element.DataRef}@{element.Frequency}Hz with Id:{element.Id}"); } }
private void RequestDataRef(DataRefElement element) { if (client == null) { return; } var dg = new XPDatagram(413); dg.Add("RREF"); dg.Add(element.Frequency); dg.Add(element.Id); dg.Add(element.DataRef); client.Send(dg.Bytes, dg.Bytes.Length); OnLog?.Invoke($"Requested {element.DataRef}@{element.Frequency}Hz with Id:{element.Id}"); }
/// <summary> /// Informs X-Plane to stop sending this DataRef /// </summary> /// <param name="dataref">DataRef to unsubscribe from</param> public void Unsubscribe(DataRefElement dataref) { if (!DataRefs.ContainsKey(dataref.Id)) { return; } var dr = DataRefs[dataref.Id]; var dg = new XPDatagram(413); dg.Add("RREF"); dg.Add(dr.Id); dg.Add(0); dg.Add(dataref.DataRef); client.Send(dg.Bytes, dg.Bytes.Length); DataRefs.Remove(dr.Id); OnLog?.Invoke($"Unsubscribed from {dataref.DataRef}"); }
/// <summary> /// Subscribe to a DataRef, notification will be sent every time the value changes /// </summary> /// <param name="dataref">DataRef to subscribe to</param> /// <param name="frequency">Times per seconds X-Plane will be seding this value</param> /// <param name="onchange">Callback invoked every time a change in the value is detected</param> public void Subscribe(DataRefElement dataref, int frequency = -1, Action <DataRefElement, float> onchange = null) { if (dataref == null) { throw new ArgumentNullException(nameof(dataref)); } if (onchange != null) { dataref.OnValueChange = onchange; } if (frequency > 0) { dataref.Frequency = frequency; } DataRefs.Add(dataref.Id, dataref); }
private void Subscribe(DataRefElement dataref, int frequency = -1) { }
public DataRefEventArgs(XPlaneConnector.DataRefElement dataRef, float value) { DataRef = dataRef; Value = value; }
public void SetDataRefValue(DataRefElement dataref, float value) { SetDataRefValue(dataref.DataRef, value); }