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); }
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)); } }
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)); } } }
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"); }
public UavcanInstance(IUavcanTypeResolver typeResolver) { TypeResolver = typeResolver; Serializer = new DsdlSerializer(typeResolver); _framesProcessor = new CanFramesProcessor(ShouldAcceptTransfer); }
public ContractResolver(IUavcanTypeResolver schemeResolver) { _schemeResolver = schemeResolver; }