def create_port_interfaces(ws): package = ws.createPackage('PortInterfaces', role='PortInterface') portInterface=package.createClientServerInterface("NvM_RequestResult", errors = autosar.ApplicationError("E_NOT_OK", 1), isService=True, operations = [ "EraseBlock", "GetErrorStatus", "InvalidateNvBlock", "ReadBlock", "SetRamBlockStatus", "WriteBlock"]) NvM_RequestResultType_ref = "/Predefined_DEV/ImplementationDataTypes/NvM_RequestResultType" boolean_ref = "/AUTOSAR_Platform/ImplementationDataTypes/boolean" dtRef_const_VOID_ref = "/AUTOSAR_Platform/ImplementationDataTypes/dtRef_const_VOID" dtRef_VOID_ref = "/AUTOSAR_Platform/ImplementationDataTypes/dtRef_VOID" portInterface["EraseBlock"].possibleErrors = "E_NOT_OK" portInterface["GetErrorStatus"].createOutArgument("ErrorStatus", NvM_RequestResultType_ref, "NOT-ACCESSIBLE", "USE-ARGUMENT-TYPE") portInterface["GetErrorStatus"].possibleErrors = "E_NOT_OK" portInterface["InvalidateNvBlock"].possibleErrors = "E_NOT_OK" portInterface["ReadBlock"].createInArgument("DstPtr", dtRef_VOID_ref, "NOT-ACCESSIBLE", "USE-ARGUMENT-TYPE") portInterface["ReadBlock"].possibleErrors = "E_NOT_OK" portInterface["SetRamBlockStatus"].createInArgument("RamBlockStatus", boolean_ref, "NOT-ACCESSIBLE", "USE-ARGUMENT-TYPE") portInterface["SetRamBlockStatus"].possibleErrors = "E_NOT_OK" portInterface["WriteBlock"].createInArgument("SrcPtr", dtRef_const_VOID_ref, "NOT-ACCESSIBLE", "USE-ARGUMENT-TYPE") portInterface["WriteBlock"].possibleErrors = "E_NOT_OK"
def apply(cls, ws): package = ws.getPortInterfacePackage() if package.find(cls.__name__) is None: operationsList = ['SetRamBlockStatus'] portInterface = package.createClientServerInterface( cls.__name__, operationsList, autosar.ApplicationError("E_NOT_OK", 1), isService=True) portInterface["SetRamBlockStatus"].possibleErrors = "E_NOT_OK" portInterface['SetRamBlockStatus'].createInArgument( "RamBlockStatus", "Boolean")
def apply(cls, ws): package = ws.getPortInterfacePackage() if package.find(cls.__name__) is None: ws.apply(DataTypes.BspApi_DiscreteId_T) ws.apply(DataTypes.BspApi_DiscreteState_T) operationsList = ['GetDiscreteInput', 'SetDiscreteOutput'] portInterface=package.createClientServerInterface(cls.__name__, operationsList, autosar.ApplicationError("E_NOT_OK", 1), isService=True) portInterface["GetDiscreteInput"].createInArgument("inputId", "BspApi_DiscreteId_T") portInterface["GetDiscreteInput"].createOutArgument("inputValue", "BspApi_DiscreteState_T") portInterface["SetDiscreteOutput"].possibleErrors = "E_NOT_OK" portInterface['SetDiscreteOutput'].createInArgument("outputId", "BspApi_DiscreteId_T") portInterface['SetDiscreteOutput'].createInArgument("outputValue", "BspApi_DiscreteState_T")
def apply_test_data(ws): package = ws.createPackage("DataType", role="DataType") package.createSubPackage("DataTypeSemantics", role="CompuMethod") package.createSubPackage("DataTypeUnits", role="Unit") package.createBooleanDataType('Boolean') package.createIntegerDataType('SInt8', -128, 127) package.createIntegerDataType('SInt16', -32768, 32767) package.createIntegerDataType('SInt32', -2147483648, 2147483647) package.createIntegerDataType('UInt8', 0, 255) package.createIntegerDataType('UInt16', 0, 65535) package.createIntegerDataType('UInt32', 0, 4294967295) package.createRealDataType('Float', None, None, minValType='INFINITE', maxValType='INFINITE') package.createRealDataType('Double', None, None, minValType='INFINITE', maxValType='INFINITE', hasNaN=True, encoding='DOUBLE') package.createIntegerDataType('ButtonStatus_T', valueTable=[ 'ButtonStatus_Released', 'ButtonStatus_Pressed', 'ButtonStatus_Error', 'ButtonStatus_NotAvailable' ]) valueTableList = [ 'VehicleModeInternal_Off', 'VehicleModeInternal_Accessory', 'VehicleModeInternal_Run', 'VehicleModeInternal_Crank', 'VehicleModeInternal_Spare1', 'VehicleModeInternal_Spare2', 'VehicleModeInternal_Error', 'VehicleModeInternal_NotAvailable' ] package.createIntegerDataType('VehicleModeInternal_T', valueTable=valueTableList) package.createIntegerDataType('BspApi_DigitalId_T', 0, 255, offset=0, scaling=1 / 1, forceFloatScaling=True, unit='Id') package.createIntegerDataType('BspApi_DigitalState_T', valueTable=[ 'BspApi_DigitalState_Inactive', 'BspApi_DigitalState_Active', 'BspApi_DigitalState_Error', 'BspApi_DigitalState_NotAvailable' ]) package = ws.createPackage("Constant", role="Constant") package.createConstant('ButtonStatus_IV', 'ButtonStatus_T', 3) package.createConstant('VehicleModeInternal_IV', 'VehicleModeInternal_T', 7) package = ws.createPackage("PortInterface", role="PortInterface") package.createSenderReceiverInterface("EcuM_CurrentMode", modeGroups=autosar.ModeGroup( "currentMode", "/ModeDclrGroup/EcuM_Mode"), isService=True, adminData={ "SDG_GID": "edve:BSWM", "SD": "EcuM" }) package.createSenderReceiverInterface( "ButtonStatus_I", autosar.DataElement('ButtonStatus', 'ButtonStatus_T')) package.createSenderReceiverInterface( "VehicleModeInternal_I", autosar.DataElement('VehicleModeInternal', 'VehicleModeInternal_T')) portInterface = package.createClientServerInterface( "BspApi_I", ["GetDiscreteInput", "SetDiscreteOutput"], autosar.ApplicationError("E_NOT_OK", 1), isService=True) portInterface["GetDiscreteInput"].createInArgument("inputId", "BspApi_DigitalId_T") portInterface["GetDiscreteInput"].createOutArgument( "inputValue", "BspApi_DigitalState_T") portInterface["SetDiscreteOutput"].createInArgument( "outputId", "BspApi_DigitalId_T") portInterface["SetDiscreteOutput"].createInArgument( "outputValue", "BspApi_DigitalState_T") portInterface["SetDiscreteOutput"].possibleErrors = "E_NOT_OK" package = ws.createPackage("ModeDclrGroup", role="ModeDclrGroup") package.createModeDeclarationGroup( "EcuM_Mode", ["POST_RUN", "RUN", "SHUTDOWN", "SLEEP", "STARTUP", "WAKE_SLEEP"], "STARTUP", adminData={ "SDG_GID": "edve:BSWM", "SD": "EcuM" }) package = ws.createPackage("ComponentType", role="ComponentType") swc = package.createApplicationSoftwareComponent( 'SteeringWheelButtonReader') swc.createProvidePort('SWS_PushButtonStatus_Back', 'ButtonStatus_I', initValueRef='ButtonStatus_IV') swc.createProvidePort('SWS_PushButtonStatus_Down', 'ButtonStatus_I', initValueRef='ButtonStatus_IV') swc.createProvidePort('SWS_PushButtonStatus_Enter', 'ButtonStatus_I', initValueRef='ButtonStatus_IV') swc.createProvidePort('SWS_PushButtonStatus_Home', 'ButtonStatus_I', initValueRef='ButtonStatus_IV') swc.createProvidePort('SWS_PushButtonStatus_Left', 'ButtonStatus_I', initValueRef='ButtonStatus_IV') swc.createProvidePort('SWS_PushButtonStatus_Right', 'ButtonStatus_I', initValueRef='ButtonStatus_IV') swc.createProvidePort('SWS_PushButtonStatus_Up', 'ButtonStatus_I', initValueRef='ButtonStatus_IV') swc.createRequirePort('EcuM_CurrentMode', 'EcuM_CurrentMode') swc.createRequirePort('VehicleModeInternal', 'VehicleModeInternal_I', initValueRef='VehicleModeInternal_IV') swc.createRequirePort('BspApi', 'BspApi_I') portAccessList = [ 'SWS_PushButtonStatus_Back', 'SWS_PushButtonStatus_Down', 'SWS_PushButtonStatus_Enter', 'SWS_PushButtonStatus_Home', 'SWS_PushButtonStatus_Left', 'SWS_PushButtonStatus_Right', 'SWS_PushButtonStatus_Up' ] swc.behavior.createRunnable('SteeringWheelButtonReader_Init', portAccess=portAccessList) portAccessList = [ 'SWS_PushButtonStatus_Back', 'SWS_PushButtonStatus_Down', 'SWS_PushButtonStatus_Enter', 'SWS_PushButtonStatus_Home', 'SWS_PushButtonStatus_Left', 'SWS_PushButtonStatus_Right', 'SWS_PushButtonStatus_Up' ] swc.behavior.createRunnable('SteeringWheelButtonReader_Exit', portAccess=portAccessList) portAccessList = [ 'VehicleModeInternal', 'SWS_PushButtonStatus_Back', 'SWS_PushButtonStatus_Down', 'SWS_PushButtonStatus_Enter', 'SWS_PushButtonStatus_Home', 'SWS_PushButtonStatus_Left', 'SWS_PushButtonStatus_Right', 'SWS_PushButtonStatus_Up', 'BspApi/GetDiscreteInput' ] swc.behavior.createRunnable('SteeringWheelButtonReader_Run', portAccess=portAccessList) swc.behavior.createTimingEvent('SteeringWheelButtonReader_Run', period=10) swc.behavior.createModeSwitchEvent('SteeringWheelButtonReader_Init', 'EcuM_CurrentMode/RUN')
import autosar ws = autosar.workspace("4.2.2") package = ws.createPackage('PortInterfaces', role="PortInterface") portInterface = package.createClientServerInterface( "Example_I", operations=["Invalidate"], errors=autosar.ApplicationError("E_NOT_OK", 1), isService=True) portInterface["Invalidate"].possibleErrors = "E_NOT_OK" ws.saveXML('PortInterfaces.arxml', filters=['/PortInterfaces'])