Пример #1
0
        /// <summary>
        /// <see cref="Field.ExportAsXmppSensorData"/>
        /// </summary>
        public override void ExportAsXmppSensorData(System.Xml.XmlWriter w)
        {
            w.WriteStartElement("dateTime");

            this.ExportAsXmppSensorDataCommonAttributes(w);

            w.WriteAttributeString("value", XmlUtilities.DateTimeToString(this.value));

            w.WriteEndElement();
        }
Пример #2
0
        /// <summary>
        /// <see cref="Field.ExportAsTurtleSensorData"/>
        /// </summary>
        public override void ExportAsTurtleSensorData(TurtleWriter w)
        {
            w.WritePredicateUri("cl", "field");
            w.StartBlankNode();

            this.ExportAsTurtleSensorDataCommonAttributes(w);

            w.WritePredicateUri("cl", "dateTime");
            w.WriteObjectLiteralTyped(XmlUtilities.DateTimeToString(this.value), "xsd", "dateTime");

            w.EndBlankNode();
        }
Пример #3
0
        /// <summary>
        /// Sets a date & time-valued control parameter
        /// </summary>
        /// <param name="Jid">JID of controller</param>
        /// <param name="ParameterName">Parameter name.</param>
        /// <param name="Value">Value to set.</param>
        /// <param name="OnlyDatePart">If only the date part should be set (true) or if both date and time parts should be set (false).</param>
        /// <param name="Nodes">Node references.</param>
        /// <param name="ServiceToken">Service token.</param>
        /// <param name="DeviceToken">Device token.</param>
        /// <param name="UserToken">User token.</param>
        public void Set(string Jid, string ParameterName, DateTime Value, bool OnlyDatePart, NodeReference[] Nodes, string ServiceToken, string DeviceToken, string UserToken)
        {
            StringBuilder sb = new StringBuilder();
            XmlWriter     w  = XmlWriter.Create(sb, XmlUtilities.GetXmlWriterSettings(false, true, true));

            w.WriteStartElement("set", "urn:xmpp:iot:control");

            if (!string.IsNullOrEmpty(ServiceToken))
            {
                w.WriteAttributeString("serviceToken", ServiceToken);
            }

            if (!string.IsNullOrEmpty(DeviceToken))
            {
                w.WriteAttributeString("deviceToken", DeviceToken);
            }

            if (!string.IsNullOrEmpty(UserToken))
            {
                w.WriteAttributeString("userToken", UserToken);
            }

            ProvisioningServer.WriteNodes(w, Nodes);

            if (OnlyDatePart)
            {
                w.WriteStartElement("date");
                w.WriteAttributeString("name", ParameterName);
                w.WriteAttributeString("value", XmlUtilities.DateToString(Value));
                w.WriteEndElement();
            }
            else
            {
                w.WriteStartElement("dateTime");
                w.WriteAttributeString("name", ParameterName);
                w.WriteAttributeString("value", XmlUtilities.DateTimeToString(Value));
                w.WriteEndElement();
            }

            w.WriteEndElement();
            w.Flush();

            client.SendMessage(Jid, string.Empty, MessageType.Normal, sb.ToString());
        }
Пример #4
0
        /// <summary>
        /// Requests sensor data
        /// </summary>
        /// <param name="Jid">JID of device.</param>
        /// <param name="Types">Types.</param>
        /// <param name="Nodes">Nodes.</param>
        /// <param name="FieldNames">Field names.</param>
        /// <param name="From">From what point in time to read.</param>
        /// <param name="To">To what point in time to read.</param>
        /// <param name="When">When to read the data.</param>
        /// <param name="ServiceToken">Service token.</param>
        /// <param name="DeviceToken">Device token.</param>
        /// <param name="UserToken">User token.</param>
        /// <param name="Callback">Callback method. May be called multiple times for each request.</param>
        /// <param name="State">State object to pass on to the callback method.</param>
        /// <param name="Timeout">Timeout, in seconds.</param>
        /// <returns>Sequence number of the request.</returns>
        public int RequestData(string Jid, ReadoutType Types, NodeReference[] Nodes, string[] FieldNames, DateTime?From, DateTime?To, DateTime?When,
                               string ServiceToken, string DeviceToken, string UserToken, SensorDataCallback Callback, object State, int Timeout)
        {
            StringBuilder       sb        = new StringBuilder();
            XmlWriter           w         = XmlWriter.Create(sb, XmlUtilities.GetXmlWriterSettings(false, true, true));
            SensorDataEventArgs e         = new SensorDataEventArgs(State, Callback, false, Timeout);
            DateTime            TimeoutTP = DateTime.Now.AddSeconds(Timeout);
            int SeqNr;

            lock (this.synchObj)
            {
                do
                {
                    SeqNr = this.seqNr++;
                } while (this.receiving.ContainsKey(SeqNr));

                while (this.byTimeout.ContainsKey(TimeoutTP))
                {
                    TimeoutTP = TimeoutTP.AddTicks(gen.Next(1, 10));
                }

                this.byTimeout [TimeoutTP] = e;
                e.Timeout = TimeoutTP;
                e.SeqNr   = SeqNr;

                if (this.timer == null)
                {
                    this.timer = new Timer(this.TimerCallback, null, 1000, 1000);
                }
            }

            w.WriteStartElement("req", "urn:xmpp:iot:sensordata");
            w.WriteAttributeString("seqnr", SeqNr.ToString());

            if (!string.IsNullOrEmpty(ServiceToken))
            {
                w.WriteAttributeString("serviceToken", ServiceToken);
            }

            if (!string.IsNullOrEmpty(DeviceToken))
            {
                w.WriteAttributeString("deviceToken", DeviceToken);
            }

            if (!string.IsNullOrEmpty(UserToken))
            {
                w.WriteAttributeString("userToken", UserToken);
            }

            if (From.HasValue)
            {
                w.WriteAttributeString("from", XmlUtilities.DateTimeToString(From.Value));
            }

            if (To.HasValue)
            {
                w.WriteAttributeString("to", XmlUtilities.DateTimeToString(To.Value));
            }

            if (When.HasValue)
            {
                w.WriteAttributeString("when", XmlUtilities.DateTimeToString(When.Value));
            }

            ProvisioningServer.WriteReadoutTypes(w, Types);
            ProvisioningServer.WriteNodes(w, Nodes);
            ProvisioningServer.WriteFields(w, FieldNames);

            w.WriteEndElement();
            w.Flush();

            client.IqGet(sb.ToString(), Jid, this.ReqResponse, e, "Sensor Data Request");

            return(SeqNr);
        }
Пример #5
0
 /// <summary>
 /// <see cref="Field.ExportContent"/>
 /// </summary>
 protected override void ExportContent(System.Xml.XmlWriter w)
 {
     w.WriteAttributeString("value", XmlUtilities.DateTimeToString(this.value));
 }
Пример #6
0
 /// <summary>
 /// Converts a value to a string suitable for use in an XMPP data form.
 /// </summary>
 /// <param name="Value">Value to export.</param>
 protected override string ValueToString(DateTime Value)
 {
     return(XmlUtilities.DateTimeToString(Value));
 }