示例#1
0
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"
示例#2
0
 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")
示例#3
0
 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")
示例#4
0
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')
示例#5
0
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'])