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(); } } } }
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(""); }
public static String Generate_RteCall_FunctionName(PortDefenition portDef, ClientServerOperation operation) { return("Rte_Call_" + portDef.Name + "_" + operation.Name); }
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); }
public static String Generate_RteCall_ConnectionGroup_FunctionName(ComponentDefenition compDef, PortDefenition port, ClientServerOperation operation) { return("Rte_Call_" + compDef.Name + "_" + port.Name + "_" + operation.Name); }
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(""); }