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'))
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'))
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
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')
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)
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')
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')
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')
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')
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__))
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'])
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')