Exemplo n.º 1
0
        public static String GenerateClientServerInterfaceArguments(ClientServerOperation operation, Boolean MultipleInstantiation = false)
        {
            String result = "(";

            if (MultipleInstantiation)
            {
                result += RteFunctionsGenerator.ComponentInstancePointerDatatype + " instance";
                if (operation.Fields.Count > 0)
                {
                    result += ", ";
                }
            }
            else
            {
                if (operation.Fields.Count == 0)
                {
                    result += "void";
                }
            }

            for (int i = 0; i < operation.Fields.Count; i++)
            {
                ClientServerOperationField field = operation.Fields[i];

                result += GetClientServerOperationFieldIdentification(field);
                if (i != operation.Fields.Count - 1)
                {
                    result += ", ";
                }
            }

            return(result + ")");
        }
        public void AddOperation()
        {
            ClientServerOperation newOperation = new ClientServerOperation();

            csInterface.Operations.Add(newOperation);
            tree.UpdateAutosarTreeView();
            RefreshGridView();
        }
        public void AddField()
        {
            ClientServerOperation currOperation = GetCurrentCsOperation();

            if (currOperation != null)
            {
                currOperation.Fields.Add(new ClientServerOperationField());
                tree.UpdateAutosarTreeView();
                RefreshGridView();
            }
        }
        public void DeleteButtonClick()
        {
            int index = grid.SelectedIndex;

            if ((index < grid.Items.Count) && (index >= 0))
            {
                if (gridElements[index].containObject is ClientServerOperation)
                {
                    csInterface.Operations.Remove((gridElements[index].containObject as ClientServerOperation));
                    RefreshGridView();
                    tree.UpdateAutosarTreeView();
                }
                else if (gridElements[index].containObject is ClientServerOperationField)
                {
                    ClientServerOperation operation = GetCurrentCsOperation();
                    if (operation != null)
                    {
                        operation.Fields.Remove(gridElements[index].containObject as ClientServerOperationField);
                        RefreshGridView();
                        tree.UpdateAutosarTreeView();
                    }
                }
            }
        }
Exemplo n.º 5
0
        void GenerateRteCallPortFieldFunction(StreamWriter writer, ComponentDefenition compDef, PortDefenition port, ClientServerOperation operation)
        {
            String returnValue   = Properties.Resources.STD_RETURN_TYPE;
            String RteFuncName   = RteFunctionsGenerator.Generate_RteCall_ConnectionGroup_FunctionName(compDef, port, operation);
            String fieldVariable = RteFunctionsGenerator.GenerateClientServerInterfaceArguments(operation, compDef.MultipleInstantiation);

            writer.WriteLine(returnValue + RteFuncName + fieldVariable);
            writer.WriteLine("{");


            if (!compDef.MultipleInstantiation) //single instantiation component
            {
                ComponentInstancesList components = AutosarApplication.GetInstance().GetComponentInstanceByDefenition(compDef);
                if (components.Count > 0)
                {
                    ComponentInstance compInstance = components[0];

                    PortPainter       portPainter = compInstance.Ports.FindPortByItsDefenition(port);
                    ComponentInstance oppositCompInstance;
                    PortPainter       oppositePort;
                    AutosarApplication.GetInstance().GetOppositePortAndComponent(portPainter, out oppositCompInstance, out oppositePort);
                    if (oppositCompInstance != null)
                    {
                        String functionName = RteFunctionsGenerator.Generate_RteCall_ConnectionGroup_FunctionName(oppositCompInstance.ComponentDefenition, oppositePort.PortDefenition, operation);
                        String arguments    = RteFunctionsGenerator.Generate_ClientServerPort_Arguments(oppositCompInstance, operation, oppositCompInstance.ComponentDefenition.MultipleInstantiation);
                        writer.WriteLine("    return " + functionName + arguments + ";");
                    }
                    else
                    {
                        writer.WriteLine("    return " + Properties.Resources.RTE_E_UNCONNECTED + ";");
                    }
                }
            }
            else //multiple instantiation component
            {
                ComponentInstancesList components = AutosarApplication.GetInstance().GetComponentInstanceByDefenition(compDef);
                if (components.Count > 0)
                {
                    writer.WriteLine("    switch(((" + compDef.Name + "*)" + "instance)->index)");
                    writer.WriteLine("    {");
                    for (int i = 0; i < components.Count; i++)
                    {
                        ComponentInstance compInstance = components[i];
                        PortPainter       portPainter  = compInstance.Ports.FindPortByItsDefenition(port);
                        ComponentInstance oppositCompInstance;
                        PortPainter       oppositePort;
                        AutosarApplication.GetInstance().GetOppositePortAndComponent(portPainter, out oppositCompInstance, out oppositePort);

                        writer.WriteLine("        case " + i.ToString() + ": ");
                        writer.WriteLine("        {");

                        if (oppositCompInstance != null)
                        {
                            String functionName = RteFunctionsGenerator.Generate_RteCall_ConnectionGroup_FunctionName(oppositCompInstance.ComponentDefenition, oppositePort.PortDefenition, operation);
                            String arguments    = RteFunctionsGenerator.Generate_ClientServerPort_Arguments(oppositCompInstance, operation, oppositCompInstance.ComponentDefenition.MultipleInstantiation);
                            writer.WriteLine("            return " + functionName + arguments + ";");
                        }
                        else
                        {
                            writer.WriteLine("            return " + Properties.Resources.RTE_E_UNCONNECTED + ";");
                        }

                        writer.WriteLine("        }");
                    }
                    writer.WriteLine("    }");
                }
                writer.WriteLine("    return " + Properties.Resources.RTE_E_UNCONNECTED + ";");
            }
            writer.WriteLine("}");
            writer.WriteLine("");
        }
Exemplo n.º 6
0
 public static String Generate_RteCall_FunctionName(PortDefenition portDef, ClientServerOperation operation)
 {
     return("Rte_Call_" + portDef.Name + "_" + operation.Name);
 }
Exemplo n.º 7
0
        public static String Generate_ClientServerPort_Arguments(ComponentInstance compInstance, ClientServerOperation operation, Boolean multipleInstantiation)
        {
            String serverPortCallFunction = "(";

            if (multipleInstantiation)
            {
                serverPortCallFunction += LinkToTheComponentInstance(compInstance);
                if (operation.Fields.Count > 0)
                {
                    serverPortCallFunction += ", ";
                }
            }
            for (int i = 0; i < operation.Fields.Count; i++)
            {
                serverPortCallFunction += operation.Fields[i].Name;
                if (i != operation.Fields.Count - 1)
                {
                    serverPortCallFunction += ", ";
                }
            }
            serverPortCallFunction += ")";
            return(serverPortCallFunction);
        }
Exemplo n.º 8
0
 public static String Generate_RteCall_ConnectionGroup_FunctionName(ComponentDefenition compDef, PortDefenition port, ClientServerOperation operation)
 {
     return("Rte_Call_" + compDef.Name + "_" + port.Name + "_" + operation.Name);
 }
Exemplo n.º 9
0
        void GenerateRteCallPortFieldFunction(StreamWriter writer, ComponentDefenition compDef, PortDefenition port, ClientServerOperation operation)
        {
            String returnValue   = Properties.Resources.STD_RETURN_TYPE;
            String RteFuncName   = RteFunctionsGenerator.Generate_RteCall_FunctionName(port, operation);
            String fieldVariable = RteFunctionsGenerator.GenerateClientServerInterfaceArguments(operation, compDef.MultipleInstantiation);

            writer.WriteLine(returnValue + RteFuncName + fieldVariable);
            writer.WriteLine("{");
            writer.WriteLine("    " + TestArtefactsVariable + "." + RteFuncName + "." + CallCount + "++;");
            foreach (var csField in operation.Fields)
            {
                writer.WriteLine("    " + TestArtefactsVariable + "." + RteFuncName + ".Arguments." + csField.Name + " = *" + csField.Name + ";");
            }
            writer.WriteLine("    return " + TestArtefactsVariable + "." + RteFuncName + ".ReturnValue;");
            writer.WriteLine("}");
            writer.WriteLine("");
        }