String GenerateComplexDatatypeDefaultValue(ComplexDataType datatype, int indent) { String strIndent = RteFunctionsGenerator.FillStringForCount("", ' ', indent); String str = "{" + Environment.NewLine; for (int i = 0; i < datatype.Fields.Count; i++) { ComplexDataTypeField field = datatype.Fields[i]; if (IsDatatypeSimple(field.DataTypeGUID)) { str += RteFunctionsGenerator.GenerateDefaultValueForSimpleDataTypeField(field.Name, indent + 4); } else { ComplexDataType complexDt = AutosarApplication.GetInstance().ComplexDataTypes.FindObject(field.DataTypeGUID); str += RteFunctionsGenerator.FillStringForCount("", ' ', indent + 4) + "." + field.Name + " = " + Environment.NewLine; str += RteFunctionsGenerator.FillStringForCount("", ' ', indent + 4) + GenerateComplexDatatypeDefaultValue(complexDt, indent + 4); } if (i != datatype.Fields.Count - 1) { str += "," + Environment.NewLine; } } str += Environment.NewLine + strIndent + "}"; return(str); }
public void WriteSimpleDataType(StreamWriter writer, SimpleDataType datatype) { writer.WriteLine("/* Datatype : " + datatype.Name + " */"); /* Write limits */ String upperLimit = datatype.Name + "_UPPER_LIMIT"; string maxValue = datatype.MaxValue; string minValue = datatype.MinValue; if (datatype.GetBaseDataType() == AutosarApplication.GetInstance().BaseDataTypes.float32) { minValue = acceptFloatValue(datatype.MinValue); maxValue = acceptFloatValue(datatype.MaxValue); } writer.WriteLine(RteFunctionsGenerator.CreateDefine(upperLimit, maxValue)); String lowerLimit = datatype.Name + "_LOWER_LIMIT"; writer.WriteLine(RteFunctionsGenerator.CreateDefine(lowerLimit, minValue)); /* Write datatype */ String dataTypeName = AutosarApplication.GetInstance().GetDataTypeName(datatype.BaseDataTypeGUID); string typedef = RteFunctionsGenerator.FillStringForCount("typedef " + dataTypeName, ' ', 24); writer.WriteLine(typedef + datatype.Name + ";"); writer.WriteLine(""); /* Generate an array if it existis*/ ArrayDataTypeGenerator.GenerateArrayForDataType(writer, datatype); }
void GenerateComponentInstance(StreamWriter writer, ComponentInstance component) { ComponentDefenition compDefenition = component.ComponentDefenition; int elementsCount = compDefenition.Ports.PortsWithSenderInterface().Count + compDefenition.CDataDefenitions.Count + compDefenition.PerInstanceMemoryList.Count; if ((elementsCount == 0) && (compDefenition.MultipleInstantiation == false)) { return; // because nothing to generate. } writer.WriteLine("/* Component instance :" + component.Name + " */"); String compDefString = RteFunctionsGenerator.FillStringForCount(compDefenition.Name, ' ', 50); String compName = RteFunctionsGenerator.GenerateComponentName(component.Name); writer.WriteLine(compDefString + compName + " = "); writer.WriteLine("{"); /* Fill variables */ /* Component index */ if (compDefenition.MultipleInstantiation) { ComponentInstancesList compInstances = AutosarApplication.GetInstance().GetComponentInstanceByDefenition(compDefenition); int compIndex = compInstances.IndexOf(component); writer.WriteLine(" .index = " + compIndex.ToString() + ", "); } /* Pim*/ int count = 0; for (int i = 0; i < compDefenition.PerInstanceMemoryList.Count; i++) { PimDefenition pimDef = compDefenition.PerInstanceMemoryList[i]; count++; PimInstance pimInstance = component.PerInstanceMemories.GetPim(pimDef.GUID); writer.Write(" ." + RteFunctionsGenerator.GenerateRtePimFieldInComponentDefenitionStruct(component.ComponentDefenition, pimDef) + " = "); IGUID datatype = pimDef.DataType; if ((datatype is BaseDataType) || (datatype is SimpleDataType) || (datatype is EnumDataType)) { RteFunctionsGenerator.WriteDefaultValueForPimDefenition(writer, component, pimInstance); } else if (datatype is ArrayDataType) { writer.Write(" {{ "); if (!((datatype as ArrayDataType).DataType is PlainDataType)) { writer.Write("{ "); } writer.Write(" 0 "); if (!((datatype as ArrayDataType).DataType is PlainDataType)) { writer.Write("} "); } writer.Write(" }}"); } else if (datatype is ComplexDataType) { writer.Write("{ 0 }"); } if ((i != compDefenition.PerInstanceMemoryList.Count - 1) || ((compDefenition.CDataDefenitions.Count > 0) || (compDefenition.Ports.PortsWithSenderInterface().Count > 0))) { writer.WriteLine(","); } } /* CData */ for (int i = 0; i < compDefenition.CDataDefenitions.Count; i++) { count++; CDataDefenition cdataDef = compDefenition.CDataDefenitions[i]; CDataInstance cdataInstance = component.CDataInstances.GetCData(cdataDef.GUID); writer.Write(" ." + RteFunctionsGenerator.GenerateRteCDataFieldInComponentDefenitionStruct(component.ComponentDefenition, cdataDef) + " = "); IGUID datatype = cdataDef.DataType; if ((datatype is BaseDataType) || (datatype is SimpleDataType) || (datatype is EnumDataType)) { RteFunctionsGenerator.WriteDefaultValueForCDataDefenition(writer, component, cdataInstance); } else if (datatype is ArrayDataType) { writer.Write(" {{ "); if (!((datatype as ArrayDataType).DataType is PlainDataType)) { writer.Write("{ "); } writer.Write(" 0 "); if (!((datatype as ArrayDataType).DataType is PlainDataType)) { writer.Write("} "); } writer.Write(" }}"); } else if (datatype is ComplexDataType) { writer.WriteLine(" { 0 }"); } if ((i != compDefenition.CDataDefenitions.Count - 1) || (compDefenition.Ports.PortsWithSenderInterface().Count > 0)) { writer.WriteLine(","); } } /* Port */ PortDefenitionsList senderPorts = component.ComponentDefenition.Ports.PortsWithSenderInterface(); for (int i = 0; i < senderPorts.Count; i++) { SenderReceiverInterface srInterface = (SenderReceiverInterface)senderPorts[i].InterfaceDatatype; WriteZeroDefaultValueForSenderPort(writer, senderPorts[i], srInterface); if (i < senderPorts.Count - 1) { writer.WriteLine(","); } } writer.WriteLine(); writer.WriteLine("};"); writer.WriteLine(""); }