Exemplo n.º 1
0
        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);
                    }
                }
            }
        }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 5
0
        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);
                    }
                }
            }
        }
Exemplo n.º 10
0
        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("");
        }
Exemplo n.º 11
0
        public T FindObject(IGUID iguid)
        {
            Guid guid = iguid.GUID;

            return(FindObject(guid));
        }
Exemplo n.º 12
0
 private void datatypesListBox_SelectedIndexChanged(object sender, EventArgs e)
 {
     SelectedDatatype = datatypesListBox.SelectedItem as IGUID;
 }
Exemplo n.º 13
0
        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();
        }