예제 #1
0
def _create_test_elements(ws):
    package = ws.find('/Constants')
    package.createConstant('VehicleSpeed_IV', 'uint16', 65535)
    package.createConstant('EngineSpeed_IV', 'uint16', 65535)
    package = ws.find('ModeDclrGroups')
    package.createModeDeclarationGroup('VehicleMode',
                                       ["OFF", "ACCESSORY", "RUN", "CRANK"],
                                       "OFF")

    package = ws.find('/PortInterfaces')
    package.createSenderReceiverInterface(
        'VehicleSpeed_I', autosar.DataElement('VehicleSpeed', 'uint16'))
    package.createSenderReceiverInterface(
        'EngineSpeed_I', autosar.DataElement('EngineSpeed', 'uint16'))
    package.createSenderReceiverInterface(
        'HeaterPwrStat_I', autosar.DataElement('HeaterPwrStat', 'OffOn_T'))
    portInterface = package.createClientServerInterface(
        'FreeRunningTimer5ms_I', ['GetTime', 'IsTimerElapsed'])
    portInterface['GetTime'].createOutArgument('value', '/DataTypes/uint32')
    portInterface["IsTimerElapsed"].createInArgument("startTime",
                                                     '/DataTypes/uint32')
    portInterface["IsTimerElapsed"].createInArgument("duration",
                                                     '/DataTypes/uint32')
    portInterface["IsTimerElapsed"].createOutArgument("result",
                                                      '/DataTypes/boolean')
    package.createModeSwitchInterface(
        'VehicleMode_I',
        autosar.mode.ModeGroup('mode', '/ModeDclrGroups/VehicleMode'))
예제 #2
0
def _create_port_interfaces(ws):
    package = ws.find('/PortInterfaces')
    package.createSenderReceiverInterface('VehicleSpeed_I', autosar.DataElement('VehicleSpeed', 'VehicleSpeed_T'))
    package.createSenderReceiverInterface('EngineSpeed_I', autosar.DataElement('EngineSpeed', 'EngineSpeed_T'))
    portInterface=package.createClientServerInterface('FreeRunningTimer5ms_I', ['GetTime', 'IsTimerElapsed'])
    portInterface['GetTime'].createOutArgument('value', 'uint32')
    portInterface['IsTimerElapsed'].createInArgument('startTime', 'uint32')
    portInterface['IsTimerElapsed'].createInArgument('duration', 'uint32')
    portInterface['IsTimerElapsed'].createOutArgument('result', 'boolean')
    package.createModeSwitchInterface('VehicleMode_I', autosar.mode.ModeGroup('mode', 'VehicleMode'))
예제 #3
0
def create_autosar_workspace():
    ws = autosar.workspace()
    dataTypes = ws.createPackage('DataType', role='DataType')
    dataTypes.createSubPackage('CompuMethod', role='CompuMethod')
    dataTypes.createSubPackage('Unit', role='Unit')
    dataTypes.createIntegerDataType('OffOn_T',
                                    valueTable=[
                                        "OffOn_Off", "OffOn_On", "OffOn_Error",
                                        "OffOn_NotAvailable"
                                    ])
    dataTypes.createIntegerDataType('Percent_T',
                                    min=0,
                                    max=255,
                                    offset=0,
                                    scaling=0.4,
                                    unit='Percent')
    dataTypes.createIntegerDataType('VehicleSpeed_T',
                                    min=0,
                                    max=65535,
                                    offset=0,
                                    scaling=1 / 64,
                                    unit='km/h')
    constants = ws.createPackage('Constant', role='Constant')
    constants.createConstant('C_EngineRunningStatus_IV', 'OffOn_T', 3)
    constants.createConstant('C_FuelLevelPercent_IV', 'Percent_T', 255)
    constants.createConstant('C_VehicleSpeed_IV', 'VehicleSpeed_T', 65535)
    portInterfaces = ws.createPackage('PortInterface', role='PortInterface')
    portInterfaces.createSenderReceiverInterface(
        'EngineRunningStatus_I',
        autosar.DataElement('EngineRunningStatus', 'OffOn_T'))
    portInterfaces.createSenderReceiverInterface(
        'FuelLevelPercent_I',
        autosar.DataElement('FuelLevelPercent', 'Percent_T'))
    portInterfaces.createSenderReceiverInterface(
        'VehicleSpeed_I', autosar.DataElement('VehicleSpeed',
                                              'VehicleSpeed_T'))
    components = ws.createPackage('ComponentType', role='ComponentType')
    swc = components.createApplicationSoftwareComponent('Example1')
    swc.createRequirePort(
        'EngineRunningStatus',
        'EngineRunningStatus_I',
        initValueRef=constants['C_EngineRunningStatus_IV'].ref)
    swc.createRequirePort('VehicleSpeed',
                          'VehicleSpeed_I',
                          initValueRef=constants['C_VehicleSpeed_IV'].ref)
    swc.createProvidePort('FuelLevelPercent',
                          'FuelLevelPercent_I',
                          initValueRef=constants['C_FuelLevelPercent_IV'].ref)
    swc.behavior.createRunnable(swc.name + '_Init',
                                portAccess=[x.name for x in swc.providePorts])
    swc.behavior.createRunnable(
        swc.name + '_Run',
        portAccess=[x.name for x in swc.requirePorts + swc.providePorts])
    return ws
예제 #4
0
def main():
    ws=autosar.workspace()
    
    dataTypes=ws.createPackage('DataType')
    dataTypes.createSubPackage('DataTypeSemantics', role='CompuMethod')
    dataTypes.createSubPackage('DataTypeUnits', role='Unit')
    
    dataTypes.createIntegerDataType('InactiveActive_T', valueTable=[
         'InactiveActive_Inactive',
         'InactiveActive_Active',
         'InactiveActive_Error',
         'InactiveActive_NotAvailable'])
    dataTypes.createIntegerDataType('OnOff_T', valueTable=[
        "OnOff_Off",
        "OnOff_On",
        "OnOff_1Hz",
        "OnOff_2Hz",
        "OnOff_3Hz"])
    
    ttList=['TPMS','LowOil','PosLamp','TurnLeft','TurnRight','AutoCruise','HighBeam',
            'SeatbeltDriver','SeatbeltPassenger','Airbag']
    
    package=ws.createPackage('Constant', role='Constant')
    for id,tt in enumerate(ttList):
        package.createConstant('C_%sStatus_IV'%(tt), '/DataType/InactiveActive_T', 3)
        package.createConstant('C_Telltale%sStatus_IV'%(tt), '/DataType/OnOff_T', 0)
        #print("#define DIO_CHL_Telltale%-32s %s"%(tt,id))
    
    package = ws.createPackage('PortInterface', role='PortInterface')
    for tt in ttList:
        package.createSenderReceiverInterface("%sStatus_I"%(tt), autosar.DataElement('%sStatus'%(tt), '/DataType/InactiveActive_T'))
        package.createSenderReceiverInterface("Telltale%sStatus_I"%(tt), autosar.DataElement('Telltale%sStatus'%(tt), '/DataType/OnOff_T'))

    package=ws.createPackage("ComponentType", role="ComponentType")
    swc = package.createApplicationSoftwareComponent('Telltale')
    for id,tt in enumerate(ttList):
        swc.createRequirePort('%sStatusPort'%(tt), '%sStatus_I'%(tt), initValueRef='C_%sStatus_IV'%(tt))
        swc.createProvidePort('Telltale%sStatusPort'%(tt), 'Telltale%sStatus_I'%(tt), initValueRef='C_Telltale%sStatus_IV'%(tt))
        #print("\tDIO_CHL_Telltale%s,"%(tt))
    portAccessList = []
    for tt in ttList:
        portAccessList.append('%sStatusPort'%(tt))
        portAccessList.append('Telltale%sStatusPort'%(tt))
    swc.behavior.createRunnable('Telltale_run', portAccess=portAccessList)
    swc.behavior.createTimingEvent('Telltale_run', period=20)
    partition = autosar.rte.Partition()
    partition.addComponent(swc)
    rtegen = autosar.rte.TypeGenerator(partition)
    rtegen.generate('swc/telltale')
#    rtegen = autosar.rte.MockRteGenerator(partition)
#    rtegen.generate('swc/telltale')
    rtegen = autosar.rte.ComponentHeaderGenerator(partition)
    rtegen.generate('swc/telltale')
예제 #5
0
def _create_test_elements(ws):
    package = ws.find('/Constants')
    package.createConstant('VehicleSpeed_IV', 'uint16', 65535)
    package.createConstant('EngineSpeed_IV', 'uint16', 65535)
    package = ws.find('/PortInterfaces')
    package.createSenderReceiverInterface('VehicleSpeed_I', autosar.DataElement('VehicleSpeed', 'uint16'))
    package.createSenderReceiverInterface('EngineSpeed_I', autosar.DataElement('EngineSpeed', 'uint16'))
    portInterface=package.createClientServerInterface('FreeRunningTimer5ms_I', ['GetTime', 'IsTimerElapsed'])
    portInterface['GetTime'].createOutArgument('value', '/DataTypes/uint32')
    portInterface["IsTimerElapsed"].createInArgument("startTime", '/DataTypes/uint32')
    portInterface["IsTimerElapsed"].createInArgument("duration", '/DataTypes/uint32')
    portInterface["IsTimerElapsed"].createOutArgument("result", '/DataTypes/boolean')
def handleSWC(swc, ws, componentType, portInterface):
    swcpkg = componentType.createApplicationSoftwareComponent(
        GAGet(swc, 'Name'))
    portAccessList = []
    for port in GLGet(swc, 'PortList'):
        portAccessList.append('%sPort' % (GAGet(port, 'Name')))
        portInterface.createSenderReceiverInterface(
            '%s_I' % (GAGet(port, 'Name')),
            autosar.DataElement('%s' % (GAGet(port, 'Name')),
                                '/DataType/' + GAGet(port, 'DataTypeRef')))
        if (GAGet(port, 'Type') == 'Require'):
            swcpkg.createRequirePort('%sPort' % (GAGet(port, 'Name')),
                                     '%s_I' % (GAGet(port, 'Name')),
                                     initValueRef=GAGet(port, 'InitValueRef'))
        else:
            swcpkg.createProvidePort('%sPort' % (GAGet(port, 'Name')),
                                     '%s_I' % (GAGet(port, 'Name')),
                                     initValueRef=GAGet(port, 'InitValueRef'))
    swcpkg.behavior.createRunnable(GAGet(swc, 'Runnable'),
                                   portAccess=portAccessList)
    partition = autosar.rte.Partition()
    partition.addComponent(swcpkg)
    rtegen = autosar.rte.TypeGenerator(partition)
    dirp = __dir + '/' + GAGet(swc, 'Name')
    MKDir(dirp)
    rtegen.generate(dirp)
    #    rtegen = autosar.rte.MockRteGenerator(partition)
    #    rtegen.generate(dirp)
    rtegen = autosar.rte.ComponentHeaderGenerator(partition)
    rtegen.generate(dirp)
예제 #7
0
def _create_test_elements(ws):
    package = ws.find('/Constants')
    package.createNumericalValueConstant('AmbientT_IV', -40)
    package.createConstant('VehicleSpeed_IV', 'uint16', 65535)
    package.createConstant('EngineSpeed_IV', 'uint16', 65535)
    package.createConstant('LastCyclePushButtonStatus_IV', 'uint8', 0)
    package.createConstant('UserSetting_IV', 'uint32', 0)
    package.createConstant('EcuU_IV', 'uint32', 0)
    package.createConstant('RebootCount_IV', 'uint32', 0)
    package = ws.find('/PortInterfaces')
    package.createSenderReceiverInterface(
        'AmbientT_I', autosar.DataElement('AmbientT', 'AmbientT'))
    package.createSenderReceiverInterface(
        'VehicleSpeed_I', autosar.DataElement('VehicleSpeed', 'uint16'))
    package.createSenderReceiverInterface(
        'EngineSpeed_I', autosar.DataElement('EngineSpeed', 'uint16'))
    package.createSenderReceiverInterface(
        'PushButtonStatus_I',
        autosar.DataElement('PushButtonStatus',
                            'PushButtonStatus_T',
                            isQueued=True))
    package.createSenderReceiverInterface('EcuStatus_I', (autosar.DataElement(
        'EcuU', 'uint32'), autosar.DataElement('RebootCount', 'uint32')))
    package.createNvDataInterface(
        'LastCyclePushButtonStatus_NvI',
        autosar.DataElement('LastCyclePushButtonStatus', 'PushButtonStatus_T'))
    package.createNvDataInterface('RebootCount_NvI',
                                  autosar.DataElement('RebootCount', 'uint32'))
    package.createNvDataInterface(
        'UserSetting_NvI',
        (autosar.DataElement('SettinNo1', 'UserSettingApp'),
         autosar.DataElement('SettinNo2', 'UserSettingApp')))
    portInterface = package.createClientServerInterface(
        'FreeRunningTimer5ms_I', ['GetTime', 'IsTimerElapsed'])
    portInterface['GetTime'].createOutArgument('value', '/DataTypes/uint32')
    portInterface["IsTimerElapsed"].createInArgument("startTime",
                                                     '/DataTypes/uint32')
    portInterface["IsTimerElapsed"].createInArgument("duration",
                                                     '/DataTypes/uint32')
    portInterface["IsTimerElapsed"].createOutArgument("result",
                                                      '/DataTypes/boolean')
예제 #8
0
def _create_packages(ws):

    package = ws.createPackage('DataTypes', role='DataType')
    package.createSubPackage('CompuMethods', role='CompuMethod')
    package.createSubPackage('DataConstrs', role='DataConstraint')
    package.createSubPackage('Units', role='Unit')

    package.createIntegerDataType('UInt8', min=0, max=255)
    package.createIntegerDataType('UInt16', min=0, max=65535)
    package.createIntegerDataType('UInt32', min=0, max=4294967295)

    package = ws.createPackage('PortInterfaces', role="PortInterface")
    package.createSenderReceiverInterface(
        'VehicleSpeed_I', autosar.DataElement('VehicleSpeed', 'UInt16'))
    package.createSenderReceiverInterface(
        'EngineSpeed_I', autosar.DataElement('EngineSpeed', 'UInt16'))

    package = ws.createPackage('Constants', role='Constant')
    package.createConstant('VehicleSpeed_IV', 'UInt16', 65535)
    package.createConstant('EngineSpeed_IV', 'UInt16', 65535)

    package = ws.createPackage('ComponentTypes', role='ComponentType')
예제 #9
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')
예제 #10
0
                                scaling=0.4,
                                unit='Percent')
dataTypes.createIntegerDataType('VehicleSpeed_T',
                                min=0,
                                max=65535,
                                offset=0,
                                scaling=1 / 64,
                                unit='km/h')
constants = ws.createPackage('Constant', role='Constant')
constants.createConstant('C_EngineRunningStatus_IV', 'OffOn_T', 3)
constants.createConstant('C_FuelLevelPercent_IV', 'Percent_T', 255)
constants.createConstant('C_VehicleSpeed_IV', 'VehicleSpeed_T', 65535)
portInterfaces = ws.createPackage('PortInterface', role='PortInterface')
portInterfaces.createSenderReceiverInterface(
    'EngineRunningStatus_I',
    autosar.DataElement('EngineRunningStatus', 'OffOn_T'))
portInterfaces.createSenderReceiverInterface(
    'FuelLevelPercent_I', autosar.DataElement('FuelLevelPercent', 'Percent_T'))
portInterfaces.createSenderReceiverInterface(
    'VehicleSpeed_I', autosar.DataElement('VehicleSpeed', 'VehicleSpeed_T'))
components = ws.createPackage('ComponentType', role='ComponentType')
swc = components.createApplicationSoftwareComponent('test_client')
swc.createRequirePort('EngineRunningStatus',
                      'EngineRunningStatus_I',
                      initValueRef=constants['C_EngineRunningStatus_IV'].ref)
swc.createRequirePort('FuelLevelPercent',
                      'FuelLevelPercent_I',
                      initValueRef=constants['C_FuelLevelPercent_IV'].ref)
swc.createRequirePort('VehicleSpeed',
                      'VehicleSpeed_I',
                      initValueRef=constants['C_VehicleSpeed_IV'].ref)
def test_autosar():
    sys.path.append(os.path.abspath('./third_party'))
    import autosar
    ws = autosar.workspace()

    dataTypes = ws.createPackage('DataType')
    dataTypes.createSubPackage('DataTypeSemantics', role='CompuMethod')
    dataTypes.createSubPackage('DataTypeUnits', role='Unit')

    dataTypes.createIntegerDataType('EngineSpeed_T',
                                    min=0,
                                    max=65535,
                                    offset=0,
                                    scaling=1 / 8,
                                    unit='rpm')
    dataTypes.createIntegerDataType('VehicleSpeed_T',
                                    min=0,
                                    max=65535,
                                    offset=0,
                                    scaling=1 / 64,
                                    unit='kph')
    dataTypes.createIntegerDataType('Percent_T',
                                    min=0,
                                    max=255,
                                    offset=0,
                                    scaling=0.4,
                                    unit='Percent')
    dataTypes.createIntegerDataType('CoolantTemp_T',
                                    min=0,
                                    max=255,
                                    offset=-40,
                                    scaling=0.5,
                                    unit='DegreeC')
    dataTypes.createIntegerDataType('InactiveActive_T',
                                    valueTable=[
                                        'InactiveActive_Inactive',
                                        'InactiveActive_Active',
                                        'InactiveActive_Error',
                                        'InactiveActive_NotAvailable'
                                    ])
    dataTypes.createIntegerDataType('OnOff_T',
                                    valueTable=[
                                        "OnOff_Off", "OnOff_On", "OnOff_Error",
                                        "OnOff_NotAvailable"
                                    ])

    package = ws.createPackage('Constant', role='Constant')
    package.createConstant('C_AntiLockBrakingActive_IV',
                           '/DataType/InactiveActive_T', 3)
    package.createConstant('C_TelltaleAntiLockBrakingActive_IV',
                           '/DataType/OnOff_T', 0)

    package = ws.createPackage('PortInterface', role='PortInterface')
    package.createSenderReceiverInterface(
        "AntiLockBrakingActive_I",
        autosar.DataElement('AntiLockBrakingStatus',
                            '/DataType/InactiveActive_T'))
    package.createSenderReceiverInterface(
        "TelltaleAntiLockBrakingActive_I",
        autosar.DataElement('TelltaleAntiLockBrakingStatus',
                            '/DataType/OnOff_T'))

    package = ws.createPackage("ComponentType", role="ComponentType")
    swc = package.createApplicationSoftwareComponent('AntiLockBraking')
    swc.createRequirePort('AntiLockBrakingActive',
                          'AntiLockBrakingActive_I',
                          initValueRef='C_AntiLockBrakingActive_IV')
    swc.createProvidePort('TelltaleAntiLockBrakingActive',
                          'TelltaleAntiLockBrakingActive_I',
                          initValueRef='C_TelltaleAntiLockBrakingActive_IV')

    portAccessList = ['AntiLockBrakingActive', 'TelltaleAntiLockBrakingActive']
    swc.behavior.createRunnable('AntiLockBrakingActive_run',
                                portAccess=portAccessList)
    swc.behavior.createTimingEvent('AntiLockBrakingActive_run', period=20)
    rtegen = autosar.RteGenerator()
    rtegen.writeComponentHeaders(swc, 'derived')
예제 #12
0
 def apply(cls, ws):
    package = ws.getPortInterfacePackage()
    if package.find(name) is None:
       ws.apply(cls.dataTypeTemplate)
       package.createSenderReceiverInterface(name, autosar.DataElement(cls.dataElementName, cls.dataTypeTemplate.__name__))
예제 #13
0
import sys
import autosar

ws = autosar.workspace()
ws.loadXML('../datatypes/DataTypes.arxml', roles={'/DataType': 'DataType'})

package=ws.createPackage('PortInterface', role='PortInterface')

package.createSenderReceiverInterface('EngineSpeed_I', autosar.DataElement('EngineSpeed','EngineSpeed_T'))
package.createSenderReceiverInterface('VehicleSpeed_I', autosar.DataElement('VehicleSpeed','VehicleSpeed_T'))
package.createSenderReceiverInterface('FuelLevel_I', autosar.DataElement('FuelLevel','Percent_T'))
package.createSenderReceiverInterface('CoolantTemp_I', autosar.DataElement('CoolantTemp','CoolantTemp_T'))
package.createSenderReceiverInterface('InactiveActive_I', autosar.DataElement('InactiveActive','InactiveActive_T'))
package.createSenderReceiverInterface('OnOff_I', autosar.DataElement('OnOff','OnOff_T'))

ws.saveXML('PortInterfaces.arxml', packages=['PortInterface'])
예제 #14
0
    def test_autosar_ports(self):
        ws = autosar.workspace()
        dataTypes = ws.createPackage('DataType', role='DataType')
        dataTypes.createSubPackage('DataTypeSemantics', role='CompuMethod')
        dataTypes.createSubPackage('DataTypeUnits', role='Unit')

        dataTypes.createIntegerDataType('EngineSpeed_T',
                                        min=0,
                                        max=65535,
                                        offset=0,
                                        scaling=1 / 8,
                                        unit='rpm')
        dataTypes.createIntegerDataType('VehicleSpeed_T',
                                        min=0,
                                        max=65535,
                                        offset=0,
                                        scaling=1 / 64,
                                        unit='kph')
        dataTypes.createIntegerDataType('Percent_T',
                                        min=0,
                                        max=255,
                                        offset=0,
                                        scaling=0.4,
                                        unit='Percent')
        dataTypes.createIntegerDataType('CoolantTemp_T',
                                        min=0,
                                        max=255,
                                        offset=-40,
                                        scaling=0.5,
                                        unit='DegreeC')
        dataTypes.createIntegerDataType(
            'InactiveActive_T',
            valueTable=[
                'InactiveActive_Inactive',  #0
                'InactiveActive_Active',  #1
                'InactiveActive_Error',  #2
                'InactiveActive_NotAvailable'
            ])  #3
        dataTypes.createIntegerDataType(
            'OnOff_T',
            valueTable=[
                "OnOff_Off",  #0
                "OnOff_On",  #1
                "OnOff_Error",  #2
                "OnOff_NotAvailable"
            ])  #3
        package = ws.createPackage('Constant', role='Constant')

        package.createConstant('EngineSpeed_IV', 'EngineSpeed_T', 65535)
        package.createConstant('VehicleSpeed_IV', 'VehicleSpeed_T', 65535)
        package.createConstant('FuelLevel_IV', 'Percent_T', 255)
        package.createConstant('CoolantTemp_IV', 'CoolantTemp_T', 255)
        package.createConstant('ParkBrakeState_IV', 'InactiveActive_T',
                               3)  #3=NotAvailable
        package.createConstant('MainBeamState_IV', 'OnOff_T',
                               3)  #3=NotAvailable
        package = ws.createPackage('PortInterface', role='PortInterface')

        package.createSenderReceiverInterface(
            'EngineSpeed_I',
            autosar.DataElement('EngineSpeed', '/DataType/EngineSpeed_T'))
        package.createSenderReceiverInterface(
            'VehicleSpeed_I',
            autosar.DataElement('VehicleSpeed', '/DataType/VehicleSpeed_T'))
        package.createSenderReceiverInterface(
            'FuelLevel_I',
            autosar.DataElement('FuelLevel', '/DataType/Percent_T'))
        package.createSenderReceiverInterface(
            'CoolantTemp_I',
            autosar.DataElement('CoolantTemp', '/DataType/CoolantTemp_T'))
        package.createSenderReceiverInterface(
            'ParkBrakeState_I',
            autosar.DataElement('InactiveActive',
                                '/DataType/InactiveActive_T'))
        package.createSenderReceiverInterface(
            'MainBeamState_I', autosar.DataElement('OnOff',
                                                   '/DataType/OnOff_T'))

        package = ws.createPackage('ComponentType', role='ComponentType')
        swc = package.createApplicationSoftwareComponent('TestSWC')
        swc.createProvidePort('EngineSpeed',
                              'EngineSpeed_I',
                              initValueRef='EngineSpeed_IV')
        swc.createProvidePort('VehicleSpeed',
                              'VehicleSpeed_I',
                              initValueRef='VehicleSpeed_IV')
        swc.createRequirePort('FuelLevel',
                              'FuelLevel_I',
                              initValueRef='FuelLevel_IV')
        swc.createRequirePort('CoolantTemp',
                              'CoolantTemp_I',
                              initValueRef='CoolantTemp_IV')
        swc.createRequirePort('ParkBrakeState',
                              'ParkBrakeState_I',
                              initValueRef='ParkBrakeState_IV')
        swc.createRequirePort('MainBeamState',
                              'MainBeamState_I',
                              initValueRef='MainBeamState_IV')

        apx_node = apx.Node(swc.name)
        apx_node.import_autosar_swc(swc)

        lines = apx_node.lines()
        self.assertEqual(len(lines), 13)
        self.assertEqual(lines[0], 'N"TestSWC"')
        self.assertEqual(lines[1], 'T"EngineSpeed_T"S')
        self.assertEqual(lines[2], 'T"VehicleSpeed_T"S')
        self.assertEqual(lines[3], 'T"Percent_T"C')
        self.assertEqual(lines[4], 'T"CoolantTemp_T"C')
        self.assertEqual(
            lines[5],
            'T"InactiveActive_T"C(0,3):VT("InactiveActive_Inactive","InactiveActive_Active","InactiveActive_Error","InactiveActive_NotAvailable")'
        )
        self.assertEqual(
            lines[6],
            'T"OnOff_T"C(0,3):VT("OnOff_Off","OnOff_On","OnOff_Error","OnOff_NotAvailable")'
        )
        self.assertEqual(lines[7], 'P"EngineSpeed"T[0]:=0xFFFF')
        self.assertEqual(lines[8], 'P"VehicleSpeed"T[1]:=0xFFFF')
        self.assertEqual(lines[9], 'R"FuelLevel"T[2]:=255')
        self.assertEqual(lines[10], 'R"CoolantTemp"T[3]:=255')
        self.assertEqual(lines[11], 'R"ParkBrakeState"T[4]:=3')
        self.assertEqual(lines[12], 'R"MainBeamState"T[5]:=3')