void WritePIMDefaultValues(StreamWriter writer, PimInstance pim) { String FieldValue = " " + TestArtefactsVariable + "." + RteFunctionsGenerator.GenerateShortPimFunctionName(pim.Defenition) + ".data"; IGUID datatype = pim.Defenition.DataType; if ((datatype is BaseDataType) || (datatype is SimpleDataType) || (datatype is EnumDataType)) { String defValue = GetDefaultValueForUnComplexDataType(pim); writer.WriteLine(FieldValue + " = " + defValue + ";"); } else if (datatype is ComplexDataType) { for (int defValueIndex = 0; defValueIndex < pim.DefaultValues.Count; defValueIndex++) { ComplexDataType complexDataType = (ComplexDataType)datatype; PimDefaultValue defaultValue = pim.DefaultValues[defValueIndex]; ComplexDataTypeField dataTypefield = complexDataType.Fields.FindObject(defaultValue.FieldGuid); if (dataTypefield != null) { String dataToWrite = FieldValue + "." + dataTypefield.Name + " = " + defaultValue.DefaultValue + ";"; writer.WriteLine(dataToWrite); } } } }
private void datatypesListBox_DoubleClick(object sender, EventArgs e) { if (datatypesListBox.SelectedItem is IGUID) { SelectedDatatype = datatypesListBox.SelectedItem as IGUID; this.DialogResult = System.Windows.Forms.DialogResult.OK; } }
TreeViewItem CreateItemsForGuid(TreeViewItem root, IGUID guid) { TreeViewItem newTreeItem = new TreeViewItem(); newTreeItem.Header = guid.Name; newTreeItem.FontWeight = FontWeights.Normal; newTreeItem.Tag = guid; root.Items.Add(newTreeItem); return(newTreeItem); }
static ArrayDataType GetArrayDatatypeForDatatype(IGUID datatype) { foreach (ArrayDataType arrayDT in AutosarApplication.GetInstance().ArrayDataTypes) { if (arrayDT.DataTypeGUID.Equals(datatype)) { return(arrayDT); } } return(null); }
public BaseDataType GetBaseDataType() { IGUID baseGuidObj = AutosarApplication.GetInstance().GetDataType(BaseDataTypeGUID); if (baseGuidObj != null) { return((BaseDataType)baseGuidObj); } else { return(null); } }
//public TreeViewItem FindItem(TreeViewItem root, IGUID guidObject) //{ // if (root == null) // { // foreach (TreeViewItem treeViewItem in Items) // { // /* Item is not found. Try to find in their children */ // return FindItem(treeViewItem, guidObject); // } // } // else // { // IGUID treeGuidObj = root.Tag as IGUID; // if (treeGuidObj != null) // { // if (treeGuidObj.GUID.Equals(guidObject.GUID)) // { // return root; // } // } // foreach (TreeViewItem treeViewItem in root.Items) // { // treeGuidObj = treeViewItem.Tag as IGUID; // if (treeGuidObj != null) // { // if (treeGuidObj.GUID.Equals(guidObject.GUID)) // { // return treeViewItem; // } // } // /* Item is not found. Try to find in their children */ // return FindItem(treeViewItem, guidObject); // } // } // return null; //} public bool DoesGuidExistInProperties(List <PropertyInfo> properties, IGUID guidObject) { foreach (PropertyInfo property in properties) { IAutosarTreeList treeList = property.GetValue(AutosarApplication.GetInstance()) as IAutosarTreeList; foreach (IGUID guid in treeList.GetItems()) { if (DoesGuidExists(treeList, guidObject) == true) { return(true); } } } return(false); }
public static void GenerateArrayForDataType(StreamWriter writer, IGUID datatype) { foreach (ArrayDataType arrayDT in AutosarApplication.GetInstance().ArrayDataTypes) { if (arrayDT.DataTypeGUID.Equals(datatype.GUID)) { /* Write array size */ String arraySizeNameMacro = arrayDT.Name + "_ELEMENTS_COUNT"; writer.WriteLine(RteFunctionsGenerator.CreateDefine(arraySizeNameMacro, arrayDT.Size.ToString() + "U")); writer.WriteLine(); /* Write a structure with array */ writer.WriteLine("typedef struct"); writer.WriteLine("{"); writer.WriteLine(" " + datatype.Name + " Values[" + arrayDT.Size + "];"); writer.WriteLine("} " + arrayDT.Name + ";"); writer.WriteLine(); } } }
bool DoesGuidExists(IAutosarTreeList treeList, IGUID guidToBeFound) { foreach (IGUID guid in treeList.GetItems()) { if (guid.Equals(guidToBeFound)) { return(true); } else { List <IAutosarTreeList> lists = guid.GetLists(); foreach (IAutosarTreeList list in lists) { if (DoesGuidExists(list, guidToBeFound) == true) { return(true); } } } } return(false); }
private void DeleteUnexistsRecursively(TreeViewItem item, List <PropertyInfo> properties) { IGUID guid = item.Tag as IGUID; if (guid != null) { if (DoesGuidExistInProperties(properties, guid) == false) { TreeViewItem parent = item.Parent as TreeViewItem; if (parent != null) { parent.Items.Remove(item); } } else { for (int i = item.Items.Count - 1; i >= 0; i--) { DeleteUnexistsRecursively(item.Items[i] as TreeViewItem, properties); } } } }
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(""); }
public T FindObject(IGUID iguid) { Guid guid = iguid.GUID; return(FindObject(guid)); }
private void datatypesListBox_SelectedIndexChanged(object sender, EventArgs e) { SelectedDatatype = datatypesListBox.SelectedItem as IGUID; }
void GenerateTestInitializationFile(ComponentDefenition compDef, String outputDir) { String FileName = outputDir + "\\" + Properties.Resources.TEST_INITIALIZATION_FILENAME; StreamWriter writer = new StreamWriter(FileName); RteFunctionsGenerator.GenerateFileTitle(writer, Properties.Resources.TEST_RTE_C_FILENAME, "This file contains functions for component initialization before each test"); String guardDefine = RteFunctionsGenerator.OpenGuardDefine(writer); /* Add includes */ RteFunctionsGenerator.AddInclude(writer, Properties.Resources.TEST_RTE_H_FILENAME); RteFunctionsGenerator.AddInclude(writer, Properties.Resources.RTE_DATATYPES_H_FILENAME); writer.WriteLine(); /* Write parameters count as equal value to component instances */ ComponentInstancesList componentInstances = AutosarApplication.GetInstance().GetComponentInstanceByDefenition(compDef); writer.WriteLine("const int " + ParametersCount + " = " + componentInstances.Count.ToString() + ";"); writer.WriteLine(); /* Add function for component variable initialization */ writer.WriteLine("/* User function for variable initialization */"); writer.WriteLine("extern void VariableInitialization();"); writer.WriteLine(); /* Declare test initialization function */ writer.WriteLine("void " + TestInitializationFunctionName + "(int paramIndex)"); writer.WriteLine("{"); /* Clear test structure */ writer.WriteLine(" memset(&" + TestArtefactsVariable + ", 0, sizeof(" + TestArtefactsStructureDataType + " ));"); if (componentInstances.Count > 0) { /* Fill CData constants */ writer.WriteLine(" switch(paramIndex)"); writer.WriteLine(" {"); for (int i = 0; i < componentInstances.Count; i++) { writer.WriteLine(" case " + i.ToString() + ":"); writer.WriteLine(" {"); /* CDATA */ for (int j = 0; j < compDef.CDataDefenitions.Count; j++) { CDataDefenition cdataDef = compDef.CDataDefenitions[j]; CDataInstance cdataInstance = componentInstances[i].CDataInstances.GetCData(cdataDef.GUID); writer.Write(" " + TestArtefactsVariable + "." + RteFunctionsGenerator.GenerateShortCDataFunctionName(cdataDef) + ".Value = "); IGUID datatype = cdataDef.DataType; if ((datatype is BaseDataType) || (datatype is SimpleDataType) || (datatype is EnumDataType)) { RteFunctionsGenerator.WriteDefaultValueForCDataDefenition(writer, componentInstances[i], cdataInstance); } writer.WriteLine(";"); } for (int j = 0; j < compDef.PerInstanceMemoryList.Count; j++) { PimDefenition pimDef = compDef.PerInstanceMemoryList[j]; PimInstance pimInstance = componentInstances[i].PerInstanceMemories.GetPim(pimDef.GUID); WritePIMDefaultValues(writer, pimInstance); } writer.WriteLine(" break;"); writer.WriteLine(" }"); } writer.WriteLine(" }"); } /* Write RTE_OK to all return functions */ foreach (PortDefenition portDef in compDef.Ports) { if (portDef.InterfaceDatatype is SenderReceiverInterface) { SenderReceiverInterface srInterface = (SenderReceiverInterface)portDef.InterfaceDatatype; foreach (SenderReceiverInterfaceField srField in srInterface.Fields) { String fieldName = RteFunctionsGenerator.GenerateReadWriteFunctionName(portDef, srField); writer.WriteLine(" " + TestArtefactsVariable + "." + fieldName + ".ReturnValue = RTE_E_OK;"); } } } writer.WriteLine(); /* Initialize component variables */ writer.WriteLine(" VariableInitialization();"); writer.WriteLine("}"); RteFunctionsGenerator.CloseGuardDefine(writer); RteFunctionsGenerator.WriteEndOfFile(writer); writer.Close(); }