/// <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}");
            }
        }
Example #5
0
        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}");
        }
Example #6
0
        /// <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}");
        }
Example #7
0
        /// <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)
 {
 }
Example #9
0
 public DataRefEventArgs(XPlaneConnector.DataRefElement dataRef, float value)
 {
     DataRef = dataRef;
     Value   = value;
 }
 public void SetDataRefValue(DataRefElement dataref, float value)
 {
     SetDataRefValue(dataref.DataRef, value);
 }