Exemplo n.º 1
0
        private byte[] SerialiseObject(ObjectDefinition objectDefinition, Model.Object item)
        {
            byte[]       result      = null;
            TlvWriter    arrayWriter = null;
            MemoryStream arraystream = null;

            using (MemoryStream steam = new MemoryStream())
            {
                TlvWriter writer = new TlvWriter(steam);
                foreach (Property property in item.Properties)
                {
                    PropertyDefinition propertyDefinition = objectDefinition.GetProperty(property.PropertyID);
                    if (propertyDefinition != null)
                    {
                        if (propertyDefinition.IsCollection)
                        {
                            if (property.Values != null)
                            {
                                ushort identifier;
                                if (ushort.TryParse(propertyDefinition.PropertyID, out identifier))
                                {
                                    if (arrayWriter == null)
                                    {
                                        arraystream = new MemoryStream();
                                        arrayWriter = new TlvWriter(arraystream);
                                    }
                                    arraystream.SetLength(0);
                                    foreach (PropertyValue propertyValue in property.Values)
                                    {
                                        WriteValue(arrayWriter, TTlvTypeIdentifier.ResourceInstance, propertyDefinition.DataType, propertyValue.PropertyValueID, propertyValue.Value);
                                    }
                                    byte[] arrayItems = arraystream.ToArray();
                                    writer.Write(TTlvTypeIdentifier.MultipleResources, identifier, arrayItems);
                                }
                            }
                        }
                        else if (property.Value != null)
                        {
                            WriteValue(writer, TTlvTypeIdentifier.ResourceWithValue, propertyDefinition.DataType, propertyDefinition.PropertyID, property.Value.Value);
                        }
                    }
                }
                result = steam.ToArray();
            }
            return(result);
        }
Exemplo n.º 2
0
        public override void Serialise(TlvWriter writer)
        {
            ushort identifier;
            if (ushort.TryParse(Name, out identifier))
            {
                using (MemoryStream steam = new MemoryStream())
                {
                    TlvWriter childWriter = new TlvWriter(steam);
                    foreach (DateTimeResource item in this.Children)
                    {
                        item.Serialise(childWriter, true);
                    }
                    writer.Write(TTlvTypeIdentifier.MultipleResources, identifier, steam.ToArray());
                }

            }
        }
Exemplo n.º 3
0
        private void WriteValue(TlvWriter writer, TTlvTypeIdentifier typeIdentifier, TPropertyDataType dataType, string instanceID, string value)
        {
            ushort identifier;
            if (ushort.TryParse(instanceID, out identifier))
            {

                switch (dataType)
                {
                    case TPropertyDataType.NotSet:
                        break;
                    case TPropertyDataType.String:
                        writer.Write(typeIdentifier, identifier, value);
                        break;
                    case TPropertyDataType.Boolean:
                        bool boolValue;
                        if (bool.TryParse(value, out boolValue))
                            writer.Write(typeIdentifier, identifier, boolValue);
                        break;
                    case TPropertyDataType.Integer:
                        long longValue;
                        if (long.TryParse(value, out longValue))
                            writer.Write(typeIdentifier, identifier, longValue);
                        break;
                    case TPropertyDataType.Float:
                        double doubleValue;
                        if (double.TryParse(value, out doubleValue))
                            writer.Write(typeIdentifier, identifier, doubleValue);
                        break;
                    case TPropertyDataType.DateTime:
                        try
                        {
                            DateTime dateTimeValue = System.Xml.XmlConvert.ToDateTime(value, System.Xml.XmlDateTimeSerializationMode.Utc);
                            writer.Write(typeIdentifier, identifier, dateTimeValue);
                        }
                        catch
                        {

                        }
                        break;
                    case TPropertyDataType.Opaque:
                        byte[] buffer = Convert.FromBase64String(value);
                        writer.Write(typeIdentifier, identifier, buffer);
                        break;
                    case TPropertyDataType.Object:
                        break;
                    default:
                        break;
                }
            }
        }
Exemplo n.º 4
0
 private byte[] SerialiseObject(ObjectDefinition objectDefinition, Model.Object item)
 {
     byte[] result = null;
     TlvWriter arrayWriter = null;
     MemoryStream arraystream = null;
     using (MemoryStream steam = new MemoryStream())
     {
         TlvWriter writer = new TlvWriter(steam);
         foreach (Property property in item.Properties)
         {
             PropertyDefinition propertyDefinition = objectDefinition.GetProperty(property.PropertyID);
             if (propertyDefinition != null)
             {
                 if (propertyDefinition.IsCollection)
                 {
                     if (property.Values != null)
                     {
                         ushort identifier;
                         if (ushort.TryParse(propertyDefinition.PropertyID, out identifier))
                         {
                             if (arrayWriter == null)
                             {
                                 arraystream = new MemoryStream();
                                 arrayWriter = new TlvWriter(arraystream);
                             }
                             arraystream.SetLength(0);
                             foreach (PropertyValue propertyValue in property.Values)
                             {
                                 WriteValue(arrayWriter, TTlvTypeIdentifier.ResourceInstance, propertyDefinition.DataType, propertyValue.PropertyValueID, propertyValue.Value);
                             }
                             byte[] arrayItems = arraystream.ToArray();
                             writer.Write(TTlvTypeIdentifier.MultipleResources, identifier, arrayItems);
                         }
                     }
                 }
                 else if (property.Value != null)
                 {
                     WriteValue(writer, TTlvTypeIdentifier.ResourceWithValue, propertyDefinition.DataType, propertyDefinition.PropertyID, property.Value.Value);
                 }
             }
         }
         result = steam.ToArray();
     }
     return result;
 }
Exemplo n.º 5
0
 public void Serialise(TlvWriter writer, bool resourceInstance)
 {
     ushort identifier;
     if (ushort.TryParse(Name, out identifier))
     {
         TTlvTypeIdentifier typeIdentifier = TTlvTypeIdentifier.ResourceWithValue;
         if (resourceInstance)
             typeIdentifier = TTlvTypeIdentifier.ResourceInstance;
         writer.Write(typeIdentifier, identifier, Value);
     }
 }
Exemplo n.º 6
0
        /*

        public bool NotificationStoringWhenOffline { get; set; }
        public TBindingMode Binding { get; set; }
        */
        public void Serialise(TlvWriter writer)
        {
            writer.Write(TTlvTypeIdentifier.ResourceWithValue, (ushort)ResourceID.ShortServerID, ShortServerID);
            if (Lifetime > 0)
            {
                writer.Write(TTlvTypeIdentifier.ResourceWithValue, (ushort)ResourceID.Lifetime, Lifetime);
            }
            if (DefaultMinimumPeriod.HasValue)
            {
                writer.Write(TTlvTypeIdentifier.ResourceWithValue, (ushort)ResourceID.DefaultMinimumPeriod, DefaultMinimumPeriod.Value);
            }
            if (DefaultMaximumPeriod.HasValue)
            {
                writer.Write(TTlvTypeIdentifier.ResourceWithValue, (ushort)ResourceID.DefaultMaximumPeriod, DefaultMaximumPeriod.Value);
            }
            if (DisableTimeout.HasValue)
            {
                writer.Write(TTlvTypeIdentifier.ResourceWithValue, (ushort)ResourceID.DisableTimeout, DisableTimeout.Value);
            }
            writer.Write(TTlvTypeIdentifier.ResourceWithValue, (ushort)ResourceID.NotificationStoringWhenOffline, NotificationStoringWhenOffline);
            string binding = null;
            switch (Binding)
            {
                case TBindingMode.NotSet:
                    break;
                case TBindingMode.UDP:
                    binding = "U";
                    break;
                case TBindingMode.QueuedUDP:
                    binding = "UQ";
                    break;
                case TBindingMode.SMS:
                    binding = "S";
                    break;
                case TBindingMode.QueuedSMS:
                    binding = "SQ";
                    break;
                case TBindingMode.UDPSMS:
                    binding = "US";
                    break;
                case TBindingMode.QueuedUDPSMS:
                    binding = "UQS";
                    break;
                default:
                    break;
            }
            writer.Write(TTlvTypeIdentifier.ResourceWithValue, (ushort)ResourceID.Binding, binding);
        }
Exemplo n.º 7
0
        protected override void DoGet(CoapExchange exchange)
        {
            Response response = null;

            if (exchange.Request.Observe.HasValue && exchange.Request.Observe.Value == 0)
            {
                response = Response.CreateResponse(exchange.Request, StatusCode.Content);
                response.MaxAge = 86400;
            }
            else
                response = Response.CreateResponse(exchange.Request, StatusCode.Content);

            using (MemoryStream steam = new MemoryStream())
            {
                using (MemoryStream itemSteam = new MemoryStream())
                {
                    TlvWriter writer = new TlvWriter(steam);
                    TlvWriter itemWriter = new TlvWriter(itemSteam);

                    foreach (LWM2MResource item in Children)
                    {
                        if (ModifiedResource == null || ModifiedResource == item)
                        {
                            itemSteam.SetLength(0);
                            ushort identifier = ushort.Parse(item.Name);
                            item.Serialise(itemWriter);
                            writer.Write(TTlvTypeIdentifier.ObjectInstance, identifier, itemSteam.ToArray());
                        }
                    }
                    ModifiedResource = null;
                    response.Payload = steam.ToArray();
                }
            }
            response.ContentType = TlvConstant.CONTENT_TYPE_TLV;
            exchange.Respond(response);
        }
Exemplo n.º 8
0
 public void Serialise(TlvWriter writer)
 {
     if (!string.IsNullOrEmpty(ServerURI))
     {
         writer.Write(TTlvTypeIdentifier.ResourceWithValue, (ushort)ResourceID.ServerURI, ServerURI);
     }
     writer.Write(TTlvTypeIdentifier.ResourceWithValue, (ushort)ResourceID.BootstrapServer, BootstrapServer);
     writer.Write(TTlvTypeIdentifier.ResourceWithValue, (ushort)ResourceID.SecurityMode, (int)SecurityMode);
     if (ClientPublicKey != null)
     {
         writer.Write(TTlvTypeIdentifier.ResourceWithValue, (ushort)ResourceID.ClientPublicKey, ClientPublicKey);
     }
     if (ServerPublicKey != null)
     {
         writer.Write(TTlvTypeIdentifier.ResourceWithValue, (ushort)ResourceID.ServerPublicKey, ServerPublicKey);
     }
     if (SecretKey != null)
     {
         writer.Write(TTlvTypeIdentifier.ResourceWithValue, (ushort)ResourceID.SecretKey, SecretKey);
     }
     if (SMSSecurityMode != TSMSSecurityMode.NotSet)
         writer.Write(TTlvTypeIdentifier.ResourceWithValue, (ushort)ResourceID.SMSSecurityMode, (int)SMSSecurityMode);
     if (SMSBindingKeyParameters != null)
     {
         writer.Write(TTlvTypeIdentifier.ResourceWithValue, (ushort)ResourceID.SMSBindingKeyParameters, SMSBindingKeyParameters);
     }
     if (SMSBindingSecretKeys != null)
     {
         writer.Write(TTlvTypeIdentifier.ResourceWithValue, (ushort)ResourceID.SMSBindingSecretKeys, SMSBindingSecretKeys);
     }
     if (ServerSMSNumber.HasValue)
     {
         writer.Write(TTlvTypeIdentifier.ResourceWithValue, (ushort)ResourceID.ServerSMSNumber, ServerSMSNumber.Value);
     }
     if (ShortServerID > 0)
     {
         writer.Write(TTlvTypeIdentifier.ResourceWithValue, (ushort)ResourceID.ShortServerID, ShortServerID);
     }
     if (ClientHoldOffTime.HasValue)
     {
         writer.Write(TTlvTypeIdentifier.ResourceWithValue, (ushort)ResourceID.ClientHoldOffTime, ClientHoldOffTime.Value);
     }
 }
Exemplo n.º 9
0
        private void WriteValue(TlvWriter writer, TTlvTypeIdentifier typeIdentifier, TPropertyDataType dataType, string instanceID, string value)
        {
            ushort identifier;

            if (ushort.TryParse(instanceID, out identifier))
            {
                switch (dataType)
                {
                case TPropertyDataType.NotSet:
                    break;

                case TPropertyDataType.String:
                    writer.Write(typeIdentifier, identifier, value);
                    break;

                case TPropertyDataType.Boolean:
                    bool boolValue;
                    if (bool.TryParse(value, out boolValue))
                    {
                        writer.Write(typeIdentifier, identifier, boolValue);
                    }
                    break;

                case TPropertyDataType.Integer:
                    long longValue;
                    if (long.TryParse(value, out longValue))
                    {
                        writer.Write(typeIdentifier, identifier, longValue);
                    }
                    break;

                case TPropertyDataType.Float:
                    double doubleValue;
                    if (double.TryParse(value, out doubleValue))
                    {
                        writer.Write(typeIdentifier, identifier, doubleValue);
                    }
                    break;

                case TPropertyDataType.DateTime:
                    try
                    {
                        DateTime dateTimeValue = System.Xml.XmlConvert.ToDateTime(value, System.Xml.XmlDateTimeSerializationMode.Utc);
                        writer.Write(typeIdentifier, identifier, dateTimeValue);
                    }
                    catch
                    {
                    }
                    break;

                case TPropertyDataType.Opaque:
                    byte[] buffer = Convert.FromBase64String(value);
                    writer.Write(typeIdentifier, identifier, buffer);
                    break;

                case TPropertyDataType.Object:
                    break;

                default:
                    break;
                }
            }
        }