Example #1
0
        static SerializationTestEngine()
        {
            var    assembly = typeof(SerializationTestEngine).Assembly;
            string scheme;

            Stream stream = null;

            try
            {
                stream = assembly.GetManifestResourceStream(typeof(SerializationTestEngine), "AutogeneratedTests.Scheme.txt");
                using (var reader = new StreamReader(stream))
                {
                    stream = null;
                    scheme = reader.ReadToEnd();
                }
            }
            finally
            {
                if (stream != null)
                {
                    stream.Dispose();
                }
            }

            _uavcanTypeResolver = new TypeResolverFactory().Create(scheme);
        }
Example #2
0
        public static void ResolveNestedTypes(IUavcanType type, IUavcanTypeResolver typeResolver)
        {
            if (type == null)
            {
                throw new ArgumentNullException(nameof(type));
            }
            if (typeResolver == null)
            {
                throw new ArgumentNullException(nameof(typeResolver));
            }

            switch (type)
            {
            case MessageType t:
                ResolveNestedTypesCore(t.UnderlyingCompositeDsdlType, typeResolver);
                break;

            case ServiceType t:
                ResolveNestedTypesCore(t.Request, typeResolver);
                ResolveNestedTypesCore(t.Response, typeResolver);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(type));
            }
        }
Example #3
0
 static void ResolveNestedTypesCore(CompositeDsdlTypeBase t, IUavcanTypeResolver typeResolver)
 {
     foreach (var f in t.Fields)
     {
         if (f.Type is DsdlTypeReference reference)
         {
             var nestedType = typeResolver.ResolveType(reference.Namespace, reference.Name);
             f.Type = CastNestedType(nestedType);
         }
         else if (f.Type is ArrayDsdlType adt && adt.ElementType is DsdlTypeReference elementTypeReference)
         {
             var nestedType = typeResolver.ResolveType(elementTypeReference.Namespace, elementTypeReference.Name);
             adt.SetElementType(CastNestedType(nestedType));
         }
     }
 }
Example #4
0
 public DsdlSerializer(IUavcanTypeResolver schemeResolver)
 {
     SchemeResolver   = schemeResolver;
     ContractResolver = new ContractResolver(schemeResolver);
 }
 void ResolveTypes(IUavcanTypeResolver typeResolver)
 {
     _logMessageType   = (MessageType)typeResolver.ResolveType("uavcan.protocol.debug", "LogMessage");
     _panicMessageType = (MessageType)typeResolver.ResolveType("uavcan.protocol", "Panic");
 }
Example #6
0
 public UavcanInstance(IUavcanTypeResolver typeResolver)
 {
     TypeResolver     = typeResolver;
     Serializer       = new DsdlSerializer(typeResolver);
     _framesProcessor = new CanFramesProcessor(ShouldAcceptTransfer);
 }
Example #7
0
 public ContractResolver(IUavcanTypeResolver schemeResolver)
 {
     _schemeResolver = schemeResolver;
 }