]> rtime.felk.cvut.cz Git - arc.git/commitdiff
Isr almost done
authormahi <devnull@localhost>
Fri, 11 Mar 2011 07:30:56 +0000 (08:30 +0100)
committermahi <devnull@localhost>
Fri, 11 Mar 2011 07:30:56 +0000 (08:30 +0100)
465 files changed:
.hgignore
arch/arm/arm_cm3/drivers/Adc.c
arch/arm/arm_cm3/drivers/Can.c
arch/arm/arm_cm3/drivers/Dio.c
arch/arm/arm_cm3/drivers/Gpt.c
arch/arm/arm_cm3/drivers/Mcu.c
arch/arm/arm_cm3/drivers/Port.c
arch/arm/arm_cm3/drivers/Wdg.c [new file with mode: 0644]
arch/arm/arm_cm3/drivers/Wdg.h [new file with mode: 0644]
arch/arm/arm_cm3/kernel/arch.c
arch/arm/arm_cm3/kernel/arch_krn.sx
arch/arm/arm_cm3/kernel/irq.c
arch/arm/arm_cm3/kernel/sys_tick.c
arch/arm/arm_cr4/drivers/Can.c
arch/arm/arm_cr4/drivers/Dio.c [new file with mode: 0644]
arch/arm/arm_cr4/drivers/Mcu.c
arch/arm/arm_cr4/drivers/Port.c [new file with mode: 0644]
arch/arm/arm_cr4/kernel/arch.c
arch/arm/arm_cr4/kernel/arch_krn.sx
arch/arm/arm_cr4/kernel/core_cr4.h
arch/arm/arm_cr4/kernel/irq.c
arch/arm/arm_cr4/kernel/sys_tick.c
arch/generic/linux/drivers/McuExtensionsStub.c
arch/hc1x/hcs12d/drivers/Adc.c
arch/hc1x/hcs12d/drivers/Can.c
arch/hc1x/hcs12d/drivers/Gpt.c
arch/hc1x/hcs12d/drivers/Mcu.c
arch/hc1x/hcs12d/drivers/Port.c
arch/hc1x/hcs12d/kernel/arch.c
arch/hc1x/hcs12d/kernel/arch_irq.sx
arch/hc1x/hcs12d/kernel/arch_krn.sx
arch/hc1x/hcs12d/kernel/irq.c
arch/hc1x/hcs12d/kernel/sys_tick.c
arch/hc1x/hcs12d/scripts/linkscript_gcc.ldf
arch/ppc/crt0.sx
arch/ppc/mpc55xx/drivers/Adc.c
arch/ppc/mpc55xx/drivers/Can.c
arch/ppc/mpc55xx/drivers/Dio.c
arch/ppc/mpc55xx/drivers/Dma.c
arch/ppc/mpc55xx/drivers/Dma.h
arch/ppc/mpc55xx/drivers/Eep.c
arch/ppc/mpc55xx/drivers/Fls.c
arch/ppc/mpc55xx/drivers/Fls_H7F.c
arch/ppc/mpc55xx/drivers/Gpt.c
arch/ppc/mpc55xx/drivers/Lin.c
arch/ppc/mpc55xx/drivers/Mcu.c
arch/ppc/mpc55xx/drivers/Mcu_Exceptions.sx [deleted file]
arch/ppc/mpc55xx/drivers/Port.c
arch/ppc/mpc55xx/drivers/Pwm.c
arch/ppc/mpc55xx/drivers/Spi.c
arch/ppc/mpc55xx/drivers/WdgM.c [deleted file]
arch/ppc/mpc55xx/drivers/WdgM_cfg.h [deleted file]
arch/ppc/mpc55xx/drivers/mpc5516.h
arch/ppc/mpc55xx/drivers/mpc5554.h
arch/ppc/mpc55xx/drivers/mpc5567.h
arch/ppc/mpc55xx/drivers/sys_tick.c
arch/ppc/mpc55xx/kernel/arch.c
arch/ppc/mpc55xx/kernel/arch_krn.sx
arch/ppc/mpc55xx/kernel/arch_offset.c [new file with mode: 0644]
arch/ppc/mpc55xx/kernel/arch_stack.h [new file with mode: 0644]
arch/ppc/mpc55xx/kernel/irq.c
arch/ppc/mpc55xx/kernel/irq_types.h
arch/ppc/mpc55xx/scripts/linkscript_cw.ldf [new file with mode: 0644]
arch/ppc/mpc55xx/scripts/linkscript_gcc.ldf
boards/board_common.mk
boards/generic/Dem_Cfg.h
boards/generic/Det_Cfg.h
boards/generic/EcuM_Callout_template.c
boards/generic/EcuM_Cfg.c
boards/generic/EcuM_Cfg.h
boards/generic/EcuM_Generated_Types.h
boards/linux/build_config.mk
boards/mpc5516it/config/CanIf_Cfg.h
boards/mpc5516it/config/Det_Cfg.h
boards/mpc5516it/config/Eep_Cfg.h
boards/mpc5516it/config/Eep_Lcfg.c
boards/mpc5516it/config/Eeprom_Lcfg.c
boards/mpc551xsim/config/CanIf_Cfg.h
boards/mpc551xsim/config/Det_Cfg.h
boards/mpc5554sim/build_config.mk
boards/mpc5554sim/config/Det_Cfg.h
boards/mpc5567qrtech/config/CanIf_Cfg.h
boards/mpc5567qrtech/config/Det_Cfg.h
boards/mpc5567qrtech/config/Eep_Lcfg.c
boards/mpc5567qrtech/config/Eeprom_Lcfg.c
boards/stm32_mcbstm32/build_config.mk
boards/stm32_mcbstm32/config/Adc_Cfg.h
boards/stm32_mcbstm32/config/Can_Cfg.h
boards/stm32_mcbstm32/config/Dio_Cfg.h
boards/stm32_mcbstm32/config/Dio_Lcfg.c
boards/stm32_mcbstm32/config/Fls_Cfg.h
boards/stm32_mcbstm32/config/Gpt_Cfg.h
boards/stm32_mcbstm32/config/Mcu_Cfg.c
boards/stm32_mcbstm32/config/Mcu_Cfg.h
boards/stm32_mcbstm32/config/Port_Cfg.h
boards/stm32_mcbstm32/config/Pwm_Cfg.h
boards/stm32_stm3210c/config/Adc_Cfg.h
boards/stm32_stm3210c/config/Can_Cfg.h
boards/stm32_stm3210c/config/Dio_Cfg.h
boards/stm32_stm3210c/config/Dio_Lcfg.c
boards/stm32_stm3210c/config/Fls_Cfg.h
boards/stm32_stm3210c/config/Gpt_Cfg.h
boards/stm32_stm3210c/config/Mcu_Cfg.h
boards/stm32_stm3210c/config/Port_Cfg.h
boards/stm32_stm3210c/config/Pwm_Cfg.h
boards/ti_tms570ls/build_config.mk
boards/ti_tms570ls/config/Dio_Cfg.h [new file with mode: 0644]
boards/ti_tms570ls/config/Dio_Lcfg.c [new file with mode: 0644]
boards/ti_tms570ls/config/Port_Cfg.c [new file with mode: 0644]
boards/ti_tms570ls/config/Port_Cfg.h [new file with mode: 0644]
common/msl_port.c [new file with mode: 0644]
common/newlib_port.c
common/printf.c
common/ramlog.c
common/tcf/sys_monitor.c
communication/CanIf/CanIf.c
communication/CanNm/CanNm.c
communication/CanSM/CanSM.c
communication/CanSM/CanSM_Internal.h
communication/CanTp/CanTp.c
communication/Com/Com.c
communication/Com/Com_Arc_Types.h
communication/Com/Com_Com.c
communication/Com/Com_Internal.h
communication/Com/Com_RunTest.c [deleted file]
communication/Com/Com_Sched.c
communication/Com/Com_TestData.c [deleted file]
communication/Com/Com_misc.c
communication/Com/Com_misc.h
communication/ComM/ComM.c
communication/ComM/ComM_Internal.h
communication/PduR/PduR.c
communication/PduR/PduR_If.c
communication/PduR/test/makefile
diagnostic/Dcm/Dcm.c
diagnostic/Dcm/Dcm_Dsd.c
diagnostic/Dcm/Dcm_Dsl.c
diagnostic/Dcm/Dcm_Dsp.c
diagnostic/Dcm/Dcm_Internal.h
diagnostic/Dcm/Dcm_Lcfg.h
diagnostic/Dem/Dem.c
diagnostic/Dem/Dem_Types.h
diagnostic/Dem/Rte_Dem.h [moved from arch/ppc/mpc55xx/drivers/WdgM.h with 64% similarity]
diagnostic/Det/Det.c
examples/blinker_node/Hooks.c
examples/blinker_node/Rte/Rte.h
examples/blinker_node/Tasks.c
examples/blinker_node/blinker_node_arm_stm32_f103.arxml [new file with mode: 0644]
examples/blinker_node/blinker_node_arm_stm32_f107.arxml [new file with mode: 0644]
examples/blinker_node/blinker_node_mpc5516.arxml [new file with mode: 0644]
examples/blinker_node/blinker_node_mpc5567.arxml [new file with mode: 0644]
examples/blinker_node/config/hcs12_elmicro_card12/Os_Cfg.h
examples/blinker_node/config/hcs12x_elmicro_tboard/Os_Cfg.c
examples/blinker_node/config/hcs12x_elmicro_tboard/Os_Cfg.h
examples/blinker_node/config/mpc5516it/Det_cfg.h [new file with mode: 0644]
examples/blinker_node/config/mpc5516it/Dio_Cfg.h [new file with mode: 0644]
examples/blinker_node/config/mpc5516it/Dio_Lcfg.c [new file with mode: 0644]
examples/blinker_node/config/mpc5516it/EcuM.mk [new file with mode: 0644]
examples/blinker_node/config/mpc5516it/EcuM_Callout_template.c [new file with mode: 0644]
examples/blinker_node/config/mpc5516it/EcuM_Cfg.c [new file with mode: 0644]
examples/blinker_node/config/mpc5516it/EcuM_Cfg.h [new file with mode: 0644]
examples/blinker_node/config/mpc5516it/EcuM_Generated_Types.h [new file with mode: 0644]
examples/blinker_node/config/mpc5516it/Mcu_Cfg.c [new file with mode: 0644]
examples/blinker_node/config/mpc5516it/Mcu_Cfg.h [new file with mode: 0644]
examples/blinker_node/config/mpc5516it/Os_Cfg.c
examples/blinker_node/config/mpc5516it/Os_Cfg.h
examples/blinker_node/config/mpc5516it/Port_Cfg.c [new file with mode: 0644]
examples/blinker_node/config/mpc5516it/Port_Cfg.h [new file with mode: 0644]
examples/blinker_node/config/mpc5567qrtech/Det_cfg.h [new file with mode: 0644]
examples/blinker_node/config/mpc5567qrtech/Dio_Cfg.h [new file with mode: 0644]
examples/blinker_node/config/mpc5567qrtech/Dio_Lcfg.c [new file with mode: 0644]
examples/blinker_node/config/mpc5567qrtech/EcuM.mk [new file with mode: 0644]
examples/blinker_node/config/mpc5567qrtech/EcuM_Callout_template.c [new file with mode: 0644]
examples/blinker_node/config/mpc5567qrtech/EcuM_Cfg.c [new file with mode: 0644]
examples/blinker_node/config/mpc5567qrtech/EcuM_Cfg.h [new file with mode: 0644]
examples/blinker_node/config/mpc5567qrtech/EcuM_Generated_Types.h [new file with mode: 0644]
examples/blinker_node/config/mpc5567qrtech/Mcu_Cfg.c [new file with mode: 0644]
examples/blinker_node/config/mpc5567qrtech/Mcu_Cfg.h [new file with mode: 0644]
examples/blinker_node/config/mpc5567qrtech/Os_Cfg.c
examples/blinker_node/config/mpc5567qrtech/Os_Cfg.h
examples/blinker_node/config/mpc5567qrtech/Port_Cfg.c [new file with mode: 0644]
examples/blinker_node/config/mpc5567qrtech/Port_Cfg.h [new file with mode: 0644]
examples/blinker_node/config/stm32_mcbstm32/Det_cfg.h [new file with mode: 0644]
examples/blinker_node/config/stm32_mcbstm32/Dio_Cfg.h [new file with mode: 0644]
examples/blinker_node/config/stm32_mcbstm32/Dio_Lcfg.c [new file with mode: 0644]
examples/blinker_node/config/stm32_mcbstm32/EcuM.mk [new file with mode: 0644]
examples/blinker_node/config/stm32_mcbstm32/EcuM_Callout_template.c [new file with mode: 0644]
examples/blinker_node/config/stm32_mcbstm32/EcuM_Cfg.c [new file with mode: 0644]
examples/blinker_node/config/stm32_mcbstm32/EcuM_Cfg.h [new file with mode: 0644]
examples/blinker_node/config/stm32_mcbstm32/EcuM_Generated_Types.h [new file with mode: 0644]
examples/blinker_node/config/stm32_mcbstm32/Mcu_Cfg.c [new file with mode: 0644]
examples/blinker_node/config/stm32_mcbstm32/Mcu_Cfg.h [new file with mode: 0644]
examples/blinker_node/config/stm32_mcbstm32/Os_Cfg.c
examples/blinker_node/config/stm32_mcbstm32/Os_Cfg.h
examples/blinker_node/config/stm32_mcbstm32/Port_Cfg.c [new file with mode: 0644]
examples/blinker_node/config/stm32_mcbstm32/Port_Cfg.h [new file with mode: 0644]
examples/blinker_node/config/stm32_stm3210c/Det_cfg.h [new file with mode: 0644]
examples/blinker_node/config/stm32_stm3210c/Dio_Cfg.h [new file with mode: 0644]
examples/blinker_node/config/stm32_stm3210c/Dio_Lcfg.c [new file with mode: 0644]
examples/blinker_node/config/stm32_stm3210c/EcuM.mk [new file with mode: 0644]
examples/blinker_node/config/stm32_stm3210c/EcuM_Callout_template.c [new file with mode: 0644]
examples/blinker_node/config/stm32_stm3210c/EcuM_Cfg.c [new file with mode: 0644]
examples/blinker_node/config/stm32_stm3210c/EcuM_Cfg.h [new file with mode: 0644]
examples/blinker_node/config/stm32_stm3210c/EcuM_Generated_Types.h [new file with mode: 0644]
examples/blinker_node/config/stm32_stm3210c/Mcu_Cfg.c [new file with mode: 0644]
examples/blinker_node/config/stm32_stm3210c/Mcu_Cfg.h [new file with mode: 0644]
examples/blinker_node/config/stm32_stm3210c/Os_Cfg.c
examples/blinker_node/config/stm32_stm3210c/Os_Cfg.h
examples/blinker_node/config/stm32_stm3210c/Port_Cfg.c [new file with mode: 0644]
examples/blinker_node/config/stm32_stm3210c/Port_Cfg.h [new file with mode: 0644]
examples/pwm_node/Hooks.c
examples/pwm_node/Tasks.c
examples/pwm_node/config/hcs12x_elmicro_tboard/Os_Cfg.c
examples/pwm_node/config/hcs12x_elmicro_tboard/Os_Cfg.h
examples/pwm_node/config/hcs12x_elmicro_tboard/Port_Cfg.c
examples/pwm_node/config/hcs12x_elmicro_tboard/Port_Cfg.h
examples/pwm_node/config/hcs12x_elmicro_tboard/Pwm_Cfg.c
examples/pwm_node/config/hcs12x_elmicro_tboard/Pwm_Cfg.h
examples/pwm_node/config/mpc5516it/Os_Cfg.h
examples/pwm_node/config/mpc5516it/Port_Cfg.c
examples/pwm_node/config/mpc5516it/Port_Cfg.h
examples/pwm_node/config/mpc5516it/Pwm_Cfg.h
examples/pwm_node/config/mpc5567qrtech/Os_Cfg.c
examples/pwm_node/config/mpc5567qrtech/Os_Cfg.h
examples/pwm_node/config/mpc5567qrtech/Port_Cfg.c
examples/pwm_node/config/mpc5567qrtech/Port_Cfg.h
examples/pwm_node/config/mpc5567qrtech/Pwm_Cfg.c
examples/pwm_node/config/mpc5567qrtech/Pwm_Cfg.h
examples/pwm_node/pwm_node_mpc5567.arxml
examples/pwm_node2/Hooks.c
examples/pwm_node2/Tasks.c
examples/pwm_node2/config/hcs12x_elmicro_tboard/CanIf_Cfg.c
examples/pwm_node2/config/hcs12x_elmicro_tboard/CanIf_Cfg.h
examples/pwm_node2/config/hcs12x_elmicro_tboard/Can_Cfg.h
examples/pwm_node2/config/hcs12x_elmicro_tboard/Can_Lcfg.c
examples/pwm_node2/config/hcs12x_elmicro_tboard/Com_Cfg.h
examples/pwm_node2/config/hcs12x_elmicro_tboard/Com_PbCfg.c
examples/pwm_node2/config/hcs12x_elmicro_tboard/Com_PbCfg.h
examples/pwm_node2/config/hcs12x_elmicro_tboard/EcuM_Cfg.h
examples/pwm_node2/config/hcs12x_elmicro_tboard/Os_Cfg.c
examples/pwm_node2/config/hcs12x_elmicro_tboard/Os_Cfg.h
examples/pwm_node2/config/hcs12x_elmicro_tboard/PduR_Cfg.h
examples/pwm_node2/config/hcs12x_elmicro_tboard/PduR_PbCfg.c
examples/pwm_node2/config/hcs12x_elmicro_tboard/PduR_PbCfg.h
examples/pwm_node2/config/hcs12x_elmicro_tboard/Port_Cfg.c
examples/pwm_node2/config/hcs12x_elmicro_tboard/Port_Cfg.h
examples/pwm_node2/config/hcs12x_elmicro_tboard/Pwm_Cfg.c
examples/pwm_node2/config/hcs12x_elmicro_tboard/Pwm_Cfg.h
examples/pwm_node2/config/mpc5516it/CanIf_Cfg.c
examples/pwm_node2/config/mpc5516it/CanIf_Cfg.h
examples/pwm_node2/config/mpc5516it/Can_Cfg.h
examples/pwm_node2/config/mpc5516it/Can_Lcfg.c
examples/pwm_node2/config/mpc5516it/Com_Cfg.h
examples/pwm_node2/config/mpc5516it/Com_PbCfg.c
examples/pwm_node2/config/mpc5516it/Com_PbCfg.h
examples/pwm_node2/config/mpc5516it/EcuM_Cfg.h
examples/pwm_node2/config/mpc5516it/Os_Cfg.c
examples/pwm_node2/config/mpc5516it/Os_Cfg.h
examples/pwm_node2/config/mpc5516it/PduR_Cfg.h
examples/pwm_node2/config/mpc5516it/PduR_PbCfg.c
examples/pwm_node2/config/mpc5516it/PduR_PbCfg.h
examples/pwm_node2/config/mpc5516it/Port_Cfg.c
examples/pwm_node2/config/mpc5516it/Port_Cfg.h
examples/pwm_node2/config/mpc5516it/Pwm_Cfg.c
examples/pwm_node2/config/mpc5516it/Pwm_Cfg.h
examples/simple/config/hcs12_elmicro_card12/Os_Cfg.c
examples/simple/config/hcs12_elmicro_card12/Os_Cfg.h
examples/simple/config/hcs12x_elmicro_tboard/Os_Cfg.c
examples/simple/config/hcs12x_elmicro_tboard/Os_Cfg.h
examples/simple/config/mpc5516it/Os_Cfg.c
examples/simple/config/mpc5516it/Os_Cfg.h
examples/simple/config/mpc5567qrtech/Os_Cfg.c
examples/simple/config/mpc5567qrtech/Os_Cfg.h
examples/simple/config/stm32_mcbstm32/Os_Cfg.c
examples/simple/config/stm32_mcbstm32/Os_Cfg.h
examples/simple/config/stm32_stm3210c/Os_Cfg.c
examples/simple/config/stm32_stm3210c/Os_Cfg.h
examples/simple/makefile
examples/simple/simple_arm_stm32_f103.arxml [new file with mode: 0644]
examples/simple/simple_arm_stm32_f107.arxml [moved from examples/simple/simple_arm_cm3.arxml with 97% similarity]
examples/simple/simple_main.c
examples/switch_node/Hooks.c
examples/switch_node/Tasks.c
examples/switch_node/config/mpc5516it/CanIf_Cfg.c
examples/switch_node/config/mpc5516it/CanIf_Cfg.h
examples/switch_node/config/mpc5516it/Can_Cfg.h
examples/switch_node/config/mpc5516it/Can_Lcfg.c
examples/switch_node/config/mpc5516it/Com_Cfg.h
examples/switch_node/config/mpc5516it/Com_PbCfg.c
examples/switch_node/config/mpc5516it/Com_PbCfg.h
examples/switch_node/config/mpc5516it/EcuM_Cfg.h
examples/switch_node/config/mpc5516it/Os_Cfg.c
examples/switch_node/config/mpc5516it/Os_Cfg.h
examples/switch_node/config/mpc5516it/PduR_Cfg.h
examples/switch_node/config/mpc5516it/PduR_PbCfg.c
examples/switch_node/config/mpc5516it/PduR_PbCfg.h
examples/switch_node/config/mpc5516it/Port_Cfg.c
examples/switch_node/config/mpc5516it/Port_Cfg.h
examples/switch_node/config/mpc5567qrtech/CanIf_Cfg.c
examples/switch_node/config/mpc5567qrtech/CanIf_Cfg.h
examples/switch_node/config/mpc5567qrtech/Can_Cfg.h
examples/switch_node/config/mpc5567qrtech/Can_Lcfg.c
examples/switch_node/config/mpc5567qrtech/Com_Cfg.h
examples/switch_node/config/mpc5567qrtech/Com_PbCfg.c
examples/switch_node/config/mpc5567qrtech/Com_PbCfg.h
examples/switch_node/config/mpc5567qrtech/EcuM_Cfg.h
examples/switch_node/config/mpc5567qrtech/Os_Cfg.c
examples/switch_node/config/mpc5567qrtech/Os_Cfg.h
examples/switch_node/config/mpc5567qrtech/PduR_Cfg.h
examples/switch_node/config/mpc5567qrtech/PduR_PbCfg.c
examples/switch_node/config/mpc5567qrtech/PduR_PbCfg.h
examples/switch_node/config/mpc5567qrtech/Port_Cfg.c
examples/switch_node/config/mpc5567qrtech/Port_Cfg.h
examples/tiny/config/hcs12_elmicro_card12/Os_Cfg.c
examples/tiny/config/hcs12_elmicro_card12/Os_Cfg.h
examples/tiny/config/hcs12x_elmicro_tboard/Os_Cfg.c
examples/tiny/config/hcs12x_elmicro_tboard/Os_Cfg.h
examples/tiny/config/mpc5516it/Os_Cfg.c
examples/tiny/config/mpc5516it/Os_Cfg.h
examples/tiny/config/mpc5567qrtech/Os_Cfg.c
examples/tiny/config/mpc5567qrtech/Os_Cfg.h
examples/tiny/config/stm32_mcbstm32/Os_Cfg.c
examples/tiny/config/stm32_mcbstm32/Os_Cfg.h
examples/tiny/config/stm32_stm3210c/Os_Cfg.c
examples/tiny/config/stm32_stm3210c/Os_Cfg.h
examples/tiny/tiny.c
examples/tiny/tiny_arm_stm32_f103.arxml [moved from examples/tiny/tiny_arm_cm3.arxml with 97% similarity]
examples/tiny/tiny_arm_stm32_f107.arxml [moved from examples/blinker_node/blinker_node_arm_cm3.arxml with 70% similarity]
examples/wdg_node/build_config.mk [new file with mode: 0644]
examples/wdg_node/config/stm32_mcbstm32/Dio_Cfg.h [new file with mode: 0644]
examples/wdg_node/config/stm32_mcbstm32/Dio_Lcfg.c [new file with mode: 0644]
examples/wdg_node/config/stm32_mcbstm32/Gpt_Cfg.c [new file with mode: 0644]
examples/wdg_node/config/stm32_mcbstm32/Gpt_Cfg.h [new file with mode: 0644]
examples/wdg_node/config/stm32_mcbstm32/Mcu_Cfg.c [new file with mode: 0644]
examples/wdg_node/config/stm32_mcbstm32/Mcu_Cfg.h [new file with mode: 0644]
examples/wdg_node/config/stm32_mcbstm32/Os_Cfg.c [new file with mode: 0644]
examples/wdg_node/config/stm32_mcbstm32/Os_Cfg.h [new file with mode: 0644]
examples/wdg_node/config/stm32_mcbstm32/Port_Cfg.c [new file with mode: 0644]
examples/wdg_node/config/stm32_mcbstm32/Port_Cfg.h [new file with mode: 0644]
examples/wdg_node/config/stm32_mcbstm32/WdgIf_Cfg.c [new file with mode: 0644]
examples/wdg_node/config/stm32_mcbstm32/WdgIf_Cfg.h [new file with mode: 0644]
examples/wdg_node/config/stm32_mcbstm32/WdgM_Cfg.h [new file with mode: 0644]
examples/wdg_node/config/stm32_mcbstm32/WdgM_PBcfg.c [new file with mode: 0644]
examples/wdg_node/config/stm32_mcbstm32/Wdg_Cfg.h [new file with mode: 0644]
examples/wdg_node/config/stm32_mcbstm32/Wdg_Lcfg.c [new file with mode: 0644]
examples/wdg_node/makefile [new file with mode: 0644]
examples/wdg_node/wdgm_node.c [new file with mode: 0644]
examples/wdg_node/wdgm_node_stm32.arxml [new file with mode: 0644]
include/Can.h
include/CanIf.h
include/CanIf_Types.h
include/CanNm.h
include/CanNm_ConfigTypes.h
include/CanNm_Internal.h
include/CanSM.h
include/CanTp.h
include/CanTp_Types.h
include/Com.h
include/ComM.h
include/ComM_ConfigTypes.h
include/ComM_Dcm.h
include/ComM_EcuM.h
include/ComM_Types.h
include/ComStack_Types.h
include/Com_Com.h
include/Com_Sched.h
include/Com_Types.h
include/Compiler.h
include/Dcm_Cbk.h
include/Dem.h
include/Det.h
include/Dio.h
include/EcuM.h
include/EcuM_Cbk.h
include/Eep.h
include/Fee.h
include/Fls.h
include/Gpt.h
include/Gpt_ConfigTypes.h [moved from communication/Com/Com_RunTest.h with 69% similarity]
include/McuExtensions.h
include/MemIf.h
include/MemIf_Types.h
include/MemMap.h
include/Modules.h
include/Nm.h
include/NmStack_Types.h
include/NvM.h
include/NvM_ConfigTypes.h
include/Os.h
include/PduR.h
include/PduR_CanIf.h
include/PduR_Dcm.h
include/PduR_Types.h
include/Platform_Types.h
include/Port.h
include/Rte_Main.h [moved from communication/Com/Com_TestData.h with 79% similarity]
include/Std_Types.h
include/WdgIf.h [moved from system/WdgM/WdgM.h with 62% similarity]
include/WdgIf_Types.h [new file with mode: 0644]
include/WdgM.h [new file with mode: 0644]
include/arc.h
include/arm/arm_cm3/Adc_ConfigTypes.h [new file with mode: 0644]
include/arm/arm_cm3/Mcu_ConfigTypes.h [new file with mode: 0644]
include/arm/arm_cm3/Port_ConfigTypes.h [new file with mode: 0644]
include/arm/arm_cm3/Pwm_ConfigTypes.h [new file with mode: 0644]
include/bit.h
include/debug.h
include/generic/Cpu.h
include/hc1x/Adc_ConfigTypes.h [new file with mode: 0644]
include/irq.h
include/isr.h [new file with mode: 0644]
include/os_config_funcs.h
include/os_config_macros.h
include/ppc/Cpu.h
include/ppc/asm_book_e.h [deleted file]
include/ppc/asm_ppc.h
makefile
memory/Fee/Fee.c
memory/NvM/NvM.c
scripts/cc_cw.mk [new file with mode: 0644]
scripts/cc_gcc.mk
scripts/compile_examples.sh [changed mode: 0644->0755]
scripts/gcc_map_memory.awk [new file with mode: 0644]
scripts/pclint/std.lnt
scripts/rules.mk
scripts/version_check.mk [new file with mode: 0644]
system/EcuM/EcuM.c
system/EcuM/EcuM_Internals.h
system/EcuM/EcuM_Main.c
system/WdgIf/WdgIf.c [new file with mode: 0644]
system/WdgM/WdgM.c
system/WdgM/WdgM_cfg.h [deleted file]
system/kernel/alarm.c
system/kernel/application.c
system/kernel/asm_offset.c
system/kernel/asm_sample.c
system/kernel/com_internal.c [deleted file]
system/kernel/counter.c
system/kernel/event.c
system/kernel/include/alarm_i.h
system/kernel/include/application.h
system/kernel/include/arch.h
system/kernel/include/com_internal.h [deleted file]
system/kernel/include/counter_i.h
system/kernel/include/ext_config.h
system/kernel/include/internal.h
system/kernel/include/kernel.h
system/kernel/include/pcb.h
system/kernel/include/sched_table_i.h
system/kernel/include/sys.h
system/kernel/include/task_i.h
system/kernel/init.c
system/kernel/isr.c
system/kernel/kernel_offset.c
system/kernel/makefile
system/kernel/memory.c
system/kernel/os_arctest.c
system/kernel/resource.c
system/kernel/sched_table.c
system/kernel/task.c
tools/t32/arccore.men [moved from tools/t32/autosar.men with 88% similarity]
tools/t32/config.cmm
tools/t32/mpc55xx_sim.dll
tools/t32/sim_mpc55xx.cmm
tools/t32/start.cmm

index 2397529cc9a91813505e603ff8416813652168c8..21d440226e7c6afa7dfe4072ef2a92db247492f5 100644 (file)
--- a/.hgignore
+++ b/.hgignore
@@ -12,8 +12,7 @@ syntax: glob
 # switch to regexp syntax.\r
 syntax: regexp\r
 ^.*obj_.*\.[h|c|s]\r
-\r
-\r
+^\.lib.*\.arxml\r
 
 syntax: regexp
 ^.project$
\ No newline at end of file
index 22575a988dc299719b3cc344e5bc45d7b3aefc8f..bf0e33db72322b8fa2dba4c68ebb7e5655bccc0e 100644 (file)
@@ -25,7 +25,7 @@
 #include "Det.h"\r
 #if defined(USE_KERNEL)\r
 #include "Os.h"\r
-#include "irq.h"\r
+#include "isr.h"\r
 #endif\r
 \r
 \r
@@ -195,7 +195,7 @@ Std_ReturnType Adc_ReadGroup (Adc_GroupType group, Adc_ValueGroupType *dataBuffe
 \r
   if (E_OK == Adc_CheckReadGroup (group))\r
   {\r
-    if ((ADC_CONV_MODE_CONTINOUS == AdcConfigPtr->groupConfigPtr[group].conversionMode) &&\r
+    if ((ADC_CONV_MODE_CONTINUOUS == AdcConfigPtr->groupConfigPtr[group].conversionMode) &&\r
          ((ADC_STREAM_COMPLETED    == AdcConfigPtr->groupConfigPtr[group].status->groupStatus) ||\r
           (ADC_COMPLETED           == AdcConfigPtr->groupConfigPtr[group].status->groupStatus)))\r
     {\r
index 64affcf0cdda0fcafec30264cc32a8ec00fd36de..6368c8ee89da81e4a480536ccc1eaabedab0ff96 100644 (file)
@@ -29,7 +29,7 @@
 #include <stdlib.h>\r
 #include <string.h>\r
 #include "Os.h"
-#include "irq.h"\r
+#include "isr.h"\r
 #include "arc.h"
 \r
 
index 9acbd90e3e2b97a8dcde0f44c360b8446f83b6ec..7ca8cad35a78fe381dc22c4ff9084c901029f3db 100644 (file)
@@ -26,20 +26,9 @@ const GPIO_TypeDefPtr GPIO_ports[] = { GPIOA, GPIOB, GPIOC, GPIOD, GPIOE, GPIOF
 #define DIO_GET_PORT_FROM_CHANNEL_ID(_channelId) (_channelId / 16)\r
 #define DIO_GET_BIT_FROM_CHANNEL_ID(_channelId) (1 << (_channelId % 16))\r
 \r
-#if ( DIO_VERSION_INFO_API == STD_ON )\r
-static Std_VersionInfoType _Dio_VersionInfo =\r
-{\r
-       .vendorID   = (uint16)1,\r
-       .moduleID   = (uint16)1,\r
-       .instanceID = (uint8)1,\r
-       .sw_major_version = (uint8)DIO_SW_MAJOR_VERSION,\r
-       .sw_minor_version = (uint8)DIO_SW_MINOR_VERSION,\r
-       .sw_patch_version = (uint8)DIO_SW_PATCH_VERSION,\r
-       .ar_major_version = (uint8)DIO_AR_MAJOR_VERSION,\r
-       .ar_minor_version = (uint8)DIO_AR_MINOR_VERSION,\r
-       .ar_patch_version = (uint8)DIO_AR_PATCH_VERSION,\r
-};\r
-#endif\r
+#define CHANNEL_PTR            (&DioChannelConfigData)\r
+#define PORT_PTR               (&DioPortConfigData)\r
+#define CHANNEL_GRP_PTR        (&DioConfigData)\r
 \r
 #if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
 static int Channel_Config_Contains(Dio_ChannelType channelId)\r
@@ -118,7 +107,10 @@ Dio_PortLevelType Dio_ReadPort(Dio_PortType portId)
 \r
        level = GPIO_ReadInputData(GPIO_ports[portId]);\r
 \r
-       cleanup: return level;\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+       cleanup:\r
+#endif\r
+       return level;\r
 }\r
 \r
 void Dio_WritePort(Dio_PortType portId, Dio_PortLevelType level)\r
@@ -127,7 +119,10 @@ void Dio_WritePort(Dio_PortType portId, Dio_PortLevelType level)
 \r
        GPIO_Write(GPIO_ports[portId], level);\r
 \r
-    cleanup: return;\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+       cleanup:\r
+#endif\r
+       return;\r
 }\r
 \r
 Dio_LevelType Dio_ReadChannel(Dio_ChannelType channelId)\r
@@ -144,7 +139,10 @@ Dio_LevelType Dio_ReadChannel(Dio_ChannelType channelId)
                level = STD_LOW;\r
        }\r
 \r
-       cleanup: return (level);\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+       cleanup:\r
+#endif\r
+       return (level);\r
 }\r
 \r
 void Dio_WriteChannel(Dio_ChannelType channelId, Dio_LevelType level)\r
@@ -162,7 +160,10 @@ void Dio_WriteChannel(Dio_ChannelType channelId, Dio_LevelType level)
 \r
        Dio_WritePort(DIO_GET_PORT_FROM_CHANNEL_ID(channelId), portVal);\r
 \r
-       cleanup: return;\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+       cleanup:\r
+#endif\r
+       return;\r
 }\r
 \r
 \r
@@ -178,7 +179,10 @@ Dio_PortLevelType Dio_ReadChannelGroup(
        // Shift down\r
        level = level >> channelGroupIdPtr->offset;\r
 \r
-       cleanup: return level;\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+       cleanup:\r
+#endif\r
+       return level;\r
 }\r
 \r
 void Dio_WriteChannelGroup(const Dio_ChannelGroupType *channelGroupIdPtr,\r
@@ -197,7 +201,10 @@ void Dio_WriteChannelGroup(const Dio_ChannelGroupType *channelGroupIdPtr,
 \r
        Dio_WritePort(channelGroupIdPtr->port, portVal);\r
 \r
-       cleanup: return;\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+       cleanup:\r
+#endif\r
+       return;\r
 }\r
 \r
 \r
index 79adc03aff4acd865134c86b33eb25da1b4c1ca2..f25c4856134d7bf0adc90de8110b26a5aa44895b 100644 (file)
@@ -21,7 +21,7 @@
 #include <string.h>\r
 #if defined(USE_KERNEL)\r
 #include "Os.h"\r
-#include "irq.h"\r
+#include "isr.h"\r
 #include "arc.h"\r
 #endif\r
 #include "stm32f10x.h"\r
 #include "Det.h"\r
 #if defined(USE_KERNEL)\r
 #include "Os.h"\r
-#include "irq.h"\r
+#include "isr.h"\r
 #endif\r
 \r
 // Implementation specific\r
 /* STM32 helper arrays\r
- *
+ *\r
  */\r
 TIM_TypeDef * const TimAddr[] =\r
 {\r
@@ -318,13 +318,13 @@ void Gpt_StartTimer(Gpt_ChannelType channel, Gpt_ValueType period_ticks)
                TimAddr[channel]->CR1 |= (TIM_CR1_CEN | TIM_CR1_URS | TIM_CR1_DIR);\r
                TimAddr[channel]->CR1 &= ~TIM_CR1_UDIS;\r
        }\r
-\r
+       #if ( GPT_ENABLE_DISABLE_NOTIFICATION_API == STD_ON )\r
        if( Gpt_Global.config[confCh].GptNotification != NULL )\r
        {\r
                // GPT275\r
                Gpt_EnableNotification(channel);\r
        }\r
-\r
+       #endif\r
        Gpt_Unit[channel].state = GPT_STATE_STARTED;\r
 }\r
 \r
@@ -339,8 +339,9 @@ void Gpt_StopTimer(Gpt_ChannelType channel)
                // Disable timer\r
                TimAddr[channel]->CR1 &= ~TIM_CR1_CEN;\r
        }\r
-\r
+       #if ( GPT_ENABLE_DISABLE_NOTIFICATION_API == STD_ON )\r
        Gpt_DisableNotification(channel);\r
+       #endif\r
        Gpt_Unit[channel].state = GPT_STATE_STOPPED;\r
 }\r
 \r
index 865eaef5330b08dcfedb6c658f7922a6d9917cbb..6d394786c0b1ca447498bbf2e8594b60410be247 100644 (file)
@@ -25,7 +25,6 @@
 #include <string.h>\r
 #include "Ramlog.h"\r
 \r
-//#define USE_TRACE 1\r
 //#define USE_LDEBUG_PRINTF 1\r
 #include "debug.h"\r
 \r
@@ -180,10 +179,13 @@ static uint32_t GetPllValueFromMult(uint8_t pll)
 {\r
        return (((uint32_t)pll - 2) << 18);\r
 }\r
+\r
+#ifdef STM32F10X_CL\r
 static uint32_t GetPll2ValueFromMult(uint8_t pll)\r
 {\r
        return (((uint32_t)pll - 2) << 8);\r
 }\r
+#endif\r
 \r
 /**\r
   * Set bus clocks. SysClk,AHBClk,APB1Clk,APB2Clk\r
index 41301d468a1718883373ac019c9b7d3d76265f81..c2ad9c2c83cd4fae4203e4221c3be29291089d36 100644 (file)
@@ -55,13 +55,13 @@ static Port_ConfigType * _configPtr = NULL;
 #define VALIDATE_PARAM_CONFIG(_ptr,_api) \\r
        if( (_ptr)==((void *)0) ) { \\r
                Det_ReportError(MODULE_ID_PORT, 0, _api, PORT_E_PARAM_CONFIG ); \\r
-               goto cleanup; \\r
+               return; \\r
        }\r
 \r
 #define VALIDATE_STATE_INIT(_api)\\r
        if(PORT_INITIALIZED!=_portState){\\r
                Det_ReportError(MODULE_ID_PORT, 0, _api, PORT_E_UNINIT ); \\r
-               goto cleanup; \\r
+               return; \\r
        }\r
 \r
 #else\r
@@ -70,6 +70,7 @@ static Port_ConfigType * _configPtr = NULL;
 #define VALIDATE_PARAM_PIN(_api)\r
 #endif\r
 \r
+#if (PORT_VERSION_INFO_API == STD_ON)\r
 static Std_VersionInfoType _Port_VersionInfo =\r
 { .vendorID = (uint16)1, .moduleID = (uint16) MODULE_ID_PORT,\r
         .instanceID = (uint8)1,\r
@@ -79,6 +80,7 @@ static Std_VersionInfoType _Port_VersionInfo =
         .ar_major_version = (uint8)PORT_AR_MAJOR_VERSION,\r
         .ar_minor_version = (uint8)PORT_AR_MINOR_VERSION,\r
         .ar_patch_version = (uint8)PORT_AR_PATCH_VERSION, };\r
+#endif\r
 \r
 /** @req PORT140 */\r
 /** @req PORT041 Comment: To reduce flash usage the configuration tool can disable configuration of some ports  */\r
@@ -116,7 +118,7 @@ void Port_Init(const Port_ConfigType *configType)
 \r
     _portState = PORT_INITIALIZED;\r
     _configPtr = (Port_ConfigType *)configType;\r
-    cleanup: return;\r
+    return;\r
 }\r
 \r
 /** @req PORT141 */\r
@@ -160,7 +162,7 @@ void Port_SetPinDirection( Port_PinType pin, Port_PinDirectionType direction )
     *gpioAddr |= (GPIO_OUTPUT_2MHz_MODE | GPIO_OUTPUT_PUSHPULL_CNF) << bit; // TODO shall this be added to conf?\r
   }\r
 \r
-  cleanup:return;\r
+  return;\r
 }\r
 #endif\r
 \r
@@ -173,7 +175,7 @@ void Port_RefreshPortDirection(void)
     VALIDATE_STATE_INIT(PORT_REFRESH_PORT_DIRECTION_ID);\r
 \r
     /* TODO Not implemented yet */\r
-    cleanup: return;\r
+    return;\r
 }\r
 \r
 /** req PORT143 */\r
@@ -184,7 +186,7 @@ void Port_GetVersionInfo(Std_VersionInfoType* versionInfo)
 {\r
     VALIDATE_STATE_INIT(PORT_GET_VERSION_INFO_ID);\r
     memcpy(versionInfo, &_Port_VersionInfo, sizeof(Std_VersionInfoType));\r
-    cleanup: return;\r
+    return;\r
 }\r
 #endif\r
 \r
@@ -201,6 +203,6 @@ void Port_SetPinMode(Port_PinType Pin, Port_PinModeType Mode)
     Det_ReportError(MODULE_ID_PORT, 0, PORT_SET_PIN_MODE_ID, PORT_E_MODE_UNCHANGEABLE );\r
 #endif\r
 \r
-    cleanup: return;\r
+    return;\r
 }\r
 #endif\r
diff --git a/arch/arm/arm_cm3/drivers/Wdg.c b/arch/arm/arm_cm3/drivers/Wdg.c
new file mode 100644 (file)
index 0000000..b3d453b
--- /dev/null
@@ -0,0 +1,187 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------\r
+ * Wdg.c\r
+ *\r
+ *  Created on: 22 feb 2010\r
+ *      Author: Fredrik\r
+ */\r
+\r
+#include "stm32f10x.h"\r
+#include "Wdg.h"\r
+\r
+/* Independant WD.  */\r
+static const Wdg_IWDG_ConfigType *configIWDGPtr;\r
+static const Wdg_IWDG_SettingsType *modeIWDGConfig;\r
+/* Windowed WD. */\r
+static const Wdg_WWDG_ConfigType *configWWDGPtr;\r
+static const Wdg_WWDG_SettingsType *modeWWDGConfig;\r
+\r
+\r
+void Wdg_IWDG_Init (const Wdg_IWDG_ConfigType* ConfigPtr)\r
+{\r
+       /* Keep a pointer to the config. */\r
+       configIWDGPtr = ConfigPtr;\r
+\r
+       Wdg_IWDG_SetMode(ConfigPtr->Wdg_IWDGModeConfig->Wdg_DefaultMode);\r
+}\r
+\r
+void Wdg_WWDG_Init (const Wdg_WWDG_ConfigType* ConfigPtr)\r
+{\r
+       /* Keep a pointer to the config. */\r
+       configWWDGPtr = ConfigPtr;\r
+\r
+       /* TODO: Move to Mcu.. */\r
+       RCC->APB1ENR |= (1 << 11);\r
+\r
+       Wdg_WWDG_SetMode(ConfigPtr->Wdg_WWDGModeConfig->Wdg_DefaultMode);\r
+}\r
+\r
+void Wdg_Init (const Wdg_ConfigType* ConfigPtr)\r
+{\r
+       Wdg_IWDG_Init(ConfigPtr->Wdg_IWDG_Config);\r
+       Wdg_WWDG_Init(ConfigPtr->Wdg_WWDG_Config);\r
+}\r
+\r
+void Wdg_IWDG_Trigger (void)\r
+{\r
+       IWDG->KR = 0xAAAA;\r
+}\r
+\r
+void Wdg_WWDG_Trigger (void)\r
+{\r
+       volatile uint32 temp;\r
+\r
+       if (modeWWDGConfig != 0)\r
+       {\r
+               temp = WWDG->CR;\r
+\r
+               /* Set counter to preset value. */\r
+               temp |= (modeWWDGConfig->CounterPreset & WWDG_CR_T);\r
+\r
+               WWDG->CR = temp;\r
+       }\r
+}\r
+\r
+Std_ReturnType Wdg_IWDG_SetMode (WdgIf_ModeType Mode)\r
+{\r
+       Std_ReturnType res = E_NOT_OK;\r
+       switch (Mode)\r
+       {\r
+       case WDGIF_OFF_MODE:\r
+               modeIWDGConfig = &configIWDGPtr->Wdg_IWDGModeConfig->WdgSettingsOff;\r
+               break;\r
+       case WDGIF_FAST_MODE:\r
+               modeIWDGConfig = &configIWDGPtr->Wdg_IWDGModeConfig->WdgSettingsFast;\r
+               break;\r
+       case WDGIF_SLOW_MODE:\r
+               modeIWDGConfig = &(configIWDGPtr->Wdg_IWDGModeConfig->WdgSettingsSlow);\r
+               break;\r
+       default:\r
+               modeIWDGConfig = 0;\r
+               break;\r
+       }\r
+       if (modeIWDGConfig != 0)\r
+       {\r
+               /* Unlock the iwdg registers. */\r
+               IWDG->KR = 0x5555;\r
+\r
+               /* Configure prescaler and reload value.  */\r
+               IWDG->PR = modeIWDGConfig->TimerBase;\r
+               IWDG->RLR = modeIWDGConfig->ReloadValue;\r
+\r
+               /* Lock the iwdg registers again. */\r
+               IWDG->KR = 0x0;\r
+\r
+               /* Enable watchdog if config tell us to.. */\r
+               if (modeIWDGConfig->ActivationBit)\r
+               {\r
+                       /* IWDG is started by writing 0xCCCC to key register. */\r
+                       IWDG->KR = 0xCCCC;\r
+           }\r
+               else\r
+               {\r
+                       /* There is no way to disable this watchdog.. */\r
+               }\r
+               res = E_OK;\r
+       }\r
+       return res;\r
+}\r
+\r
+Std_ReturnType Wdg_WWDG_SetMode (WdgIf_ModeType Mode)\r
+{\r
+       Std_ReturnType res = E_NOT_OK;\r
+       switch (Mode)\r
+       {\r
+       case WDGIF_OFF_MODE:\r
+               modeWWDGConfig = &configWWDGPtr->Wdg_WWDGModeConfig->WdgSettingsOff;\r
+               break;\r
+       case WDGIF_FAST_MODE:\r
+               modeWWDGConfig = &configWWDGPtr->Wdg_WWDGModeConfig->WdgSettingsFast;\r
+               break;\r
+       case WDGIF_SLOW_MODE:\r
+               modeWWDGConfig = &configWWDGPtr->Wdg_WWDGModeConfig->WdgSettingsSlow;\r
+               break;\r
+       default:\r
+               modeWWDGConfig = 0;\r
+               break;\r
+       }\r
+       if (modeWWDGConfig != 0)\r
+       {\r
+               /* Enable watchdog in system reset mode. */\r
+               volatile uint32 temp;\r
+               temp = WWDG->CFR;\r
+               /* Clear prescaler bits. */\r
+               temp &= ~WWDG_CFR_WDGTB;\r
+               temp |= ((modeWWDGConfig->TimerBase << 7) & WWDG_CFR_WDGTB);\r
+\r
+               /* Configure window. */\r
+               temp &= ~WWDG_CFR_W;\r
+               temp |= (modeWWDGConfig->WindowValue & WWDG_CFR_W);\r
+\r
+               WWDG->CFR = temp;\r
+\r
+               temp = WWDG->CR;\r
+               temp &= ~WWDG_CR_T;\r
+               /* Set counter. */\r
+               temp |= (modeWWDGConfig->CounterPreset & WWDG_CR_T);\r
+\r
+               /* Enable watchdog if config tell us to.. */\r
+               if (modeWWDGConfig->ActivationBit)\r
+               {\r
+                       temp |= WWDG_CR_WDGA;\r
+               }\r
+               else\r
+               {\r
+                       temp &= ~WWDG_CR_WDGA;\r
+               }\r
+               WWDG->CR = temp;\r
+\r
+               /* Clear EWI flag. */\r
+               WWDG->SR = 0;\r
+               res = E_OK;\r
+       }\r
+       return res;\r
+}\r
+\r
+\r
+void Wdg_IWDG_GetVersionInfo (void /*Std_VersionInfoType* versioninfo*/)\r
+{\r
+\r
+}\r
+\r
+void Wdg_WWDG_GetVersionInfo (void /*Std_VersionInfoType* versioninfo*/)\r
+{\r
+\r
+}\r
diff --git a/arch/arm/arm_cm3/drivers/Wdg.h b/arch/arm/arm_cm3/drivers/Wdg.h
new file mode 100644 (file)
index 0000000..d36e09f
--- /dev/null
@@ -0,0 +1,38 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------\r
+ * Wdg.h\r
+ *\r
+ *  Created on: 27 maj 2010\r
+ *      Author: Fredrik\r
+ */\r
+\r
+#ifndef WDG_H_\r
+#define WDG_H_\r
+\r
+#include "Wdg_Cfg.h"\r
+\r
+void Wdg_IWDG_Init (const Wdg_IWDG_ConfigType* ConfigPtr);\r
+void Wdg_IWDG_Trigger (void);\r
+Std_ReturnType Wdg_IWDG_SetMode (WdgIf_ModeType Mode);\r
+void Wdg_IWDG_GetVersionInfo (void /* TODO Std_VersionInfoType* versioninfo*/);\r
+\r
+void Wdg_WWDG_Init (const Wdg_WWDG_ConfigType* ConfigPtr);\r
+void Wdg_WWDG_Trigger (void);\r
+Std_ReturnType Wdg_WWDG_SetMode (WdgIf_ModeType Mode);\r
+void Wdg_WWDG_GetVersionInfo (void /* TODO Std_VersionInfoType* versioninfo*/);\r
+\r
+void Wdg_Init (const Wdg_ConfigType* ConfigPtr);\r
+\r
+#endif /* WDG_H_ */\r
index 4e71d30e47b5673b96bd6e70a7d5a01766405abb..8cd012b5b9bdf8173ec74fefbf4c2cd8d224f9a6 100644 (file)
@@ -27,7 +27,7 @@ void Os_ArchFirstCall( void )
 {\r
        // TODO: make switch here... for now just call func.\r
        Irq_Enable();\r
-       os_sys.curr_pcb->entry();\r
+       Os_Sys.currTaskPtr->entry();\r
 }\r
 \r
 void *Os_ArchGetStackPtr( void ) {\r
@@ -39,7 +39,7 @@ unsigned int Os_ArchGetScSize( void ) {
        return SC_SIZE;\r
 }\r
 \r
-void Os_ArchSetTaskEntry(OsPcbType *pcbPtr ) {\r
+void Os_ArchSetTaskEntry(OsTaskVarType *pcbPtr ) {\r
        // TODO: Add lots of things here, see ppc55xx\r
        uint32_t *context = (uint32_t *)pcbPtr->stack.curr;\r
 \r
@@ -54,7 +54,7 @@ void Os_ArchSetTaskEntry(OsPcbType *pcbPtr ) {
 \r
 }\r
 \r
-void Os_ArchSetupContext( OsPcbType *pcb ) {\r
+void Os_ArchSetupContext( OsTaskVarType *pcb ) {\r
        // TODO: Add lots of things here, see ppc55xx\r
        // uint32_t *context = (uint32_t *)pcb->stack.curr;\r
 \r
index c9103fd39b2671d649bcda7132c015b7ad4b439b..f4abc0ed5cdea4f48d06fa9639ee296c5292c7bf 100644 (file)
@@ -10,7 +10,7 @@
 #include "arch_offset.h"\r
 #include "stack.h"\r
 \r
-.extern os_sys\r
+.extern Os_Sys\r
 .extern TailChaining\r
 \r
        .syntax unified\r
@@ -61,7 +61,7 @@ Irq_Handler:
     mov        r0,sp                   // stack as first arg\r
 \r
     // When at interrupt nest count = 0, load interrupt stack    \r
-       ldr      r4,=os_sys\r
+       ldr      r4,=Os_Sys\r
        ldr      r5,[r4,#SYS_INT_NEST_CNT]\r
        cmp      r5, #0\r
        bgt      arggg  \r
@@ -163,7 +163,7 @@ Os_ArchSwapContextTo:
 \r
 // TODO: Fix this for all arch's..call pre,post hooks. Done here or after?\r
 // Set new current pcb\r
-    ldr     r5,= os_sys\r
+    ldr     r5,= Os_Sys\r
     str     r1,[r5,#SYS_CURR_PCB_P]\r
 \r
 // Restore C context\r
index 172f798e779e32e35bfedefb9e0d5b74adf321c0..44590eabafea21d14e53f5ada2a0fa3a124ea3a3 100644 (file)
@@ -17,7 +17,7 @@
 #include "task_i.h"
 #include "hooks.h"
 #include "stm32f10x.h"
-#include "irq.h"
+#include "isr.h"
 
 extern void *Irq_VectorTable[NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS];
 
@@ -147,9 +147,9 @@ static inline int osPrioToCpuPio( uint8_t prio ) {
  * @param vector
  */
 void Irq_AttachIsr2(TaskType tid,void *int_ctrl,IrqType vector ) {
-       OsPcbType *pcb;
+       OsTaskVarType *pcb;
 
-       pcb = os_find_task(tid);
+       pcb = Os_TaskGet(tid);
        Irq_VectorTable[vector+16] = (void *)pcb;
 
        NVIC_InitVector(vector, osPrioToCpuPio(pcb->prio));
index 0c060e916bf4882ece82de1cd6245874ddcff306..736316cb33498e46ea1b980f52618447e93b0bc4 100644 (file)
@@ -16,7 +16,7 @@
 #include "Os.h"\r
 #include "internal.h"\r
 #include "stm32f10x.h"\r
-#include "irq.h"\r
+#include "isr.h"\r
 #include "arc.h"\r
 \r
 \r
index c838c8a3f133e9e08758f3a84a66ca0e35cdd315..9af6facad786c4ba5441a3f545b148cf125e8010 100644 (file)
@@ -22,8 +22,9 @@
 #include "Det.h"\r
 #include "CanIf_Cbk.h"\r
 #include "Os.h"\r
-#include "irq.h"\r
+#include "isr.h"\r
 #include "Mcu.h"\r
+#include "arc.h"\r
 \r
 #define DCAN1_MAX_MESSAGEBOXES 64\r
 #define DCAN2_MAX_MESSAGEBOXES 64\r
@@ -202,99 +203,146 @@ static inline const Can_HardwareObjectType * Can_FindRxHoh(CanControllerIdType C
        return 0;\r
 }\r
 \r
-uint32 usedBoxes[64] = {0};\r
+#define DCAN_MC_NEWDAT 15\r
+#define DCAN_MC_EOB            7\r
+\r
+uint32 usedRxBoxes[64] = {0};\r
+uint32 usedTxBoxes[64] = {0};\r
+\r
+static inline Can_ReturnType handleRxMsgObject(uint8 MsgNr, const Can_HardwareObjectType *hoh, CanControllerIdType controller) {\r
+       uint32  MsgId;\r
+       uint8   MsgDlc;\r
+       uint8   DataByteIndex;\r
+       uint8  *SduPtr;\r
+\r
+       /* Wait until Busy Flag is 0 */\r
+       DCAN_WAIT_UNTIL_NOT_BUSY_NO_RV(controller, IfRegId);\r
+\r
+       // Read message control\r
+       uint32 mc = CanRegs[controller]->IFx[IfRegId].MC;\r
+       uint32 arb = CanRegs[controller]->IFx[IfRegId].ARB;\r
+\r
+       // Is there a new message waiting?\r
+       if (!(mc & (1 << DCAN_MC_NEWDAT))) {\r
+               return CAN_NOT_OK; // Nothing more to be done.\r
+       }\r
+\r
+       // For debug\r
+       if (MsgNr == 0) {\r
+               usedRxBoxes[MsgNr]++;\r
+       } else {\r
+               usedRxBoxes[MsgNr]++;\r
+       }\r
+\r
+\r
+       /* Extended Id */\r
+       if(arb & 0x40000000) {\r
+               /* Bring Id to standardized format (MSB marks extended Id) */\r
+               MsgId = (arb & 0x1FFFFFFF) | 0x80000000;\r
+\r
+       } else { /* Standard Id */\r
+               /* Bring Id to standardized format (MSB marks extended Id) */\r
+               MsgId = (arb & 0x1FFC0000) >> 18;\r
+       }\r
+\r
+       /* DLC (Max 8) */\r
+       MsgDlc = mc & 0x000F;\r
+       if(MsgDlc > 8) {\r
+               MsgDlc = 8;\r
+       }\r
+\r
+       /* Let SduPtr point to Shadow Buffer */\r
+       SduPtr = RxShadowBuf[controller];\r
+\r
+       /* Copy Message Data to Shadow Buffer */\r
+       for(DataByteIndex = 0; DataByteIndex < MsgDlc; DataByteIndex++)\r
+       {\r
+               SduPtr[DataByteIndex] = CanRegs[controller]->IFx[IfRegId].DATx[ElementIndex[DataByteIndex]];\r
+       }\r
+\r
+       /* Indicate successful Reception */\r
+       CanIf_RxIndication(hoh->CanObjectId, MsgId, MsgDlc, SduPtr);\r
+\r
+       // Is this the last message object of the FIFO?\r
+       if (mc & (1 << DCAN_MC_EOB)) {\r
+               return CAN_NOT_OK;\r
+       }\r
+\r
+       return CAN_OK;\r
+}\r
+\r
 \r
 void Can_InterruptHandler(CanControllerIdType controller)\r
 {\r
     uint32  MsgNr;\r
-    uint32  MsgId;\r
-    uint8   MsgDlc;\r
-    uint8   DataByteIndex;\r
-    uint8  *SduPtr;\r
-\r
-    //Can_DisableControllerInterrupts(controller);\r
 \r
     uint32 ir = CanRegs[controller]->IR;\r
 \r
-    if(ir == 0x8000)\r
-    {\r
+\r
+    if(ir == 0x8000) { // This is an error interrupt\r
+\r
        uint32 sr = CanRegs[controller]->SR;\r
-        /* WakeUp Pending */\r
-        if(sr & 0x00000200) {\r
+\r
+        if(sr & 0x00000200) { /* WakeUp Pending */\r
             /* Set Init Bit, so that Controller is in Stop state */\r
             CanRegs[controller]->CTL |= 0x1;\r
            // EcuM_CheckWakeUp(ControllerConfig[0].WakeupSrc);\r
 \r
         }\r
-        /* Bus Off */\r
-        if(sr & 0x00000080) {\r
+\r
+        if(sr & 0x00000080) { /* Bus Off */\r
                Can_SetControllerMode(controller, CAN_T_STOP); // CANIF272\r
             //CanIf_ControllerBusOff(0); // Not implemented in Arctic Core\r
 \r
         }\r
-    }\r
-    else\r
-    {\r
-        MsgNr = ir;\r
-\r
 \r
-        if (MsgNr == 0) {\r
-               usedBoxes[MsgNr]++;\r
-        } else {\r
-               usedBoxes[MsgNr]++;\r
-        }\r
-        \r
+    } else if (ir > 0 && ir < 0x8000){ // This interrupt is from a message object.\r
+        MsgNr = ir;\r
 \r
-        /* Read Arbitration, Control and Data Bits and clear IntPnd and NewDat*/\r
-        CanRegs[controller]->IFx[IfRegId].COM = 0x003F0000 | MsgNr;\r
+        /* Read Arbitration and control */\r
+               CanRegs[controller]->IFx[IfRegId].COM = 0x003F0000 | MsgNr;\r
 \r
-        /* Wait until Busy Flag is 0 */\r
-        DCAN_WAIT_UNTIL_NOT_BUSY_NO_RV(controller, IfRegId);\r
+               /* Wait until Busy Flag is 0 */\r
+               DCAN_WAIT_UNTIL_NOT_BUSY_NO_RV(controller, IfRegId);\r
 \r
         /* Transmit Object */\r
         if(CanRegs[controller]->IFx[IfRegId].ARB & 0x20000000)\r
         {\r
+               // For debug\r
+               if (MsgNr == 0) {\r
+                       usedTxBoxes[MsgNr]++;\r
+               } else {\r
+                       usedTxBoxes[MsgNr]++;\r
+               }\r
+\r
             /* Reset TxRqst-Array Element */\r
                ControllerConfig[controller].TxPtr[MsgNr - 1] = 0;\r
             /* A Message was successfully transmitted */\r
             CanIf_TxConfirmation(ControllerConfig[controller].PduPtr[MsgNr - 1].swPduHandle);\r
-        }\r
+\r
         /* Receive Object */\r
-        else\r
-        {\r
-            /* Extended Id */\r
-            if(CanRegs[controller]->IFx[IfRegId].ARB & 0x40000000)\r
-            {\r
-                /* Bring Id to standardized format (MSB marks extended Id) */\r
-                MsgId = (CanRegs[controller]->IFx[IfRegId].ARB & 0x1FFFFFFF) | 0x80000000;\r
-            }\r
-            /* Standard Id */\r
-            else\r
-            {\r
-                /* Bring Id to standardized format (MSB marks extended Id) */\r
-                MsgId = (CanRegs[controller]->IFx[IfRegId].ARB & 0x1FFC0000) >> 18;\r
-            }\r
-            /* DLC (Max 8) */\r
-            MsgDlc = CanRegs[controller]->IFx[IfRegId].MC & 0x000F;\r
-            if(MsgDlc > 8)\r
-            {\r
-                MsgDlc = 8;\r
-            }\r
-            /* Let SduPtr point to Shadow Buffer */\r
-            SduPtr = RxShadowBuf[controller];\r
+        } else {\r
 \r
-            /* Copy Message Data to Shadow Buffer */\r
-            for(DataByteIndex = 0; DataByteIndex < MsgDlc; DataByteIndex++)\r
-            {\r
-               SduPtr[DataByteIndex] = CanRegs[controller]->IFx[IfRegId].DATx[ElementIndex[DataByteIndex]];\r
-            }\r
-            /* Indicate successful Reception */\r
-            const Can_HardwareObjectType *hoh = Can_FindRxHoh(controller, MsgNr);\r
-            CanIf_RxIndication(hoh->CanObjectId, MsgId, MsgDlc, SduPtr);\r
+               // Handle all of the message objects in this FIFO buffer.\r
+               const Can_HardwareObjectType *hoh = Can_FindRxHoh(controller, MsgNr);\r
+               for(; MsgNr < ControllerConfig[controller].MaxBoxes; MsgNr++) {\r
+                       if (!(hoh->Can_Arc_MbMask & (1 << (MsgNr - 1)))) {\r
+                               continue;\r
+                       }\r
+\r
+                       /* Read setup hardware to read arbitration, control and data Bits of the message object.\r
+                        * Clear IntPnd and Tx */\r
+                       if (MsgNr != ir) { // Don't do this the first time.\r
+                               CanRegs[controller]->IFx[IfRegId].COM = 0x003F0000 | MsgNr;\r
+                       }\r
+\r
+                       if (handleRxMsgObject(MsgNr, hoh, controller) == CAN_NOT_OK) {\r
+                               break; // We have parsed the last object of this FIFO.\r
+                       }\r
+                       }\r
 \r
         }\r
     }\r
-    //Can_EnableControllerInterrupts(controller);\r
 }\r
 \r
 void Can1_InterruptHandler() {\r
@@ -342,7 +390,9 @@ void Can_Init(const Can_ConfigType *Config)
         return;\r
     }\r
 #endif \r
-     \r
+\r
+    imask_t i_state = McuE_EnterCriticalSection();\r
+\r
     // TODO This should be used instead of other variables in the Can_Lcfg file.\r
     CurConfig        = Config;\r
 \r
@@ -497,7 +547,7 @@ void Can_Init(const Can_ConfigType *Config)
     ModuleState = CAN_READY;\r
 #endif\r
 \r
-\r
+    McuE_ExitCriticalSection(i_state);\r
 \r
 }\r
 \r
@@ -531,6 +581,8 @@ void Can_InitController(uint8 Controller, const Can_ControllerConfigType* Config
     }\r
 #endif \r
 \r
+    imask_t i_state = McuE_EnterCriticalSection();\r
+\r
     ErrCounter = CAN_TIMEOUT_DURATION;\r
     \r
     //for(MsgNr = 0; MsgNr < ControllerConfig[Controller].MessageBoxCount; MsgNr++)\r
@@ -574,6 +626,7 @@ void Can_InitController(uint8 Controller, const Can_ControllerConfigType* Config
     /* Clear CCE Bit */\r
     CanRegs[Controller]->CTL &= ~0x00000040;\r
 \r
+    McuE_ExitCriticalSection(i_state);\r
 }\r
 \r
 \r
@@ -800,6 +853,12 @@ Can_ReturnType Can_Write(Can_Arc_HTHType Hth, Can_PduType *PduInfo)
                break;\r
     }\r
 \r
+       /* Check if TxRqst Bit of MsgObject is set */\r
+       if(CanRegs[ControllerId]->TRx[MsgNr >> 5] & (1 << (MsgNr & 0x1F)))\r
+       {\r
+               return CAN_BUSY;\r
+       }\r
+\r
     CurPduArrayPtr   = ControllerConfig[ControllerId].PduPtr    + (MsgNr - 1);\r
     CurCancelRqstPtr = ControllerConfig[ControllerId].CancelPtr + (MsgNr - 1);\r
     CurTxRqstPtr     = ControllerConfig[ControllerId].TxPtr     + (MsgNr - 1);\r
@@ -813,14 +872,12 @@ Can_ReturnType Can_Write(Can_Arc_HTHType Hth, Can_PduType *PduInfo)
         ArbRegValue = 0xA0000000 | ((PduInfo->id & 0x7FF) << 18);\r
     }\r
 \r
-    /* Check if TxRqst Bit of MsgObject is set */\r
-    if(CanRegs[ControllerId]->TRx[MsgNr >> 5] & (1 << (MsgNr & 0x1F)))\r
-    {\r
-        return CAN_BUSY;\r
-    }\r
 \r
     DCAN_WAIT_UNTIL_NOT_BUSY(ControllerId, IfRegId);\r
 \r
+    // We cannot allow an interrupt or other task to play with the COM, MC and ARB registers here.\r
+    imask_t i_state = McuE_EnterCriticalSection();\r
+\r
 \r
     /* Set NewDat, TxIE (dep on ControllerConfig), TxRqst, EoB and DLC */\r
     CanRegs[ControllerId]->IFx[IfRegId].MC =     0x00000100 // Tx request\r
@@ -848,6 +905,7 @@ Can_ReturnType Can_Write(Can_Arc_HTHType Hth, Can_PduType *PduInfo)
     \r
     IfRegId ^= 1;\r
        \r
+    McuE_ExitCriticalSection(i_state);\r
     return CAN_OK;\r
 }\r
 \r
diff --git a/arch/arm/arm_cr4/drivers/Dio.c b/arch/arm/arm_cr4/drivers/Dio.c
new file mode 100644 (file)
index 0000000..44c5db7
--- /dev/null
@@ -0,0 +1,208 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+\r
+#include "Std_Types.h"\r
+#include "Dio.h"\r
+#include "Det.h"\r
+#include "Cpu.h"\r
+#include <string.h>\r
+\r
+GIO_RegisterType *GPIO_ports[] = { GIO_PORTA_BASE, GIO_PORTB_BASE };\r
+\r
+#define DIO_GET_PORT_FROM_CHANNEL_ID(_channelId) (_channelId >> 8)\r
+#define DIO_GET_BIT_FROM_CHANNEL_ID(_channelId) (1 << (_channelId & 0x1F))\r
+\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+static int Channel_Config_Contains(Dio_ChannelType channelId)\r
+{\r
+       Dio_ChannelType* ch_ptr=(Dio_ChannelType*)(&DioChannelConfigData);\r
+       int rv=0;\r
+       while (DIO_END_OF_LIST!=*ch_ptr)\r
+       {\r
+       if (*ch_ptr==channelId)\r
+       {\r
+               rv=1;\r
+               break;\r
+       }\r
+       ch_ptr++;\r
+       }\r
+       return rv;\r
+}\r
+\r
+static int Port_Config_Contains(Dio_PortType portId)\r
+{\r
+       Dio_PortType* port_ptr=(Dio_PortType*)(&DioPortConfigData);\r
+       int rv=0;\r
+       while (DIO_END_OF_LIST!=*port_ptr)\r
+       {\r
+       if (*port_ptr==portId)\r
+       { rv=1; break;}\r
+       port_ptr++;\r
+       }\r
+       return rv;\r
+}\r
+\r
+static int Channel_Group_Config_Contains(const Dio_ChannelGroupType* _channelGroupIdPtr)\r
+{\r
+       Dio_ChannelGroupType* chGrp_ptr=(Dio_ChannelGroupType*)(&DioConfigData);\r
+       int rv=0;\r
+\r
+       while (DIO_END_OF_LIST!=chGrp_ptr->port)\r
+       {\r
+       if (chGrp_ptr->port==_channelGroupIdPtr->port&&\r
+               chGrp_ptr->offset==_channelGroupIdPtr->offset&&\r
+               chGrp_ptr->mask==_channelGroupIdPtr->mask)\r
+       { rv=1; break;}\r
+       chGrp_ptr++;\r
+       }\r
+       return rv;\r
+}\r
+\r
+#define VALIDATE_CHANNEL(_channelId, _api) \\r
+       if(0==Channel_Config_Contains(channelId)) {     \\r
+               Det_ReportError(MODULE_ID_DIO,0,_api,DIO_E_PARAM_INVALID_CHANNEL_ID ); \\r
+               level = 0;      \\r
+               goto cleanup;   \\r
+               }\r
+#define VALIDATE_PORT(_portId, _api)\\r
+       if(0==Port_Config_Contains(_portId)) {\\r
+               Det_ReportError(MODULE_ID_DIO,0,_api,DIO_E_PARAM_INVALID_PORT_ID ); \\r
+               level = STD_LOW;\\r
+               goto cleanup;\\r
+       }\r
+#define VALIDATE_CHANNELGROUP(_channelGroupIdPtr, _api)\\r
+       if(0==Channel_Group_Config_Contains(_channelGroupIdPtr)) {\\r
+               Det_ReportError(MODULE_ID_DIO,0,_api,DIO_E_PARAM_INVALID_GROUP_ID ); \\r
+               level = STD_LOW;\\r
+               goto cleanup;\\r
+       }\r
+#else\r
+#define VALIDATE_CHANNEL(_channelId, _api)\r
+#define VALIDATE_PORT(_portId, _api)\r
+#define VALIDATE_CHANNELGROUP(_channelGroupIdPtr, _api)\r
+#endif\r
+\r
+Dio_PortLevelType Dio_ReadPort(Dio_PortType portId)\r
+{\r
+       Dio_PortLevelType level = 0;\r
+       VALIDATE_PORT(portId, DIO_READPORT_ID);\r
+\r
+       level = (uint8)GPIO_ports[portId]->DIN;\r
+\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+       cleanup:\r
+#endif\r
+       return level;\r
+}\r
+\r
+void Dio_WritePort(Dio_PortType portId, Dio_PortLevelType level)\r
+{\r
+    VALIDATE_PORT(portId, DIO_WRITEPORT_ID);\r
+\r
+       GPIO_ports[portId]->DOUT = (uint32)level;\r
+\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+       cleanup:\r
+#endif\r
+       return;\r
+}\r
+\r
+Dio_LevelType Dio_ReadChannel(Dio_ChannelType channelId)\r
+{\r
+       Dio_LevelType level;\r
+       VALIDATE_CHANNEL(channelId, DIO_READCHANNEL_ID);\r
+\r
+       Dio_PortLevelType portVal = Dio_ReadPort(DIO_GET_PORT_FROM_CHANNEL_ID(channelId));\r
+       Dio_PortLevelType bit = DIO_GET_BIT_FROM_CHANNEL_ID(channelId);\r
+\r
+       if ((portVal & bit) != STD_LOW){\r
+               level = STD_HIGH;\r
+       } else{\r
+               level = STD_LOW;\r
+       }\r
+\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+       cleanup:\r
+#endif\r
+       return (level);\r
+}\r
+\r
+void Dio_WriteChannel(Dio_ChannelType channelId, Dio_LevelType level)\r
+{\r
+       VALIDATE_CHANNEL(channelId, DIO_WRITECHANNEL_ID);\r
+\r
+       Dio_PortType port = DIO_GET_PORT_FROM_CHANNEL_ID(channelId);\r
+       uint16 bit = DIO_GET_BIT_FROM_CHANNEL_ID(channelId);\r
+\r
+       if (!( GPIO_ports[port]->DIR & bit)) { // This is an input channel.\r
+               goto cleanup;\r
+       }\r
+\r
+       Dio_PortLevelType portVal = Dio_ReadPort(port);\r
+\r
+       if(level == STD_HIGH){\r
+               portVal |= bit;\r
+       }else{\r
+               portVal &= ~bit;\r
+       }\r
+\r
+       Dio_WritePort(port, portVal);\r
+\r
+       cleanup: return;\r
+}\r
+\r
+\r
+Dio_PortLevelType Dio_ReadChannelGroup(\r
+    const Dio_ChannelGroupType *channelGroupIdPtr)\r
+{\r
+       Dio_LevelType level;\r
+       VALIDATE_CHANNELGROUP(channelGroupIdPtr,DIO_READCHANNELGROUP_ID);\r
+\r
+       // Get masked values\r
+       level = Dio_ReadPort(channelGroupIdPtr->port) & channelGroupIdPtr->mask;\r
+\r
+       // Shift down\r
+       level = level >> channelGroupIdPtr->offset;\r
+\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+       cleanup:\r
+#endif\r
+       return level;\r
+}\r
+\r
+void Dio_WriteChannelGroup(const Dio_ChannelGroupType *channelGroupIdPtr,\r
+    Dio_PortLevelType level)\r
+{\r
+       VALIDATE_CHANNELGROUP(channelGroupIdPtr,DIO_WRITECHANNELGROUP_ID);\r
+\r
+       // Shift up and apply mask so that no unwanted bits are affected\r
+       level = (level << channelGroupIdPtr->offset) & channelGroupIdPtr->mask;\r
+\r
+       // Read port and clear out masked bits\r
+       Dio_PortLevelType portVal = Dio_ReadPort(channelGroupIdPtr->port) & (~channelGroupIdPtr->mask);\r
+\r
+       // Or in the upshifted masked level\r
+       portVal |= level;\r
+\r
+       Dio_WritePort(channelGroupIdPtr->port, portVal);\r
+\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+       cleanup:\r
+#endif\r
+       return;\r
+}\r
+\r
+\r
index 07e6734934d00bafe0fb523148a6f4393ea22548..b75d8ae6a31692f2a8806ebb469a0ef6f38a15eb 100644 (file)
@@ -27,7 +27,6 @@
 \r
 #include "core_cr4.h"\r
 \r
-//#define USE_TRACE 1\r
 //#define USE_LDEBUG_PRINTF 1\r
 #include "debug.h"\r
 \r
diff --git a/arch/arm/arm_cr4/drivers/Port.c b/arch/arm/arm_cr4/drivers/Port.c
new file mode 100644 (file)
index 0000000..dfe86b2
--- /dev/null
@@ -0,0 +1,236 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+\r
+#include "Std_Types.h"\r
+#include "Port.h"\r
+#include "Det.h"\r
+#include "Cpu.h"\r
+#include <string.h>\r
+\r
+#define GET_PIN_PORT(_pin) (_pin >> 8)\r
+#define GET_PIN_PIN(_pin)  (_pin & 0x1F)\r
+#define GET_PIN_MASK(_pin) (1 << (_pin & 0x1F))\r
+\r
+typedef enum\r
+{\r
+    PORT_UNINITIALIZED = 0, PORT_INITIALIZED,\r
+} Port_StateType;\r
+\r
+\r
+typedef volatile struct\r
+{\r
+    uint32 FUN;\r
+    uint32 DIR;\r
+    uint32 DIN;\r
+    uint32 DOUT;\r
+    uint32 DSET;\r
+    uint32 DCLR;\r
+    uint32 PDR;\r
+    uint32 PULDIS;\r
+    uint32 PSL;\r
+} Port_RegisterType;\r
+\r
+\r
+#define PORT_NOT_CONFIGURED 0x00000000\r
+\r
+#define PORT_0_BASE ((Port_RegisterType *)0xFFF7BC30)\r
+#define PORT_1_BASE ((Port_RegisterType *)0xFFF7BC50)\r
+#define PORT_2_BASE ((Port_RegisterType *)PORT_NOT_CONFIGURED)\r
+#define PORT_3_BASE ((Port_RegisterType *)PORT_NOT_CONFIGURED)\r
+#define PORT_4_BASE ((Port_RegisterType *)PORT_NOT_CONFIGURED)\r
+#define PORT_5_BASE ((Port_RegisterType *)PORT_NOT_CONFIGURED)\r
+#define PORT_6_BASE ((Port_RegisterType *)PORT_NOT_CONFIGURED)\r
+#define PORT_7_BASE ((Port_RegisterType *)PORT_NOT_CONFIGURED)\r
+#define PORT_8_BASE ((Port_RegisterType *)0xFFF7DDE0)\r
+#define PORT_9_BASE ((Port_RegisterType *)0xFFF7DFE0)\r
+#define PORT_10_BASE ((Port_RegisterType *)0xFFF7E1E0)\r
+#define PORT_NUMBER_OF_PORTS 11\r
+\r
+static Port_RegisterType * const Port_Base[] =\r
+{\r
+    PORT_0_BASE,\r
+    PORT_1_BASE,\r
+    PORT_2_BASE,\r
+    PORT_3_BASE,\r
+    PORT_4_BASE,\r
+    PORT_5_BASE,\r
+    PORT_6_BASE,\r
+    PORT_7_BASE,\r
+    PORT_8_BASE,\r
+    PORT_9_BASE,\r
+    PORT_10_BASE,\r
+};\r
+\r
+\r
+\r
+static Port_StateType _portState = PORT_UNINITIALIZED;\r
+static const Port_ConfigType * _configPtr = &PortConfigData;\r
+\r
+#if PORT_DEV_ERROR_DETECT == STD_ON\r
+#define VALIDATE_PARAM_CONFIG(_ptr,_api) \\r
+       if( (_ptr)==((void *)0) ) { \\r
+               Det_ReportError(MODULE_ID_PORT, 0, _api, PORT_E_PARAM_CONFIG ); \\r
+               return; \\r
+       }\r
+\r
+#define VALIDATE_STATE_INIT(_api)\\r
+       if(PORT_INITIALIZED!=_portState){\\r
+               Det_ReportError(MODULE_ID_PORT, 0, _api, PORT_E_UNINIT ); \\r
+               return; \\r
+       }\r
+\r
+#define VALIDATE_PARAM_PIN(_pin, _api)\\r
+       if(GET_PIN_PORT(_pin) >= PORT_NUMBER_OF_PORTS || Port_Base[GET_PIN_PORT(_pin)] == PORT_NOT_CONFIGURED || GET_PIN_PIN(_pin) > 7 ){\\r
+               Det_ReportError(MODULE_ID_PORT, 0, _api, PORT_E_PARAM_PIN ); \\r
+               return; \\r
+       }\r
+\r
+#else\r
+#define VALIDATE_PARAM_CONFIG(_ptr,_api)\r
+#define VALIDATE_STATE_INIT(_api)\r
+#define VALIDATE_PARAM_PIN(_pin, _api)\r
+#endif\r
+\r
+#if PORT_VERSION_INFO_API == STD_ON\r
+static Std_VersionInfoType _Port_VersionInfo =\r
+{\r
+  .vendorID   = (uint16)1,\r
+  .moduleID   = (uint16) MODULE_ID_PORT,\r
+  .instanceID = (uint8)1,\r
+  .sw_major_version = (uint8)PORT_SW_MAJOR_VERSION,\r
+  .sw_minor_version = (uint8)PORT_SW_MINOR_VERSION,\r
+  .sw_patch_version = (uint8)PORT_SW_PATCH_VERSION,\r
+  .ar_major_version = (uint8)PORT_AR_MAJOR_VERSION,\r
+  .ar_minor_version = (uint8)PORT_AR_MINOR_VERSION,\r
+  .ar_patch_version = (uint8)PORT_AR_PATCH_VERSION,\r
+};\r
+#endif\r
+\r
+void Port_RefreshPin(uint16 pinNumber) {\r
+       uint8 port = GET_PIN_PORT(_configPtr->pins[pinNumber].pin);\r
+       uint32 mask = GET_PIN_MASK(_configPtr->pins[pinNumber].pin);\r
+       uint16 conf = _configPtr->pins[pinNumber].conf;\r
+\r
+       if (conf & PORT_FUNC) {\r
+               // Don't do anything, let each driver configure???\r
+               return;\r
+       }\r
+\r
+       // Set pin direction\r
+       if (conf & PORT_PIN_OUT) {\r
+               Port_Base[port]->DIR |= mask;\r
+\r
+               // Set open drain\r
+               if (conf & PORT_ODE_ENABLE) {\r
+                       Port_Base[port]->PDR |= mask;\r
+               } else {\r
+                       Port_Base[port]->PDR &= ~mask;\r
+               }\r
+\r
+       } else {\r
+               Port_Base[port]->DIR &= ~mask;\r
+       }\r
+\r
+       // Set pull up or down or nothing.\r
+       if (conf & PORT_PULL_NONE) {\r
+               Port_Base[port]->PULDIS |= mask;\r
+\r
+       } else {\r
+               Port_Base[port]->PULDIS &= ~mask;\r
+               if (conf & PORT_PULL_UP) {\r
+                       Port_Base[port]->PSL |= mask;\r
+\r
+               } else {\r
+                       Port_Base[port]->PSL &= ~mask;\r
+               }\r
+       }\r
+}\r
+\r
+\r
+\r
+void Port_Init(const Port_ConfigType *configType) {\r
+       VALIDATE_PARAM_CONFIG(configType, PORT_INIT_ID);\r
+\r
+       _configPtr = (Port_ConfigType *)configType;\r
+\r
+       // Bring GIO register out of reset.\r
+       gioREG->GCR0 = 1;\r
+\r
+       for (uint16 i = 0; i < PORT_NUMBER_OF_PINS; i++) {\r
+               Port_RefreshPin(i);\r
+       }\r
+\r
+       _portState = PORT_INITIALIZED;\r
+\r
+       return;\r
+}\r
+\r
+#if ( PORT_SET_PIN_DIRECTION_API == STD_ON )\r
+void Port_SetPinDirection( Port_PinType pin, Port_PinDirectionType direction )\r
+{\r
+       VALIDATE_STATE_INIT(PORT_SET_PIN_DIRECTION_ID);\r
+       VALIDATE_PARAM_PIN(pin, PORT_SET_PIN_DIRECTION_ID);\r
+\r
+       uint8 port = GET_PIN_PORT(pin);\r
+       uint32 mask = GET_PIN_MASK(pin);\r
+\r
+       if (direction & PORT_PIN_IN) {\r
+               Port_Base[port]->DIR |= mask;\r
+\r
+       } else {\r
+               Port_Base[port]->DIR &= ~mask;\r
+\r
+       }\r
+\r
+       return;\r
+}\r
+#endif\r
+\r
+void Port_RefreshPortDirection( void )\r
+{\r
+       VALIDATE_STATE_INIT(PORT_REFRESH_PORT_DIRECTION_ID);\r
+       for (uint16 i = 0; i < PORT_NUMBER_OF_PINS; i++) {\r
+               if (!(_configPtr->pins[i].conf & PORT_DIRECTION_CHANGEABLE)) {\r
+                       Port_RefreshPin(i);\r
+               }\r
+       }\r
+       return;\r
+}\r
+\r
+\r
+#if PORT_VERSION_INFO_API == STD_ON\r
+void Port_GetVersionInfo(Std_VersionInfoType* versionInfo)\r
+{\r
+  VALIDATE_STATE_INIT(PORT_GET_VERSION_INFO_ID);\r
+  memcpy(versionInfo, &_Port_VersionInfo, sizeof(Std_VersionInfoType));\r
+  return;\r
+}\r
+#endif\r
+\r
+#if (PORT_SET_PIN_MODE_API == STD_ON)\r
+void Port_SetPinMode(Port_PinType Pin, Port_PinModeType Mode) {\r
+       VALIDATE_STATE_INIT(PORT_SET_PIN_MODE_ID);\r
+       VALIDATE_PARAM_PIN(Pin, PORT_SET_PIN_MODE_ID);\r
+\r
+       uint8 port = GET_PIN_PORT(Pin);\r
+       uint8 pin = GET_PIN_PIN(Pin);\r
+       uint32 mask = GET_PIN_MASK(Pin);\r
+\r
+    Port_Base[port]->FUN &= ~mask;\r
+    Port_Base[port]->FUN |= ((Mode & 1) << pin);\r
+    return;\r
+}\r
+#endif\r
index bd4d0b60b04e44930610970000c2b67770b24fe5..c8683a2c7cb67ff72e18b4c66d50b27bcebdb54a 100644 (file)
@@ -27,7 +27,7 @@ void Os_ArchFirstCall( void )
 {\r
        // TODO: make switch here... for now just call func.\r
        Irq_Enable();\r
-       os_sys.curr_pcb->entry();\r
+       Os_Sys.currTaskPtr->entry();\r
 }\r
 \r
 void *Os_ArchGetStackPtr( void ) {\r
@@ -39,7 +39,7 @@ unsigned int Os_ArchGetScSize( void ) {
        return SC_SIZE;\r
 }\r
 \r
-void Os_ArchSetTaskEntry(OsPcbType *pcbPtr ) {\r
+void Os_ArchSetTaskEntry(OsTaskVarType *pcbPtr ) {\r
        // TODO: Add lots of things here, see ppc55xx\r
        uint32_t *context = (uint32_t *)pcbPtr->stack.curr;\r
 \r
@@ -54,7 +54,7 @@ void Os_ArchSetTaskEntry(OsPcbType *pcbPtr ) {
 \r
 }\r
 \r
-void Os_ArchSetupContext( OsPcbType *pcb ) {\r
+void Os_ArchSetupContext( OsTaskVarType *pcb ) {\r
        // TODO: Add lots of things here, see ppc55xx\r
        // uint32_t *context = (uint32_t *)pcb->stack.curr;\r
 \r
index 7e35c6b799187dbf1077339984292a313e98318d..311515bb0aa53a4e4ccacf89c5cf7676d9cde018 100644 (file)
@@ -17,7 +17,7 @@
 #include "kernel_offset.h"\r
 #include "stack.h"\r
 \r
-.extern os_sys\r
+.extern Os_Sys\r
 \r
        .syntax unified\r
        .cpu cortex-r4\r
@@ -106,7 +106,7 @@ Svc_Handler:
     mov        r0,sp                   \r
     \r
        // When at interrupt nest count = 0, load interrupt stack    \r
-       ldr      r4,=os_sys\r
+       ldr      r4,=Os_Sys\r
        ldr      r5,[r4,#SYS_INT_NEST_CNT]\r
        cmp      r5, #0\r
        bgt      arggg\r
@@ -210,7 +210,7 @@ Os_ArchSwapContextTo:
     mov.w      sp,r2\r
     \r
        // Set new current pcb\r
-    ldr     r5,= os_sys\r
+    ldr     r5,= Os_Sys\r
     str     r1,[r5,#SYS_CURR_PCB_P]\r
 \r
        // Restore C context\r
index c229971ef66b173222d77567450ed6a2b3d81169..44fb1381a4130bb8e4775a8cf0d2b0ab129fd800 100644 (file)
@@ -448,7 +448,7 @@ typedef volatile struct gioBase
     unsigned FLG;       /**< 0x0020: Interrupt Flag Register */\r
     unsigned OFFSET0;   /**< 0x0024: Interrupt Offset A Register */\r
     unsigned OFFSET1;   /**< 0x0028: Interrupt Offset B Register */\r
-} gioBASE_t;\r
+} GIO_Base_RegisterType;\r
 \r
 \r
 /** @struct gioPort\r
@@ -469,7 +469,10 @@ typedef volatile struct gioPort
     unsigned PDR;    /**< 0x0014: Open Drain Regsiter */\r
     unsigned PULDIS; /**< 0x0018: Pullup Disable Register */\r
     unsigned PSL;    /**< 0x001C: Pull Up/Down Selection Register */\r
-} gioPORT_t;\r
+} GIO_RegisterType;\r
+\r
+#define GIO_PORTA_BASE ((GIO_RegisterType *)0xFFF7BC34)\r
+#define GIO_PORTB_BASE ((GIO_RegisterType *)0xFFF7BC54)\r
 \r
 \r
 /** @def gioREG\r
@@ -477,7 +480,7 @@ typedef volatile struct gioPort
 *\r
 *   This pointer is used by the GIO driver to access the gio module registers.\r
 */\r
-#define gioREG   ((gioBASE_t *)0xFFF7BC00U)\r
+#define gioREG   ((GIO_Base_RegisterType *)0xFFF7BC00U)\r
 \r
 /** @def gioPORTA\r
 *   @brief GIO Port (A) Register Pointer\r
index 2c8008dd2cf166bb735eacabb0ca5334b1a1d065..9f518846e7bff1c229c79859557c317a9b0748cf 100644 (file)
@@ -16,7 +16,7 @@
 #include "internal.h"
 #include "task_i.h"
 #include "hooks.h"
-#include "irq.h"
+#include "isr.h"
 #include "core_cr4.h"
 
 extern TaskType Os_Arc_CreateIsr( void (*entry)(void ), uint8_t prio, const char *name );
@@ -74,7 +74,7 @@ void *Irq_Entry( void *stack_p )
        }
 
        stack = (uint32_t *)stack_p;
-       struct OsPcb * pcb = (struct OsPcb *)Irq_VectorTable[virtualChannel];
+       struct OsTaskVar * pcb = (struct OsTaskVar *)Irq_VectorTable[virtualChannel];
        // Save the hardware channel in the PCB, so that Os_Isr knows which interrupt channel to deactivate.
        pcb->vector = channel;
        stack = Os_Isr(stack, (void *)pcb);
@@ -123,9 +123,9 @@ static inline int osPrioToCpuPio( uint8_t prio ) {
  * @param vector
  */
 void Irq_AttachIsr2(TaskType tid,void *int_ctrl,IrqType vector ) {
-       OsPcbType *pcb;
+       OsTaskVarType *pcb;
 
-       pcb = os_find_task(tid);
+       pcb = Os_TaskGet(tid);
        Irq_VectorTable[vector] = (void *)pcb;
        IrqActivateChannel(vector);
 
index 1826b2b9819f9e44a982e507b10ddaae0b7c5908..882e9a0a0d906e075135ebcb9f4b646dcf029e51 100644 (file)
@@ -16,7 +16,7 @@
 #include "Os.h"\r
 #include "internal.h"\r
 #include "core_cr4.h"\r
-#include "irq.h"\r
+#include "isr.h"\r
 #include "arc.h"\r
 \r
 #define RTICLK_PRESCALER 10\r
index 3483b1206147649271c24a3acf4e9508575df3c4..11f24765c9294dde49ac6172fbc5c35f954f7014 100644 (file)
@@ -6,5 +6,5 @@ imask_t McuE_EnterCriticalSection(void) {
 }\r
 \r
 void McuE_ExitCriticalSection(imask_t old_state) {\r
-\r
+         (void)old_state; // Nothing to be done. This is just to avoid PC-Lint warning.\r
 }\r
index 712b261b8cb451484706bc80fafb6ebc941a7c8c..23afbb85e3afd762c23928fe8ae95983caa804f4 100644 (file)
@@ -20,7 +20,7 @@
 #include "Adc.h"\r
 #include "Det.h"\r
 #include "Os.h"\r
-#include "irq.h"\r
+#include "isr.h"\r
 #include "regs.h"\r
 #include "arc.h"\r
 \r
index 09d56acb5e40ab9ac37da120ef704aaa6f8f8322..e99d96bd423d221f2b50450a0c58ca3b3bb8e1da 100644 (file)
@@ -35,7 +35,7 @@
 #include <stdlib.h>\r
 #include <string.h>\r
 #include "Os.h"\r
-#include "irq.h"\r
+#include "isr.h"\r
 #include "arc.h"\r
 \r
 // bits in CANxCTL0:\r
index f3e78ca7e4cf05d042e6f6080652b0c14c714751..e7ab9bead96bdce77805bdadc6abca13b2f4b0c4 100644 (file)
@@ -26,7 +26,7 @@
 #include "Det.h"\r
 #include "Os.h"\r
 #include "arc.h"\r
-#include "irq.h"\r
+#include "isr.h"\r
 \r
 #define FIRST_OC_REG 0x50\r
 \r
index a04ac4a73af02d86cccf36f39c8c4551d70af741..1bfc62a85642c8be463921a9c1fc34a27dc93394 100644 (file)
@@ -23,7 +23,6 @@
 #include <string.h>\r
 #include "Ramlog.h"\r
 \r
-#define USE_TRACE 1\r
 #define USE_LDEBUG_PRINTF 1\r
 #include "debug.h"\r
 \r
index 9045ff95bc09878d618ecdf7eae94ad4b2e75c69..e6352d6a82445596ff3306b0d1689747292aff07 100644 (file)
@@ -38,13 +38,13 @@ static const Port_ConfigType * _configPtr = NULL;
 #define VALIDATE_PARAM_CONFIG(_ptr,_api) \\r
        if( (_ptr)==((void *)0) ) { \\r
                Det_ReportError(MODULE_ID_PORT, 0, _api, PORT_E_PARAM_CONFIG ); \\r
-               goto cleanup; \\r
+               return; \\r
        }\r
 \r
 #define VALIDATE_STATE_INIT(_api)\\r
        if(PORT_INITIALIZED!=_portState){\\r
                Det_ReportError(MODULE_ID_PORT, 0, _api, PORT_E_UNINIT ); \\r
-               goto cleanup; \\r
+               return; \\r
        }\r
 \r
 #else\r
@@ -162,9 +162,7 @@ void Port_Init(const Port_ConfigType *configType)
 \r
     _portState = PORT_INITIALIZED;\r
     _configPtr = configType;\r
-#if (PORT_DEV_ERROR_DETECT == STD_ON)\r
-    cleanup:\r
-#endif\r
+\r
     return;\r
 }\r
 \r
@@ -257,7 +255,7 @@ void Port_SetPinDirection( Port_PinType pin, Port_PinDirectionType direction )
         Det_ReportError(MODULE_ID_PORT, 0, PORT_SET_PIN_DIRECTION_ID, PORT_E_PARAM_PIN );\r
     }\r
 \r
-    cleanup:return;\r
+    return;\r
 }\r
 #endif\r
 \r
@@ -330,9 +328,6 @@ void Port_RefreshPortDirection(void)
     DDRT = curValue;\r
 #endif\r
 \r
-#if (PORT_DEV_ERROR_DETECT == STD_ON)\r
-    cleanup:\r
-#endif\r
     return;\r
 }\r
 \r
@@ -344,7 +339,7 @@ void Port_GetVersionInfo(Std_VersionInfoType* versionInfo)
 {\r
     VALIDATE_STATE_INIT(PORT_GET_VERSION_INFO_ID);\r
     memcpy(versionInfo, &_Port_VersionInfo, sizeof(Std_VersionInfoType));\r
-    cleanup: return;\r
+    return;\r
 }\r
 #endif\r
 \r
@@ -361,6 +356,6 @@ void Port_SetPinMode(Port_PinType Pin, Port_PinModeType Mode)
     Det_ReportError(MODULE_ID_PORT, 0, PORT_SET_PIN_MODE_ID, PORT_E_MODE_UNCHANGEABLE );\r
 #endif\r
 \r
-    cleanup: return;\r
+    return;\r
 }\r
 #endif\r
index 59154642dcdfa85cff3391202e6d94603295c4c1..2ac2009325e1847b079a694aec0edb1eac9b4b42 100644 (file)
@@ -25,7 +25,7 @@ void Os_ArchFirstCall( void )
 {\r
        // TODO: make switch here... for now just call func.\r
        Irq_Enable();\r
-       os_sys.curr_pcb->entry();\r
+       Os_Sys.currTaskPtr->entry();\r
 }\r
 \r
 void *Os_ArchGetStackPtr( void ) {\r
@@ -42,7 +42,7 @@ unsigned int Os_ArchGetScSize( void ) {
 }\r
 \r
 \r
-void Os_ArchSetupContext( OsPcbType *pcb ) {\r
+void Os_ArchSetupContext( OsTaskVarType *pcb ) {\r
   // Nothing to be done here\r
 }\r
 \r
@@ -51,7 +51,7 @@ void Os_ArchSetupContext( OsPcbType *pcb ) {
  * @param pcbPtr\r
  */\r
 \r
-void Os_ArchSetTaskEntry(OsPcbType *pcbPtr ) {\r
+void Os_ArchSetTaskEntry(OsTaskVarType *pcbPtr ) {\r
        uint8_t *context_bytes = (uint8_t *)pcbPtr->stack.curr;\r
        uint16_t temp;\r
 \r
index c526ec75a1d12b6e248c65ae70da8371812e2133..87e733cdee63ec350f704be89a598b2e7e114c3e 100644 (file)
@@ -21,7 +21,7 @@
 #include "context.h"\r
 #include "irq_defines.h"\r
 \r
-.extern os_sys\r
+.extern Os_Sys\r
 \r
 \r
 /* \r
index b8454ef6d25adb848fb17b22edc54bd011adbce4..9bae63d00e8997eab41c42d6bf29e6605969be19 100644 (file)
@@ -6,7 +6,7 @@
 #include "asm_hc1x.sx"\r
 #include "context.sx"\r
 \r
-.extern os_sys\r
+.extern Os_Sys\r
 .extern os_proc_start_extended\r
 \r
 #define IRQ_ENABLE()           cpsie   i\r
@@ -53,7 +53,7 @@ Os_ArchSwapContextTo_get_args:
                \r
 Os_ArchSwapContextTo_do:\r
 // Set current process\r
-               sty             os_sys                                  // new (Y) --> os_sys.curr_pcb\r
+               sty             Os_Sys                                  // new (Y) --> Os_Sys.curr_pcb\r
 // Restore context\r
                lds             PCB_STACK_CURR_P, y             // new->stack.curr --> SP\r
                \r
index 5d914ed89874efb185045ee4aedf157f22c4e380..df8812ab8ce475b48e5d25a331dad3a171b217e4 100644 (file)
@@ -14,7 +14,7 @@
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
 #include "internal.h"\r
-#include "irq.h"\r
+#include "isr.h"\r
 #include "irq_types.h"\r
 #include "regs.h"\r
 \r
@@ -94,9 +94,9 @@ void Irq_AttachIsr1( void (*entry)(void), void *int_ctrl, uint32_t vector, uint8
  * @param vector\r
  */\r
 void Irq_AttachIsr2(TaskType tid,void *int_ctrl,IrqType vector ) {\r
-       OsPcbType *pcb;\r
+       OsTaskVarType *pcb;\r
 \r
-       pcb = os_find_task(tid);\r
+       pcb = Os_TaskGet(tid);\r
        Irq_VectorTable[vector] = (void *)pcb;\r
        Irq_IsrTypeTable[vector] = PROC_ISR2;\r
 \r
index 1a269f86becba449bfbd6fb4c77cb089f2a1cb92..7d3e8edcc75315fd24a7757b38079a93a324db1a 100644 (file)
@@ -15,7 +15,7 @@
 \r
 #include "Os.h"\r
 #include "internal.h"\r
-#include "irq.h"\r
+#include "isr.h"\r
 #include "arc.h"\r
 #include "regs.h"\r
 #include "Mcu.h"\r
index 922e882475a1af35c053e0b847f9ad26b45be773..eb33cc262d95dd4c7bebf3c2dff37e032e028468 100644 (file)
@@ -398,7 +398,7 @@ SECTIONS
     *(.gnu.linkonce.b.*)\r
     *(COMMON)\r
     PROVIDE (_end = .);\r
-  }  > data AT>bank_FIX2_lma\r
+  }  > data /* AT>bank_FIX2_lma */\r
   __bss_size = SIZEOF(.bss);\r
   PROVIDE (__bss_size = SIZEOF(.bss));\r
   .eeprom   :\r
index 065c49fecc2e049f1b86c99e4186a12a5ccaa756..10848fcc6d6538b9b6b3dc1e81e44a9ee961be81 100644 (file)
@@ -1,6 +1,12 @@
 #include "asm_ppc.h"\r
 \r
+#if defined(__GNUC__)\r
 .section ".rcw","ax"\r
+.balign  4\r
+#elif defined(__CWCC__)\r
+.section .rcw,4,"r"\r
+#endif\r
+\r
 .global _resetconfiguration\r
 _resetconfiguration:\r
        .byte  0x00   #no watchdog\r
@@ -10,6 +16,17 @@ _resetconfiguration:
        .long _start\r
 \r
 \r
+       .extern _SDA_BASE_\r
+       .extern _SDA2_BASE_\r
+       .extern __SP_INIT\r
+       .extern __DATA_RAM\r
+       .extern __DATA_END\r
+       .extern __BSS_START\r
+       .extern __BSS_END\r
+       .extern __DATA_ROM\r
+       .extern exit\r
+       .extern main\r
+       \r
        .text\r
        .align          4\r
 \r
@@ -28,6 +45,7 @@ _redled:
        stw r0, 8(r3)\r
        b _exit\r
 \r
+__start:\r
 _start:\r
        // Set up the reserved registers in EABI: r1,r2 and r13\r
 \r
@@ -53,12 +71,12 @@ _start:
        lbz r4,0(r3)\r
 #endif\r
 \r
-       # Clear all SRAM\r
+       /*  Clear all SRAM */\r
 init_RAM:\r
        lis r11,0x4000 # base address of the SRAM, 64-bit word aligned\r
        ori r11,r11,0 # not needed for this address but could be for others\r
        li r12,640 # loop counter to get all of SRAM;\r
-       # 80k/4 bytes/32 GPRs = 640\r
+       /* 80k/4 bytes/32 GPRs = 640 */\r
        mtctr r12\r
 \r
 init_ram_loop:\r
@@ -85,32 +103,32 @@ init_ram_loop:
        beq             skip_data\r
        subi    r3,r3,1\r
        subi    r4,r4,1\r
-1:\r
+copy_data:\r
        lbzu    r6,1(r3)\r
        stbu    r6,1(r4)\r
        cmplw   r4,r5\r
-       bne+    1b\r
+       bne+    copy_data\r
 skip_data:\r
 \r
-       # Clear uninitialized data( holds both bss and sbss )\r
+       /* Clear uninitialized data( holds both bss and sbss ) */\r
        lis             r3,__BSS_START@h\r
        ori             r3,r3,__BSS_START@l\r
        lis             r4,__BSS_END@h\r
        ori             r4,r4,__BSS_END@l\r
        cmplw   r3,r4\r
-       beq             3f\r
+       beq             skip_bss\r
        li              r0,0\r
        subi    r3,r3,1\r
-2:\r
+copy_bss:\r
        stbu    r0,1(r3)\r
        cmplw   r3,r4\r
-       bne+    2b\r
-3:\r
-       # Call main() with argc set to 1 and argv ignored\r
+       bne+    copy_bss\r
+skip_bss:\r
+       /* Call main() with argc set to 1 and argv ignored */\r
        li      r3,1\r
        bl      main\r
 \r
-       # Call exit() with the return value from main() as argument\r
+       /* Call exit() with the return value from main() as argument */\r
        b       exit\r
 \r
        .globl  _exit\r
index dc6b4477435228efc056d26adb90387ba5fe9e7c..35eae1053dd5fc800148a43297b921ccaafb2649 100644 (file)
@@ -31,7 +31,8 @@
 #include "Det.h"\r
 #if defined(USE_KERNEL)\r
 #include "Os.h"\r
-#include "irq.h"\r
+#include "isr.h"\r
+#include "arc.h"\r
 #endif\r
 \r
 \r
index 77730741693ea7e1bcb0a323ee9b6d0218bff8e8..98fbc704dc83998f4750724206c2801b5742ac59 100644 (file)
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
 \r
-\r
-\r
-\r
-\r
-\r
-\r
 #include "Can.h"\r
 \r
 #ifndef USE_CAN_STUB\r
@@ -36,7 +30,8 @@
 #include <string.h>\r
 #if defined(USE_KERNEL)\r
 #include "Os.h"\r
-#include "irq.h"\r
+#include "isr.h"\r
+#include "arc.h"\r
 #endif\r
 \r
 \r
 \r
 #define GET_CONTROLLER_CNT() (CAN_CONTROLLER_CNT)\r
 \r
+#if 0\r
+#define _INSTALL_HANDLER(_can_entry, _unique, _vector,_priority,_app )        \\r
+       do { \\r
+         const OsIsrConstType _can_entry ## _unique = { \\r
+                       .vector = _vector,   \\r
+                       .type = ISR_TYPE_2, \\r
+                       .priority = _priority,      \\r
+                       .entry = _can_entry,      \\r
+                       .name = "Can",      \\r
+                       .resourceMask = 0,  \\r
+                       .timingProtPtr = NULL, \\r
+                       .appOwner = _app,      \\r
+                 };                    \\r
+         Os_IsrAdd( & _can_entry ## _unique);   \\r
+       } while(0);\r
+#endif\r
+\r
+#define INSTALL_HANDLER4(_name,_can_entry, _vector,_priority,_app)\\r
+               ISR_INSTALL_ISR2(_name,_can_entry, _vector+0,_priority,_app) \\r
+               ISR_INSTALL_ISR2(_name,_can_entry, _vector+1,_priority,_app) \\r
+               ISR_INSTALL_ISR2(_name,_can_entry, _vector+2,_priority,_app) \\r
+               ISR_INSTALL_ISR2(_name,_can_entry, _vector+3,_priority,_app)\r
+\r
+#define INSTALL_HANDLER16(_name,_can_entry, _vector,_priority,_app)\\r
+               INSTALL_HANDLER4(_name,_can_entry, _vector+0,_priority,_app) \\r
+               INSTALL_HANDLER4(_name,_can_entry, _vector+4,_priority,_app) \\r
+               INSTALL_HANDLER4(_name,_can_entry, _vector+8,_priority,_app) \\r
+               INSTALL_HANDLER4(_name,_can_entry, _vector+12,_priority,_app)\r
+\r
+\r
 //-------------------------------------------------------------------\r
 \r
 #if ( CAN_DEV_ERROR_DETECT == STD_ON )\r
@@ -268,22 +293,6 @@ typedef struct {
 \r
 } Can_UnitType;\r
 \r
-#if defined(CFG_MPC5567)\r
-Can_UnitType CanUnit[CAN_CONTROLLER_CNT] =\r
-{\r
-  {\r
-    .state = CANIF_CS_UNINIT,\r
-  },{\r
-    .state = CANIF_CS_UNINIT,\r
-  },{\r
-    .state = CANIF_CS_UNINIT,\r
-  },{\r
-    .state = CANIF_CS_UNINIT,\r
-  },{\r
-    .state = CANIF_CS_UNINIT,\r
-  },\r
-};\r
-#else\r
 Can_UnitType CanUnit[CAN_CONTROLLER_CNT] =\r
 {\r
   {\r
@@ -296,11 +305,13 @@ Can_UnitType CanUnit[CAN_CONTROLLER_CNT] =
     .state = CANIF_CS_UNINIT,\r
   },{\r
     .state = CANIF_CS_UNINIT,\r
-  },{\r
+  }\r
+#if defined(CFG_MPC5516) || defined(CFG_MPC5517)\r
+  ,{\r
     .state = CANIF_CS_UNINIT,\r
   }\r
-};\r
 #endif\r
+};\r
 \r
 //-------------------------------------------------------------------\r
 \r
@@ -353,8 +364,7 @@ void Can_B_Isr( void  ) {   Can_Isr(CAN_CTRL_B); }
 void Can_C_Isr( void  ) {      Can_Isr(CAN_CTRL_C); }\r
 void Can_D_Isr( void  ) {      Can_Isr(CAN_CTRL_D); }\r
 void Can_E_Isr( void  ) {      Can_Isr(CAN_CTRL_E); }\r
-#if defined(CFG_MPC5567)\r
-#else\r
+#if defined(CFG_MPC5516) || defined(CFG_MPC5517)\r
 void Can_F_Isr( void  ) {      Can_Isr(CAN_CTRL_F); }\r
 #endif\r
 \r
@@ -363,8 +373,7 @@ void Can_B_Err( void  ) {   Can_Err(CAN_CTRL_B); }
 void Can_C_Err( void  ) {      Can_Err(CAN_CTRL_C); }\r
 void Can_D_Err( void  ) {      Can_Err(CAN_CTRL_D); }\r
 void Can_E_Err( void  ) {      Can_Err(CAN_CTRL_E); }\r
-#if defined(CFG_MPC5567)\r
-#else\r
+#if defined(CFG_MPC5516) || defined(CFG_MPC5517)\r
 void Can_F_Err( void  ) {      Can_Err(CAN_CTRL_F); }\r
 #endif\r
 \r
@@ -373,8 +382,7 @@ void Can_B_BusOff( void  ) {        Can_BusOff(CAN_CTRL_B); }
 void Can_C_BusOff( void  ) {   Can_BusOff(CAN_CTRL_C); }\r
 void Can_D_BusOff( void  ) {   Can_BusOff(CAN_CTRL_D); }\r
 void Can_E_BusOff( void  ) {   Can_BusOff(CAN_CTRL_E); }\r
-#if defined(CFG_MPC5567)\r
-#else\r
+#if defined(CFG_MPC5516) || defined(CFG_MPC5517)\r
 void Can_F_BusOff( void  ) {   Can_BusOff(CAN_CTRL_F); }\r
 #endif\r
 //-------------------------------------------------------------------\r
@@ -638,6 +646,11 @@ static void Can_Isr(int unit) {
   }\r
 \r
   if (canHwConfig->Can_Arc_Fifo) {\r
+    /*\r
+     * NOTE!!!\r
+     * Do not enable RxFIFO. See [Freescale Device Errata MPC5510ACE, Rev. 10 APR 2009, errata ID: 14593].\r
+     */\r
+     \r
        /* Note\r
         * NOT tested at all\r
         */\r
@@ -658,29 +671,9 @@ static void Can_Isr(int unit) {
   }\r
 }\r
 \r
+\r
 //-------------------------------------------------------------------\r
 \r
-#if defined(USE_KERNEL)\r
-#define INSTALL_HANDLERS( _can_name,_boff,_err,_start,_stop) \\r
-  do { \\r
-    TaskType tid; \\r
-    tid = Os_Arc_CreateIsr(_can_name ## _BusOff,2/*prio*/,"Can"); \\r
-    Irq_AttachIsr2(tid,NULL,_boff); \\r
-    tid = Os_Arc_CreateIsr(_can_name ## _Err,2/*prio*/,"Can"); \\r
-    Irq_AttachIsr2(tid,NULL,_err); \\r
-    for(i=_start;i<=_stop;i++) {  \\r
-      tid = Os_Arc_CreateIsr(_can_name ## _Isr,2/*prio*/,"Can"); \\r
-                       Irq_AttachIsr2(tid,NULL,i); \\r
-    } \\r
-  } while(0);\r
-#else\r
-#define INSTALL_HANDLERS( _can_name,_boff,_err,_start,_stop) \\r
-  Irq_InstallVector(_can_name ## _BusOff, _boff, 1, CPU_Z1); \\r
-  Irq_InstallVector(_can_name ## _Err, _err, 1, CPU_Z1);    \\r
-  for(i=_start;i<=_stop;i++) {                                                                                                                         \\r
-    Irq_InstallVector(_can_name ## _Isr, i, 1, CPU_Z1); \\r
-  }\r
-#endif\r
 \r
 // This initiates ALL can controllers\r
 void Can_Init( const Can_ConfigType *config ) {\r
@@ -731,42 +724,53 @@ void Can_Init( const Can_ConfigType *config ) {
       }\r
     } while (!hoh->Can_Arc_EOL);\r
 \r
+\r
+\r
     // Note!\r
     // Could install handlers depending on HW objects to trap more errors\r
     // in configuration\r
-#if defined(CFG_MPC5567)\r
     switch( canHwConfig->CanControllerId ) {\r
     case CAN_CTRL_A:\r
-        INSTALL_HANDLERS(Can_A, FLEXCAN_A_ESR_BOFF_INT, FLEXCAN_A_ESR_ERR_INT, FLEXCAN_A_IFLAG1_BUF0I, FLEXCAN_A_IFLAG1_BUF31_16I);    break;\r
+       ISR_INSTALL_ISR2(  "Can", Can_A_BusOff, FLEXCAN_A_ESR_BOFF_INT,     2, 0);\r
+       ISR_INSTALL_ISR2(  "Can", Can_A_Err,    FLEXCAN_A_ESR_ERR_INT,      2, 0 );\r
+       INSTALL_HANDLER16( "Can", Can_A_Isr,    FLEXCAN_A_IFLAG1_BUF0I,     2, 0 );\r
+       ISR_INSTALL_ISR2(  "Can", Can_A_Isr,    FLEXCAN_A_IFLAG1_BUF31_16I, 2, 0 );\r
+       break;\r
     case CAN_CTRL_B:\r
-        INSTALL_HANDLERS(Can_B, FLEXCAN_B_ESR_BOFF_INT, FLEXCAN_B_ESR_ERR_INT, FLEXCAN_B_IFLAG1_BUF0I, FLEXCAN_B_IFLAG1_BUF31_16I);    break;\r
+       ISR_INSTALL_ISR2(  "Can", Can_B_BusOff, FLEXCAN_B_ESR_BOFF_INT,     2, 0 );\r
+       ISR_INSTALL_ISR2(  "Can", Can_B_Err,    FLEXCAN_B_ESR_ERR_INT,      2, 0 );\r
+       INSTALL_HANDLER16( "Can", Can_B_Isr,    FLEXCAN_B_IFLAG1_BUF0I,     2, 0 );\r
+       ISR_INSTALL_ISR2(  "Can", Can_B_Isr,    FLEXCAN_B_IFLAG1_BUF31_16I, 2, 0 );\r
+       break;\r
     case CAN_CTRL_C:\r
-        INSTALL_HANDLERS(Can_C, FLEXCAN_C_ESR_BOFF_INT, FLEXCAN_C_ESR_ERR_INT, FLEXCAN_C_IFLAG1_BUF0I, FLEXCAN_C_IFLAG1_BUF31_16I);    break;\r
+       ISR_INSTALL_ISR2(  "Can", Can_C_BusOff, FLEXCAN_C_ESR_BOFF_INT,     2, 0 );\r
+       ISR_INSTALL_ISR2(  "Can", Can_C_Err,    FLEXCAN_C_ESR_ERR_INT,      2, 0 );\r
+       INSTALL_HANDLER16( "Can", Can_C_Isr,    FLEXCAN_C_IFLAG1_BUF0I,     2, 0 );\r
+       ISR_INSTALL_ISR2(  "Can", Can_C_Isr,    FLEXCAN_C_IFLAG1_BUF31_16I, 2, 0 );\r
+       break;\r
     case CAN_CTRL_D:\r
-        INSTALL_HANDLERS(Can_D, FLEXCAN_D_ESR_BOFF_INT, FLEXCAN_D_ESR_ERR_INT, FLEXCAN_D_IFLAG1_BUF0I, FLEXCAN_D_IFLAG1_BUF31_16I);    break;\r
+       ISR_INSTALL_ISR2(  "Can", Can_D_BusOff, FLEXCAN_D_ESR_BOFF_INT,     2, 0 );\r
+       ISR_INSTALL_ISR2(  "Can", Can_D_Err,    FLEXCAN_D_ESR_ERR_INT,      2, 0 );\r
+       INSTALL_HANDLER16( "Can", Can_D_Isr,    FLEXCAN_D_IFLAG1_BUF0I,     2, 0 );\r
+       ISR_INSTALL_ISR2(  "Can", Can_D_Isr,    FLEXCAN_D_IFLAG1_BUF31_16I, 2, 0 );\r
+       break;\r
     case CAN_CTRL_E:\r
-        INSTALL_HANDLERS(Can_E, FLEXCAN_E_ESR_BOFF_INT, FLEXCAN_E_ESR_ERR_INT, FLEXCAN_E_IFLAG1_BUF0I, FLEXCAN_E_IFLAG1_BUF31_16I);    break;\r
-    default:\r
-        assert(0);\r
-    }\r
-#else\r
-    switch( canHwConfig->CanControllerId ) {\r
-    case CAN_CTRL_A:\r
-        INSTALL_HANDLERS(Can_A, FLEXCAN_A_ESR_BOFF_INT, FLEXCAN_A_ESR_ERR_INT, FLEXCAN_A_IFLAG1_BUF0I, FLEXCAN_A_IFLAG1_BUF31_16I);    break;\r
-    case CAN_CTRL_B:\r
-        INSTALL_HANDLERS(Can_B, FLEXCAN_B_ESR_BOFF_INT, FLEXCAN_B_ESR_ERR_INT, FLEXCAN_B_IFLAG1_BUF0I, FLEXCAN_B_IFLAG1_BUF31_16I);    break;\r
-    case CAN_CTRL_C:\r
-        INSTALL_HANDLERS(Can_C, FLEXCAN_C_ESR_BOFF_INT, FLEXCAN_C_ESR_ERR_INT, FLEXCAN_C_IFLAG1_BUF0I, FLEXCAN_C_IFLAG1_BUF31_16I);    break;\r
-    case CAN_CTRL_D:\r
-        INSTALL_HANDLERS(Can_D, FLEXCAN_D_ESR_BOFF_INT, FLEXCAN_D_ESR_ERR_INT, FLEXCAN_D_IFLAG1_BUF0I, FLEXCAN_D_IFLAG1_BUF31_16I);    break;\r
-    case CAN_CTRL_E:\r
-        INSTALL_HANDLERS(Can_E, FLEXCAN_E_ESR_BOFF_INT, FLEXCAN_E_ESR_ERR_INT, FLEXCAN_E_IFLAG1_BUF0I, FLEXCAN_E_IFLAG1_BUF31_16I);    break;\r
+       ISR_INSTALL_ISR2(  "Can", Can_E_BusOff, FLEXCAN_E_ESR_BOFF_INT,     2, 0 );\r
+       ISR_INSTALL_ISR2(  "Can", Can_E_Err,    FLEXCAN_E_ESR_ERR_INT,      2, 0 );\r
+       INSTALL_HANDLER16( "Can", Can_E_Isr,    FLEXCAN_E_IFLAG1_BUF0I,     2, 0 );\r
+       ISR_INSTALL_ISR2(  "Can", Can_E_Isr,    FLEXCAN_E_IFLAG1_BUF31_16I, 2, 0 );\r
+       break;\r
+#if defined(CFG_MPC5516) || defined(CFG_MPC5517)\r
     case CAN_CTRL_F:\r
-        INSTALL_HANDLERS(Can_F, FLEXCAN_F_ESR_BOFF_INT, FLEXCAN_F_ESR_ERR_INT, FLEXCAN_F_IFLAG1_BUF0I, FLEXCAN_F_IFLAG1_BUF31_16I);    break;\r
+       ISR_INSTALL_ISR2(  "Can", Can_F_BusOff, FLEXCAN_F_ESR_BOFF_INT,     2, 0 );\r
+       ISR_INSTALL_ISR2(  "Can", Can_F_Err,    FLEXCAN_F_ESR_ERR_INT,      2, 0 );\r
+       INSTALL_HANDLER16( "Can", Can_F_Isr,    FLEXCAN_F_IFLAG1_BUF0I,     2, 0 );\r
+       ISR_INSTALL_ISR2(  "Can", Can_F_Isr,    FLEXCAN_F_IFLAG1_BUF31_16I, 2, 0 );\r
+       break;\r
+#endif\r
     default:\r
         assert(0);\r
     }\r
-#endif\r
   }\r
   return;\r
 }\r
@@ -1004,7 +1008,9 @@ Can_ReturnType Can_SetControllerMode( uint8 controller, Can_StateTransitionType
     canUnit->state = CANIF_CS_STARTED;\r
     imask_t state = McuE_EnterCriticalSection();\r
     if (canUnit->lock_cnt == 0)   // REQ CAN196\r
+    {\r
       Can_EnableControllerInterrupts(controller);\r
+    }\r
     McuE_ExitCriticalSection(state);\r
     break;\r
   case CAN_T_WAKEUP:  //CAN267\r
index 9de43cb38cceda6405f8da88d3ee6feaf7c4fd72..5be0cbfdf8783c3413fe7f1d34968a793d52a28e 100644 (file)
@@ -107,23 +107,38 @@ Dio_LevelType Dio_ReadChannel(Dio_ChannelType channelId)
 {\r
   Dio_LevelType level;\r
   VALIDATE_CHANNEL(channelId, DIO_READCHANNEL_ID);\r
-  // Read level from SIU.\r
-  if (SIU.GPDI [channelId].R)\r
-  {\r
-    level = STD_HIGH;\r
-  } else\r
-  {\r
-    level = STD_LOW;\r
+  if (SIU.PCR[channelId].B.IBE) {\r
+    // Read level from SIU.\r
+    if (SIU.GPDI [channelId].R) {\r
+      level = STD_HIGH;\r
+    } else {\r
+      level = STD_LOW;\r
+    }\r
+  } else if(SIU.PCR[channelId].B.OBE) {\r
+    // Read level from SIU.\r
+    if (SIU.GPDO [channelId].R) {\r
+      level = STD_HIGH;\r
+    } else {\r
+      level = STD_LOW;\r
+    }\r
   }\r
-  cleanup: return (level);\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+  cleanup:\r
+#endif\r
+  return (level);\r
 }\r
 \r
 void Dio_WriteChannel(Dio_ChannelType channelId, Dio_LevelType level)\r
 {\r
   VALIDATE_CHANNEL(channelId, DIO_WRITECHANNEL_ID);\r
   // Write level to SIU.\r
-  SIU.GPDO [channelId].R = level;\r
-  cleanup: return;\r
+  if(SIU.PCR[channelId].B.OBE) {\r
+    SIU.GPDO [channelId].R = level;\r
+  }\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+  cleanup:\r
+#endif\r
+  return;\r
 }\r
 \r
 Dio_PortLevelType Dio_ReadPort(Dio_PortType portId)\r
@@ -137,7 +152,10 @@ Dio_PortLevelType Dio_ReadPort(Dio_PortType portId)
   vuint16_t *ptr = (vuint16_t *)&SIU.PGPDI0; // The GPDI 0-3 is organized in 32bit chunks but we want to step them in 16bit port-widths\r
 #endif\r
   level = ptr[portId]; // Read the bit pattern (16bits) to the port\r
-  cleanup: return level;\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+  cleanup:\r
+#endif\r
+  return level;\r
 }\r
 \r
 void Dio_WritePort(Dio_PortType portId, Dio_PortLevelType level)\r
@@ -151,7 +169,10 @@ void Dio_WritePort(Dio_PortType portId, Dio_PortLevelType level)
   vuint16_t *ptr = (vuint16_t *)&SIU.PGPDO0; // The GPDO 0-3 is organized in 32bit chunks but we want to step them in 16bit port-widths\r
 #endif\r
   ptr[portId] = level; // Write the bit pattern (16bits) to the port\r
-  cleanup: return;\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+  cleanup:\r
+#endif\r
+  return;\r
 }\r
 \r
 Dio_PortLevelType Dio_ReadChannelGroup(\r
@@ -172,7 +193,10 @@ Dio_PortLevelType Dio_ReadChannelGroup(
 \r
   // Shift down\r
   level<<=channelGroupIdPtr->offset;\r
-  cleanup: return level;\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+  cleanup:\r
+#endif\r
+  return level;\r
 }\r
 \r
 void Dio_WriteChannelGroup(const Dio_ChannelGroupType *channelGroupIdPtr,\r
@@ -186,7 +210,10 @@ void Dio_WriteChannelGroup(const Dio_ChannelGroupType *channelGroupIdPtr,
   // Build the 32 bits Mask_Valule, and write to masked output register\r
   ptr[channelGroupIdPtr->port] = (channelGroupIdPtr->mask << 16)&((level\r
       <<channelGroupIdPtr->offset)|0xFFFF);\r
-  cleanup: return;\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+  cleanup:\r
+#endif\r
+  return;\r
 #else\r
   return;\r
 #endif\r
index 7c6952499e171bbe7b71854977bd9824b3c8a50b..5dee6186d74ee9e26c2c74f9a26274594c45835b 100644 (file)
@@ -67,7 +67,7 @@ void Dma_ConfigureChannel (struct tcd_t *tcd, Dma_ChannelType channel)
   }\r
 }\r
 \r
-struct tcd_t * Dma_GetTcd( Dma_ChannelType channel ) {\r
+volatile struct tcd_t * Dma_GetTcd( Dma_ChannelType channel ) {\r
                return &EDMA.TCD[channel];\r
 }\r
 \r
index 4c06433bcbdf0a98ec8e34b054f30957d141226d..98001b6e6a00f9c15dee0bf8f8c9d9a5ffd42688 100644 (file)
@@ -157,7 +157,7 @@ void Dma_ConfigureSourceAddress (uint32_t sourceAddr, Dma_ChannelType channel);
 void Dma_StartChannel (Dma_ChannelType channel);\r
 void Dma_StopChannel (Dma_ChannelType channel);\r
 Std_ReturnType Dma_ChannelDone (Dma_ChannelType channel);\r
-struct tcd_t * Dma_GetTcd( Dma_ChannelType channel );\r
+volatile struct tcd_t * Dma_GetTcd( Dma_ChannelType channel );\r
 boolean Dma_CheckConfig( void );\r
 \r
 #endif /* DMA_H_ */\r
index 177bfd5b90a9df9dedfddad297951ce8528b8df1..c549979f0becc6e682b4df46c1fb6586097f5c73 100644 (file)
 #if ( EEP_DEV_ERROR_DETECT == STD_ON ) // Report DEV errors\r
 #define VALIDATE(_exp,_api,_err ) \\r
         if( !(_exp) ) { \\r
-          Det_ReportError(MODULE_ID_GPT,0,_api,_err); \\r
+          Det_ReportError(MODULE_ID_EEP,0,_api,_err); \\r
           return; \\r
         }\r
 \r
 #define VALIDATE_W_RV(_exp,_api,_err,_rv ) \\r
         if( !(_exp) ) { \\r
-          Det_ReportError(MODULE_ID_GPT,0,_api,_err); \\r
+          Det_ReportError(MODULE_ID_EEP,0,_api,_err); \\r
           return (_rv); \\r
         }\r
 \r
@@ -139,6 +139,7 @@ typedef struct {
        Eep_Arc_JobType mainState;\r
        Spi_SequenceType currSeq;\r
        uint32 chunkSize;\r
+       uint32            pageSize;
 } Eep_JobInfoType;\r
 \r
 #define JOB_SET_STATE(_x,_y)           job->state=(_x);job->mainState=(_y)\r
@@ -174,9 +175,9 @@ typedef struct {
 \r
 } Eep_GlobalType;\r
 \r
-#if 0\r
+#if 0  // Use SPI synchronous transmit
 #define SPI_TRANSMIT_FUNC(_x)  Spi_SyncTransmit(_x)\r
-#else\r
+#else  // Use SPI asynchronous transmit
 #define SPI_TRANSMIT_FUNC(_x,_y)       Eep_AsyncTransmit(_x,_y)\r
 \r
 Std_ReturnType Eep_AsyncTransmit(Spi_SequenceType Sequence,Eep_JobInfoType *job) {\r
@@ -255,6 +256,8 @@ void Eep_Init( const Eep_ConfigType* ConfigPtr ){
   Eep_Global.status     = MEMIF_IDLE;\r
   Eep_Global.jobResultType  = MEMIF_JOB_OK;\r
 \r
+  Eep_SetMode( CFG_P()->EepDefaultMode );
+
 }\r
 \r
 \r
@@ -330,6 +333,7 @@ Std_ReturnType Eep_Write( Eep_AddressType EepromAddress, const uint8* DataBuffer
                job->chunkSize = Eep_Global.config->EepNormalWriteBlockSize;\r
        }\r
 \r
+  job->pageSize = Eep_Global.config->EepPageSize;
   job->eepAddr = EepromAddress;\r
   job->targetAddr = (uint8 *)DataBufferPtr;\r
   job->left = Length;\r
@@ -363,6 +367,7 @@ Std_ReturnType Eep_Compare( Eep_AddressType EepromAddress, uint8 *TargetAddressP
      job->chunkSize = Eep_Global.config->EepNormalReadBlockSize;\r
   }\r
 \r
+  job->pageSize = Eep_Global.config->EepPageSize;    // Not relevant to compare/read operations, but set anyways.
   job->eepAddr = EepromAddress;\r
   job->targetAddr = TargetAddressPtr;\r
   job->left = Length;\r
@@ -373,8 +378,8 @@ Std_ReturnType Eep_Compare( Eep_AddressType EepromAddress, uint8 *TargetAddressP
 }\r
 \r
 \r
-void Eep_Cancel( void ){\r
-  EEP_JOB_END_NOTIFICATION();\r
+void Eep_Cancel( void ) {
+  EEP_JOB_ERROR_NOTIFICATION();
 \r
   if (MEMIF_JOB_PENDING==Eep_Global.jobResultType) {\r
        Eep_Global.jobResultType=MEMIF_JOB_CANCELLED;\r
@@ -401,6 +406,8 @@ MemIf_JobResultType Eep_GetJobResult( void ){
 static Spi_SeqResultType Eep_ProcessJob( Eep_JobInfoType *job ) {\r
   Spi_SeqResultType rv;\r
   _Bool done = 0;\r
+  uint32 chunkSize = 0;
+  uint32 sizeLeftInPage = 0;
 \r
   /* Check if previous sequence is OK */\r
   rv = Spi_GetSequenceResult(job->currSeq);\r
@@ -417,15 +424,19 @@ static Spi_SeqResultType Eep_ProcessJob( Eep_JobInfoType *job ) {
                        /* Check status from erase cmd, read status from flash */\r
                        Spi_SetupEB( CFG_P()->EepDataChannel, NULL, &Eep_Global.ebReadStatus, 1);\r
                        Eep_Global.ebCmd = E2_RDSR;\r
-                       if( SPI_TRANSMIT_FUNC(CFG_P()->EepCmd2Sequence,job ) != E_OK ) {\r
-                               assert(0);\r
+                       if( SPI_TRANSMIT_FUNC(CFG_P()->EepCmd2Sequence,job ) == E_OK )
+                       {
+                               SET_STATE(1,JOB_READ_STATUS_RESULT);
+                       }
+                       else
+                       {
+                               SET_STATE(1,JOB_READ_STATUS);
                        }\r
-                       SET_STATE(1,JOB_READ_STATUS_RESULT);\r
                        break;\r
 \r
                case JOB_READ_STATUS_RESULT:\r
                        DEBUG(DEBUG_LOW,"%s: READ_STATUS_RESULT\n",MODULE_NAME);\r
-                       if( Eep_Global.ebReadStatus&1 ) {\r
+                       if( Eep_Global.ebReadStatus & 1 ) {\r
                                SET_STATE(0,JOB_READ_STATUS);\r
                        } else {\r
                                SET_STATE(0,JOB_MAIN);\r
@@ -433,32 +444,53 @@ static Spi_SeqResultType Eep_ProcessJob( Eep_JobInfoType *job ) {
                        break;\r
 \r
                case JOB_MAIN:\r
-                       if( job->left != 0 ) {\r
-                               if( job->left <= job->chunkSize ) {\r
-                                       job->chunkSize = job->left;\r
+                       if( job->left > 0 ) {
+                               if( job->left <= job->chunkSize ) {
+                                       chunkSize = job->left;
+                               } else {
+                                       chunkSize = job->chunkSize;
                                }\r
 \r
                                Spi_ConvertToSpiAddr(Eep_Global.ebE2Addr,job->eepAddr);\r
 \r
-                               switch(job->mainState) {\r
+                       BOOL spiTransmitOK = FALSE;
 \r
+                       switch(job->mainState)
+                       {
                                case EEP_ERASE:\r
                                        /* NOT USED */\r
                                        break;\r
                                case EEP_READ:\r
                                case EEP_COMPARE:\r
-                                 DEBUG(DEBUG_LOW,"%s: READ s:%04x d:%04x l:%04x\n",MODULE_NAME,job->eepAddr, job->targetAddr, job->left);\r
+                                       DEBUG(DEBUG_LOW,"%s: READ s:%04x d:%04x l:%04x\n",MODULE_NAME,job->eepAddr, job->targetAddr, job->left);\r
                                        Eep_Global.ebCmd = E2_READ;\r
-                                       Spi_SetupEB( CFG_P()->EepDataChannel, NULL ,job->targetAddr,job->chunkSize);\r
-                                       SPI_TRANSMIT_FUNC(CFG_P()->EepReadSequence,job );\r
+                                       Spi_SetupEB( CFG_P()->EepDataChannel, NULL ,(Spi_DataType*)job->targetAddr,chunkSize);
+                                       if (SPI_TRANSMIT_FUNC(CFG_P()->EepReadSequence,job) == E_OK) {
+                                               spiTransmitOK = TRUE;
+                                       }
                                        break;\r
 \r
                                case EEP_WRITE:\r
                                        DEBUG(DEBUG_LOW,"%s: WRITE d:%04x s:%04x first data:%02x\n",MODULE_NAME,job->eepAddr,job->targetAddr,*job->targetAddr);\r
+
+                                       // Calculate how much space there is left in the current EEPROM page.
+                                       sizeLeftInPage = job->pageSize - (job->eepAddr % job->pageSize);
+
+                                       // Handle EEPROM page boundaries, i.e. make sure that we limit the chunk
+                                       // size so we don't write over the page boundary.
+                                       if (chunkSize > sizeLeftInPage) {\r
+                                               chunkSize = sizeLeftInPage;
+                                       } else {
+                                               // Do nothing since the size of the chunk to write is less than the
+                                               // available space left in the page.
+                                       }
+
                                        Eep_Global.ebCmd = E2_WRITE;\r
                                        Spi_ConvertToSpiAddr(Eep_Global.ebE2Addr,job->eepAddr);\r
-                                       Spi_SetupEB( CFG_P()->EepDataChannel, job->targetAddr, NULL, job->chunkSize);\r
-                                       SPI_TRANSMIT_FUNC(CFG_P()->EepWriteSequence,job );\r
+                                       Spi_SetupEB( CFG_P()->EepDataChannel, (const Spi_DataType*)job->targetAddr, NULL, chunkSize);
+                                       if (SPI_TRANSMIT_FUNC(CFG_P()->EepWriteSequence,job ) == E_OK) {
+                                               spiTransmitOK = TRUE;
+                                       }
                                        break;\r
 \r
                                default:\r
@@ -466,10 +498,15 @@ static Spi_SeqResultType Eep_ProcessJob( Eep_JobInfoType *job ) {
                                        break;\r
                                }\r
 \r
-                               job->eepAddr += job->chunkSize;\r
-                               job->targetAddr += job->chunkSize;\r
-                               job->left -= job->chunkSize;\r
-                               SET_STATE(1,JOB_READ_STATUS);\r
+                               if (spiTransmitOK) {
+                                       job->eepAddr += chunkSize;
+                                       job->targetAddr += chunkSize;
+                                       job->left -= chunkSize;
+
+                                       SET_STATE(1,JOB_READ_STATUS);\r
+                               } else {
+                                       SET_STATE(1,JOB_MAIN);
+                               }
 \r
                        } else {\r
                                /* We are done :) */\r
@@ -560,12 +597,13 @@ void Eep_MainFunction( void )
                                readJob.targetAddr = Eep_CompareBuffer;\r
                        } else {\r
                          // all other cases are bad\r
-                         firstTime = 1;\r
-        Eep_Global.jobResultType = MEMIF_JOB_FAILED;\r
-        Eep_Global.jobType = EEP_NONE;\r
-        Eep_Global.status = MEMIF_IDLE;\r
+                               firstTime = 1;\r
+                               Eep_Global.jobResultType = MEMIF_JOB_FAILED;\r
+                               Eep_Global.jobType = EEP_NONE;\r
+                               Eep_Global.status = MEMIF_IDLE;\r
 \r
-                               DET_REPORTERROR(MODULE_ID_EEP,0, 0x9, MEMIF_JOB_FAILED );\r
+                               DET_REPORTERROR(MODULE_ID_EEP,0, EEP_COMPARE_ID, EEP_E_COM_FAILURE ); // EEP056 (reporting to DET because DEM is missing)
+                               DET_REPORTERROR(MODULE_ID_EEP,0, EEP_COMPARE_ID, MEMIF_JOB_FAILED );
                                EEP_JOB_ERROR_NOTIFICATION();\r
                        }\r
                }\r
@@ -582,27 +620,33 @@ void Eep_MainFunction( void )
                Eep_Global.jobResultType = MEMIF_JOB_OK;\r
                Eep_Global.jobType = EEP_NONE;\r
                Eep_Global.status = MEMIF_IDLE;\r
-        EEP_JOB_END_NOTIFICATION();\r
-      } else if( jobResult == SPI_SEQ_PENDING )  {\r
-        /* Busy, Do nothing */\r
-      } else {\r
-        // Error\r
-       Eep_Global.jobResultType = MEMIF_JOB_FAILED;\r
-        Eep_Global.jobType = EEP_NONE;\r
-        Eep_Global.status = MEMIF_IDLE;\r
-\r
-       switch(Eep_Global.jobType) {\r
-       case EEP_ERASE:\r
-               DET_REPORTERROR(MODULE_ID_EEP,0, 0x9, MEMIF_JOB_FAILED );\r
+                       EEP_JOB_END_NOTIFICATION();\r
+               } else if( jobResult == SPI_SEQ_PENDING )  {\r
+               /* Busy, Do nothing */\r
+               } else {\r
+                       // Error\r
+\r
+                       Eep_EcoreJobType failedJobType = Eep_Global.jobType;
+
+                       Eep_Global.jobResultType = MEMIF_JOB_FAILED;\r
+                       Eep_Global.jobType = EEP_NONE;\r
+                       Eep_Global.status = MEMIF_IDLE;\r
+\r
+                       switch(failedJobType) {
+                               case EEP_ERASE:\r
+                                       DET_REPORTERROR(MODULE_ID_EEP,0, EEP_ERASE_ID, EEP_E_COM_FAILURE ); // EEP056 (reporting to DET because DEM is missing)
+                                       DET_REPORTERROR(MODULE_ID_EEP,0, EEP_ERASE_ID, MEMIF_JOB_FAILED );
                                        break;\r
-       case EEP_READ:\r
-               DET_REPORTERROR(MODULE_ID_EEP,0, 0x9, MEMIF_JOB_FAILED );\r
+                               case EEP_READ:\r
+                                       DET_REPORTERROR(MODULE_ID_EEP,0, EEP_READ_ID, EEP_E_COM_FAILURE ); // EEP056 (reporting to DET because DEM is missing)
+                                       DET_REPORTERROR(MODULE_ID_EEP,0, EEP_READ_ID, MEMIF_JOB_FAILED );
                                        break;\r
-       case EEP_WRITE:\r
-               DET_REPORTERROR(MODULE_ID_EEP,0, 0x9, MEMIF_JOB_FAILED );\r
+                               case EEP_WRITE:\r
+                                       DET_REPORTERROR(MODULE_ID_EEP,0, EEP_WRITE_ID, EEP_E_COM_FAILURE ); // EEP056 (reporting to DET because DEM is missing)
+                                       DET_REPORTERROR(MODULE_ID_EEP,0, EEP_WRITE_ID, MEMIF_JOB_FAILED );
                                        break;\r
-       default:\r
-               assert(0);\r
+                               default:\r
+                                       assert(0);\r
        }\r
 \r
         EEP_JOB_ERROR_NOTIFICATION();\r
index 7713bef34008dcf9aa68271b4921f24de93306eb..759becf834518262fbe8cf5b41577135d2724124 100644 (file)
@@ -86,6 +86,8 @@
 #define SHADOW_ROW_SIZE                0x00008000\r
 #define FLASH_PAGE_SIZE    H7FB_PAGE_SIZE\r
 \r
+#define FLASH_TOTAL_BLOCKS ( 20 )\r
+\r
 #if 0\r
 #define VFLAGS_ADDR_SECT               (1<<0)\r
 #define VFLAGS_ADDR_PAGE               (1<<1)\r
@@ -263,7 +265,7 @@ static inline int Fls_Validate( uint32 addr,uint32 length, uint32 api,uint32 rv
   }\r
 \r
 #define FLS_VALIDATE_PARAM_DATA_W_RV(_ptr,_api, _rv) \\r
-  if( (_ptr)==((void *)0)) { \\r
+  if(( (uint32)(_ptr)%FLS_READ_PAGE_SIZE != 0 ) || ( (_ptr)==((void *)0))) { \
     Det_ReportError(MODULE_ID_FLS,0,_api,FLS_E_PARAM_DATA); \\r
     return _rv; \\r
   }\r
@@ -480,7 +482,7 @@ static void address_to_erase_blocks( Fls_EraseBlockType *eraseBlocks, uint32 add
   endBlock = address_to_block( addr + size - 1,&rem );\r
 \r
   // Check so our implementation holds..\r
-  assert( endBlock<=32 );\r
+  assert( endBlock <= FLASH_TOTAL_BLOCKS );\r
 \r
 #define BLOCK_MASK 0x0003ffffUL\r
 \r
@@ -491,9 +493,9 @@ static void address_to_erase_blocks( Fls_EraseBlockType *eraseBlocks, uint32 add
 \r
 \r
   // shift things in to make freescale driver happy\r
-  eraseBlocks->lowEnabledBlocks = mask&0x3f; // ????\r
-  eraseBlocks->midEnabledBlocks = (mask>>10)&3; // ????\r
-  eraseBlocks->highEnabledBlocks = mask>>12;\r
+  eraseBlocks->lowEnabledBlocks = mask&0x3ff;   // Bits 0..9 indicats low blocks
+  eraseBlocks->midEnabledBlocks = (mask>>10)&3; // Bits 10..11 indicats mid blocks
+  eraseBlocks->highEnabledBlocks = mask>>12;    // Bits 12..19 indicats high blocks
 \r
 \r
   return ;\r
@@ -536,8 +538,8 @@ void Fls_Init( const Fls_ConfigType *ConfigPtr )
 Std_ReturnType Fls_Erase(      Fls_AddressType   TargetAddress,\r
                           Fls_LengthType    Length )\r
 {\r
-  uint32 block;\r
-  uint32 sBlock;\r
+  uint32 endBlock;\r
+  uint32 startBlock;\r
   uint32 rem;\r
   Fls_EraseBlockType eraseBlock;\r
   Fls_EraseInfoType eraseInfo;\r
@@ -553,14 +555,14 @@ Std_ReturnType Fls_Erase( Fls_AddressType   TargetAddress,
      return E_NOT_OK;\r
 \r
   // TargetAddress\r
-  sBlock = address_to_block(TargetAddress,&rem);\r
+  startBlock = address_to_block(TargetAddress,&rem);\r
 \r
-  if( (sBlock == (-1)) || (rem!=0) ) {\r
+  if( (startBlock == (-1)) || (rem!=0) ) {\r
     DET_REPORTERROR(MODULE_ID_FLS,0,0x0,FLS_E_PARAM_ADDRESS );\r
     return E_NOT_OK;\r
   }\r
 \r
-  block = address_to_block(TargetAddress+Length,&rem);\r
+  endBlock = address_to_block(TargetAddress+Length,&rem);\r
 \r
   // Check if we trying to erase a partition that we are executing in\r
   pc = Fls_GetPc();\r
@@ -569,8 +571,7 @@ Std_ReturnType Fls_Erase(   Fls_AddressType   TargetAddress,
        uint32 pcBlock = address_to_block(pc,&rem);\r
        uint8 *partMap = Fls_Global.config->FlsBlockToPartitionMap;\r
 \r
-       if( (partMap[pcBlock] >= partMap[sBlock]) && (partMap[pcBlock] <= partMap[block]) ) {\r
-//    if( address_to_block(pc,&rem) == Fls_Global.config->FlsBlockToPartitionMap[block] ) {\r
+       if( (partMap[pcBlock] >= partMap[startBlock]) && (partMap[pcBlock] <= partMap[endBlock]) ) {\r
         // Can't erase and in the same partition we are executing\r
         assert(0);\r
     }\r
@@ -828,5 +829,27 @@ void Fls_GetVersionInfo( Std_VersionInfoType *VersioninfoPtr )
   memcpy(VersioninfoPtr, &_Fls_VersionInfo, sizeof(Std_VersionInfoType));\r
 }\r
 \r
+void Fls_Check( uint32 flsBaseAddress, uint32 flsTotalSize )\r
+{\r
+  // ECC checking is always on by default.\r
+  // If a non correctable error is discovered\r
+  // we will get an IVOR2 exception.\r
+\r
+  // Enable Flash Non_Correctible Reporting,\r
+  // Not really necessary but makes more information\r
+  // available in the MCM registers if an error occurs.\r
+  MCM.ECR.B.EFNCR = 1;\r
+\r
+  // Read flash in 32bit chunks, it's most efficient.\r
+  uint32* memoryChunkPtr = (uint32*)flsBaseAddress;\r
+  uint32* flsTotalSizePtr = (uint32*)flsTotalSize;\r
+  uint32  memoryChunk = *memoryChunkPtr; // The first read\r
+\r
+  // Read the rest of the flash, chunk by chunk\r
+  while(memoryChunkPtr < flsTotalSizePtr)\r
+  {\r
+    memoryChunk=*(memoryChunkPtr++);\r
+  }\r
+}\r
 \r
 \r
index d4da25743222623c9681cee75951877b71d13fcb..4f8375ac5713aea9f6895e0f1ef6f199b7505512 100644 (file)
@@ -375,6 +375,7 @@ UINT32 Fls_H7F_Program ( PSSD_CONFIG pSSDConfig, Fls_ProgInfoType *pInfo )
       returnCode = Fls_H7F_ProgramStatus(pSSDConfig,pInfo);\r
       break;\r
     default:\r
+      returnCode = 0;\r
       assert(0);\r
       break;\r
     }\r
index e61a6a3cbc795798ac7a0cc4d1dc07ad3ad29438..0a2df55fa9cb52b985d10e8bdb44d7b806c17b73 100644 (file)
@@ -31,7 +31,7 @@
 #include "Det.h"\r
 #if defined(USE_KERNEL)\r
 #include "Os.h"\r
-#include "irq.h"\r
+#include "isr.h"\r
 #endif\r
 \r
 // Implementation specific\r
@@ -101,59 +101,54 @@ Gpt_GlobalType Gpt_Global;
 \r
 //-------------------------------------------------------------------\r
 \r
-\r
-/**\r
- * ISR helper-function that handles the HW channels( 0 to 8 )\r
- *\r
- * @param channel - Channel that the raised the interrupt\r
+/*\r
+ * ISR for a given PIT channel (macro)\r
  */\r
-\r
-static void Gpt_IsrCh(Gpt_ChannelType channel)\r
-{\r
-  const Gpt_ConfigType *config;\r
-  int confCh;\r
-\r
-  confCh = Gpt_Global.channelMap[channel];\r
-  assert(confCh != GPT_CHANNEL_ILL);\r
-\r
-  config = &Gpt_Global.config[confCh];\r
-\r
-  if (config->GptChannelMode == GPT_MODE_ONESHOT)\r
-  {\r
-    // Disable the channel\r
-    PIT.EN.R &= ~(1<<channel);\r
-\r
-    Gpt_Unit[channel].state = GPT_STATE_STOPPED;\r
+#define GPT_ISR( _channel )                            \\r
+  static void Gpt_Isr_Channel##_channel( void )        \\r
+  {                                                    \\r
+    const Gpt_ConfigType *config;                      \\r
+    int confCh;                                        \\r
+                                                       \\r
+    /* Find the config entry for the PIT channel. */   \\r
+    confCh = Gpt_Global.channelMap[ _channel ];        \\r
+    assert(confCh != GPT_CHANNEL_ILL);                 \\r
+    config = &Gpt_Global.config[ confCh ];             \\r
+                                                       \\r
+    if( config->GptChannelMode == GPT_MODE_ONESHOT )   \\r
+    {                                                  \\r
+      /* Disable the channel. */                       \\r
+      PIT.EN.R &= ~( 1 << _channel );                  \\r
+                                                       \\r
+      Gpt_Unit[_channel].state = GPT_STATE_STOPPED;    \\r
+    }                                                  \\r
+    config->GptNotification();                         \\r
+                                                       \\r
+    /* Clear interrupt. */                             \\r
+    PIT.FLG.R = ( 1 << _channel );                     \\r
   }\r
-  config->GptNotification();\r
 \r
-  // Clear interrupt\r
-  PIT.FLG.R = (1<<channel); // Added by Mattias 2009-01\r
-}\r
-\r
-//-------------------------------------------------------------------\r
-// Macro that counts leading zeroes.\r
-#define CNTLZW_INV(x) (31-cntlzw(x))\r
+#define STR__(x)       #x\r
+#define XSTR__(x) STR__(x)\r
 \r
-/**\r
- * ISR that handles all interrupts to the PIT channels\r
- * ( NOT the decrementer )\r
+/*\r
+ * Create instances of the ISR for each PIT channel.\r
  */\r
-\r
-static void Gpt_Isr(void)\r
-{\r
-  uint32 flgMask= PIT.FLG.R;\r
-  uint8 chNr = 0;\r
-\r
-  // Loop over all interrupts\r
-  for (; flgMask; flgMask&=~(1<<chNr))\r
-  {\r
-    // Find first channel that is requesting service.\r
-    chNr = CNTLZW_INV(flgMask);\r
-    Gpt_IsrCh(chNr);\r
-    // Clear interrupt\r
-    PIT.FLG.R = (1<<chNr);\r
-  }\r
+GPT_ISR( 0 );\r
+GPT_ISR( 1 );\r
+GPT_ISR( 2 );\r
+GPT_ISR( 3 );\r
+GPT_ISR( 4 );\r
+GPT_ISR( 5 );\r
+GPT_ISR( 6 );\r
+GPT_ISR( 7 );\r
+GPT_ISR( 8 );\r
+\r
+#define GPT_ISR_INSTALL( _channel, _prio )                                                                                                     \\r
+{                                                                                                                                                                      \\r
+       TaskType tid;                                                                                                                                   \\r
+       tid = Os_Arc_CreateIsr(Gpt_Isr_Channel##_channel, _prio, XSTR__(Gpt_##_channel));       \\r
+       Irq_AttachIsr2(tid, NULL, PIT_PITFLG_RTIF + _channel);                                                  \\r
 }\r
 \r
 //-------------------------------------------------------------------\r
@@ -190,14 +185,24 @@ void Gpt_Init(const Gpt_ConfigType *config)
     {\r
       if (cfg->GptNotification != NULL)\r
       {\r
-\r
-#if defined(USE_KERNEL)\r
-                       TaskType tid;\r
-                       tid = Os_Arc_CreateIsr(Gpt_Isr, 2, "Gpt_Isr");\r
-                       Irq_AttachIsr2(tid, NULL, PIT_PITFLG_RTIF + ch);\r
-#else\r
-                       IntCtrl_InstallVector(Gpt_Isr, PIT_PITFLG_RTIF + ch, 1, CPU_Z1);\r
-#endif\r
+        switch( ch )\r
+        {\r
+          case 0: GPT_ISR_INSTALL( 0, cfg->GptNotificationPriority ); break;\r
+          case 1: GPT_ISR_INSTALL( 1, cfg->GptNotificationPriority ); break;\r
+          case 2: GPT_ISR_INSTALL( 2, cfg->GptNotificationPriority ); break;\r
+          case 3: GPT_ISR_INSTALL( 3, cfg->GptNotificationPriority ); break;\r
+          case 4: GPT_ISR_INSTALL( 4, cfg->GptNotificationPriority ); break;\r
+          case 5: GPT_ISR_INSTALL( 5, cfg->GptNotificationPriority ); break;\r
+          case 6: GPT_ISR_INSTALL( 6, cfg->GptNotificationPriority ); break;\r
+          case 7: GPT_ISR_INSTALL( 7, cfg->GptNotificationPriority ); break;\r
+          case 8: GPT_ISR_INSTALL( 8, cfg->GptNotificationPriority ); break;\r
+          default:\r
+          {\r
+            // Unknown PIT channel.\r
+            assert( 0 );\r
+            break;\r
+          }\r
+        }\r
       }\r
     }\r
 #if defined(USE_KERNEL)\r
@@ -345,6 +350,11 @@ Gpt_ValueType Gpt_GetTimeRemaining(Gpt_ChannelType channel)
   {\r
     remaining = get_spr(SPR_DEC);\r
   }\r
+  else\r
+  {\r
+    /* We have written a fault in the fault log. Return 0. */\r
+    remaining = 0;\r
+  }\r
 \r
 return remaining;\r
 }\r
@@ -372,6 +382,11 @@ Gpt_ValueType Gpt_GetTimeElapsed(Gpt_ChannelType channel)
   {\r
     timer = get_spr(SPR_DECAR) - get_spr(SPR_DEC);\r
   }\r
+  else\r
+  {\r
+    /* We have written a fault in the fault log. Return 0. */\r
+    timer = 0;\r
+  }\r
 \r
   return (timer);\r
 }\r
index 6abbc3f1897a62c749290a91bb1ae385bc9337c7..b539829c3233ee5618b0c1b58244bc6bfe194818 100644 (file)
@@ -30,7 +30,7 @@
 #include "LinIf_Cbk.h"\r
 #if defined(USE_KERNEL)\r
 #include "Os.h"\r
-#include "irq.h"\r
+#include "isr.h"\r
 #endif\r
 \r
 #define ESCI(exp) (volatile struct ESCI_tag *)(0xFFFA0000 + (0x4000 * exp))\r
index 9ec24a14d87083f08581e0a6f7f4c1eb0fbecbea..3977f2fcae88278c854536c84b816fad99a3f00c 100644 (file)
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
 \r
-\r
-\r
-\r
-\r
-\r
-\r
+/* ----------------------------[includes]------------------------------------*/\r
 #include <assert.h>\r
 #include <string.h>\r
 #include "Std_Types.h"\r
 #include "Cpu.h"\r
 #include "Ramlog.h"\r
 #include "Os.h"\r
-#include "irq.h"\r
+#include "isr.h"\r
 \r
-//#define USE_TRACE 1\r
+/* ----------------------------[private define]------------------------------*/\r
 //#define USE_LDEBUG_PRINTF 1\r
 #include "debug.h"\r
 \r
 #define SYSCLOCK_SELECT_PLL    0x2\r
 \r
+/* ----------------------------[private macro]-------------------------------*/\r
+\r
 #if defined(CFG_MPC5567)\r
 #define CALC_SYSTEM_CLOCK(_extal,_emfd,_eprediv,_erfd)  \\r
             ( (_extal) * ((_emfd)+4) / (((_eprediv)+1)*(1<<(_erfd))) )\r
             ( (_extal) * ((_emfd)+16) / (((_eprediv)+1)*((_erfd)+1)) )\r
 #endif\r
 \r
-typedef void (*vfunc_t)();\r
+/* Development error macros. */\r
+#if ( MCU_DEV_ERROR_DETECT == STD_ON )\r
+#define VALIDATE(_exp,_api,_err ) \\r
+        if( !(_exp) ) { \\r
+          Det_ReportError(MODULE_ID_MCU,0,_api,_err); \\r
+          return; \\r
+        }\r
 \r
-/* Function declarations. */\r
-static void Mcu_ConfigureFlash(void);\r
+#define VALIDATE_W_RV(_exp,_api,_err,_rv ) \\r
+        if( !(_exp) ) { \\r
+          Det_ReportError(MODULE_ID_MCU,0,_api,_err); \\r
+          return (_rv); \\r
+        }\r
+#else\r
+#define VALIDATE(_exp,_api,_err )\r
+#define VALIDATE_W_RV(_exp,_api,_err,_rv )\r
+#endif\r
 \r
 \r
+/* ----------------------------[private typedef]-----------------------------*/\r
+typedef void (*vfunc_t)();\r
+\r
 typedef struct {\r
        uint32 lossOfLockCnt;\r
        uint32 lossOfClockCnt;\r
@@ -76,23 +89,10 @@ typedef struct
 \r
 } Mcu_GlobalType;\r
 \r
-/* Development error macros. */\r
-#if ( MCU_DEV_ERROR_DETECT == STD_ON )\r
-#define VALIDATE(_exp,_api,_err ) \\r
-        if( !(_exp) ) { \\r
-          Det_ReportError(MODULE_ID_MCU,0,_api,_err); \\r
-          return; \\r
-        }\r
 \r
-#define VALIDATE_W_RV(_exp,_api,_err,_rv ) \\r
-        if( !(_exp) ) { \\r
-          Det_ReportError(MODULE_ID_MCU,0,_api,_err); \\r
-          return (_rv); \\r
-        }\r
-#else\r
-#define VALIDATE(_exp,_api,_err )\r
-#define VALIDATE_W_RV(_exp,_api,_err,_rv )\r
-#endif\r
+/* ----------------------------[private function prototypes]-----------------*/\r
+static void Mcu_ConfigureFlash(void);\r
+/* ----------------------------[private variables]---------------------------*/\r
 \r
 // Global config\r
 Mcu_GlobalType Mcu_Global =\r
@@ -101,21 +101,35 @@ Mcu_GlobalType Mcu_Global =
                .config = &McuConfigData[0],\r
 };\r
 \r
-//-------------------------------------------------------------------\r
+/* ----------------------------[private functions]---------------------------*/\r
+/* ----------------------------[public functions]----------------------------*/\r
+\r
 \r
-static void Mcu_LossOfLock( void  ) {\r
+/**\r
+ * ISR wh\r
+ */\r
+void Mcu_LossOfLock( void  ) {\r
 #if defined(USE_DEM)\r
        Dem_ReportErrorStatus(MCU_E_CLOCK_FAILURE, DEM_EVENT_STATUS_FAILED);\r
 #endif\r
 \r
+  /*\r
+   * NOTE!!!\r
+   * This interrupt may be triggered more than expected.\r
+   * If you are going to use this interrupt, see [Freescale Device Errata MPC5510ACE, Rev. 10 APR 2009, errata ID: 6764].\r
+   *\r
+   */\r
+\r
        Mcu_Global.stats.lossOfLockCnt++;\r
        // Clear interrupt\r
        FMPLL.SYNSR.B.LOLF = 1;\r
 \r
 }\r
 \r
-//-------------------------------------------------------------------\r
-static void Mcu_LossOfCLock( void  ) {\r
+/**\r
+ *\r
+ */\r
+void Mcu_LossOfClock( void  ) {\r
 \r
        /* Should report MCU_E_CLOCK_FAILURE with DEM here */\r
 \r
@@ -248,45 +262,52 @@ static uint32 Mcu_CheckCpu( void ) {
 }\r
 \r
 \r
+\r
 //-------------------------------------------------------------------\r
 \r
-void Mcu_Init(const Mcu_ConfigType *configPtr)\r
-{\r
-  VALIDATE( ( NULL != configPtr ), MCU_INIT_SERVICE_ID, MCU_E_PARAM_CONFIG );\r
+void Mcu_Init(const Mcu_ConfigType *configPtr) {\r
+#if 0\r
+       IRQ_DECL_ISR1( "LossOfLock", PLL_SYNSR_LOLF,  CPU_CORE0, 10, Mcu_LossOfLock  );\r
+       IRQ_DECL_ISR1( "LossOfClock", PLL_SYNSR_LOCF,  CPU_CORE0, 10, Mcu_LossOfClock );\r
+#endif\r
 \r
-  if( !SIMULATOR() ) {\r
-         Mcu_CheckCpu();\r
-  }\r
+       VALIDATE( ( NULL != configPtr ), MCU_INIT_SERVICE_ID, MCU_E_PARAM_CONFIG );\r
 \r
-  memset(&Mcu_Global.stats,0,sizeof(Mcu_Global.stats));\r
+       if (!SIMULATOR()) {\r
+               Mcu_CheckCpu();\r
+       }\r
 \r
+       memset(&Mcu_Global.stats, 0, sizeof(Mcu_Global.stats));\r
 \r
-  //\r
-  // Setup memories\r
-  //\r
-  Mcu_ConfigureFlash();\r
+       //\r
+       // Setup memories\r
+       //\r
+       Mcu_ConfigureFlash();\r
 \r
-  Mcu_Global.config = configPtr;\r
-  Mcu_Global.initRun = 1;\r
+       Mcu_Global.config = configPtr;\r
+       Mcu_Global.initRun = 1;\r
 \r
-  if( Mcu_Global.config->McuClockSrcFailureNotification == TRUE  ){\r
-       // Enable loss of lock interrupt\r
+       if (Mcu_Global.config->McuClockSrcFailureNotification == TRUE) {\r
+               // Enable loss of lock interrupt\r
 \r
-       Irq_AttachIsr1(Mcu_LossOfLock, NULL, PLL_SYNSR_LOLF,10 );\r
+//             IRQ_ATTACH( PLL_SYNSR_LOLF );\r
+               //Irq_Attach( &IRQ_NAME(PLL_SYNSR_LOLF) );\r
+//             Irq_AttachIsr1(Mcu_LossOfLock, NULL, PLL_SYNSR_LOLF, 10);\r
 #if defined(CFG_MPC5516)\r
-//     FMPLL.SYNCR.B.LOCIRQ = 1; TODO: Kolla denna bortkommentering med MÃ¥rten.\r
-       FMPLL.ESYNCR2.B.LOLIRQ = 1;\r
+               FMPLL.ESYNCR2.B.LOLIRQ = 1;\r
 #elif defined(CFG_MPC5554) || defined(CFG_MPC5567)\r
-       FMPLL.SYNCR.B.LOLIRQ = 1;\r
+               FMPLL.SYNCR.B.LOLIRQ = 1;\r
 #endif\r
-       Irq_AttachIsr1(Mcu_LossOfCLock, NULL, PLL_SYNSR_LOCF,10 );\r
+\r
+//             IRQ_ATTACH( PLL_SYNSR_LOLF );\r
+//             Irq_Attach( &IRQ_NAME(PLL_SYNSR_LOLF));\r
+//             Irq_AttachIsr1(Mcu_LossOfClock, NULL, PLL_SYNSR_LOCF, 10);\r
 #if defined(CFG_MPC5516)\r
-//     FMPLL.SYNCR.B.LOCIRQ = 1; TODO: Kolla denna bortkommentering med MÃ¥rten.\r
-       FMPLL.ESYNCR2.B.LOCIRQ = 1;\r
+               FMPLL.ESYNCR2.B.LOCIRQ = 1;\r
 #elif defined(CFG_MPC5554) || defined(CFG_MPC5567)\r
-       FMPLL.SYNCR.B.LOCIRQ = 1;\r
+               FMPLL.SYNCR.B.LOCIRQ = 1;\r
 #endif\r
-  }\r
+       }\r
 }\r
 //-------------------------------------------------------------------\r
 \r
@@ -531,8 +552,10 @@ void McuE_ExitCriticalSection(uint32_t old_state)
 \r
 /**\r
  * Get the peripheral clock in Hz for a specific device\r
+ *\r
+ * @param type\r
+ * @return\r
  */\r
-\r
 uint32_t McuE_GetPeripheralClock(McuE_PeriperalClock_t type)\r
 {\r
 #if defined(CFG_MPC5567)\r
diff --git a/arch/ppc/mpc55xx/drivers/Mcu_Exceptions.sx b/arch/ppc/mpc55xx/drivers/Mcu_Exceptions.sx
deleted file mode 100644 (file)
index dad45a0..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-\r
-#define _ASSEMBLER_\r
-#include "asm_ppc.h"\r
-#include "asm_book_e.h"\r
-#ifdef USE_KERNEL\r
-#include "asm_offset.h"\r
-#endif\r
-\r
-#define  INTC_IACKR  0xfff48010\r
-#define  INTC_EOIR   0xfff48018\r
-\r
-#define SIU_MIDR    0xfffe8004\r
-#define SIMULATOR(_reg,_inst,_label)   \\r
-         lis    _reg, SIU_MIDR@ha; \\r
-         lwz    _reg, SIU_MIDR@l(_reg); \\r
-         cmpwi  0,_reg,0; \\r
-         _inst    _label;\r
-\r
-               .section .text\r
-//---------------------------------------------------------------\r
-// just a small decrementer exception to trigger soft interrupt\r
-// in the INTC( simluator addon )\r
-\r
-\r
-               #define INTC_SSCIR7 0xFFF48027\r
-               .global dec_exception\r
-\r
-dec_exception:\r
-    stwu       r3,-8(sp)\r
-    stw        r4,4(sp)\r
-\r
-    # ack dec int\r
-    lis        r3,0x0800\r
-    mtspr   SPR_TSR,r3\r
-\r
-    # Set soft int\r
-    li         r4,2\r
-    lis     r3, INTC_SSCIR7@ha\r
-    stb     r4, INTC_SSCIR7@l(r3)\r
-\r
-    lwz     r3,0(sp)\r
-    lwz     r4,4(sp)\r
-    addi       sp,sp,8\r
-    rfi\r
-\r
-\r
-EXCEPTION_CSRRx(exception_IVOR0,320)    //#CRITICAL_INPUT_EXCEPTION\r
-EXCEPTION_CSRRx(exception_IVOR1,321)    //#MACHINE_CHECK_EXCEPTION\r
-EXCEPTION_SRRx(exception_IVOR2,322)     //#DATA_STORAGE_EXCEPTION\r
-EXCEPTION_SRRx(exception_IVOR3,323)     //#INSTRUCTION_STORAGE_EXCEPTION\r
-// IVOR4, defined elsewhere\r
-EXCEPTION_SRRx(exception_IVOR5,325)     //#ALIGNMENT_EXCEPTION\r
-EXCEPTION_SRRx(exception_IVOR6,326)     //#PROGRAM_EXCEPTION\r
-EXCEPTION_SRRx(exception_IVOR7,327)     //#FLOATING_POINT_EXCEPTION\r
-EXCEPTION_SRRx(exception_IVOR8,328)     //#SYSTEM_CALL_EXCEPTION)\r
-EXCEPTION_SRRx(exception_IVOR9,329)\r
-// IVOR10, defined elsewhere\r
-EXCEPTION_SRRx(exception_IVOR11,331)    //#FIXED_INTERVAL_TIMER_EXCEPTION\r
-EXCEPTION_SRRx(exception_IVOR12,332)    //#WATCHDOG_TIMER_EXCEPTION\r
-EXCEPTION_SRRx(exception_IVOR13,333)    //#DATA_TLB_EXCEPTION\r
-EXCEPTION_SRRx(exception_IVOR14,334)    //#INSTRUCTION_TLB_EXCEPTION\r
-\r
-\r
-//\r
-//   EXC_FRAME\r
-//   VGPR_FRAME\r
-//  NVGPR_FRAME\r
-//\r
-\r
-               .global exception_IVOR4\r
-               .global os_lc_restore\r
-               .balign 16\r
-exception_IVOR4:\r
-\r
-       SAVE_WORK_AND_MORE\r
-       // Save registers NOT preserved by functions\r
-       SAVE_VGPR(1,C_SIZE);\r
-       // Save registers preserved by functions\r
-       addi    r1,r1,C_SIZE\r
-       SAVE_NVGPR(1,0);\r
-       addi    r1,r1,-C_SIZE\r
-\r
-       // TODO: Why 0, can't remember\r
-    li    r3,0\r
-    stw   r3,EXC_VECTOR_OFF(r4)\r
-       mr        r4,r1         // save stack\r
-\r
-#ifdef USE_KERNEL\r
-       li              r3,LC_PATTERN\r
-       stw             r3,C_CONTEXT_OFF(sp)\r
-\r
-       // Switch to interrupt stack if at depth 0\r
-       LOAD_IND_32(3,os_sys+SYS_INT_NEST_CNT)\r
-       cmpli   0,r3,0\r
-       bne-    on_int_stack\r
-       // Load the interrupt stack\r
-       LOAD_IND_32(sp,os_sys+SYS_INT_STACK)\r
-on_int_stack:\r
-\r
-#endif\r
-\r
-    lis   r3, Irq_Entry@h\r
-    ori   r3, r3,Irq_Entry@l\r
-\r
-    mtlr  r3\r
-    mr    r3,r4  /* "old" stack as arg1 */\r
-    blrl\r
-\r
-#ifdef USE_KERNEL\r
-// Set the retun value as new stack\r
-       mr              sp,r3\r
-#endif\r
-       addi    r1,r1,C_SIZE\r
-       RESTORE_NVGPR(1,0)\r
-       addi    r1,r1,-C_SIZE\r
-       RESTORE_VGPR(1,C_SIZE)\r
-\r
-       RESTORE_WORK_AND_MORE\r
-       rfi\r
-\r
-bad_int:\r
-       b bad_int\r
-\r
-# Force this jump table to this address to match the\r
-# value written to z1 IVPR\r
-.section ".exception_tbl","ax"\r
-.balign 0x0800  //TODO: 1000 eller 800?\r
-.global exception_tbl\r
-\r
-# The .skip directive aligns the branch instructions\r
-#   to the irq vector offsets\r
-exception_tbl:\r
-    b      exception_IVOR0\r
-    .skip   +0xc\r
-    b      exception_IVOR1\r
-    .skip   +0xc\r
-    b      exception_IVOR2\r
-    .skip   +0xc\r
-    b      exception_IVOR3\r
-    .skip   +0xc\r
-    b      exception_IVOR4\r
-    .skip   +0xc\r
-    b      exception_IVOR5\r
-    .skip   +0xc\r
-    b      exception_IVOR6\r
-    .skip   +0xc\r
-    b      exception_IVOR7\r
-    .skip   +0xc\r
-    b      exception_IVOR8\r
-    .skip   +0xc\r
-    b      exception_IVOR9\r
-    .skip   +0xc\r
-    b      dec_exception\r
-    //b           exception_IVOR10\r
-    .skip   +0xc\r
-    b      exception_IVOR11\r
-    .skip   +0xc\r
-    b      exception_IVOR12\r
-    .skip   +0xc\r
-    b      exception_IVOR13\r
-    .skip   +0xc\r
-    b      exception_IVOR14\r
-    .skip   +0xc\r
-    b      bad_int\r
index 3ee20477a95e2a45dee294ce98f1ac337b5c7c59..7b12cf3083d1941c451f52e1403dcc055974b3cf 100644 (file)
@@ -52,19 +52,19 @@ static const Port_ConfigType * _configPtr = &PortConfigData;
 #define VALIDATE_PARAM_CONFIG(_ptr,_api) \\r
        if( (_ptr)==((void *)0) ) { \\r
                Det_ReportError(MODULE_ID_PORT, 0, _api, PORT_E_PARAM_CONFIG ); \\r
-               goto cleanup; \\r
+               return; \\r
        }\r
 \r
 #define VALIDATE_STATE_INIT(_api)\\r
        if(PORT_INITIALIZED!=_portState){\\r
                Det_ReportError(MODULE_ID_PORT, 0, _api, PORT_E_UNINIT ); \\r
-               goto cleanup; \\r
+               return; \\r
        }\r
 \r
 #define VALIDATE_PARAM_PIN(_pin, _api)\\r
        if(_pin>sizeof(SIU.PCR)){\\r
                Det_ReportError(MODULE_ID_PORT, 0, _api, PORT_E_PARAM_PIN ); \\r
-               goto cleanup; \\r
+               return; \\r
        }\r
 #else\r
 #define VALIDATE_PARAM_CONFIG(_ptr,_api)\r
@@ -94,7 +94,7 @@ void Port_Init(const Port_ConfigType *configType)
   // Pointers to the register memory areas\r
   vuint16_t * padConfig = &(SIU.PCR[0].R);\r
   vuint8_t * outConfig = &(SIU.GPDO[0].R);\r
-//  vuint8_t * inConfig = &(SIU.GPDI[0].R);\r
+//  vuint8_t * inConfig = &(SIU.GPDI[0].R); // Read only\r
 \r
   // Copy config to register areas\r
   memcpy((void *)outConfig, configType->outConfig, configType->outCnt);\r
@@ -102,7 +102,7 @@ void Port_Init(const Port_ConfigType *configType)
   //memcpy((void *)inConfig, configType->inConfig, configType->inCnt);\r
   _portState = PORT_INITIALIZED;\r
   _configPtr = configType;\r
-  cleanup: return;\r
+  return;\r
 }\r
 \r
 #if ( PORT_SET_PIN_DIRECTION_API == STD_ON )\r
@@ -126,7 +126,7 @@ void Port_SetPinDirection( Port_PinType pin, Port_PinDirectionType direction )
     SIU.PCR[pin].B.OBE = 1;\r
     _Irq_Disable_restore(state); // Restore interrupts\r
   }\r
-cleanup:return;\r
+  return;\r
 }\r
 #endif\r
 \r
@@ -147,7 +147,7 @@ void Port_RefreshPortDirection( void )
     padCfgPtr++;\r
   }\r
 \r
-  cleanup:return;\r
+  return;\r
 }\r
 \r
 #if PORT_VERSION_INFO_API == STD_ON\r
@@ -155,7 +155,7 @@ void Port_GetVersionInfo(Std_VersionInfoType* versionInfo)
 {\r
   VALIDATE_STATE_INIT(PORT_GET_VERSION_INFO_ID);\r
   memcpy(versionInfo, &_Port_VersionInfo, sizeof(Std_VersionInfoType));\r
-  cleanup: return;\r
+  return;\r
 }\r
 #endif\r
 \r
@@ -168,6 +168,6 @@ void Port_SetPinMode(Port_PinType Pin, Port_PinModeType Mode)
   //characteristics of external pins. The PCRs can select the multiplexed function of a pin, selection of pullup\r
   //or pulldown devices, the slew rate of I/O signals, open drain mode for output pins, and hysteresis.\r
   SIU.PCR[Pin].R = Mode; // Put the selected mode to the PCR register\r
-  cleanup: return;\r
+  return;\r
 }\r
 #endif\r
index 77ac8c392c72641a4cf57e6c4a9aed0064f3998e..161aa5a03d6663fabf148c92df522d1cf583e212 100644 (file)
 #include "Os.h"\r
 #endif\r
 #include "Mcu.h"\r
+#if PWM_NOTIFICATION_SUPPORTED==STD_ON\r
+#include "irq.h"\r
+#include "arc.h"\r
+#endif\r
+\r
 \r
 #if PWM_DEV_EROR_DETECT==STD_ON\r
        #define PWM_VALIDATE(_exp, _errid) \\r
index 31926f18d4a611407a2c9f396ead23d8608b27e5..6723815f4a2ecd05b3378865965142ca85b87c82 100644 (file)
 #include "Det.h"\r
 #include <stdlib.h>\r
 \r
-//#define USE_TRACE 1\r
 //#define USE_LDEBUG_PRINTF    1\r
 #undef DEBUG_LVL\r
 #define DEBUG_LVL DEBUG_HIGH\r
diff --git a/arch/ppc/mpc55xx/drivers/WdgM.c b/arch/ppc/mpc55xx/drivers/WdgM.c
deleted file mode 100644 (file)
index 8e2f654..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-/* -------------------------------- Arctic Core ------------------------------\r
- * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
- *\r
- * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
- *\r
- * This source code is free software; you can redistribute it and/or modify it\r
- * under the terms of the GNU General Public License version 2 as published by the\r
- * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
- *\r
- * This program is distributed in the hope that it will be useful, but\r
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
- * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
- * for more details.\r
- * -------------------------------- Arctic Core ------------------------------*/\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-#include "WdgM.h"\r
-#include "Mcu.h"\r
-\r
-const WdgM_ConfigType *wdgMConfigPtr;\r
-static WdgM_SupervisedStatusType WdgM_GlobalSupervisionStatus = WDBG_ALIVE_OK;\r
-\r
-Std_ReturnType WdgM_UpdateAliveCounter (WdgM_SupervisedEntityIdType SEid)\r
-{\r
-  Wdgm_SupervisionType *supervisionPtr = &(wdgMConfigPtr->Wdgm_SupervisionPtr)[SEid];\r
-\r
-  if (supervisionPtr->ActivationStatus == WDBG_SUPERVISION_ENABLED)\r
-  {\r
-    supervisionPtr->AliveCounter++;\r
-  }\r
-  return (E_OK);\r
-}\r
-\r
-Std_ReturnType WdgM_ActivateAliveSupervision (WdgM_SupervisedEntityIdType SEid)\r
-{\r
-  Wdgm_SupervisionType *supervisionPtr = &(wdgMConfigPtr->Wdgm_SupervisionPtr)[SEid];\r
-\r
-  supervisionPtr->ActivationStatus = WDBG_SUPERVISION_ENABLED;\r
-\r
-  return (E_OK);\r
-}\r
-\r
-Std_ReturnType WdgM_DeactivateAliveSupervision (WdgM_SupervisedEntityIdType SEid)\r
-{\r
-  Wdgm_SupervisionType *supervisionPtr = &(wdgMConfigPtr->Wdgm_SupervisionPtr)[SEid];\r
-\r
-  supervisionPtr->ActivationStatus = WDBG_SUPERVISION_DISABLED;\r
-  return (E_OK);\r
-}\r
-\r
-void WdgM_Init(const WdgM_ConfigType *ConfigPtr)\r
-{\r
-  WdgM_SupervisedEntityIdType SEid;\r
-  Wdgm_SupervisionType *supervisionPtr;\r
-  WdgM_SupervisedEntityType* supervisedEntityPtr;\r
-\r
-  for (SEid = 0; SEid < WDBG_NBR_OF_ALIVE_SIGNALS; SEid++)\r
-  {\r
-    supervisionPtr = &(ConfigPtr->Wdgm_SupervisionPtr)[SEid];\r
-    supervisedEntityPtr = (WdgM_SupervisedEntityType*)&(ConfigPtr->WdgM_SupervisedEntityPtr)[SEid];\r
-    supervisionPtr->ActivationStatus = supervisedEntityPtr->WdgM_ActivationStatus;\r
-  }\r
-  wdgMConfigPtr = ConfigPtr;\r
-\r
-}\r
-\r
-void WdgM_MainFunction_AliveSupervision (void)\r
-{\r
-  WdgM_SupervisedEntityIdType SEid;\r
-  Wdgm_SupervisionType *supervisionPtr;\r
-  const WdgM_SupervisedEntityType *entityPtr;\r
-  WdgM_SupervisionCounterType aliveCalc, nSC, nAl, eai;\r
-  WdgM_SupervisedStatusType maxLocal = WDBG_ALIVE_OK;\r
-  static WdgM_SupervisionCounterType expiredSupervisionCycles = 0;\r
-\r
-  for (SEid = 0; SEid < WDBG_NBR_OF_ALIVE_SIGNALS; SEid++)\r
-  {\r
-    supervisionPtr = &(wdgMConfigPtr->Wdgm_SupervisionPtr)[SEid];\r
-    entityPtr      = &(wdgMConfigPtr->WdgM_SupervisedEntityPtr)[SEid];\r
-\r
-    if (WDBG_SUPERVISION_ENABLED == supervisionPtr->ActivationStatus)\r
-    {\r
-      supervisionPtr->SupervisionCycle++;\r
-      /* Only perform supervision on the reference cycle. */\r
-      if (supervisionPtr->SupervisionCycle == entityPtr->WdgM_SupervisionReferenceCycle)\r
-      {\r
-        /* Alive algorithm. *\r
-         * n (Al) - n(SC) + EAI == 0 */\r
-        if (entityPtr->WdgM_ExpectedAliveIndications > entityPtr->WdgM_SupervisionReferenceCycle)\r
-        {\r
-          /* Scenario A */\r
-          eai = -entityPtr->WdgM_ExpectedAliveIndications + 1;\r
-\r
-        }\r
-        else\r
-        {\r
-          /* Scenario B */\r
-          eai = entityPtr->WdgM_SupervisionReferenceCycle - 1;\r
-        }\r
-        nSC = supervisionPtr->SupervisionCycle;\r
-        nAl = supervisionPtr->AliveCounter;\r
-        aliveCalc = nAl - nSC + eai;\r
-\r
-        if ((aliveCalc <= entityPtr->WdgM_MaxMargin) &&\r
-            (aliveCalc >= -entityPtr->WdgM_MinMargin))\r
-        {\r
-          /* Entity alive OK. */\r
-          supervisionPtr->SupervisionStatus = WDBG_ALIVE_OK;\r
-        }\r
-        else\r
-        {\r
-          /* Entity alive NOK. */\r
-          supervisionPtr->SupervisionStatus = WDBG_ALIVE_FAILED;\r
-          if (WDBG_ALIVE_FAILED > maxLocal)\r
-          {\r
-            maxLocal = WDBG_ALIVE_FAILED;\r
-          }\r
-        }\r
-\r
-        if (WDBG_ALIVE_FAILED == supervisionPtr->SupervisionStatus)\r
-        {\r
-          if (supervisionPtr->NbrOfFailedRefCycles > entityPtr->WdgM_FailedSupervisionReferenceCycleTolerance)\r
-          {\r
-            supervisionPtr->SupervisionStatus = WDBG_ALIVE_EXPIRED;\r
-            if (WDBG_ALIVE_EXPIRED > maxLocal)\r
-            {\r
-              maxLocal = WDBG_ALIVE_EXPIRED;\r
-            }\r
-          }\r
-          else\r
-          {\r
-            supervisionPtr->NbrOfFailedRefCycles++;\r
-          }\r
-        }\r
-\r
-        /* Reset counters. */\r
-        supervisionPtr->SupervisionCycle = 0;\r
-        supervisionPtr->AliveCounter = 0;\r
-      }\r
-    }\r
-  }\r
-\r
-  /* Try to heal global status. */\r
-  if (WDBG_ALIVE_EXPIRED != WdgM_GlobalSupervisionStatus)\r
-  {\r
-    WdgM_GlobalSupervisionStatus = maxLocal;\r
-  }\r
-  else\r
-  {\r
-    WdgM_GlobalSupervisionStatus = WDBG_ALIVE_EXPIRED;\r
-  }\r
-\r
-  if (WDBG_ALIVE_EXPIRED == WdgM_GlobalSupervisionStatus)\r
-  {\r
-    expiredSupervisionCycles++;\r
-  }\r
-\r
-  if (expiredSupervisionCycles >= wdgMConfigPtr->WdgM_ExpiredSupervisionCycleTolerance)\r
-  {\r
-    WdgM_GlobalSupervisionStatus = WDBG_ALIVE_STOPPED;\r
-  }\r
-}\r
-\r
-boolean WdgM_IsAlive(void)\r
-{\r
-\r
-  if ( WDBG_ALIVE_STOPPED > WdgM_GlobalSupervisionStatus )\r
-  {\r
-    return (TRUE);\r
-  }\r
-  else\r
-  {\r
-    return (FALSE);\r
-  }\r
-}\r
-\r
-void WdgM_MainFunction_Trigger (void)\r
-{\r
-  if ( WdgM_IsAlive() )\r
-  {\r
-    KickWatchdog();\r
-  }\r
-}\r
-\r
-\r
diff --git a/arch/ppc/mpc55xx/drivers/WdgM_cfg.h b/arch/ppc/mpc55xx/drivers/WdgM_cfg.h
deleted file mode 100644 (file)
index 8e597c6..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/* -------------------------------- Arctic Core ------------------------------\r
- * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
- *\r
- * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
- *\r
- * This source code is free software; you can redistribute it and/or modify it\r
- * under the terms of the GNU General Public License version 2 as published by the\r
- * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
- *\r
- * This program is distributed in the hope that it will be useful, but\r
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
- * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
- * for more details.\r
- * -------------------------------- Arctic Core ------------------------------*/\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-#ifndef WDGM_CFG_H_\r
-#define WDGM_CFG_H_\r
-\r
-#include "Std_Types.h"\r
-#include "WdgM_Lcfg.h"\r
-\r
-typedef enum\r
-{\r
-  WDBG_ALIVE_OK,\r
-  WDBG_ALIVE_FAILED,\r
-  WDBG_ALIVE_EXPIRED,\r
-  WDBG_ALIVE_STOPPED,\r
-  WDBG_ALIVE_DEACTIVATED,\r
-}WdgM_SupervisedStatusType;\r
-\r
-typedef enum\r
-{\r
-  WDBG_SUPERVISION_DISABLED,\r
-  WDBG_SUPERVISION_ENABLED\r
-}WdgM_ActivationStatusType;\r
-\r
-typedef int16_t WdgM_SupervisionCounterType ;\r
-\r
-typedef struct\r
-{\r
-  WdgM_SupervisionCounterType AliveCounter;\r
-  WdgM_SupervisionCounterType SupervisionCycle;\r
-  WdgM_SupervisedStatusType SupervisionStatus;\r
-  WdgM_SupervisionCounterType NbrOfFailedRefCycles;\r
-  WdgM_ActivationStatusType ActivationStatus;\r
-}Wdgm_SupervisionType;\r
-\r
-typedef struct\r
-{\r
-  const WdgM_SupervisedEntityIdType WdgM_SupervisedEntityID;\r
-  const WdgM_ActivationStatusType WdgM_ActivationStatus;\r
-  const WdgM_SupervisionCounterType WdgM_ExpectedAliveIndications;\r
-  const WdgM_SupervisionCounterType WdgM_SupervisionReferenceCycle;\r
-  const WdgM_SupervisionCounterType WdgM_FailedSupervisionReferenceCycleTolerance;\r
-  const WdgM_SupervisionCounterType WdgM_MinMargin;\r
-  const WdgM_SupervisionCounterType WdgM_MaxMargin;\r
-}WdgM_SupervisedEntityType;\r
-\r
-typedef struct\r
-{\r
-  uint16 WdgM_SupervisionCycle;\r
-  uint16 WdgM_NumberOfSupervisedEntities;\r
-  uint16 WdgM_ExpiredSupervisionCycleTolerance;\r
-  const WdgM_SupervisedEntityType *WdgM_SupervisedEntityPtr;\r
-  Wdgm_SupervisionType *Wdgm_SupervisionPtr;\r
-}WdgM_ConfigType;\r
-\r
-extern const WdgM_ConfigType WdgMAliveSupervision;\r
-\r
-#endif /* WDGM_CFG_H_ */\r
index 0254f44a48d7e9e7b417b9a223e5526d0ea8de3b..ed4303a6a1f33799530d39d07f743e60f59c0d62 100644 (file)
@@ -19,6 +19,7 @@
 \r
 #define MPC5516                1\r
 \r
+#include "Compiler.h"\r
 #include "typedefs.h"\r
 \r
 #ifdef  __cplusplus\r
@@ -33,7 +34,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                     MODULE : CRP                                         */\r
 /****************************************************************************/\r
-    struct CRP_tag {\r
+CC_EXTENSION struct CRP_tag {\r
 \r
         union {\r
             vuint32_t R;\r
@@ -198,7 +199,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : DMAMUX                                 */\r
 /****************************************************************************/\r
-    struct DMAMUX_tag {\r
+CC_EXTENSION struct DMAMUX_tag {\r
         union {\r
             vuint8_t R;\r
             struct {\r
@@ -212,7 +213,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : DSPI                                   */\r
 /****************************************************************************/\r
-    struct DSPI_tag {\r
+CC_EXTENSION struct DSPI_tag {\r
         union {\r
             vuint32_t R;\r
             struct {\r
@@ -417,7 +418,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                     MODULE : External Bus Interface (EBI)                */\r
 /****************************************************************************/\r
-    struct CS_tag {\r
+CC_EXTENSION struct CS_tag {\r
         union {                 /* Base Register Bank */\r
             vuint32_t R;\r
             struct {\r
@@ -498,7 +499,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : eDMA                                   */\r
 /****************************************************************************/\r
-    struct EDMA_tag {\r
+CC_EXTENSION  struct EDMA_tag {\r
         union {\r
             vuint32_t R;\r
             struct {\r
@@ -737,7 +738,7 @@ extern "C" {
 \r
     };\r
 \r
-    struct EDMA_TCD_alt1_tag {  /*for alternate format TCDs (when EDMA.TCD[x].CITER.E_LINK==BITER.E_LINK=1 ) */\r
+    CC_EXTENSION struct EDMA_TCD_alt1_tag {  /*for alternate format TCDs (when EDMA.TCD[x].CITER.E_LINK==BITER.E_LINK=1 ) */\r
 \r
         struct tcd_alt1_t {\r
             vuint32_t SADDR;    /* source address */\r
@@ -783,7 +784,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : EMIOS                                  */\r
 /****************************************************************************/\r
-    struct EMIOS_tag {\r
+    CC_EXTENSION   struct EMIOS_tag {\r
         union {\r
             vuint32_t R;\r
             struct {\r
@@ -936,7 +937,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : EQADC                                  */\r
 /****************************************************************************/\r
-    struct EQADC_tag {\r
+CC_EXTENSION  struct EQADC_tag {\r
         union {\r
             vuint32_t R;\r
             struct {\r
@@ -1173,7 +1174,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : eSCI                                   */\r
 /****************************************************************************/\r
-    struct ESCI_tag {\r
+CC_EXTENSION     struct ESCI_tag {\r
         union {\r
             vuint32_t R;\r
             struct {\r
@@ -1298,7 +1299,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                     MODULE : FLASH                                       */\r
 /****************************************************************************/\r
-    struct FLASH_tag {\r
+CC_EXTENSION  struct FLASH_tag {\r
         union {                 /* Module Configuration Register */\r
             vuint32_t R;\r
             struct {\r
@@ -1453,7 +1454,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : FlexCAN                                */\r
 /****************************************************************************/\r
-    struct FLEXCAN_tag {\r
+CC_EXTENSION     struct FLEXCAN_tag {\r
         union {\r
             vuint32_t R;\r
             struct {\r
@@ -1787,7 +1788,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                     MODULE : FMPLL                                       */\r
 /****************************************************************************/\r
-    struct FMPLL_tag {\r
+CC_EXTENSION     struct FMPLL_tag {\r
         union {             /* JRichard */\r
             vuint32_t R;\r
             struct {\r
@@ -1862,7 +1863,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : i2c                                    */\r
 /****************************************************************************/\r
-    struct I2C_tag {\r
+CC_EXTENSION     struct I2C_tag {\r
         union {\r
             vuint8_t R;\r
             struct {\r
@@ -1925,7 +1926,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : INTC                                   */\r
 /****************************************************************************/\r
-    struct INTC_tag {\r
+CC_EXTENSION     struct INTC_tag {\r
         union {\r
             vuint32_t R;\r
             struct {\r
@@ -2014,7 +2015,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                     MODULE : MCM                                         */\r
 /****************************************************************************/\r
-    struct MCM_tag {\r
+CC_EXTENSION     struct MCM_tag {\r
 \r
         uint32_t mcm_reserved1[5];\r
 \r
@@ -2172,7 +2173,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : MPU                                    */\r
 /****************************************************************************/\r
-    struct MPU_tag {\r
+CC_EXTENSION     struct MPU_tag {\r
         union {\r
             vuint32_t R;\r
             struct {\r
@@ -2320,7 +2321,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : pit                                    */\r
 /****************************************************************************/\r
-    struct PIT_tag {\r
+CC_EXTENSION     struct PIT_tag {\r
         union {\r
             vuint32_t R;\r
             struct {\r
@@ -2521,7 +2522,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : sem4                                   */\r
 /****************************************************************************/\r
-    struct SEMA4_tag {\r
+CC_EXTENSION     struct SEMA4_tag {\r
         union {\r
             vuint8_t R;\r
             struct {\r
@@ -2659,7 +2660,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                     MODULE : SIU                                         */\r
 /****************************************************************************/\r
-    struct SIU_tag {\r
+CC_EXTENSION     struct SIU_tag {\r
         int32_t SIU_reserved0;\r
 \r
         union {                 /* MCU ID Register */\r
@@ -3218,7 +3219,7 @@ extern "C" {
 /*                          MODULE : FlexRay                                */\r
 /****************************************************************************/\r
 \r
-    typedef union uMVR {\r
+CC_EXTENSION     typedef union uMVR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t CHIVER:8; /* CHI Version Number */\r
@@ -3226,7 +3227,7 @@ extern "C" {
         } B;\r
     } MVR_t;\r
 \r
-    typedef union uMCR {\r
+CC_EXTENSION     typedef union uMCR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MEN:1;    /* module enable */\r
@@ -3241,7 +3242,7 @@ extern "C" {
               vuint16_t:1;\r
         } B;\r
     } MCR_t;\r
-    typedef union uSTBSCR {\r
+CC_EXTENSION     typedef union uSTBSCR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t WMD:1;    /* write mode */\r
@@ -3252,7 +3253,7 @@ extern "C" {
             vuint16_t STBPSEL:2;        /* strobe port select */\r
         } B;\r
     } STBSCR_t;\r
-    typedef union uSTBPCR {\r
+CC_EXTENSION     typedef union uSTBPCR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:12;\r
@@ -3263,7 +3264,7 @@ extern "C" {
         } B;\r
     } STBPCR_t;\r
 \r
-    typedef union uMBDSR {\r
+CC_EXTENSION     typedef union uMBDSR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:1;\r
@@ -3273,7 +3274,7 @@ extern "C" {
         } B;\r
     } MBDSR_t;\r
 \r
-    typedef union uMBSSUTR {\r
+CC_EXTENSION     typedef union uMBSSUTR {\r
         vuint16_t R;\r
         struct {\r
 \r
@@ -3284,7 +3285,7 @@ extern "C" {
         } B;\r
     } MBSSUTR_t;\r
 \r
-    typedef union uPOCR {\r
+CC_EXTENSION     typedef union uPOCR {\r
         vuint16_t R;\r
         vuint8_t byte[2];\r
         struct {\r
@@ -3298,7 +3299,7 @@ extern "C" {
         } B;\r
     } POCR_t;\r
 /* protocol commands */\r
-    typedef union uGIFER {\r
+CC_EXTENSION     typedef union uGIFER {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MIF:1;    /* module interrupt flag */\r
@@ -3319,7 +3320,8 @@ extern "C" {
             vuint16_t TBIE:1;   /* transmit buffer interrupt enable */\r
         } B;\r
     } GIFER_t;\r
-    typedef union uPIFR0 {\r
+\r
+CC_EXTENSION     typedef union uPIFR0 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t FATLIF:1; /* fatal protocol error interrupt flag */\r
@@ -3340,7 +3342,8 @@ extern "C" {
             vuint16_t CYSIF:1;  /* cycle start interrupt flag */\r
         } B;\r
     } PIFR0_t;\r
-    typedef union uPIFR1 {\r
+\r
+    CC_EXTENSION     typedef union uPIFR1 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t EMCIF:1;  /* error mode changed interrupt flag */\r
@@ -3357,7 +3360,7 @@ extern "C" {
               vuint16_t:4;\r
         } B;\r
     } PIFR1_t;\r
-    typedef union uPIER0 {\r
+CC_EXTENSION     typedef union uPIER0 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t FATLIE:1; /* fatal protocol error interrupt enable */\r
@@ -3378,7 +3381,7 @@ extern "C" {
             vuint16_t CYSIE:1;  /* cycle start interrupt enable */\r
         } B;\r
     } PIER0_t;\r
-    typedef union uPIER1 {\r
+CC_EXTENSION     typedef union uPIER1 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t EMCIE:1;  /* error mode changed interrupt enable */\r
@@ -3395,7 +3398,7 @@ extern "C" {
               vuint16_t:4;\r
         } B;\r
     } PIER1_t;\r
-    typedef union uCHIERFR {\r
+    CC_EXTENSION typedef union uCHIERFR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t FRLBEF:1; /* flame lost channel B error flag */\r
@@ -3416,7 +3419,7 @@ extern "C" {
             vuint16_t ILSAEF:1; /* illegal access error flag */\r
         } B;\r
     } CHIERFR_t;\r
-    typedef union uMBIVEC {\r
+    CC_EXTENSION typedef union uMBIVEC {\r
         vuint16_t R;\r
         struct {\r
 \r
@@ -3427,7 +3430,7 @@ extern "C" {
         } B;\r
     } MBIVEC_t;\r
 \r
-    typedef union uPSR0 {\r
+    CC_EXTENSION typedef union uPSR0 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t ERRMODE:2;        /* error mode */\r
@@ -3443,7 +3446,7 @@ extern "C" {
 /* protocol states */\r
 /* protocol sub-states */\r
 /* wakeup status */\r
-    typedef union uPSR1 {\r
+    CC_EXTENSION typedef union uPSR1 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t CSAA:1;   /* cold start attempt abort flag */\r
@@ -3456,7 +3459,7 @@ extern "C" {
             vuint16_t APTAC:5;  /* allow passive to active counter */\r
         } B;\r
     } PSR1_t;\r
-    typedef union uPSR2 {\r
+    CC_EXTENSION typedef union uPSR2 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t NBVB:1;   /* NIT boundary violation on channel B */\r
@@ -3474,7 +3477,7 @@ extern "C" {
             vuint16_t CLKCORRFAILCNT:4; /* clock correction failed counter */\r
         } B;\r
     } PSR2_t;\r
-    typedef union uPSR3 {\r
+    CC_EXTENSION typedef union uPSR3 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:2;\r
@@ -3493,7 +3496,7 @@ extern "C" {
             vuint16_t AVFA:1;   /* aggregated valid frame on channel A */\r
         } B;\r
     } PSR3_t;\r
-    typedef union uCIFRR {\r
+    CC_EXTENSION typedef union uCIFRR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:8;\r
@@ -3507,7 +3510,7 @@ extern "C" {
             vuint16_t TBIFR:1;  /* transmit buffer interrupt flag */\r
         } B;\r
     } CIFRR_t;\r
-    typedef union uSFCNTR {\r
+    CC_EXTENSION typedef union uSFCNTR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t SFEVB:4;  /* sync frames channel B, even cycle */\r
@@ -3517,7 +3520,7 @@ extern "C" {
         } B;\r
     } SFCNTR_t;\r
 \r
-    typedef union uSFTCCSR {\r
+    CC_EXTENSION typedef union uSFTCCSR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t ELKT:1;   /* even cycle tables lock and unlock trigger */\r
@@ -3533,7 +3536,7 @@ extern "C" {
             vuint16_t SIDEN:1;  /* sync frame ID table enable */\r
         } B;\r
     } SFTCCSR_t;\r
-    typedef union uSFIDRFR {\r
+    CC_EXTENSION typedef union uSFIDRFR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:6;\r
@@ -3541,7 +3544,7 @@ extern "C" {
         } B;\r
     } SFIDRFR_t;\r
 \r
-    typedef union uTICCR {\r
+    CC_EXTENSION typedef union uTICCR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:2;\r
@@ -3560,7 +3563,7 @@ extern "C" {
 \r
         } B;\r
     } TICCR_t;\r
-    typedef union uTI1CYSR {\r
+    CC_EXTENSION typedef union uTI1CYSR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:2;\r
@@ -3571,7 +3574,7 @@ extern "C" {
         } B;\r
     } TI1CYSR_t;\r
 \r
-    typedef union uSSSR {\r
+    CC_EXTENSION typedef union uSSSR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t WMD:1;    /* write mode */\r
@@ -3582,7 +3585,7 @@ extern "C" {
         } B;\r
     } SSSR_t;\r
 \r
-    typedef union uSSCCR {\r
+    CC_EXTENSION typedef union uSSCCR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t WMD:1;    /* write mode */\r
@@ -3598,7 +3601,7 @@ extern "C" {
             vuint16_t STATUSMASK:4;     /* slot status mask */\r
         } B;\r
     } SSCCR_t;\r
-    typedef union uSSR {\r
+    CC_EXTENSION typedef union uSSR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t VFB:1;    /* valid frame on channel B */\r
@@ -3619,7 +3622,7 @@ extern "C" {
             vuint16_t TCA:1;    /* tx conflict on channel A */\r
         } B;\r
     } SSR_t;\r
-    typedef union uMTSCFR {\r
+    CC_EXTENSION typedef union uMTSCFR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MTE:1;    /* media access test symbol transmission enable */\r
@@ -3630,7 +3633,7 @@ extern "C" {
         } B;\r
     } MTSCFR_t;\r
 \r
-    typedef union uRSBIR {\r
+    CC_EXTENSION typedef union uRSBIR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t WMD:1;    /* write mode */\r
@@ -3641,7 +3644,7 @@ extern "C" {
         } B;\r
     } RSBIR_t;\r
 \r
-    typedef union uRFDSR {\r
+    CC_EXTENSION typedef union uRFDSR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t FIFODEPTH:8;      /* fifo depth */\r
@@ -3650,7 +3653,7 @@ extern "C" {
         } B;\r
     } RFDSR_t;\r
 \r
-    typedef union uRFRFCFR {\r
+    CC_EXTENSION typedef union uRFRFCFR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t WMD:1;    /* write mode */\r
@@ -3661,7 +3664,7 @@ extern "C" {
         } B;\r
     } RFRFCFR_t;\r
 \r
-    typedef union uRFRFCTR {\r
+    CC_EXTENSION typedef union uRFRFCTR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:4;\r
@@ -3676,7 +3679,7 @@ extern "C" {
             vuint16_t F0EN:1;   /* filter enable */\r
         } B;\r
     } RFRFCTR_t;\r
-    typedef union uPCR0 {\r
+    CC_EXTENSION typedef union uPCR0 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t ACTION_POINT_OFFSET:6;\r
@@ -3684,7 +3687,7 @@ extern "C" {
         } B;\r
     } PCR0_t;\r
 \r
-    typedef union uPCR1 {\r
+    CC_EXTENSION typedef union uPCR1 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:2;\r
@@ -3692,7 +3695,7 @@ extern "C" {
         } B;\r
     } PCR1_t;\r
 \r
-    typedef union uPCR2 {\r
+    CC_EXTENSION typedef union uPCR2 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MINISLOT_AFTER_ACTION_POINT:6;\r
@@ -3700,7 +3703,7 @@ extern "C" {
         } B;\r
     } PCR2_t;\r
 \r
-    typedef union uPCR3 {\r
+    CC_EXTENSION typedef union uPCR3 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t WAKEUP_SYMBOL_RX_LOW:6;\r
@@ -3709,7 +3712,7 @@ extern "C" {
         } B;\r
     } PCR3_t;\r
 \r
-    typedef union uPCR4 {\r
+    CC_EXTENSION typedef union uPCR4 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t CAS_RX_LOW_MAX:7;\r
@@ -3717,7 +3720,7 @@ extern "C" {
         } B;\r
     } PCR4_t;\r
 \r
-    typedef union uPCR5 {\r
+    CC_EXTENSION typedef union uPCR5 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t TSS_TRANSMITTER:4;\r
@@ -3726,7 +3729,7 @@ extern "C" {
         } B;\r
     } PCR5_t;\r
 \r
-    typedef union uPCR6 {\r
+    CC_EXTENSION typedef union uPCR6 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:1;\r
@@ -3735,7 +3738,7 @@ extern "C" {
         } B;\r
     } PCR6_t;\r
 \r
-    typedef union uPCR7 {\r
+    CC_EXTENSION typedef union uPCR7 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t DECODING_CORRECTION_B:9;\r
@@ -3743,7 +3746,7 @@ extern "C" {
         } B;\r
     } PCR7_t;\r
 \r
-    typedef union uPCR8 {\r
+    CC_EXTENSION typedef union uPCR8 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MAX_WITHOUT_CLOCK_CORRECTION_FATAL:4;\r
@@ -3752,7 +3755,7 @@ extern "C" {
         } B;\r
     } PCR8_t;\r
 \r
-    typedef union uPCR9 {\r
+    CC_EXTENSION typedef union uPCR9 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MINISLOT_EXISTS:1;\r
@@ -3761,7 +3764,7 @@ extern "C" {
         } B;\r
     } PCR9_t;\r
 \r
-    typedef union uPCR10 {\r
+    CC_EXTENSION typedef union uPCR10 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t SINGLE_SLOT_ENABLED:1;\r
@@ -3770,7 +3773,7 @@ extern "C" {
         } B;\r
     } PCR10_t;\r
 \r
-    typedef union uPCR11 {\r
+    CC_EXTENSION typedef union uPCR11 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t KEY_SLOT_USED_FOR_STARTUP:1;\r
@@ -3779,7 +3782,7 @@ extern "C" {
         } B;\r
     } PCR11_t;\r
 \r
-    typedef union uPCR12 {\r
+    CC_EXTENSION typedef union uPCR12 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t ALLOW_PASSIVE_TO_ACTIVE:5;\r
@@ -3787,7 +3790,7 @@ extern "C" {
         } B;\r
     } PCR12_t;\r
 \r
-    typedef union uPCR13 {\r
+    CC_EXTENSION typedef union uPCR13 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t FIRST_MINISLOT_ACTION_POINT_OFFSET:6;\r
@@ -3795,7 +3798,7 @@ extern "C" {
         } B;\r
     } PCR13_t;\r
 \r
-    typedef union uPCR14 {\r
+    CC_EXTENSION typedef union uPCR14 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t RATE_CORRECTION_OUT:11;\r
@@ -3803,14 +3806,14 @@ extern "C" {
         } B;\r
     } PCR14_t;\r
 \r
-    typedef union uPCR15 {\r
+    CC_EXTENSION typedef union uPCR15 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t LISTEN_TIMEOUT_L:16;\r
         } B;\r
     } PCR15_t;\r
 \r
-    typedef union uPCR16 {\r
+    CC_EXTENSION typedef union uPCR16 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MACRO_INITIAL_OFFSET_B:7;\r
@@ -3818,14 +3821,14 @@ extern "C" {
         } B;\r
     } PCR16_t;\r
 \r
-    typedef union uPCR17 {\r
+    CC_EXTENSION typedef union uPCR17 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t NOISE_LISTEN_TIMEOUT_L:16;\r
         } B;\r
     } PCR17_t;\r
 \r
-    typedef union uPCR18 {\r
+    CC_EXTENSION typedef union uPCR18 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t WAKEUP_PATTERN:6;\r
@@ -3833,7 +3836,7 @@ extern "C" {
         } B;\r
     } PCR18_t;\r
 \r
-    typedef union uPCR19 {\r
+    CC_EXTENSION typedef union uPCR19 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t DECODING_CORRECTION_A:9;\r
@@ -3841,7 +3844,7 @@ extern "C" {
         } B;\r
     } PCR19_t;\r
 \r
-    typedef union uPCR20 {\r
+    CC_EXTENSION typedef union uPCR20 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MICRO_INITIAL_OFFSET_B:8;\r
@@ -3849,7 +3852,7 @@ extern "C" {
         } B;\r
     } PCR20_t;\r
 \r
-    typedef union uPCR21 {\r
+    CC_EXTENSION typedef union uPCR21 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t EXTERN_RATE_CORRECTION:3;\r
@@ -3857,7 +3860,7 @@ extern "C" {
         } B;\r
     } PCR21_t;\r
 \r
-    typedef union uPCR22 {\r
+    CC_EXTENSION typedef union uPCR22 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:1;\r
@@ -3866,14 +3869,14 @@ extern "C" {
         } B;\r
     } PCR22_t;\r
 \r
-    typedef union uPCR23 {\r
+    CC_EXTENSION typedef union uPCR23 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t micro_per_cycle_l:16;\r
         } B;\r
     } PCR23_t;\r
 \r
-    typedef union uPCR24 {\r
+    CC_EXTENSION typedef union uPCR24 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t CLUSTER_DRIFT_DAMPING:5;\r
@@ -3882,14 +3885,14 @@ extern "C" {
         } B;\r
     } PCR24_t;\r
 \r
-    typedef union uPCR25 {\r
+    CC_EXTENSION typedef union uPCR25 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MICRO_PER_CYCLE_MIN_L:16;\r
         } B;\r
     } PCR25_t;\r
 \r
-    typedef union uPCR26 {\r
+    CC_EXTENSION typedef union uPCR26 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t ALLOW_HALT_DUE_TO_CLOCK:1;\r
@@ -3898,14 +3901,14 @@ extern "C" {
         } B;\r
     } PCR26_t;\r
 \r
-    typedef union uPCR27 {\r
+    CC_EXTENSION typedef union uPCR27 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MICRO_PER_CYCLE_MAX_L:16;\r
         } B;\r
     } PCR27_t;\r
 \r
-    typedef union uPCR28 {\r
+    CC_EXTENSION typedef union uPCR28 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t DYNAMIC_SLOT_IDLE_PHASE:2;\r
@@ -3913,7 +3916,7 @@ extern "C" {
         } B;\r
     } PCR28_t;\r
 \r
-    typedef union uPCR29 {\r
+    CC_EXTENSION typedef union uPCR29 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t EXTERN_OFFSET_CORRECTION:3;\r
@@ -3921,7 +3924,7 @@ extern "C" {
         } B;\r
     } PCR29_t;\r
 \r
-    typedef union uPCR30 {\r
+    CC_EXTENSION typedef union uPCR30 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:12;\r
@@ -3929,7 +3932,7 @@ extern "C" {
         } B;\r
     } PCR30_t;\r
 \r
-    typedef struct uMSG_BUFF_CCS {\r
+    CC_EXTENSION typedef struct uMSG_BUFF_CCS {\r
         union {\r
             vuint16_t R;\r
             struct {\r
@@ -3976,97 +3979,97 @@ extern "C" {
             } B;\r
         } MBIDXR;\r
     } MSG_BUFF_CCS_t;\r
-    typedef union uSYSBADHR {\r
+    CC_EXTENSION typedef union uSYSBADHR {\r
         vuint16_t R;\r
     } SYSBADHR_t;\r
-    typedef union uSYSBADLR {\r
+    CC_EXTENSION typedef union uSYSBADLR {\r
         vuint16_t R;\r
     } SYSBADLR_t;\r
-    typedef union uPADR {\r
+    CC_EXTENSION typedef union uPADR {\r
         vuint16_t R;\r
     } PADR_t;\r
-    typedef union uPDAR {\r
+    CC_EXTENSION typedef union uPDAR {\r
         vuint16_t R;\r
     } PDAR_t;\r
-    typedef union uCASERCR {\r
+    CC_EXTENSION typedef union uCASERCR {\r
         vuint16_t R;\r
     } CASERCR_t;\r
-    typedef union uCBSERCR {\r
+    CC_EXTENSION typedef union uCBSERCR {\r
         vuint16_t R;\r
     } CBSERCR_t;\r
-    typedef union uCYCTR {\r
+    CC_EXTENSION typedef union uCYCTR {\r
         vuint16_t R;\r
     } CYCTR_t;\r
-    typedef union uMTCTR {\r
+    CC_EXTENSION typedef union uMTCTR {\r
         vuint16_t R;\r
     } MTCTR_t;\r
-    typedef union uSLTCTAR {\r
+    CC_EXTENSION typedef union uSLTCTAR {\r
         vuint16_t R;\r
     } SLTCTAR_t;\r
-    typedef union uSLTCTBR {\r
+    CC_EXTENSION typedef union uSLTCTBR {\r
         vuint16_t R;\r
     } SLTCTBR_t;\r
-    typedef union uRTCORVR {\r
+    CC_EXTENSION typedef union uRTCORVR {\r
         vuint16_t R;\r
     } RTCORVR_t;\r
-    typedef union uOFCORVR {\r
+    CC_EXTENSION typedef union uOFCORVR {\r
         vuint16_t R;\r
     } OFCORVR_t;\r
-    typedef union uSFTOR {\r
+    CC_EXTENSION typedef union uSFTOR {\r
         vuint16_t R;\r
     } SFTOR_t;\r
-    typedef union uSFIDAFVR {\r
+    CC_EXTENSION typedef union uSFIDAFVR {\r
         vuint16_t R;\r
     } SFIDAFVR_t;\r
-    typedef union uSFIDAFMR {\r
+    CC_EXTENSION typedef union uSFIDAFMR {\r
         vuint16_t R;\r
     } SFIDAFMR_t;\r
-    typedef union uNMVR {\r
+    CC_EXTENSION typedef union uNMVR {\r
         vuint16_t R;\r
     } NMVR_t;\r
-    typedef union uNMVLR {\r
+    CC_EXTENSION typedef union uNMVLR {\r
         vuint16_t R;\r
     } NMVLR_t;\r
-    typedef union uT1MTOR {\r
+    CC_EXTENSION typedef union uT1MTOR {\r
         vuint16_t R;\r
     } T1MTOR_t;\r
-    typedef union uTI2CR0 {\r
+    CC_EXTENSION typedef union uTI2CR0 {\r
         vuint16_t R;\r
     } TI2CR0_t;\r
-    typedef union uTI2CR1 {\r
+    CC_EXTENSION typedef union uTI2CR1 {\r
         vuint16_t R;\r
     } TI2CR1_t;\r
-    typedef union uSSCR {\r
+    CC_EXTENSION typedef union uSSCR {\r
         vuint16_t R;\r
     } SSCR_t;\r
-    typedef union uRFSR {\r
+    CC_EXTENSION typedef union uRFSR {\r
         vuint16_t R;\r
     } RFSR_t;\r
-    typedef union uRFSIR {\r
+    CC_EXTENSION typedef union uRFSIR {\r
         vuint16_t R;\r
     } RFSIR_t;\r
-    typedef union uRFARIR {\r
+    CC_EXTENSION typedef union uRFARIR {\r
         vuint16_t R;\r
     } RFARIR_t;\r
-    typedef union uRFBRIR {\r
+    CC_EXTENSION typedef union uRFBRIR {\r
         vuint16_t R;\r
     } RFBRIR_t;\r
-    typedef union uRFMIDAFVR {\r
+    CC_EXTENSION typedef union uRFMIDAFVR {\r
         vuint16_t R;\r
     } RFMIDAFVR_t;\r
-    typedef union uRFMIAFMR {\r
+    CC_EXTENSION typedef union uRFMIAFMR {\r
         vuint16_t R;\r
     } RFMIAFMR_t;\r
-    typedef union uRFFIDRFVR {\r
+    CC_EXTENSION typedef union uRFFIDRFVR {\r
         vuint16_t R;\r
     } RFFIDRFVR_t;\r
-    typedef union uRFFIDRFMR {\r
+    CC_EXTENSION typedef union uRFFIDRFMR {\r
         vuint16_t R;\r
     } RFFIDRFMR_t;\r
-    typedef union uLDTXSLAR {\r
+    CC_EXTENSION typedef union uLDTXSLAR {\r
         vuint16_t R;\r
     } LDTXSLAR_t;\r
-    typedef union uLDTXSLBR {\r
+    CC_EXTENSION typedef union uLDTXSLBR {\r
         vuint16_t R;\r
     } LDTXSLBR_t;\r
 \r
@@ -4171,7 +4174,7 @@ extern "C" {
         volatile MSG_BUFF_CCS_t MBCCS[128];     /* message buffer configuration, control & status registers 0-31 *//*100 */\r
     } FR_tag_t;\r
 \r
-    typedef union uF_HEADER     /* frame header */\r
+    CC_EXTENSION typedef union uF_HEADER     /* frame header */\r
     {\r
         struct {\r
             vuint16_t:5;\r
@@ -4189,7 +4192,7 @@ extern "C" {
         } B;\r
         vuint16_t WORDS[3];\r
     } F_HEADER_t;\r
-    typedef union uS_STSTUS     /* slot status */\r
+    CC_EXTENSION typedef union uS_STSTUS     /* slot status */\r
     {\r
         struct {\r
             vuint16_t VFB:1;    /* Valid Frame on channel B */\r
@@ -4248,47 +4251,47 @@ extern "C" {
 #define FLASH_END       0xFFFFF\r
 \r
 /* Define instances of modules */\r
-//#define PBRIDGE_A (*( struct PBRIDGE_A_tag *) 0xC3F00000)\r
-#define MPU       (*( struct MPU_tag *)       0xFFF10000)\r
-#define SEMA4     (*( struct SEMA4_tag *)     0xFFF14000)\r
-\r
-#define MCM       (*( struct MCM_tag *)       0xFFF40000)\r
-#define EDMA      (*( struct EDMA_tag *)      0xFFF44000)\r
-#define INTC      (*( struct INTC_tag *)      0xFFF48000)\r
-\r
-#define EQADC     (*( struct EQADC_tag *)     0xFFF80000)\r
-\r
-#define I2C       (*( struct I2C_tag *)       0xFFF88000)\r
-\r
-#define DSPI_A    (*( struct DSPI_tag *)      0xFFF90000)\r
-#define DSPI_B    (*( struct DSPI_tag *)      0xFFF94000)\r
-#define DSPI_C    (*( struct DSPI_tag *)      0xFFF98000)\r
-#define DSPI_D    (*( struct DSPI_tag *)      0xFFF9C000)\r
-\r
-#define ESCI_A    (*( struct ESCI_tag *)      0xFFFA0000)\r
-#define ESCI_B    (*( struct ESCI_tag *)      0xFFFA4000)\r
-#define ESCI_C    (*( struct ESCI_tag *)      0xFFFA8000)\r
-#define ESCI_D    (*( struct ESCI_tag *)      0xFFFAC000)\r
-#define ESCI_E    (*( struct ESCI_tag *)      0xFFFB0000)\r
-#define ESCI_F    (*( struct ESCI_tag *)      0xFFFB4000)\r
-#define ESCI_G    (*( struct ESCI_tag *)      0xFFFB8000)\r
-#define ESCI_H    (*( struct ESCI_tag *)      0xFFFBC000)\r
-\r
-#define CAN_A     (*( struct FLEXCAN_tag *)  0xFFFC0000)\r
-#define CAN_B     (*( struct FLEXCAN_tag *)  0xFFFC4000)\r
-#define CAN_C     (*( struct FLEXCAN_tag *)  0xFFFC8000)\r
-#define CAN_D     (*( struct FLEXCAN_tag *)  0xFFFCC000)\r
-#define CAN_E     (*( struct FLEXCAN_tag *)  0xFFFD0000)\r
-#define CAN_F     (*( struct FLEXCAN_tag *)  0xFFFD4000)\r
-#define FR        (*( struct FR_tag *)       0xFFFD8000)\r
-#define DMAMUX    (*( struct DMAMUX_tag *)   0xFFFDC000)\r
-#define PIT       (*( struct PIT_tag *)      0xFFFE0000)\r
-#define EMIOS     (*( struct EMIOS_tag *)    0xFFFE4000)\r
-#define SIU       (*( struct SIU_tag *)      0xFFFE8000)\r
-#define CRP       (*( struct CRP_tag *)      0xFFFEC000)\r
-#define FMPLL     (*( struct FMPLL_tag *)    0xFFFF0000)\r
-#define EBI       (*( struct EBI_tag *)      0xFFFF4000)\r
-#define FLASH     (*( struct FLASH_tag *)    0xFFFF8000)\r
+//#define PBRIDGE_A (*( volatile struct PBRIDGE_A_tag *) 0xC3F00000)\r
+#define MPU       (*( volatile struct MPU_tag *)       0xFFF10000)\r
+#define SEMA4     (*( volatile struct SEMA4_tag *)     0xFFF14000)\r
+\r
+#define MCM       (*( volatile struct MCM_tag *)       0xFFF40000)\r
+#define EDMA      (*( volatile struct EDMA_tag *)      0xFFF44000)\r
+#define INTC      (*( volatile struct INTC_tag *)      0xFFF48000)\r
+\r
+#define EQADC     (*( volatile struct EQADC_tag *)     0xFFF80000)\r
+\r
+#define I2C       (*( volatile struct I2C_tag *)       0xFFF88000)\r
+\r
+#define DSPI_A    (*( volatile struct DSPI_tag *)      0xFFF90000)\r
+#define DSPI_B    (*( volatile struct DSPI_tag *)      0xFFF94000)\r
+#define DSPI_C    (*( volatile struct DSPI_tag *)      0xFFF98000)\r
+#define DSPI_D    (*( volatile struct DSPI_tag *)      0xFFF9C000)\r
+\r
+#define ESCI_A    (*( volatile struct ESCI_tag *)      0xFFFA0000)\r
+#define ESCI_B    (*( volatile struct ESCI_tag *)      0xFFFA4000)\r
+#define ESCI_C    (*( volatile struct ESCI_tag *)      0xFFFA8000)\r
+#define ESCI_D    (*( volatile struct ESCI_tag *)      0xFFFAC000)\r
+#define ESCI_E    (*( volatile struct ESCI_tag *)      0xFFFB0000)\r
+#define ESCI_F    (*( volatile struct ESCI_tag *)      0xFFFB4000)\r
+#define ESCI_G    (*( volatile struct ESCI_tag *)      0xFFFB8000)\r
+#define ESCI_H    (*( volatile struct ESCI_tag *)      0xFFFBC000)\r
+\r
+#define CAN_A     (*( volatile struct FLEXCAN_tag *)  0xFFFC0000)\r
+#define CAN_B     (*( volatile struct FLEXCAN_tag *)  0xFFFC4000)\r
+#define CAN_C     (*( volatile struct FLEXCAN_tag *)  0xFFFC8000)\r
+#define CAN_D     (*( volatile struct FLEXCAN_tag *)  0xFFFCC000)\r
+#define CAN_E     (*( volatile struct FLEXCAN_tag *)  0xFFFD0000)\r
+#define CAN_F     (*( volatile struct FLEXCAN_tag *)  0xFFFD4000)\r
+#define FR        (*( volatile struct FR_tag *)       0xFFFD8000)\r
+#define DMAMUX    (*( volatile struct DMAMUX_tag *)   0xFFFDC000)\r
+#define PIT       (*( volatile struct PIT_tag *)      0xFFFE0000)\r
+#define EMIOS     (*( volatile struct EMIOS_tag *)    0xFFFE4000)\r
+#define SIU       (*( volatile struct SIU_tag *)      0xFFFE8000)\r
+#define CRP       (*( volatile struct CRP_tag *)      0xFFFEC000)\r
+#define FMPLL     (*( volatile struct FMPLL_tag *)    0xFFFF0000)\r
+#define EBI       (*( volatile struct EBI_tag *)      0xFFFF4000)\r
+#define FLASH     (*( volatile struct FLASH_tag *)    0xFFFF8000)\r
 \r
 #ifdef __MWERKS__\r
 #pragma pop\r
index bfa2dc3d5e41a38e44d804a2f27a159f069471be..dca1b6082fbab2a2c027d31700f86d857eb6479c 100644 (file)
@@ -71,6 +71,7 @@
 #ifndef _MPC5554_H_\r
 #define _MPC5554_H_\r
 \r
+#include "Compiler.h"\r
 #include "typedefs.h"\r
 \r
 #ifdef  __cplusplus\r
index 5d2e8bddfe31e71e2e77296d0db20e6d3b035045..27b883b95677623be0fafc1e45cfefa00293ec68 100644 (file)
@@ -40,6 +40,7 @@
 #ifndef _MPC5567_H_\r
 #define _MPC5567_H_\r
 \r
+#include "Compiler.h"\r
 #include "typedefs.h"\r
 \r
 #ifdef  __cplusplus\r
@@ -54,7 +55,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : PBRIDGE_A Peripheral Bridge            */\r
 /****************************************************************************/\r
-    struct PBRIDGE_A_tag {\r
+    CC_EXTENSION struct PBRIDGE_A_tag {\r
         union {\r
             vuint32_t R;\r
             struct {\r
@@ -172,7 +173,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : PBRIDGE_B Peripheral Bridge            */\r
 /****************************************************************************/\r
-    struct PBRIDGE_B_tag {\r
+    CC_EXTENSION struct PBRIDGE_B_tag {\r
         union {\r
             vuint32_t R;\r
             struct {\r
@@ -354,7 +355,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                     MODULE : FMPLL                                       */\r
 /****************************************************************************/\r
-    struct FMPLL_tag {\r
+    CC_EXTENSION struct FMPLL_tag {\r
         union {\r
             vuint32_t R;\r
             struct {\r
@@ -396,7 +397,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                     MODULE : External Bus Interface (EBI)                */\r
 /****************************************************************************/\r
-    struct CS_tag {\r
+    CC_EXTENSION  struct CS_tag {\r
         union {                 /* Base Register Bank */\r
             vuint32_t R;\r
             struct {\r
@@ -506,7 +507,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                     MODULE : FLASH                                       */\r
 /****************************************************************************/\r
-    struct FLASH_tag {\r
+    CC_EXTENSION struct FLASH_tag {\r
         union {                 /* Module Configuration Register */\r
             vuint32_t R;\r
             struct {\r
@@ -639,7 +640,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                     MODULE : SIU                                         */\r
 /****************************************************************************/\r
-    struct SIU_tag {\r
+    CC_EXTENSION struct SIU_tag {\r
         int32_t SIU_reserved0;\r
 \r
         union {                 /* MCU ID Register */\r
@@ -977,7 +978,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : EMIOS                                  */\r
 /****************************************************************************/\r
-    struct EMIOS_tag {\r
+    CC_EXTENSION struct EMIOS_tag {\r
         union {\r
             vuint32_t R;\r
             struct {\r
@@ -1123,7 +1124,7 @@ extern "C" {
 \r
 /***************************Configuration Registers**************************/\r
 \r
-    struct ETPU_tag {\r
+    CC_EXTENSION struct ETPU_tag {\r
         union {                 /* MODULE CONFIGURATION REGISTER */\r
             vuint32_t R;\r
             struct {\r
@@ -1617,7 +1618,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : XBAR CrossBar                          */\r
 /****************************************************************************/\r
-    struct XBAR_tag {\r
+    CC_EXTENSION struct XBAR_tag {\r
         union {\r
             vuint32_t R;\r
             struct {\r
@@ -1824,7 +1825,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                     MODULE : ECSM                                        */\r
 /****************************************************************************/\r
-    struct ECSM_tag {\r
+    CC_EXTENSION struct ECSM_tag {\r
 \r
         uint32_t ecsm_reserved1[5];\r
 \r
@@ -1995,7 +1996,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : eDMA                                   */\r
 /****************************************************************************/\r
-    struct EDMA_tag {\r
+    CC_EXTENSION struct EDMA_tag {\r
         union {\r
             vuint32_t R;\r
             struct {\r
@@ -2237,7 +2238,7 @@ extern "C" {
 /*       DMA2 Transfer Control Descriptor                                   */\r
 /****************************************************************************/\r
 \r
-        struct tcd_t {          /*for "standard" format TCDs (when EDMA.TCD[x].CITER.E_LINK==BITER.E_LINK=0 && EDMA.EMLM=0 ) */\r
+        CC_EXTENSION struct tcd_t {          /*for "standard" format TCDs (when EDMA.TCD[x].CITER.E_LINK==BITER.E_LINK=0 && EDMA.EMLM=0 ) */\r
             vuint32_t SADDR;    /* source address */\r
 \r
             vuint16_t SMOD:5;   /* source address modulo */\r
@@ -2277,7 +2278,7 @@ extern "C" {
 \r
     };\r
 \r
-    struct EDMA_TCD_alt1_tag {  /*for alternate format TCDs (when EDMA.TCD[x].CITER.E_LINK==BITER.E_LINK=1 ) */\r
+    CC_EXTENSION struct EDMA_TCD_alt1_tag {  /*for alternate format TCDs (when EDMA.TCD[x].CITER.E_LINK==BITER.E_LINK=1 ) */\r
 \r
         struct tcd_alt1_t {\r
             vuint32_t SADDR;    /* source address */\r
@@ -2322,7 +2323,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : INTC                                   */\r
 /****************************************************************************/\r
-    struct INTC_tag {\r
+    CC_EXTENSION struct INTC_tag {\r
         union {\r
             vuint32_t R;\r
             struct {\r
@@ -2388,7 +2389,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : EQADC                                  */\r
 /****************************************************************************/\r
-    struct EQADC_tag {\r
+    CC_EXTENSION struct EQADC_tag {\r
         union {\r
             vuint32_t R;\r
             struct {\r
@@ -2828,7 +2829,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : eSCI                                   */\r
 /****************************************************************************/\r
-    struct ESCI_tag {\r
+    CC_EXTENSION struct ESCI_tag {\r
         union {\r
             vuint32_t R;\r
             struct {\r
@@ -2953,7 +2954,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : FlexCAN                                */\r
 /****************************************************************************/\r
-    struct FLEXCAN2_tag {\r
+    CC_EXTENSION struct FLEXCAN2_tag {\r
         union {\r
             vuint32_t R;\r
             struct {\r
@@ -3272,7 +3273,7 @@ extern "C" {
 /****************************************************************************/\r
 /*                          MODULE : FEC                                    */\r
 /****************************************************************************/\r
-    struct FEC_tag {\r
+    CC_EXTENSION struct FEC_tag {\r
 \r
         uint32_t fec_reserved_start[0x1];\r
 \r
@@ -3752,7 +3753,7 @@ extern "C" {
 /*                          MODULE : FlexRay                                */\r
 /****************************************************************************/\r
 \r
-    typedef union uMVR {\r
+    CC_EXTENSION typedef union uMVR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t CHIVER:8; /* CHI Version Number */\r
@@ -3760,7 +3761,7 @@ extern "C" {
         } B;\r
     } MVR_t;\r
 \r
-    typedef union uMCR {\r
+    CC_EXTENSION typedef union uMCR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MEN:1;    /* module enable */\r
@@ -3775,7 +3776,7 @@ extern "C" {
               vuint16_t:1;\r
         } B;\r
     } MCR_t;\r
-    typedef union uSTBSCR {\r
+    CC_EXTENSION typedef union uSTBSCR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t WMD:1;    /* write mode */\r
@@ -3786,7 +3787,7 @@ extern "C" {
             vuint16_t STBPSEL:2;        /* strobe port select */\r
         } B;\r
     } STBSCR_t;\r
-    typedef union uSTBPCR {\r
+    CC_EXTENSION typedef union uSTBPCR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:12;\r
@@ -3797,7 +3798,7 @@ extern "C" {
         } B;\r
     } STBPCR_t;\r
 \r
-    typedef union uMBDSR {\r
+    CC_EXTENSION typedef union uMBDSR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:1;\r
@@ -3806,7 +3807,7 @@ extern "C" {
             vuint16_t MBSEG1DS:7;       /* message buffer segment 1 data size */\r
         } B;\r
     } MBDSR_t;\r
-    typedef union uMBSSUTR {\r
+    CC_EXTENSION typedef union uMBSSUTR {\r
         vuint16_t R;\r
         struct {\r
 \r
@@ -3817,7 +3818,7 @@ extern "C" {
         } B;\r
     } MBSSUTR_t;\r
 \r
-    typedef union uPOCR {\r
+    CC_EXTENSION typedef union uPOCR {\r
         vuint16_t R;\r
         vuint8_t byte[2];\r
         struct {\r
@@ -3831,7 +3832,7 @@ extern "C" {
         } B;\r
     } POCR_t;\r
 /* protocol commands */\r
-    typedef union uGIFER {\r
+    CC_EXTENSION typedef union uGIFER {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MIF:1;    /* module interrupt flag */\r
@@ -3852,7 +3853,7 @@ extern "C" {
             vuint16_t TBIE:1;   /* transmit buffer interrupt enable */\r
         } B;\r
     } GIFER_t;\r
-    typedef union uPIFR0 {\r
+    CC_EXTENSION typedef union uPIFR0 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t FATLIF:1; /* fatal protocol error interrupt flag */\r
@@ -3873,7 +3874,7 @@ extern "C" {
             vuint16_t CYSIF:1;  /* cycle start interrupt flag */\r
         } B;\r
     } PIFR0_t;\r
-    typedef union uPIFR1 {\r
+    CC_EXTENSION typedef union uPIFR1 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t EMCIF:1;  /* error mode changed interrupt flag */\r
@@ -3890,7 +3891,7 @@ extern "C" {
               vuint16_t:4;\r
         } B;\r
     } PIFR1_t;\r
-    typedef union uPIER0 {\r
+    CC_EXTENSION typedef union uPIER0 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t FATLIE:1; /* fatal protocol error interrupt enable */\r
@@ -3911,7 +3912,7 @@ extern "C" {
             vuint16_t CYSIE:1;  /* cycle start interrupt enable */\r
         } B;\r
     } PIER0_t;\r
-    typedef union uPIER1 {\r
+    CC_EXTENSION typedef union uPIER1 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t EMCIE:1;  /* error mode changed interrupt enable */\r
@@ -3928,7 +3929,7 @@ extern "C" {
               vuint16_t:4;\r
         } B;\r
     } PIER1_t;\r
-    typedef union uCHIERFR {\r
+    CC_EXTENSION typedef union uCHIERFR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t FRLBEF:1; /* flame lost channel B error flag */\r
@@ -3949,7 +3950,7 @@ extern "C" {
             vuint16_t ILSAEF:1; /* illegal access error flag */\r
         } B;\r
     } CHIERFR_t;\r
-    typedef union uMBIVEC {\r
+    CC_EXTENSION typedef union uMBIVEC {\r
         vuint16_t R;\r
         struct {\r
 \r
@@ -3960,7 +3961,7 @@ extern "C" {
         } B;\r
     } MBIVEC_t;\r
 \r
-    typedef union uPSR0 {\r
+    CC_EXTENSION typedef union uPSR0 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t ERRMODE:2;        /* error mode */\r
@@ -3976,7 +3977,7 @@ extern "C" {
 /* protocol states */\r
 /* protocol sub-states */\r
 /* wakeup status */\r
-    typedef union uPSR1 {\r
+    CC_EXTENSION typedef union uPSR1 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t CSAA:1;   /* cold start attempt abort flag */\r
@@ -3989,7 +3990,7 @@ extern "C" {
             vuint16_t APTAC:5;  /* allow passive to active counter */\r
         } B;\r
     } PSR1_t;\r
-    typedef union uPSR2 {\r
+    CC_EXTENSION typedef union uPSR2 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t NBVB:1;   /* NIT boundary violation on channel B */\r
@@ -4007,7 +4008,7 @@ extern "C" {
             vuint16_t CLKCORRFAILCNT:4; /* clock correction failed counter */\r
         } B;\r
     } PSR2_t;\r
-    typedef union uPSR3 {\r
+    CC_EXTENSION typedef union uPSR3 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:2;\r
@@ -4026,7 +4027,7 @@ extern "C" {
             vuint16_t AVFA:1;   /* aggregated valid frame on channel A */\r
         } B;\r
     } PSR3_t;\r
-    typedef union uCIFRR {\r
+    CC_EXTENSION typedef union uCIFRR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:8;\r
@@ -4040,7 +4041,7 @@ extern "C" {
             vuint16_t TBIFR:1;  /* transmit buffer interrupt flag */\r
         } B;\r
     } CIFRR_t;\r
-    typedef union uSFCNTR {\r
+    CC_EXTENSION typedef union uSFCNTR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t SFEVB:4;  /* sync frames channel B, even cycle */\r
@@ -4050,7 +4051,7 @@ extern "C" {
         } B;\r
     } SFCNTR_t;\r
 \r
-    typedef union uSFTCCSR {\r
+    CC_EXTENSION typedef union uSFTCCSR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t ELKT:1;   /* even cycle tables lock and unlock trigger */\r
@@ -4066,7 +4067,7 @@ extern "C" {
             vuint16_t SIDEN:1;  /* sync frame ID table enable */\r
         } B;\r
     } SFTCCSR_t;\r
-    typedef union uSFIDRFR {\r
+    CC_EXTENSION typedef union uSFIDRFR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:6;\r
@@ -4074,7 +4075,7 @@ extern "C" {
         } B;\r
     } SFIDRFR_t;\r
 \r
-    typedef union uTICCR {\r
+    CC_EXTENSION typedef union uTICCR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:2;\r
@@ -4093,7 +4094,7 @@ extern "C" {
 \r
         } B;\r
     } TICCR_t;\r
-    typedef union uTI1CYSR {\r
+    CC_EXTENSION typedef union uTI1CYSR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:2;\r
@@ -4104,7 +4105,7 @@ extern "C" {
         } B;\r
     } TI1CYSR_t;\r
 \r
-    typedef union uSSSR {\r
+    CC_EXTENSION typedef union uSSSR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t WMD:1;    /* write mode */\r
@@ -4115,7 +4116,7 @@ extern "C" {
         } B;\r
     } SSSR_t;\r
 \r
-    typedef union uSSCCR {\r
+    CC_EXTENSION typedef union uSSCCR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t WMD:1;    /* write mode */\r
@@ -4131,7 +4132,7 @@ extern "C" {
             vuint16_t STATUSMASK:4;     /* slot status mask */\r
         } B;\r
     } SSCCR_t;\r
-    typedef union uSSR {\r
+    CC_EXTENSION typedef union uSSR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t VFB:1;    /* valid frame on channel B */\r
@@ -4152,7 +4153,7 @@ extern "C" {
             vuint16_t TCA:1;    /* tx conflict on channel A */\r
         } B;\r
     } SSR_t;\r
-    typedef union uMTSCFR {\r
+    CC_EXTENSION typedef union uMTSCFR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MTE:1;    /* media access test symbol transmission enable */\r
@@ -4162,7 +4163,7 @@ extern "C" {
             vuint16_t CYCCNTVAL:6;      /* cycle counter value */\r
         } B;\r
     } MTSCFR_t;\r
-    typedef union uRSBIR {\r
+    CC_EXTENSION typedef union uRSBIR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t WMD:1;    /* write mode */\r
@@ -4172,7 +4173,7 @@ extern "C" {
             vuint16_t RSBIDX:8; /* receive shadow buffer index */\r
         } B;\r
     } RSBIR_t;\r
-    typedef union uRFDSR {\r
+    CC_EXTENSION typedef union uRFDSR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t FIFODEPTH:8;      /* fifo depth */\r
@@ -4181,7 +4182,7 @@ extern "C" {
         } B;\r
     } RFDSR_t;\r
 \r
-    typedef union uRFRFCFR {\r
+    CC_EXTENSION typedef union uRFRFCFR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t WMD:1;    /* write mode */\r
@@ -4192,7 +4193,7 @@ extern "C" {
         } B;\r
     } RFRFCFR_t;\r
 \r
-    typedef union uRFRFCTR {\r
+    CC_EXTENSION typedef union uRFRFCTR {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:4;\r
@@ -4207,7 +4208,7 @@ extern "C" {
             vuint16_t F0EN:1;   /* filter enable */\r
         } B;\r
     } RFRFCTR_t;\r
-    typedef union uPCR0 {\r
+    CC_EXTENSION typedef union uPCR0 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t ACTION_POINT_OFFSET:6;\r
@@ -4215,7 +4216,7 @@ extern "C" {
         } B;\r
     } PCR0_t;\r
 \r
-    typedef union uPCR1 {\r
+    CC_EXTENSION typedef union uPCR1 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:2;\r
@@ -4223,7 +4224,7 @@ extern "C" {
         } B;\r
     } PCR1_t;\r
 \r
-    typedef union uPCR2 {\r
+    CC_EXTENSION typedef union uPCR2 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MINISLOT_AFTER_ACTION_POINT:6;\r
@@ -4231,7 +4232,7 @@ extern "C" {
         } B;\r
     } PCR2_t;\r
 \r
-    typedef union uPCR3 {\r
+    CC_EXTENSION typedef union uPCR3 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t WAKEUP_SYMBOL_RX_LOW:6;\r
@@ -4240,7 +4241,7 @@ extern "C" {
         } B;\r
     } PCR3_t;\r
 \r
-    typedef union uPCR4 {\r
+    CC_EXTENSION typedef union uPCR4 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t CAS_RX_LOW_MAX:7;\r
@@ -4248,7 +4249,7 @@ extern "C" {
         } B;\r
     } PCR4_t;\r
 \r
-    typedef union uPCR5 {\r
+    CC_EXTENSION typedef union uPCR5 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t TSS_TRANSMITTER:4;\r
@@ -4257,7 +4258,7 @@ extern "C" {
         } B;\r
     } PCR5_t;\r
 \r
-    typedef union uPCR6 {\r
+    CC_EXTENSION typedef union uPCR6 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:1;\r
@@ -4266,7 +4267,7 @@ extern "C" {
         } B;\r
     } PCR6_t;\r
 \r
-    typedef union uPCR7 {\r
+    CC_EXTENSION typedef union uPCR7 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t DECODING_CORRECTION_B:9;\r
@@ -4274,7 +4275,7 @@ extern "C" {
         } B;\r
     } PCR7_t;\r
 \r
-    typedef union uPCR8 {\r
+    CC_EXTENSION typedef union uPCR8 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MAX_WITHOUT_CLOCK_CORRECTION_FATAL:4;\r
@@ -4283,7 +4284,7 @@ extern "C" {
         } B;\r
     } PCR8_t;\r
 \r
-    typedef union uPCR9 {\r
+    CC_EXTENSION typedef union uPCR9 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MINISLOT_EXISTS:1;\r
@@ -4292,7 +4293,7 @@ extern "C" {
         } B;\r
     } PCR9_t;\r
 \r
-    typedef union uPCR10 {\r
+    CC_EXTENSION typedef union uPCR10 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t SINGLE_SLOT_ENABLED:1;\r
@@ -4301,7 +4302,7 @@ extern "C" {
         } B;\r
     } PCR10_t;\r
 \r
-    typedef union uPCR11 {\r
+    CC_EXTENSION typedef union uPCR11 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t KEY_SLOT_USED_FOR_STARTUP:1;\r
@@ -4310,7 +4311,7 @@ extern "C" {
         } B;\r
     } PCR11_t;\r
 \r
-    typedef union uPCR12 {\r
+    CC_EXTENSION typedef union uPCR12 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t ALLOW_PASSIVE_TO_ACTIVE:5;\r
@@ -4318,7 +4319,7 @@ extern "C" {
         } B;\r
     } PCR12_t;\r
 \r
-    typedef union uPCR13 {\r
+    CC_EXTENSION typedef union uPCR13 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t FIRST_MINISLOT_ACTION_POINT_OFFSET:6;\r
@@ -4326,7 +4327,7 @@ extern "C" {
         } B;\r
     } PCR13_t;\r
 \r
-    typedef union uPCR14 {\r
+    CC_EXTENSION typedef union uPCR14 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t RATE_CORRECTION_OUT:11;\r
@@ -4334,14 +4335,14 @@ extern "C" {
         } B;\r
     } PCR14_t;\r
 \r
-    typedef union uPCR15 {\r
+    CC_EXTENSION typedef union uPCR15 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t LISTEN_TIMEOUT_L:16;\r
         } B;\r
     } PCR15_t;\r
 \r
-    typedef union uPCR16 {\r
+    CC_EXTENSION typedef union uPCR16 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MACRO_INITIAL_OFFSET_B:7;\r
@@ -4349,14 +4350,14 @@ extern "C" {
         } B;\r
     } PCR16_t;\r
 \r
-    typedef union uPCR17 {\r
+    CC_EXTENSION typedef union uPCR17 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t NOISE_LISTEN_TIMEOUT_L:16;\r
         } B;\r
     } PCR17_t;\r
 \r
-    typedef union uPCR18 {\r
+    CC_EXTENSION typedef union uPCR18 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t WAKEUP_PATTERN:6;\r
@@ -4364,7 +4365,7 @@ extern "C" {
         } B;\r
     } PCR18_t;\r
 \r
-    typedef union uPCR19 {\r
+    CC_EXTENSION typedef union uPCR19 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t DECODING_CORRECTION_A:9;\r
@@ -4372,7 +4373,7 @@ extern "C" {
         } B;\r
     } PCR19_t;\r
 \r
-    typedef union uPCR20 {\r
+    CC_EXTENSION typedef union uPCR20 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MICRO_INITIAL_OFFSET_B:8;\r
@@ -4380,7 +4381,7 @@ extern "C" {
         } B;\r
     } PCR20_t;\r
 \r
-    typedef union uPCR21 {\r
+    CC_EXTENSION typedef union uPCR21 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t EXTERN_RATE_CORRECTION:3;\r
@@ -4388,7 +4389,7 @@ extern "C" {
         } B;\r
     } PCR21_t;\r
 \r
-    typedef union uPCR22 {\r
+    CC_EXTENSION typedef union uPCR22 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:1;\r
@@ -4397,14 +4398,14 @@ extern "C" {
         } B;\r
     } PCR22_t;\r
 \r
-    typedef union uPCR23 {\r
+    CC_EXTENSION typedef union uPCR23 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t micro_per_cycle_l:16;\r
         } B;\r
     } PCR23_t;\r
 \r
-    typedef union uPCR24 {\r
+    CC_EXTENSION typedef union uPCR24 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t CLUSTER_DRIFT_DAMPING:5;\r
@@ -4413,14 +4414,14 @@ extern "C" {
         } B;\r
     } PCR24_t;\r
 \r
-    typedef union uPCR25 {\r
+    CC_EXTENSION typedef union uPCR25 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MICRO_PER_CYCLE_MIN_L:16;\r
         } B;\r
     } PCR25_t;\r
 \r
-    typedef union uPCR26 {\r
+    CC_EXTENSION typedef union uPCR26 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t ALLOW_HALT_DUE_TO_CLOCK:1;\r
@@ -4429,14 +4430,14 @@ extern "C" {
         } B;\r
     } PCR26_t;\r
 \r
-    typedef union uPCR27 {\r
+    CC_EXTENSION typedef union uPCR27 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t MICRO_PER_CYCLE_MAX_L:16;\r
         } B;\r
     } PCR27_t;\r
 \r
-    typedef union uPCR28 {\r
+    CC_EXTENSION typedef union uPCR28 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t DYNAMIC_SLOT_IDLE_PHASE:2;\r
@@ -4444,7 +4445,7 @@ extern "C" {
         } B;\r
     } PCR28_t;\r
 \r
-    typedef union uPCR29 {\r
+    CC_EXTENSION typedef union uPCR29 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t EXTERN_OFFSET_CORRECTION:3;\r
@@ -4452,7 +4453,7 @@ extern "C" {
         } B;\r
     } PCR29_t;\r
 \r
-    typedef union uPCR30 {\r
+    CC_EXTENSION typedef union uPCR30 {\r
         vuint16_t R;\r
         struct {\r
             vuint16_t:12;\r
@@ -4460,7 +4461,7 @@ extern "C" {
         } B;\r
     } PCR30_t;\r
 \r
-    typedef struct uMSG_BUFF_CCS {\r
+    CC_EXTENSION typedef struct uMSG_BUFF_CCS {\r
         union {\r
             vuint16_t R;\r
             struct {\r
@@ -4698,7 +4699,7 @@ extern "C" {
         volatile MSG_BUFF_CCS_t MBCCS[128];     /* message buffer configuration, control & status registers 0-31 *//*100 */\r
     } FR_tag_t;\r
 \r
-    typedef union uF_HEADER     /* frame header */\r
+    CC_EXTENSION typedef union uF_HEADER     /* frame header */\r
     {\r
         struct {\r
             vuint16_t:5;\r
@@ -4716,7 +4717,7 @@ extern "C" {
         } B;\r
         vuint16_t WORDS[3];\r
     } F_HEADER_t;\r
-    typedef union uS_STSTUS     /* slot status */\r
+    CC_EXTENSION typedef union uS_STSTUS     /* slot status */\r
     {\r
         struct {\r
             vuint16_t VFB:1;    /* Valid Frame on channel B */\r
index 7216421efcf8a6c2de90901e58e04d41db7319dc..0cb0cdf899cf1878dcac6c091db039e546308683 100644 (file)
 \r
 #include "Os.h"\r
 #include "internal.h"\r
-#include "irq.h"\r
+#include "isr.h"\r
 #include "arc.h"\r
 \r
 /**\r
  * Init of free running timer.\r
  */\r
 void Os_SysTickInit( void ) {\r
-       TaskType tid;\r
+//     TaskType tid;\r
+\r
+//     Irq_Attach(INTC_SSCIR0_CLR7);\r
+//     Irq_Attach2( INTC_SSCIR0_CLR7 );\r
+\r
+#if 0\r
+       IRQ_DECL_ISR2("MyIsr", 7 , CPU_CORE0, 6 , OsTick, 0 , NULL );\r
+       IRQ_ATTACH(7);\r
+\r
+// else\r
        tid = Os_Arc_CreateIsr(OsTick,6/*prio*/,"OsTick");\r
        Irq_AttachIsr2(tid,NULL,7);\r
+#endif\r
 }\r
 \r
 /**\r
index da91adf747ac7e645a3b2374e80af0cfd6502615..d5816a2a5e8ac6158eb263b9c02289b4210b9577 100644 (file)
  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
  * for more details.\r
  * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+\r
+/* ----------------------------[includes]------------------------------------*/\r
+\r
 #include "internal.h"\r
 #include "asm_ppc.h"\r
 #include "mpc55xx.h"\r
-#include "asm_book_e.h"\r
+#include "arch_stack.h"\r
+#include "arch_offset.h"\r
 \r
 #define USE_LDEBUG_PRINTF\r
 #include "debug.h"\r
 \r
+/* ----------------------------[includes]------------------------------------*/\r
+/* ----------------------------[private define]------------------------------*/\r
+/* ----------------------------[private macro]-------------------------------*/\r
+/* ----------------------------[private typedef]-----------------------------*/\r
+/* ----------------------------[private function prototypes]-----------------*/\r
+/* ----------------------------[private variables]---------------------------*/\r
+/* ----------------------------[private functions]---------------------------*/\r
+/* ----------------------------[public functions]----------------------------*/\r
+\r
+\r
+\r
+/**\r
+ * NOT complete yet.....\r
+ *\r
+ * @param err                  The error code.\r
+ * @param errFramePtr   Pointer to extra information about the error, if any.\r
+ * @param excFramePtr   Pointer to the exception frame, that cause the error.\r
+ */\r
+void Os_ArchPanic( uint32_t err, void *errFramePtr , Os_ExceptionFrameType *excFramePtr) {\r
+       switch(err) {\r
+       case OS_ERR_BAD_CONTEXT:\r
+               while(1);\r
+               break;\r
+       case OS_ERR_SPURIOUS_INTERRUPT:\r
+               fputs("Spurious interrupt\n",stdout);\r
+               printf(" vector : %02lx\n", excFramePtr->vector);\r
+               printf(" srr0   : %08lx\n", excFramePtr->srr0);\r
+               printf(" srr1   : %08lx\n", excFramePtr->srr1);\r
+               while(1);\r
+               break;\r
+       default:\r
+               while(1);\r
+               break;\r
+       }\r
+}\r
+\r
 /**\r
  * Function make sure that we switch to supervisor mode(rfi) before\r
  * we call a task for the first time.\r
@@ -43,7 +84,8 @@ void Os_ArchFirstCall( void )
 #else\r
 // TODO: This really depends on if scheduling policy\r
        Irq_Enable();\r
-       os_sys.curr_pcb->entry();\r
+       Os_Sys.currTaskPtr->constPtr->entry();\r
+       //os_sys.curr_pcb->entry();\r
 #endif\r
 }\r
 \r
@@ -60,54 +102,35 @@ void *Os_ArchGetStackPtr( void ) {
 }\r
 \r
 unsigned int Os_ArchGetScSize( void ) {\r
-       return SC_SIZE;\r
-}\r
-\r
-extern void os_arch_setup_context_asm( void *context,unsigned int msr);\r
-\r
-// TODO: I have no clue why I wrote this????\r
-void os_arch_stack_to_small(OsPcbType *pcb ,uint32_t size_min) {\r
-       OsPcbType *t;\r
-       uint32_t min;\r
-\r
-       while(1) {\r
-               t = pcb;\r
-               min = size_min;\r
-       }\r
+       return FUNC_FRM_SIZE;\r
 }\r
 \r
-/*\r
- * Stack grows from high -> low addresses\r
- *\r
 \r
+/**\r
+ * Setup a context for a task.\r
  *\r
- *\r
-\r
-\r
- * ----------------  bottom of the stack( high address )\r
- *  small context\r
- * ----------------\r
- *\r
- * ----------------  top of the stack( low address )\r
- *\r
+ * @param pcb Pointer to the pcb to setup\r
  */\r
-\r
-void Os_ArchSetupContext( OsPcbType *pcb ) {\r
+void Os_ArchSetupContext( OsTaskVarType *pcbPtr ) {\r
+       Os_FuncFrameType *cPtr = (Os_FuncFrameType *)pcbPtr->stack.curr;\r
        uint32_t msr;\r
-\r
        msr = MSR_EE;\r
 \r
 #if defined(CFG_SPE)\r
        msr |= MSR_SPE;\r
 #endif\r
 \r
-#if (  OS_SC3 == STD_ON) || (  OS_SC4== STD_ON)\r
+#if (OS_USE_APPLICATIONS == STD_ON)\r
+#if 0\r
        if( !pcb->application->trusted ) {\r
                // Non-trusted = User mode..\r
                msr |= MSR_PR | MSR_DS | MSR_IS;\r
        }\r
 #endif\r
-       pcb->regs[0] = msr;\r
+#endif\r
+       pcbPtr->regs[0] = msr;\r
+\r
+       cPtr->pattern = FUNC_PATTERN;\r
 }\r
 \r
 /**\r
@@ -115,41 +138,17 @@ void Os_ArchSetupContext( OsPcbType *pcb ) {
  * @param pcbPtr\r
  */\r
 \r
-void Os_ArchSetTaskEntry(OsPcbType *pcbPtr ) {\r
-       uint32_t *context = (uint32_t *)pcbPtr->stack.curr;\r
+void Os_ArchSetTaskEntry(OsTaskVarType *pcbPtr ) {\r
+       Os_FuncFrameType *cPtr = (Os_FuncFrameType *)pcbPtr->stack.curr;\r
 \r
-       context[C_CONTEXT_OFF/4] = SC_PATTERN;\r
-\r
-       /* Set LR to start function */\r
-       if( pcbPtr->proc_type == PROC_EXTENDED ) {\r
-               context[C_LR_OFF/4] = (uint32_t)Os_TaskStartExtended;\r
-       } else if( pcbPtr->proc_type == PROC_BASIC ) {\r
-               context[C_LR_OFF/4] = (uint32_t)Os_TaskStartBasic;\r
+       if( pcbPtr->constPtr->proc_type == PROC_EXTENDED ) {\r
+               cPtr->lr = (uint32_t)Os_TaskStartExtended;\r
+       } else if( pcbPtr->constPtr->proc_type == PROC_BASIC ) {\r
+               cPtr->lr = (uint32_t)Os_TaskStartBasic;\r
        }\r
-}\r
 \r
-\r
-#define C_CONTEXT_OFF  12\r
-#define C_LR_OFF               16\r
-#define C_CR_OFF               20\r
-\r
-void os_arch_print_context( char *str, OsPcbType *pcb ) {\r
-       uint32_t *stack;\r
-\r
-       LDEBUG_PRINTF("%s CONTEXT: %d\n",str, pcb->pid);\r
-       LDEBUG_PRINTF("  stack: curr=%p top=%p bottom=%p\n",\r
-                                       pcb->stack.curr,\r
-                                       pcb->stack.top,\r
-                                       pcb->stack.top+ pcb->stack.size);\r
-       stack = pcb->stack.curr;\r
-       LDEBUG_PRINTF("  val  : context=%08x LR=%08x CR=%08x\n",\r
-                                       (unsigned)stack[C_CONTEXT_OFF/4],\r
-                                       (unsigned)stack[C_LR_OFF/4],\r
-                                       (unsigned)stack[C_CR_OFF/4]\r
-                                       );\r
 }\r
 \r
-\r
 void Os_ArchInit( void ) {\r
 #if defined(CFG_SPE)\r
        uint32_t msr = get_msr();\r
@@ -158,58 +157,5 @@ void Os_ArchInit( void ) {
 #endif\r
 }\r
 \r
-#define EXC_VECTOR_CRITICAL_INPUT_OFF  0\r
-#define EXC_VECTOR_MACHINE_CHECK_OFF   1\r
-#define EXC_VECTOR_PROGRAM_OFF                 6\r
-#define EXC_VECTOR_DECREMENTER_OFF             10\r
-#define EXC_VECTOR_DATA_TLB_OFF                        13\r
-#define EXC_VECTOR_INSTRUCTION_TLB_OFF 14\r
-\r
-\r
-typedef void (*exc_func_t)(uint32_t *);\r
-\r
-/* How do I construct the PTE table ??\r
- *\r
- * 1. Calculate the section sizes for each application\r
- *    ( objdump on the object file)\r
- * 2. Generate a Table for each application\r
- *\r
- * OS207\r
- * Trusted OS-applications CAN write to\r
- *\r
- * What do I do with the global data ???\r
- *\r
- *\r
- */\r
-\r
-\r
-/* Move these somewhere else if we need the speed */\r
-void os_arch_data_tlb( uint32_t *regs ) {\r
-       uint32_t dear = regs[EXC_DEAR_OFF];\r
-       (void)dear;\r
-}\r
-\r
-void os_arch_instruction_tlb( uint32_t *regs ) {\r
-       uint32_t srr0 = regs[EXC_SRR0_OFF];\r
-       (void)srr0;\r
-       /* What information can I get here??\r
-        * - The pcb to MMU mapping ???\r
-        */\r
-\r
-       /* TODO: How do I construct the PTE(Page Table Entry) ??*/\r
-\r
-}\r
-\r
-void os_arch_exc_program( uint32_t *regs ) {\r
-       uint32_t esr = regs[EXC_ESR_OFF];\r
-\r
-       if( esr & ESR_PTR ) {\r
-               // Trap\r
-               if( !(regs[EXC_SRR1_OFF] & MSR_PR) ) {\r
-                       // User -> Supervisor\r
-                       regs[EXC_SRR1_OFF] |= MSR_PR;\r
-               }\r
-       }\r
-}\r
 \r
 \r
index f3058d2fb1b0c5b48cb4c323aef37655a039a0a1..603ef8535d967475c754a5e86083653d85513562 100644 (file)
@@ -1,74 +1,99 @@
-\r
-/*\r
- * IVOR4\r
- * 1. Save stack frames: EXC, VGPR, NVGPR and C\r
- * 2. Call Irq_Entry(void *curr_stack)\r
- * 2.1 Check for exception\r
- * 2.2 If softint, clear it.\r
- * 2.3 If PROC_ISR1, then just call the function\r
- * 2.4 If PROC_ISR2 -> it's a PCB, let the OS handle it.\r
+/* \r
+ *\r
+ *  The Irq_IsrTypeTable does not exist any more.\r
+ *  The Irq_VectorTable is now a pure function table (not mixed pcb and functions )\r
+ *  The PPC interrupt handling is a bit faster.\r
+ * \r
+ *\r
+ *   New files for arch offsets? \r
+ *   Bypassed Irq_Entry()...\r
+ *  TODO:\r
+ *    Move pre/post hooks into swap code?\r
+ *\r
+ *\r
+ * IMPLEMENTATION NOTES\r
+ *  OPT: For ISR1 (interrupts always off) the there is no need to save r13-r31 since\r
+ *  it will be saved by the C-function. \r
  */\r
-\r
-#define _ASSEMBLER_\r
-#include "asm_ppc.h"\r
-#include "asm_offset.h"\r
-#include "asm_book_e.h"\r
-.extern os_intc_pcb_tbl\r
-.extern os_intc_types_tbl\r
-.extern os_sys\r
-\r
-\r
+       \r
 /*\r
  * Small assembler school\r
- * Compare imm(32-bit)\r
- * > cmpwi rA,100\r
- * Extract bits and right adjust\r
- * > extrwi rA,rS,n,b  ( n-number of bits, b- startbit )\r
+ *  Compare imm(32-bit)\r
+ *   $ cmpwi rA,100\r
+ *  Extract bits and right adjust\r
+ *   $ extrwi rA,rS,n,b  ( n-number of bits, b- startbit )\r
+ *  Use of @ha,@h,@l. Use @ha for arithmetic instructions to compensate for sign.\r
+ *  To cause less confusion use load and logical instructions instead of arithmetic ones.\r
+ *   $ lis r3,0x8000@h    \r
+ *   $ ori r3,r3,0x08000@l\r
+ *  is the same as \r
+ *   $ addis r3,0x8000@ha    \r
+ *   $ addi r3,r3,0x08000@l\r
  *\r
  * Note!\r
- * The offset's (d or D)for SPE instructins are rediculously low.\r
+ * The offset's (d or D)for SPE instructions are ridiculously low.\r
  * Normally you have 16-bits offset, but when using spe load and store\r
  * you can use only 8-bit.\r
 */\r
 \r
-#define        LOCK()                  wrteei  0\r
-#define        UNLOCK()                wrteei  1\r
 \r
+/* ----------------------------[includes]------------------------------------*/\r
+#define _ASSEMBLER_\r
+#include "asm_ppc.h"\r
+#include "arch_offset.h"\r
+#include "asm_offset.h"\r
+#include "arch_stack.h"\r
 \r
-.extern os_proc_start_extended\r
+// #include "asm_book_e.h"\r
+.extern os_intc_pcb_tbl\r
+.extern os_intc_types_tbl\r
+.extern Os_Sys\r
+.extern Os_ArchPanic\r
 \r
-//-------------------------------------------------------------------\r
+#if defined(CFG_VLE)\r
+#define lis            e_lis\r
+#define li             se_li\r
+#define lwz        e_lwz\r
+#define stwu   e_stwu\r
+#define stw            e_stw\r
+#define b              e_b\r
+#define addi   e_addi          /* true ?*/\r
+#define subi   e_subi          /* true ?*/\r
+#endif         \r
 \r
-    .global os_exception_IVOR8\r
-    .balign 16\r
-os_exception_IVOR8:\r
-       stwu    sp,-(EXC_SIZE+VGPR_SIZE)(sp)\r
-       stw     r3,EXC_R3_OFF(r1)\r
-       stw     r4,EXC_R4_OFF(r1)\r
-       SAVE_EXC_FRAME(3,1,0,SPR_SRR0,SPR_SRR1)\r
-       SAVE_VGPR(1,EXC_SIZE);\r
-       li              r3,328\r
-       stw     r3,EXC_VECTOR_OFF(r1)\r
+/* ----------------------------[private define]------------------------------*/\r
 \r
-       rfi\r
+//#define OLD_CALL             \r
 \r
-dummy_int:\r
-               b dummy_int\r
+#define INTC_IACKR_PRC0                0xfff48010 \r
+#define INTC_EOIR_PRC0         0xfff48018\r
+#define INTC_IACKR                     0xfff48010\r
+#define INTC_EOIR                      0xfff48018\r
+#define INTC_SSCIR0                    0xfff48020\r
 \r
-/*--------------------------------------------------------------------\r
- * void os_swap_context(pcb_t *old, pcb_t *new )\r
- *\r
- * Saves a small context on current stack, pops a new one from new context\r
- *\r
- * r3 - pcb for old process\r
- * r4 - pcb for new process\r
- *\r
- *--------------------------------------------------------------------*/\r
+/* ----------------------------[private macro]-------------------------------*/\r
+\r
+#define        LOCK()                  wrteei  0\r
+#define        UNLOCK()                wrteei  1\r
+\r
+#define EXC_TABLE_CODE(_exc_nr)        \\r
+       stwu    sp,-EXC_FRM_SIZE(sp);   \\r
+       stw             r3,EXC_FRM_R3(sp);              \\r
+       li          r3,_exc_nr;                         \\r
+       b               handleException                 \r
 \r
-// TODO: this assumes that both are in user mode?.. can this happen under trusted functions?\r
-//       When I get here we're ALWAYS in kernel mode\r
+#if ISR_FRM_PATTERN!=FUNC_FRM_PATTERN\r
+#error Context pattern must be in the same place\r
+#endif\r
+\r
+/* ----------------------------[private typedef]-----------------------------*/\r
+/* ----------------------------[private function prototypes]-----------------*/\r
+/* ----------------------------[private variables]---------------------------*/\r
+/* ----------------------------[private functions]---------------------------*/\r
+/* ----------------------------[public functions]----------------------------*/\r
+\r
+.extern Os_Isr\r
 \r
-.global Os_ArchSwapContextToW\r
 .global Os_ArchSwapContextTo\r
 .global Os_ArchSwapContext\r
 .global Os_ArchSetSpAndCall\r
@@ -79,111 +104,485 @@ Os_ArchSetSpAndCall:
                mtlr r4\r
                blr\r
 \r
-Os_ArchSwapContextToW:\r
-               mr              r1,r5\r
-               b               Os_ArchSwapContextTo\r
-\r
+/**\r
+ * void Os_ArchSwapContext(pcb_t *old, pcb_t *new )\r
+ *\r
+ * Saves a function context on current stack, pops a new one from new context\r
+ *\r
+ * r3 - pcb for old task\r
+ * r4 - pcb for new task\r
+ *\r
+ */\r
 Os_ArchSwapContext:\r
-               // allocate space for context+nvgpr\r
-               // (no need for proper stack-frame here)\r
-               stwu    r1,-(C_SIZE+NVGPR_SIZE)(r1)\r
-               // save lr and cr */\r
-               mflr    r0\r
-               stw             r0,C_LR_OFF(sp)\r
-               mfcr    r0\r
-               stw             r0,C_CR_OFF(sp)\r
-               // Save small-context pattern\r
-               li              r0,SC_PATTERN\r
-               stw             r0,C_CONTEXT_OFF(sp)\r
-               // Save registers preserved by function call\r
-               SAVE_NVGPR(sp,(C_SIZE-14*GPR_SIZE))\r
-// Save stack ptr...\r
-               stw             sp,PCB_STACK_CURR_P(r3)\r
-\r
-// Stack frame here\r
-// --------- bottom( high address )\r
-//  SC_xxx\r
-//  C_xxx\r
-// --------- <- stack.curr\r
-//\r
-// --------- top( low address )\r
-\r
-\r
-// TODO: If we change application we must change mmu setup\r
+       stwu    sp,-FUNC_FRM_SIZE(sp)\r
+       mflr    r0\r
+       stw             r0,FUNC_FRM_LR(sp)\r
+       mfcr    r0\r
+       stw             r0,FUNC_FRM_CR(sp)\r
+       \r
+       /* Save context indicator */\r
+       li              r0,FUNC_PATTERN\r
+       stw             r0,FUNC_FRM_PATTERN(sp)\r
+\r
+#if defined(CFG_SPE)\r
+       stw             r14, FUNC_FRM_R14(sp)\r
+       stw             r15, FUNC_FRM_R15(sp)\r
+       stw             r16, FUNC_FRM_R16(sp)\r
+       stw             r17, FUNC_FRM_R17(sp)\r
+       stw             r18, FUNC_FRM_R18(sp)\r
+       stw             r19, FUNC_FRM_R19(sp)\r
+       stw             r20, FUNC_FRM_R20(sp)\r
+       stw             r21, FUNC_FRM_R21(sp)\r
+       stw             r22, FUNC_FRM_R22(sp)\r
+       stw             r23, FUNC_FRM_R23(sp)\r
+       stw             r24, FUNC_FRM_R24(sp)\r
+       stw             r25, FUNC_FRM_R25(sp)\r
+       stw             r26, FUNC_FRM_R26(sp)\r
+       stw             r27, FUNC_FRM_R27(sp)\r
+       stw             r28, FUNC_FRM_R28(sp)\r
+       stw             r29, FUNC_FRM_R29(sp)\r
+       stw             r30, FUNC_FRM_R30(sp)\r
+       stw             r31, FUNC_FRM_R31(sp)\r
+\r
+#else\r
+       /* Save registers preserved by function call */\r
+       stw             r14, FUNC_FRM_R14(sp)\r
+       stw             r15, FUNC_FRM_R15(sp)\r
+       stw             r16, FUNC_FRM_R16(sp)\r
+       stw             r17, FUNC_FRM_R17(sp)\r
+       stw             r18, FUNC_FRM_R18(sp)\r
+       stw             r19, FUNC_FRM_R19(sp)\r
+       stw             r20, FUNC_FRM_R20(sp)\r
+       stw             r21, FUNC_FRM_R21(sp)\r
+       stw             r22, FUNC_FRM_R22(sp)\r
+       stw             r23, FUNC_FRM_R23(sp)\r
+       stw             r24, FUNC_FRM_R24(sp)\r
+       stw             r25, FUNC_FRM_R25(sp)\r
+       stw             r26, FUNC_FRM_R26(sp)\r
+       stw             r27, FUNC_FRM_R27(sp)\r
+       stw             r28, FUNC_FRM_R28(sp)\r
+       stw             r29, FUNC_FRM_R29(sp)\r
+       stw             r30, FUNC_FRM_R30(sp)\r
+       stw             r31, FUNC_FRM_R31(sp)\r
+#endif\r
+\r
+       /* Save stack ptr... */\r
+       stw             sp,PCB_STACK_CURR_P(r3)\r
+\r
+       /* TODO: Call Os_PretaskHook()? */ \r
+       \r
+       /*      Flow down  */\r
+       \r
+/**\r
+ * void Os_ArchSwapContextTo( NULL, pcb_t *new )\r
+ * r3 - always NULL\r
+ * r4 - The pcb to switch to.\r
+ */    \r
 Os_ArchSwapContextTo:\r
-// Get stack for new task\r
-               lwz             sp,PCB_STACK_CURR_P(r4)\r
-\r
-// Set new current process\r
-               LOAD_ADDR_32(3,os_sys)\r
-               stw             r4,SYS_CURR_PCB_P(r3)\r
-\r
-// Restore C context\r
-        lwz     r0,C_CR_OFF(sp)\r
-        mtcr    r0\r
-        lwz     r0,C_LR_OFF (sp)\r
-        mtlr    r0\r
-\r
-// Get the context type\r
-               lwz             r0,C_CONTEXT_OFF(sp)\r
-               cmpli   0,r0,SC_PATTERN\r
-               beq+    os_sc_restore\r
-               cmpli   0,r0,LC_PATTERN\r
-               beq+    os_lc_restore\r
-               b               os_bad_bad\r
-\r
-\r
-// SC_xxx\r
-// C_xxxx <- We point here\r
-\r
-os_sc_restore:\r
-               RESTORE_NVGPR(sp,(C_SIZE-14*GPR_SIZE))\r
-               addi    sp,sp,(C_SIZE+NVGPR_SIZE)\r
-               // TODO: The blr will not do the trick if swapping to a user land task.\r
-               blr\r
-\r
-os_lc_restore:\r
-       addi    r1,r1,C_SIZE\r
-       RESTORE_NVGPR(1,0)\r
-       addi    r1,r1,-C_SIZE\r
-       RESTORE_VGPR(1,C_SIZE)\r
-\r
-       RESTORE_WORK_AND_MORE\r
+       /* Get stack for new task */\r
+       lwz             sp,PCB_STACK_CURR_P(r4)\r
+\r
+       /* Set new current task */\r
+       LOAD_ADDR_32(3,Os_Sys)\r
+       stw             r4,SYS_CURR_PCB_P(r3)\r
+\r
+       /* Restore C context */\r
+       lwz     r0,FUNC_FRM_CR(sp)\r
+    mtcr    r0\r
+    lwz     r0,FUNC_FRM_LR (sp)\r
+    mtlr    r0\r
+\r
+       /* Get the context type */\r
+       lwz             r0, FUNC_FRM_PATTERN(sp)\r
+       cmpli   0, r0, FUNC_PATTERN\r
+       beq+    restoreFuncContext\r
+       cmpli   0, r0,ISR_PATTERN\r
+       beq+    restoreIsrContext\r
+       li              r3, OS_ERR_BAD_CONTEXT\r
+       b               Os_ArchPanic\r
+\r
+restoreFuncContext:\r
+#if defined(CFG_SPE)\r
+       evldd   r14, FUNC_FRM_R14(sp)\r
+       evldd   r15, FUNC_FRM_R15(sp)\r
+       evldd   r16, FUNC_FRM_R16(sp)\r
+       evldd   r17, FUNC_FRM_R17(sp)\r
+       evldd   r18, FUNC_FRM_R18(sp)\r
+       evldd   r19, FUNC_FRM_R19(sp)\r
+       evldd   r20, FUNC_FRM_R20(sp)\r
+       evldd   r21, FUNC_FRM_R21(sp)\r
+       evldd   r22, FUNC_FRM_R22(sp)\r
+       evldd   r23, FUNC_FRM_R23(sp)\r
+       evldd   r24, FUNC_FRM_R24(sp)\r
+       evldd   r25, FUNC_FRM_R25(sp)\r
+       evldd   r26, FUNC_FRM_R26(sp)\r
+       evldd   r27, FUNC_FRM_R27(sp)\r
+       evldd   r28, FUNC_FRM_R28(sp)\r
+       evldd   r29, FUNC_FRM_R29(sp)\r
+       evldd   r30, FUNC_FRM_R30(sp)\r
+       evldd   r31, FUNC_FRM_R31(sp)\r
+       addi    sp,sp,(FUNC_FRM_SIZE)\r
+#else \r
+       lwz             r14, FUNC_FRM_R14(sp)\r
+       lwz             r15, FUNC_FRM_R15(sp)\r
+       lwz             r16, FUNC_FRM_R16(sp)\r
+       lwz             r17, FUNC_FRM_R17(sp)\r
+       lwz             r18, FUNC_FRM_R18(sp)\r
+       lwz             r19, FUNC_FRM_R19(sp)\r
+       lwz             r20, FUNC_FRM_R20(sp)\r
+       lwz             r21, FUNC_FRM_R21(sp)\r
+       lwz             r22, FUNC_FRM_R22(sp)\r
+       lwz             r23, FUNC_FRM_R23(sp)\r
+       lwz             r24, FUNC_FRM_R24(sp)\r
+       lwz             r25, FUNC_FRM_R25(sp)\r
+       lwz             r26, FUNC_FRM_R26(sp)\r
+       lwz             r27, FUNC_FRM_R27(sp)\r
+       lwz             r28, FUNC_FRM_R28(sp)\r
+       lwz             r29, FUNC_FRM_R29(sp)\r
+       lwz             r30, FUNC_FRM_R30(sp)\r
+       lwz             r31, FUNC_FRM_R31(sp)\r
+       addi    sp,sp,(FUNC_FRM_SIZE)\r
+#endif \r
+       /* TODO: Call Os_PosttaskHook()? */\r
+       \r
+       blr\r
+\r
+\r
+/**\r
+ * External input exception handlers \r
+ */ \r
+               .global exception_IVOR4\r
+               .global restoreIsrContext\r
+               .balign 16\r
+exception_IVOR4:\r
+\r
+       /* Save the exception frame */\r
+       stwu    sp,-EXC_FRM_SIZE(sp)\r
+\r
+       stw     r3,EXC_FRM_R3(sp)\r
+\r
+       mfsrr0  r3\r
+       stw     r3, EXC_FRM_SRR0(sp)\r
+       mfsrr1  r3\r
+       stw     r3, EXC_FRM_SRR1(sp)\r
+\r
+       mfcr    r3\r
+       stw     r3, EXC_FRM_CR(sp)      \r
+       mfxer   r3 \r
+       stw     r3, EXC_FRM_XER(sp)\r
+       mfctr   r3\r
+       stw     r3, EXC_FRM_CTR(sp)\r
+       mflr    r3\r
+       stw     r3, EXC_FRM_LR(sp)      \r
+       \r
+       li              r3,4\r
+       stw     r3, EXC_FRM_VECTOR(sp)\r
+#if defined(CFG_SPE)   \r
+\r
+       /* Enable SPE (exceptions turns it off) */\r
+       mfmsr           r3\r
+    oris               r3,r3,0x0200\r
+       mtmsr           r3\r
+       isync\r
+\r
+       /* Create the frame */\r
+       addi    sp,sp,-ISR_FRM_SIZE\r
+       evstdd          r3, ISR_FRM_R3(sp)              /* Save work reg */     \r
+       \r
+       /* SPEFSCR      */\r
+       mfspr           r3,SPR_SPEFSCR\r
+       clrlwi          r3,r3,24                                /* Mask off non-status bits */\r
+       stw                     r3,ISR_FRM_SPE_FSCR(sp)\r
+\r
+       /* Save SPE acc  */\r
+       evsubfw         r3,r3,r3                                /* zero r3 */\r
+       evaddumiaaw r3,r3                                       /* Add r3 = r3 + acc -> r3 = acc */\r
+       evstdd          r3,ISR_FRM_SPE_ACC(r1)\r
+       \r
+       evstdd          r0, ISR_FRM_R0(sp)\r
+       evstdd          r4, ISR_FRM_R4(sp)\r
+       evstdd          r5, ISR_FRM_R5(sp)\r
+       evstdd          r6, ISR_FRM_R6(sp)\r
+       evstdd          r7, ISR_FRM_R7(sp)\r
+       evstdd          r8, ISR_FRM_R8(sp)\r
+       evstdd          r9, ISR_FRM_R9(sp)\r
+       evstdd          r10, ISR_FRM_R10(sp)\r
+       evstdd          r11, ISR_FRM_R11(sp)\r
+       evstdd          r12, ISR_FRM_R12(sp)\r
+       evstdd          r14, ISR_FRM_R14(sp)\r
+       evstdd          r15, ISR_FRM_R15(sp)\r
+       evstdd          r16, ISR_FRM_R16(sp)\r
+       evstdd          r17, ISR_FRM_R17(sp)\r
+       evstdd          r18, ISR_FRM_R18(sp)\r
+       evstdd          r19, ISR_FRM_R19(sp)\r
+       evstdd          r20, ISR_FRM_R20(sp)\r
+       evstdd          r21, ISR_FRM_R21(sp)\r
+       evstdd          r22, ISR_FRM_R22(sp)\r
+       evstdd          r23, ISR_FRM_R23(sp)\r
+       evstdd          r24, ISR_FRM_R24(sp)\r
+       evstdd          r25, ISR_FRM_R25(sp)\r
+       evstdd          r26, ISR_FRM_R26(sp)\r
+       evstdd          r27, ISR_FRM_R27(sp)\r
+       evstdd          r28, ISR_FRM_R28(sp)\r
+       evstdd          r29, ISR_FRM_R29(sp)\r
+       evstdd          r30, ISR_FRM_R30(sp)\r
+       addi            sp,sp,8\r
+       evstdd          r31, (ISR_FRM_R31-8)(sp)\r
+       addi            sp,sp,-8\r
+#else\r
+       /* Save the ISR frame */\r
+       addi    sp,sp,-ISR_FRM_SIZE\r
+       stw             r0, ISR_FRM_R0(sp)\r
+       stw             r4, ISR_FRM_R4(sp)\r
+       stw             r5, ISR_FRM_R5(sp)\r
+       stw             r6, ISR_FRM_R6(sp)\r
+       stw             r7, ISR_FRM_R7(sp)\r
+       stw             r8, ISR_FRM_R8(sp)\r
+       stw             r9, ISR_FRM_R9(sp)\r
+       stw             r10, ISR_FRM_R10(sp)\r
+       stw             r11, ISR_FRM_R11(sp)\r
+       stw             r12, ISR_FRM_R12(sp)\r
+       stw             r14, ISR_FRM_R14(sp)\r
+       stw             r15, ISR_FRM_R15(sp)\r
+       stw             r16, ISR_FRM_R16(sp)\r
+       stw             r17, ISR_FRM_R17(sp)\r
+       stw             r18, ISR_FRM_R18(sp)\r
+       stw             r19, ISR_FRM_R19(sp)\r
+       stw             r20, ISR_FRM_R20(sp)\r
+       stw             r21, ISR_FRM_R21(sp)\r
+       stw             r22, ISR_FRM_R22(sp)\r
+       stw             r23, ISR_FRM_R23(sp)\r
+       stw             r24, ISR_FRM_R24(sp)\r
+       stw             r25, ISR_FRM_R25(sp)\r
+       stw             r26, ISR_FRM_R26(sp)\r
+       stw             r27, ISR_FRM_R27(sp)\r
+       stw             r28, ISR_FRM_R28(sp)\r
+       stw             r29, ISR_FRM_R29(sp)\r
+       stw             r30, ISR_FRM_R30(sp)\r
+       stw             r31, ISR_FRM_R31(sp)\r
+#endif\r
+       \r
+       li              r3,ISR_PATTERN\r
+       stw             r3,ISR_FRM_PATTERN(sp)\r
+       /* Save the stack so it later can be saved in the pcb */        \r
+       mr              r4,sp                   \r
+       \r
+       /* Switch to interrupt stack if at depth 0 */\r
+       /* Load the value Os_Sys.int_nest_cnt */\r
+       LOAD_IND_32(r3,Os_Sys+SYS_INT_NEST_CNT)\r
+       cmpli   0,r3,0\r
+       bne-    on_int_stack\r
+\r
+       /* Load the interrupt stack */\r
+       LOAD_IND_32(r1,Os_Sys+SYS_INT_STACK)\r
+\r
+on_int_stack:\r
+\r
+#if defined(CFG_MPC5516)\r
+       lis r6, INTC_IACKR_PRC0@ha\r
+       lwz r6, INTC_IACKR_PRC0@l(r6)\r
+#elif defined(CFG_MPC5554) || defined(CFG_MPC5567)\r
+       lis r6, INTC_IACKR@ha \r
+       lwz r6, INTC_IACKR@l(r6)\r
+#endif\r
+       /* Check for 0 entry */\r
+       mr              r5,r6\r
+       cmpli   0,r5,0\r
+       bne+    vectorOk\r
+       /* The entry was 0, call panic */\r
+       li              r3,OS_ERR_SPURIOUS_INTERRUPT\r
+       li              r4, 0\r
+       mr              r5,r1\r
+       b               Os_ArchPanic\r
+       \r
+vectorOk:\r
+       extrwi  r5,r5,9,21\r
+       /* Check for soft INT */\r
+       cmpli   0,r5,7\r
+       bgt             noSoftInt\r
+       /* Clear soft interrupt */\r
+       li              r0,1    \r
+       lis             r3, INTC_SSCIR0@h\r
+       ori             r3, r3, INTC_SSCIR0@l\r
+       stbx    r0,r5,r3                        \r
+       \r
+noSoftInt:     \r
+\r
+       lis   r3, Os_Isr@h\r
+    ori   r3, r3,Os_Isr@l\r
+    mtlr  r3\r
+       mr    r3,r4             /* "old" stack as arg1 */\r
+#if defined(OLD_CALL)  \r
+    lwz   r4, 0x0(r6)  /* Read the address from the for function/pcb entry */\r
+#else\r
+       mr       r4,r5\r
+#endif    \r
+    blrl                               /* Call the entry */\r
+\r
+       /* Notes!\r
+        * The OS interrupt is ACK'd in Os_Isr(). For ISR1 it needs to call Irq_EOI()\r
+        */\r
+        \r
+       /* Irq_Entry have returned the stack we shall use */\r
+       mr              sp,r3\r
+\r
+       /* Restore */\r
+restoreIsrContext:\r
+#if defined(CFG_SPE) \r
+\r
+       // Restore SPE control/status reg.\r
+       lwz             r3,ISR_FRM_SPE_FSCR(sp)\r
+       mtspr   SPR_CSRR0,r3\r
+\r
+       /* Restore SPE acc */\r
+       evldd r3,ISR_FRM_SPE_ACC(r1)\r
+       evmra r3,r3\r
+       \r
+\r
+       evldd   r0, ISR_FRM_R0(sp)\r
+       evldd   r3, ISR_FRM_R4(sp)\r
+       evldd   r4, ISR_FRM_R4(sp)\r
+       evldd   r5, ISR_FRM_R5(sp)\r
+       evldd   r6, ISR_FRM_R6(sp)\r
+       evldd   r7, ISR_FRM_R7(sp)\r
+       evldd   r8, ISR_FRM_R8(sp)\r
+       evldd   r9, ISR_FRM_R9(sp)\r
+       evldd   r10, ISR_FRM_R10(sp)\r
+       evldd   r11, ISR_FRM_R11(sp)\r
+       evldd   r12, ISR_FRM_R12(sp)\r
+       evldd   r14, ISR_FRM_R14(sp)\r
+       evldd   r15, ISR_FRM_R15(sp)\r
+       evldd   r16, ISR_FRM_R16(sp)\r
+       evldd   r17, ISR_FRM_R17(sp)\r
+       evldd   r18, ISR_FRM_R18(sp)\r
+       evldd   r19, ISR_FRM_R19(sp)\r
+       evldd   r20, ISR_FRM_R20(sp)\r
+       evldd   r21, ISR_FRM_R21(sp)\r
+       evldd   r22, ISR_FRM_R22(sp)\r
+       evldd   r23, ISR_FRM_R23(sp)\r
+       evldd   r24, ISR_FRM_R24(sp)\r
+       evldd   r25, ISR_FRM_R25(sp)\r
+       evldd   r26, ISR_FRM_R26(sp)\r
+       evldd   r27, ISR_FRM_R27(sp)\r
+       evldd   r28, ISR_FRM_R28(sp)\r
+       evldd   r29, ISR_FRM_R29(sp)\r
+       evldd   r30, ISR_FRM_R30(sp)\r
+       addi    sp,sp,8\r
+       evldd   r31, (ISR_FRM_R31-8)(sp)\r
+       addi    sp,sp,-8\r
+#else\r
+       lwz             r0, ISR_FRM_R0(sp)\r
+       lwz             r4, ISR_FRM_R4(sp)\r
+       lwz             r5, ISR_FRM_R5(sp)\r
+       lwz             r6, ISR_FRM_R6(sp)\r
+       lwz             r7, ISR_FRM_R7(sp)\r
+       lwz             r8, ISR_FRM_R8(sp)\r
+       lwz             r9, ISR_FRM_R9(sp)\r
+       lwz             r10, ISR_FRM_R10(sp)\r
+       lwz             r11, ISR_FRM_R11(sp)\r
+       lwz             r12, ISR_FRM_R12(sp)\r
+       lwz             r14, ISR_FRM_R14(sp)\r
+       lwz             r15, ISR_FRM_R15(sp)\r
+       lwz             r16, ISR_FRM_R16(sp)\r
+       lwz             r17, ISR_FRM_R17(sp)\r
+       lwz             r18, ISR_FRM_R18(sp)\r
+       lwz             r19, ISR_FRM_R19(sp)\r
+       lwz             r20, ISR_FRM_R20(sp)\r
+       lwz             r21, ISR_FRM_R21(sp)\r
+       lwz             r22, ISR_FRM_R22(sp)\r
+       lwz             r23, ISR_FRM_R23(sp)\r
+       lwz             r24, ISR_FRM_R24(sp)\r
+       lwz             r25, ISR_FRM_R25(sp)\r
+       lwz             r26, ISR_FRM_R26(sp)\r
+       lwz             r27, ISR_FRM_R27(sp)\r
+       lwz             r28, ISR_FRM_R28(sp)\r
+       lwz             r29, ISR_FRM_R29(sp)\r
+       lwz             r30, ISR_FRM_R30(sp)\r
+       lwz             r31, ISR_FRM_R31(sp)\r
+#endif \r
+       \r
+       /* back to the exception frame */\r
+       addi    sp,sp,ISR_FRM_SIZE\r
+       \r
+       lwz     r3, EXC_FRM_LR(sp)\r
+       mtlr    r3\r
+       lwz             r3, EXC_FRM_CTR(sp)\r
+       mtctr   r3\r
+       lwz     r3, EXC_FRM_XER(sp)\r
+       mtxer   r3\r
+       lwz     r3, EXC_FRM_CR(sp)\r
+       mtcr    r3\r
+       lwz     r3, EXC_FRM_SRR0(sp)\r
+       mtsrr0  r3\r
+       lwz     r3, EXC_FRM_SRR1(sp)\r
+       mtsrr1  r3\r
+       lwz     r3, EXC_FRM_R3(sp)\r
+       addi    sp,sp,EXC_FRM_SIZE\r
        rfi\r
 \r
-// When something really bad happens we end up here for the moment\r
-os_bad_bad:\r
-               b       os_bad_bad\r
-\r
-\r
 \r
 \r
-// ------------------------------------------------------------------\r
-\r
-/*\r
- * Trap interface !!!! See article http://www.linuxjournal.com/article/6516\r
- * http://www.osweekly.com/index.php?option=com_content&task=view&id=2229\r
+/**\r
+ * Decrementer exception. It just triggers soft interrupt 7.\r
+ *\r
  */\r
+exception_IVOR10:\r
+    stwu       r3,-8(sp)\r
+    stw        r4,4(sp)\r
 \r
-/* The T32 instruction sim can't handle trap's so we have to make something\r
- * - write SRR0, SRR1, MSR\r
- * - jump to there routines\r
- */\r
+    /* ack dec int */\r
+    lis        r3,0x0800\r
+    mtspr   SPR_TSR,r3\r
 \r
-// ------------------------------------------------------------------\r
+    /* Set soft int */\r
+    li         r4,2\r
+    lis     r3, INTC_SSCIR7@ha\r
+    stb     r4, INTC_SSCIR7@l(r3)\r
 \r
+    lwz     r3,0(sp)\r
+    lwz     r4,4(sp)\r
+    addi       sp,sp,8\r
+    rfi\r
 \r
-// System call, use this for trusted function ???\r
-// TODO: The example in autosar is not neccesary.. sc here here instead??\r
-//\r
-// NOTE!!!!!\r
-// Since the sc is a sync call, it should be enough to save NV regs(14->)\r
-// If I don't use the NV regs here I shouldn't need to save them\r
-// TODO: Inform compiler in SC_CALL() that I clobber volatile regs( r0, r3->\r
-//      (since the compiler does not know it's a function call)\r
-// TODO: Could probably do this shorter....only NV regs that I use need saving\r
-//       ( only cr2->cr4 according to e500 ABI )\r
 \r
+/* Getting here means that the exception stack is started with:\r
+ * sp - saved\r
+ * r3 - saved and contains the exception number \r
+ */\r
+handleException:\r
+       b  handleException              \r
+       \r
+#if defined(__GNUC__)  \r
+.section ".exception_tbl","ax"\r
+#elif defined(__CWCC__)\r
+.section .exception_tbl,4,"rw"\r
+#endif\r
+.balign 0x1000\r
+.global exception_tbl\r
+\r
+exception_tbl:\r
+       EXC_TABLE_CODE(0)\r
+       EXC_TABLE_CODE(1)\r
+       EXC_TABLE_CODE(2)\r
+       EXC_TABLE_CODE(3)\r
+    b      exception_IVOR4\r
+    .skip   +0xc\r
+       EXC_TABLE_CODE(5)\r
+       EXC_TABLE_CODE(6)\r
+       EXC_TABLE_CODE(7)\r
+       EXC_TABLE_CODE(8)\r
+       EXC_TABLE_CODE(9)\r
+    b     exception_IVOR10\r
+    .skip   +0xc\r
+       EXC_TABLE_CODE(11)\r
+       EXC_TABLE_CODE(12)\r
+       EXC_TABLE_CODE(13)\r
+       EXC_TABLE_CODE(14)\r
+#if defined(CFG_SPE)\r
+       EXC_TABLE_CODE(32)\r
+       EXC_TABLE_CODE(33)\r
+       EXC_TABLE_CODE(34)\r
+#endif\r
 \r
 \r
 \r
diff --git a/arch/ppc/mpc55xx/kernel/arch_offset.c b/arch/ppc/mpc55xx/kernel/arch_offset.c
new file mode 100644 (file)
index 0000000..70878a8
--- /dev/null
@@ -0,0 +1,117 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+\r
+#include <stddef.h>\r
+#include "internal.h"\r
+#include "arch_stack.h"\r
+\r
+\r
+\r
+\r
+\r
+#if defined(__GNUC__)\r
+#define DECLARE(sym,val) \\r
+       __asm("#define " #sym " %0" : : "i" ((val)))\r
+\r
+#elif defined(__CWCC__)\r
+\r
+#pragma section ".apa" ".apa"\r
+\r
+#define DECLARE(_var,_offset) \\r
+    __declspec(section ".apa") char _var[100+_offset]\r
+#endif\r
+\r
+#if defined(__GNUC__)\r
+void  oil_foo(void) {\r
+#endif\r
+\r
+/* Exceptions */\r
+       DECLARE(EXC_FRM_SIZE,   sizeof(Os_ExceptionFrameType));\r
+       DECLARE(EXC_FRM_SP,             offsetof(Os_ExceptionFrameType, sp));\r
+       DECLARE(EXC_FRM_SRR0,   offsetof(Os_ExceptionFrameType, srr0));\r
+       DECLARE(EXC_FRM_SRR1,   offsetof(Os_ExceptionFrameType, srr1));\r
+       DECLARE(EXC_FRM_LR,             offsetof(Os_ExceptionFrameType, lr));\r
+       DECLARE(EXC_FRM_CTR,    offsetof(Os_ExceptionFrameType, ctr));\r
+       DECLARE(EXC_FRM_XER,    offsetof(Os_ExceptionFrameType, xer));\r
+       DECLARE(EXC_FRM_CR,             offsetof(Os_ExceptionFrameType, cr));\r
+       DECLARE(EXC_FRM_R3,             offsetof(Os_ExceptionFrameType, r3));\r
+       DECLARE(EXC_FRM_VECTOR, offsetof(Os_ExceptionFrameType, vector));\r
+\r
+\r
+       DECLARE(FUNC_FRM_SIZE,  sizeof(Os_FuncFrameType));\r
+       DECLARE(FUNC_FRM_CR, offsetof(Os_FuncFrameType,cr));\r
+       DECLARE(FUNC_FRM_LR, offsetof(Os_FuncFrameType,lr));\r
+       DECLARE(FUNC_FRM_PATTERN, offsetof(Os_FuncFrameType,pattern));\r
+       DECLARE(FUNC_FRM_R14, offsetof(Os_FuncFrameType,r14));\r
+       DECLARE(FUNC_FRM_R15, offsetof(Os_FuncFrameType,r15));\r
+       DECLARE(FUNC_FRM_R16, offsetof(Os_FuncFrameType,r16));\r
+       DECLARE(FUNC_FRM_R17, offsetof(Os_FuncFrameType,r17));\r
+       DECLARE(FUNC_FRM_R18, offsetof(Os_FuncFrameType,r18));\r
+       DECLARE(FUNC_FRM_R19, offsetof(Os_FuncFrameType,r19));\r
+       DECLARE(FUNC_FRM_R20, offsetof(Os_FuncFrameType,r20));\r
+       DECLARE(FUNC_FRM_R21, offsetof(Os_FuncFrameType,r21));\r
+       DECLARE(FUNC_FRM_R22, offsetof(Os_FuncFrameType,r22));\r
+       DECLARE(FUNC_FRM_R23, offsetof(Os_FuncFrameType,r23));\r
+       DECLARE(FUNC_FRM_R24, offsetof(Os_FuncFrameType,r24));\r
+       DECLARE(FUNC_FRM_R25, offsetof(Os_FuncFrameType,r25));\r
+       DECLARE(FUNC_FRM_R26, offsetof(Os_FuncFrameType,r26));\r
+       DECLARE(FUNC_FRM_R27, offsetof(Os_FuncFrameType,r27));\r
+       DECLARE(FUNC_FRM_R28, offsetof(Os_FuncFrameType,r28));\r
+       DECLARE(FUNC_FRM_R29, offsetof(Os_FuncFrameType,r29));\r
+       DECLARE(FUNC_FRM_R30, offsetof(Os_FuncFrameType,r30));\r
+       DECLARE(FUNC_FRM_R31, offsetof(Os_FuncFrameType,r31));\r
+\r
+#if defined(CFG_SPE)\r
+       DECLARE(ISR_FRM_SPE_FSCR, offsetof(Os_IsrFrameType,fscr));\r
+       DECLARE(ISR_FRM_SPE_ACC, offsetof(Os_IsrFrameType,acc));\r
+       DECLARE(ISR_FRM_R3, offsetof(Os_IsrFrameType,acc));\r
+#endif\r
+\r
+       DECLARE(ISR_FRM_SIZE,   sizeof(Os_IsrFrameType));\r
+       DECLARE(ISR_FRM_R0, offsetof(Os_IsrFrameType,r0));\r
+       DECLARE(ISR_FRM_R4, offsetof(Os_IsrFrameType,r4));\r
+       DECLARE(ISR_FRM_R5, offsetof(Os_IsrFrameType,r5));\r
+       DECLARE(ISR_FRM_R6, offsetof(Os_IsrFrameType,r6));\r
+       DECLARE(ISR_FRM_R7, offsetof(Os_IsrFrameType,r7));\r
+       DECLARE(ISR_FRM_R8, offsetof(Os_IsrFrameType,r8));\r
+       DECLARE(ISR_FRM_R9, offsetof(Os_IsrFrameType,r9));\r
+       DECLARE(ISR_FRM_R10, offsetof(Os_IsrFrameType,r10));\r
+       DECLARE(ISR_FRM_R11, offsetof(Os_IsrFrameType,r11));\r
+       DECLARE(ISR_FRM_R12, offsetof(Os_IsrFrameType,r12));\r
+       DECLARE(ISR_FRM_R14, offsetof(Os_IsrFrameType,r14));\r
+       DECLARE(ISR_FRM_R15, offsetof(Os_IsrFrameType,r15));\r
+       DECLARE(ISR_FRM_R16, offsetof(Os_IsrFrameType,r16));\r
+       DECLARE(ISR_FRM_R17, offsetof(Os_IsrFrameType,r17));\r
+       DECLARE(ISR_FRM_R18, offsetof(Os_IsrFrameType,r18));\r
+       DECLARE(ISR_FRM_R19, offsetof(Os_IsrFrameType,r19));\r
+       DECLARE(ISR_FRM_R20, offsetof(Os_IsrFrameType,r20));\r
+       DECLARE(ISR_FRM_R21, offsetof(Os_IsrFrameType,r21));\r
+       DECLARE(ISR_FRM_R22, offsetof(Os_IsrFrameType,r22));\r
+       DECLARE(ISR_FRM_R23, offsetof(Os_IsrFrameType,r23));\r
+       DECLARE(ISR_FRM_R24, offsetof(Os_IsrFrameType,r24));\r
+       DECLARE(ISR_FRM_R25, offsetof(Os_IsrFrameType,r25));\r
+       DECLARE(ISR_FRM_R26, offsetof(Os_IsrFrameType,r26));\r
+       DECLARE(ISR_FRM_R27, offsetof(Os_IsrFrameType,r27));\r
+       DECLARE(ISR_FRM_R28, offsetof(Os_IsrFrameType,r28));\r
+       DECLARE(ISR_FRM_R29, offsetof(Os_IsrFrameType,r29));\r
+       DECLARE(ISR_FRM_R30, offsetof(Os_IsrFrameType,r30));\r
+       DECLARE(ISR_FRM_R31, offsetof(Os_IsrFrameType,r31));\r
+       DECLARE(ISR_FRM_PATTERN, offsetof(Os_IsrFrameType,pattern));\r
+\r
+#if defined(__GNUC__)\r
+}\r
+#endif\r
+\r
diff --git a/arch/ppc/mpc55xx/kernel/arch_stack.h b/arch/ppc/mpc55xx/kernel/arch_stack.h
new file mode 100644 (file)
index 0000000..27fee29
--- /dev/null
@@ -0,0 +1,260 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+/*\r
+ * REF\r
+ *   PowerPC e500 Application Binary Interface User\92s Guide\r
+ *\r
+ * DESCRIPTION\r
+ *\r
+ * REGISTER USE\r
+ *     #       V  Description\r
+ *     ---------------------------------------\r
+ *     r0         Volatile\r
+ *     r1         Stackframe\r
+ *     r2         Special\r
+ *     r3-r10     Arguments\r
+ *     r3,r4      Return values\r
+ *     r13        Small data ptr\r
+ *     r14-31  SC Local variables\r
+ *     CR      SC Condition register\r
+ *     LR         Link resister\r
+ *     CTR        Counter registers\r
+ *     XER        Integer exception register\r
+ *     SPEFSCR    SPE status register *1\r
+ *     ACC        SPE accumulator *1\r
+ *\r
+ *      *1 - Only for a MCU with SPE (e.g 5554)\r
+ *      SC - Saved by callee\r
+ *\r
+ *\r
+ * EXCEPTION\r
+ *   USAGE\r
+ *     IVOR4   External int  exceptions branches directly to the INTC handler\r
+ *     IVOR8   System call  Is called directly with some kind of argument.\r
+ *                           We need to save ISR context?\r
+ *     IVOR10  Decrementer  Probably just a small assembler routine to trigger a\r
+ *                           software interrupt.\r
+ *     IVOR11  FIT          ?\r
+ *     IVOR12  Watchdog     ?\r
+ *     IVOR13  Data TLB     Small assembler routine..\r
+ *     IVOR14  Instr TLB    Small assembler routine..\r
+ *\r
+ *     For IVOR11 and IVOR14 it would probably be nice with a\r
+ *     INTC (ISR1) direct function call.\r
+ *\r
+ *     This leaves us with saving the lot for an IVOR4, for the rest we don't really\r
+ *     care and just call Os_Panic( void *stack )\r
+ *\r
+ *   FRAME\r
+ *\r
+ *      Offs  Reg\r
+ *      ...\r
+ *      ....\r
+ *      0x10  SCC1\r
+ *      0x0c  SCC0\r
+ *      0x08  padding\r
+ *      0x04  Reserved  (backchain)\r
+ *      0x00  SP\r
+ *\r
+ *\r
+ *\r
+ *\r
+ * EXCEPTION/IRQ TABLE\r
+ *\r
+ * EXCEPTION/IRQ FLOW\r
+ *
+ */\r
+\r
+\r
+#ifndef ARCH_STACK_H_\r
+#define ARCH_STACK_H_\r
+\r
+\r
+/*\r
+ * FULL_PATTERN is used indicate that a full register context is on the stack.\r
+ * FUNC_PATTERN indicates that a function register context is  on the stack
+ */\r
+#define ISR_SPE_PATTERN                0x12\r
+#define FUNC_SPE_PATTERN       0x32\r
+#define ISR_PATTERN                    0xde\r
+#define FUNC_PATTERN           0xad\r
+\r
+\r
+/* An interrupt that is not mapped */\r
+#define OS_ERR_SPURIOUS_INTERRUPT      1\r
+/* The context indicator is missing */\r
+#define OS_ERR_BAD_CONTEXT                     2\r
+\r
+#if !defined(_ASSEMBLER_)\r
+#include <stdint.h>\r
+\r
+typedef struct {\r
+       uint32_t sp;\r
+       uint32_t backchain;             /* TODO: Useless since we don't make any c-call from the frame? */\r
+       uint32_t padding;               /* TODO: Useless since we don't make any c-call from the frame? */\r
+       uint32_t srr0;\r
+       uint32_t srr1;\r
+       uint32_t lr;\r
+       uint32_t ctr;\r
+       uint32_t xer;\r
+       uint32_t cr;\r
+       uint32_t vector;\r
+       uint32_t r3;                    /*11*4 = 44 < 48*/\r
+       uint32_t pad;\r
+} Os_ExceptionFrameType;\r
+\r
+#if defined(CFG_SPE)\r
+typedef struct {\r
+       uint32_t sp;\r
+       uint32_t backchain;\r
+       uint32_t padding;\r
+       uint32_t pattern;\r
+       uint32_t cr;\r
+       uint32_t lr;\r
+       uint64_t r14;\r
+       uint64_t r15;\r
+       uint64_t r16;\r
+       uint64_t r17;\r
+       uint64_t r18;\r
+       uint64_t r19;\r
+       uint64_t r20;\r
+       uint64_t r21;\r
+       uint64_t r22;\r
+       uint64_t r23;\r
+       uint64_t r24;\r
+       uint64_t r25;\r
+       uint64_t r26;\r
+       uint64_t r27;\r
+       uint64_t r28;\r
+       uint64_t r29;\r
+       uint64_t r30;\r
+       uint64_t r31;\r
+} Os_FuncFrameType;\r
+\r
+typedef struct  {\r
+       uint32_t sr;\r
+       uint32_t backchain;\r
+       uint32_t padding;\r
+       uint32_t pattern;\r
+       uint64_t fscr;\r
+       uint64_t acc;\r
+       uint64_t r0;\r
+       /* r1 */\r
+       /* r2 */\r
+       uint64_t r3;\r
+       uint64_t r4;\r
+       uint64_t r5;\r
+       uint64_t r6;\r
+       uint64_t r7;\r
+       uint64_t r8;\r
+       uint64_t r9;\r
+       uint64_t r10;\r
+       uint64_t r11;\r
+       uint64_t r12;\r
+       /* r13 */\r
+       uint64_t r14;\r
+       uint64_t r15;\r
+       uint64_t r16;\r
+       uint64_t r17;\r
+       uint64_t r18;\r
+       uint64_t r19;\r
+       uint64_t r20;\r
+       uint64_t r21;\r
+       uint64_t r22;\r
+       uint64_t r23;\r
+       uint64_t r24;\r
+       uint64_t r25;\r
+       uint64_t r26;\r
+       uint64_t r27;\r
+       uint64_t r28;\r
+       uint64_t r29;\r
+       uint64_t r30;\r
+       uint64_t r31;\r
+} Os_IsrFrameType;\r
+#else\r
+typedef struct {\r
+       uint32_t sp;\r
+       uint32_t backchain;\r
+       uint32_t padding;\r
+       uint32_t pattern;\r
+       uint32_t cr;\r
+       uint32_t lr;\r
+       uint32_t r14;\r
+       uint32_t r15;\r
+       uint32_t r16;\r
+       uint32_t r17;\r
+       uint32_t r18;\r
+       uint32_t r19;\r
+       uint32_t r20;\r
+       uint32_t r21;\r
+       uint32_t r22;\r
+       uint32_t r23;\r
+       uint32_t r24;\r
+       uint32_t r25;\r
+       uint32_t r26;\r
+       uint32_t r27;\r
+       uint32_t r28;\r
+       uint32_t r29;\r
+       uint32_t r30;\r
+       uint32_t r31;\r
+} Os_FuncFrameType;\r
+\r
+typedef struct  {\r
+       uint32_t sr;\r
+       uint32_t backchain;\r
+       uint32_t padding;\r
+       uint32_t pattern;\r
+       uint32_t r0;\r
+       /* r1 */\r
+       /* r2 */\r
+       /* r3, already save in exception frame */\r
+       uint32_t r4;\r
+       uint32_t r5;\r
+       uint32_t r6;\r
+       uint32_t r7;\r
+       uint32_t r8;\r
+       uint32_t r9;\r
+       uint32_t r10;\r
+       uint32_t r11;\r
+       uint32_t r12;\r
+       /* r13 */\r
+       uint32_t r14;\r
+       uint32_t r15;\r
+       uint32_t r16;\r
+       uint32_t r17;\r
+       uint32_t r18;\r
+       uint32_t r19;\r
+       uint32_t r20;\r
+       uint32_t r21;\r
+       uint32_t r22;\r
+       uint32_t r23;\r
+       uint32_t r24;\r
+       uint32_t r25;\r
+       uint32_t r26;\r
+       uint32_t r27;\r
+       uint32_t r28;\r
+       uint32_t r29;\r
+       uint32_t r30;\r
+       uint32_t r31;       /* 3+32-4 + 1= 31 */\r
+} Os_IsrFrameType;\r
+\r
+#endif /* defined(CFG_SPE) */\r
+\r
+#endif /* !defined(_ASSEMLBER_) */\r
+\r
+\r
+\r
+#endif /* ARCH_STACK_H_ */\r
index d95ad9c8f3795ea9b8b6ade8003f63b0491f421f..75300c105ae97b1f282e6b162dec3f7b35840f45 100644 (file)
@@ -1,3 +1,4 @@
+\r
 /* -------------------------------- Arctic Core ------------------------------\r
  * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
  *\r
  * for more details.\r
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
+/* ----------------------------[includes]------------------------------------*/\r
+/* ----------------------------[private define]------------------------------*/\r
+/* ----------------------------[private macro]-------------------------------*/\r
+/* ----------------------------[private typedef]-----------------------------*/\r
+/* ----------------------------[private function prototypes]-----------------*/\r
+/* ----------------------------[private variables]---------------------------*/\r
+/* ----------------------------[private functions]---------------------------*/\r
+/* ----------------------------[public functions]----------------------------*/\r
+\r
+\r
+/* ----------------------------[includes]------------------------------------*/\r
+\r
 #include "internal.h"\r
-#include "asm_book_e.h"\r
 #include "irq_types.h"\r
 #include "mpc55xx.h"\r
-#if !defined(USE_KERNEL)\r
-#include "Mcu.h"\r
-#endif\r
-\r
-#if defined(USE_KERNEL)\r
 #include "pcb.h"\r
 #include "sys.h"\r
 #include "internal.h"\r
 #include "task_i.h"\r
 #include "hooks.h"\r
-\r
-#if 0\r
-#define INTC_SSCIR0_CLR7                                       7\r
-#define MLB_SERVICE_REQUEST                                    293\r
-#define CRITICAL_INPUT_EXCEPTION                       320\r
-#define DEBUG_EXCEPTION                                                335\r
-#define NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS    336\r
-#endif\r
-\r
 #include "debug.h"\r
-#endif\r
-#include "irq.h"\r
-\r
-static void dump_exception_regs( uint32_t *regs );\r
+#include "isr.h"\r
+#include <stdint.h>\r
 \r
+/* ----------------------------[private define]------------------------------*/\r
+/* ----------------------------[private macro]-------------------------------*/\r
+/* ----------------------------[private typedef]-----------------------------*/\r
 typedef void (*f_t)( uint32_t *);\r
-//typedef void (*func_t)();\r
-//extern vfunc_t Irq_VectorTable[];\r
-extern void exception_tbl(void);\r
 \r
+/* ----------------------------[private function prototypes]-----------------*/\r
+//extern uintptr_t Irq_VectorTable[NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS];\r
+//extern uint8 Irq_IsrTypeTable[NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS];\r
+//extern const OsIsrConstType *Irq_Map[NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS];\r
 \r
+static void dumpExceptionRegs( uint32_t *regs );\r
 \r
-#if defined(USE_KERNEL)\r
-extern void * Irq_VectorTable[NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS];\r
-extern uint8 Irq_IsrTypeTable[NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS];\r
-#else\r
-extern func_t Irq_VectorTable[];\r
-#endif\r
+/* ----------------------------[private variables]---------------------------*/\r
+extern void exception_tbl(void);\r
+\r
+/* ----------------------------[private functions]---------------------------*/\r
+/* ----------------------------[public functions]----------------------------*/\r
 \r
 // write 0 to pop INTC stack\r
 void Irq_Init( void ) {\r
@@ -113,17 +113,6 @@ void Irq_Init( void ) {
          INTC.MCR.B.VTES = 0; // 4 byte offset between entries\r
        #endif\r
 \r
-\r
-         // Pointless in software vector more???\r
-#if 0\r
-         // Check alignment requirements for the INTC table\r
-         assert( (((uint32_t)&Irq_VectorTable[0]) & 0x7ff) == 0 );\r
-       #if defined(CFG_MPC5516)\r
-         INTC.IACKR_PRC0.R = (uint32_t) & Irq_VectorTable[0]; // Set INTC ISR vector table\r
-       #elif defined(CFG_MPC5554) || defined(CFG_MPC5567)\r
-         INTC.IACKR.R = (uint32_t) & Irq_VectorTable[0]; // Set INTC ISR vector table\r
-       #endif\r
-#endif\r
          // Pop the FIFO queue\r
          for (int i = 0; i < 15; i++)\r
          {\r
@@ -140,12 +129,11 @@ void Irq_Init( void ) {
        #elif defined(CFG_MPC5554) || defined(CFG_MPC5567)\r
          INTC.CPR.B.PRI = 0;\r
        #endif\r
-\r
 }\r
 \r
 void Irq_EOI( void ) {\r
 #if defined(CFG_MPC5516)\r
-       struct INTC_tag *intc = &INTC;\r
+       volatile struct INTC_tag *intc = &INTC;\r
        intc->EOIR_PRC0.R = 0;\r
 #elif defined(CFG_MPC5554)||defined(CFG_MPC5567)\r
        volatile struct INTC_tag *intc = &INTC;\r
@@ -153,7 +141,7 @@ void Irq_EOI( void ) {
 #endif\r
 }\r
 \r
-\r
+#if 0\r
 /**\r
  *\r
  * @param stack_p Ptr to the current stack.\r
@@ -166,6 +154,7 @@ void *Irq_Entry( void *stack_p )
        uint32_t vector;\r
        uint32_t *stack = (uint32_t *)stack_p;\r
        uint32_t exc_vector = (EXC_OFF_FROM_BOTTOM+EXC_VECTOR_OFF)  / sizeof(uint32_t);\r
+       const OsIsrConstType *isr;\r
 \r
        // Check for exception\r
        if( stack[exc_vector]>=CRITICAL_INPUT_EXCEPTION )\r
@@ -193,47 +182,15 @@ void *Irq_Entry( void *stack_p )
                }\r
        }\r
 \r
-#if defined(USE_KERNEL)\r
-\r
-       if( Irq_GetIsrType(vector) == ISR_TYPE_1 ) {\r
-               // It's a function, just call it.\r
-               ((func_t)Irq_VectorTable[vector])();\r
+       isr = Os_IsrGet(exc_vector);\r
+       if( isr->type == ISR_TYPE_1 ) {\r
+               isr->entry();\r
                return stack;\r
        } else {\r
-               // It's a PCB\r
-               // Let the kernel handle the rest,\r
-               return Os_Isr(stack, (void *)Irq_VectorTable[vector]);\r
-       }\r
-\r
-\r
-#else\r
-               //read address\r
-       t = (func_t)Irq_VectorTable[vector];\r
-\r
-       if( t == ((void *)0) )\r
-       {\r
-               while(1);\r
+               return Os_Isr(stack, vector);\r
        }\r
-\r
-       // Enable nestling interrupts\r
-       Irq_Enable();\r
-       t();\r
-       Irq_Disable();\r
-\r
-       if( vector < INTC_NUMBER_OF_INTERRUPTS )\r
-       {\r
-               // write 0 to pop INTC stack\r
-               intc->EOIR_PRC0.R = 0;\r
-       }\r
-       return NULL;\r
-\r
-#endif\r
 }\r
-\r
-\r
-\r
-#if defined(USE_KERNEL)\r
-\r
+#endif\r
 \r
 \r
 static inline int osPrioToCpuPio( uint8_t prio ) {\r
@@ -250,6 +207,7 @@ void Irq_SetPriority( Cpu_t cpu,  IrqType vector, uint8_t prio ) {
 \r
 \r
 \r
+#if 0\r
 /**\r
  * Attach an ISR type 1 to the interrupt controller.\r
  *\r
@@ -272,7 +230,55 @@ void Irq_AttachIsr1( void (*entry)(void), void *int_ctrl, uint32_t vector,uint8_
        }\r
 \r
 }\r
+#endif\r
+\r
+\r
+void Irq_EnableVector( int16_t vector, int priority, int core ) {\r
+\r
+       if (vector < INTC_NUMBER_OF_INTERRUPTS) {\r
+               Irq_SetPriority(core,vector + IRQ_INTERRUPT_OFFSET, osPrioToCpuPio(priority));\r
+       } else if ((vector >= CRITICAL_INPUT_EXCEPTION)\r
+                       && (vector<= DEBUG_EXCEPTION)) {\r
+       } else {\r
+               /* Invalid vector! */\r
+               assert(0);\r
+       }\r
+}\r
+\r
+\r
+\r
+#if 0\r
+\r
+/**\r
+ *\r
+ * @param isrPtr\r
+ * @param type\r
+ * @param int_ctrl\r
+ */\r
+ISRType Irq_Attach( int vector ) {\r
+//     Os_Sys.isrCnt\r
+//     uint32_t vector = isrPtr->vector;\r
+\r
+       //Irq_VectorTable[vector] = (uintptr_t)isrPtr;\r
+//     Irq_IsrTypeTable[vector] = type;\r
+//     Irq_VectorTable[vector] = isrPtr;\r
+\r
+\r
+       if (vector < INTC_NUMBER_OF_INTERRUPTS) {\r
+               Irq_SetPriority(Irq_Map[vector]->core ,vector + IRQ_INTERRUPT_OFFSET, osPrioToCpuPio(Irq_Map[vector]->priority));\r
+       } else if ((vector >= CRITICAL_INPUT_EXCEPTION)\r
+                       && (vector<= DEBUG_EXCEPTION)) {\r
+       } else {\r
+               /* Invalid vector! */\r
+               assert(0);\r
+       }\r
+\r
+\r
+       return;\r
+}\r
+#endif\r
 \r
+#if 0\r
 /**\r
  * Attach a ISR type 2 to the interrupt controller.\r
  *\r
@@ -281,9 +287,9 @@ void Irq_AttachIsr1( void (*entry)(void), void *int_ctrl, uint32_t vector,uint8_
  * @param vector\r
  */\r
 void Irq_AttachIsr2(TaskType tid,void *int_ctrl,IrqType vector ) {\r
-       OsPcbType *pcb;\r
+       OsTaskVarType *pcb;\r
 \r
-       pcb = os_find_task(tid);\r
+       pcb = Os_TaskGet(tid);\r
        Irq_VectorTable[vector] = (void *)pcb;\r
        Irq_IsrTypeTable[vector] = PROC_ISR2;\r
 \r
@@ -296,49 +302,9 @@ void Irq_AttachIsr2(TaskType tid,void *int_ctrl,IrqType vector ) {
                assert(0);\r
        }\r
 }\r
-\r
-#endif /* defined(USE_KERNEL) */\r
-\r
-#if !defined(USE_KERNEL)\r
-/**\r
- * Installs a vector in intc vector table. It also sets the priority in the INTC\r
- * internal registers.\r
- *\r
- * This does NOT use the kernel\r
- *\r
- * @param func   The function to install\r
- * @param vector INTC vector to install it to\r
- * @param priority INTC priority. 0 - Low prio. 15- Highest( NMI )\r
- * @param cpu\r
- */\r
-\r
-void Irq_InstallVector(void(*func)(), IrqType vector,\r
-    uint8_t priority, Cpu_t cpu)\r
-{\r
-  VALIDATE( ( 1 == Mcu_Global.initRun ), MCU_INTCVECTORINSTALL_SERVICE_ID, MCU_E_UNINIT );\r
-  DEBUG(DEBUG_LOW,"Installing INTC vector:%d,prio:%d,cpu,%d\n",vector,priority,cpu);\r
-  Irq_VectorTable[vector] = func;\r
-\r
-  if (vector <= MLB_SERVICE_REQUEST)\r
-  {\r
-    INTC.PSR[vector].B.PRC_SEL = cpu;\r
-    INTC.PSR[vector].B.PRI = priority;\r
-\r
-    Irq_VectorTable[vector] = func;\r
-  } else if ((vector >= CRITICAL_INPUT_EXCEPTION)\r
-      && (vector <= DEBUG_EXCEPTION))\r
-  {\r
-    Irq_VectorTable[vector] = func;\r
-  } else\r
-  {\r
-    /* Invalid vector! */\r
-    assert(0);\r
-  }\r
-}\r
 #endif\r
 \r
 \r
-\r
 /**\r
  * Generates a soft interrupt\r
  * @param vector\r
@@ -385,7 +351,7 @@ void IVOR0Exception (uint32_t *regs)
 //     ExceptionSave(srr0,srr1,esr,mcsr,dear;)\r
        // CSRR0, CSSR1\r
        // Nothing more\r
-       dump_exception_regs(regs);\r
+       dumpExceptionRegs(regs);\r
        while (1);\r
 }\r
 \r
@@ -394,7 +360,7 @@ void IVOR1Exception (uint32_t *regs)
 {\r
        // CSRR0, CSSR1\r
        // MCSR - Source of machine check\r
-       dump_exception_regs(regs);\r
+       dumpExceptionRegs(regs);\r
    while (1);\r
 }\r
 // Data Storage Interrupt\r
@@ -402,7 +368,7 @@ void IVOR2Exception (uint32_t *regs)
 {\r
        // SRR0, SRR1\r
        // ESR - lots of stuff\r
-       dump_exception_regs(regs);\r
+       dumpExceptionRegs(regs);\r
    while (1);\r
 }\r
 \r
@@ -411,7 +377,7 @@ void IVOR3Exception (uint32_t *regs)
 {\r
        // SRR0, SRR1\r
        // ESR - lots of stuff\r
-       dump_exception_regs(regs);\r
+       dumpExceptionRegs(regs);\r
    while (1);\r
 }\r
 \r
@@ -421,7 +387,7 @@ void IVOR5Exception (uint32_t *regs)
        // SRR0, SRR1\r
        // ESR - lots of stuff\r
        // DEAR - Address of load store that caused the exception\r
-       dump_exception_regs(regs);\r
+       dumpExceptionRegs(regs);\r
    while (1);\r
 }\r
 \r
@@ -430,7 +396,7 @@ void IVOR6Exception (uint32_t *regs)
 {\r
        // SRR0, SRR1\r
        // ESR - lots of stuff\r
-       dump_exception_regs(regs);\r
+       dumpExceptionRegs(regs);\r
        while (1);\r
 }\r
 \r
@@ -438,7 +404,7 @@ void IVOR6Exception (uint32_t *regs)
 void IVOR7Exception (uint32_t *regs)\r
 {\r
        // SRR0, SRR1\r
-       dump_exception_regs(regs);\r
+       dumpExceptionRegs(regs);\r
    while (1);\r
 }\r
 \r
@@ -447,7 +413,7 @@ void IVOR8Exception (uint32_t *regs)
 {\r
        // SRR0, SRR1\r
        // ESR\r
-       dump_exception_regs(regs);\r
+       dumpExceptionRegs(regs);\r
        while (1);\r
 }\r
 \r
@@ -455,7 +421,7 @@ void IVOR8Exception (uint32_t *regs)
 void IVOR9Exception (uint32_t *regs)\r
 {\r
        // Does not happen on e200\r
-       dump_exception_regs(regs);\r
+       dumpExceptionRegs(regs);\r
        while (1);\r
 }\r
 #if 0\r
@@ -471,7 +437,7 @@ void IVOR10Exception (uint32_t *regs)
 void IVOR11Exception (uint32_t *regs)\r
 {\r
        // SRR0, SRR1\r
-       dump_exception_regs(regs);\r
+       dumpExceptionRegs(regs);\r
        while (1);\r
 }\r
 \r
@@ -479,7 +445,7 @@ void IVOR11Exception (uint32_t *regs)
 void IVOR12Exception (uint32_t *regs)\r
 {\r
        // SRR0, SRR1\r
-       dump_exception_regs(regs);\r
+       dumpExceptionRegs(regs);\r
        while (1);\r
 }\r
 \r
@@ -498,14 +464,14 @@ void IVOR14Exception (uint32_t *regs)
 {\r
        // SRR0, SRR1\r
        // ESR - MIF set, All others cleared\r
-       dump_exception_regs(regs);\r
+       dumpExceptionRegs(regs);\r
        while (1);\r
 }\r
 \r
 void IVOR15Exception (uint32_t *regs)\r
 {\r
        // Debug\r
-       dump_exception_regs(regs);\r
+       dumpExceptionRegs(regs);\r
        while (1);\r
 }\r
 \r
@@ -531,7 +497,7 @@ typedef struct {
 \r
 \r
 \r
-static void dump_exception_regs( uint32_t *regs ) {\r
+static void dumpExceptionRegs( uint32_t *regs ) {\r
        exc_stack_t *r = (exc_stack_t *)regs;\r
 \r
        LDEBUG_PRINTF("sp   %08x  srr0 %08x  srr1 %08x\n",r->sp,r->srr0,r->srr1);\r
@@ -542,107 +508,7 @@ static void dump_exception_regs( uint32_t *regs ) {
 }\r
 \r
 #else\r
-static void dump_exception_regs( uint32_t *regs ) {\r
+static void dumpExceptionRegs( uint32_t *regs ) {\r
 }\r
 #endif\r
 \r
-#if !defined(USE_KERNEL)\r
-func_t Irq_VectorTable[NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS] __attribute__ ((aligned (0x800))) = {\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 00 - 04 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 05 - 09 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 10 - 14 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 15 - 19 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 20 - 24 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 25 - 29 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 30 - 34 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 35 - 39 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 40 - 44 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 45 - 49 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 50 - 54 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 55 - 59 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 60 - 64 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 55 - 69 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 70 - 74 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 75 - 79 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 80 - 84 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 85 - 89 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 90 - 94 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 95 - 99 */\r
-\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 100 - 104 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 105 - 109 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 110 - 114 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 115 - 119 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 120 - 124 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 125 - 129 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 130 - 134 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 135 - 139 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 140 - 144 */\r
- dummy, dummy, dummy, dummy, dummy /* PIT1 */, /* ISRs 145 - 149 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 150 - 154 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 155 - 159 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 160 - 164 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 155 - 169 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 170 - 174 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 175 - 179 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 180 - 184 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 185 - 189 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 190 - 194 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 195 - 199 */\r
-\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 200 - 204 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 205 - 209 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 210 - 214 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 215 - 219 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 220 - 224 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 225 - 229 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 230 - 234 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 235 - 239 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 240 - 244 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 245 - 249 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 250 - 254 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 255 - 259 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 260 - 264 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 255 - 269 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 270 - 274 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 275 - 279 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 280 - 284 */\r
- dummy, dummy, dummy, dummy, dummy, /* ISRs 285 - 289 */\r
- dummy, dummy, dummy, dummy,        /* ISRs 290 - 293 */\r
-\r
- /* Some reserved vectors between INC interrupts and exceptions. */\r
- dummy,                             /* INTC_NUMBER_OF_INTERRUPTS */\r
-\r
- dummy, dummy, dummy, dummy, dummy,\r
- dummy, dummy, dummy, dummy, dummy,\r
- dummy, dummy, dummy, dummy, dummy,\r
- dummy, dummy, dummy, dummy, dummy,\r
- dummy, dummy, dummy, dummy, dummy,\r
-\r
- IVOR0Exception,                    /* CRITICAL_INPUT_EXCEPTION, */\r
- IVOR1Exception,                    /* MACHINE_CHECK_EXCEPTION */\r
- IVOR2Exception,                    /* DATA_STORAGE_EXCEPTION */\r
- IVOR3Exception,                    /* INSTRUCTION_STORAGE_EXCEPTION */\r
- dummy,                             /* EXTERNAL_INTERRUPT */\r
-                                    /* This is the place where the "normal" interrupts will hit the CPU... */\r
- IVOR5Exception,                    /* ALIGNMENT_EXCEPTION */\r
- IVOR6Exception,                    /* PROGRAM_EXCEPTION */\r
- IVOR7Exception,                    /* FLOATING_POINT_EXCEPTION */\r
- IVOR8Exception,                    /* SYSTEM_CALL_EXCEPTION */\r
- dummy,                             /* AUX_EXCEPTION Not implemented in MPC5516. */\r
- dummy,                             /* DECREMENTER_EXCEPTION */\r
- IVOR11Exception,                   /* FIXED_INTERVAL_TIMER_EXCEPTION */\r
- IVOR12Exception,                   /* WATCHDOG_TIMER_EXCEPTION */\r
- IVOR13Exception,                   /* DATA_TLB_EXCEPTION */\r
- IVOR14Exception,                   /* INSTRUCTION_TLB_EXCEPTION */\r
- IVOR15Exception,                   /* DEBUG_EXCEPTION */\r
-};\r
-\r
-void dummy (void) {\r
-   while (1){\r
-          /* TODO: Rename and check for what spurious interrupt have happend */\r
-   };\r
- }\r
-\r
-#endif\r
-\r
index b6f477bd75dc5fdb6f79213df93859ddf4e4c964..dee0d0b1d5be2c0a601cd8663565387cd37e207b 100644 (file)
@@ -584,7 +584,7 @@ typedef enum
   DATA_TLB_EXCEPTION,\r
   INSTRUCTION_TLB_EXCEPTION,\r
   DEBUG_EXCEPTION,\r
-  NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS,\r
+  NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS\r
 }IrqType;\r
 \r
 typedef enum {\r
@@ -609,7 +609,7 @@ typedef enum {
   PERIPHERAL_CLOCK_ESCI_G,\r
   PERIPHERAL_CLOCK_ESCI_H,\r
   PERIPHERAL_CLOCK_IIC_A,\r
-  PERIPHERAL_CLOCK_MLB,\r
+  PERIPHERAL_CLOCK_MLB\r
 } McuE_PeriperalClock_t;\r
 \r
 \r
@@ -620,7 +620,7 @@ typedef enum {
 \r
 typedef enum {\r
        CPU_CORE0,\r
-       CPU_CORE1,\r
+       CPU_CORE1\r
 } Cpu_t;\r
 \r
 #define IRQ_INTERRUPT_OFFSET           0\r
diff --git a/arch/ppc/mpc55xx/scripts/linkscript_cw.ldf b/arch/ppc/mpc55xx/scripts/linkscript_cw.ldf
new file mode 100644 (file)
index 0000000..f987624
--- /dev/null
@@ -0,0 +1,55 @@
+\r
+MEMORY\r
+{\r
+    flash: org = 0x00000000,   len = 0x00060000 \r
+    sram:  org = 0x40000000,   len = 0x00008000 \r
+}\r
+\r
+SECTIONS\r
+{\r
+   GROUP : {\r
+      .rcw : { *(.rcw) }\r
+      .text : { \r
+                *(.exception_tbl)\r
+             *(.text)\r
+             *(.rodata)\r
+             *(.ctors)\r
+             *(.dtors)    \r
+             *(.init) \r
+             *(.fini)          \r
+             *(.eini)\r
+             . = (.+15);\r
+        } \r
+           .sdata2       : {}  /* really PPC.EMB.sdata2?, r2 should point here */\r
+           extab      : {}  \r
+           extabindex : {}\r
+           . = ALIGN(0x10);\r
+           __DATA_ROM = .;\r
+           .=.+SIZEOF(.data);\r
+           __SDATA = .;\r
+           .=.+SIZEOF(.sdata);\r
+           __SDATA0 = .;\r
+           .=.+SIZEOF(.PPC.EMB.sdata0);\r
+        }       > flash\r
+\r
+       GROUP : {\r
+               __DATA_RAM = .; \r
+               .data (DATA) LOAD(ADDR(__DATA_ROM)) :  {}\r
+               .sdata (DATA) LOAD(ADDR(__SDATA)): {}    /* .sdata - Initialized small data */\r
+           __DATA_END = . ;\r
+       } > sram\r
+       \r
+       GROUP : {\r
+         __BSS_START = .;\r
+         .sbss  (BSS)  : {}    /* sbss - un-initialized small data */                                                                  \r
+         .bss   (BSS)  : {}  \r
+         __BSS_END = .;\r
+      .PPC.EMB.sdata0 LOAD(ADDR(__SDATA0)) : {}        /* Small data with offset to 0 */           \r
+      .PPC.EMB.sbss0  : {}\r
+      .ramlog (DATA) : { *(.ramlog) }\r
+         _heap_addr = .;      \r
+       } > sram\r
+}   \r
+\r
+_heap_end   = ADDR(sram)+SIZEOF(sram);\r
+__SP_INIT = _heap_end;\r
index 0420f72a204cfbc6082dcf88b84b9e63771c93ef..33bf5e3375b7680d23a54f54ecda8cbd7f77708f 100644 (file)
@@ -10,7 +10,33 @@ OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", "elf32-powerpc")
 OUTPUT_ARCH(powerpc)\r
 ENTRY(_start)\r
 \r
-\r
+/*\r
+ * _idata - Start of .data in flash \r
+ * _data  - start address of .data in RAM\r
+ * _edata  - end address of .data  in RAM\r
+ * _bss   - start address of .bss\r
+ * _ebss   - end address of .bss\r
+ * _etext  - end of .text\r
+ * _end    - End of something.... \r
+ * \r
+ * More stuff:\r
+ *    \r
+ *  _arc_heap_start\r
+ *  _arc_heap_end\r
+ *  _arc_stack\r
+ *\r
+ * Dwarf stuff: (same as Dwarf3 .debug_frame? )\r
+ *  eh_frame_hdr (C++ only? unwind info for C++ exceptions?)\r
+ *  eh_frame     (C++ only?)\r
+ *\r
+ * Exception table:\r
+ *  _exc_frame_start\r
+ *  _exc_frame_end\r
+ *\r
+ *  PowerPC EABI special:\r
+ *  _SDA2_BASE_\r
+ *  _SDA_BASE\r
+ */\r
 \r
 MEMORY\r
 {\r
@@ -114,7 +140,8 @@ __FLS_PROG_START__ = 0;     /* Must be aligned to a sector start. */
 \r
        .data : {\r
                . = . + ALIGN(4);\r
-               __DATA_RAM = .; *(.data .data.* .gnu.linkonce.d.* .gnu.linkonce.r.* .eh_frame)\r
+               __DATA_RAM = .; \r
+               *(.data .data.* .gnu.linkonce.d.* .gnu.linkonce.r.* .eh_frame)\r
        } > ram AT> flash\r
 \r
        .sdata : {\r
@@ -132,20 +159,54 @@ __FLS_PROG_START__ = 0;   /* Must be aligned to a sector start. */
                __SBSS_START__ = .;\r
                *(.sbss .sbss.* .scommon .gnu.linkonce.sb.* .t32_outport);\r
                __SBSS_END__ = .;\r
+               _end = .;\r
        } > ram\r
 \r
-    .got2 ALIGN(0x10): {. = . + ALIGN(16);*(.got2);    . = . + ALIGN(8); } > ram\r
-    .fixup : { . = . + ALIGN(16);*(.fixup);    . = . + ALIGN(8); }             > ram\r
-       .t32_outport ALIGN(0x10): { *(.t32_outport); }                  > ram\r
-       .got : AT(ALIGN(LOADADDR(.sdata)+SIZEOF(.sdata),4)) { *(.got.plt) *(.got) } > ram\r
-       /* .bss : { *(.bss .bss.* COMMON .gnu.linkonce.b.*);__BSS_END   = .; }  > ram */\r
-       .bss : AT(ADDR(.bss)) { *(.bss .bss.* COMMON .gnu.linkonce.b.*);__BSS_END       = .; }  > ram\r
-       .init_stack ALIGN(16) (NOLOAD) : {      __SP_END        = .;. = . + 1000;       __SP_INIT       = .; } > ram\r
+    .got2 ALIGN(0x10): \r
+    {\r
+       . = . + ALIGN(16);\r
+       *(.got2);       \r
+       . = . + ALIGN(8); \r
+    } > ram\r
+    .fixup : \r
+    { \r
+       . = . + ALIGN(16);\r
+       *(.fixup);\r
+       . = . + ALIGN(8); \r
+    }          > ram\r
+       .t32_outport ALIGN(0x10): \r
+       { \r
+               *(.t32_outport); \r
+       }                       > ram\r
+       \r
+       .got : AT(ALIGN(LOADADDR(.sdata)+SIZEOF(.sdata),4)) \r
+       { \r
+               *(.got.plt) *(.got) \r
+       } > ram\r
+       \r
+       .bss : AT(ADDR(.bss)) \r
+       { \r
+               *(.bss .bss.* COMMON .gnu.linkonce.b.*);\r
+               __BSS_END       = .; \r
+       }       > ram\r
+       .init_stack ALIGN(16) (NOLOAD) : \r
+       {       \r
+               __SP_END        = .;\r
+               . = . + 1000;   \r
+               __SP_INIT       = .; \r
+       } > ram\r
+       \r
        /* Fls RAM section */\r
        .fls_ram ALIGN(16) (NOLOAD) : {\r
                __FLS_ERASE_RAM__ = .;\r
                . = . + SIZEOF(.fls_rom);\r
        } > ram\r
+       \r
+       /* Always place last in RAM */\r
+       .heap ALIGN(0x4): {\r
+               PROVIDE(_heap_start = .);\r
+       } > ram\r
+               \r
 \r
   .ctors          :\r
   {\r
@@ -192,6 +253,8 @@ __FLS_PROG_START__ = 0;     /* Must be aligned to a sector start. */
   .debug_varnames  0 : { *(.debug_varnames) }\r
 }\r
 \r
+_heap_end = ORIGIN(ram) + LENGTH(ram);\r
+\r
 __TEXT_START           = ADDR(.text);\r
 __RAM_START                    = ADDR(.sdata);\r
 \r
index 15e13f52201f537508da98a69b0cafa08eb30dbd..2e6efe27c941918e0a16b34c7769c38e3950450b 100644 (file)
@@ -1,5 +1,9 @@
+\r
+_BOARD_COMMON_MK:=y  # Include guard for backwards compatability\r
+\r
 obj-$(CFG_PPC) += crt0.o\r
 obj-$(CFG_HC1X) += crt0.o\r
+\r
 vpath-$(CFG_ARM_CM3) += $(ROOTDIR)/$(ARCH_PATH-y)/kernel\r
 vpath-$(CFG_ARM_CM3) += $(ROOTDIR)/$(ARCH_PATH-y)/drivers/STM32F10x_StdPeriph_Driver/src\r
 vpath-$(CFG_ARM_CM3) += $(ROOTDIR)/$(ARCH_PATH-y)/drivers/STM32_ETH_Driver/src\r
@@ -10,7 +14,7 @@ obj-$(CFG_ARM_CM3) += startup_stm32f10x.o
 #stm32 lib files needed by drivers\r
 obj-$(CFG_ARM_CM3) += stm32f10x_rcc.o\r
 obj-$(CFG_ARM_CM3)-$(USE_CAN) += stm32f10x_can.o\r
-obj-$(CFG_ARM_CM3)-$(USE_DIO) += stm32f10x_gpio.o\r
+obj-$(CFG_ARM_CM3)-$(USE_PORT) += stm32f10x_gpio.o\r
 obj-$(CFG_ARM_CM3)-$(USE_ADC) += stm32f10x_adc.o\r
 obj-$(CFG_ARM_CM3)-$(USE_ADC) += stm32f10x_dma.o\r
 obj-$(CFG_ARM_CM3)-$(USE_FLS) += stm32f10x_flash.o\r
@@ -49,7 +53,7 @@ inc-$(USE_DMA) += $(ROOTDIR)/$(ARCH_PATH-y)/drivers
 # Mcu\r
 obj-$(USE_MCU) += Mcu.o\r
 obj-$(USE_MCU) += Mcu_Cfg.o\r
-obj-$(CFG_MPC55XX)-$(USE_MCU) += Mcu_Exceptions.o\r
+#obj-$(CFG_MPC55XX)-$(USE_MCU) += Mcu_Exceptions.o\r
 \r
 # Flash\r
 obj-$(USE_FLS) += Fls.o\r
@@ -118,10 +122,19 @@ vpath-y += $(ROOTDIR)/peripherals
 \r
 #Wdg\r
 obj-$(USE_WDG) += Wdg.o\r
+obj-$(USE_WDG) += Wdg_Lcfg.o\r
+\r
+#WdgIf\r
+obj-$(USE_WDG) += WdgIf.o\r
+obj-$(USE_WDG) += WdgIf_Cfg.o\r
+inc-y += $(ROOTDIR)/system/WdgIf\r
+vpath-y += $(ROOTDIR)/system/WdgIf\r
 \r
 #WdgM\r
 obj-$(USE_WDGM) += WdgM.o\r
-obj-$(USE_WDGM) += WdgM_Cfg.o\r
+obj-$(USE_WDGM) += WdgM_PBcfg.o\r
+inc-y += $(ROOTDIR)/system/WdgM\r
+vpath-y += $(ROOTDIR)/system/WdgM\r
 \r
 #Pwm\r
 obj-$(USE_PWM) += Pwm.o\r
@@ -176,9 +189,7 @@ obj-$(USE_COM) += Com_PbCfg.o
 obj-$(USE_COM) += Com_Com.o\r
 obj-$(USE_COM) += Com_Sched.o\r
 obj-$(USE_COM) += Com.o\r
-obj-$(USE_COM) += Com_RunTest.o\r
 obj-$(USE_COM) += Com_misc.o\r
-#obj-$(USE_COM) += Com_TestData.o\r
 inc-$(USE_PDUR) += $(ROOTDIR)/communication/Com\r
 inc-$(USE_COM) += $(ROOTDIR)/communication/Com\r
 vpath-$(USE_COM) += $(ROOTDIR)/communication/Com\r
@@ -231,22 +242,25 @@ vpath-$(USE_TCF) += $(ROOTDIR)/common/tcf
 #SLEEP\r
 obj-$(USE_SLEEP) += sleep.o\r
 \r
-\r
-# Newlib overrides (overridden by default)\r
-ifneq ($(CFG_STANDARD_NEWLIB),y)\r
 obj-y += xtoa.o\r
-obj-y += newlib_port.o\r
-# If we have configured console output we include printf. \r
-# Overridden to use lib implementation with CFG_NEWLIB_PRINTF\r
-ifneq ($(CFG_NEWLIB_PRINTF),y)\r
-# TODO: This assumes that you print to console.. but you could\r
-#       just print to a buffer, e.g. sprintf() \r
-ifneq (,$(SELECT_CONSOLE) $(SELECT_OS_CONSOLE))\r
-obj-y += printf.o\r
-\r
-endif # SELECT_CONSOLE\r
-endif # CFG_NEWLIB_PRINTF\r
-endif # CFG_STANDARD_NEWLIB\r
+\r
+SELECT_CLIB?=CLIB_NEWLIB\r
+\r
+ifeq ($(SELECT_CLIB),CLIB_CW)\r
+  # This is not good, but don't know what to do right now....\r
+  obj-y += msl_port.o\r
+else\r
+  # Newlib\r
+  obj-y += newlib_port.o\r
+  # If we have configured console output we include printf. \r
+  # Overridden to use lib implementation with CFG_NEWLIB_PRINTF\r
+  ifneq ($(CFG_NEWLIB_PRINTF),y)\r
+    ifneq (,$(SELECT_CONSOLE) $(SELECT_OS_CONSOLE))\r
+      obj-y += printf.o\r
+    endif # SELECT_CONSOLE\r
+  endif # CFG_NEWLIB_PRINTF\r
+endif # SELECT_CLIB \r
+\r
 \r
 obj-y += $(obj-y-y)\r
 \r
@@ -283,3 +297,4 @@ VPATH += $(vpath-y)
 \r
 # libs needed by us\r
 #build-lib-y += $(ROOTDIR)/libs/libboard_$(BOARDDIR).a\r
+\r
index 86e0e5103ef2c7c7e616b9eec6f39e9f850a3054..0aa4f375a52106e1ad325bfdc3b27467e13cbd86 100644 (file)
@@ -31,7 +31,7 @@
 #define DEM_DEV_ERROR_DETECT                           STD_ON          // Activate/Deactivate Dev Error Detection and Notification.\r
 #define DEM_OBD_SUPPORT                                                STD_OFF\r
 #define DEM_PTO_SUPPORT                                                STD_OFF\r
-#define DEM_TYPE_OF_DTC_SUPPORTED                      DEM_ISO14229_1\r
+#define DEM_TYPE_OF_DTC_SUPPORTED                      0x01            // ISO14229-1\r
 #define DEM_DTC_STATUS_AVAILABILITY_MASK       0xFF\r
 #define DEM_CLEAR_ALL_EVENTS                           STD_OFF         // All event or only events with DTC is cleared with Dem_ClearDTC\r
 \r
index 781ff27652a40a8a552888ef59bb117bde29e8fe..1a6f40befd4941149b7b06626d73446b46a39a06 100644 (file)
@@ -28,8 +28,8 @@
  */\r
 #warning "This default file may only be used as an example!"\r
 \r
-#ifndef _DET_CFG_H_\r
-#define _DET_CFG_H_\r
+#ifndef DET_CFG_H\r
+#define DET_CFG_H\r
 \r
 #define DET_ENABLE_CALLBACKS STD_ON  // Enable to use callback on errors\r
 #define DET_USE_RAMLOG       STD_ON  // Enable to log DET errors to ramlog\r
@@ -41,4 +41,4 @@
 #define DET_RAMLOG_SIZE (32)        // Number of entries in ramlog\r
 #define DET_NUMBER_OF_CALLBACKS (5) // Number of callbacks\r
 \r
-#endif /*_DET_CFG_H_*/\r
+#endif /*DET_CFG_H*/\r
index 8ecccc1a417f1d421b0f9b13eb7c8f9f77aa21a6..ba9e63fc7e3ad49cade8a0d530e84db4589fe23d 100644 (file)
@@ -15,7 +15,8 @@
 \r
 #warning "This default file may only be used as an example!"
 
-#include "EcuM.h"\r
+#include "EcuM.h"
+#include "EcuM_Cbk.h"\r
 #include "Det.h"\r
 #if defined(USE_DEM)\r
 #include "Dem.h"\r
 #if defined(USE_LINSM)
 #include "LinSM.h"
 #endif
+#if defined(USE_WDG)
+#include "Wdg.h"
+#endif
+#if defined(USE_WDGM)
+#include "WdgM.h"
+#endif
+
 \r
-void EcuM_AL_DriverInitZero()\r
+void EcuM_AL_DriverInitZero(void)\r
 {\r
-       Det_Init();\r
-    Det_Start();\r
+       Det_Init();/** @req EcuM2783 */\r
+    Det_Start();/** @req EcuM2634 */\r
 }\r
 \r
-EcuM_ConfigType* EcuM_DeterminePbConfiguration()\r
+EcuM_ConfigType* EcuM_DeterminePbConfiguration(void)\r
 {\r
        return &EcuMConfig;\r
 }\r
-\r
+
 void EcuM_AL_DriverInitOne(const EcuM_ConfigType *ConfigPtr)\r
-{\r
+{
+  //lint --e{715}       PC-Lint (715) - ConfigPtr usage depends on configuration of modules\r
 #if defined(USE_MCU)\r
        Mcu_Init(ConfigPtr->McuConfig);\r
 \r
-       // Set up default clock (Mcu_InitClock requires initRun==1)\r
-       Mcu_InitClock( ConfigPtr->McuConfig->McuDefaultClockSettings );\r
+       /* Set up default clock (Mcu_InitClock requires initRun==1) */
+       /* Ignoring return value */\r
+       (void) Mcu_InitClock( ConfigPtr->McuConfig->McuDefaultClockSettings );\r
 \r
        // Wait for PLL to sync.\r
-       while (Mcu_GetPllStatus() != MCU_PLL_LOCKED)\r
-         ;\r
+       while (Mcu_GetPllStatus() != MCU_PLL_LOCKED)
+       {\r
+         ;
+       }\r
 #endif\r
 \r
 #if defined(USE_DEM)\r
@@ -122,7 +134,13 @@ void EcuM_AL_DriverInitOne(const EcuM_ConfigType *ConfigPtr)
 #endif\r
 \r
        // Setup watchdog\r
-       // TODO\r
+       #if defined(USE_WDG)
+       Wdg_Init(ConfigPtr->WdgConfig);
+#endif
+#if defined(USE_WDGM)
+       WdgM_Init(ConfigPtr->WdgMConfig);
+#endif
+\r
 \r
 #if defined(USE_DMA)\r
        // Setup DMA\r
@@ -145,7 +163,9 @@ void EcuM_AL_DriverInitOne(const EcuM_ConfigType *ConfigPtr)
 }\r
 \r
 void EcuM_AL_DriverInitTwo(const EcuM_ConfigType* ConfigPtr)\r
-{\r
+{
+  //lint --e{715}       PC-Lint (715) - ConfigPtr usage depends on configuration of modules
+\r
 #if defined(USE_SPI)\r
        // Setup SPI\r
        Spi_Init(ConfigPtr->SpiConfig);\r
@@ -231,11 +251,12 @@ void EcuM_AL_DriverInitTwo(const EcuM_ConfigType* ConfigPtr)
        // Setup IO hardware abstraction layer\r
        IoHwAb_Init();\r
 #endif\r
-\r
 }\r
 \r
-void EcuM_AL_DriverInitThree(const EcuM_ConfigType ConfigPtr)\r
-{\r
+void EcuM_AL_DriverInitThree(const EcuM_ConfigType* ConfigPtr)\r
+{
+  //lint --e{715}       PC-Lint (715) - ConfigPtr usage depends on configuration of modules
+\r
 #if defined(USE_DEM)\r
        // Setup DEM\r
        Dem_Init();\r
index 1d8215e01802b806840a33ab83e1a27980b70c9d..a9e1e19210b6a58ec2d21e0be6f721d63be476db 100644 (file)
@@ -20,7 +20,7 @@
 EcuM_ConfigType EcuMConfig =\r
 {\r
        .EcuMDefaultShutdownTarget = ECUM_STATE_RESET,\r
-       .EcuMDefaultShutdownMode = 0, // Don't care\r
+       .EcuMDefaultSleepMode = 0, // Don't care\r
        .EcuMDefaultAppMode = OSDEFAULTAPPMODE,\r
        .EcuMNvramReadAllTimeout = ECUM_NVRAM_READALL_TIMEOUT,
        .EcuMNvramWriteAllTimeout = ECUM_NVRAM_WRITEALL_TIMEOUT,
@@ -65,8 +65,14 @@ EcuM_ConfigType EcuMConfig =
 #if defined(USE_PWM)
         .PwmConfig = &PwmConfig,
 #endif
+#if defined(USE_WDG)
+    .WdgConfig = &WdgConfig,
+#endif
+#if defined(USE_WDGM)
+    .WdgMConfig = &WdgMConfig,
+#endif
 #if defined(USE_GPT)
-        .GptConfig = GptConfigData,
+    .GptConfig = GptConfigData,
 #endif
 #if defined(USE_FLS)
        .FlashConfig = FlsConfigSet,
index d917e80bc610882578e5efbd98c78f50086d2479..e6dd1f5e16f76cf3c1b27e038b8aac6ff25ffcc6 100644 (file)
@@ -15,7 +15,7 @@
 \r
 #warning "This default file may only be used as an example!"\r
 \r
-#if (ECUM_SW_MAJOR_VERSION != 2 && ECUM_SW_MINOR_VERSION != 0)\r
+#if ((ECUM_SW_MAJOR_VERSION != 2) && (ECUM_SW_MINOR_VERSION != 0))\r
 #error "EcuM: Configuration file version differs from BSW version."\r
 #endif\r
 \r
index 9f8156e2600b7aa970b1501dc6aa17df1ecf1185..de43b58220984b791c07cb6b56457361fdf78c46 100644 (file)
@@ -16,7 +16,7 @@
 
 #warning "This default file may only be used as an example!"
 
-#if (ECUM_SW_MAJOR_VERSION != 2 && ECUM_SW_MINOR_VERSION != 0)
+#if ((ECUM_SW_MAJOR_VERSION != 2) && (ECUM_SW_MINOR_VERSION != 0))
 #error "EcuM: Configuration file version differs from BSW version."
 #endif
 
 #if defined(USE_GPT)
 #include "Gpt.h"
 #endif
+#if defined(USE_WDG)
+#include "Wdg.h"
+#endif
+#if defined(USE_WDGM)
+#include "WdgM.h"
+#endif
 #if defined(USE_COMM)
 #include "ComM.h"
 #endif
@@ -73,7 +79,7 @@
 typedef struct\r
 {\r
        EcuM_StateType EcuMDefaultShutdownTarget;\r
-       uint8 EcuMDefaultShutdownMode;\r
+       uint8 EcuMDefaultSleepMode;\r
        AppModeType EcuMDefaultAppMode;\r
        uint32 EcuMRunMinimumDuration;
        uint32 EcuMNvramReadAllTimeout;
@@ -118,6 +124,12 @@ typedef struct
 #if defined(USE_ADC)
     const Adc_ConfigType* AdcConfig;
 #endif
+#if defined(USE_WDG)
+    const Wdg_ConfigType* WdgConfig;
+#endif
+#if defined(USE_WDGM)
+    const WdgM_ConfigType* WdgMConfig;
+#endif
 #if defined(USE_GPT)
     const Gpt_ConfigType* GptConfig;
 #endif
index 6305896d1040cc85ebc26a43c55675b5d1501a48..ce6f0d68bedff7031b7a8593a147cb41ccbca4b0 100644 (file)
@@ -11,7 +11,7 @@ CFG= BRD_LINUX
 \r
 # What buildable modules does this board have, \r
 # default or private\r
-MOD_AVAIL+=COM PDUR  DET DCM DEM COMM CANSM CANTP CANIF CANNM NM RTE FEE NVM\r
+MOD_AVAIL+=COM PDUR WDGM WDGIF DET DCM DEM COMM CANSM CANTP CANIF CANNM NM RTE FEE NVM ECUM MCU\r
 \r
 # Needed by us\r
 MOD_USE=\r
index f164be807bb1342a6e4885360e9ba9ac9403b93d..b175509c319771ea3acd8f278f7ba0b745277df5 100644 (file)
@@ -91,17 +91,6 @@ typedef enum {
 #define CANIF_TRANSCEIVER_API               STD_OFF  /**< Not supported */\r
 #define CANIF_TRANSMIT_CANCELLATION         STD_OFF  /**< Not supported */\r
 \r
-//-------------------------------------------------------------------\r
-\r
-typedef struct {\r
-       void (*CancelTxConfirmation)( void *);  // (const Can_PduType *);\r
-       void (*RxIndication)(void *); //(const Can_PduType *);\r
-       void (*ControllerBusOff)(uint8);\r
-       void (*ControllerWakeup)(uint8);\r
-       void (*Arc_Error)(uint8,uint32);\r
-} CanIf_CallbackType;\r
-\r
-\r
 \r
 //-------------------------------------------------------------------\r
 \r
index 2f00bd5ae0ebc32f2d60ea3b23e93c61dd9d7090..022fc1ae91ed51132f942d6e58595a5f61c57bbc 100644 (file)
@@ -23,8 +23,8 @@
 \r
 #warning "This default file may only be used as an example!"\r
 \r
-#ifndef _DET_CFG_H_\r
-#define _DET_CFG_H_\r
+#ifndef DET_CFG_H\r
+#define DET_CFG_H\r
 \r
 #define DET_ENABLE_CALLBACKS STD_ON  /**< Enable to use callback on errors */\r
 #define DET_USE_RAMLOG       STD_ON  /**< Enable to log DET errors to ramlog */\r
@@ -36,5 +36,5 @@
 #define DET_RAMLOG_SIZE (32)         /**< Number of entries in ramlog */\r
 #define DET_NUMBER_OF_CALLBACKS (5)  /**< Number of callbacks */\r
 \r
-#endif /*_DET_CFG_H_*/\r
+#endif /*DET_CFG_H*/\r
 /** @} */\r
index 2545637d435c30e37237aa36c73a4cba16eb80b7..dfb9233940756387cad11ce421778838286a28b5 100644 (file)
@@ -140,6 +140,9 @@ typedef struct {
   // This parameter is the number of bytes written within one job processing cycle in fast mode\r
   Eep_LengthType EepFastWriteBlockSize;\r
 \r
+  // This parameter is the EEPROM page size, i.e. number of bytes.
+  Eep_LengthType EepPageSize;
+
   // This parameter is the EEPROM device base address.\r
   Eep_AddressType EepBaseAddress;\r
 } Eep_ConfigType;\r
index 713c7b0a52fe3af4bc95f0ab45a5669bc3063352..19af72dc6f33b17e4afc4c55ae9ab159f1ec86b8 100644 (file)
@@ -27,7 +27,6 @@
 #include "Spi.h"\r
 #include "Spi_Cfg.h"\r
 \r
-//#define USE_TRACE 1\r
 //#define USE_LDEBUG_PRINTF    1\r
 #undef DEBUG_LVL\r
 #define DEBUG_LVL DEBUG_LOW\r
@@ -76,7 +75,8 @@ const Eep_ConfigType EepConfigData[] = {
     .EepJobCallCycle = 0.2,\r
 \r
     // This parameter is the used size of EEPROM device in bytes.\r
-    .EepSize = 0x8000,\r
+//    .EepSize = 0x8000,\r
+    .EepSize = 0x2000,\r
 \r
     // This parameter is a reference to a callback function for positive job result\r
     .Eep_JobEndNotification = &_JobEndNotify,\r
@@ -84,19 +84,23 @@ const Eep_ConfigType EepConfigData[] = {
     // This parameter is the default EEPROM device mode after initialization.\r
     .EepDefaultMode = MEMIF_MODE_FAST,\r
 \r
+    // Number of bytes read within one job processing cycle in normal mode.
+    .EepNormalReadBlockSize = 4,
+
     // This parameter is the number of bytes read within one job processing cycle in fast mode\r
     .EepFastReadBlockSize = 64,\r
 \r
-    .EepNormalReadBlockSize = 4,\r
-\r
     // Number of bytes written within one job processing cycle in normal mode.\r
     .EepNormalWriteBlockSize = 1,\r
 \r
+    // This parameter is the number of bytes written within one job processing cycle in fast mode
+    .EepFastWriteBlockSize = 64,
+
     // This parameter is a reference to a callback function for negative job result\r
     .Eep_JobErrorNotification = &_JobErrorNotify,\r
 \r
-    // This parameter is the number of bytes written within one job processing cycle in fast mode\r
-    .EepFastWriteBlockSize = 64,\r
+    // This parameter is the EEPROM page size, i.e. number of bytes.
+    .EepPageSize = 64,
 \r
     // This parameter is the EEPROM device base address.\r
     .EepBaseAddress =  0\r
index 04b537d93a5ee48ec14d66b8040dac86b21e7022..2c99dcb2737a5275256ce4bd177ed1af3a5fc0e6 100644 (file)
@@ -27,7 +27,6 @@
 #include "Spi.h"\r
 #include "Spi_Cfg.h"\r
 \r
-//#define USE_TRACE 1\r
 //#define USE_LDEBUG_PRINTF    1\r
 #undef DEBUG_LVL\r
 #define DEBUG_LVL DEBUG_LOW\r
index 5b25a91423d8eef7a1c857cb645cf54a4c2a4dca..eb8433fb9db73958510d7de7aadc20128015fae0 100644 (file)
@@ -87,17 +87,6 @@ typedef enum {
 #define CANIF_TRANSCEIVER_API             STD_OFF  // Not supported\r
 #define CANIF_TRANSMIT_CANCELLATION       STD_OFF  // Not supported\r
 \r
-//-------------------------------------------------------------------\r
-\r
-typedef struct {\r
-       void (*CancelTxConfirmation)( void *);  // (const Can_PduType *);\r
-       void (*RxIndication)(void *); //(const Can_PduType *);\r
-       void (*ControllerBusOff)(uint8);\r
-       void (*ControllerWakeup)(uint8);\r
-       void (*Arc_Error)(uint8,uint32);\r
-} CanIf_CallbackType;\r
-\r
-\r
 \r
 //-------------------------------------------------------------------\r
 /*\r
index 781ff27652a40a8a552888ef59bb117bde29e8fe..1a6f40befd4941149b7b06626d73446b46a39a06 100644 (file)
@@ -28,8 +28,8 @@
  */\r
 #warning "This default file may only be used as an example!"\r
 \r
-#ifndef _DET_CFG_H_\r
-#define _DET_CFG_H_\r
+#ifndef DET_CFG_H\r
+#define DET_CFG_H\r
 \r
 #define DET_ENABLE_CALLBACKS STD_ON  // Enable to use callback on errors\r
 #define DET_USE_RAMLOG       STD_ON  // Enable to log DET errors to ramlog\r
@@ -41,4 +41,4 @@
 #define DET_RAMLOG_SIZE (32)        // Number of entries in ramlog\r
 #define DET_NUMBER_OF_CALLBACKS (5) // Number of callbacks\r
 \r
-#endif /*_DET_CFG_H_*/\r
+#endif /*DET_CFG_H*/\r
index 9d5f663521125a88067683c08f9ee3dbbe1b9a15..6c164670a7aadc03637952a9a2ae0ff99dee4c2e 100644 (file)
@@ -5,7 +5,7 @@ ARCH_FAM=ppc
 ARCH_MCU=mpc5554\r
 \r
 # CFG (y/n) macros\r
-CFG=PPC BOOKE SPE E200Z6 MPC55XX MPC5554 BRD_MPC5554SIM SIMULATOR\r
+CFG=PPC BOOKE SPE E200Z6 MPC55XX MPC555X MPC5554 BRD_MPC5554SIM SIMULATOR\r
 \r
 # What buildable modules does this board have, \r
 # default or private\r
index 781ff27652a40a8a552888ef59bb117bde29e8fe..1a6f40befd4941149b7b06626d73446b46a39a06 100644 (file)
@@ -28,8 +28,8 @@
  */\r
 #warning "This default file may only be used as an example!"\r
 \r
-#ifndef _DET_CFG_H_\r
-#define _DET_CFG_H_\r
+#ifndef DET_CFG_H\r
+#define DET_CFG_H\r
 \r
 #define DET_ENABLE_CALLBACKS STD_ON  // Enable to use callback on errors\r
 #define DET_USE_RAMLOG       STD_ON  // Enable to log DET errors to ramlog\r
@@ -41,4 +41,4 @@
 #define DET_RAMLOG_SIZE (32)        // Number of entries in ramlog\r
 #define DET_NUMBER_OF_CALLBACKS (5) // Number of callbacks\r
 \r
-#endif /*_DET_CFG_H_*/\r
+#endif /*DET_CFG_H*/\r
index 5b25a91423d8eef7a1c857cb645cf54a4c2a4dca..2542beb529cb9b6d23a5acbe4491c56837214923 100644 (file)
@@ -87,18 +87,6 @@ typedef enum {
 #define CANIF_TRANSCEIVER_API             STD_OFF  // Not supported\r
 #define CANIF_TRANSMIT_CANCELLATION       STD_OFF  // Not supported\r
 \r
-//-------------------------------------------------------------------\r
-\r
-typedef struct {\r
-       void (*CancelTxConfirmation)( void *);  // (const Can_PduType *);\r
-       void (*RxIndication)(void *); //(const Can_PduType *);\r
-       void (*ControllerBusOff)(uint8);\r
-       void (*ControllerWakeup)(uint8);\r
-       void (*Arc_Error)(uint8,uint32);\r
-} CanIf_CallbackType;\r
-\r
-\r
-\r
 //-------------------------------------------------------------------\r
 /*\r
  * CanIfHrhRangeConfig container\r
index 28c5761e15c98d57f2447816500834036a68da4c..6e3399845195cc71c424177215d5f58aa7915163 100644 (file)
@@ -28,8 +28,8 @@
  * Specification: Autosar v2.0.1, Final\r
  *\r
  */\r
-#ifndef _DET_CFG_H_\r
-#define _DET_CFG_H_\r
+#ifndef DET_CFG_H\r
+#define DET_CFG_H\r
 \r
 #define DET_ENABLE_CALLBACKS STD_ON  // Enable to use callback on errors\r
 #define DET_USE_RAMLOG       STD_ON  // Enable to log DET errors to ramlog\r
@@ -41,4 +41,4 @@
 #define DET_RAMLOG_SIZE (32)        // Number of entries in ramlog\r
 #define DET_NUMBER_OF_CALLBACKS (5) // Number of callbacks\r
 \r
-#endif /*_DET_CFG_H_*/\r
+#endif /*DET_CFG_H*/\r
index 713c7b0a52fe3af4bc95f0ab45a5669bc3063352..e61ff4435ef123093892628e2465fc8b56d23b6a 100644 (file)
@@ -27,7 +27,6 @@
 #include "Spi.h"\r
 #include "Spi_Cfg.h"\r
 \r
-//#define USE_TRACE 1\r
 //#define USE_LDEBUG_PRINTF    1\r
 #undef DEBUG_LVL\r
 #define DEBUG_LVL DEBUG_LOW\r
index 04b537d93a5ee48ec14d66b8040dac86b21e7022..2c99dcb2737a5275256ce4bd177ed1af3a5fc0e6 100644 (file)
@@ -27,7 +27,6 @@
 #include "Spi.h"\r
 #include "Spi_Cfg.h"\r
 \r
-//#define USE_TRACE 1\r
 //#define USE_LDEBUG_PRINTF    1\r
 #undef DEBUG_LVL\r
 #define DEBUG_LVL DEBUG_LOW\r
index 3fa73430a4b51f0542da8abb732419a42c7ed0b0..1f4d644aef8607a97e0d1e8a1c6141560a02efd2 100644 (file)
@@ -25,7 +25,7 @@ CFG+=STM32_MD
 # What buildable modules does this board have, \r
 # default or private\r
 \r
-MOD_AVAIL+=ADC CAN DIO MCU FLS PORT PWM GPT     \r
+MOD_AVAIL+=ADC CAN DIO MCU FLS PORT PWM GPT WDG    \r
 # System + Communication + Diagnostic\r
 MOD_AVAIL+=CANIF CANTP COM DCM DEM DET ECUM IOHWAB KERNEL PDUR WDGM RTE\r
 # Additional\r
index d3bd2126ceb5b44d2d027357ba0b6fce654fe9f7..13659cab5923bd898d7b6d54119804d61433e485 100644 (file)
@@ -18,6 +18,8 @@
  *  Created on: 2009-okt-02\r
  *      Author: Fredrik\r
  */\r
+#warning "This default file may only be used as an example!"\r
+\r
 #ifndef ADC_CFG_H_\r
 #define ADC_CFG_H_\r
 \r
index 0379abb6cef59e4d6099cb77fee70b66bf0b8172..c208c56e85d3b5fd08e1ac3bfbfe72ad43983413 100644 (file)
@@ -18,6 +18,8 @@
 #endif
 
 \r
+#warning "This default file may only be used as an example!"
+
 #ifndef CAN_CFG_H_\r
 #define CAN_CFG_H_\r
 \r
index aa01df9b71d3467ba4c6b9485f2447a917c062b3..0b9a2882f5a51880d6c19ad423aa1b2aca7d4362 100644 (file)
  * for more details.\r
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
+\r
+\r
+#warning "This default file may only be used as an example!"\r
+\r
 #ifndef DIO_CFG_H_\r
 #define DIO_CFG_H_\r
 \r
@@ -146,23 +150,24 @@ typedef enum {
        DIO_PORT_F,\r
 } Dio_Hw_PortType;\r
 \r
-#define LED_CHANNEL1 (DIO_CHANNEL_B13)\r
-#define LED_CHANNEL2 (DIO_CHANNEL_B14)\r
+// Channels\r
+#define DIO_CHANNEL_NAME_LED_CHANNEL1 (DIO_CHANNEL_B13)\r
+#define DIO_CHANNEL_NAME_LED_CHANNEL2 (DIO_CHANNEL_B14)\r
 \r
-#define LED_PORT               (DIO_PORT_B)\r
+// Channel group\r
+#define DIO_GROUP_NAME_LED_GROUP                       (&DioConfigData[0])\r
 \r
-#define LED_GROUP                      (&DioConfigData[0])\r
+// Ports\r
+#define DIO_PORT_NAME_LED_PORT                 (DIO_PORT_B)\r
 \r
+\r
+\r
+// Pointers for convenience.\r
 // Channels\r
 extern const Dio_ChannelType DioChannelConfigData[];\r
-#define CHANNEL_PTR            (&DioChannelConfigData)\r
-\r
 // Port\r
 extern const Dio_PortType DioPortConfigData[];\r
-#define PORT_PTR               (&DioPortConfigData)\r
-\r
 // Channel group\r
 extern const Dio_ChannelGroupType DioConfigData[];\r
-#define CHANNEL_GRP_PTR        (&DioConfigData)\r
 \r
 #endif /* DIO_CFG_H_ */\r
index e1a57d7f1e4f1d218edb5eb101ba0725d42260c1..93d15d05bf3b31b9faf47d1d3c123cbe805506b5 100644 (file)
 \r
 const Dio_ChannelType DioChannelConfigData[] =\r
 {\r
-       LED_CHANNEL1,\r
-       LED_CHANNEL2,\r
+               DIO_CHANNEL_NAME_LED_CHANNEL1,\r
+               DIO_CHANNEL_NAME_LED_CHANNEL2,\r
        DIO_END_OF_LIST,\r
 };\r
 \r
 const Dio_PortType DioPortConfigData[] =\r
 {\r
-       LED_PORT,\r
+               DIO_PORT_NAME_LED_PORT,\r
        DIO_END_OF_LIST\r
 };\r
 \r
index b0b91839bf5084a36d64954fc6c807250fbd12e2..1251a1b5ac42af332f06da4aded853552f32ed20 100644 (file)
@@ -13,6 +13,8 @@
  * for more details.\r
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
+#warning "This default file may only be used as an example!"\r
+\r
 #ifndef FLS_CFG_H_\r
 #define FLS_CFG_H_\r
 \r
index a36a1d4b256bb3f3b0aa27b350e7bf20d3dc4df3..b562105eed06e3d99b5479566aab64cbc259d237 100644 (file)
@@ -20,6 +20,8 @@
  *  Definitions of configuration parameters for GPT Driver.\r
  */\r
 \r
+#warning "This default file may only be used as an example!"\r
+\r
 #ifndef GPT_CFG_H_\r
 #define GPT_CFG_H_\r
 #include "Std_Types.h"\r
index 4375374b77bcae71fd56fd810d680395fd34bfd6..124af0426fbbe0be30bb0817310fcc6af2217c91 100644 (file)
@@ -40,7 +40,7 @@ const Mcu_PerClockConfigType McuPerClockConfigData =
                                                 RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO),
 };
 \r
-const Mcu_ClockSettingConfigType Mcu_ClockSettingConfigData[] =\r
+Mcu_ClockSettingConfigType Mcu_ClockSettingConfigData[] =\r
 {\r
   {\r
     .McuClockReferencePointFrequency = 8000000UL,\r
@@ -51,7 +51,7 @@ const Mcu_ClockSettingConfigType Mcu_ClockSettingConfigData[] =
 };\r
 \r
 \r
- const Mcu_ConfigType McuConfigData[] = {\r
+const Mcu_ConfigType McuConfigData[] = {\r
   {\r
   //  Enables/Disables clock failure notification. In case this feature is not supported\r
   //  by HW the setting should be disabled.\r
index 17c6022497501287be70608f90b108bf74298671..e3eae0589842b1cfc52238e417ec6d2229b5f97d 100644 (file)
@@ -14,6 +14,8 @@
  * -------------------------------- Arctic Core ------------------------------*/
 
 
+#warning "This default file may only be used as an example!"
+
 #ifndef MCU_CFG_H_\r
 #define MCU_CFG_H_\r
 \r
index 75753d3cf34ffbc1b66e3470cfa6d2cfec2c913c..d4342eb596791abfb58e7112bef1de04695d9f8c 100644 (file)
@@ -20,6 +20,8 @@
  *  Definitions of configuration parameters for Port Driver.
  */
 
+#warning "This default file may only be used as an example!"
+
 #ifndef PORT_CFG_H_\r
 #define PORT_CFG_H_\r
 \r
index e48f8028e17e326efbb3396dff6489d738607f06..a13c9155af50599fccd7ada95993c67f21019371 100644 (file)
@@ -19,6 +19,8 @@
  *  Created on: 2009-okt-02\r
  *      Author: jonte\r
  */\r
+#warning "This default file may only be used as an example!"\r
+\r
 #ifndef PWM_CFG_H_\r
 #define PWM_CFG_H_\r
 \r
index d3bd2126ceb5b44d2d027357ba0b6fce654fe9f7..13659cab5923bd898d7b6d54119804d61433e485 100644 (file)
@@ -18,6 +18,8 @@
  *  Created on: 2009-okt-02\r
  *      Author: Fredrik\r
  */\r
+#warning "This default file may only be used as an example!"\r
+\r
 #ifndef ADC_CFG_H_\r
 #define ADC_CFG_H_\r
 \r
index 0379abb6cef59e4d6099cb77fee70b66bf0b8172..c208c56e85d3b5fd08e1ac3bfbfe72ad43983413 100644 (file)
@@ -18,6 +18,8 @@
 #endif
 
 \r
+#warning "This default file may only be used as an example!"
+
 #ifndef CAN_CFG_H_\r
 #define CAN_CFG_H_\r
 \r
index efe9d84e9dfed2352957749bba00338502fc3cba..532b63914151be54dd8036dc837a40d13f39a462 100644 (file)
@@ -13,6 +13,9 @@
  * for more details.\r
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
+\r
+#warning "This default file may only be used as an example!"\r
+\r
 #ifndef DIO_CFG_H_\r
 #define DIO_CFG_H_\r
 \r
@@ -146,25 +149,28 @@ typedef enum {
        DIO_PORT_F,\r
 } Dio_Hw_PortType;\r
 \r
-#define LED_CHANNEL1 (DIO_CHANNEL_D7)\r
-#define LED_CHANNEL2 (DIO_CHANNEL_D13)\r
-#define LED_CHANNEL3 (DIO_CHANNEL_D3)\r
-#define LED_CHANNEL4 (DIO_CHANNEL_D4)\r
+// Channels\r
+#define DIO_CHANNEL_NAME_LED_CHANNEL1 (DIO_CHANNEL_D7)\r
+#define DIO_CHANNEL_NAME_LED_CHANNEL2 (DIO_CHANNEL_D13)\r
+#define DIO_CHANNEL_NAME_LED_CHANNEL3 (DIO_CHANNEL_D3)\r
+#define DIO_CHANNEL_NAME_LED_CHANNEL4 (DIO_CHANNEL_D4)\r
 \r
-#define LED_PORT               (DIO_PORT_D)\r
+// Channel group\r
+#define DIO_GROUP_NAME_LED_GROUP                       (&DioConfigData[0])\r
 \r
-#define LED_GROUP                      (&DioConfigData[0])\r
+// Ports\r
+#define DIO_PORT_NAME_LED_PORT                 (DIO_PORT_D)\r
 \r
 // Channels\r
 extern const Dio_ChannelType DioChannelConfigData[];\r
-#define CHANNEL_PTR            (&DioChannelConfigData)\r
 \r
+\r
+\r
+// Pointers for convenience.\r
 // Port\r
 extern const Dio_PortType DioPortConfigData[];\r
-#define PORT_PTR               (&DioPortConfigData)\r
 \r
 // Channel group\r
 extern const Dio_ChannelGroupType DioConfigData[];\r
-#define CHANNEL_GRP_PTR        (&DioConfigData)\r
 \r
 #endif /* DIO_CFG_H_ */\r
index acb3db1382c639df6cfbbacce665204684c93be4..00d7cacc86f38119eafc7dcae978c5d951ef948e 100644 (file)
 \r
 const Dio_ChannelType DioChannelConfigData[] =\r
 {\r
-       LED_CHANNEL1,\r
-       LED_CHANNEL2,\r
-       LED_CHANNEL3,\r
-       LED_CHANNEL4,\r
+       DIO_CHANNEL_NAME_LED_CHANNEL1,\r
+       DIO_CHANNEL_NAME_LED_CHANNEL2,\r
+       DIO_CHANNEL_NAME_LED_CHANNEL3,\r
+       DIO_CHANNEL_NAME_LED_CHANNEL4,\r
        DIO_END_OF_LIST,\r
 };\r
 \r
 const Dio_PortType DioPortConfigData[] =\r
 {\r
-       LED_PORT,\r
+               DIO_PORT_NAME_LED_PORT,\r
        DIO_END_OF_LIST\r
 };\r
 \r
index b0b91839bf5084a36d64954fc6c807250fbd12e2..1251a1b5ac42af332f06da4aded853552f32ed20 100644 (file)
@@ -13,6 +13,8 @@
  * for more details.\r
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
+#warning "This default file may only be used as an example!"\r
+\r
 #ifndef FLS_CFG_H_\r
 #define FLS_CFG_H_\r
 \r
index a36a1d4b256bb3f3b0aa27b350e7bf20d3dc4df3..b562105eed06e3d99b5479566aab64cbc259d237 100644 (file)
@@ -20,6 +20,8 @@
  *  Definitions of configuration parameters for GPT Driver.\r
  */\r
 \r
+#warning "This default file may only be used as an example!"\r
+\r
 #ifndef GPT_CFG_H_\r
 #define GPT_CFG_H_\r
 #include "Std_Types.h"\r
index 10b1e64b3c88a6ee4cb54aa247cb88cfc4d14761..1beaf269def261f171cd203d60389032b4e9877c 100644 (file)
@@ -14,6 +14,8 @@
  * -------------------------------- Arctic Core ------------------------------*/
 
 
+#warning "This default file may only be used as an example!"
+
 #ifndef MCU_CFG_H_\r
 #define MCU_CFG_H_\r
 \r
index e866942a7e7e0e91d4c165e1996810ca8e7ca308..2d5d2a98d0a3a1c34f3535d717e7bc4aa368fd4a 100644 (file)
@@ -20,6 +20,8 @@
  *  Definitions of configuration parameters for Port Driver.
  */
 
+#warning "This default file may only be used as an example!"
+
 #ifndef PORT_CFG_H_\r
 #define PORT_CFG_H_\r
 \r
index e48f8028e17e326efbb3396dff6489d738607f06..a13c9155af50599fccd7ada95993c67f21019371 100644 (file)
@@ -19,6 +19,8 @@
  *  Created on: 2009-okt-02\r
  *      Author: jonte\r
  */\r
+#warning "This default file may only be used as an example!"\r
+\r
 #ifndef PWM_CFG_H_\r
 #define PWM_CFG_H_\r
 \r
index 0d1aa275d05385656fa8ca1c0866840930cbf9cb..9c3ffd6a0a98a34d93c98cca64acc462812a3300 100644 (file)
@@ -27,7 +27,7 @@ CFG+=STM32_CL
 \r
 MOD_AVAIL+=MCU\r
 # System + Communication + Diagnostic\r
-MOD_AVAIL+=CANIF CANTP COM DCM DEM DET ECUM IOHWAB KERNEL PDUR WDGM RTE CAN\r
+MOD_AVAIL+=CANIF CANTP COM DCM DEM DET ECUM IOHWAB KERNEL PDUR WDGM RTE CAN PORT DIO\r
 # Additional\r
 MOD_AVAIL+=RAMLOG \r
 \r
diff --git a/boards/ti_tms570ls/config/Dio_Cfg.h b/boards/ti_tms570ls/config/Dio_Cfg.h
new file mode 100644 (file)
index 0000000..f4ed129
--- /dev/null
@@ -0,0 +1,57 @@
+/*\r
+ * Configuration of module Dio (Dio_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): TMS570\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.0\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Dec 10 11:45:13 CET 2010\r
+ */\r
+\r
+
+#if (DIO_SW_MAJOR_VERSION != 1) 
+#error "Dio: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef DIO_CFG_H_\r
+#define DIO_CFG_H_\r
+#include "Port.h"\r
+\r
+#define DIO_VERSION_INFO_API    STD_ON\r
+#define DIO_DEV_ERROR_DETECT    STD_ON\r
+\r
+#define DIO_END_OF_LIST  -1\r
+\r
+// Physical ports\r
+typedef enum\r
+{\r
+  DIO_PORT_A = 0,\r
+  DIO_PORT_B = 1,\r
+} Dio_PortTypesType;\r
+\r
+\r
+// Channels    \r
+#define DIO_CHANNEL_NAME_DioChannel_1  PORT_PAD_3\r
+\r
+// Channel group\r
+\r
+// Ports\r
+#define DIO_PORT_NAME_DioPort_1                (DIO_PORT_A)\r
+\r
+\r
+\r
+\r
+// Pointers for convenience.\r
+// Channels    \r
+extern const Dio_ChannelType DioChannelConfigData[];\r
+// Channel group\r
+extern const Dio_ChannelGroupType DioConfigData[];\r
+// Port\r
+extern const Dio_PortType DioPortConfigData[];\r
+\r
+#endif /*DIO_CFG_H_*/\r
diff --git a/boards/ti_tms570ls/config/Dio_Lcfg.c b/boards/ti_tms570ls/config/Dio_Lcfg.c
new file mode 100644 (file)
index 0000000..64d069b
--- /dev/null
@@ -0,0 +1,42 @@
+/*\r
+ * Configuration of module Dio (Dio_Lcfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): TMS570\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.0\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Dec 10 11:45:13 CET 2010\r
+ */\r
+\r
+\r
+       \r
+#include "Dio.h"\r
+#include "Dio_Cfg.h"\r
+\r
+const Dio_ChannelType DioChannelConfigData[] = { \r
+       DIO_CHANNEL_NAME_DioChannel_1,\r
+       DIO_END_OF_LIST\r
+};\r
+\r
+const Dio_PortType DioPortConfigData[] = { \r
+       DIO_PORT_NAME_DioPort_1,  \r
+       DIO_END_OF_LIST\r
+};\r
+\r
+const Dio_ChannelGroupType DioConfigData[] = {\r
+       { \r
+         .port = DIO_END_OF_LIST, \r
+         .offset = DIO_END_OF_LIST, \r
+         .mask = DIO_END_OF_LIST, \r
+       }\r
+};\r
+\r
+\r
+uint32 Dio_GetPortConfigSize(void)\r
+{\r
+  return sizeof(DioConfigData);\r
+}\r
diff --git a/boards/ti_tms570ls/config/Port_Cfg.c b/boards/ti_tms570ls/config/Port_Cfg.c
new file mode 100644 (file)
index 0000000..a1568e3
--- /dev/null
@@ -0,0 +1,65 @@
+/*\r
+ * Configuration of module Port (Port_Cfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): TMS570\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Dec 10 11:45:10 CET 2010\r
+ */\r
+\r
+       \r
+\r
+#include "Port.h"\r
+\r
+\r
+\r
+const Port_ConfigType PortConfigData =\r
+{\r
+    .pins = {\r
+       {\r
+                       .pin = PORT_PIN_DCAN1_TX,\r
+                       .conf = ( PORT_PIN_OUT | PORT_FUNC | PORT_PULL_NONE ),\r
+               },                       \r
+       {\r
+                       .pin = PORT_PIN_DCAN1_RX,\r
+                       .conf = ( PORT_PIN_IN | PORT_FUNC | PORT_PULL_NONE ),\r
+               },                       \r
+       {\r
+                       .pin = PORT_PIN_DCAN2_TX,\r
+                       .conf = ( PORT_PIN_OUT | PORT_FUNC | PORT_PULL_NONE ),\r
+               },                       \r
+       {\r
+                       .pin = PORT_PIN_DCAN2_RX,\r
+                       .conf = ( PORT_PIN_IN | PORT_FUNC | PORT_PULL_NONE ),\r
+               },                       \r
+       {\r
+                       .pin = PORT_PIN_DCAN3_TX,\r
+                       .conf = ( PORT_PIN_OUT | PORT_FUNC | PORT_PULL_NONE ),\r
+               },                       \r
+       {\r
+                       .pin = PORT_PIN_DCAN3_RX,\r
+                       .conf = ( PORT_PIN_IN | PORT_FUNC | PORT_PULL_NONE ),\r
+               },                       \r
+       {\r
+                       .pin = PORT_PIN_GIOA0,\r
+                       .conf = ( PORT_PIN_OUT | PORT_FUNC_NO | PORT_PULL_NONE ),\r
+               },                       \r
+       {\r
+                       .pin = PORT_PIN_GIOA3,\r
+                       .conf = ( PORT_PIN_OUT | PORT_FUNC_NO | PORT_PULL_NONE ),\r
+               },                       \r
+       {\r
+                       .pin = PORT_PIN_GIOA4,\r
+                       .conf = ( PORT_PIN_OUT | PORT_FUNC_NO | PORT_PULL_NONE ),\r
+               },                       \r
+       {\r
+                       .pin = PORT_PIN_GIOA5,\r
+                       .conf = ( PORT_PIN_OUT | PORT_FUNC_NO | PORT_PULL_NONE ),\r
+               },                        \r
+    }\r
+};\r
diff --git a/boards/ti_tms570ls/config/Port_Cfg.h b/boards/ti_tms570ls/config/Port_Cfg.h
new file mode 100644 (file)
index 0000000..5872200
--- /dev/null
@@ -0,0 +1,90 @@
+/*\r
+ * Configuration of module Port (Port_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): TMS570\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Dec 10 11:45:10 CET 2010\r
+ */\r
+\r
+
+#if (PORT_SW_MAJOR_VERSION != 1) 
+#error "Port: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef PORT_CFG_H_\r
+#define PORT_CFG_H_\r
+\r
+#include "Std_Types.h"\r
+\r
+\r
+/** Build version info API */\r
+#define PORT_VERSION_INFO_API                          STD_ON\r
+/** Enable Development Error Trace */\r
+#define PORT_DEV_ERROR_DETECT                          STD_ON\r
+/** Build change pin direction API */\r
+#define PORT_SET_PIN_DIRECTION_API             STD_ON\r
+/** Allow Pin mode changes during runtime */\r
+#define PORT_SET_PIN_MODE_API               STD_ON\r
+\r
+#define PORT_NUMBER_OF_PINS    10\r
+\r
+#define PORT_FUNC              (1 << 1)\r
+#define PORT_FUNC_NO   (0 << 1)\r
+#define PORT_PULL_NONE (1 << 2)\r
+#define PORT_PULL_UP   (1 << 3)\r
+#define PORT_PULL_DOWN (0 << 3)\r
+#define PORT_ODE_ENABLE        (1 << 4)\r
+#define PORT_DIRECTION_CHANGEABLE (1 << 5)\r
+\r
+/** HW specific symbolic names of pins */\r
+/** @req PORT013 */\r
+typedef enum\r
+{\r
+       PORT_PIN_DCAN1_TX = 0x0800,\r
+       PORT_PIN_DCAN1_RX = 0x0801,\r
+       PORT_PIN_DCAN2_TX = 0x0900,\r
+       PORT_PIN_DCAN2_RX = 0x0901,\r
+       PORT_PIN_DCAN3_TX = 0x0a00,\r
+       PORT_PIN_DCAN3_RX = 0x0a01,\r
+       PORT_PIN_GIOA0 = 0x0000,\r
+       PORT_PIN_GIOA3 = 0x0003,\r
+       PORT_PIN_GIOA4 = 0x0004,\r
+       PORT_PIN_GIOA5 = 0x0005,  \r
+} Port_PinType;\r
+\r
+/** Port pad mappings */\r
+#define        PORT_PAD_106    0x0800 // PORT_PIN_DCAN1_TX\r
+#define        PORT_PAD_107    0x0801 // PORT_PIN_DCAN1_RX\r
+#define        PORT_PAD_108    0x0900 // PORT_PIN_DCAN2_TX\r
+#define        PORT_PAD_109    0x0901 // PORT_PIN_DCAN2_RX\r
+#define        PORT_PAD_110    0x0a00 // PORT_PIN_DCAN3_TX\r
+#define        PORT_PAD_111    0x0a01 // PORT_PIN_DCAN3_RX\r
+#define        PORT_PAD_0      0x0000 // PORT_PIN_GIOA0\r
+#define        PORT_PAD_3      0x0003 // PORT_PIN_GIOA3\r
+#define        PORT_PAD_4      0x0004 // PORT_PIN_GIOA4\r
+#define        PORT_PAD_5      0x0005 // PORT_PIN_GIOA5\r
+\r
+typedef struct {\r
+       Port_PinType pin;\r
+       uint8 conf;\r
+} Port_ConfiguredPinType;\r
+\r
+/** Top level configuration container */\r
+/** @req PORT073 */\r
+typedef struct\r
+{\r
+  const Port_ConfiguredPinType pins[PORT_NUMBER_OF_PINS];\r
+} Port_ConfigType;\r
+\r
+/** Instance of the top level configuration container */\r
+extern const Port_ConfigType PortConfigData;\r
+\r
+\r
+#endif /*PORT_CFG_H_*/\r
diff --git a/common/msl_port.c b/common/msl_port.c
new file mode 100644 (file)
index 0000000..4bf3dbc
--- /dev/null
@@ -0,0 +1,62 @@
+/*\r
+ * msl_port.c\r
+ *\r
+ *  Created on: 14 feb 2011\r
+ *      Author: mahi\r
+ */\r
+\r
+/*\r
+Methods called by MW MSL libraries to perform console IO:\r
+*/\r
+\r
+\r
+int  InitializeUART(void)\r
+{\r
+       return 0;\r
+}\r
+\r
+int ReadUARTN( char* buf, int cnt )\r
+{\r
+       (void)buf;\r
+       (void)cnt;\r
+       return 0;\r
+}\r
+\r
+int WriteUARTN( char* buf, int cnt )\r
+{\r
+       (void)buf;\r
+       (void)cnt;\r
+       return 0;\r
+}\r
+\r
+\r
+#if 0\r
+void __init_hardware(void)\r
+{\r
+}\r
+\r
+\r
+void __flush_cache(register void *address, register unsigned int size)\r
+{\r
+       (void)address;\r
+       (void)size;\r
+\r
+}\r
+\r
+void __init_user(void)\r
+{\r
+\r
+}\r
+#endif\r
+\r
+\r
+void exit(int exit ) {\r
+       (void)exit;\r
+}\r
+\r
+\r
+void *sbrk(int inc )\r
+{\r
+       /* We use our own malloc */\r
+       return (void *)(-1);\r
+}\r
index 002128fac5cecae02c06eba7d6abfd4e0339250e..913e1077046c7fa29191a9b1bd0fd2ea052fcfaf 100644 (file)
@@ -450,8 +450,27 @@ int arc_putchar(int fd, int c) {
 \r
 /* If we use malloc and it runs out of memory it calls sbrk()\r
  */\r
-#if 1\r
 \r
+#if defined(PPC)\r
+\r
+/* linker symbols */\r
+extern char _heap_start;\r
+extern char _heap_end;         // same as _end?\r
+\r
+void * sbrk( ptrdiff_t incr )\r
+{\r
+    char *prevEnd;\r
+    static char *nextAvailMemPtr = (char *)&_heap_start;\r
+\r
+    if( nextAvailMemPtr + incr >  (char*)&_heap_end) {\r
+               write( 2, "Heap overflow!\n", 15 );\r
+               abort();\r
+       }\r
+    prevEnd = nextAvailMemPtr;\r
+    nextAvailMemPtr += incr;\r
+    return prevEnd;\r
+}\r
+#else\r
 extern char _end[];\r
 \r
 //static char *curbrk = _end;\r
@@ -475,10 +494,10 @@ void * sbrk( ptrdiff_t incr )
     unsigned char *prev_heap_end;\r
 \r
 /* initialize */\r
-    if( heap_end == 0 )\r
+    if( heap_end == 0 ){\r
        heap_end = _heap;\r
-\r
-       prev_heap_end = heap_end;\r
+    }\r
+    prev_heap_end = heap_end;\r
 \r
        if( heap_end + incr - _heap > HEAPSIZE ) {\r
        /* heap overflow - announce on stderr */\r
@@ -490,12 +509,6 @@ void * sbrk( ptrdiff_t incr )
 \r
    return (caddr_t) prev_heap_end;\r
 }\r
-#else\r
-void *sbrk(int inc )\r
-{\r
-       /* We use our own malloc */\r
-       return (void *)(-1);\r
-}\r
 #endif\r
 \r
 int stat( const char *file, struct stat *st ) {\r
index 4e26115fef126e3f20ca6c716da8eb92dbc993f5..902f16b52a282d4b1a8854b8ff4fa04f71a275b2 100644 (file)
 \r
 int arc_putchar(int fd, int c);\r
 int print(FILE *file, char **buffer, size_t n, const char *format, va_list ap);\r
+static inline int emitChar( FILE *file, char **buf, char c, int *left );\r
+\r
+int fputs( const char *s, FILE *file ) {\r
+       int left = ~(size_t)0;\r
+       while(*s) {\r
+               emitChar(file,NULL,*s++,&left);\r
+       }\r
+       return 0;\r
+}\r
+\r
 \r
 int printf(const char *format, ...) {\r
        va_list ap;\r
index ed9af5ed336eb7140f25aeae637f6f1633a17e59..2cf63e6b8ed5dee137298734be5b594db849812c 100644 (file)
@@ -55,6 +55,7 @@
 \r
 #include <stdio.h>\r
 #include <stdarg.h>\r
+#include "MemMap.h"\r
 \r
 \r
 \r
 #define RAMLOG_MAGIC     1\r
 \r
 \r
-static unsigned char ramlog[CFG_RAMLOG_SIZE] __attribute__ ((section (".ramlog")));\r
+SECTION_RAMLOG static unsigned char ramlog[CFG_RAMLOG_SIZE];\r
 #if defined(CFG_RAMLOG_SESSION)\r
-static unsigned ramlog_curr __attribute__ ((section (".ramlog")));\r
-static unsigned ramlog_session __attribute__ ((section (".ramlog")));\r
+SECTION_RAMLOG static unsigned ramlog_curr;\r
+SECTION_RAMLOG static unsigned ramlog_session;\r
 #else\r
 static unsigned ramlog_curr = 0;\r
 #endif\r
index 92b7368dc3cd54a9903051fbe27973b3d804230c..7c93d5314bdf2da652ee788b039360fdf1aadd1b 100644 (file)
@@ -54,7 +54,7 @@ uint16_t handle_SysMonEvent(TCF_Event* event, char* buf){
 \r
 \r
 uint16_t handle_SysMonCommand(TCF_Command* command, char* buf) {\r
-       OsPcbType *iterPcbPtr;\r
+       OsTaskVarType *iterPcbPtr;\r
 \r
        /* Start building return message */\r
        start_tcf_field(buf, (char *)TCF_S_R); /* Start */\r
@@ -69,7 +69,7 @@ uint16_t handle_SysMonCommand(TCF_Command* command, char* buf) {
 \r
                /* Add data field */\r
                mystrcat(buf, JSON_ListStart);\r
-               TAILQ_FOREACH(iterPcbPtr,& os_sys.pcb_head,pcb_list) {\r
+               TAILQ_FOREACH(iterPcbPtr,& Os_Sys.pcb_head,pcb_list) {\r
                        if(iterPcbPtr->proc_type < 4)\r
                        {\r
                                if(first){\r
@@ -94,7 +94,7 @@ uint16_t handle_SysMonCommand(TCF_Command* command, char* buf) {
 \r
                /* Add data field */\r
                char *arg = command->arguments + 1; /* add 1 for " */\r
-               TAILQ_FOREACH(iterPcbPtr,& os_sys.pcb_head,pcb_list) {\r
+               TAILQ_FOREACH(iterPcbPtr,& Os_Sys.pcb_head,pcb_list) {\r
                        if(strncmp(arg, iterPcbPtr->name, strlen(command->arguments)-2) == 0)\r
                        {\r
                                break;\r
index 74ff8de573b9c9eb65704769027fd546895fc1ff..3f83669c1b4b09b44341c48bee8d8ebeff65d91b 100644 (file)
@@ -25,7 +25,7 @@
 \r
 #include "Can.h"\r
 #include "CanIf_Cbk.h"\r
-#include "string.h"\r
+#include <string.h>\r
 \r
 #include "debug.h"\r
 #include "PduR.h"\r
@@ -109,8 +109,9 @@ static CanIf_Arc_ChannelIdType CanIf_Arc_FindHrhChannel( Can_Arc_HRHType hrh )
     do\r
     {\r
       hrhConfig++;\r
-      if (hrhConfig->CanIfHrhIdSymRef == hrh)\r
+      if (hrhConfig->CanIfHrhIdSymRef == hrh){\r
         return hrhConfig->CanIfCanControllerHrhIdRef;\r
+      }\r
     } while(!hrhConfig->CanIf_Arc_EOL);\r
   } while(!hohConfig->CanIf_Arc_EOL);\r
 \r
@@ -244,8 +245,9 @@ Std_ReturnType CanIf_SetControllerMode(uint8 Controller,
     switch (oldMode)\r
     {\r
       case CANIF_CS_SLEEP:\r
-        if (Can_SetControllerMode(canControllerId, CAN_T_STOP) == CAN_NOT_OK)\r
+        if (Can_SetControllerMode(canControllerId, CAN_T_STOP) == CAN_NOT_OK){\r
           return E_NOT_OK;\r
+        }\r
         CanIf_Global.channelData[channel].ControllerMode = CANIF_CS_STOPPED;\r
         break;\r
       default:\r
@@ -254,8 +256,9 @@ Std_ReturnType CanIf_SetControllerMode(uint8 Controller,
     }\r
 \r
     CanIf_SetPduMode(channel, CANIF_SET_ONLINE);\r
-    if (Can_SetControllerMode(canControllerId, CAN_T_START) == CAN_NOT_OK)\r
+    if (Can_SetControllerMode(canControllerId, CAN_T_START) == CAN_NOT_OK){\r
       return E_NOT_OK;\r
+    }\r
     CanIf_Global.channelData[channel].ControllerMode = CANIF_CS_STARTED;\r
   }\r
   break;\r
@@ -264,8 +267,9 @@ Std_ReturnType CanIf_SetControllerMode(uint8 Controller,
   {\r
     switch (oldMode) {\r
       case CANIF_CS_STARTED:\r
-        if (Can_SetControllerMode(canControllerId, CAN_T_STOP) == CAN_NOT_OK)\r
+        if (Can_SetControllerMode(canControllerId, CAN_T_STOP) == CAN_NOT_OK){\r
           return E_NOT_OK;\r
+        }\r
         CanIf_Global.channelData[channel].ControllerMode = CANIF_CS_STOPPED;\r
         break;\r
       default:\r
@@ -273,8 +277,9 @@ Std_ReturnType CanIf_SetControllerMode(uint8 Controller,
         break;\r
     }\r
 \r
-    if (Can_SetControllerMode(canControllerId, CAN_T_SLEEP) == CAN_NOT_OK)\r
+    if (Can_SetControllerMode(canControllerId, CAN_T_SLEEP) == CAN_NOT_OK){\r
       return E_NOT_OK;\r
+    }\r
     CanIf_Global.channelData[channel].ControllerMode = CANIF_CS_SLEEP;\r
   }\r
 \r
@@ -283,8 +288,9 @@ Std_ReturnType CanIf_SetControllerMode(uint8 Controller,
     switch (oldMode)\r
     {\r
       case CANIF_CS_SLEEP:\r
-        if (Can_SetControllerMode(canControllerId, CAN_T_WAKEUP) == CAN_NOT_OK)\r
+        if (Can_SetControllerMode(canControllerId, CAN_T_WAKEUP) == CAN_NOT_OK){\r
           return E_NOT_OK;\r
+        }\r
         break;\r
       default:\r
         // Just fall through for other cases\r
@@ -292,9 +298,11 @@ Std_ReturnType CanIf_SetControllerMode(uint8 Controller,
     }\r
 \r
     CanIf_SetPduMode(channel, CANIF_SET_OFFLINE);\r
-    if (Can_SetControllerMode(canControllerId, CAN_T_STOP) == CAN_NOT_OK)\r
+    if (Can_SetControllerMode(canControllerId, CAN_T_STOP) == CAN_NOT_OK){\r
       return E_NOT_OK;\r
+    }\r
     CanIf_Global.channelData[channel].ControllerMode = CANIF_CS_STOPPED;\r
+    break;\r
   }\r
 \r
   case CANIF_CS_UNINIT:\r
@@ -327,27 +335,88 @@ Std_ReturnType CanIf_GetControllerMode(uint8 Controller,
  *\r
  * @returns Ptr a TxPdu\r
  */\r
+#if ( CANIF_ARC_RUNTIME_PDU_CONFIGURATION == STD_ON )\r
+CanIf_TxPduConfigType * CanIf_FindTxPduEntry(PduIdType id)\r
+#else\r
 static const CanIf_TxPduConfigType * CanIf_FindTxPduEntry(PduIdType id)\r
+#endif\r
 {\r
        if (id >= CanIf_ConfigPtr->InitConfig->CanIfNumberOfCanTXPduIds) {\r
                return NULL;\r
        } else {\r
                return &CanIf_ConfigPtr->InitConfig->CanIfTxPduConfigPtr[id];\r
        }\r
-/*\r
-  for (uint16 i = 0; i < CanIf_ConfigPtr->InitConfig->CanIfNumberOfCanTXPduIds; i++)\r
-  {\r
-    if (entry->CanIfTxPduId == id)\r
-    {\r
-      return entry;\r
-    }\r
-    entry++;\r
   }\r
 \r
-  return 0;\r
-  */\r
-}\r
-\r
+#if ( CANIF_ARC_RUNTIME_PDU_CONFIGURATION == STD_ON )\r
+CanIf_RxPduConfigType * CanIf_FindRxPduEntry(PduIdType id)\r
+#else\r
+static const CanIf_RxPduConfigType * CanIf_FindRxPduEntry(PduIdType id)
+#endif\r
+{
+       if (id >= CanIf_ConfigPtr->InitConfig->CanIfNumberOfCanRxPduIds) {
+               return NULL;
+       } else {
+               return &CanIf_ConfigPtr->InitConfig->CanIfRxPduConfigPtr[id];
+       }
+}
+
+#if ( CANIF_ARC_RUNTIME_PDU_CONFIGURATION == STD_ON )
+const CanIf_HrhConfigType* CanIf_Arc_GetReceiveHandler(CanIf_Arc_ChannelIdType Channel) {
+  const CanIf_InitHohConfigType *hohConfig;
+  const CanIf_HrhConfigType *hrhConfig;
+
+  // foreach(hoh){ foreach(hrh in hoh) {} }
+  hohConfig = CanIf_ConfigPtr->InitConfig->CanIfHohConfigPtr;
+  hohConfig--;
+  do
+  {
+       hohConfig++;
+
+       hrhConfig = hohConfig->CanIfHrhConfig;
+    hrhConfig--;
+    do
+    {
+      hrhConfig++;
+      if (hrhConfig->CanIfCanControllerHrhIdRef == Channel)
+        return hrhConfig;
+       } while(!hrhConfig->CanIf_Arc_EOL);
+
+  } while(!hohConfig->CanIf_Arc_EOL);
+
+  DET_REPORTERROR(MODULE_ID_CANIF, 0, 0xFF, CANIF_E_PARAM_HRH);
+
+  return NULL;
+}
+
+const CanIf_HthConfigType* CanIf_Arc_GetTransmitHandler(CanIf_Arc_ChannelIdType Channel) {
+  const CanIf_InitHohConfigType *hohConfig;
+  const CanIf_HthConfigType *hthConfig;
+
+  // foreach(hoh){ foreach(hrh in hoh) {} }
+  hohConfig = CanIf_ConfigPtr->InitConfig->CanIfHohConfigPtr;
+  hohConfig--;
+  do
+  {
+       hohConfig++;
+
+       hthConfig = hohConfig->CanIfHthConfig;
+       hthConfig--;
+    do
+    {
+       hthConfig++;
+      if (hthConfig->CanIfCanControllerIdRef == Channel)
+        return hthConfig;
+       } while(!hthConfig->CanIf_Arc_EOL);
+
+  } while(!hohConfig->CanIf_Arc_EOL);
+
+  DET_REPORTERROR(MODULE_ID_CANIF, 0, 0xFF, CANIF_E_PARAM_HTH);
+
+  return NULL;
+}
+#endif
+
 //-------------------------------------------------------------------\r
 \r
 Std_ReturnType CanIf_Transmit(PduIdType CanTxPduId,\r
@@ -373,18 +442,22 @@ Std_ReturnType CanIf_Transmit(PduIdType CanTxPduId,
   CanIf_Arc_ChannelIdType channel = txEntry->CanIfCanTxPduHthRef->CanIfCanControllerIdRef;\r
 \r
   // Get and verify the controller mode\r
-  if (CanIf_GetControllerMode(channel, &csMode) == E_NOT_OK)\r
+  if (CanIf_GetControllerMode(channel, &csMode) == E_NOT_OK){\r
     return E_NOT_OK;\r
+  }\r
 \r
-  if (csMode != CANIF_CS_STARTED)  // CANIF_161\r
+  if (csMode != CANIF_CS_STARTED){  // CANIF_161\r
     return E_NOT_OK;\r
+  }\r
 \r
   // Get and verify the PDU channel mode control\r
-  if (CanIf_GetPduMode(channel, &pduMode) == E_NOT_OK)\r
+  if (CanIf_GetPduMode(channel, &pduMode) == E_NOT_OK){\r
     return E_NOT_OK;\r
+  }\r
 \r
-  if ((pduMode != CANIF_GET_TX_ONLINE) && (pduMode != CANIF_GET_ONLINE))\r
+  if ((pduMode != CANIF_GET_TX_ONLINE) && (pduMode != CANIF_GET_ONLINE)){\r
     return E_NOT_OK;\r
+  }\r
 \r
   canPdu.id = txEntry->CanIfCanTxPduIdCanId;\r
 \r
@@ -394,8 +467,9 @@ Std_ReturnType CanIf_Transmit(PduIdType CanTxPduId,
 \r
   Can_ReturnType rVal = Can_Write(txEntry->CanIfCanTxPduHthRef->CanIfHthIdSymRef, &canPdu);\r
 \r
-  if (rVal == CAN_NOT_OK)\r
+  if (rVal == CAN_NOT_OK){\r
     return E_NOT_OK;\r
+  }\r
 \r
   if (rVal == CAN_BUSY)  // CANIF 082, CANIF 161\r
   {\r
@@ -483,46 +557,50 @@ Std_ReturnType CanIf_SetPduMode(uint8 Controller,
     CanIf_Global.channelData[channel].PduMode = CANIF_GET_OFFLINE;\r
     break;\r
   case CANIF_SET_RX_OFFLINE:\r
-    if (oldMode == CANIF_GET_RX_ONLINE)\r
+    if (oldMode == CANIF_GET_RX_ONLINE){\r
       CanIf_Global.channelData[channel].PduMode = CANIF_GET_OFFLINE;\r
-    else if (oldMode == CANIF_GET_ONLINE)\r
+    } else if (oldMode == CANIF_GET_ONLINE){\r
       CanIf_Global.channelData[channel].PduMode = CANIF_GET_TX_ONLINE;\r
-    else if (oldMode == CANIF_GET_OFFLINE_ACTIVE_RX_ONLINE)\r
+    } else if (oldMode == CANIF_GET_OFFLINE_ACTIVE_RX_ONLINE){\r
       CanIf_Global.channelData[channel].PduMode = CANIF_GET_OFFLINE_ACTIVE;\r
+    }\r
 \r
     // Other oldmodes don't care\r
     break;\r
   case CANIF_SET_RX_ONLINE:\r
-    if (oldMode == CANIF_GET_OFFLINE)\r
+    if (oldMode == CANIF_GET_OFFLINE){\r
       CanIf_Global.channelData[channel].PduMode = CANIF_GET_RX_ONLINE;\r
-    else if (oldMode == CANIF_GET_TX_ONLINE)\r
+    } else if (oldMode == CANIF_GET_TX_ONLINE) {\r
       CanIf_Global.channelData[channel].PduMode = CANIF_GET_ONLINE;\r
-    else if (oldMode == CANIF_GET_OFFLINE_ACTIVE)\r
+    } else if (oldMode == CANIF_GET_OFFLINE_ACTIVE){\r
       CanIf_Global.channelData[channel].PduMode = CANIF_GET_OFFLINE_ACTIVE_RX_ONLINE;\r
+    }\r
 \r
     // Other oldmodes don't care\r
     break;\r
   case CANIF_SET_TX_OFFLINE:\r
-    if (oldMode == CANIF_GET_TX_ONLINE)\r
+    if (oldMode == CANIF_GET_TX_ONLINE){\r
       CanIf_Global.channelData[channel].PduMode = CANIF_GET_OFFLINE;\r
-    else if (oldMode == CANIF_GET_ONLINE)\r
+    } else if (oldMode == CANIF_GET_ONLINE) {\r
       CanIf_Global.channelData[channel].PduMode = CANIF_GET_RX_ONLINE;\r
-    else if (oldMode == CANIF_GET_OFFLINE_ACTIVE)\r
+    } else if (oldMode == CANIF_GET_OFFLINE_ACTIVE) {\r
       CanIf_Global.channelData[channel].PduMode = CANIF_GET_OFFLINE;\r
-    else if (oldMode == CANIF_GET_OFFLINE_ACTIVE_RX_ONLINE)\r
+    } else if (oldMode == CANIF_GET_OFFLINE_ACTIVE_RX_ONLINE) {\r
       CanIf_Global.channelData[channel].PduMode = CANIF_GET_RX_ONLINE;\r
+    }\r
 \r
     // Other oldmodes don't care\r
     break;\r
   case CANIF_SET_TX_ONLINE:\r
-    if (oldMode == CANIF_GET_OFFLINE)\r
+    if (oldMode == CANIF_GET_OFFLINE){\r
       CanIf_Global.channelData[channel].PduMode = CANIF_GET_TX_ONLINE;\r
-    else if (oldMode == CANIF_GET_RX_ONLINE)\r
+    } else if (oldMode == CANIF_GET_RX_ONLINE) {\r
       CanIf_Global.channelData[channel].PduMode = CANIF_GET_ONLINE;\r
-    else if (oldMode == CANIF_GET_OFFLINE_ACTIVE)\r
+    } else if (oldMode == CANIF_GET_OFFLINE_ACTIVE) {\r
       CanIf_Global.channelData[channel].PduMode = CANIF_GET_TX_ONLINE;\r
-    else if (oldMode == CANIF_GET_OFFLINE_ACTIVE_RX_ONLINE)\r
+    } else if (oldMode == CANIF_GET_OFFLINE_ACTIVE_RX_ONLINE) {\r
       CanIf_Global.channelData[channel].PduMode = CANIF_GET_ONLINE;\r
+    }\r
 \r
     // Other oldmodes don't care\r
     break;\r
@@ -531,14 +609,15 @@ Std_ReturnType CanIf_SetPduMode(uint8 Controller,
     break;\r
 \r
   case CANIF_SET_TX_OFFLINE_ACTIVE:\r
-    if (oldMode == CANIF_GET_OFFLINE)\r
+    if (oldMode == CANIF_GET_OFFLINE) {\r
       CanIf_Global.channelData[channel].PduMode = CANIF_GET_OFFLINE_ACTIVE;\r
-    else if (oldMode == CANIF_GET_RX_ONLINE)\r
+    } else if (oldMode == CANIF_GET_RX_ONLINE) {\r
       CanIf_Global.channelData[channel].PduMode = CANIF_GET_OFFLINE_ACTIVE_RX_ONLINE;\r
-    else if (oldMode == CANIF_GET_TX_ONLINE)\r
+    } else if (oldMode == CANIF_GET_TX_ONLINE) {\r
       CanIf_Global.channelData[channel].PduMode = CANIF_GET_OFFLINE_ACTIVE;\r
-    else if (oldMode == CANIF_GET_ONLINE)\r
+    } else if (oldMode == CANIF_GET_ONLINE) {\r
       CanIf_Global.channelData[channel].PduMode = CANIF_GET_OFFLINE_ACTIVE_RX_ONLINE;\r
+    }\r
 \r
     // Other oldmodes don't care\r
     break;\r
@@ -563,11 +642,10 @@ Std_ReturnType CanIf_GetPduMode(uint8 Controller,
   return E_OK;\r
 }\r
 \r
-#if ( CANIF_SETDYNAMICTXID_API == STD_ON )\r
+#if ( CANIF_ARC_RUNTIME_PDU_CONFIGURATION == STD_ON )
 void CanIf_SetDynamicTxId(PduIdType CanTxPduId, Can_IdType CanId)\r
 {\r
-  const CanIf_TxPduConfigType *txEntry;\r
-  VALIDATE(FALSE, CANIF_SETDYNAMICTX_ID, CANIF_E_NOK_NOSUPPORT);\r
+  CanIf_TxPduConfigType *txEntry;\r
   VALIDATE_NO_RV(CanIf_Global.initRun, CANIF_SETDYNAMICTX_ID, CANIF_E_UNINIT );\r
 \r
   // Get the controller from L-PDU handle\r
@@ -587,8 +665,8 @@ void CanIf_SetDynamicTxId(PduIdType CanTxPduId, Can_IdType CanId)
   }\r
 \r
   // Check that this is an extended or standard id\r
-  if (((CanId & 0x80000000) && (txEntry->CanIfTxPduIdCanIdType == ARC_CAN_ID_TYPE_29)) ||\r
-      (((CanId & 0x80000000) == 0) && (txEntry->CanIfTxPduIdCanIdType == ARC_CAN_ID_TYPE_11)))\r
+  if (((CanId & U0x80000000) && (txEntry->CanIfTxPduIdCanIdType == ARC_CAN_ID_TYPE_29)) ||\r
+      (((CanId & U0x80000000) == 0) && (txEntry->CanIfTxPduIdCanIdType == ARC_CAN_ID_TYPE_11)))\r
   {\r
     // Update the CanID\r
     //txEntry->CanIfCanTxPduIdCanId = CanId;  // TODO How do we fix this from a const pointer\r
@@ -670,13 +748,6 @@ void CanIf_TxConfirmation(PduIdType canTxPduId)
   const CanIf_TxPduConfigType* entry =\r
     &CanIf_ConfigPtr->InitConfig->CanIfTxPduConfigPtr[canTxPduId];\r
 \r
-  /* Find the CAN id in the TxPduList */\r
-  /*\r
-  for (uint16 i = 0; i < CanIf_ConfigPtr->InitConfig->CanIfNumberOfCanTXPduIds; i++)\r
-  {\r
-    if (entry->CanIfTxPduId == canTxPduId)\r
-    {\r
-    */\r
       if (entry->CanIfUserTxConfirmation != NULL)\r
       {\r
         CanIf_ChannelGetModeType mode;\r
@@ -688,14 +759,6 @@ void CanIf_TxConfirmation(PduIdType canTxPduId)
         }\r
       }\r
       return;\r
-      /*\r
-    }\r
-\r
-    entry++;\r
-  }\r
-  */\r
-  // Did not find the PDU, something is wrong\r
-\r
 }\r
 \r
 void CanIf_RxIndication(uint8 Hrh, Can_IdType CanId, uint8 CanDlc,\r
@@ -714,8 +777,8 @@ void CanIf_RxIndication(uint8 Hrh, Can_IdType CanId, uint8 CanDlc,
 \r
   if (CanIf_GetPduMode(channel, &mode) == E_OK)\r
   {\r
-    if (mode == CANIF_GET_OFFLINE || mode == CANIF_GET_TX_ONLINE ||\r
-        mode == CANIF_GET_OFFLINE_ACTIVE)\r
+    if ( (mode == CANIF_GET_OFFLINE) || (mode == CANIF_GET_TX_ONLINE) ||\r
+        (mode == CANIF_GET_OFFLINE_ACTIVE) )\r
     {\r
       // Receiver path is disabled so just drop it\r
       return;\r
@@ -748,7 +811,7 @@ void CanIf_RxIndication(uint8 Hrh, Can_IdType CanId, uint8 CanDlc,
             else\r
             {\r
               entry++;\r
-              continue; // Not a supported filter type, so just drop the frame\r
+              continue; // Go to next entry
             }\r
           }\r
           else\r
@@ -771,8 +834,13 @@ void CanIf_RxIndication(uint8 Hrh, Can_IdType CanId, uint8 CanDlc,
       {\r
         case CANIF_USER_TYPE_CAN_SPECIAL:\r
         {\r
-            ((CanIf_FuncTypeCanSpecial) (entry->CanIfUserRxIndication))(entry->CanIfCanRxPduId,\r
-                                          CanSduPtr, CanDlc, CanId);\r
+          ( (CanIf_FuncTypeCanSpecial)(entry->CanIfUserRxIndication) )(
+            entry->CanIfCanRxPduHrhRef->CanIfCanControllerHrhIdRef,
+            entry->CanIfCanRxPduId,
+            CanSduPtr,
+            CanDlc,
+            CanId);
+
             return;\r
         }\r
         break;\r
@@ -878,3 +946,8 @@ void CanIf_Arc_Error(uint8 Controller, Can_Arc_ErrorType Error)
     CanIf_ConfigPtr->DispatchConfig->CanIfErrorNotificaton(Controller, Error);\r
   }\r
 }\r
+uint8 CanIf_Arc_GetChannelDefaultConfIndex(CanIf_Arc_ChannelIdType Channel)
+{
+       return CanIf_Config.Arc_ChannelDefaultConfIndex[Channel];
+};
+
index 3924cab6f4f42e83512196e144f60376bf44f5a8..c2ea8f5388a3fcdcb2916ff8e9fd526b69137954 100644 (file)
@@ -13,6 +13,9 @@
  * for more details.\r
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
+//lint -emacro(904,CANNM_VALIDATE_INIT,CANNM_VALIDATE_CHANNEL,CANNM_VALIDATE_NOTNULL) //904 PC-Lint exception to MISRA 14.7 (validate macros).\r
+\r
+\r
 /* Globally fulfilled requirements */\r
 /** @req CANNM081 */\r
 /** @req CANNM044 */\r
 /** @req CANNM026 */\r
 /** @req CANNM201 */\r
 \r
-#if (CANNM_DEV_ERROR_DETECT == STD_ON)\r
-#include "Det.h"\r
-#endif\r
-#if defined(USE_DEM)\r
-#include "Dem.h"\r
-#endif\r
-#include "ComStack_Types.h"\r
-#include "CanNm.h"\r
+#include "ComStack_Types.h"    /** @req CANNM082 */\r
+#include "CanNm.h"                             /** @req CANNM082 */\r
 #include "CanNm_Internal.h"\r
-#include "CanNm_ConfigTypes.h"\r
-#include "Nm_Cbk.h"\r
-#include "NmStack_Types.h"\r
-#include "MemMap.h"\r
+#include "Nm_Cbk.h"                            /** @req CANNM082 */\r
+#include "NmStack_Types.h"             /** @req CANNM082 */\r
+//#include SchM_CanNm.h                        //Not implemented. (CANNM082)\r
+#include "MemMap.h"                            /** @req CANNM082 */\r
 \r
 /** @req CANNM083 */\r
 #include "CanIf.h"\r
 \r
 #include <string.h>\r
 \r
+#if (CANNM_DEV_ERROR_DETECT == STD_ON)\r
+#include "Det.h"                               /** @req CANNM082 */\r
+#endif\r
+#if defined(USE_DEM)\r
+#include "Dem.h"                               /** @req CANNM082 */\r
+#endif\r
+\r
+\r
 static const CanNm_ConfigType* CanNm_ConfigPtr;\r
 \r
+//lint -save -e785 //PC-Lint exception: Too few initializers for aggregate...\r
 CanNm_InternalType CanNm_Internal = {\r
                .InitStatus = CANNM_UNINIT,\r
 };\r
+//lint -restore\r
 \r
 /** Initialize the complete CanNm module, i.e. all channels which are activated */\r
 /** @req CANNM041 */\r
@@ -77,7 +84,7 @@ void CanNm_Init( const CanNm_ConfigType * const cannmConfigPtr ){
 \r
        CanNm_ConfigPtr = cannmConfigPtr;  /**< @req CANNM060 */\r
 \r
-       int channel;\r
+       uint8 channel;\r
        for (channel = 0; channel < CANNM_CHANNEL_COUNT; channel++) {\r
                const CanNm_ChannelType* ChannelConf = &CanNm_ConfigPtr->Channels[channel];\r
                CanNm_Internal_ChannelType* ChannelInternal = &CanNm_Internal.Channels[channel];\r
@@ -122,13 +129,15 @@ Nm_ReturnType CanNm_PassiveStartUp( const NetworkHandleType nmChannelHandle ){
 \r
        const CanNm_ChannelType* ChannelConf = &CanNm_ConfigPtr->Channels[nmChannelHandle];\r
        CanNm_Internal_ChannelType* ChannelInternal = &CanNm_Internal.Channels[nmChannelHandle];\r
+       Nm_ReturnType status = NM_E_OK;\r
 \r
        if (ChannelInternal->Mode == NM_MODE_BUS_SLEEP) {\r
                CanNm_Internal_BusSleep_to_RepeatMessage(ChannelConf, ChannelInternal);  /**< @req CANNM128  @req CANNM095.3 */\r
-               return NM_E_OK;\r
+               status = NM_E_OK;\r
        } else {\r
-               return NM_E_NOT_EXECUTED;  /**< @req CANNM147 */\r
+               status = NM_E_NOT_EXECUTED;  /**< @req CANNM147 */\r
        }\r
+       return status;\r
 }\r
 \r
 /** Request the network, since ECU needs to communicate on the bus. Network\r
@@ -150,6 +159,8 @@ Nm_ReturnType CanNm_NetworkRequest( const NetworkHandleType nmChannelHandle ){
                if (ChannelInternal->State == NM_STATE_READY_SLEEP) {\r
                        CanNm_Internal_ReadySleep_to_NormalOperation(ChannelConf, ChannelInternal);  /**< @req CANNM110 */\r
                }\r
+       } else {\r
+               //Nothing to be done\r
        }\r
        return NM_E_OK;\r
 }\r
@@ -233,13 +244,15 @@ Nm_ReturnType CanNm_GetNodeIdentifier( const NetworkHandleType nmChannelHandle,
 \r
        const CanNm_ChannelType* ChannelConf = &CanNm_ConfigPtr->Channels[nmChannelHandle];\r
        CanNm_Internal_ChannelType* ChannelInternal = &CanNm_Internal.Channels[nmChannelHandle];\r
+       Nm_ReturnType status = NM_E_OK;\r
 \r
        if (ChannelConf->NidPosition == CANNM_PDU_OFF) {\r
-               return NM_E_NOT_EXECUTED;\r
+               status = NM_E_NOT_EXECUTED;\r
        } else {\r
                *nmNodeIdPtr = ChannelInternal->RxMessageSdu[ChannelConf->NidPosition];\r
-               return NM_E_OK;\r
+               status = NM_E_OK;\r
        }\r
+       return status;\r
 }\r
 \r
 /** Get node identifier configured for the local node. */\r
@@ -264,19 +277,22 @@ Nm_ReturnType CanNm_RepeatMessageRequest( const NetworkHandleType nmChannelHandl
 \r
        const CanNm_ChannelType* ChannelConf = &CanNm_ConfigPtr->Channels[nmChannelHandle];\r
        CanNm_Internal_ChannelType* ChannelInternal = &CanNm_Internal.Channels[nmChannelHandle];\r
+       Nm_ReturnType status = NM_E_NOT_EXECUTED;  /**< @req CANNM137 */\r
 \r
        if (ChannelConf->CbvPosition != CANNM_PDU_OFF) {\r
                if (ChannelInternal->State == NM_STATE_READY_SLEEP) {\r
                        ChannelInternal->TxMessageSdu[ChannelConf->CbvPosition] = CANNM_CBV_REPEAT_MESSAGE_REQUEST;  /**< @req CANNM113 */\r
                        CanNm_Internal_ReadySleep_to_RepeatMessage(ChannelConf, ChannelInternal);  /**< @req CANNM112 */\r
-                       return NM_E_OK;\r
+                       status = NM_E_OK;\r
                } else if (ChannelInternal->State == NM_STATE_NORMAL_OPERATION) {\r
                        ChannelInternal->TxMessageSdu[ChannelConf->CbvPosition] = CANNM_CBV_REPEAT_MESSAGE_REQUEST;  /**< @req CANNM121 */\r
                        CanNm_Internal_NormalOperation_to_RepeatMessage(ChannelConf, ChannelInternal);  /**< @req CANNM120 */\r
-                       return NM_E_OK;\r
+                       status = NM_E_OK;\r
+               } else {\r
+                       //Nothing to be done\r
                }\r
        }\r
-       return NM_E_NOT_EXECUTED;  /**< @req CANNM137 */\r
+       return status;\r
 }\r
 #endif\r
 \r
@@ -309,15 +325,11 @@ Nm_ReturnType CanNm_GetState( const NetworkHandleType nmChannelHandle, Nm_StateT
        return NM_E_OK;\r
 }\r
 \r
-/** This service returns the version information of this module. */\r
-void CanNm_GetVersionInfo( Std_VersionInfoType * versioninfo ){\r
-       CANNM_VALIDATE_INIT(CANNM_SERVICEID_GETVERSIONINFO);\r
-}\r
-\r
 /** Request bus synchronization. */\r
 Nm_ReturnType CanNm_RequestBusSynchronization( const NetworkHandleType nmChannelHandle ){\r
        CANNM_VALIDATE_INIT(CANNM_SERVICEID_REQUESTBUSSYNCHRONIZATION, NM_E_NOT_OK);\r
        CANNM_VALIDATE_CHANNEL(nmChannelHandle, CANNM_SERVICEID_REQUESTBUSSYNCHRONIZATION, NM_E_NOT_OK);\r
+       // Not implemented\r
        return NM_E_NOT_OK;\r
 }\r
 \r
@@ -325,6 +337,8 @@ Nm_ReturnType CanNm_RequestBusSynchronization( const NetworkHandleType nmChannel
 Nm_ReturnType CanNm_CheckRemoteSleepIndication( const NetworkHandleType nmChannelHandle, boolean * const nmRemoteSleepIndPtr ){\r
        CANNM_VALIDATE_INIT(CANNM_SERVICEID_CHECKREMOTESLEEPINDICATION, NM_E_NOT_OK);\r
        CANNM_VALIDATE_CHANNEL(nmChannelHandle, CANNM_SERVICEID_CHECKREMOTESLEEPINDICATION, NM_E_NOT_OK);\r
+       (void)nmRemoteSleepIndPtr;\r
+       // Not implemented\r
        return NM_E_NOT_OK;\r
 }\r
 \r
@@ -376,8 +390,12 @@ void CanNm_RxIndication( PduIdType canNmRxPduId, const uint8 *canSduPtr ){
                                CanNm_Internal_ReadySleep_to_RepeatMessage(ChannelConf, ChannelInternal);  /**< @req CANNM111 */\r
                        } else if (ChannelInternal->State == NM_STATE_NORMAL_OPERATION) {\r
                                CanNm_Internal_NormalOperation_to_RepeatMessage(ChannelConf, ChannelInternal);  /**< @req CANNM119 */\r
+                       } else {\r
+                               //Nothing to be done\r
                        }\r
                }\r
+       } else {\r
+               //Nothing to be done\r
        }\r
 #if (CANNM_PDU_RX_INDICATION_ENABLED == STD_ON)\r
        // TODO: call NM rx indication\r
@@ -390,6 +408,8 @@ void CanNm_RxIndication( PduIdType canNmRxPduId, const uint8 *canSduPtr ){
 // ----------------------------------------------------------------------------\r
 // Internal functions\r
 // ----------------------------------------------------------------------------\r
+// Accessed through CanNm_MainFunction_<channel>\r
+void CanNm_MainFunction(NetworkHandleType nmChannelHandle);\r
 \r
 void CanNm_MainFunction( NetworkHandleType nmChannelHandle ) {\r
        CANNM_VALIDATE_INIT(CANNM_SERVICEID_ARC_MAINFUNCTION);\r
@@ -412,6 +432,8 @@ void CanNm_MainFunction( NetworkHandleType nmChannelHandle ) {
                }\r
        } else if (ChannelInternal->Mode == NM_MODE_PREPARE_BUS_SLEEP) {\r
                CanNm_Internal_TickWaitBusSleepTime(ChannelConf, ChannelInternal);  /**< @req CANNM115.2 */\r
+       } else {\r
+               //Nothing to be done\r
        }\r
 }\r
 \r
@@ -433,6 +455,8 @@ static inline void CanNm_Internal_TickTimeoutTime( const CanNm_ChannelType* Chan
                        CanNm_Internal_NormalOperation_to_NormalOperation(ChannelConf, ChannelInternal);  /**< @req CANNM117.1 */\r
                } else if (ChannelInternal->State == NM_STATE_READY_SLEEP) {\r
                        CanNm_Internal_ReadySleep_to_PrepareBusSleep(ChannelConf, ChannelInternal);  /**< @req CANNM109 */\r
+               } else {\r
+                       //Nothing to be done\r
                }\r
        } else {\r
                ChannelInternal->TimeoutTimeLeft -= ChannelConf->MainFunctionPeriod;\r
@@ -489,7 +513,9 @@ static inline void CanNm_Internal_TransmitMessage( const CanNm_ChannelType* Chan
                        .SduDataPtr = ChannelInternal->TxMessageSdu,\r
                        .SduLength = ChannelConf->PduLength,\r
        };\r
-       CanIf_Transmit(ChannelConf->CanIfPduId, &pdu);\r
+       Std_ReturnType status = CanIf_Transmit(ChannelConf->CanIfPduId, &pdu);\r
+       (void)status;\r
+       // TODO: what to do if Transmit fails?\r
 }\r
 \r
 static inline uint8 CanNm_Internal_GetUserDataOffset( const CanNm_ChannelType* ChannelConf ) {\r
@@ -547,6 +573,7 @@ static inline void CanNm_Internal_BusSleep_to_RepeatMessage( const CanNm_Channel
 static inline void CanNm_Internal_BusSleep_to_BusSleep( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal ) {\r
        // Notify 'Network Start'\r
        Nm_NetworkStartIndication(ChannelConf->NmNetworkHandle);  /**< @req CANNM127.1 */\r
+       (void) ChannelInternal; //Just to avoid 715 PC-Lint warning about not used.\r
 }\r
 \r
 static inline void CanNm_Internal_RepeatMessage_to_RepeatMessage( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal ) {\r
@@ -579,6 +606,7 @@ static inline void CanNm_Internal_NormalOperation_to_RepeatMessage( const CanNm_
 static inline void CanNm_Internal_NormalOperation_to_ReadySleep( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal ) {\r
        ChannelInternal->Mode = NM_MODE_NETWORK;\r
        ChannelInternal->State = NM_STATE_READY_SLEEP;\r
+       (void) ChannelConf; //Just to avoid 715 PC-Lint warning about not used.\r
 }\r
 static inline void CanNm_Internal_NormalOperation_to_NormalOperation( const CanNm_ChannelType* ChannelConf, CanNm_Internal_ChannelType* ChannelInternal ) {\r
        ChannelInternal->TimeoutTimeLeft = ChannelConf->TimeoutTime;  /**< @req CANNM117.2 */\r
index 79506dba20060c1bf29cd95bf68b802de4753297..1a7a3c2d4eee37daf8bef6e703ef982f3d6a4a07 100644 (file)
@@ -13,6 +13,8 @@
  * for more details.\r
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
+//lint -emacro(904,CANSM_VALIDATE_INIT,CANSM_VALIDATE_NETWORK,CANSM_VALIDATE_POINTER,CANSM_VALIDATE_MODE) //904 PC-Lint exception to MISRA 14.7 (validate macros).\r
+\r
 /* Globally fulfilled requirements */\r
 /** @req CANSM069 */\r
 /** @req CANSM077 */\r
@@ -48,17 +50,23 @@ void CanSM_Init( const CanSM_ConfigType* ConfigPtr ) {
        CANSM_VALIDATE_POINTER(ConfigPtr, CANSM_SERVICEID_INIT);  /**< @req CANSM179 */\r
 \r
        CanSM_Config = ConfigPtr;\r
+       Std_ReturnType status = E_OK;\r
+       Std_ReturnType totalStatus = E_OK;\r
 \r
-       for (int i = 0; i < CANSM_NETWORK_COUNT; ++i) {\r
-               CanSM_Internal_RequestComMode(i, COMM_NO_COMMUNICATION);  /**< @req CANSM211 */\r
+       for (uint8 i = 0; i < CANSM_NETWORK_COUNT; ++i) {\r
+               status = CanSM_Internal_RequestComMode(i, COMM_NO_COMMUNICATION);  /**< @req CANSM211 */\r
+               if (status > totalStatus) {\r
+                       totalStatus = status;\r
+               }\r
        }\r
 \r
-       CanSM_Internal.InitStatus = CANSM_STATUS_INIT;\r
+       if (totalStatus == E_OK) {\r
+               CanSM_Internal.InitStatus = CANSM_STATUS_INIT;\r
+       } else {\r
+               // TODO report error?\r
+       }\r
 }\r
 \r
-void CanSM_GetVersionInfo( Std_VersionInfoType* VersionInfo ) {\r
-       CANSM_VALIDATE_INIT(CANSM_SERVICEID_GETVERSIONINFO);\r
-}\r
 \r
 /** @req CANSM181  @req CANSM183  @req CANSM182.partially  @req CANSM184 */\r
 Std_ReturnType CanSM_RequestComMode( NetworkHandleType NetworkHandle, ComM_ModeType ComM_Mode ) {\r
@@ -78,22 +86,27 @@ Std_ReturnType CanSM_Internal_RequestComMode( NetworkHandleType NetworkHandle, C
        Std_ReturnType overallStatus = E_OK;\r
        Std_ReturnType status;\r
        status = CanSM_Internal_RequestCanIfMode(NetworkHandle, ComM_Mode);      /**< @req CANSM240 */\r
-       if (status > overallStatus) overallStatus = status;\r
+       if (status > overallStatus){\r
+               overallStatus = status;\r
+       }\r
        status = CanSM_Internal_RequestComGroupMode(NetworkHandle, ComM_Mode);   /**< @req CANSM241 */\r
-       if (status > overallStatus) overallStatus = status;\r
+       if (status > overallStatus) {\r
+               overallStatus = status;\r
+       }\r
 \r
-       if (status == E_OK) {\r
+       if (overallStatus == E_OK) {\r
                NetworkInternal->CurrentMode = ComM_Mode;\r
                ComM_BusSM_ModeIndication(NetworkHandle, ComM_Mode);                 /**< @req CANSM089 */\r
        }\r
 \r
-       return status;\r
+       return overallStatus;\r
 }\r
 \r
 /** @req CANSM039  @req CANSM044 */\r
 Std_ReturnType CanSM_Internal_RequestCanIfMode( NetworkHandleType NetworkHandle, ComM_ModeType ComM_Mode ) {\r
        const CanSM_NetworkType* Network = &CanSM_Config->Networks[NetworkHandle];\r
-       CanIf_ControllerModeType CanIf_Mode;\r
+       CanIf_ControllerModeType CanIf_Mode = CANIF_CS_STARTED;\r
+       Std_ReturnType totalStatus = E_OK;\r
 \r
        switch (ComM_Mode) {\r
                case COMM_NO_COMMUNICATION:\r
@@ -110,17 +123,18 @@ Std_ReturnType CanSM_Internal_RequestCanIfMode( NetworkHandleType NetworkHandle,
                        CanIf_Mode = CANIF_CS_STARTED;\r
                        break;\r
                default:\r
-                       return E_NOT_OK;\r
+                       totalStatus = E_NOT_OK;\r
                        break;\r
        }\r
 \r
-       Std_ReturnType totalStatus = E_OK;\r
-       for (int i = 0; i < Network->ControllerCount; ++i) {\r
-               const CanSM_ControllerType* Controller = &Network->Controllers[i];\r
-               Std_ReturnType status =\r
-                               CanIf_SetControllerMode(Controller->CanIfControllerId, CanIf_Mode);\r
-               if (status > totalStatus) {\r
-                       totalStatus = status;\r
+       if (totalStatus == E_OK) {\r
+               for (uint8 i = 0; i < Network->ControllerCount; ++i) {\r
+                       const CanSM_ControllerType* Controller = &Network->Controllers[i];\r
+                       Std_ReturnType status =\r
+                                       CanIf_SetControllerMode(Controller->CanIfControllerId, CanIf_Mode);\r
+                       if (status > totalStatus) {\r
+                               totalStatus = status;\r
+                       }\r
                }\r
        }\r
        return totalStatus;\r
@@ -129,6 +143,7 @@ Std_ReturnType CanSM_Internal_RequestCanIfMode( NetworkHandleType NetworkHandle,
 /** @req CANSM173 */\r
 Std_ReturnType CanSM_Internal_RequestComGroupMode( NetworkHandleType NetworkHandle, ComM_ModeType ComM_Mode ) {\r
        const CanSM_NetworkType* Network = &CanSM_Config->Networks[NetworkHandle];\r
+       Std_ReturnType status = E_OK;\r
 \r
        switch (ComM_Mode) {\r
                case COMM_NO_COMMUNICATION:\r
@@ -144,10 +159,10 @@ Std_ReturnType CanSM_Internal_RequestComGroupMode( NetworkHandleType NetworkHand
                        Com_IpduGroupStart(Network->ComTxPduGroupId, FALSE);\r
                        break;\r
                default:\r
-                       return E_NOT_OK;\r
+                       status = E_NOT_OK;\r
                        break;\r
        }\r
-       return E_OK;\r
+       return status;\r
 }\r
 \r
 /** @req CANSM090  @req CANSM185  @req CANSM187  @req CANSM186  @req CANSM188 */\r
@@ -159,7 +174,7 @@ Std_ReturnType CanSM_GetCurrentComMode( NetworkHandleType NetworkHandle, ComM_Mo
 \r
        const CanSM_NetworkType* Network = &CanSM_Config->Networks[NetworkHandle];\r
        Std_ReturnType totalStatus = E_OK;\r
-       for (int i = 0; i < Network->ControllerCount; ++i) {\r
+       for (uint8 i = 0; i < Network->ControllerCount; ++i) {\r
                const CanSM_ControllerType* Controller = &Network->Controllers[i];\r
                CanIf_ControllerModeType CanIf_Mode;\r
                Std_ReturnType status =\r
index f7be6b0bc4d1fe747236cd81c757d76461d433ae..15cb539a072e6dd4f32fba013de3039d25ff0c6f 100644 (file)
@@ -14,8 +14,8 @@
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
 \r
-#ifndef CANSM_INTERNAL_H_\r
-#define CANSM_INTERNAL_H_\r
+#ifndef CANSM_INTERNAL_H\r
+#define CANSM_INTERNAL_H\r
 \r
 #include "CanSM.h"\r
 \r
@@ -49,7 +49,7 @@
 \r
 typedef enum {\r
        CANSM_STATUS_UNINIT,\r
-       CANSM_STATUS_INIT,\r
+       CANSM_STATUS_INIT\r
 } CanSM_Internal_InitStatusType;\r
 \r
 \r
@@ -72,4 +72,4 @@ Std_ReturnType CanSM_Internal_RequestComMode( NetworkHandleType NetworkHandle, C
 Std_ReturnType CanSM_Internal_RequestCanIfMode( NetworkHandleType NetworkHandle, ComM_ModeType ComM_Mode );\r
 Std_ReturnType CanSM_Internal_RequestComGroupMode( NetworkHandleType NetworkHandle, ComM_ModeType ComM_Mode );\r
 \r
-#endif /* CANSM_INTERNAL_H_ */\r
+#endif /* CANSM_INTERNAL_H */\r
index cdeb2f977326d42ebacd927f0fc1ec2f9f01f2fd..c5d3a8b6dcee218cffb5822dafe97432e59e276d 100644 (file)
@@ -369,7 +369,7 @@ static inline PduLengthType getPduLength(
                break;\r
        case FIRST_FRAME:\r
                // Parse the data length form the first frame.\r
-               res = CanTpRxPduPtr->SduDataPtr[tpci_offset + 1] + (PduLengthType)((CanTpRxPduPtr->SduDataPtr[tpci_offset]) & 0xf << 8);\r
+               res = CanTpRxPduPtr->SduDataPtr[tpci_offset + 1] + ((PduLengthType)((CanTpRxPduPtr->SduDataPtr[tpci_offset]) & 0xf) << 8);\r
                break;\r
        default:\r
                res = 0; // TODO: maybe we should have an error code here.\r
@@ -418,10 +418,10 @@ static INLINE BufReq_ReturnType copySegmentToPduRRxBuffer(const CanTp_RxNSduType
                PduLengthType segmentSize, PduLengthType *bytesWrittenSuccessfully) {\r
 \r
        BufReq_ReturnType ret = BUFREQ_NOT_OK;\r
-       boolean error = FALSE;\r
+       boolean endLoop = FALSE;\r
        *bytesWrittenSuccessfully = 0;\r
 \r
-       while ((*bytesWrittenSuccessfully < segmentSize) && error == FALSE) {\r
+       while ((*bytesWrittenSuccessfully < segmentSize) && (!endLoop)) {\r
                // Copy the data that resides in the buffer.\r
                if (rxRuntime->pdurBuffer != NULL) {\r
                        while ((*bytesWrittenSuccessfully < segmentSize ) && (rxRuntime->pdurBuffer->SduLength > rxRuntime->pdurBufferCount)) {\r
@@ -438,16 +438,14 @@ static INLINE BufReq_ReturnType copySegmentToPduRRxBuffer(const CanTp_RxNSduType
                                rxRuntime->pdurBufferCount = 0; // The buffer is emptied.\r
                        } else if (ret == BUFREQ_BUSY) {\r
                                rxRuntime->transferCount += *bytesWrittenSuccessfully;\r
-                               error = TRUE;\r
-                               break;\r
+                               endLoop = TRUE;\r
                        } else {\r
-                               error = TRUE; // Let calling function handle this error.\r
-                               break;\r
+                               endLoop = TRUE; // Let calling function handle this error.\r
                        }\r
                } else {\r
                        rxRuntime->transferCount += segmentSize; //== bytesWrittenSuccessfully\r
                        ret = BUFREQ_OK;\r
-                       break;\r
+                       endLoop = TRUE;\r
                }\r
        }\r
        return ret;\r
@@ -515,7 +513,7 @@ static INLINE Std_ReturnType canTansmitPaddingHelper(
 // - - - - - - - - - - - - - -\r
 \r
 static INLINE void sendFlowControlFrame(const CanTp_RxNSduType *rxConfig, CanTp_ChannelPrivateType *rxRuntime, BufReq_ReturnType flowStatus) {\r
-       int indexCount = 0;\r
+       uint8 indexCount = 0;\r
        Std_ReturnType ret = E_NOT_OK;\r
        PduInfoType pduInfo;\r
        uint8 sduData[8]; // Note that buffer in declared on the stack.\r
@@ -533,15 +531,15 @@ static INLINE void sendFlowControlFrame(const CanTp_RxNSduType *rxConfig, CanTp_
                sduData[indexCount++] = ISO15765_TPCI_FC | ISO15765_FLOW_CONTROL_STATUS_CTS;\r
                spaceFreePduRBuffer = rxRuntime->pdurBuffer->SduLength - rxRuntime->pdurBufferCount;\r
                if (rxConfig->CanTpAddressingFormant == CANTP_EXTENDED) { /** @req CANTP094 *//** @req CANTP095 */\r
-                       computedBs = spaceFreePduRBuffer / MAX_PAYLOAD_SF_EXT_ADDR + 1;  // + 1 is for local buffer.\r
+                       computedBs = (spaceFreePduRBuffer / MAX_PAYLOAD_SF_EXT_ADDR) + 1;  // + 1 is for local buffer.\r
                } else {\r
-                       computedBs = spaceFreePduRBuffer / MAX_PAYLOAD_SF_STD_ADDR + 1;  // + 1 is for local buffer.\r
+                       computedBs = (spaceFreePduRBuffer / MAX_PAYLOAD_SF_STD_ADDR) + 1;  // + 1 is for local buffer.\r
                }\r
                if (computedBs > rxConfig->CanTpBs) { // /** @req CANTP091 *//** @req CANTP084 */\r
                        computedBs = rxConfig->CanTpBs;\r
                }\r
                DEBUG( DEBUG_MEDIUM, "computedBs:%d\n", computedBs);\r
-               sduData[indexCount++] = computedBs;\r
+               sduData[indexCount++] = computedBs; // 734 PC-lint: Okej att casta till uint8?\r
                sduData[indexCount++] = (uint8) rxConfig->CanTpSTmin;\r
                rxRuntime->iso15765.nextFlowControlCount = computedBs;\r
                pduInfo.SduLength = indexCount;\r
@@ -573,7 +571,7 @@ static INLINE void sendFlowControlFrame(const CanTp_RxNSduType *rxConfig, CanTp_
 \r
 static INLINE void handleConsecutiveFrame(const CanTp_RxNSduType *rxConfig,\r
                CanTp_ChannelPrivateType *rxRuntime, const PduInfoType *rxPduData) {\r
-       int indexCount = 0;\r
+       uint8 indexCount = 0;\r
        uint8 segmentNumber = 0;\r
        uint8 extendedAddress = 0;\r
        PduLengthType bytesLeftToCopy = 0;\r
@@ -633,7 +631,7 @@ static INLINE void handleConsecutiveFrame(const CanTp_RxNSduType *rxConfig,
                                                DEBUG( DEBUG_MEDIUM, "Unexpected error, could not copy 'unaligned leftover' " "data to local buffer!\n");\r
                                        }\r
                                }\r
-                               if ( dataCopyFailure == FALSE ) {\r
+                               if ( !dataCopyFailure ) {\r
                                        rxRuntime->iso15765.framesHandledCount++;\r
                                        rxRuntime->iso15765.stateTimeoutCount = CANTP_CONVERT_MS_TO_MAIN_CYCLES(rxConfig->CanTpNbr);\r
                                        rxRuntime->iso15765.state = RX_WAIT_SDU_BUFFER;\r
@@ -659,7 +657,7 @@ static INLINE void handleConsecutiveFrame(const CanTp_RxNSduType *rxConfig,
                        }\r
                }\r
        }\r
-}\r
+} // 438, 550 PC-lint: extendedAdress not accessed. Extended adress needs to be implemented. Ticket #136\r
 \r
 // - - - - - - - - - - - - - -\r
 \r
@@ -671,8 +669,8 @@ static INLINE Std_ReturnType sendConsecutiveFrame(
        PduLengthType consecutiveFrameActualPayload = 0;\r
        PduLengthType remaningSduDataSize = 0;\r
        PduInfoType pduInfo;\r
-       int copyCount = 0;\r
-       int indexCount = 0;\r
+       uint16 copyCount = 0;\r
+       uint16 indexCount = 0;\r
 \r
        if (txConfig->CanTpAddressingMode == CANTP_EXTENDED) { /** @req CANTP094 *//** @req CANTP095 */\r
                sduData[indexCount++] = (uint8) txConfig->CanTpNTa->CanTpNTa; // Target address.\r
@@ -782,7 +780,7 @@ static INLINE void handleFlowControlFrame(const CanTp_TxNSduType *txConfig,
                case ISO15765_FLOW_CONTROL_STATUS_CTS:\r
 #if 1\r
                        {       // This construction is added to make the hcs12 compiler happy.\r
-                               const uint16 bs = txPduData->SduDataPtr[indexCount++];\r
+                               const uint8 bs = txPduData->SduDataPtr[indexCount++];\r
                                txRuntime->iso15765.BS = bs;\r
                                txRuntime->iso15765.nextFlowControlCount = bs;\r
                        }\r
@@ -815,7 +813,7 @@ static INLINE void handleFlowControlFrame(const CanTp_TxNSduType *txConfig,
        } else {\r
                DEBUG( DEBUG_MEDIUM, "Ignoring flow control, we do not expect it!");\r
        }\r
-}\r
+} // 438, 550 PC-lint: extendAdress används inte. EN BUG? Behöver fixas\r
 \r
 \r
 // - - - - - - - - - - - - - -\r
@@ -897,11 +895,13 @@ static INLINE void handleFirstFrame(const CanTp_RxNSduType *rxConfig,
        // Validate that that there is a reason for using the segmented transfers and\r
        // if not simply skip (single frame should have been used).\r
        if (rxConfig->CanTpAddressingFormant == CANTP_STANDARD) { /** @req CANTP094 *//** @req CANTP095 */\r
-               if (pduLength <= MAX_PAYLOAD_SF_STD_ADDR)\r
+               if (pduLength <= MAX_PAYLOAD_SF_STD_ADDR){\r
                        return;\r
+               }\r
        } else {\r
-               if (pduLength <= MAX_PAYLOAD_SF_EXT_ADDR)\r
+               if (pduLength <= MAX_PAYLOAD_SF_EXT_ADDR){\r
                        return;\r
+               }\r
        }\r
        // Validate that the SDU is full length in this first frame.\r
        if (rxPduData->SduLength < CANIF_PDU_MAX_LENGTH) {\r
@@ -984,7 +984,7 @@ static INLINE ISO15765FrameType calcRequiredProtocolFrameType(
 static INLINE Std_ReturnType sendSingleFrame(const CanTp_TxNSduType *txConfig,\r
                CanTp_ChannelPrivateType *txRuntime) {\r
        Std_ReturnType ret;\r
-       int indexCount = 0;\r
+       uint16 indexCount = 0;\r
        PduInfoType pduInfo;\r
        uint8 sduData[CANIF_PDU_MAX_LENGTH];\r
 \r
@@ -992,7 +992,7 @@ static INLINE Std_ReturnType sendSingleFrame(const CanTp_TxNSduType *txConfig,
        if (txConfig->CanTpAddressingMode == CANTP_EXTENDED) { /** @req CANTP094 *//** @req CANTP095 */\r
                sduData[indexCount++] = (uint8) txConfig->CanTpNTa->CanTpNTa; // Target address.\r
        }\r
-       sduData[indexCount++] = ISO15765_TPCI_SF | txRuntime->transferTotal;\r
+       sduData[indexCount++] = ISO15765_TPCI_SF | txRuntime->transferTotal; // 734 PC-lint: Okej att casta till uint8?\r
        for (int i = 0; i < txRuntime->transferTotal; i++) {\r
                sduData[indexCount++] = txRuntime->pdurBuffer->SduDataPtr[i];\r
        }\r
@@ -1008,8 +1008,8 @@ static INLINE Std_ReturnType sendSingleFrame(const CanTp_TxNSduType *txConfig,
 static INLINE Std_ReturnType sendFirstFrame(const CanTp_TxNSduType *txConfig,\r
                CanTp_ChannelPrivateType *txRuntime) {\r
        Std_ReturnType ret;\r
-       int indexCount = 0;\r
-       int i = 0;\r
+       uint8 indexCount = 0;\r
+       uint8 i = 0;\r
        PduInfoType pduInfo;\r
        uint8 sduData[CANIF_PDU_MAX_LENGTH];\r
 \r
@@ -1120,7 +1120,7 @@ Std_ReturnType CanTp_Transmit(PduIdType CanTpTxSduId,
                        SERVICE_ID_CANTP_TRANSMIT, CANTP_E_UNINIT ); /** @req CANTP031 */\r
        VALIDATE( CanTpTxSduId < CANTP_NSDU_CONFIG_LIST_SIZE, SERVICE_ID_CANTP_TRANSMIT, CANTP_E_INVALID_TX_ID );\r
 \r
-       txConfig = (CanTp_TxNSduType*)&CanTpConfig.CanTpNSduList[CanTpTxSduId].configData;\r
+       txConfig =&CanTpConfig.CanTpNSduList[CanTpTxSduId].configData.CanTpTxNSdu;\r
 \r
        txRuntime = &CanTpRunTimeData.runtimeDataList[txConfig->CanTpTxChannel]; // Runtime data.\r
        if (txRuntime->iso15765.state == IDLE) {\r
@@ -1166,7 +1166,7 @@ Std_ReturnType FrTp_CancelTransmitRequest(PduIdType FrTpTxPduId,
 // - - - - - - - - - - - - - -\r
 \r
 \r
-void CanTp_Init()\r
+void CanTp_Init(void)\r
 {\r
        CanTp_ChannelPrivateType *runtimeData;\r
        const CanTp_TxNSduType *txConfigParams;\r
@@ -1253,32 +1253,36 @@ void CanTp_RxIndication_Main(PduIdType CanTpRxPduId,
                        DEBUG( DEBUG_MEDIUM, "calling handleSingleFrame!\n");\r
                        handleSingleFrame(rxConfigParams, runtimeParams, CanTpRxPduPtr);\r
                }\r
-               else\r
+               else{\r
                        DEBUG( DEBUG_MEDIUM, "Single frame received on ISO15765-Tx - is ignored!\n");\r
+               }\r
                break;\r
        }\r
        case FIRST_FRAME: {\r
                if (rxConfigParams != NULL) {\r
                        DEBUG( DEBUG_MEDIUM, "calling handleFirstFrame!\n");\r
                        handleFirstFrame(rxConfigParams, runtimeParams, CanTpRxPduPtr);\r
-               } else\r
+               }else{\r
                        DEBUG( DEBUG_MEDIUM, "First frame received on ISO15765-Tx - is ignored!\n");\r
+               }\r
                break;\r
        }\r
        case CONSECUTIVE_FRAME: {\r
                if (rxConfigParams != NULL) {\r
                        DEBUG( DEBUG_MEDIUM, "calling handleConsecutiveFrame!\n");\r
                        handleConsecutiveFrame(rxConfigParams, runtimeParams, CanTpRxPduPtr);\r
-               } else\r
+               } else {\r
                        DEBUG( DEBUG_MEDIUM, "Consecutive frame received on ISO15765-Tx - is ignored!\n");\r
+               }\r
                break;\r
        }\r
        case FLOW_CONTROL_CTS_FRAME: {\r
                if (txConfigParams != NULL) {\r
                        DEBUG( DEBUG_MEDIUM, "calling handleFlowControlFrame!\n");\r
                        handleFlowControlFrame(txConfigParams, runtimeParams, CanTpRxPduPtr);\r
-               } else\r
+               } else {\r
                        DEBUG( DEBUG_MEDIUM, "Flow control frame received on ISO15765-Rx - is ignored!\n");\r
+               }\r
                break;\r
        }\r
        case INVALID_FRAME: {\r
@@ -1293,7 +1297,7 @@ void CanTp_RxIndication_Main(PduIdType CanTpRxPduId,
 \r
 // - - - - - - - - - - - - - -\r
 \r
-void CanTp_TxConfirmation(PduIdType PduId) /** @req CANTP076 */\r
+void CanTp_TxConfirmation(PduIdType CanTpTxPduId) /** @req CANTP076 */\r
 {\r
        const CanTp_RxNSduType *rxConfigParams = NULL;\r
        const CanTp_TxNSduType *txConfigParams = NULL;\r
@@ -1302,25 +1306,25 @@ void CanTp_TxConfirmation(PduIdType PduId) /** @req CANTP076 */
 \r
        VALIDATE_NO_RV( CanTpRunTimeData.internalState == CANTP_ON,\r
                        SERVICE_ID_CANTP_TX_CONFIRMATION, CANTP_E_UNINIT ); /** @req CANTP031 */\r
-       VALIDATE_NO_RV( PduId < CANTP_NSDU_CONFIG_LIST_SIZE,\r
+       VALIDATE_NO_RV( CanTpTxPduId < CANTP_NSDU_CONFIG_LIST_SIZE,\r
                        SERVICE_ID_CANTP_TX_CONFIRMATION, CANTP_E_INVALID_TX_ID ); /** @req CANTP158 */\r
 \r
        /** @req CANTP236 */\r
-       if ( CanTpConfig.CanTpNSduList[PduId].direction == IS015765_TRANSMIT ) {\r
-               txConfigParams = (CanTp_TxNSduType*)&CanTpConfig.CanTpNSduList[PduId].configData;\r
+       if ( CanTpConfig.CanTpNSduList[CanTpTxPduId].direction == IS015765_TRANSMIT ) {\r
+               txConfigParams = (CanTp_TxNSduType*)&CanTpConfig.CanTpNSduList[CanTpTxPduId].configData;\r
                CanTpRunTimeData.runtimeDataList[txConfigParams->CanTpTxChannel].iso15765.NasNarPending = FALSE;\r
 #if (CANTP_IMMEDIATE_TX_CONFIRMATION == STD_OFF)\r
                CanTpRunTimeData.runtimeDataList[txConfigParams->CanTpTxChannel].iso15765.txConfirmed = TRUE;\r
 #endif\r
        } else {\r
-               rxConfigParams = (CanTp_RxNSduType*)&CanTpConfig.CanTpNSduList[PduId].configData;\r
+               rxConfigParams = (CanTp_RxNSduType*)&CanTpConfig.CanTpNSduList[CanTpTxPduId].configData;\r
                CanTpRunTimeData.runtimeDataList[rxConfigParams->CanTpRxChannel].iso15765.NasNarPending = FALSE;\r
        }\r
 }\r
 \r
 // - - - - - - - - - - - - - -\r
 \r
-void CanTp_Shutdown() /** @req CANTP202 *//** @req CANTP200 *//** @req CANTP010 */\r
+void CanTp_Shutdown(void) /** @req CANTP202 *//** @req CANTP200 *//** @req CANTP010 */\r
 {\r
        VALIDATE_NO_RV( CanTpRunTimeData.internalState == CANTP_ON,\r
                        SERVICE_ID_CANTP_SHUTDOWN, CANTP_E_UNINIT ); /** @req CANTP031 */\r
@@ -1348,7 +1352,7 @@ static inline boolean checkNasNarTimeout(CanTp_ChannelPrivateType *runtimeData)
 // - - - - - - - - - - - - - -\r
 \r
 \r
-void CanTp_MainFunction()\r
+void CanTp_MainFunction(void)\r
 {\r
        BufReq_ReturnType ret;\r
        CanTpFifoQueueItem item;\r
@@ -1386,8 +1390,9 @@ void CanTp_MainFunction()
                        case TX_WAIT_CAN_TP_TRANSMIT_CAN_TP_PROVIDE_TX_BUFFER:\r
                        {\r
                                TIMER_DECREMENT(txRuntimeListItem->iso15765.stateTimeoutCount); /** @req CANTP185 */\r
-                               if (txRuntimeListItem->iso15765.stateTimeoutCount == 0)\r
+                               if (txRuntimeListItem->iso15765.stateTimeoutCount == 0){\r
                                        PduR_CanTpTxConfirmation(txConfigListItem->PduR_PduId, NTFRSLT_E_NOT_OK); /** @req CANTP204 *//** @req CANTP185 */\r
+                               }\r
                                txRuntimeListItem->iso15765.state = IDLE;\r
                                txRuntimeListItem->mode = CANTP_TX_WAIT;\r
                                break;\r
index 17fd1e4cc6005bb4ca2e525c9e6f6a4a37c66ae2..0b8120aa77dc6d48d927a1e3cf72c36971b6df76 100644 (file)
 \r
 const Com_ConfigType * ComConfig;\r
 \r
-Com_Arc_IPdu_type Com_Arc_IPdu[COM_N_IPDUS];\r
-Com_Arc_Signal_type Com_Arc_Signal[COM_N_SIGNALS];\r
-Com_Arc_GroupSignal_type Com_Arc_GroupSignal[COM_N_GROUP_SIGNALS];\r
-\r
-Com_Arc_Config_type Com_Arc_Config = {\r
-       .ComIPdu = Com_Arc_IPdu,\r
-       .ComSignal = Com_Arc_Signal,\r
-       .ComGroupSignal = Com_Arc_GroupSignal\r
-};\r
-\r
 \r
 void Com_Init(const Com_ConfigType *config ) {\r
        DEBUG(DEBUG_LOW, "--Initialization of COM--\n");\r
@@ -53,43 +43,34 @@ void Com_Init(const Com_ConfigType *config ) {
        uint32 earliestDeadline;\r
        uint32 firstTimeout;\r
 \r
-       Com_Arc_Config.OutgoingPdu.SduDataPtr = malloc(8);\r
-\r
        // Initialize each IPdu\r
        //ComIPdu_type *IPdu;\r
        //Com_Arc_IPdu_type *Arc_IPdu;\r
        const ComSignal_type *Signal;\r
        const ComGroupSignal_type *GroupSignal;\r
-       for (int i = 0; !ComConfig->ComIPdu[i].Com_Arc_EOL; i++) {\r
+       for (uint16 i = 0; !ComConfig->ComIPdu[i].Com_Arc_EOL; i++) {\r
                Com_Arc_Config.ComNIPdu++;\r
 \r
-               GET_IPdu(i);\r
-               GET_ArcIPdu(i);\r
+               const ComIPdu_type *IPdu = GET_IPdu(i);\r
+               Com_Arc_IPdu_type *Arc_IPdu = GET_ArcIPdu(i);\r
 \r
                if (i >= COM_N_IPDUS) {\r
                        DET_REPORTERROR(COM_MODULE_ID, COM_INSTANCE_ID, 0x01, COM_E_TOO_MANY_IPDU);\r
-                       assert(0);\r
                        failure = 1;\r
                        break;\r
                }\r
 \r
                // If this is a TX and cyclic IPdu, configure the first deadline.\r
-               if (IPdu->ComIPduDirection == SEND &&\r
-                               (IPdu->ComTxIPdu.ComTxModeTrue.ComTxModeMode == PERIODIC || IPdu->ComTxIPdu.ComTxModeTrue.ComTxModeMode == MIXED)) {\r
+               if ( (IPdu->ComIPduDirection == SEND) &&\r
+                               ( (IPdu->ComTxIPdu.ComTxModeTrue.ComTxModeMode == PERIODIC) || (IPdu->ComTxIPdu.ComTxModeTrue.ComTxModeMode == MIXED) )) {\r
                        //IPdu->Com_Arc_TxIPduTimers.ComTxModeTimePeriodTimer = IPdu->ComTxIPdu.ComTxModeTrue.ComTxModeTimeOffsetFactor;\r
                        Arc_IPdu->Com_Arc_TxIPduTimers.ComTxModeTimePeriodTimer = IPdu->ComTxIPdu.ComTxModeTrue.ComTxModeTimeOffsetFactor;\r
                }\r
 \r
 \r
                // Reset earliest deadline.\r
-               earliestDeadline = -1; // Gives the max value of uint32 due to overflow.\r
-               firstTimeout = -1;\r
-\r
-               // Reserve memory for all defined signals.\r
-               Arc_IPdu->ComIPduDataPtr = malloc(IPdu->ComIPduSize);\r
-               if (Arc_IPdu->ComIPduDataPtr == NULL) {\r
-                       failure = 1;\r
-               }\r
+               earliestDeadline = 0xffffffffu;\r
+               firstTimeout = 0xffffffffu;\r
 \r
                // Initialize the memory with the default value.\r
                if (IPdu->ComIPduDirection == SEND) {\r
@@ -98,9 +79,9 @@ void Com_Init(const Com_ConfigType *config ) {
 \r
                // For each signal in this PDU.\r
                //Arc_IPdu->NComIPduSignalRef = 0;\r
-               for (int j = 0; IPdu->ComIPduSignalRef != NULL && IPdu->ComIPduSignalRef[j] != NULL; j++) {\r
+               for (uint16 j = 0; (IPdu->ComIPduSignalRef != NULL) && (IPdu->ComIPduSignalRef[j] != NULL) ; j++) {\r
                        Signal = IPdu->ComIPduSignalRef[j];\r
-                       GET_ArcSignal(Signal->ComHandleId);\r
+                       Com_Arc_Signal_type * Arc_Signal = GET_ArcSignal(Signal->ComHandleId);\r
 \r
                        // If this signal already has been configured this is most likely an error.\r
                        if (Arc_Signal->ComIPduDataPtr != NULL) {\r
@@ -141,16 +122,11 @@ void Com_Init(const Com_ConfigType *config ) {
 \r
                        // If this signal is a signal group\r
                        if (Signal->Com_Arc_IsSignalGroup) {\r
-                               Arc_Signal->Com_Arc_ShadowBuffer = malloc(IPdu->ComIPduSize);\r
-\r
-                               if (Arc_Signal->Com_Arc_ShadowBuffer == NULL) {\r
-                                       failure = 1;\r
-                               }\r
 \r
                                // For each group signal of this signal group.\r
-                               for(int h = 0; Signal->ComGroupSignal[h] != NULL; h++) {\r
+                               for(uint8 h = 0; Signal->ComGroupSignal[h] != NULL; h++) {\r
                                        GroupSignal = Signal->ComGroupSignal[h];\r
-                                       GET_ArcGroupSignal(GroupSignal->ComHandleId);\r
+                                       Com_Arc_GroupSignal_type *Arc_GroupSignal = GET_ArcGroupSignal(GroupSignal->ComHandleId);\r
                                        // Set pointer to shadow buffer\r
                                        Arc_GroupSignal->Com_Arc_ShadowBuffer = Arc_Signal->Com_Arc_ShadowBuffer;\r
                                        // Initialize group signal data.\r
@@ -161,46 +137,14 @@ void Com_Init(const Com_ConfigType *config ) {
                                // Initialize signal data.\r
                                Com_WriteSignalDataToPdu(Signal->ComHandleId, Signal->ComSignalInitValue);\r
                        }\r
-\r
-                       // Check filter configuration\r
-                       if (IPdu->ComIPduDirection == RECEIVE) {\r
-\r
-                               // This represents an invalid configuration of the UINT8_N datatype\r
-                               if ((Signal->ComSignalType == UINT8_N\r
-                                       &&\r
-                                       (Signal->ComFilter.ComFilterAlgorithm == MASKED_NEW_EQUALS_X\r
-                                       || Signal->ComFilter.ComFilterAlgorithm == MASKED_NEW_DIFFERS_X\r
-                                       || Signal->ComFilter.ComFilterAlgorithm == MASKED_NEW_DIFFERS_MASKED_OLD\r
-                                       || Signal->ComFilter.ComFilterAlgorithm == NEW_IS_WITHIN\r
-                                       || Signal->ComFilter.ComFilterAlgorithm == NEW_IS_OUTSIDE\r
-                                       || Signal->ComFilter.ComFilterAlgorithm == ONE_EVERY_N))) {\r
-\r
-                                       DET_REPORTERROR(COM_MODULE_ID, COM_INSTANCE_ID, 0x01, COM_E_INVALID_FILTER_CONFIGURATION);\r
-                                       failure = 1;\r
-                               }\r
-\r
-                               // This represens an invalid configuration of the BOOLEAN datatype\r
-                               if ((Signal->ComSignalType == BOOLEAN\r
-                                       &&\r
-                                       (Signal->ComFilter.ComFilterAlgorithm == NEW_IS_WITHIN\r
-                                       || Signal->ComFilter.ComFilterAlgorithm == NEW_IS_OUTSIDE))) {\r
-\r
-\r
-                                       DET_REPORTERROR(COM_MODULE_ID, COM_INSTANCE_ID, 0x01, COM_E_INVALID_FILTER_CONFIGURATION);\r
-                                       failure = 1;\r
-                               }\r
-                       // Initialize filter values. COM230\r
-                       //signal.ComFilter.ComFilterNewValue = ComConfig->ComIPdu[i].ComTxIPdu.ComTxIPduUnusedAreasDefault;\r
-                       //signal.ComFilter.ComFilterOldValue = ComConfig->ComIPdu[i].ComTxIPdu.ComTxIPduUnusedAreasDefault;\r
-                       }\r
                }\r
 \r
                // Configure per I-PDU based deadline monitoring.\r
-               for (int j = 0; IPdu->ComIPduSignalRef != NULL && IPdu->ComIPduSignalRef[j] != NULL; j++) {\r
+               for (uint16 j = 0; (IPdu->ComIPduSignalRef != NULL) && (IPdu->ComIPduSignalRef[j] != NULL); j++) {\r
                        Signal = IPdu->ComIPduSignalRef[j];\r
-                       GET_ArcSignal(Signal->ComHandleId);\r
+                       Com_Arc_Signal_type * Arc_Signal = GET_ArcSignal(Signal->ComHandleId);\r
 \r
-                       if (Signal->ComTimeoutFactor > 0 && !Signal->ComSignalArcUseUpdateBit) {\r
+                       if ( (Signal->ComTimeoutFactor > 0) && (!Signal->ComSignalArcUseUpdateBit) ) {\r
                                Arc_Signal->ComTimeoutFactor = earliestDeadline;\r
                                Arc_Signal->Com_Arc_DeadlineCounter = firstTimeout;\r
                        }\r
@@ -210,11 +154,6 @@ void Com_Init(const Com_ConfigType *config ) {
 \r
        // An error occurred.\r
        if (failure) {\r
-               // Free allocated memory\r
-               for (int i = 0; !ComConfig->ComIPdu[i].Com_Arc_EOL; i++) {\r
-                       // Release memory for all defined signals.\r
-                       //free(ComConfig->ComIPdu[i].ComIPduDataPtr);\r
-               }\r
                DEBUG(DEBUG_LOW, "--Initialization of COM failed--\n");\r
                //DET_REPORTERROR(COM_MODULE_ID, COM_INSTANCE_ID, 0x01, COM_E_INVALID_FILTER_CONFIGURATION);\r
        } else {\r
@@ -228,7 +167,8 @@ void Com_DeInit( void ) {
 }\r
 \r
 void Com_IpduGroupStart(Com_PduGroupIdType IpduGroupId,boolean Initialize) {\r
-       for (int i = 0; !ComConfig->ComIPdu[i].Com_Arc_EOL; i++) {\r
+       (void)Initialize; // Nothing to be done. This is just to avoid Lint warning.\r
+       for (uint16 i = 0; !ComConfig->ComIPdu[i].Com_Arc_EOL; i++) {\r
                if (ComConfig->ComIPdu[i].ComIPduGroupRef == IpduGroupId) {\r
                        Com_Arc_Config.ComIPdu[i].Com_Arc_IpduStarted = 1;\r
                }\r
@@ -236,7 +176,7 @@ void Com_IpduGroupStart(Com_PduGroupIdType IpduGroupId,boolean Initialize) {
 }\r
 \r
 void Com_IpduGroupStop(Com_PduGroupIdType IpduGroupId) {\r
-       for (int i = 0; !ComConfig->ComIPdu[i].Com_Arc_EOL; i++) {\r
+       for (uint16 i = 0; !ComConfig->ComIPdu[i].Com_Arc_EOL; i++) {\r
                if (ComConfig->ComIPdu[i].ComIPduGroupRef == IpduGroupId) {\r
                        Com_Arc_Config.ComIPdu[i].Com_Arc_IpduStarted = 0;\r
                }\r
index 79f053c292c07457be14964e05df00596bce11cc..2102b5b2b6217b082259abefcf9e2546ae8f5400 100644 (file)
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
 \r
-\r
+#ifndef COM_ARC_TYPES_H_\r
+#define COM_ARC_TYPES_H_\r
 \r
 #include "Std_Types.h"\r
 #include "Com_Types.h"\r
 \r
-#define COM_ARC_FILTER_ENABLED STD_OFF\r
 \r
 typedef struct {\r
        uint32 ComFilterArcN;\r
@@ -29,15 +29,11 @@ typedef struct {
 \r
 typedef struct {\r
 \r
-#if (COM_ARC_FILTER_ENABLED == STD_ON)\r
-       Com_Arc_Filter_type ComFilter;\r
-#endif\r
-\r
        uint32 Com_Arc_DeadlineCounter;\r
        uint32 ComTimeoutFactor;\r
        void *ComIPduDataPtr;\r
 \r
-       uint8 ComIPduHandleId;\r
+       uint16 ComIPduHandleId;\r
        uint8 ComSignalUpdated;\r
 \r
        /* For signal groups */\r
@@ -73,3 +69,5 @@ typedef struct {
        Com_Arc_GroupSignal_type *ComGroupSignal;\r
        PduInfoType OutgoingPdu;\r
 } Com_Arc_Config_type;\r
+\r
+#endif\r
index 3cdd0960d8b9c18faefda28b4381e477e06483af..c58676c4429da33eda26302254af0162feeb60a4 100644 (file)
 #include "Com_misc.h"\r
 #include "debug.h"\r
 #include "PduR.h"\r
-#include "PduR_Com.h"\r
-#include "Byteorder.h"\r
 #include "Det.h"\r
 \r
-extern Com_Arc_Config_type Com_Arc_Config;\r
 \r
 uint8 Com_SendSignal(Com_SignalIdType SignalId, const void *SignalDataPtr) {\r
        VALIDATE_SIGNAL(SignalId, 0x0a, E_NOT_OK);\r
        // Store pointer to signal for easier coding.\r
-       GET_Signal(SignalId);\r
-       GET_ArcSignal(SignalId);\r
-       GET_IPdu(Arc_Signal->ComIPduHandleId);\r
-       GET_ArcIPdu(Arc_Signal->ComIPduHandleId);\r
+       const ComSignal_type * Signal = GET_Signal(SignalId);\r
+       Com_Arc_Signal_type * Arc_Signal = GET_ArcSignal(SignalId);\r
+       const ComIPdu_type *IPdu = GET_IPdu(Arc_Signal->ComIPduHandleId);\r
+       Com_Arc_IPdu_type *Arc_IPdu = GET_ArcIPdu(Arc_Signal->ComIPduHandleId);\r
 \r
        //DEBUG(DEBUG_LOW, "Com_SendSignal: id %d, nBytes %d, BitPosition %d, intVal %d\n", SignalId, nBytes, signal->ComBitPosition, (uint32)*(uint8 *)SignalDataPtr);\r
 \r
@@ -85,20 +82,21 @@ Std_ReturnType Com_TriggerTransmit(PduIdType ComTxPduId, uint8 *SduPtr) {
        /*\r
         * COM395: This function must override the IPdu callouts used in Com_TriggerIPduTransmit();\r
         */\r
-       GET_IPdu(ComTxPduId);\r
-       GET_ArcIPdu(ComTxPduId);\r
+       const ComIPdu_type *IPdu = GET_IPdu(ComTxPduId);\r
+       Com_Arc_IPdu_type *Arc_IPdu = GET_ArcIPdu(ComTxPduId);\r
 \r
        memcpy(SduPtr, Arc_IPdu->ComIPduDataPtr, IPdu->ComIPduSize);\r
        return E_OK;\r
 }\r
 \r
 \r
+//lint -esym(904, Com_TriggerIPduSend) //PC-Lint Exception of rule 14.7\r
 void Com_TriggerIPduSend(PduIdType ComTxPduId) {\r
        PDU_ID_CHECK(ComTxPduId, 0x17);\r
 \r
        //DEBUG(DEBUG_MEDIUM, "Com_TriggerIPduSend sending IPdu %d... ", ComTxPduId);\r
-       GET_IPdu(ComTxPduId);\r
-       GET_ArcIPdu(ComTxPduId);\r
+       const ComIPdu_type *IPdu = GET_IPdu(ComTxPduId);\r
+       Com_Arc_IPdu_type *Arc_IPdu = GET_ArcIPdu(ComTxPduId);\r
 \r
        // Is the IPdu ready for transmission?\r
        if (Arc_IPdu->Com_Arc_TxIPduTimers.ComTxIPduMinimumDelayTimer == 0) {\r
@@ -126,7 +124,7 @@ void Com_TriggerIPduSend(PduIdType ComTxPduId) {
                // Send IPdu!\r
                if (PduR_ComTransmit(IPdu->ArcIPduOutgoingId, &Com_Arc_Config.OutgoingPdu) == E_OK) {\r
                        // Clear all update bits for the contained signals\r
-                       for (int i = 0; IPdu->ComIPduSignalRef != NULL && IPdu->ComIPduSignalRef[i] != NULL; i++) {\r
+                       for (uint8 i = 0; (IPdu->ComIPduSignalRef != NULL) && (IPdu->ComIPduSignalRef[i] != NULL); i++) {\r
                        //for (int i = 0; i < Arc_IPdu->NComIPduSignalRef; i++) {\r
                                if (IPdu->ComIPduSignalRef[i]->ComSignalArcUseUpdateBit) {\r
                                        CLEARBIT(Arc_IPdu->ComIPduDataPtr, IPdu->ComIPduSignalRef[i]->ComUpdateBitPosition);\r
@@ -145,15 +143,16 @@ void Com_TriggerIPduSend(PduIdType ComTxPduId) {
        }\r
 }\r
 \r
-Std_ReturnType Com_RxIndication(PduIdType ComRxPduId, const uint8* SduPtr) {\r
-       PDU_ID_CHECK(ComRxPduId, 0x14, E_NOT_OK);\r
+//lint -esym(904, Com_RxIndication) //PC-Lint Exception of rule 14.7\r
+void Com_RxIndication(PduIdType ComRxPduId, const uint8* SduPtr) {\r
+       PDU_ID_CHECK(ComRxPduId, 0x14);\r
 \r
-       GET_IPdu(ComRxPduId);\r
-       GET_ArcIPdu(ComRxPduId);\r
+       const ComIPdu_type *IPdu = GET_IPdu(ComRxPduId);\r
+       Com_Arc_IPdu_type *Arc_IPdu = GET_ArcIPdu(ComRxPduId);\r
 \r
        // If Ipdu is stopped\r
        if (!Arc_IPdu->Com_Arc_IpduStarted) {\r
-               return E_OK;\r
+               return;\r
        }\r
 \r
        // Check callout status\r
@@ -161,7 +160,7 @@ Std_ReturnType Com_RxIndication(PduIdType ComRxPduId, const uint8* SduPtr) {
                if (!IPdu->ComIPduCallout(ComRxPduId, SduPtr)) {\r
                        // TODO Report error to DET.\r
                        // Det_ReportError();\r
-                       return E_NOT_OK;\r
+                       return;\r
                }\r
        }\r
 \r
@@ -169,66 +168,57 @@ Std_ReturnType Com_RxIndication(PduIdType ComRxPduId, const uint8* SduPtr) {
        memcpy(Arc_IPdu->ComIPduDataPtr, SduPtr, IPdu->ComIPduSize);\r
 \r
        // For each signal.\r
-       const ComSignal_type *signal;\r
-       for (int i = 0; IPdu->ComIPduSignalRef[i] != NULL; i++) {\r
-               signal = IPdu->ComIPduSignalRef[i];\r
-               GET_ArcSignal(signal->ComHandleId);\r
+       const ComSignal_type *comSignal;\r
+       for (uint8 i = 0; IPdu->ComIPduSignalRef[i] != NULL; i++) {\r
+               comSignal = IPdu->ComIPduSignalRef[i];\r
+               Com_Arc_Signal_type * Arc_Signal = GET_ArcSignal(comSignal->ComHandleId);\r
 \r
                // If this signal uses an update bit, then it is only considered if this bit is set.\r
-               if (!signal->ComSignalArcUseUpdateBit ||\r
-                       (signal->ComSignalArcUseUpdateBit && TESTBIT(Arc_IPdu->ComIPduDataPtr, signal->ComUpdateBitPosition))) {\r
+               if ( (!comSignal->ComSignalArcUseUpdateBit) ||\r
+                       ( (comSignal->ComSignalArcUseUpdateBit) && (TESTBIT(Arc_IPdu->ComIPduDataPtr, comSignal->ComUpdateBitPosition)) ) ) {\r
 \r
-                       if (signal->ComTimeoutFactor > 0) { // If reception deadline monitoring is used.\r
+                       if (comSignal->ComTimeoutFactor > 0) { // If reception deadline monitoring is used.\r
                                // Reset the deadline monitoring timer.\r
-                               Arc_Signal->Com_Arc_DeadlineCounter = signal->ComTimeoutFactor;\r
+                               Arc_Signal->Com_Arc_DeadlineCounter = comSignal->ComTimeoutFactor;\r
                        }\r
 \r
-#if (COM_ARC_FILTER_ENABLED == STD_ON)\r
-                       // Zero new filter value.\r
-                       IPdu->ComIPduSignalRef[i]->ComFilter.ComFilterArcNewValue = 0;\r
-                       //Fix this!!!\r
-                       Com_CopyFromSignal(IPdu->ComIPduSignalRef[i], &IPdu->ComIPduSignalRef[i]->ComFilter.ComFilterArcNewValue);\r
-                       // Perform filtering\r
-                       if (Com_Filter(IPdu->ComIPduSignalRef[i])) {\r
-#endif\r
-                               // Check the signal processing mode.\r
-                               if (IPdu->ComIPduSignalProcessing == IMMEDIATE) {\r
-                                       // If signal processing mode is IMMEDIATE, notify the signal callback.\r
-                                       if (IPdu->ComIPduSignalRef[i]->ComNotification != NULL) {\r
-                                               IPdu->ComIPduSignalRef[i]->ComNotification();\r
-                                       }\r
-\r
-                               } else {\r
-                                       // Signal processing mode is DEFERRED, mark the signal as updated.\r
-                                       Arc_Signal->ComSignalUpdated = 1;\r
+                       // Check the signal processing mode.\r
+                       if (IPdu->ComIPduSignalProcessing == IMMEDIATE) {\r
+                               // If signal processing mode is IMMEDIATE, notify the signal callback.\r
+                               if (IPdu->ComIPduSignalRef[i]->ComNotification != NULL) {\r
+                                       IPdu->ComIPduSignalRef[i]->ComNotification();\r
                                }\r
-#if (COM_ARC_FILTER_ENABLED == STD_ON)\r
+\r
+                       } else {\r
+                               // Signal processing mode is DEFERRED, mark the signal as updated.\r
+                               Arc_Signal->ComSignalUpdated = 1;\r
                        }\r
-#endif\r
+\r
                } else {\r
-                       DEBUG(DEBUG_LOW, "Com_RxIndication: Ignored signal %d of I-PD %d since its update bit was not set\n", signal->ComHandleId, ComRxPduId);\r
+                       DEBUG(DEBUG_LOW, "Com_RxIndication: Ignored signal %d of I-PD %d since its update bit was not set\n", comSignal->ComHandleId, ComRxPduId);\r
                }\r
        }\r
 \r
-       return E_OK;\r
+       return;\r
 }\r
 \r
 void Com_TxConfirmation(PduIdType ComTxPduId) {\r
        PDU_ID_CHECK(ComTxPduId, 0x15);\r
+       (void)ComTxPduId; // Nothing to be done. This is just to avoid Lint warning.\r
 }\r
 \r
 \r
 Std_ReturnType Com_SendSignalGroup(Com_SignalGroupIdType SignalGroupId) {\r
 //#warning Com_SendSignalGroup should be performed atomically. Should we disable interrupts here?\r
-       GET_Signal(SignalGroupId);\r
-       GET_ArcSignal(SignalGroupId);\r
-       GET_ArcIPdu(Arc_Signal->ComIPduHandleId);\r
-       GET_IPdu(Arc_Signal->ComIPduHandleId);\r
+       const ComSignal_type * Signal = GET_Signal(SignalGroupId);\r
+       Com_Arc_Signal_type * Arc_Signal = GET_ArcSignal(SignalGroupId);\r
+       Com_Arc_IPdu_type *Arc_IPdu = GET_ArcIPdu(Arc_Signal->ComIPduHandleId);\r
+       const ComIPdu_type *IPdu = GET_IPdu(Arc_Signal->ComIPduHandleId);\r
 \r
 \r
        // Copy shadow buffer to Ipdu data space\r
        const ComGroupSignal_type *groupSignal;\r
-       for (int i = 0; Signal->ComGroupSignal[i] != NULL; i++) {\r
+       for (uint8 i = 0; Signal->ComGroupSignal[i] != NULL; i++) {\r
                groupSignal = Signal->ComGroupSignal[i];\r
                // TODO CopyData\r
                // Com_CopyData(Arc_IPdu->ComIPduDataPtr, Arc_Signal->Com_Arc_ShadowBuffer,  groupSignal->ComBitSize, groupSignal->ComBitPosition, groupSignal->ComBitPosition);\r
@@ -253,12 +243,12 @@ Std_ReturnType Com_SendSignalGroup(Com_SignalGroupIdType SignalGroupId) {
 \r
 Std_ReturnType Com_ReceiveSignalGroup(Com_SignalGroupIdType SignalGroupId) {\r
 //#warning Com_ReceiveSignalGroup should be performed atomically. Should we disable interrupts here?\r
-       GET_Signal(SignalGroupId);\r
-       GET_ArcSignal(SignalGroupId);\r
+       const ComSignal_type * Signal = GET_Signal(SignalGroupId);\r
+       Com_Arc_Signal_type * Arc_Signal = GET_ArcSignal(SignalGroupId);\r
 \r
        // Copy Ipdu data buffer to shadow buffer.\r
        const ComGroupSignal_type *groupSignal;\r
-       for (int i = 0; Signal->ComGroupSignal[i] != NULL; i++) {\r
+       for (uint8 i = 0; Signal->ComGroupSignal[i] != NULL; i++) {\r
                groupSignal = Signal->ComGroupSignal[i];\r
                // TODO: CopyData\r
                // Com_CopyData(Arc_Signal->Com_Arc_ShadowBuffer, Arc_IPdu->ComIPduDataPtr, groupSignal->ComBitSize, groupSignal->ComBitPosition, groupSignal->ComBitPosition);\r
@@ -270,14 +260,14 @@ Std_ReturnType Com_ReceiveSignalGroup(Com_SignalGroupIdType SignalGroupId) {
 }\r
 \r
 void Com_UpdateShadowSignal(Com_SignalIdType SignalId, const void *SignalDataPtr) {\r
-       GET_ArcGroupSignal(SignalId);\r
+       Com_Arc_GroupSignal_type *Arc_GroupSignal = GET_ArcGroupSignal(SignalId);\r
        // TODO: CopyData\r
        // Com_CopyData(Arc_GroupSignal->Com_Arc_ShadowBuffer, SignalDataPtr, GroupSignal->ComBitSize, GroupSignal->ComBitPosition, 0);\r
        Com_WriteSignalDataToPduBuffer(SignalId, TRUE, SignalDataPtr, (void *)Arc_GroupSignal->Com_Arc_ShadowBuffer);\r
 }\r
 \r
 void Com_ReceiveShadowSignal(Com_SignalIdType SignalId, void *SignalDataPtr) {\r
-       GET_ArcGroupSignal(SignalId);\r
+       Com_Arc_GroupSignal_type *Arc_GroupSignal = GET_ArcGroupSignal(SignalId);\r
        // TODO: CopyData\r
        // Com_CopyData(SignalDataPtr, Arc_GroupSignal->Com_Arc_ShadowBuffer, GroupSignal->ComBitSize, 0, GroupSignal->ComBitPosition);\r
        Com_ReadSignalDataFromPduBuffer(SignalId, TRUE, SignalDataPtr, (void *)Arc_GroupSignal->Com_Arc_ShadowBuffer);\r
index 570be8a7949bfd4dd55f04ef98e740b96779f1a2..e745dcc535cc2ab1d90cce885c45e18ccc7c6f9f 100644 (file)
 #ifndef COM_INTERNAL_H_\r
 #define COM_INTERNAL_H_\r
 \r
+#include "Com_Arc_Types.h"\r
 \r
-extern const Com_ConfigType * ComConfig;\r
+extern const Com_ConfigType *ComConfig;\r
+extern Com_Arc_Config_type Com_Arc_Config;\r
 \r
 \r
 \r
@@ -56,27 +58,28 @@ extern const Com_ConfigType * ComConfig;
 #endif\r
 \r
 \r
-#define TESTBIT(source,bit) (*((uint8 *)source + (bit / 8)) & (1 << (bit % 8)))\r
-#define SETBIT(dest,bit) *((uint8 *)dest + (bit / 8)) |= (1 << (bit % 8))\r
-#define CLEARBIT(dest,bit) *((uint8 *)dest + (bit / 8)) &= ~(1 << (bit % 8))\r
+#define TESTBIT(source,bit)    ( *( (uint8 *)source  + (bit / 8) ) &  (uint8)(1u << (bit % 8)) )\r
+#define SETBIT(dest,bit)       ( *( (uint8 *)dest    + (bit / 8) ) |= (uint8)(1u << (bit % 8)) )\r
+#define CLEARBIT(dest,bit)     ( *( (uint8 *)dest    + (bit / 8) ) &= (uint8)~(uint8)(1u << (bit % 8)) )\r
+\r
 \r
 #define GET_Signal(SignalId) \\r
-       const ComSignal_type * Signal = &ComConfig->ComSignal[SignalId]\\r
+       (&ComConfig->ComSignal[SignalId])\r
 \r
 #define GET_ArcSignal(SignalId) \\r
-       Com_Arc_Signal_type * Arc_Signal = &Com_Arc_Config.ComSignal[SignalId]\\r
+       (&Com_Arc_Config.ComSignal[SignalId])\r
 \r
 #define GET_IPdu(IPduId) \\r
-       const ComIPdu_type *IPdu = &ComConfig->ComIPdu[IPduId]\\r
+       (&ComConfig->ComIPdu[IPduId])\r
 \r
 #define GET_ArcIPdu(IPduId) \\r
-       Com_Arc_IPdu_type *Arc_IPdu = &Com_Arc_Config.ComIPdu[IPduId]\\r
+       (&Com_Arc_Config.ComIPdu[IPduId])\r
 \r
 #define GET_GroupSignal(GroupSignalId) \\r
-       const ComGroupSignal_type *GroupSignal = &ComConfig->ComGroupSignal[GroupSignalId]\\r
+       (&ComConfig->ComGroupSignal[GroupSignalId])\r
 \r
 #define GET_ArcGroupSignal(GroupSignalId) \\r
-       Com_Arc_GroupSignal_type *Arc_GroupSignal = &Com_Arc_Config.ComGroupSignal[GroupSignalId]\\r
+       (&Com_Arc_Config.ComGroupSignal[GroupSignalId])\r
 \r
 \r
 \r
diff --git a/communication/Com/Com_RunTest.c b/communication/Com/Com_RunTest.c
deleted file mode 100644 (file)
index 6693c5e..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -------------------------------- Arctic Core ------------------------------\r
- * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
- *\r
- * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
- *\r
- * This source code is free software; you can redistribute it and/or modify it\r
- * under the terms of the GNU General Public License version 2 as published by the\r
- * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
- *\r
- * This program is distributed in the hope that it will be useful, but\r
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
- * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
- * for more details.\r
- * -------------------------------- Arctic Core ------------------------------*/\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-#include "Com_RunTest.h"\r
-#include "Com.h"\r
-#include "Com_Arc_Types.h"\r
-#include "debug.h"\r
-#include <stdlib.h>\r
-\r
-//#define DEBUG_LVL DEBUG_MEDIUM\r
-\r
-static uint8 RTE_ReceivedData[8] = {9,9,9,9,9,9,9,9};\r
-\r
-static void PrintReceivedData(int nBytes) {\r
-       DEBUG(DEBUG_HIGH, "Received data: ");\r
-       for (int i = 0; i < nBytes; i++) {\r
-               DEBUG(DEBUG_HIGH, "%d ", RTE_ReceivedData[i]);\r
-       }\r
-       DEBUG(DEBUG_HIGH,"\n");\r
-}\r
-\r
-void RTE_Notification(void) {\r
-       DEBUG(DEBUG_HIGH, "RTE received notification.");\r
-\r
-       Com_ReceiveSignal(11, (void *)RTE_ReceivedData);\r
-\r
-       PrintReceivedData(8);\r
-\r
-       DEBUG(DEBUG_HIGH, "Received data (signal %d): %d\n", 11, (sint8)RTE_ReceivedData[0]);\r
-}\r
-\r
-uint8 SIL2value;\r
-uint8 SIL2quality;\r
-void RTE_SIL2MESSAGE() {\r
-       Com_ReceiveSignalGroup(2);\r
-       Com_ReceiveShadowSignal(0, &SIL2value);\r
-       Com_ReceiveShadowSignal(1, &SIL2quality);\r
-\r
-       DEBUG(DEBUG_HIGH, "SIL2 message received! value: %d, quality: %d\n", SIL2value, SIL2quality);\r
-}\r
-\r
-static uint16 newSpeed;\r
-static uint16 setNewSpeed = 0;\r
-void RTE_EngineChangeSpeed() {\r
-       setNewSpeed = 1;\r
-}\r
-\r
-void RTE_EngineMain() {\r
-       if (setNewSpeed) {\r
-               Com_ReceiveSignal(1, (void *)&newSpeed);\r
-\r
-       LDEBUG_PRINTF("Setting engine speed to %d rpm\n", newSpeed);\r
-               /*\r
-               static uint16 sig;\r
-               sig = rand() % 10000;\r
-               */\r
-               Com_SendSignal(0, (void *)&newSpeed);\r
-               setNewSpeed = 0;\r
-       }\r
-}\r
index 147ab96dd704b34e9107b8e32caf3764ba59dbca..c31c0ebd326562989d02444820952e86a1d59fa8 100644 (file)
                timer = timer - 1; \\r
        } \\r
 \r
-extern Com_Arc_Config_type Com_Arc_Config;\r
 \r
-void Com_MainFunctionRx() {\r
+\r
+void Com_MainFunctionRx(void) {\r
        //DEBUG(DEBUG_MEDIUM, "Com_MainFunctionRx() excecuting\n");\r
        const ComSignal_type *signal;\r
-       for (int i = 0; !ComConfig->ComSignal[i].Com_Arc_EOL; i++) {\r
+       for (uint16 i = 0; !ComConfig->ComSignal[i].Com_Arc_EOL; i++) {\r
                signal = &ComConfig->ComSignal[i];\r
-               GET_ArcSignal(signal->ComHandleId);\r
-               GET_ArcIPdu(Arc_Signal->ComIPduHandleId);\r
+               Com_Arc_Signal_type * Arc_Signal = GET_ArcSignal(signal->ComHandleId);\r
+               Com_Arc_IPdu_type *Arc_IPdu = GET_ArcIPdu(Arc_Signal->ComIPduHandleId);\r
 \r
                // Monitor signal reception deadline\r
-               if (Arc_IPdu->Com_Arc_IpduStarted && Arc_Signal->ComTimeoutFactor > 0) {\r
+               if ( (Arc_IPdu->Com_Arc_IpduStarted) && (Arc_Signal->ComTimeoutFactor > 0) ) {\r
 \r
                        // Decrease deadline monitoring timer.\r
                        timerDec(Arc_Signal->Com_Arc_DeadlineCounter);\r
@@ -74,34 +74,34 @@ void Com_MainFunctionRx() {
 }\r
 \r
 \r
-void Com_MainFunctionTx() {\r
+void Com_MainFunctionTx(void) {\r
        //DEBUG(DEBUG_MEDIUM, "Com_MainFunctionTx() excecuting\n");\r
        // Decrease timers.\r
        const ComIPdu_type *IPdu;\r
-       for (int i = 0; !ComConfig->ComIPdu[i].Com_Arc_EOL; i++) {\r
+       for (uint16 i = 0; !ComConfig->ComIPdu[i].Com_Arc_EOL; i++) {\r
                IPdu = &ComConfig->ComIPdu[i];\r
-               GET_ArcIPdu(i);\r
+               Com_Arc_IPdu_type *Arc_IPdu = GET_ArcIPdu(i);\r
 \r
                // Is this a IPdu that should be transmitted?\r
-               if (IPdu->ComIPduDirection == SEND && Arc_IPdu->Com_Arc_IpduStarted) {\r
+               if ( (IPdu->ComIPduDirection == SEND) && (Arc_IPdu->Com_Arc_IpduStarted) ) {\r
                        // Decrease minimum delay timer\r
                        timerDec(Arc_IPdu->Com_Arc_TxIPduTimers.ComTxIPduMinimumDelayTimer);\r
 \r
                        // If IPDU has periodic or mixed transmission mode.\r
-                       if (IPdu->ComTxIPdu.ComTxModeTrue.ComTxModeMode == PERIODIC\r
-                               || IPdu->ComTxIPdu.ComTxModeTrue.ComTxModeMode == MIXED) {\r
+                       if ( (IPdu->ComTxIPdu.ComTxModeTrue.ComTxModeMode == PERIODIC)\r
+                               || (IPdu->ComTxIPdu.ComTxModeTrue.ComTxModeMode == MIXED) ) {\r
 \r
                                timerDec(Arc_IPdu->Com_Arc_TxIPduTimers.ComTxModeTimePeriodTimer);\r
 \r
                                // Is it time for a direct transmission?\r
-                               if (IPdu->ComTxIPdu.ComTxModeTrue.ComTxModeMode == MIXED\r
-                                       && Arc_IPdu->Com_Arc_TxIPduTimers.ComTxIPduNumberOfRepetitionsLeft > 0) {\r
+                               if ( (IPdu->ComTxIPdu.ComTxModeTrue.ComTxModeMode == MIXED)\r
+                                       && (Arc_IPdu->Com_Arc_TxIPduTimers.ComTxIPduNumberOfRepetitionsLeft > 0) ) {\r
 \r
                                        timerDec(Arc_IPdu->Com_Arc_TxIPduTimers.ComTxModeRepetitionPeriodTimer);\r
 \r
                                        // Is it time for a transmission?\r
-                                       if (Arc_IPdu->Com_Arc_TxIPduTimers.ComTxModeRepetitionPeriodTimer == 0\r
-                                               && Arc_IPdu->Com_Arc_TxIPduTimers.ComTxIPduMinimumDelayTimer == 0) {\r
+                                       if ( (Arc_IPdu->Com_Arc_TxIPduTimers.ComTxModeRepetitionPeriodTimer == 0)\r
+                                               && (Arc_IPdu->Com_Arc_TxIPduTimers.ComTxIPduMinimumDelayTimer == 0) ) {\r
 \r
                                                Com_TriggerIPduSend(i);\r
 \r
@@ -114,7 +114,7 @@ void Com_MainFunctionTx() {
                                }\r
 \r
                                // Is it time for a cyclic transmission?\r
-                               if (Arc_IPdu->Com_Arc_TxIPduTimers.ComTxModeTimePeriodTimer == 0 && Arc_IPdu->Com_Arc_TxIPduTimers.ComTxIPduMinimumDelayTimer == 0) {\r
+                               if ( (Arc_IPdu->Com_Arc_TxIPduTimers.ComTxModeTimePeriodTimer == 0) && (Arc_IPdu->Com_Arc_TxIPduTimers.ComTxIPduMinimumDelayTimer == 0) ) {\r
 \r
                                        Com_TriggerIPduSend(i);\r
 \r
@@ -129,7 +129,7 @@ void Com_MainFunctionTx() {
                                        timerDec(Arc_IPdu->Com_Arc_TxIPduTimers.ComTxModeRepetitionPeriodTimer);\r
 \r
                                        // Is it time for a transmission?\r
-                                       if (Arc_IPdu->Com_Arc_TxIPduTimers.ComTxModeRepetitionPeriodTimer == 0 && Arc_IPdu->Com_Arc_TxIPduTimers.ComTxIPduMinimumDelayTimer == 0) {\r
+                                       if ( (Arc_IPdu->Com_Arc_TxIPduTimers.ComTxModeRepetitionPeriodTimer == 0) && (Arc_IPdu->Com_Arc_TxIPduTimers.ComTxIPduMinimumDelayTimer == 0) ) {\r
                                                Com_TriggerIPduSend(i);\r
 \r
                                                // Reset periodic timer\r
@@ -146,12 +146,4 @@ void Com_MainFunctionTx() {
                        }\r
                }\r
        }\r
-\r
-       // Send scheduled packages.\r
-       // Cyclic\r
-       for (int i = 0; !ComConfig->ComIPdu[i].Com_Arc_EOL; i++) {\r
-               if (ComConfig->ComIPdu[i].ComIPduDirection == SEND) {\r
-\r
-               }\r
-       }\r
 }\r
diff --git a/communication/Com/Com_TestData.c b/communication/Com/Com_TestData.c
deleted file mode 100644 (file)
index 63b250c..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/* -------------------------------- Arctic Core ------------------------------\r
- * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
- *\r
- * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
- *\r
- * This source code is free software; you can redistribute it and/or modify it\r
- * under the terms of the GNU General Public License version 2 as published by the\r
- * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
- *\r
- * This program is distributed in the hope that it will be useful, but\r
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
- * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
- * for more details.\r
- * -------------------------------- Arctic Core ------------------------------*/\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-extern Com_ConfigType ComConfig_TEST;\r
-\r
-extern const PduR_PBConfigType PduRConfigData_TEST[];\r
-\r
-\r
-PduR_StdRTableType PduRConfigData_TEST = {\r
-       .TargetPduId = 0,\r
-       .NRoutingPaths = 6,\r
-       .RoutingTable = {\r
-               {\r
-                       .FctPtrs = &PduR_StdLinFctPtrs,\r
-                       .DestPduId = 0,\r
-                       .SduLength = 2,\r
-                       .DataProvision = PDUR_DIRECT,\r
-                       .BufferDepth = 3,\r
-               },\r
-               {\r
-                       .FctPtrs = &PduR_StdLinFctPtrs,\r
-                       .DestPduId = 1,\r
-                       .SduLength = 8,\r
-                       .DataProvision = PDUR_NO_PROVISION,\r
-               },\r
-               {\r
-                       .FctPtrs = &PduR_StdLinFctPtrs,\r
-                       .DestPduId = 2,\r
-                       .SduLength = 8,\r
-                       .DataProvision = PDUR_TRIGGER_TRANSMIT,\r
-                       .BufferDepth = 3,\r
-               },\r
-               {\r
-                       .FctPtrs = &PduR_StdLinFctPtrs,\r
-                       .DestPduId = 3,\r
-                       .SduLength = 8,\r
-                       .DataProvision = PDUR_DIRECT,\r
-                       .PduR_GatewayMode = 1,\r
-                       .BufferDepth = 4,\r
-               },\r
-\r
-               /* Gateway mode between lin interfaces but without buffers inbetween */\r
-               {\r
-                       .FctPtrs = &PduR_StdLinFctPtrs,\r
-                       .DestPduId = 4,\r
-                       .SduLength = 8,\r
-                       .DataProvision = PDUR_NO_PROVISION,\r
-                       .PduR_GatewayMode = 1,\r
-               },\r
-\r
-               /* Gateway mode between lin interfaces using trigger transmit data provision */\r
-               {\r
-                       .FctPtrs = &PduR_StdLinFctPtrs,\r
-                       .DestPduId = 5,\r
-                       .SduLength = 8,\r
-                       .DataProvision = PDUR_TRIGGER_TRANSMIT,\r
-                       .PduR_GatewayMode = 1,\r
-                       .BufferDepth = 4,\r
-               },\r
-       }\r
-};\r
index e6521b602ab0710b5fbdf8f0da6d7524ac6a2c9d..8ed736e8265e1f256e69c94d3801ab9e63c293ad 100644 (file)
 \r
 \r
 \r
-\r
-\r
-\r
-#include <stdlib.h>\r
 #include <string.h>\r
 \r
 #include "Com_Arc_Types.h"\r
 #include "Com_Internal.h"\r
 #include "Com_misc.h"\r
 \r
-extern Com_Arc_Config_type Com_Arc_Config;\r
+\r
 \r
 void Com_ReadSignalDataFromPdu(\r
                        const Com_SignalIdType signalId,\r
                        void *signalData) {\r
 \r
        // Get PDU\r
-       GET_Signal(signalId);\r
-       GET_ArcSignal(Signal->ComHandleId);\r
-       GET_ArcIPdu(Arc_Signal->ComIPduHandleId);\r
+       const ComSignal_type * Signal = GET_Signal(signalId);\r
+       Com_Arc_Signal_type * Arc_Signal = GET_ArcSignal(Signal->ComHandleId);\r
+       Com_Arc_IPdu_type *Arc_IPdu = GET_ArcIPdu(Arc_Signal->ComIPduHandleId);\r
 \r
        // Get data\r
        Com_ReadSignalDataFromPduBuffer(\r
@@ -53,9 +49,9 @@ void Com_ReadGroupSignalDataFromPdu(
                void *signalData) {\r
 \r
        // Get PDU\r
-       GET_Signal(parentSignalId);\r
-       GET_ArcSignal(Signal->ComHandleId);\r
-       GET_ArcIPdu(Arc_Signal->ComIPduHandleId);\r
+       const ComSignal_type * Signal = GET_Signal(parentSignalId);\r
+       Com_Arc_Signal_type * Arc_Signal = GET_ArcSignal(Signal->ComHandleId);\r
+       Com_Arc_IPdu_type *Arc_IPdu = GET_ArcIPdu(Arc_Signal->ComIPduHandleId);\r
 \r
        // Get data\r
        Com_ReadSignalDataFromPduBuffer(\r
@@ -78,14 +74,14 @@ void Com_ReadSignalDataFromPduBuffer(
        uint8 bitSize;\r
 \r
        if (!isGroupSignal) {\r
-               GET_Signal(signalId);\r
+               const ComSignal_type * Signal =  GET_Signal(signalId);\r
                signalType = Signal->ComSignalType;\r
                signalEndianess = Signal->ComSignalEndianess;\r
                signalLength = Signal->ComBitSize / 8;\r
                bitPosition = Signal->ComBitPosition;\r
                bitSize = Signal->ComBitSize;\r
        } else {\r
-               GET_GroupSignal(signalId);\r
+               const ComGroupSignal_type *GroupSignal = GET_GroupSignal(signalId);\r
                signalType = GroupSignal->ComSignalType;\r
                signalEndianess = GroupSignal->ComSignalEndianess;\r
                signalLength = GroupSignal->ComBitSize / 8;\r
@@ -97,23 +93,23 @@ void Com_ReadSignalDataFromPduBuffer(
 \r
        // Pointer to a byte of the source and dest respectively.\r
        uint8 *signalDataBytes = (uint8 *)signalData;\r
-       uint8 *pduBufferBytes = (uint8 *)pduBuffer;\r
+       const uint8 *pduBufferBytes = (const uint8 *)pduBuffer;\r
        uint8 startBitOffset = 0;\r
 \r
        if (signalEndianess != CPU_ENDIANESS) {\r
                // Swap source bytes before reading\r
                // TODO: Must adapt to larger PDUs!\r
                uint8 pduBufferBytes_swap[8];\r
-               int i = 0;\r
-               for (i = 0; i < 8; ++i) {\r
+               for (uint8 i = 0; i < 8; ++i) {\r
                        pduBufferBytes_swap[i] = pduBufferBytes[7 - i];\r
                }\r
                startBitOffset = intelBitNrToPduOffset(bitPosition, bitSize, 64);\r
+               //lint -save -esym(960,12.5) PC-Lint Exception: OK. PC-Lint Wrong interpretation of MISRA rule 12.5.\r
                Com_ReadDataSegment(\r
                                signalDataBytes, pduBufferBytes_swap, destSize,\r
                                startBitOffset, bitSize,\r
                                SignalTypeSignedness(signalType));\r
-\r
+               //lint -restore\r
        } else {\r
                startBitOffset = motorolaBitNrToPduOffset(bitPosition);\r
                Com_ReadDataSegment(\r
@@ -129,9 +125,9 @@ void Com_WriteSignalDataToPdu(
                        const void *signalData) {\r
 \r
        // Get PDU\r
-       GET_Signal(signalId);\r
-       GET_ArcSignal(Signal->ComHandleId);\r
-       GET_ArcIPdu(Arc_Signal->ComIPduHandleId);\r
+       const ComSignal_type * Signal =  GET_Signal(signalId);\r
+       Com_Arc_Signal_type * Arc_Signal = GET_ArcSignal(Signal->ComHandleId);\r
+       Com_Arc_IPdu_type *Arc_IPdu = GET_ArcIPdu(Arc_Signal->ComIPduHandleId);\r
 \r
        // Get data\r
        Com_WriteSignalDataToPduBuffer(\r
@@ -147,9 +143,9 @@ void Com_WriteGroupSignalDataToPdu(
                const void *signalData) {\r
 \r
        // Get PDU\r
-       GET_Signal(parentSignalId);\r
-       GET_ArcSignal(Signal->ComHandleId);\r
-       GET_ArcIPdu(Arc_Signal->ComIPduHandleId);\r
+       const ComSignal_type * Signal =  GET_Signal(parentSignalId);\r
+       Com_Arc_Signal_type * Arc_Signal = GET_ArcSignal(Signal->ComHandleId);\r
+       Com_Arc_IPdu_type *Arc_IPdu = GET_ArcIPdu(Arc_Signal->ComIPduHandleId);\r
 \r
        // Get data\r
        Com_WriteSignalDataToPduBuffer(\r
@@ -173,13 +169,13 @@ void Com_WriteSignalDataToPduBuffer(
        uint8 bitSize;\r
 \r
        if (!isGroupSignal) {\r
-               GET_Signal(signalId);\r
+               const ComSignal_type * Signal =  GET_Signal(signalId);\r
                signalType = Signal->ComSignalType;\r
                signalLength = Signal->ComBitSize / 8;\r
                bitPosition = Signal->ComBitPosition;\r
                bitSize = Signal->ComBitSize;\r
        } else {\r
-               GET_GroupSignal(signalId);\r
+               const ComGroupSignal_type *GroupSignal = GET_GroupSignal(signalId);\r
                signalType = GroupSignal->ComSignalType;\r
                signalLength = GroupSignal->ComBitSize / 8;\r
                bitPosition = GroupSignal->ComBitPosition;\r
@@ -187,7 +183,7 @@ void Com_WriteSignalDataToPduBuffer(
        }\r
 \r
 \r
-       uint8 *signalDataBytes = (uint8 *)signalData;\r
+       const uint8 *signalDataBytes = (const uint8 *)signalData;\r
        uint8 *pduBufferBytes = (uint8 *)pduBuffer;\r
        uint8 startBitOffset = motorolaBitNrToPduOffset(bitPosition);\r
        uint8 signalBufferSize = SignalTypeToSize(signalType, signalLength);\r
@@ -195,83 +191,6 @@ void Com_WriteSignalDataToPduBuffer(
        Com_WriteDataSegment(pduBufferBytes, signalDataBytes, signalBufferSize, startBitOffset, bitSize);\r
 }\r
 \r
-#if (COM_ARC_FILTER_ENABLED == STD_ON)\r
-uint8 Com_Filter(ComSignal_type *signal) {\r
-       GET_ArcSignal(signal->ComHandleId);\r
-       const ComFilter_type * filter = &signal->ComFilter;\r
-       uint8 success = 0;\r
-       if (filter->ComFilterAlgorithm == ALWAYS) {\r
-               success = 1;\r
-\r
-       } else if (filter->ComFilterAlgorithm == NEVER) {\r
-               success = 0;\r
-\r
-       } else if (filter->ComFilterAlgorithm == ONE_EVERY_N) {\r
-               // Treat the special cases that should not exists.\r
-               if (filter->ComFilterPeriodFactor < 2) {\r
-                       // If PeriodFactor is 0 then every package is discarded.\r
-                       // If PeriodFactor is 1 then every package is passed through.\r
-                       success = filter->ComFilterPeriodFactor;\r
-\r
-               } else {\r
-                       if (filter->ComFilterArcN == 0) {\r
-                               success = 1;\r
-                       } else {\r
-                               success = 0;\r
-                       }\r
-                       Arc_Signal->ComFilter.ComFilterArcN++;\r
-                       if (filter->ComFilterArcN >= filter->ComFilterPeriodFactor) {\r
-                               Arc_Signal->ComFilter.ComFilterArcN = 0;\r
-                       }\r
-               }\r
-\r
-       } else if (filter->ComFilterAlgorithm == NEW_IS_OUTSIDE) {\r
-               if ((filter->ComFilterMin > filter->ComFilterArcNewValue)\r
-                               || (filter->ComFilterArcNewValue > filter->ComFilterMax)) {\r
-                       success = 1;\r
-               } else {\r
-                       success = 0;\r
-               }\r
-\r
-\r
-       } else if (filter->ComFilterAlgorithm == NEW_IS_WITHIN) {\r
-               if (filter->ComFilterMin <= filter->ComFilterArcNewValue\r
-                && filter->ComFilterArcNewValue <= filter->ComFilterMax) {\r
-                       success = 1;\r
-               } else {\r
-                       success = 0;\r
-               }\r
-\r
-\r
-       } else if (filter->ComFilterAlgorithm == MASKED_NEW_DIFFERS_MASKED_OLD) {\r
-               if ((filter->ComFilterArcNewValue & filter->ComFilterMask)\r
-                               != (filter->ComFilterArcNewValue & filter->ComFilterMask)) {\r
-                       success = 1;\r
-               } else {\r
-                       success = 0;\r
-               }\r
-\r
-       } else if (filter->ComFilterAlgorithm == MASKED_NEW_DIFFERS_X) {\r
-               if ((filter->ComFilterArcNewValue & filter->ComFilterMask) != filter->ComFilterX) {\r
-                       success = 1;\r
-               } else {\r
-                       success = 0;\r
-               }\r
-\r
-       } else if (filter->ComFilterAlgorithm == MASKED_NEW_EQUALS_X) {\r
-               if ((filter->ComFilterArcNewValue & filter->ComFilterMask) == filter->ComFilterX) {\r
-                       success = 1;\r
-               } else {\r
-                       success = 0;\r
-               }\r
-       }\r
-\r
-       if (success) {\r
-               Arc_Signal->ComFilter.ComFilterArcOldValue = filter->ComFilterArcNewValue;\r
-               return 1;\r
-       } else return 0;\r
-}\r
-#endif\r
 \r
 /*\r
  * Read an arbitrary signal segment from buffer.\r
@@ -317,14 +236,14 @@ void Com_ReadDataSegment(uint8 *dest, const uint8 *source, uint8 destByteLength,
 \r
        boolean negative;\r
 \r
-       if ( signedOutput && (*(source + sourceStartByte) & (0x80 >> segmentStartBitOffsetInsideByte)) ) {\r
+       if ( signedOutput && (*(source + sourceStartByte) & (0x80u >> segmentStartBitOffsetInsideByte)) ) {\r
                negative = TRUE;\r
-               sourceStartByteMask = (0xFF00 >> segmentStartBitOffsetInsideByte);\r
+               sourceStartByteMask = (0xFF00u >> segmentStartBitOffsetInsideByte);\r
                memset(dest, 0xFF, destByteLength);\r
        } else {\r
                negative = FALSE;\r
-               sourceStartByteMask = (0x00FF >> segmentStartBitOffsetInsideByte);\r
-               memset(dest, 0x00, destByteLength);\r
+               sourceStartByteMask = (0x00FFu >> segmentStartBitOffsetInsideByte);\r
+               memset(dest, 0x00u, destByteLength);\r
        }\r
 \r
        // setup to point to end (LSB) of buffers\r
@@ -334,47 +253,47 @@ void Com_ReadDataSegment(uint8 *dest, const uint8 *source, uint8 destByteLength,
        if (negative) {\r
        // compiles and writes one destination byte on each iteration\r
                do {\r
-                       shiftReg = *(source - sourceByteNr) | 0xFF00          // read source byte (already matching "byte space")\r
+                       shiftReg = *(source - sourceByteNr) | 0xFF00u;          // read source byte (already matching "byte space")\r
                        if (sourceByteNr == sourceByteLength) {                         // if we are on the last source byte..\r
                                shiftReg |= sourceStartByteMask;                        // ..we need to mask out stuff we don't want\r
                        }\r
                        shiftReg >>= sourceAlignmentShift;                                      // shift down to align\r
-                       *(dest - destByteNr) &= shiftReg | 0xFF00             // write into destination byte\r
+                       *(dest - destByteNr) &= shiftReg | 0xFF00u;             // write into destination byte\r
 \r
                        sourceByteNr++;                                                                         // move to next source byte\r
-                       if (sourceAlignmentShift != 0                                           // do we have more bits for current dest. byte in this source byte?\r
-                                       && sourceByteNr <= sourceByteLength) {\r
-                               shiftReg = *(source - sourceByteNr) | 0xFF00  // read next source byte\r
+                       if ( (sourceAlignmentShift != 0)                                                // do we have more bits for current dest. byte in this source byte?\r
+                                       && (sourceByteNr <= sourceByteLength) ) {\r
+                               shiftReg = *(source - sourceByteNr) | 0xFF00u;  // read next source byte\r
                                if (sourceByteNr == sourceByteLength) {                 // if we are on the last source byte..\r
                                        shiftReg |= sourceStartByteMask;                // ..we need to mask out stuff we don't want\r
                                }\r
-                               shiftReg = ~(shiftReg);                                         // shifting inverted to shift in 1:s\r
+                               shiftReg = (uint16)~(shiftReg);                                         // shifting inverted to shift in 1:s\r
                                shiftReg <<= 8;                                                         // shift up (to match destination "byte space")\r
-                               shiftReg = ~(shiftReg);\r
+                               shiftReg = (uint16)~shiftReg;\r
                                shiftReg >>= sourceAlignmentShift;                              // shift down to align\r
-                               *(dest - destByteNr) &= shiftReg | 0xFF00     // write into destination byte\r
+                               *(dest - destByteNr) &= shiftReg | 0xFF00u;     // write into destination byte\r
                        }\r
                        destByteNr++;\r
                } while (destByteNr < segmentByteLength);\r
        } else { // positive\r
                do {\r
-                       shiftReg = *(source - sourceByteNr) & 0x00FF          // read source byte (already matching "byte space")\r
+                       shiftReg = *(source - sourceByteNr) & 0x00FFu;          // read source byte (already matching "byte space")\r
                        if (sourceByteNr == sourceByteLength) {                         // if we are on the last source byte..\r
                                shiftReg &= sourceStartByteMask;                        // ..we need to mask out stuff we don't want\r
                        }\r
                        shiftReg >>= sourceAlignmentShift;                                      // shift down to align\r
-                       *(dest - destByteNr) |= shiftReg & 0x00FF             // write into destination byte\r
+                       *(dest - destByteNr) |= shiftReg & 0x00FFu;             // write into destination byte\r
 \r
                        sourceByteNr++;                                                                         // move to next source byte\r
                        if (sourceAlignmentShift != 0                                           // do we have more bits for current dest. byte in this source byte?\r
                                        && sourceByteNr <= sourceByteLength) {\r
-                               shiftReg = *(source - sourceByteNr) & 0x00FF  // read next source byte\r
+                               shiftReg = *(source - sourceByteNr) & 0x00FFu;  // read next source byte\r
                                if (sourceByteNr == sourceByteLength) {                 // if we are on the last source byte..\r
                                        shiftReg &= sourceStartByteMask;                // ..we need to mask out stuff we don't want\r
                                }\r
                                shiftReg <<= 8;                                                         // shift up (to match destination "byte space")\r
                                shiftReg >>= sourceAlignmentShift;                              // shift down to align\r
-                               *(dest - destByteNr) |= shiftReg & 0x00FF     // write into destination byte\r
+                               *(dest - destByteNr) |= shiftReg & 0x00FFu;     // write into destination byte\r
                        }\r
                        destByteNr++;\r
                } while (destByteNr < segmentByteLength);\r
@@ -383,10 +302,10 @@ void Com_ReadDataSegment(uint8 *dest, const uint8 *source, uint8 destByteLength,
 \r
 /*\r
  * Copies the <segmentBitLength> least significant bits from <signal> into <pdu>.\r
- * The bit segment is placed in <pdu> som that the most significant bit ends up\r
+ * The bit segment is placed in <pdu> so that the most significant bit ends up\r
  * at <segmentStartBitOffset> from the msb of <pdu>.\r
  */\r
-void Com_WriteDataSegment(uint8 *pdu, const uint8 *signal, uint8 destByteLength,\r
+void Com_WriteDataSegment(uint8 *pdu, const uint8 *signalDataPtr, uint8 destByteLength,\r
                uint8 segmentStartBitOffset, uint8 segmentBitLength) {\r
        uint8 pduEndBitOffset = segmentStartBitOffset + segmentBitLength - 1;\r
        uint8 pduStartByte = segmentStartBitOffset / 8;\r
@@ -394,7 +313,7 @@ void Com_WriteDataSegment(uint8 *pdu, const uint8 *signal, uint8 destByteLength,
        uint8 pduByteLength = pduEndByte - pduStartByte;\r
 \r
        uint8 segmentStartBitOffsetInsideByte = segmentStartBitOffset % 8;\r
-       uint8 pduStartByteMask = (0xFF >> segmentStartBitOffsetInsideByte);\r
+       uint8 pduStartByteMask = (0xFFu >> segmentStartBitOffsetInsideByte);\r
 \r
        uint8 pduAlignmentShift = 7 - (pduEndBitOffset % 8);\r
        uint8 segmentByteLength = 1 + (segmentBitLength - 1) / 8;\r
@@ -406,36 +325,40 @@ void Com_WriteDataSegment(uint8 *pdu, const uint8 *signal, uint8 destByteLength,
 \r
        // setup to point to end (LSB) of buffers\r
        pdu += pduEndByte;\r
-       signal += destByteLength - 1;\r
+       signalDataPtr += destByteLength - 1;\r
 \r
        // splits and writes one source byte on each iteration\r
        do {\r
-               shiftReg = *(signal - signalByteNr) & 0x00FF;\r
+               shiftReg = *(signalDataPtr - signalByteNr) & 0x00FFu;\r
                clearReg = 0x00FF;\r
+               //lint -save -e701 -e734 //PC-Lint Wrong interpretation of MISRA rule 10.5.\r
                shiftReg <<= pduAlignmentShift;\r
                clearReg <<= pduAlignmentShift;\r
+               //lint -restore\r
                if (pduByteNr == pduByteLength) {\r
                        shiftReg &= pduStartByteMask;\r
                        clearReg &= pduStartByteMask;\r
                }\r
-               *(pdu - pduByteNr) &= ~(clearReg & 0x00FF);\r
-               *(pdu - pduByteNr) |= shiftReg & 0x00FF;\r
+               *(pdu - pduByteNr) &= (uint16)~(clearReg & 0x00FFu);\r
+               *(pdu - pduByteNr) |= shiftReg & 0x00FFu;\r
 \r
                pduByteNr++;\r
-               if (pduAlignmentShift != 0\r
-                               && pduByteNr <= pduByteLength) {\r
-                       shiftReg = *(signal - signalByteNr) & 0x00FF;\r
+               if ( (pduAlignmentShift != 0)\r
+                               && (pduByteNr <= pduByteLength) ) {\r
+                       shiftReg = *(signalDataPtr - signalByteNr) & 0x00FFu;\r
                        clearReg = 0x00FF;\r
+                       //lint -save -e701 -e734 //PC-Lint Wrong interpretation of MISRA rule 10.5.\r
                        shiftReg <<= pduAlignmentShift;\r
                        clearReg <<= pduAlignmentShift;\r
                        shiftReg >>= 8;\r
                        clearReg >>= 8;\r
+                       //lint -restore\r
                        if (pduByteNr == pduByteLength) {\r
                                shiftReg &= pduStartByteMask;\r
                                clearReg &= pduStartByteMask;\r
                        }\r
-                       *(pdu - pduByteNr) &= ~(clearReg & 0x00FF);\r
-                       *(pdu - pduByteNr) |= shiftReg & 0x00FF;\r
+                       *(pdu - pduByteNr) &= (uint16)~(clearReg & 0x00FFu);\r
+                       *(pdu - pduByteNr) |= shiftReg & 0x00FFu;\r
                }\r
                signalByteNr++;\r
        } while (signalByteNr < segmentByteLength);\r
@@ -449,8 +372,9 @@ void Com_WriteDataSegment(uint8 *pdu, const uint8 *signal, uint8 destByteLength,
  */\r
 uint8 motorolaBitNrToPduOffset (uint8 motorolaBitNr) {\r
        uint8 byte = motorolaBitNr / 8;\r
+       uint8 offsetToByteStart = (uint8) (byte * 8u);\r
        uint8 offsetInsideByte = motorolaBitNr % 8;\r
-       return byte * 8 + (7 - offsetInsideByte);\r
+       return (uint8) (offsetToByteStart + (7u - offsetInsideByte));\r
 }\r
 \r
 /*\r
@@ -460,6 +384,6 @@ uint8 motorolaBitNrToPduOffset (uint8 motorolaBitNr) {
  *  intelBitNr (after PDU byte-swap): 39 38 37 36 35 34 33 32 31 ...  3  2  1  0\r
  *             intelBitNrToPduOffset:  0  1  2  3  4  5  6  7  8 ... 36 37 38 39\r
  */\r
-uint8 intelBitNrToPduOffset (uint8 intelBitNr, uint8 segmentBitLength, uint8 pduBitLenght) {\r
-       return pduBitLenght - (intelBitNr + segmentBitLength);\r
+uint8 intelBitNrToPduOffset (uint8 intelBitNr, uint8 segmentBitLength, uint8 pduBitLength) {\r
+       return pduBitLength - (intelBitNr + segmentBitLength);\r
 }\r
index 535a2648b207381667d9aed116cb2f12d554ebf2..a084bcbb5bd5be5b147fa6a67bf711e93a76423a 100644 (file)
 #ifndef COM_MISC_H_\r
 #define COM_MISC_H_\r
 \r
-/*\r
- * The following function are exported only for testing purposes.\r
- */\r
-uint8 Com_Filter(ComSignal_type *signal);\r
+\r
 \r
 // Read data from PDU\r
 void Com_ReadSignalDataFromPdu(\r
@@ -74,11 +71,11 @@ void Com_WriteSignalDataToPduBuffer(
 void Com_ReadDataSegment(uint8 *dest, const uint8 *source, uint8 destByteLength,\r
                uint8 segmentStartBitOffset, uint8 segmentBitLength, boolean signedOutput);\r
 \r
-void Com_WriteDataSegment(uint8 *pdu, const uint8 *signal, uint8 destByteLength,\r
+void Com_WriteDataSegment(uint8 *pdu, const uint8 *signalDataPtr, uint8 destByteLength,\r
                uint8 segmentStartBitOffset, uint8 segmentBitLength);\r
 \r
 uint8 motorolaBitNrToPduOffset (uint8 motorolaBitNr);\r
-uint8 intelBitNrToPduOffset (uint8 intelBitNr, uint8 segmentBitLength, uint8 pduBitLenght);\r
+uint8 intelBitNrToPduOffset (uint8 intelBitNr, uint8 segmentBitLength, uint8 pduBitLength);\r
 \r
 \r
 #endif /* COM_MISC_H_ */\r
index f0198719a73ca9251486740136223a59c30f86cc..0d7c97ff150d1d2dfad2169a5d78ddc2906d5457 100644 (file)
@@ -13,6 +13,7 @@
  * for more details.\r
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
+//lint -emacro(904,COMM_VALIDATE_INIT,COMM_VALIDATE_CHANNEL,COMM_VALIDATE_USER,COMM_VALIDATE_PARAMETER) //904 PC-Lint exception to MISRA 14.7 (validate macros).\r
 \r
 /* Globally fulfilled requirements */\r
 /** @req COMM43 */\r
@@ -38,6 +39,8 @@
 \r
 #include <string.h>\r
 #include "ComM.h"\r
+#include "ComM_Dcm.h"\r
+#include "ComM_EcuM.h"\r
 #if (COMM_DEV_ERROR_DETECT == STD_ON)\r
 #include "Det.h"\r
 #endif\r
@@ -51,9 +54,7 @@
 #include "ComM_Internal.h"\r
 \r
 /** @req COMM506  @req COMM353 */\r
-#if defined(USE_CANSM)\r
 #include "CanSM.h"\r
-#endif\r
 \r
 /** @req COMM347 */\r
 #if defined(USE_NM) || defined(COMM_TESTS)\r
@@ -70,7 +71,7 @@ static ComM_InternalType ComM_Internal = {
 #endif\r
 };\r
 \r
-static ComM_ConfigType * ComM_Config;\r
+static const ComM_ConfigType * ComM_Config;\r
 \r
 \r
 void ComM_Init(const ComM_ConfigType * Config ){\r
@@ -80,7 +81,7 @@ void ComM_Init(const ComM_ConfigType * Config ){
 \r
        ComM_Config = Config;\r
 \r
-       for (int i = 0; i < COMM_CHANNEL_COUNT; ++i) {\r
+       for (uint8 i = 0; i < COMM_CHANNEL_COUNT; ++i) {\r
                ComM_Internal.Channels[i].Mode = COMM_NO_COMMUNICATION;  /**< @req COMM485 */\r
                ComM_Internal.Channels[i].SubMode = COMM_SUBMODE_NONE;\r
                ComM_Internal.Channels[i].UserRequestMask = 0;\r
@@ -88,7 +89,7 @@ void ComM_Init(const ComM_ConfigType * Config ){
                ComM_Internal.Channels[i].NmIndicationMask = COMM_NM_INDICATION_NONE;\r
        }\r
 \r
-       for (int i = 0; i < COMM_USER_COUNT; ++i) {\r
+       for (uint8 i = 0; i < COMM_USER_COUNT; ++i) {\r
                ComM_Internal.Users[i].RequestedMode = COMM_NO_COMMUNICATION;\r
        }\r
 \r
@@ -135,12 +136,12 @@ static Std_ReturnType ComM_Internal_RequestComMode(
        ComM_Internal_UserType* UserInternal = &ComM_Internal.Users[User];\r
 \r
        UserInternal->RequestedMode = ComMode;  /**< @req COMM471  @req COMM500  @req COMM92 */\r
-       uint32 userMask = (1 << User);\r
+       uint32 userMask = (1LU << User);\r
 \r
        Std_ReturnType requestStatus = E_OK;\r
 \r
        /* Go through users channels. Relay to SMs. Collect overall success status */\r
-       for (int i = 0; i < UserConfig->ChannelCount; ++i) {\r
+       for (uint8 i = 0; i < UserConfig->ChannelCount; ++i) {\r
                const ComM_ChannelType* Channel = UserConfig->ChannelList[i];\r
                ComM_Internal_ChannelType* ChannelInternal = &ComM_Internal.Channels[Channel->Number];\r
 \r
@@ -150,11 +151,15 @@ static Std_ReturnType ComM_Internal_RequestComMode(
                        ChannelInternal->UserRequestMask &= ~(userMask);\r
                } else if (ComMode == COMM_FULL_COMMUNICATION) {\r
                        ChannelInternal->UserRequestMask |= userMask;\r
+               } else {\r
+                       //Nothing to be done.\r
                }\r
 \r
                // take request -> new state\r
                Std_ReturnType status = ComM_Internal_UpdateChannelState(Channel, TRUE);\r
-               if (status > requestStatus) requestStatus = status;\r
+               if (status > requestStatus){\r
+                       requestStatus = status;\r
+               }\r
 \r
        }\r
 \r
@@ -165,6 +170,7 @@ Std_ReturnType ComM_GetMaxComMode( ComM_UserHandleType User, ComM_ModeType* ComM
        COMM_VALIDATE_INIT(COMM_SERVICEID_GETMAXCOMMODE, COMM_E_UNINIT);\r
        COMM_VALIDATE_USER(User, COMM_SERVICEID_GETMAXCOMMODE, E_NOT_OK);\r
        // Not implemented\r
+       (void)ComMode;\r
        return E_NOT_OK;\r
 }\r
 \r
@@ -225,12 +231,16 @@ Std_ReturnType ComM_LimitECUToNoComMode( boolean Status ){
        COMM_VALIDATE_INIT(COMM_SERVICEID_LIMITECUTONOCOMMODE, COMM_E_UNINIT);\r
 #if (COMM_MODE_LIMITATION_ENABLED == STD_ON)\r
        ComM_Internal.NoCommunication = Status;\r
-       int Channel;\r
+       uint8 Channel;\r
+       Std_ReturnType totalStatus = E_OK;\r
        for (Channel = 0; Channel < COMM_CHANNEL_COUNT; Channel++) {\r
                const ComM_ChannelType* ChannelConf = &ComM_Config->Channels[Channel];\r
-               ComM_Internal_UpdateChannelState(ChannelConf, FALSE);\r
+               Std_ReturnType status = ComM_Internal_UpdateChannelState(ChannelConf, FALSE);\r
+               if (status > totalStatus) {\r
+                       totalStatus = status;\r
+               }\r
        }\r
-       return E_OK;\r
+       return totalStatus;\r
 #else\r
        return E_NOT_OK;\r
 #endif\r
@@ -261,6 +271,7 @@ Std_ReturnType ComM_ResetInhibitCounter(){
 Std_ReturnType ComM_SetECUGroupClassification( ComM_InhibitionStatusType Status ){\r
        COMM_VALIDATE_INIT(COMM_SERVICEID_SETECUGROUPCLASSIFICATION, COMM_E_UNINIT);\r
        // Not implemented\r
+       (void)Status;\r
        return E_NOT_OK;\r
 }\r
 \r
@@ -276,7 +287,10 @@ void ComM_Nm_NetworkStartIndication( NetworkHandleType Channel ){
 \r
        // Used to simulate Wake-up\r
        ChannelInternal->NmIndicationMask |= COMM_NM_INDICATION_RESTART;\r
-       ComM_Internal_UpdateChannelState(ChannelConf, FALSE);\r
+       Std_ReturnType status = ComM_Internal_UpdateChannelState(ChannelConf, FALSE);\r
+       if (status != E_OK) {\r
+               // TODO: report error?\r
+       }\r
 }\r
 \r
 /** @req COMM807 */\r
@@ -287,7 +301,10 @@ void ComM_Nm_NetworkMode( NetworkHandleType Channel ){
        ComM_Internal_ChannelType* ChannelInternal = &ComM_Internal.Channels[Channel];\r
 \r
        ChannelInternal->NmIndicationMask |= COMM_NM_INDICATION_NETWORK_MODE;\r
-       ComM_Internal_UpdateChannelState(ChannelConf, FALSE);\r
+       Std_ReturnType status = ComM_Internal_UpdateChannelState(ChannelConf, FALSE);\r
+       if (status != E_OK) {\r
+               // TODO: report error?\r
+       }\r
 }\r
 \r
 /** @req COMM809 */\r
@@ -298,7 +315,10 @@ void ComM_Nm_PrepareBusSleepMode( NetworkHandleType Channel ){
        ComM_Internal_ChannelType* ChannelInternal = &ComM_Internal.Channels[Channel];\r
 \r
        ChannelInternal->NmIndicationMask |= COMM_NM_INDICATION_PREPARE_BUS_SLEEP;\r
-       ComM_Internal_UpdateChannelState(ChannelConf, FALSE);\r
+       Std_ReturnType status = ComM_Internal_UpdateChannelState(ChannelConf, FALSE);\r
+       if (status != E_OK) {\r
+               // TODO: report error?\r
+       }\r
 }\r
 \r
 /** @req COMM811 */\r
@@ -309,7 +329,10 @@ void ComM_Nm_BusSleepMode( NetworkHandleType Channel ){
        ComM_Internal_ChannelType* ChannelInternal = &ComM_Internal.Channels[Channel];\r
 \r
        ChannelInternal->NmIndicationMask |= COMM_NM_INDICATION_BUS_SLEEP;\r
-       ComM_Internal_UpdateChannelState(ChannelConf, FALSE);\r
+       Std_ReturnType status = ComM_Internal_UpdateChannelState(ChannelConf, FALSE);\r
+       if (status != E_OK) {\r
+               // TODO: report error?\r
+       }\r
 }\r
 \r
 /** @req COMM813 */\r
@@ -320,7 +343,11 @@ void ComM_Nm_RestartIndication( NetworkHandleType Channel ){
        ComM_Internal_ChannelType* ChannelInternal = &ComM_Internal.Channels[Channel];\r
 \r
        ChannelInternal->NmIndicationMask |= COMM_NM_INDICATION_RESTART;\r
-       ComM_Internal_UpdateChannelState(ChannelConf, FALSE);\r
+       Std_ReturnType status = ComM_Internal_UpdateChannelState(ChannelConf, FALSE);\r
+       if (status != E_OK) {\r
+               // TODO: report error?\r
+       }\r
+\r
 }\r
 \r
 \r
@@ -341,11 +368,11 @@ void ComM_EcuM_WakeUpIndication( NetworkHandleType Channel ){
 // Diagnostic Communication Manager Callbacks\r
 // ------------------------------------------\r
 \r
-void ComM_DCM_ActiveDiagnostic(){\r
+void ComM_DCM_ActiveDiagnostic(void){\r
        COMM_VALIDATE_INIT(COMM_SERVICEID_DCM_ACTIVEDIAGNOSTIC);\r
 }\r
 \r
-void ComM_DCM_InactiveDiagnostic(){\r
+void ComM_DCM_InactiveDiagnostic(void){\r
        COMM_VALIDATE_INIT(COMM_SERVICEID_DCM_INACTIVEDIAGNOSTIC);\r
 }\r
 \r
@@ -356,11 +383,17 @@ void ComM_DCM_InactiveDiagnostic(){
 void ComM_BusSM_ModeIndication( NetworkHandleType Channel, ComM_ModeType ComMode ){\r
        COMM_VALIDATE_INIT(COMM_SERVICEID_BUSSM_MODEINDICATION);\r
        COMM_VALIDATE_CHANNEL(Channel, COMM_SERVICEID_BUSSM_MODEINDICATION);\r
+       // Not implemented\r
+       (void)ComMode;\r
 }\r
 \r
 \r
 // Scheduled main function\r
 // -----------------------\r
+\r
+// Prototype right here because this function should not be exposed\r
+void ComM_MainFunction(NetworkHandleType Channel);\r
+\r
 /** @req COMM429 */\r
 void ComM_MainFunction(NetworkHandleType Channel) {\r
        const ComM_ChannelType* ChannelConf = &ComM_Config->Channels[Channel];\r
@@ -368,10 +401,16 @@ void ComM_MainFunction(NetworkHandleType Channel) {
 \r
        if ((ChannelConf->NmVariant == COMM_NM_VARIANT_NONE) ||\r
                (ChannelConf->NmVariant == COMM_NM_VARIANT_LIGHT)) {\r
-               ComM_Internal_TickFullComMinTime(ChannelConf, ChannelInternal);\r
+               Std_ReturnType status = ComM_Internal_TickFullComMinTime(ChannelConf, ChannelInternal);\r
+               if (status != E_OK) {\r
+                       // TODO: Report error?\r
+               }\r
        }\r
        if (ChannelConf->NmVariant == COMM_NM_VARIANT_LIGHT) {\r
-               ComM_Internal_TickLightTime(ChannelConf, ChannelInternal);\r
+               Std_ReturnType status = ComM_Internal_TickLightTime(ChannelConf, ChannelInternal);\r
+               if (status != E_OK) {\r
+                       // TODO: Report error?\r
+               }\r
        }\r
 \r
 }\r
@@ -380,37 +419,43 @@ void ComM_MainFunction(NetworkHandleType Channel) {
 // Internal functions\r
 // ----------------------------------------------------------------------------\r
 \r
-static inline void ComM_Internal_TickFullComMinTime(const ComM_ChannelType* ChannelConf, ComM_Internal_ChannelType* ChannelInternal) {\r
+static inline Std_ReturnType ComM_Internal_TickFullComMinTime(const ComM_ChannelType* ChannelConf, ComM_Internal_ChannelType* ChannelInternal) {\r
+       Std_ReturnType status = E_OK;\r
        if (ChannelInternal->Mode == COMM_FULL_COMMUNICATION) {\r
                if (ChannelConf->MainFunctionPeriod >= ChannelInternal->FullComMinDurationTimeLeft) {\r
                        ChannelInternal->FullComMinDurationTimeLeft = 0;\r
-                       ComM_Internal_UpdateChannelState(ChannelConf, FALSE);\r
+                       status = ComM_Internal_UpdateChannelState(ChannelConf, FALSE);\r
                } else {\r
                        ChannelInternal->FullComMinDurationTimeLeft -= ChannelConf->MainFunctionPeriod;\r
                }\r
        }\r
+       return status;\r
 }\r
 \r
-static inline boolean ComM_Internal_FullComMinTime_AllowsExit(const ComM_ChannelType* ChannelConf, ComM_Internal_ChannelType* ChannelInternal) {\r
+static inline boolean ComM_Internal_FullComMinTime_AllowsExit(const ComM_ChannelType* ChannelConf, const ComM_Internal_ChannelType* ChannelInternal) {\r
+       boolean rv;\r
        /** @req COMM311 */\r
        if ((ChannelConf->NmVariant == COMM_NM_VARIANT_LIGHT) ||\r
                (ChannelConf->NmVariant == COMM_NM_VARIANT_NONE)){\r
-               return (ChannelInternal->FullComMinDurationTimeLeft == 0);\r
+               rv = (ChannelInternal->FullComMinDurationTimeLeft == 0);\r
        } else {\r
-               return TRUE;\r
+               rv = TRUE;\r
        }\r
+       return rv;\r
 }\r
 \r
-static inline void ComM_Internal_TickLightTime(const ComM_ChannelType* ChannelConf, ComM_Internal_ChannelType* ChannelInternal) {\r
+static inline Std_ReturnType ComM_Internal_TickLightTime(const ComM_ChannelType* ChannelConf, ComM_Internal_ChannelType* ChannelInternal) {\r
+       Std_ReturnType status = E_OK;\r
        if ((ChannelInternal->Mode == COMM_FULL_COMMUNICATION) &&\r
                (ChannelInternal->SubMode == COMM_SUBMODE_READY_SLEEP)) {\r
                if (ChannelConf->MainFunctionPeriod >= ChannelInternal->LightTimeoutTimeLeft) {\r
                        ChannelInternal->LightTimeoutTimeLeft = 0;\r
-                       ComM_Internal_UpdateChannelState(ChannelConf, FALSE);\r
+                       status = ComM_Internal_UpdateChannelState(ChannelConf, FALSE);\r
                } else {\r
                        ChannelInternal->LightTimeoutTimeLeft -= ChannelConf->MainFunctionPeriod;\r
                }\r
        }\r
+       return status;\r
 }\r
 \r
 /** @req COMM678.2 */\r
@@ -418,11 +463,12 @@ static Std_ReturnType ComM_Internal_PropagateGetCurrentComMode( ComM_UserHandleT
        const ComM_UserType* UserConfig = &ComM_Config->Users[User];\r
 \r
        ComM_ModeType requestMode = COMM_FULL_COMMUNICATION;\r
+       Std_ReturnType totalStatus = E_OK;\r
        /* Go through users channels. Relay to SMs. Collect overall mode and success status */\r
-       for (int i = 0; i < UserConfig->ChannelCount; ++i) {\r
+       for (uint8 i = 0; i < UserConfig->ChannelCount; ++i) {\r
                const ComM_ChannelType* Channel = UserConfig->ChannelList[i];\r
                Std_ReturnType status = E_OK;\r
-               ComM_ModeType mode;\r
+               ComM_ModeType mode = COMM_FULL_COMMUNICATION;\r
                switch (Channel->BusType) {\r
                        case COMM_BUS_TYPE_CAN:\r
                                status = CanSM_GetCurrentComMode(Channel->BusSMNetworkHandle, &mode);\r
@@ -436,11 +482,11 @@ static Std_ReturnType ComM_Internal_PropagateGetCurrentComMode( ComM_UserHandleT
                                requestMode = mode;\r
                        }\r
                } else {\r
-                       return status;\r
+                       totalStatus = status;\r
                }\r
        }\r
        *ComMode = requestMode;\r
-       return E_OK;\r
+       return totalStatus;\r
 }\r
 \r
 /** @req COMM281.partially  @req COMM70  @req COMM73  @req COMM71  @req COMM72\r
@@ -483,6 +529,8 @@ static Std_ReturnType ComM_Internal_NotifyNm( const ComM_ChannelType* ChannelCon
                                nmStatus = Nm_NetworkRequest(ChannelConf->NmChannelHandle);  /**< @req COMM129.1 */\r
                        } else if (ChannelInternal->SubMode == COMM_SUBMODE_READY_SLEEP) {\r
                                nmStatus = Nm_NetworkRelease(ChannelConf->NmChannelHandle);  /**< @req COMM133.1 */\r
+                       } else {\r
+                               //Nothing to be done.\r
                        }\r
                }\r
                if (nmStatus != NM_E_OK) {\r
@@ -499,17 +547,22 @@ static Std_ReturnType ComM_Internal_NotifyNm( const ComM_ChannelType* ChannelCon
 /* Processes all requests etc. and makes state machine transitions accordingly */\r
 static Std_ReturnType ComM_Internal_UpdateChannelState( const ComM_ChannelType* ChannelConf, boolean isRequest ) {\r
        ComM_Internal_ChannelType* ChannelInternal = &ComM_Internal.Channels[ChannelConf->Number];\r
-\r
+       Std_ReturnType status = E_OK;\r
        switch (ChannelInternal->Mode) {\r
                case COMM_NO_COMMUNICATION:\r
-                       return ComM_Internal_UpdateFromNoCom(ChannelConf, ChannelInternal, isRequest);\r
+                       status = ComM_Internal_UpdateFromNoCom(ChannelConf, ChannelInternal, isRequest);\r
+                       break;\r
                case COMM_SILENT_COMMUNICATION:\r
-                       return ComM_Internal_UpdateFromSilentCom(ChannelConf, ChannelInternal, isRequest);\r
+                       status = ComM_Internal_UpdateFromSilentCom(ChannelConf, ChannelInternal, isRequest);\r
+                       break;\r
                case COMM_FULL_COMMUNICATION:\r
-                       return ComM_Internal_UpdateFromFullCom(ChannelConf, ChannelInternal, isRequest);\r
+                       status = ComM_Internal_UpdateFromFullCom(ChannelConf, ChannelInternal, isRequest);\r
+                       break;\r
                default:\r
-                       return E_NOT_OK;\r
+                       status = E_NOT_OK;\r
+                       break;\r
        }\r
+       return status;\r
 }\r
 \r
 static inline Std_ReturnType ComM_Internal_UpdateFromNoCom(const ComM_ChannelType* ChannelConf,\r
@@ -525,7 +578,9 @@ static inline Std_ReturnType ComM_Internal_UpdateFromNoCom(const ComM_ChannelTyp
                        (ComM_Internal.NoCommunication == TRUE)) {\r
                        // Inhibition is active\r
                        /** @req COMM302  @req COMM218  @req COMM219  @req COMM215.3  @req COMM216.3 */\r
-                       if (isRequest) ComM_Internal.InhibitCounter++;\r
+                       if (isRequest){\r
+                               ComM_Internal.InhibitCounter++;\r
+                       }\r
                } else {\r
                        if (ChannelInternal->UserRequestMask != 0) {\r
                                // Channel is requested\r
@@ -558,7 +613,9 @@ static inline Std_ReturnType ComM_Internal_UpdateFromSilentCom(const ComM_Channe
                        (ComM_Internal.NoCommunication == TRUE)) {\r
                        // Inhibition is active\r
                        /** @req COMM215.2  @req COMM216.2 */\r
-                       if (isRequest) ComM_Internal.InhibitCounter++;\r
+                       if (isRequest) {\r
+                               ComM_Internal.InhibitCounter++;\r
+                       }\r
                } else {\r
                        if (ChannelInternal->UserRequestMask != 0) {\r
                                // Channel is requested\r
@@ -598,7 +655,9 @@ static inline Std_ReturnType ComM_Internal_UpdateFromFullCom(const ComM_ChannelT
                                        status = ComM_Internal_Enter_ReadySleep(ChannelConf, ChannelInternal);\r
                                }\r
                        }\r
-                       if (isRequest) ComM_Internal.InhibitCounter++;\r
+                       if (isRequest){\r
+                               ComM_Internal.InhibitCounter++;\r
+                       }\r
                } else {\r
                        if (ChannelInternal->UserRequestMask == 0) {\r
                                // Channel no longer requested\r
@@ -644,10 +703,14 @@ static inline Std_ReturnType ComM_Internal_Enter_NetworkRequested(const ComM_Cha
 \r
        Std_ReturnType status, globalStatus = E_OK;\r
        status = ComM_Internal_NotifyNm(ChannelConf);  /**< @req COMM129.2 */\r
-       if (status > globalStatus) globalStatus = status;\r
+       if (status > globalStatus){\r
+               globalStatus = status;\r
+       }\r
        if (propagateToBusSM) {\r
                status = ComM_Internal_PropagateComMode(ChannelConf);\r
-               if (status > globalStatus) globalStatus = status;\r
+               if (status > globalStatus){\r
+                       globalStatus = status;\r
+               }\r
        }\r
        return globalStatus;\r
 }\r
@@ -661,10 +724,14 @@ static inline Std_ReturnType ComM_Internal_Enter_ReadySleep(const ComM_ChannelTy
 \r
        Std_ReturnType status, globalStatus = E_OK;\r
        status = ComM_Internal_NotifyNm(ChannelConf);  /**< @req COMM133.1 */\r
-       if (status > globalStatus) globalStatus = status;\r
+       if (status > globalStatus){\r
+               globalStatus = status;\r
+       }\r
        if (propagateToBusSM) {\r
                status = ComM_Internal_PropagateComMode(ChannelConf);\r
-               if (status > globalStatus) globalStatus = status;\r
+               if (status > globalStatus){\r
+                       globalStatus = status;\r
+               }\r
        }\r
        return globalStatus;\r
 }\r
index 843d693a59a57c94c2665b28fa3f31cd5698858f..bfa202731eba490474dadf1fda55f5619104e49c 100644 (file)
@@ -14,8 +14,8 @@
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
 \r
-#ifndef COMM_INTERNAL_H_\r
-#define COMM_INTERNAL_H_\r
+#ifndef COMM_INTERNAL_H\r
+#define COMM_INTERNAL_H\r
 \r
 #include "ComM_Types.h"\r
 \r
@@ -51,7 +51,7 @@
 typedef enum {\r
        COMM_SUBMODE_NETWORK_REQUESTED,\r
        COMM_SUBMODE_READY_SLEEP,\r
-       COMM_SUBMODE_NONE,\r
+       COMM_SUBMODE_NONE\r
 } ComM_Internal_SubModeType;\r
 \r
 typedef struct {\r
@@ -76,18 +76,18 @@ typedef struct {
        uint16                                          InhibitCounter;  /**< @req COMM138  @req COMM141 */\r
 } ComM_InternalType;\r
 \r
-#define COMM_NM_INDICATION_NONE                                        0\r
-#define COMM_NM_INDICATION_NETWORK_MODE                        (1 << 0)\r
-#define COMM_NM_INDICATION_PREPARE_BUS_SLEEP   (1 << 1)\r
-#define COMM_NM_INDICATION_BUS_SLEEP                   (1 << 2)\r
-#define COMM_NM_INDICATION_RESTART                             (1 << 3)\r
+#define COMM_NM_INDICATION_NONE                                        (uint8)(0u)\r
+#define COMM_NM_INDICATION_NETWORK_MODE                        (uint8)(1u)\r
+#define COMM_NM_INDICATION_PREPARE_BUS_SLEEP   (uint8)(1u << 1)\r
+#define COMM_NM_INDICATION_BUS_SLEEP                   (uint8)(1u << 2)\r
+#define COMM_NM_INDICATION_RESTART                             (uint8)(1u << 3)\r
 \r
 /* Delegate request to users channels and call ComM_Internal_UpdateChannelState */\r
 static Std_ReturnType ComM_Internal_RequestComMode(\r
                                ComM_UserHandleType User, ComM_ModeType ComMode );\r
 \r
 /* Looks at stored requests for Channel and updates state accordingly */\r
-static Std_ReturnType ComM_Internal_UpdateChannelState( const ComM_ChannelType* Channel, boolean isRequest );\r
+static Std_ReturnType ComM_Internal_UpdateChannelState( const ComM_ChannelType* ChannelConf, boolean isRequest );\r
 \r
 static inline Std_ReturnType ComM_Internal_UpdateFromNoCom(const ComM_ChannelType* ChannelConf,\r
                                        ComM_Internal_ChannelType* ChannelInternal, boolean isRequest);\r
@@ -121,14 +121,14 @@ static Std_ReturnType ComM_Internal_PropagateGetCurrentComMode(
                ComM_UserHandleType User, ComM_ModeType* ComMode );\r
 \r
 /* Tick 'Min full com duration' timeout, and update state if needed */\r
-static inline void ComM_Internal_TickFullComMinTime(const ComM_ChannelType* ChannelConf,\r
+static inline Std_ReturnType ComM_Internal_TickFullComMinTime(const ComM_ChannelType* ChannelConf,\r
                ComM_Internal_ChannelType* ChannelInternal);\r
 \r
 static inline boolean ComM_Internal_FullComMinTime_AllowsExit(const ComM_ChannelType* ChannelConf,\r
-               ComM_Internal_ChannelType* ChannelInternal);\r
+               const ComM_Internal_ChannelType* ChannelInternal);\r
 \r
 /* Tick 'Light nm' timeout, and update state if needed */\r
-static inline void ComM_Internal_TickLightTime(const ComM_ChannelType* ChannelConf,\r
+static inline Std_ReturnType ComM_Internal_TickLightTime(const ComM_ChannelType* ChannelConf,\r
                ComM_Internal_ChannelType* ChannelInternal);\r
 \r
-#endif /* COMM_INTERNAL_H_ */\r
+#endif /* COMM_INTERNAL_H */\r
index bcaec245a9b74e156418943876a7da5117f793c1..67d55b1bd248f54b293189a5d607ed7a874b8530 100644 (file)
@@ -37,7 +37,7 @@
 /*\r
  * The state of the PDU router.\r
  */\r
-PduR_StateType PduRState = PDUR_UNINIT;\r
+PduR_StateType PduRState = PDUR_UNINIT; // 960, 31 PC-Lint: Borde Ã¥tgärdas\r
 \r
 const PduR_PBConfigType * PduRConfig;\r
 \r
@@ -75,11 +75,10 @@ void PduR_Init (const PduR_PBConfigType* ConfigPtr) {
        uint8 failed = 0;\r
 \r
        // Initialize buffers.\r
-       int bufferNr = 0;\r
-       int i = 0;\r
+       uint16 bufferNr = 0;\r
        PduRRoutingPath_type *path;\r
        PduRConfig->PduRRoutingTable->NRoutingPaths = 0;\r
-       for (i = 0; !PduRConfig->PduRRoutingTable->PduRRoutingPath[i].PduR_Arc_EOL && !failed; i++) {\r
+       for (uint16 i = 0; (!PduRConfig->PduRRoutingTable->PduRRoutingPath[i].PduR_Arc_EOL) && (!failed); i++) {\r
                PduRConfig->PduRRoutingTable->NRoutingPaths++;\r
                path = &PduRConfig->PduRRoutingTable->PduRRoutingPath[i];\r
 \r
@@ -92,6 +91,7 @@ void PduR_Init (const PduR_PBConfigType* ConfigPtr) {
                                failed = 1;\r
                                break;\r
                        }\r
+                       // 586 PC-Lint (malloc) ticket #135\r
                        if      ((buffer->Buffer = (uint8 *)malloc(buffer->Depth * sizeof(uint8) * path->SduLength)) == 0) {\r
                                DEBUG(DEBUG_LOW,"PduR_Init: Initialization of buffer failed. Buffer space could not be allocated for buffer number %d\n", bufferNr);\r
                                failed = 1;\r
@@ -138,7 +138,8 @@ void PduR_BufferInc(PduRTxBuffer_type *Buffer, uint8 **ptr) {
        (*ptr) = (*ptr) + Buffer->Length;\r
 \r
        // TODO make more efficient without multiplication.\r
-       if (*ptr >= Buffer->Buffer + Buffer->Depth * Buffer->Length) {\r
+       //lint -e946 //PC-Lint Exception of MISRA rule 17.3\r
+       if ( *ptr >= ( Buffer->Buffer + (Buffer->Depth * Buffer->Length) ) ) {\r
                *ptr = Buffer->Buffer;\r
        }\r
        //*val = (*val + 1) % Buffer->Depth;\r
@@ -191,12 +192,14 @@ void PduR_BufferFlush(PduRTxBuffer_type *Buffer) {
 \r
 uint8 PduR_BufferIsFull(PduRTxBuffer_type *Buffer) {\r
        imask_t state = McuE_EnterCriticalSection();\r
+       uint8 rv = 0;\r
        if (Buffer->NrItems < Buffer->Depth) {\r
-               return 0;\r
+               rv = 0;\r
        } else {\r
-               return 1;\r
+               rv = 1;\r
        }\r
        McuE_ExitCriticalSection(state);\r
+       return rv;\r
 }\r
 \r
 \r
@@ -209,7 +212,7 @@ void PduR_GetVersionInfo (Std_VersionInfoType* versionInfo){
 }\r
 #endif\r
 \r
-uint32 PduR_GetConfigurationId () {\r
+uint32 PduR_GetConfigurationId (void) {\r
        //PduR_DevCheck(0,1,0x18,E_NOT_OK);\r
        return PduRConfig->PduRConfigurationId;\r
 }\r
index 5a2afcdb84df33fce70a67e07d641ad979f6edce..a1b505ba9e997eb9a0662fec64d4ed89f7c98aab 100644 (file)
@@ -43,19 +43,21 @@ void PduR_LoIfRxIndication(PduIdType PduId, const uint8* SduPtr) {
 \r
        if (route->PduR_GatewayMode == 0) {\r
                // This is an ordinary request.\r
+               // 534 PC-Lint (ignoring return value) ticket #134:\r
                route->FctPtrs.TargetIndicationFctPtr(route->PduRDestPdu.DestPduId, SduPtr); // Send PDU to next receptor.\r
 \r
 \r
-       } else if (route->PduR_GatewayMode == 1 && route->PduRDestPdu.DataProvision == PDUR_NO_PROVISION) {\r
+       } else if ( (route->PduR_GatewayMode == 1) && (route->PduRDestPdu.DataProvision == PDUR_NO_PROVISION) ) {\r
                // This is a gateway request, but without any data provision (buffer usage).\r
                PduInfoType PduInfo = {\r
-                       .SduDataPtr = (uint8 *)SduPtr,\r
+                       .SduDataPtr = (uint8 *)SduPtr, // 926, 960 PC-Lint: Beror pÃ¥ att funktion PduR_LoIfRxIndication(...) fel-definerad TICKET 130\r
                        .SduLength = route->SduLength\r
                };\r
+               // 534 PC-Lint (ignoring return value) ticket #134:\r
                route->FctPtrs.TargetTransmitFctPtr(route->PduRDestPdu.DestPduId, &PduInfo); // Send PDU to next receptor.\r
 \r
 \r
-       } else if (route->PduR_GatewayMode == 1 && route->PduRDestPdu.DataProvision == PDUR_TRIGGER_TRANSMIT) {\r
+       } else if ( (route->PduR_GatewayMode == 1) && (route->PduRDestPdu.DataProvision == PDUR_TRIGGER_TRANSMIT) ) {\r
                // Ths is a gateway request which uses trigger transmit data provision. PDUR255\r
                DEBUG(DEBUG_LOW,"\tUsing gateway mode with trigger transmit provision\n");\r
 \r
@@ -78,7 +80,7 @@ void PduR_LoIfRxIndication(PduIdType PduId, const uint8* SduPtr) {
                        }\r
                }\r
 \r
-       } else if (route->PduR_GatewayMode == 1 && route->PduRDestPdu.DataProvision == PDUR_DIRECT) {\r
+       } else if ( (route->PduR_GatewayMode == 1) && (route->PduRDestPdu.DataProvision == PDUR_DIRECT) ) {\r
                // This is a gateway request using a direct data provision fifo. PDUR258\r
                DEBUG(DEBUG_LOW,"\tUsing gateway mode with direct provision\n");\r
 \r
@@ -95,7 +97,7 @@ void PduR_LoIfRxIndication(PduIdType PduId, const uint8* SduPtr) {
                        // Make new PduInfoPackage\r
                        DEBUG(DEBUG_LOW,"\tNo transfer confirmation pending. Forwarding packet.\n");\r
                        PduInfoType PduInfoPtr = {\r
-                                       .SduDataPtr = (uint8 *)SduPtr,\r
+                                       .SduDataPtr = (uint8 *)SduPtr, // 926, 960 PC-Lint: Beror pÃ¥ att funktion PduR_LoIfRxIndication(...) fel-definerad TICKET 130\r
                                        .SduLength = route->SduLength\r
                        };\r
                        if (route->FctPtrs.TargetTransmitFctPtr(route->PduRDestPdu.DestPduId, &PduInfoPtr) == E_OK) {\r
@@ -109,6 +111,8 @@ void PduR_LoIfRxIndication(PduIdType PduId, const uint8* SduPtr) {
                                DEBUG(DEBUG_LOW,"\tTransmission failed. PDUR_E_PDU_INSTANCE_LOST\n");\r
                        }\r
                }\r
+       } else {\r
+               // Nothing to be done.\r
        }\r
 }\r
 \r
@@ -125,12 +129,12 @@ void PduR_LoIfTxConfirmation(PduIdType PduId) {
                // This is an ordinary request.\r
                route->FctPtrs.TargetConfirmationFctPtr(route->PduRDestPdu.DestPduId); // Forward confirmation\r
 \r
-       } else if (route->PduR_GatewayMode == 1 && route->PduRDestPdu.DataProvision == PDUR_NO_PROVISION) {\r
+       } else if ( (route->PduR_GatewayMode == 1) && (route->PduRDestPdu.DataProvision == PDUR_NO_PROVISION) ) {\r
                // A gateway request without provision. Just forward confirmation.\r
                route->FctPtrs.TargetConfirmationFctPtr(route->PduRDestPdu.DestPduId); // Forward confirmation\r
 \r
 \r
-       } else if (route->PduR_GatewayMode == 1 && route->PduRDestPdu.DataProvision == PDUR_TRIGGER_TRANSMIT) {\r
+       } else if ( (route->PduR_GatewayMode == 1) && (route->PduRDestPdu.DataProvision == PDUR_TRIGGER_TRANSMIT) ) {\r
                // The route is using gateway mode and trigger transmit data provision. PDUR256\r
                DEBUG(DEBUG_LOW,"\tUsing gateway mode with trigger transmit data provision.\n", PduId);\r
 \r
@@ -174,7 +178,7 @@ void PduR_LoIfTxConfirmation(PduIdType PduId) {
                }\r
 \r
 \r
-       } else if (route->PduR_GatewayMode == 1 && route->PduRDestPdu.DataProvision == PDUR_DIRECT) {\r
+       } else if ( (route->PduR_GatewayMode == 1) && (route->PduRDestPdu.DataProvision == PDUR_DIRECT) ) {\r
                // The route is using a direct data provision fifo. PDUR259\r
                DEBUG(DEBUG_LOW,"\tUsing gateway mode with direct data provision.\n", PduId);\r
 \r
@@ -216,6 +220,8 @@ void PduR_LoIfTxConfirmation(PduIdType PduId) {
                                }\r
                        }\r
                }\r
+       } else {\r
+               // Nothing to be done.\r
        }\r
 }\r
 \r
@@ -226,12 +232,15 @@ void PduR_LoIfTriggerTransmit(PduIdType PduId, uint8* SduPtr) {
        // Find out if this is a gateway or ordinary trigger.\r
        //if (route->PduRDestPdu.DataProvision == PDUR_NO_PROVISION) { // This is an ordinary trigger.\r
        if (route->PduR_GatewayMode == 0) { // This is an ordinary trigger.\r
+               // 534 PC-Lint (ignoring return value) ticket #134:\r
                route->FctPtrs.TargetTriggerTransmitFctPtr(route->PduRDestPdu.DestPduId, SduPtr);\r
 \r
-       } else if (route->PduR_GatewayMode == 1 && route->PduRDestPdu.DataProvision == PDUR_TRIGGER_TRANSMIT) { // The route is using a trigger transmit fifo. PDUR256\r
+       } else if ( (route->PduR_GatewayMode == 1) && (route->PduRDestPdu.DataProvision == PDUR_TRIGGER_TRANSMIT) ) { // The route is using a trigger transmit fifo. PDUR256\r
                DEBUG(DEBUG_LOW,"\tUsing gateway mode with trigger transmit data provision.\n", PduId);\r
                memcpy((void *)SduPtr, (void *)route->PduRDestPdu.TxBufferRef->First, sizeof(uint8) * route->SduLength);\r
 \r
+       } else {\r
+               // Nothing to be done.\r
        }\r
 }\r
 \r
index 08a2b8b2759a1c9e78c90c28521151a457ca0ecb..6481732066aa978401499eff9b1bb4663aa791df 100644 (file)
@@ -95,7 +95,7 @@ libitem-y += $(ROOTDIR)/embunit/embUnit/obj_$(ARCH)/libembunit.a
 libitem-y += $(ROOTDIR)/embunit/textui/obj_$(ARCH)/libtextui.a\r
 \r
 #linkfile\r
-ldcmdfile-$(CFG_MPC55XX) = $(ROOTDIR)/arch/$(ARCH)/scripts/linkscript_gcc.ldf\r
+ldcmdfile-$(CFG_MPC55XX) = $(ROOTDIR)/arch/$(ARCH)/scripts/linkscript_$(COMPILER).ldf\r
 \r
 build-exe-y = ../../../$(target)_$(ARCH).$(TE)\r
 \r
index 19c33928fa7f63b3b8db2ed64991211219867fb5..88efebada9b8fd18ab9fefcdab867ea079afed73 100644 (file)
@@ -14,7 +14,8 @@
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
 \r
-\r
+// 904 PC-Lint: OK. Allow VALIDATE, VALIDATE_RV and VALIDATE_NO_RV to return value.\r
+//lint -emacro(904,VALIDATE_RV,VALIDATE_NO_RV,VALIDATE)\r
 \r
 \r
 /*\r
@@ -39,7 +40,7 @@
 #include "Dem.h"\r
 #include "MemMap.h"\r
 //#include "SchM_Dcm.h"\r
-#include "ComM_Dcm.h"\r
+//#include "ComM_Dcm.h"\r
 #include "PduR_Dcm.h"\r
 #include "ComStack_Types.h"\r
 #include "McuExtensions.h"\r
@@ -51,6 +52,7 @@ typedef enum
   DCM_INITIALIZED\r
 } Dcm_StateType;\r
 \r
+//lint -esym(551,dcmState)     PC-Lint - Turn of warning of dcmState not accessed when having DCM_DEV_ERROR_DETECT to STD_OFF\r
 static Dcm_StateType dcmState = DCM_UNINITIALIZED;\r
 \r
 \r
@@ -65,7 +67,6 @@ static Dcm_StateType dcmState = DCM_UNINITIALIZED;
 // Defined in Dcm.h\r
 \r
 \r
-\r
 /*\r
  * Procedure:  Dcm_Init\r
  * Reentrant:  No\r
@@ -96,16 +97,19 @@ void Dcm_MainFunction(void) /** @req DCM362 */
        DslMain();\r
 }\r
 \r
+\r
 /***********************************************\r
  * Interface for BSW modules and SW-Cs (8.3.2) *\r
  ***********************************************/\r
 BufReq_ReturnType Dcm_ProvideRxBuffer(PduIdType dcmRxPduId, PduLengthType tpSduLength, PduInfoType **pduInfoPtr)\r
 {\r
-       BufReq_ReturnType returnCode = BUFREQ_OK;\r
+       BufReq_ReturnType returnCode;\r
 \r
        VALIDATE_RV(dcmState == DCM_INITIALIZED, DCM_PROVIDE_RX_BUFFER_ID, DCM_E_UNINIT, BUFREQ_NOT_OK);\r
        VALIDATE_RV(dcmRxPduId < DCM_DSL_RX_PDU_ID_LIST_LENGTH, DCM_PROVIDE_RX_BUFFER_ID, DCM_E_PARAM, BUFREQ_NOT_OK);\r
 \r
+       //lint --e(929)         // PC-Lint exception, MISRA 11.4 Ok by atosar\r
+       //lint --e(960)         // PC-Lint exception, MISRA 11.5 Ok by atosar\r
        returnCode = DslProvideRxBufferToPdur(dcmRxPduId, tpSduLength, (const PduInfoType**)pduInfoPtr);\r
 \r
        return returnCode;\r
@@ -121,13 +125,13 @@ void Dcm_RxIndication(PduIdType dcmRxPduId, NotifResultType result)
 }\r
 \r
 \r
-Std_ReturnType Dcm_GetActiveProtocol(Dcm_ProtocolType *protocolId)\r
+Std_ReturnType Dcm_GetActiveProtocol(Dcm_ProtocolType *activeProtocol)\r
 {\r
-       Std_ReturnType returnCode = E_OK;\r
+       Std_ReturnType returnCode;\r
 \r
        VALIDATE_RV(dcmState == DCM_INITIALIZED, DCM_GET_ACTIVE_PROTOCOL_ID, DCM_E_UNINIT, E_NOT_OK);\r
 \r
-       returnCode = DslGetActiveProtocol(protocolId);\r
+       returnCode = DslGetActiveProtocol(activeProtocol);\r
 \r
        return returnCode;\r
 }\r
@@ -135,7 +139,7 @@ Std_ReturnType Dcm_GetActiveProtocol(Dcm_ProtocolType *protocolId)
 \r
 Std_ReturnType Dcm_GetSecurityLevel(Dcm_SecLevelType *secLevel)\r
 {\r
-       Std_ReturnType returnCode = E_OK;\r
+       Std_ReturnType returnCode;\r
 \r
        VALIDATE_RV(dcmState == DCM_INITIALIZED, DCM_GET_SECURITY_LEVEL_ID, DCM_E_UNINIT, E_NOT_OK);\r
 \r
@@ -147,7 +151,7 @@ Std_ReturnType Dcm_GetSecurityLevel(Dcm_SecLevelType *secLevel)
 \r
 Std_ReturnType Dcm_GetSesCtrlType(Dcm_SesCtrlType *sesCtrlType)\r
 {\r
-       Std_ReturnType returnCode = E_OK;\r
+       Std_ReturnType returnCode;\r
 \r
        VALIDATE_RV(dcmState == DCM_INITIALIZED, DCM_GET_SES_CTRL_TYPE_ID, DCM_E_UNINIT, E_NOT_OK);\r
 \r
@@ -158,11 +162,13 @@ Std_ReturnType Dcm_GetSesCtrlType(Dcm_SesCtrlType *sesCtrlType)
 \r
 BufReq_ReturnType Dcm_ProvideTxBuffer(PduIdType dcmTxPduId, PduInfoType **pduInfoPtr, PduLengthType length)\r
 {\r
-       BufReq_ReturnType returnCode = BUFREQ_OK;\r
+       BufReq_ReturnType returnCode;\r
 \r
        VALIDATE_RV(dcmState == DCM_INITIALIZED, DCM_PROVIDE_TX_BUFFER_ID, DCM_E_UNINIT, BUFREQ_NOT_OK);\r
        VALIDATE_RV(dcmTxPduId < DCM_DSL_TX_PDU_ID_LIST_LENGTH, DCM_PROVIDE_TX_BUFFER_ID, DCM_E_PARAM, BUFREQ_NOT_OK);\r
 \r
+       //lint --e(929)         // PC-Lint exception, MISRA 11.4 Ok by atosar\r
+       //lint --e(960)         // PC-Lint exception, MISRA 11.5 Ok by atosar\r
        returnCode = DslProvideTxBuffer(dcmTxPduId, (const PduInfoType**)pduInfoPtr, length);\r
 \r
        return returnCode;\r
index 61c0060a7f4ecda04615bb8ed5dd5fb638898a1e..4dc906b78fb3062a7abf6219211b45771f5d79cf 100644 (file)
@@ -47,17 +47,18 @@ static boolean      suppressPosRspMsg;
  */\r
 \r
 \r
-static boolean askApplicationForServicePermission(uint8 *requestData, uint16 dataSize)\r
+static Std_ReturnType askApplicationForServicePermission(uint8 *requestData, uint16 dataSize)\r
 {\r
        Std_ReturnType returnCode = E_OK;\r
        const Dcm_DslServiceRequestIndicationType *serviceRequestIndication = DCM_Config.Dsl->DslServiceRequestIndication;\r
        Std_ReturnType result;\r
 \r
-       while (!serviceRequestIndication->Arc_EOL && (returnCode != E_REQUEST_NOT_ACCEPTED)) {\r
+       while ((!serviceRequestIndication->Arc_EOL) && (returnCode != E_REQUEST_NOT_ACCEPTED)) {\r
                if (serviceRequestIndication->Indication != NULL) {\r
                        result = serviceRequestIndication->Indication(requestData, dataSize);\r
-                       if (result != E_OK)\r
+                       if (result != E_OK){\r
                                returnCode = result;\r
+                       }\r
                }\r
                serviceRequestIndication++;\r
        }\r
@@ -119,6 +120,10 @@ static void selectServiceFunction(uint8 sid)
                DspUdsWriteDataByIdentifier(msgData.pduRxData, msgData.pduTxData);\r
                break;\r
 \r
+       case SID_ROUTINE_CONTROL:\r
+               DspUdsRoutineControl(msgData.pduRxData, msgData.pduTxData);\r
+               break;\r
+\r
        case SID_TESTER_PRESENT:\r
                DspUdsTesterPresent(msgData.pduRxData, msgData.pduTxData);\r
                break;\r
@@ -130,7 +135,6 @@ static void selectServiceFunction(uint8 sid)
        case SID_READ_DATA_BY_PERIODIC_IDENTIFIER:\r
        case SID_DYNAMICALLY_DEFINE_DATA_IDENTIFIER:\r
        case SID_INPUT_OUTPUT_CONTROL_BY_IDENTIFIER:\r
-       case SID_ROUTINE_CONTROL:\r
        default:\r
                /* Non implemented service */\r
                createAndSendNcr(DCM_E_SERVICENOTSUPPORTED);\r
@@ -144,7 +148,7 @@ static boolean lookupSid(uint8 sid, const Dcm_DsdServiceType **sidPtr)
        boolean returnStatus = TRUE;\r
        const Dcm_DsdServiceType *service = msgData.serviceTable->DsdService;\r
 \r
-       while ((service->DsdSidTabServiceId != sid) && !service->Arc_EOL) {\r
+       while ((service->DsdSidTabServiceId != sid) && (!service->Arc_EOL)) {\r
                service++;\r
        }\r
 \r
@@ -187,18 +191,23 @@ void DsdHandleRequest(void)
        currentSid = msgData.pduRxData->SduDataPtr[0];  /** @req DCM198 */\r
 \r
        /** @req DCM178 */\r
-       if (DCM_RESPOND_ALL_REQUEST || ((currentSid & 0x7F) < 0x40)) {          /** @req DCM084 */\r
+       //lint --e(506, 774)    PC-Lint exception Misra 13.7, 14.1 Allow configuration variables in boolean expression\r
+       if ((DCM_RESPOND_ALL_REQUEST == STD_ON) || ((currentSid & 0x7Fu) < 0x40)) {             /** @req DCM084 */\r
                if (lookupSid(currentSid, &sidConfPtr)) {               /** @req DCM192 */ /** @req DCM193 */ /** @req DCM196 */\r
                        // SID found!\r
                        if (DspCheckSessionLevel(sidConfPtr->DsdSidTabSessionLevelRef)) {                /** @req DCM211 */\r
                                if (DspCheckSecurityLevel(sidConfPtr->DsdSidTabSecurityLevelRef)) {      /** @req DCM217 */\r
-                                       if (DCM_REQUEST_INDICATION_ENABLED) {    /** @req DCM218 */\r
+                                       //lint --e(506, 774)    PC-Lint exception Misra 13.7, 14.1 Allow configuration variables in boolean expression\r
+                                       if (DCM_REQUEST_INDICATION_ENABLED == STD_ON) {  /** @req DCM218 */\r
                                                 result = askApplicationForServicePermission(msgData.pduRxData->SduDataPtr, msgData.pduRxData->SduLength);\r
+                                       } else {\r
+                                               result = E_OK;\r
                                        }\r
-                                       if (!DCM_REQUEST_INDICATION_ENABLED || result == E_OK) {\r
+                                       //lint --e(506, 774)    PC-Lint exception Misra 13.7, 14.1 Allow configuration variables in boolean expression\r
+                                       if (result == E_OK) {\r
                                                // Yes! All conditions met!\r
                                                // Check if response shall be suppressed\r
-                                               if (sidConfPtr->DsdSidTabSubfuncAvail && (msgData.pduRxData->SduDataPtr[1] & SUPPRESS_POS_RESP_BIT)) {  /** @req DCM204 */\r
+                                               if ( (sidConfPtr->DsdSidTabSubfuncAvail) && (msgData.pduRxData->SduDataPtr[1] & SUPPRESS_POS_RESP_BIT) ) {      /** @req DCM204 */\r
                                                        suppressPosRspMsg = TRUE;       /** @req DCM202 */\r
                                                        msgData.pduRxData->SduDataPtr[1] &= ~SUPPRESS_POS_RESP_BIT;     /** @req DCM201 */\r
                                                }\r
@@ -237,6 +246,7 @@ void DsdHandleRequest(void)
 }\r
 \r
 \r
+\r
 void DsdDspProcessingDone(Dcm_NegativeResponseCodeType responseCode)\r
 {\r
        if (responseCode == DCM_E_POSITIVERESPONSE) {\r
@@ -259,6 +269,7 @@ void DsdDspProcessingDone(Dcm_NegativeResponseCodeType responseCode)
 \r
 void DsdDataConfirmation(PduIdType confirmPduId, NotifResultType result)\r
 {\r
+       (void)result;   /* Currently not used */\r
        DspDcmConfirmation(confirmPduId);       /** @req DCM236 */\r
 }\r
 \r
index 3d7278cdd518567cfe811894902df40ecbbfd138..445e11bfeef6a377e0472711ee9a42778613540e 100644 (file)
 #include "Dcm.h"\r
 #include "Dcm_Internal.h"\r
 #include "MemMap.h"\r
+#if defined(USE_COMM)\r
 #include "ComM_Dcm.h"\r
+#endif\r
 #include "PduR_Dcm.h"\r
 #include "ComStack_Types.h"\r
 //#define USE_DEBUG_PRINTF\r
 #include "debug.h"\r
 \r
-#define DECREMENT(timer) { if (timer > 0) timer--; }\r
+#define DECREMENT(timer) { if (timer > 0){timer--;} }\r
 #define DCM_CONVERT_MS_TO_MAIN_CYCLES(x)  ((x)/DCM_MAIN_FUNCTION_PERIOD_TIME_MS)\r
 \r
 \r
+#if (DCM_PAGEDBUFFER_ENABLED)\r
+#error "DCM_PAGEDBUFFER_ENABLED is set to STD_ON, this is not supported by the code."\r
+#endif\r
+\r
 /*\r
  * Type definitions.\r
  */\r
-typedef struct {\r
-       const Dcm_DslProtocolRxType *protocolRx;\r
-       const Dcm_DslMainConnectionType *mainConnection;\r
-       const Dcm_DslConnectionType *connection;\r
-       const Dcm_DslProtocolRowType *protocolRow;\r
-} DcmDsl_ProtocolConfigurationType;\r
-\r
-#define MAX_PARALLEL_PROTOCOLS_ALLOWED         1\r
+// #define MAX_PARALLEL_PROTOCOLS_ALLOWED              1\r
 \r
 typedef struct {\r
        boolean initRun;\r
        //boolean diagnosticRequestPending; // This is a "semaphore" because DSD and DCM can handle multiple/parallel request at the moment.\r
-       const Dcm_DslProtocolRowType *preemptedProtocol; // Points to the currently active protocol.\r
        const Dcm_DslProtocolRowType *activeProtocol; // Points to the currently active protocol.\r
-       Dcm_DslRunTimeProtocolParametersType\r
-                       protocolList[MAX_PARALLEL_PROTOCOLS_ALLOWED];\r
+//     const Dcm_DslProtocolRowType *preemptedProtocol; // Points to the currently active protocol - reserved for future use\r
+//     Dcm_DslRunTimeProtocolParametersType protocolList[MAX_PARALLEL_PROTOCOLS_ALLOWED];      // Reserved for future use\r
 } DcmDsl_RunTimeDataType;\r
 \r
 static DcmDsl_RunTimeDataType DcmDslRunTimeData = {\r
                .initRun = FALSE,\r
-               .preemptedProtocol = NULL,\r
-               .activeProtocol = NULL };\r
-\r
-// ################# DUMMIES START #################\r
-\r
-/*\r
- * Local types\r
- */\r
-\r
-void ComM_DCM_ActivateDiagnostic() {\r
-       ;\r
-}\r
-\r
-void ComM_DCM_InactivateDiagnostic() {\r
-       ;\r
-}\r
+               .activeProtocol = NULL\r
+//             .preemptedProtocol = NULL,\r
+//             .protocolList = {}\r
+};\r
 \r
 // ################# HELPER FUNCTIONS START #################\r
 \r
@@ -141,9 +127,10 @@ static void changeDiagnosticSession(Dcm_DslRunTimeProtocolParametersType *runtim
 \r
 // - - - - - - - - - - -\r
 \r
-void DslResetSessionTimeoutTimer() {\r
-       const Dcm_DslProtocolRowType *activeProtocol = NULL;\r
-       Dcm_DslRunTimeProtocolParametersType *runtime = NULL;\r
+void DslResetSessionTimeoutTimer(void) {\r
+       const Dcm_DslProtocolRowType *activeProtocol;\r
+       Dcm_DslRunTimeProtocolParametersType *runtime;\r
+\r
        activeProtocol = DcmDslRunTimeData.activeProtocol;\r
        runtime = activeProtocol->DslRunTimeProtocolParameters;\r
        startS3SessionTimer(runtime, activeProtocol); /** @req DCM141 */\r
@@ -152,7 +139,8 @@ void DslResetSessionTimeoutTimer() {
 // - - - - - - - - - - -\r
 \r
 void DslGetCurrentServiceTable(const Dcm_DsdServiceTableType **currentServiceTable) { /** @req DCM195 */\r
-       const Dcm_DslProtocolRowType *activeProtocol = NULL;\r
+       const Dcm_DslProtocolRowType *activeProtocol;\r
+\r
        activeProtocol = DcmDslRunTimeData.activeProtocol;\r
        if (activeProtocol != NULL) {\r
                *currentServiceTable = activeProtocol->DslProtocolSIDTable;\r
@@ -163,7 +151,8 @@ void DslGetCurrentServiceTable(const Dcm_DsdServiceTableType **currentServiceTab
 \r
 Std_ReturnType DslGetActiveProtocol(Dcm_ProtocolType *protocolId) { /** @req DCM340 */\r
        Std_ReturnType ret = E_NOT_OK;\r
-       const Dcm_DslProtocolRowType *activeProtocol = NULL;\r
+       const Dcm_DslProtocolRowType *activeProtocol;\r
+\r
        activeProtocol = DcmDslRunTimeData.activeProtocol;\r
        if (activeProtocol != NULL) {\r
                *protocolId = activeProtocol->DslProtocolID;\r
@@ -175,8 +164,9 @@ Std_ReturnType DslGetActiveProtocol(Dcm_ProtocolType *protocolId) { /** @req DCM
 // - - - - - - - - - - -\r
 \r
 void DslSetSecurityLevel(Dcm_SecLevelType secLevel) { /** @req DCM020 */\r
-       const Dcm_DslProtocolRowType *activeProtocol = NULL;\r
-       Dcm_DslRunTimeProtocolParametersType *runtime = NULL;\r
+       const Dcm_DslProtocolRowType *activeProtocol;\r
+       Dcm_DslRunTimeProtocolParametersType *runtime;\r
+\r
        activeProtocol = DcmDslRunTimeData.activeProtocol;\r
        runtime = activeProtocol->DslRunTimeProtocolParameters;\r
        runtime->securityLevel = secLevel;\r
@@ -186,8 +176,9 @@ void DslSetSecurityLevel(Dcm_SecLevelType secLevel) { /** @req DCM020 */
 \r
 Std_ReturnType DslGetSecurityLevel(Dcm_SecLevelType *secLevel) {  /** @req DCM020 *//** @req DCM338 */\r
        Std_ReturnType ret = E_NOT_OK;\r
-       const Dcm_DslProtocolRowType *activeProtocol = NULL;\r
+       const Dcm_DslProtocolRowType *activeProtocol;\r
        Dcm_DslRunTimeProtocolParametersType *runtime = NULL;\r
+\r
        activeProtocol = DcmDslRunTimeData.activeProtocol;\r
        if (activeProtocol != NULL) {\r
                runtime = activeProtocol->DslRunTimeProtocolParameters;\r
@@ -200,8 +191,9 @@ Std_ReturnType DslGetSecurityLevel(Dcm_SecLevelType *secLevel) {  /** @req DCM02
 // - - - - - - - - - - -\r
 \r
 void DslSetSesCtrlType(Dcm_SesCtrlType sesCtrl) {  /** @req DCM022 */\r
-       const Dcm_DslProtocolRowType *activeProtocol = NULL;\r
+       const Dcm_DslProtocolRowType *activeProtocol;\r
        Dcm_DslRunTimeProtocolParametersType *runtime = NULL;\r
+\r
        activeProtocol = DcmDslRunTimeData.activeProtocol;\r
        if (activeProtocol != NULL) {\r
                runtime = activeProtocol->DslRunTimeProtocolParameters;\r
@@ -216,8 +208,9 @@ void DslSetSesCtrlType(Dcm_SesCtrlType sesCtrl) {  /** @req DCM022 */
 \r
 Std_ReturnType DslGetSesCtrlType(Dcm_SesCtrlType *sesCtrlType) { /** @req DCM022 *//** @req DCM339 */\r
        Std_ReturnType ret = E_NOT_OK;\r
-       const Dcm_DslProtocolRowType *activeProtocol = NULL;\r
+       const Dcm_DslProtocolRowType *activeProtocol;\r
        Dcm_DslRunTimeProtocolParametersType *runtime = NULL;\r
+\r
        activeProtocol = DcmDslRunTimeData.activeProtocol;\r
        if (activeProtocol != NULL) {\r
                runtime = activeProtocol->DslRunTimeProtocolParameters;\r
@@ -343,6 +336,7 @@ static void sendResponse(const Dcm_DslProtocolRowType *protocol,
        const Dcm_DslConnectionType *connection = NULL;\r
        const Dcm_DslProtocolRowType *protocolRow = NULL;\r
        Dcm_DslRunTimeProtocolParametersType *runtime = NULL;\r
+       Std_ReturnType transmitResult;\r
 \r
        /** @req DCM119 */\r
        imask_t state = McuE_EnterCriticalSection();\r
@@ -355,7 +349,10 @@ static void sendResponse(const Dcm_DslProtocolRowType *protocol,
                        runtime->localTxBuffer.PduInfo.SduDataPtr = runtime->localTxBuffer.buffer;\r
                        runtime->localTxBuffer.PduInfo.SduLength = 3;\r
                        runtime->localTxBuffer.status = DCM_TRANSMIT_SIGNALED; // In the DslProvideTxBuffer 'callback' this state signals it is the local buffer we are interested in sending.\r
-                       PduR_DcmTransmit(mainConnection->DslProtocolTx->DcmDslProtocolTxPduId, &(runtime->localTxBuffer.PduInfo));/** @req DCM115.Partially */ /* The P2ServerMin has not been implemented. */\r
+                       transmitResult = PduR_DcmTransmit(mainConnection->DslProtocolTx->DcmDslProtocolTxPduId, &(runtime->localTxBuffer.PduInfo));/** @req DCM115.Partially */ /* The P2ServerMin has not been implemented. */\r
+                       if (transmitResult != E_OK) {\r
+                               // TODO: What to do here?\r
+                       }\r
                }\r
        }\r
        McuE_ExitCriticalSection(state);\r
@@ -383,7 +380,7 @@ static Std_ReturnType StartProtocolHelper(Dcm_ProtocolType protocolId) {
 static boolean isTesterPresentCommand(const PduInfoType *rxPdu) {\r
        boolean ret = FALSE;\r
        if ((rxPdu->SduDataPtr[0] == SID_TESTER_PRESENT) && (rxPdu->SduDataPtr[1] & SUPPRESS_POS_RESP_BIT)) {\r
-               return TRUE;\r
+               ret = TRUE;\r
        }\r
        return ret;\r
 }\r
@@ -392,7 +389,7 @@ static boolean isTesterPresentCommand(const PduInfoType *rxPdu) {
 //     Implements 'void Dcm_Init(void)' for DSL.\r
 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r
 void DslInit(void) {\r
-       const Dcm_DslProtocolRowType *listEntry = NULL;\r
+       const Dcm_DslProtocolRowType *listEntry;\r
        Dcm_DslRunTimeProtocolParametersType *runtime = NULL;\r
 \r
        listEntry = DCM_Config.Dsl->DslProtocol->DslProtocolRowList;\r
@@ -417,10 +414,9 @@ void DslInit(void) {
 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r
 \r
 void DslMain(void) {\r
-       const Dcm_DslProtocolRowType *protocolRowEntry = NULL;\r
+       const Dcm_DslProtocolRowType *protocolRowEntry;\r
        const Dcm_DslProtocolTimingRowType *timeParams = NULL;\r
        Dcm_DslRunTimeProtocolParametersType *runtime = NULL;\r
-       int debug_count = 0;\r
 \r
        protocolRowEntry = DCM_Config.Dsl->DslProtocol->DslProtocolRowList;\r
        while (protocolRowEntry->Arc_EOL == FALSE) {\r
@@ -473,18 +469,26 @@ void DslMain(void) {
                                        const Dcm_DslMainConnectionType *mainConnection = NULL;\r
                                        const Dcm_DslConnectionType *connection = NULL;\r
                                        const Dcm_DslProtocolRowType *protocolRow = NULL;\r
+                                       Std_ReturnType transmitResult;\r
+\r
                                        if (findRxPduIdParentConfigurationLeafs(runtime->diagReqestRxPduId, &protocolRx, &mainConnection, &connection, &protocolRow, &runtime)) {\r
-                                               const uint32 txPduId = mainConnection->DslProtocolTx->DcmDslProtocolTxPduId;\r
+                                               const PduIdType txPduId = mainConnection->DslProtocolTx->DcmDslProtocolTxPduId;\r
                                                DEBUG( DEBUG_MEDIUM, "runtime->externalTxBufferStatus enter state DCM_TRANSMIT_SIGNALED.\n" );\r
                                                runtime->externalTxBufferStatus = DCM_TRANSMIT_SIGNALED;\r
-                                               PduR_DcmTransmit(txPduId, &runtime->diagnosticResponseFromDsd); /** @req DCM237 *//* Will trigger PduR (CanTP) to call DslProvideTxBuffer(). */\r
+                                               transmitResult = PduR_DcmTransmit(txPduId, &runtime->diagnosticResponseFromDsd); /** @req DCM237 *//* Will trigger PduR (CanTP) to call DslProvideTxBuffer(). */\r
+                                               if (transmitResult != E_OK) {\r
+                                                       // TODO: What to do here?\r
+                                               }\r
                                        } else {\r
                                                DEBUG( DEBUG_MEDIUM, "***** WARNING, THIS IS UNEXPECTED !!! ********.\n" );\r
-                                               const uint32 txPduId = protocolRowEntry->DslConnection->DslMainConnection->DslProtocolTx->DcmDslProtocolTxPduId;\r
+                                               const PduIdType txPduId = protocolRowEntry->DslConnection->DslMainConnection->DslProtocolTx->DcmDslProtocolTxPduId;\r
                                                DEBUG( DEBUG_MEDIUM, "runtime->externalTxBufferStatus enter state DSD_PENDING_RESPONSE_SIGNALED.\n", txPduId);\r
                                                runtime->externalTxBufferStatus = DCM_TRANSMIT_SIGNALED;\r
                                                DEBUG( DEBUG_MEDIUM, "Calling PduR_DcmTransmit with txPduId = %d from DslMain\n", txPduId);\r
-                                               PduR_DcmTransmit(txPduId, &runtime->diagnosticResponseFromDsd); /** @req DCM237 *//* Will trigger PduR (CanTP) to call DslProvideTxBuffer(). */\r
+                                               transmitResult = PduR_DcmTransmit(txPduId, &runtime->diagnosticResponseFromDsd); /** @req DCM237 *//* Will trigger PduR (CanTP) to call DslProvideTxBuffer(). */\r
+                                               if (transmitResult != E_OK) {\r
+                                                       // TODO: What to do here?\r
+                                               }\r
                                        }\r
                                }\r
                                break;\r
@@ -499,7 +503,6 @@ void DslMain(void) {
                        }\r
                }\r
                protocolRowEntry++;\r
-               debug_count++;\r
        }\r
 }\r
 \r
@@ -511,8 +514,7 @@ void DslMain(void) {
 //  received a FF or a single frame and needs to obtain a buffer from the\r
 //  receiver so that received data can be forwarded.\r
 \r
-BufReq_ReturnType DslProvideRxBufferToPdur(PduIdType dcmRxPduId,\r
-               PduLengthType tpSduLength, const PduInfoType **pduInfoPtr) {\r
+BufReq_ReturnType DslProvideRxBufferToPdur(PduIdType dcmRxPduId, PduLengthType tpSduLength, const PduInfoType **pduInfoPtr) {\r
        BufReq_ReturnType ret = BUFREQ_NOT_OK;\r
        const Dcm_DslProtocolRxType *protocolRx = NULL;\r
        const Dcm_DslMainConnectionType *mainConnection = NULL;\r
@@ -608,7 +610,9 @@ void DslRxIndicationFromPduR(PduIdType dcmRxPduId, NotifResultType result) {
                                        }\r
                                        if (runtime->protocolStarted == TRUE) {\r
                                                if (runtime->diagnosticActiveComM == FALSE) {\r
+#if defined(USE_COMM)\r
                                                        ComM_DCM_ActivateDiagnostic(); /** @req DCM163 */\r
+#endif\r
                                                        runtime->diagnosticActiveComM = TRUE;\r
                                                }\r
                                                timeParams = protocolRow->DslProtocolTimeLimit;\r
@@ -674,6 +678,7 @@ BufReq_ReturnType DslProvideTxBuffer(PduIdType dcmTxPduId, const PduInfoType **p
        const Dcm_DslProtocolRowType *protocolRow = NULL;\r
        Dcm_DslRunTimeProtocolParametersType *runtime = NULL;\r
 \r
+       (void)length;           // Currently not used, this is only to remove compilation warnings\r
        DEBUG( DEBUG_MEDIUM, "DslProvideTxBuffer=%d\n", dcmTxPduId);\r
        if (findTxPduIdParentConfigurationLeafs(dcmTxPduId, &protocolTx, &mainConnection, &connection, &protocolRow, &runtime)) {\r
                switch (runtime->externalTxBufferStatus) { // ### EXTERNAL TX BUFFER ###\r
@@ -732,7 +737,9 @@ void DslTxConfirmation(PduIdType dcmTxPduId, NotifResultType result) {
                state = McuE_EnterCriticalSection();\r
                switch (runtime->externalTxBufferStatus) { // ### EXTERNAL TX BUFFER ###\r
                case PROVIDED_TO_PDUR: {\r
+#if defined(USE_COMM)\r
                        ComM_DCM_InactivateDiagnostic(); /** @req DCM164 */\r
+#endif\r
                        startS3SessionTimer(runtime, protocolRow); /** @req DCM141 */\r
                        releaseExternalRxTxBuffers(protocolRow, runtime); /** @req DCM118 *//** @req DCM352 *//** @req DCM353 *//** @req DCM354 */\r
                        externalBufferReleased = TRUE;\r
@@ -743,7 +750,7 @@ void DslTxConfirmation(PduIdType dcmTxPduId, NotifResultType result) {
                default:\r
                        break;\r
                }\r
-               if (externalBufferReleased == FALSE) {\r
+               if (!externalBufferReleased) {\r
                        switch (runtime->localTxBuffer.status) { // ### LOCAL TX BUFFER ###\r
                        case PROVIDED_TO_PDUR:\r
                                DEBUG( DEBUG_MEDIUM, "Released local buffer buffer OK!\n");\r
index e4ea1ae246d7d1f77fbef363d1e3a321ac8c9ff8..fb386301d365781a45f31b03bb08bdcccc3ba831 100644 (file)
@@ -13,6 +13,7 @@
  * for more details.\r
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
+//lint -esym(754, SID) //Structure member SID not used in udsReadDtcInfoSub_0x01_0x07_0x11_0x12() and udsReadDtcInfoSub_0x02_0x0A_0x0F_0x13_0x15()\r
 \r
 \r
 /*\r
@@ -38,9 +39,9 @@
  * Macros\r
  */\r
 #define BYTES_TO_DTC(hb, mb, lb)       (((uint32)(hb) << 16) | ((uint32)(mb) << 8) | (uint32)(lb))\r
-#define DTC_HIGH_BYTE(dtc)                     (((uint32)(dtc) >> 16) & 0xFF)\r
-#define DTC_MID_BYTE(dtc)                      (((uint32)(dtc) >> 8) & 0xFF)\r
-#define DTC_LOW_BYTE(dtc)                      ((uint32)(dtc) & 0xFF)\r
+#define DTC_HIGH_BYTE(dtc)                     (((uint32)(dtc) >> 16) & 0xFFu)\r
+#define DTC_MID_BYTE(dtc)                      (((uint32)(dtc) >> 8) & 0xFFu)\r
+#define DTC_LOW_BYTE(dtc)                      ((uint32)(dtc) & 0xFFu)\r
 \r
 \r
 typedef struct {\r
@@ -73,38 +74,44 @@ void DspMain(void)
 }\r
 \r
 \r
-boolean DspCheckSessionLevel(const Dcm_DspSessionRowType **sessionLevelRefTable)\r
+boolean DspCheckSessionLevel(Dcm_DspSessionRowType const* const* sessionLevelRefTable)\r
 {\r
-       boolean returnStatus = TRUE;\r
+       Std_ReturnType returnStatus;\r
+       boolean levelFound = FALSE;\r
        Dcm_SesCtrlType currentSession;\r
 \r
-       DslGetSesCtrlType(&currentSession);\r
-       while (((*sessionLevelRefTable)->DspSessionLevel != currentSession) && !(*sessionLevelRefTable)->Arc_EOL) {\r
-               sessionLevelRefTable++;\r
-       }\r
+       returnStatus = DslGetSesCtrlType(&currentSession);\r
+       if (returnStatus == E_OK) {\r
+               while ( ((*sessionLevelRefTable)->DspSessionLevel != currentSession) && (!(*sessionLevelRefTable)->Arc_EOL) ) {\r
+                       sessionLevelRefTable++;\r
+               }\r
 \r
-       if ((*sessionLevelRefTable)->Arc_EOL) {\r
-               returnStatus = FALSE;\r
+               if (!(*sessionLevelRefTable)->Arc_EOL) {\r
+                       levelFound = TRUE;\r
+               }\r
        }\r
 \r
-       return returnStatus;\r
+       return levelFound;\r
 }\r
 \r
 \r
-boolean DspCheckSecurityLevel(const Dcm_DspSecurityRowType     **securityLevelRefTable)\r
+boolean DspCheckSecurityLevel(Dcm_DspSecurityRowType const* const* securityLevelRefTable)\r
 {\r
-       boolean returnStatus = TRUE;\r
+       Std_ReturnType returnStatus;\r
+       boolean levelFound = FALSE;\r
        Dcm_SecLevelType currentSecurityLevel;\r
 \r
-       DslGetSecurityLevel(&currentSecurityLevel);\r
-       while (((*securityLevelRefTable)->DspSecurityLevel != currentSecurityLevel) && !(*securityLevelRefTable)->Arc_EOL) {\r
-               securityLevelRefTable++;\r
-       }\r
-       if ((*securityLevelRefTable)->Arc_EOL) {\r
-               returnStatus = FALSE;\r
+       returnStatus = DslGetSecurityLevel(&currentSecurityLevel);\r
+       if (returnStatus == E_OK) {\r
+               while ( ((*securityLevelRefTable)->DspSecurityLevel != currentSecurityLevel) && (!(*securityLevelRefTable)->Arc_EOL) ) {\r
+                       securityLevelRefTable++;\r
+               }\r
+               if (!(*securityLevelRefTable)->Arc_EOL) {\r
+                       levelFound = TRUE;\r
+               }\r
        }\r
 \r
-       return returnStatus;\r
+       return levelFound;\r
 }\r
 \r
 \r
@@ -115,12 +122,16 @@ static Std_ReturnType askApplicationForSessionPermission(Dcm_SesCtrlType newSess
        Dcm_SesCtrlType currentSessionLevel;\r
        Std_ReturnType result;\r
 \r
-       while (!sesControl->Arc_EOL && (returnCode != E_SESSION_NOT_ALLOWED)) {\r
+       while ( (!sesControl->Arc_EOL) && (returnCode != E_SESSION_NOT_ALLOWED)) {\r
                if (sesControl->GetSesChgPermission != NULL) {\r
-                       Dcm_GetSesCtrlType(&currentSessionLevel);\r
-                       result = sesControl->GetSesChgPermission(currentSessionLevel ,newSessionLevel);\r
-                       if (result != E_OK) {\r
-                               returnCode = result;\r
+                       result = Dcm_GetSesCtrlType(&currentSessionLevel);\r
+                       if (result == E_OK) {\r
+                               result = sesControl->GetSesChgPermission(currentSessionLevel ,newSessionLevel);\r
+                               if (result != E_OK) {\r
+                                       returnCode = result;\r
+                               }\r
+                       } else {\r
+                               returnCode = E_NOT_OK;\r
                        }\r
                }\r
                sesControl++;\r
@@ -140,7 +151,7 @@ void DspUdsDiagnosticSessionControl(const PduInfoType *pduRxData, PduInfoType *p
        if (pduRxData->SduLength == 2) {\r
                reqSessionType = pduRxData->SduDataPtr[1];\r
                // Check if type exist in session table\r
-               while ((sessionRow->DspSessionLevel != reqSessionType) && !sessionRow->Arc_EOL) {\r
+               while ((sessionRow->DspSessionLevel != reqSessionType) && (!sessionRow->Arc_EOL) ) {\r
                        sessionRow++;\r
                }\r
 \r
@@ -274,21 +285,33 @@ static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x01_0x07_0x11_0x12(const
        }\r
 \r
        if (setDtcFilterResult == DEM_FILTER_ACCEPTED) {\r
+               Std_ReturnType result;\r
+               Dem_ReturnGetNumberOfFilteredDTCType getNumerResult;\r
                uint16 numberOfFilteredDtc;\r
                uint8 dtcStatusMask;\r
+               //lint --e(826) PC-Lint exception - Suspicious pointer conversion\r
+               //lint --e(927) PC-Lint exception - Pointer to pointer cast\r
                TxDataType *txData = (TxDataType*)pduTxData->SduDataPtr;\r
 \r
                /** @req DCM376 */\r
-               Dem_GetNumberOfFilteredDtc(&numberOfFilteredDtc);\r
-               Dem_GetDTCStatusAvailabilityMask(&dtcStatusMask);\r
-\r
-               // Create positive response (ISO 14229-1 table 251)\r
-               txData->reportType = pduRxData->SduDataPtr[1];                                          // reportType\r
-               txData->dtcStatusAvailabilityMask = dtcStatusMask;                                      // DTCStatusAvailabilityMask\r
-               txData->dtcFormatIdentifier = Dem_GetTranslationType();                         // DTCFormatIdentifier\r
-               txData->dtcCountHighByte = (numberOfFilteredDtc >> 8);                          // DTCCount high byte\r
-               txData->dtcCountLowByte = (numberOfFilteredDtc & 0xFF);                         // DTCCount low byte\r
-               pduTxData->SduLength = 6;\r
+               getNumerResult = Dem_GetNumberOfFilteredDtc(&numberOfFilteredDtc);\r
+               if (getNumerResult == DEM_NUMBER_OK) {\r
+                       result = Dem_GetDTCStatusAvailabilityMask(&dtcStatusMask);\r
+                       if (result != E_OK) {\r
+                               dtcStatusMask = 0;\r
+                       }\r
+\r
+                       // Create positive response (ISO 14229-1 table 251)\r
+                       txData->reportType = pduRxData->SduDataPtr[1];                                          // reportType\r
+                       txData->dtcStatusAvailabilityMask = dtcStatusMask;                                      // DTCStatusAvailabilityMask\r
+                       txData->dtcFormatIdentifier = Dem_GetTranslationType();                         // DTCFormatIdentifier\r
+                       txData->dtcCountHighByte = (numberOfFilteredDtc >> 8);                          // DTCCount high byte\r
+                       txData->dtcCountLowByte = (numberOfFilteredDtc & 0xFFu);                        // DTCCount low byte\r
+                       pduTxData->SduLength = 6;\r
+               } else {\r
+                       // TODO: What to do?\r
+                       responseCode = DCM_E_GENERALREJECT;\r
+               }\r
        }\r
        else {\r
                responseCode = DCM_E_REQUESTOUTOFRANGE;\r
@@ -347,14 +370,20 @@ static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x02_0x0A_0x0F_0x13_0x15(c
 \r
        if (setDtcFilterResult == DEM_FILTER_ACCEPTED) {\r
                uint8 dtcStatusMask;\r
+               //lint --e(826) PC-Lint exception - Suspicious pointer conversion\r
+               //lint --e(927) PC-Lint exception - Pointer to pointer cast\r
                TxDataType *txData = (TxDataType*)pduTxData->SduDataPtr;\r
                Dem_ReturnGetNextFilteredDTCType getNextFilteredDtcResult;\r
                uint32 dtc;\r
                Dem_EventStatusExtendedType dtcStatus;\r
                uint16 nrOfDtcs = 0;\r
+               Std_ReturnType result;\r
 \r
                /** @req DCM377 */\r
-               Dem_GetDTCStatusAvailabilityMask(&dtcStatusMask);\r
+               result = Dem_GetDTCStatusAvailabilityMask(&dtcStatusMask);\r
+               if (result != E_OK) {\r
+                       dtcStatusMask = 0;\r
+               }\r
 \r
                // Create positive response (ISO 14229-1 table 252)\r
                txData->reportType = pduRxData->SduDataPtr[1];\r
@@ -375,7 +404,7 @@ static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x02_0x0A_0x0F_0x13_0x15(c
                                responseCode = DCM_E_REQUESTOUTOFRANGE;\r
                        }\r
                }\r
-               pduTxData->SduLength = 3 + nrOfDtcs * sizeof(dtcAndStatusRecordType);\r
+               pduTxData->SduLength = (PduLengthType)(3 + (nrOfDtcs * sizeof(dtcAndStatusRecordType)));\r
        }\r
        else {\r
                responseCode = DCM_E_REQUESTOUTOFRANGE;\r
@@ -384,7 +413,8 @@ static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x02_0x0A_0x0F_0x13_0x15(c
        return responseCode;\r
 }\r
 \r
-\r
+// PC-Lint (715 etc): Remove errors until function is filled.\r
+//lint -e{715, 838, 818}               Symbol not referenced, responseCode not used, txData should be const\r
 static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x08(const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
 {\r
        Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
@@ -396,6 +426,8 @@ static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x08(const PduInfoType *pd
 }\r
 \r
 \r
+// PC-Lint (715 etc): Remove errors until function is filled.\r
+//lint -e{715, 838, 818}               Symbol not referenced, responseCode not used, txData should be const\r
 static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x09(const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
 {\r
        Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
@@ -459,8 +491,8 @@ static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x06_0x10(const PduInfoTyp
                getStatusOfDtcResult = Dem_GetStatusOfDTC(dtc, DEM_DTC_KIND_ALL_DTCS, dtcOrigin, &statusOfDtc); /** @req DCM295 */ /** @req DCM475 */\r
                if (getStatusOfDtcResult == DEM_STATUS_OK) {\r
                        Dem_ReturnGetExtendedDataRecordByDTCType getExtendedDataRecordByDtcResult;\r
-                       uint16 recNum;\r
-                       uint8 recLength;\r
+                       uint8 recNum;\r
+                       uint16 recLength;\r
                        uint16 txIndex = 6;\r
 \r
                        /** @req DCM297 */ /** @req DCM474 */ /** @req DCM386 */\r
@@ -470,7 +502,7 @@ static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x06_0x10(const PduInfoTyp
                        pduTxData->SduDataPtr[4] = DTC_LOW_BYTE(dtc);                                   // DTC low byte\r
                        pduTxData->SduDataPtr[5] = statusOfDtc;                                                 // DTC status\r
                        for (recNum = startRecNum; recNum <= endRecNum; recNum++) {\r
-                               recLength = pduTxData->SduLength - txIndex -1;  // Calculate what's left in buffer\r
+                               recLength = pduTxData->SduLength - (txIndex + 1);       // Calculate what's left in buffer\r
                                /** @req DCM296 */ /** @req DCM476 */ /** @req DCM382 */\r
                                getExtendedDataRecordByDtcResult = Dem_GetExtendedDataRecordByDTC(dtc, DEM_DTC_KIND_ALL_DTCS, dtcOrigin, recNum, &pduTxData->SduDataPtr[txIndex+1], &recLength);\r
                                if (getExtendedDataRecordByDtcResult == DEM_RECORD_OK) {\r
@@ -494,6 +526,8 @@ static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x06_0x10(const PduInfoTyp
 }\r
 \r
 \r
+// PC-Lint (715 etc): Remove errors until function is filled.\r
+//lint -e{715, 838, 818}               Symbol not referenced, responseCode not used, txData should be const\r
 static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x03(const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
 {\r
        Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
@@ -505,6 +539,8 @@ static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x03(const PduInfoType *pd
 }\r
 \r
 \r
+// PC-Lint (715 etc): Remove errors until function is filled.\r
+//lint -e{715, 838, 818}               Symbol not referenced, responseCode not used, txData should be const\r
 static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x04(const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
 {\r
        Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
@@ -516,6 +552,8 @@ static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x04(const PduInfoType *pd
 }\r
 \r
 \r
+// PC-Lint (715 etc): Remove errors until function is filled.\r
+//lint -e{715, 838, 818}               Symbol not referenced, responseCode not used, txData should be const\r
 static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x05(const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
 {\r
        Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
@@ -527,6 +565,8 @@ static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x05(const PduInfoType *pd
 }\r
 \r
 \r
+// PC-Lint (715 etc): Remove errors until function is filled.\r
+//lint -e{715, 838, 818}               Symbol not referenced, responseCode not used, txData should be const\r
 static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x0B_0x0C_0x0D_0x0E(const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
 {\r
        Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
@@ -538,6 +578,8 @@ static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x0B_0x0C_0x0D_0x0E(const
 }\r
 \r
 \r
+// PC-Lint (715 etc): Remove errors until function is filled.\r
+//lint -e{715, 838, 818}               Symbol not referenced, responseCode not used, txData should be const\r
 static Dcm_NegativeResponseCodeType udsReadDtcInfoSub_0x14(const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
 {\r
        Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
@@ -640,7 +682,7 @@ static boolean lookupDid(uint16 didNr, const Dcm_DspDidType **didPtr)
        const Dcm_DspDidType *dspDid = DCM_Config.Dsp->DspDid;\r
        boolean didFound = FALSE;\r
 \r
-       while ((dspDid->DspDidIdentifier != didNr) &&  !dspDid->Arc_EOL) {\r
+       while ((dspDid->DspDidIdentifier != didNr) &&  (!dspDid->Arc_EOL)) {\r
                dspDid++;\r
        }\r
 \r
@@ -664,7 +706,7 @@ static Dcm_NegativeResponseCodeType readDidData(const Dcm_DspDidType *didPtr, Pd
                                Dcm_NegativeResponseCodeType errorCode;\r
                                result = didPtr->DspDidConditionCheckReadFnc(&errorCode);\r
                                if ((result == E_OK) && (errorCode == DCM_E_POSITIVERESPONSE)) {        /** @req DCM439 */\r
-                                       uint16 didLen;\r
+                                       uint16 didLen = 0;\r
                                        result = E_NOT_OK;\r
                                        if (didPtr->DspDidInfoRef->DspDidFixedLength) { /** @req DCM436 */\r
                                                didLen = didPtr->DspDidSize;\r
@@ -679,9 +721,9 @@ static Dcm_NegativeResponseCodeType readDidData(const Dcm_DspDidType *didPtr, Pd
                                        if (result == E_OK) {\r
                                                // Now ready for reading the data!\r
                                                if ((*txPos + didLen + 2) <= pduTxData->SduLength) {\r
-                                                       pduTxData->SduDataPtr[*txPos] = (didPtr->DspDidIdentifier >> 8) & 0xFF;\r
+                                                       pduTxData->SduDataPtr[*txPos] = (didPtr->DspDidIdentifier >> 8) & 0xFFu;\r
                                                        (*txPos)++;\r
-                                                       pduTxData->SduDataPtr[*txPos] = (didPtr->DspDidIdentifier >> 0) & 0xFF;\r
+                                                       pduTxData->SduDataPtr[*txPos] = didPtr->DspDidIdentifier & 0xFFu;\r
                                                        (*txPos)++;\r
                                                        result = didPtr->DspDidReadDataFnc(&pduTxData->SduDataPtr[*txPos]);     /** @req DCM437 */\r
                                                        *txPos += didLen;\r
@@ -729,18 +771,18 @@ void DspUdsReadDataByIdentifier(const PduInfoType *pduRxData, PduInfoType *pduTx
 {\r
        /** @req DCM253 */\r
        Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
-       uint8 nrOfDids;\r
+       uint16 nrOfDids;\r
        uint16 didNr;\r
        const Dcm_DspDidType *didPtr = NULL;\r
 \r
        uint16 txPos = 1;\r
        uint16 i;\r
 \r
-       if ((pduRxData->SduLength - 1) % 2 == 0 ) {\r
+       if ( ((pduRxData->SduLength - 1) % 2) == 0 ) {\r
                nrOfDids = (pduRxData->SduLength - 1) / 2;\r
 \r
                for (i = 0; (i < nrOfDids) && (responseCode == DCM_E_POSITIVERESPONSE); i++) {\r
-                       didNr = (pduRxData->SduDataPtr[1+i*2] << 8) + pduRxData->SduDataPtr[2+i*2];\r
+                       didNr = (uint16)((uint16)pduRxData->SduDataPtr[1+(i*2)] << 8) + pduRxData->SduDataPtr[2+(i*2)];\r
                        if (lookupDid(didNr, &didPtr)) {        /** @req DCM438 */\r
                                responseCode = readDidData(didPtr, pduTxData, &txPos);\r
                        }\r
@@ -761,7 +803,7 @@ void DspUdsReadDataByIdentifier(const PduInfoType *pduRxData, PduInfoType *pduTx
 }\r
 \r
 \r
-static Dcm_NegativeResponseCodeType readDidScalingData(const Dcm_DspDidType *didPtr, PduInfoType *pduTxData, uint16 *txPos)\r
+static Dcm_NegativeResponseCodeType readDidScalingData(const Dcm_DspDidType *didPtr, const PduInfoType *pduTxData, uint16 *txPos)\r
 {\r
        Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
 \r
@@ -773,9 +815,9 @@ static Dcm_NegativeResponseCodeType readDidScalingData(const Dcm_DspDidType *did
                        Std_ReturnType result;\r
                        Dcm_NegativeResponseCodeType errorCode;\r
 \r
-                       pduTxData->SduDataPtr[*txPos] = (didPtr->DspDidIdentifier >> 8) & 0xFF;\r
+                       pduTxData->SduDataPtr[*txPos] = (didPtr->DspDidIdentifier >> 8) & 0xFFu;\r
                        (*txPos)++;\r
-                       pduTxData->SduDataPtr[*txPos] = (didPtr->DspDidIdentifier >> 0) & 0xFF;\r
+                       pduTxData->SduDataPtr[*txPos] = didPtr->DspDidIdentifier & 0xFFu;\r
                        (*txPos)++;\r
                        result = didPtr->DspDidGetScalingInfoFnc(&pduTxData->SduDataPtr[*txPos], &errorCode);   /** @req DCM394 */\r
                        *txPos += scalingInfoLen;\r
@@ -805,7 +847,7 @@ void DspUdsReadScalingDataByIdentifier(const PduInfoType *pduRxData, PduInfoType
        uint16 txPos = 1;\r
 \r
        if (pduRxData->SduLength == 3) {\r
-               didNr = (pduRxData->SduDataPtr[1] << 8) + pduRxData->SduDataPtr[2];\r
+               didNr = (uint16)((uint16)pduRxData->SduDataPtr[1] << 8) + pduRxData->SduDataPtr[2];\r
                if (lookupDid(didNr, &didPtr)) {\r
                        responseCode = readDidScalingData(didPtr, pduTxData, &txPos);\r
                }\r
@@ -837,7 +879,7 @@ static Dcm_NegativeResponseCodeType writeDidData(const Dcm_DspDidType *didPtr, c
                                Dcm_NegativeResponseCodeType errorCode;\r
                                result = didPtr->DspDidConditionCheckWriteFnc(&errorCode);      /** @req DCM471 */\r
                                if ((result == E_OK) && (errorCode == DCM_E_POSITIVERESPONSE)) {\r
-                                       uint16 didLen;\r
+                                       uint16 didLen = 0;\r
                                        result = E_NOT_OK;\r
                                        if (didPtr->DspDidInfoRef->DspDidFixedLength) { /** @req DCM472 */\r
                                                didLen = didPtr->DspDidSize;\r
@@ -846,12 +888,11 @@ static Dcm_NegativeResponseCodeType writeDidData(const Dcm_DspDidType *didPtr, c
                                        else {\r
                                                if (didPtr->DspDidReadDataLengthFnc != NULL) {\r
                                                        result = didPtr->DspDidReadDataLengthFnc(&didLen);\r
-                                               }\r
-                                       }\r
+                                               }                                       }\r
 \r
                                        if (result == E_OK) {\r
                                                if (didLen == writeDidLen) {    /** @req DCM473 */\r
-                                                       result = didPtr->DspDidWriteDataFnc(&pduRxData->SduDataPtr[3], didLen, &errorCode);     /** @req DCM395 */\r
+                                                       result = didPtr->DspDidWriteDataFnc(&pduRxData->SduDataPtr[3], (uint8)didLen, &errorCode);      /** @req DCM395 */\r
                                                        if ((result != E_OK) || (errorCode != DCM_E_POSITIVERESPONSE)) {\r
                                                                responseCode = DCM_E_CONDITIONSNOTCORRECT;\r
                                                        }\r
@@ -893,7 +934,7 @@ void DspUdsWriteDataByIdentifier(const PduInfoType *pduRxData, PduInfoType *pduT
        uint16 didDataLength;\r
 \r
        didDataLength = pduRxData->SduLength - 3;\r
-       didNr = (pduRxData->SduDataPtr[1] << 8) + pduRxData->SduDataPtr[2];\r
+       didNr = (uint16)((uint16)pduRxData->SduDataPtr[1] << 8) + pduRxData->SduDataPtr[2];\r
        if (lookupDid(didNr, &didPtr)) {        /** @req DCM467 */\r
                responseCode = writeDidData(didPtr, pduRxData, didDataLength);\r
        }\r
@@ -903,8 +944,8 @@ void DspUdsWriteDataByIdentifier(const PduInfoType *pduRxData, PduInfoType *pduT
 \r
        if (responseCode == DCM_E_POSITIVERESPONSE) {\r
                pduTxData->SduLength = 3;\r
-               pduTxData->SduDataPtr[1] = (didNr >> 8) & 0xFF;\r
-               pduTxData->SduDataPtr[2] = (didNr >> 0) & 0xFF;\r
+               pduTxData->SduDataPtr[1] = (didNr >> 8) & 0xFFu;\r
+               pduTxData->SduDataPtr[2] = didNr & 0xFFu;\r
        }\r
 \r
        DsdDspProcessingDone(responseCode);\r
@@ -918,7 +959,7 @@ void DspUdsSecurityAccess(const PduInfoType *pduRxData, PduInfoType *pduTxData)
 \r
        // Check sub function range (0x01 to 0x42)\r
        if ((pduRxData->SduDataPtr[1] >= 0x01) && (pduRxData->SduDataPtr[1] <= 0x42)) {\r
-               boolean isRequestSeed = pduRxData->SduDataPtr[1] & 0x01;\r
+               boolean isRequestSeed = pduRxData->SduDataPtr[1] & 0x01u;\r
                Dcm_SecLevelType requestedSecurityLevel = (pduRxData->SduDataPtr[1]-1)/2;\r
                Dcm_NegativeResponseCodeType getSeedErrorCode;\r
 \r
@@ -926,42 +967,48 @@ void DspUdsSecurityAccess(const PduInfoType *pduRxData, PduInfoType *pduTxData)
                        // requestSeed message\r
                        // Check if type exist in security table\r
                        const Dcm_DspSecurityRowType *securityRow = &DCM_Config.Dsp->DspSecurity->DspSecurityRow[0];\r
-                       while ((securityRow->DspSecurityLevel != requestedSecurityLevel) && !securityRow->Arc_EOL) {\r
+                       while ((securityRow->DspSecurityLevel != requestedSecurityLevel) && (!securityRow->Arc_EOL)) {\r
                                securityRow++;\r
                        }\r
                        if (!securityRow->Arc_EOL) {\r
                                // Check length\r
                                if (pduRxData->SduLength == (2 + securityRow->DspSecurityADRSize)) {    /** @req DCM321.RequestSeed */\r
                                        Dcm_SecLevelType activeSecLevel;\r
-                                       Dcm_GetSecurityLevel(&activeSecLevel);\r
-                                       if (requestedSecurityLevel == activeSecLevel) {         /** @req DCM323 */\r
-                                               pduTxData->SduDataPtr[1] = pduRxData->SduDataPtr[1];\r
-                                               // If same level set the seed to zeroes\r
-                                               memset(&pduTxData->SduDataPtr[2], 0, securityRow->DspSecuritySeedSize);\r
-                                               pduTxData->SduLength = 2 + securityRow->DspSecuritySeedSize;\r
-                                       }\r
-                                       else {\r
-                                               // New security level ask for seed\r
-                                               if (securityRow->GetSeed != NULL) {\r
-                                                       Std_ReturnType getSeedResult;\r
-                                                       getSeedResult = securityRow->GetSeed(&pduRxData->SduDataPtr[2], &pduTxData->SduDataPtr[2], &getSeedErrorCode); /** @req DCM324.RequestSeed */\r
-                                                       if ((getSeedResult == E_OK) && (getSeedErrorCode == E_OK)) {\r
-                                                               // Everything ok add sub function to tx message and send it.\r
-                                                               pduTxData->SduDataPtr[1] = pduRxData->SduDataPtr[1];\r
-                                                               pduTxData->SduLength = 2 + securityRow->DspSecuritySeedSize;\r
-\r
-                                                               dspUdsSecurityAccesData.reqSecLevel = requestedSecurityLevel;\r
-                                                               dspUdsSecurityAccesData.reqSecLevelRef = securityRow;\r
-                                                               dspUdsSecurityAccesData.reqInProgress = TRUE;\r
-                                                       }\r
-                                                       else {\r
-                                                               // GetSeed returned not ok\r
+                                       Std_ReturnType result;\r
+                                       result = Dcm_GetSecurityLevel(&activeSecLevel);\r
+                                       if (result == E_OK) {\r
+                                               if (requestedSecurityLevel == activeSecLevel) {         /** @req DCM323 */\r
+                                                       pduTxData->SduDataPtr[1] = pduRxData->SduDataPtr[1];\r
+                                                       // If same level set the seed to zeroes\r
+                                                       memset(&pduTxData->SduDataPtr[2], 0, securityRow->DspSecuritySeedSize);\r
+                                                       pduTxData->SduLength = 2 + securityRow->DspSecuritySeedSize;\r
+                                               } else {\r
+                                                       // New security level ask for seed\r
+                                                       if (securityRow->GetSeed != NULL) {\r
+                                                               Std_ReturnType getSeedResult;\r
+                                                               getSeedResult = securityRow->GetSeed(&pduRxData->SduDataPtr[2], &pduTxData->SduDataPtr[2], &getSeedErrorCode); /** @req DCM324.RequestSeed */\r
+                                                               if ((getSeedResult == E_OK) && (getSeedErrorCode == E_OK)) {\r
+                                                                       // Everything ok add sub function to tx message and send it.\r
+                                                                       pduTxData->SduDataPtr[1] = pduRxData->SduDataPtr[1];\r
+                                                                       pduTxData->SduLength = 2 + securityRow->DspSecuritySeedSize;\r
+\r
+                                                                       dspUdsSecurityAccesData.reqSecLevel = requestedSecurityLevel;\r
+                                                                       dspUdsSecurityAccesData.reqSecLevelRef = securityRow;\r
+                                                                       dspUdsSecurityAccesData.reqInProgress = TRUE;\r
+                                                               }\r
+                                                               else {\r
+                                                                       // GetSeed returned not ok\r
+                                                                       responseCode = DCM_E_INCORRECTMESSAGELENGTHORINVALIDFORMAT;\r
+                                                               }\r
+                                                       } else {\r
                                                                responseCode = DCM_E_INCORRECTMESSAGELENGTHORINVALIDFORMAT;\r
                                                        }\r
-                                               } else {\r
-                                                       responseCode = DCM_E_INCORRECTMESSAGELENGTHORINVALIDFORMAT;\r
                                                }\r
+                                       } else {\r
+                                               // TODO: What to do?\r
+                                               responseCode = DCM_E_GENERALREJECT;\r
                                        }\r
+\r
                                }\r
                                else {\r
                                        // Length not ok\r
@@ -1019,6 +1066,169 @@ void DspUdsSecurityAccess(const PduInfoType *pduRxData, PduInfoType *pduTxData)
 }\r
 \r
 \r
+static boolean lookupRoutine(uint16 routineId, const Dcm_DspRoutineType **routinePtr)\r
+{\r
+       const Dcm_DspRoutineType *dspRoutine = DCM_Config.Dsp->DspRoutine;\r
+       boolean routineFound = FALSE;\r
+\r
+       while ((dspRoutine->DspRoutineIdentifier != routineId) &&  (!dspRoutine->Arc_EOL)) {\r
+               dspRoutine++;\r
+       }\r
+\r
+       if (!dspRoutine->Arc_EOL) {\r
+               routineFound = TRUE;\r
+               *routinePtr = dspRoutine;\r
+       }\r
+\r
+       return routineFound;\r
+}\r
+\r
+\r
+static Dcm_NegativeResponseCodeType startRoutine(const Dcm_DspRoutineType *routinePtr, const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
+{\r
+       Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
+       Std_ReturnType routineResult;\r
+\r
+       // startRoutine\r
+       if ((routinePtr->DspStartRoutineFnc != NULL) && (routinePtr->DspRoutineInfoRef->DspStartRoutine != NULL)) {\r
+               if (((routinePtr->DspRoutineInfoRef->DspStartRoutine->DspStartRoutineCtrlOptRecSize + 4) == pduRxData->SduLength)\r
+                       && ((routinePtr->DspRoutineInfoRef->DspStartRoutine->DspStartRoutineStsOptRecSize + 4) <= pduTxData->SduLength)) {\r
+                       pduTxData->SduLength = routinePtr->DspRoutineInfoRef->DspStartRoutine->DspStartRoutineStsOptRecSize + 4;\r
+                       routineResult = routinePtr->DspStartRoutineFnc(&pduRxData->SduDataPtr[4], &pduTxData->SduDataPtr[4], &responseCode);    /** @req DCM400 */ /** @req DCM401 */\r
+                       if (routineResult != E_OK) {\r
+                               responseCode = DCM_E_CONDITIONSNOTCORRECT;\r
+                       }\r
+               }\r
+               else {\r
+                       responseCode = DCM_E_INCORRECTMESSAGELENGTHORINVALIDFORMAT;\r
+               }\r
+       }\r
+       else {\r
+               responseCode = DCM_E_CONDITIONSNOTCORRECT;\r
+       }\r
+\r
+       return responseCode;\r
+}\r
+\r
+\r
+static Dcm_NegativeResponseCodeType stopRoutine(const Dcm_DspRoutineType *routinePtr, const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
+{\r
+       Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
+       Std_ReturnType routineResult;\r
+\r
+       // stopRoutine\r
+       if ((routinePtr->DspStopRoutineFnc != NULL) && (routinePtr->DspRoutineInfoRef->DspRoutineStop != NULL)) {\r
+               if (((routinePtr->DspRoutineInfoRef->DspRoutineStop->DspStopRoutineCtrlOptRecSize + 4) == pduRxData->SduLength)\r
+                       && ((routinePtr->DspRoutineInfoRef->DspRoutineStop->DspStopRoutineStsOptRecSize + 4) <= pduTxData->SduLength)) {\r
+                       pduTxData->SduLength = routinePtr->DspRoutineInfoRef->DspRoutineStop->DspStopRoutineStsOptRecSize + 4;\r
+                       routineResult = routinePtr->DspStopRoutineFnc(&pduRxData->SduDataPtr[4], &pduTxData->SduDataPtr[4], &responseCode);     /** @req DCM402 */ /** @req DCM403 */\r
+                       if (routineResult != E_OK) {\r
+                               responseCode = DCM_E_CONDITIONSNOTCORRECT;\r
+                       }\r
+               }\r
+               else {\r
+                       responseCode = DCM_E_INCORRECTMESSAGELENGTHORINVALIDFORMAT;\r
+               }\r
+       }\r
+       else {\r
+               responseCode = DCM_E_CONDITIONSNOTCORRECT;\r
+       }\r
+\r
+       return responseCode;\r
+}\r
+\r
+\r
+static Dcm_NegativeResponseCodeType requestRoutineResults(const Dcm_DspRoutineType *routinePtr, PduInfoType *pduTxData)\r
+{\r
+       Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
+       Std_ReturnType routineResult;\r
+\r
+       // requestRoutineResults\r
+       if ((routinePtr->DspRequestResultRoutineFnc != NULL) && (routinePtr->DspRoutineInfoRef->DspRoutineRequestRes != NULL)) {\r
+               if ((routinePtr->DspRoutineInfoRef->DspRoutineRequestRes->DspReqResRtnCtrlOptRecSize + 4) <= pduTxData->SduLength) {\r
+                       pduTxData->SduLength = routinePtr->DspRoutineInfoRef->DspRoutineRequestRes->DspReqResRtnCtrlOptRecSize + 4;\r
+                       routineResult = routinePtr->DspRequestResultRoutineFnc(&pduTxData->SduDataPtr[4], &responseCode);       /** @req DCM404 */ /** @req DCM405 */\r
+                       if (routineResult != E_OK) {\r
+                               responseCode = DCM_E_CONDITIONSNOTCORRECT;\r
+                       }\r
+               }\r
+               else {\r
+                       responseCode = DCM_E_INCORRECTMESSAGELENGTHORINVALIDFORMAT;\r
+               }\r
+       }\r
+       else {\r
+               responseCode = DCM_E_CONDITIONSNOTCORRECT;\r
+       }\r
+\r
+       return responseCode;\r
+}\r
+\r
+\r
+void DspUdsRoutineControl(const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
+{\r
+       /** @req DCM257 */\r
+       Dcm_NegativeResponseCodeType responseCode = DCM_E_POSITIVERESPONSE;\r
+       uint8 subFunctionNumber = 0;\r
+       uint16 routineId = 0;\r
+       const Dcm_DspRoutineType *routinePtr = NULL;\r
+\r
+       if (pduRxData->SduLength >= 4) {\r
+               subFunctionNumber = pduRxData->SduDataPtr[1];\r
+               if ((subFunctionNumber > 0) && (subFunctionNumber < 4)) {\r
+                       routineId = (uint16)((uint16)pduRxData->SduDataPtr[2] << 8) + pduRxData->SduDataPtr[3];\r
+                       if (lookupRoutine(routineId, &routinePtr)) {\r
+                               if (DspCheckSessionLevel(routinePtr->DspRoutineInfoRef->DspRoutineAuthorization.DspRoutineSessionRef)) {\r
+                                       if (DspCheckSecurityLevel(routinePtr->DspRoutineInfoRef->DspRoutineAuthorization.DspRoutineSecurityLevelRef)) {\r
+                                               switch (subFunctionNumber) {\r
+                                               case 0x01:      // startRoutine\r
+                                                       responseCode = startRoutine(routinePtr, pduRxData, pduTxData);\r
+                                                       break;\r
+\r
+                                               case 0x02:      // stopRoutine\r
+                                                       responseCode = stopRoutine(routinePtr, pduRxData, pduTxData);\r
+                                                       break;\r
+\r
+                                               case 0x03:      // requestRoutineResults\r
+                                                       responseCode =  requestRoutineResults(routinePtr, pduTxData);\r
+                                                       break;\r
+\r
+                                               default:        // This shall never happen\r
+                                                       responseCode = DCM_E_SUBFUNCTIONNOTSUPPORTED;\r
+                                                       break;\r
+                                               }\r
+                                       }\r
+                                       else {  // Not allowed in current security level\r
+                                               responseCode = DCM_E_SECUTITYACCESSDENIED;\r
+                                       }\r
+                               }\r
+                               else {  // Not allowed in current session\r
+                                       responseCode = DCM_E_SERVICENOTSUPPORTEDINACTIVESESSION;\r
+                               }\r
+                       }\r
+                       else {  // Unknown routine identifier\r
+                               responseCode = DCM_E_REQUESTOUTOFRANGE;\r
+                       }\r
+               }\r
+               else {  // Sub function not supported\r
+                       responseCode = DCM_E_SUBFUNCTIONNOTSUPPORTED;\r
+               }\r
+       }\r
+       else {\r
+               // Wrong length\r
+               responseCode = DCM_E_INCORRECTMESSAGELENGTHORINVALIDFORMAT;\r
+       }\r
+\r
+       if (responseCode == DCM_E_POSITIVERESPONSE) {\r
+               // Add header to the positive response message\r
+               pduTxData->SduDataPtr[1] = subFunctionNumber;\r
+               pduTxData->SduDataPtr[2] = (routineId >> 8) & 0xFFu;\r
+               pduTxData->SduDataPtr[3] = routineId & 0xFFu;\r
+       }\r
+\r
+       DsdDspProcessingDone(responseCode);\r
+}\r
+\r
+\r
 void DspUdsTesterPresent(const PduInfoType *pduRxData, PduInfoType *pduTxData)\r
 {\r
        /** @req DCM251 */\r
index 8639c931773cbd9100f08fb4b9206ba556c8dc4e..590e75e09aacc3154e353e0ddaf918f8d22273cb 100644 (file)
@@ -70,9 +70,9 @@
 #define SID_CONTROL_DTC_SETTING                                        0x85\r
 \r
 // Misc definitions\r
-#define SUPPRESS_POS_RESP_BIT          0x80\r
-#define SID_RESPONSE_BIT                       0x40\r
-#define VALUE_IS_NOT_USED                      0x00\r
+#define SUPPRESS_POS_RESP_BIT          (uint8)0x80\r
+#define SID_RESPONSE_BIT                       (uint8)0x40\r
+#define VALUE_IS_NOT_USED                      (uint8)0x00\r
 \r
 typedef enum {\r
        DSD_TX_RESPONSE_READY,\r
@@ -94,10 +94,11 @@ void DspUdsReadDataByIdentifier(const PduInfoType *pduRxData, PduInfoType *pduTx
 void DspUdsReadScalingDataByIdentifier(const PduInfoType *pduRxData, PduInfoType *pduTxData);\r
 void DspUdsWriteDataByIdentifier(const PduInfoType *pduRxData, PduInfoType *pduTxData);\r
 void DspUdsControlDtcSetting(const PduInfoType *pduRxData, PduInfoType *pduTxData);\r
+void DspUdsRoutineControl(const PduInfoType *pduRxData, PduInfoType *pduTxData);\r
 void DspDcmConfirmation(PduIdType confirmPduId);\r
 \r
-boolean DspCheckSessionLevel(const Dcm_DspSessionRowType **sessionLevelRefTable);\r
-boolean DspCheckSecurityLevel(const Dcm_DspSecurityRowType     **securityLevelRefTable);\r
+boolean DspCheckSessionLevel(Dcm_DspSessionRowType const* const* sessionLevelRefTable);\r
+boolean DspCheckSecurityLevel(Dcm_DspSecurityRowType const* const* securityLevelRefTable);\r
 \r
 \r
 /*\r
@@ -117,7 +118,7 @@ void DsdDslDataIndication(const PduInfoType *pduRxData, const Dcm_DsdServiceTabl
 void DslInit(void);\r
 void DslMain(void);\r
 void DslHandleResponseTransmission(void);\r
-void DslDsdProcessingDone(PduIdType txPduId, DsdProcessingDoneResultType result);\r
+void DslDsdProcessingDone(PduIdType rxPduIdRef, DsdProcessingDoneResultType responseResult);\r
 void DslGetCurrentServiceTable(const Dcm_DsdServiceTableType **currentServiceTable);\r
 \r
 BufReq_ReturnType DslProvideRxBufferToPdur(PduIdType dcmRxPduId, PduLengthType tpSduLength, const PduInfoType **pduInfoPtr);\r
@@ -125,7 +126,7 @@ void DslRxIndicationFromPduR(PduIdType dcmRxPduId, NotifResultType result);
 Std_ReturnType DslGetActiveProtocol(Dcm_ProtocolType *protocolId);\r
 void DslSetSecurityLevel(Dcm_SecLevelType secLevel);\r
 Std_ReturnType DslGetSecurityLevel(Dcm_SecLevelType *secLevel);\r
-void DslSetSesCtrlType(Dcm_SesCtrlType sesCtrlType);\r
+void DslSetSesCtrlType(Dcm_SesCtrlType sesCtrl);\r
 Std_ReturnType DslGetSesCtrlType(Dcm_SesCtrlType *sesCtrlType);\r
 BufReq_ReturnType DslProvideTxBuffer(PduIdType dcmTxPduId, const PduInfoType **pduInfoPtr, PduLengthType length);\r
 void DslTxConfirmation(PduIdType dcmTxPduId, NotifResultType result);\r
index 083c995e67929abdbddd1861a282e93e0079e1d0..764fee4f75786d38bff7ba301c95cb9d36227487 100644 (file)
@@ -52,7 +52,7 @@ typedef Std_ReturnType (*Dcm_CallbackGetPIDValueFncType)(uint8 *dataValueBuffer)
 \r
 // DidServices_<DID>\r
 typedef Std_ReturnType (*Dcm_CallbackReadDataFncType)(uint8 *data);\r
-typedef Std_ReturnType (*Dcm_CallbackWriteDataFncType)(uint8 *data, uint8 dataLength, Dcm_NegativeResponseCodeType *errorCode);\r
+typedef Std_ReturnType (*Dcm_CallbackWriteDataFncType)(uint8 *data, uint16 dataLength, Dcm_NegativeResponseCodeType *errorCode);\r
 typedef Std_ReturnType (*Dcm_CallbackReadDataLengthFncType)(uint16 *didLength);\r
 typedef Std_ReturnType (*Dcm_CallbackConditionCheckReadFncType)(Dcm_NegativeResponseCodeType *errorCode);\r
 typedef Std_ReturnType (*Dcm_CallbackConditionCheckWriteFncType)(Dcm_NegativeResponseCodeType *errorCode);\r
@@ -69,9 +69,9 @@ typedef Std_ReturnType (*Dcm_CallbackGetInfoTypeValueFncType)(uint8 *dataValueBu
 typedef Std_ReturnType (*Dcm_CallbackGgetDTRValueFncType)(uint16 *testval, uint16 *minlimit, uint16 *maxlimit, uint8 *status);\r
 \r
 // RoutineServices_<ROUTINENAME>\r
-typedef Std_ReturnType (*Dcm_CallbackStartFncType)(uint8 *inBuffer, uint8 *outBuffer, Dcm_NegativeResponseCodeType *errorCode);\r
-typedef Std_ReturnType (*Dcm_CallbackStopFncType)(uint8 *inBuffer, uint8 *outBuffer, Dcm_NegativeResponseCodeType *errorCode);\r
-typedef Std_ReturnType (*Dcm_CallbackRequestResultFncType)(uint8 *outBuffer, Dcm_NegativeResponseCodeType *errorCode);\r
+typedef Std_ReturnType (*Dcm_CallbackStartRoutineFncType)(uint8 *inBuffer, uint8 *outBuffer, Dcm_NegativeResponseCodeType *errorCode);\r
+typedef Std_ReturnType (*Dcm_CallbackStopRoutineFncType)(uint8 *inBuffer, uint8 *outBuffer, Dcm_NegativeResponseCodeType *errorCode);\r
+typedef Std_ReturnType (*Dcm_CallbackRequestResultRoutineFncType)(uint8 *outBuffer, Dcm_NegativeResponseCodeType *errorCode);\r
 \r
 // RequestControlServices_<TID>\r
 typedef Std_ReturnType (*Dcm_CallbackRequestControlType)(uint8 *outBuffer, uint8 *inBuffer);\r
@@ -165,11 +165,11 @@ typedef struct {
 } Dcm_DspDidInfoType; /** @req DCM607 */\r
 \r
 // 10.2.22\r
-typedef struct _Dcm_DspDidType {\r
+typedef struct Dcm_DspDidType {\r
        boolean                                                                         DspDidUsePort;                                  // (1)\r
        uint16                                                                          DspDidIdentifier;                               // (1)          /** @req DCM602 */\r
        const Dcm_DspDidInfoType                                        *DspDidInfoRef;                                 // (1)          /** @req DCM604 */\r
-       const struct _Dcm_DspDidType                            **DspDidRef;                                    // (0..*)       /** @req DCM606 */\r
+       const struct Dcm_DspDidType                                     **DspDidRef;                                    // (0..*)       /** @req DCM606 */\r
        uint16                                                                          DspDidSize;                                             // (1)          /** @req DCM605 */\r
        Dcm_CallbackReadDataLengthFncType                       DspDidReadDataLengthFnc;                // (0..1)       /** @req DCM671 */\r
        Dcm_CallbackConditionCheckReadFncType           DspDidConditionCheckReadFnc;    // (0..1)       /** @req DCM677 */\r
@@ -222,8 +222,8 @@ typedef struct {
 \r
 // 10.2.37\r
 typedef struct {\r
-       const Dcm_DspSessionRowType             *DspRoutineSessionRef;                  // (1..*)       /** @req DCM649 */\r
-       const Dcm_DspSecurityRowType    *DspRoutineSecurityLevelRef;    // (1..*)       /** @req DCM648 */\r
+       const Dcm_DspSessionRowType             **DspRoutineSessionRef;                 // (1..*)       /** @req DCM649 */\r
+       const Dcm_DspSecurityRowType    **DspRoutineSecurityLevelRef;   // (1..*)       /** @req DCM648 */\r
 } Dcm_DspRoutineAuthorizationType; /** @req DCM644 */\r
 \r
 // 10.2.38\r
@@ -246,20 +246,21 @@ typedef struct {
 // 10.2.36\r
 typedef struct {\r
        // Containers\r
-       const Dcm_DspRoutineAuthorizationType   *DspRoutineAuthorization;       // (1)\r
-       const Dcm_DspRoutineRequestResType              *DspRoutineRequestRes;          // (0..1)\r
-       const Dcm_DspRoutineStopType                    *DspRoutineStop;                        // (0..1)\r
+       const Dcm_DspRoutineAuthorizationType   DspRoutineAuthorization;        // (1)\r
        const Dcm_DspStartRoutineType                   *DspStartRoutine;                       // (1)\r
+       const Dcm_DspRoutineStopType                    *DspRoutineStop;                        // (0..1)\r
+       const Dcm_DspRoutineRequestResType              *DspRoutineRequestRes;          // (0..1)\r
 } Dcm_DspRoutineInfoType; /** @req DCM643 */\r
 \r
 // 10.2.35\r
 typedef struct {\r
-       boolean                                                         DspRoutineUsePort;                      // (1)\r
-       uint16                                                          DspRoutineIdentifier;           // (1)          /** @req DCM641 */\r
-       const Dcm_DspRoutineInfoType            *DspRoutineInfoRef;                     // (1)          /** @req DCM642 */\r
-       Dcm_CallbackStartFncType                        DspStartRoutineFnc;                     // (0..1)       /** @req DCM664 */\r
-       Dcm_CallbackStopFncType                         DspStopRoutineFnc;                      // (0..1)       /** @req DCM665 */\r
-       Dcm_CallbackRequestResultFncType        DspRequestResultRoutineFnc;     // (0..1)       /** @req DCM665 */\r
+       boolean                                                                 DspRoutineUsePort;                      // (1)\r
+       uint16                                                                  DspRoutineIdentifier;           // (1)          /** @req DCM641 */\r
+       const Dcm_DspRoutineInfoType                    *DspRoutineInfoRef;                     // (1)          /** @req DCM642 */\r
+       Dcm_CallbackStartRoutineFncType                 DspStartRoutineFnc;                     // (0..1)       /** @req DCM664 */\r
+       Dcm_CallbackStopRoutineFncType                  DspStopRoutineFnc;                      // (0..1)       /** @req DCM665 */\r
+       Dcm_CallbackRequestResultRoutineFncType DspRequestResultRoutineFnc;     // (0..1)       /** @req DCM665 */\r
+       boolean                                                                 Arc_EOL;\r
 } Dcm_DspRoutineType; /** @req DCM640 */\r
 \r
 // 10.2.41\r
@@ -353,7 +354,7 @@ typedef struct {
 typedef enum\r
 {\r
        BUFFER_AVAILABLE,\r
-       BUFFER_BUSY,\r
+       BUFFER_BUSY\r
 }Dcm_DslBufferStatusType;\r
 \r
 \r
@@ -426,7 +427,7 @@ typedef struct Dcm_DslProtocolRxType_t Dcm_DslProtocolRxType;
 struct Dcm_DslProtocolRxType_t {\r
        const Dcm_DslMainConnectionType *DslMainConnectionParent;                               // (1) /* Cross reference. */\r
        const Dcm_ProtocolAddrTypeType  DslProtocolAddrType;                                    // (1)\r
-       const uint32                                    DcmDslProtocolRxPduId;                                  // (1)\r
+       const PduIdType                                 DcmDslProtocolRxPduId;                                  // (1)\r
        const uint32                                    DcmDslProtocolRxTesterSourceAddr_v4;    // (1)\r
        const uint8                                             DcmDslProtocolRxChannelId_v4;                   // (1)\r
        const boolean                                   Arc_EOL;\r
@@ -439,7 +440,7 @@ typedef struct Dcm_DslProtocolTxType_t Dcm_DslProtocolTxType;
 // 10.2.14\r
 struct Dcm_DslProtocolTxType_t {\r
        const Dcm_DslMainConnectionType *DslMainConnectionParent;       // (1) /* Cross reference. */\r
-       const uint32                                    DcmDslProtocolTxPduId;          // (1) /* Will be removed (polite), kept for reference. */\r
+       const PduIdType                                 DcmDslProtocolTxPduId;          // (1) /* Will be removed (polite), kept for reference. */\r
        const boolean                                   Arc_EOL;\r
 };\r
 \r
index 32cd6c124ee0061a8a355481e8d491612703e3c1..38c1498d55245ec337f3aecaa1996b47d25610ad 100644 (file)
  * for more details.\r
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
-\r
-\r
+// 904 PC-Lint MISRA 14.7: OK. Allow VALIDATE, VALIDATE_RV and VALIDATE_NO_RV to return value.\r
+//lint -emacro(904,VALIDATE_RV,VALIDATE_NO_RV,VALIDATE)\r
+// 522 PC-Lint exception for empty functions\r
+//lint -esym(522,storeFreezeFrameDataEvtMem)\r
+//lint -esym(522,deleteFreezeFrameDataPriMem)\r
+//lint -esym(522,storeFreezeFrameDataPreInit)\r
+//lint -esym(522,storeFreezeFrameDataPriMem)\r
+//lint -esym(522,updateFreezeFrameOccurrencePreInit)\r
 \r
 \r
 /*\r
 #if  ( DEM_DEV_ERROR_DETECT == STD_ON )\r
 #include "Det.h"\r
 /** @req DEM117 */\r
-#define VALIDATE(_exp,_api,_err ) \\r
-        if( !(_exp) ) { \\r
-          Det_ReportError(MODULE_ID_DEM, 0, _api, _err); \\r
-          return E_NOT_OK; \\r
-        }\r
-\r
 #define VALIDATE_RV(_exp,_api,_err,_rv ) \\r
         if( !(_exp) ) { \\r
           Det_ReportError(MODULE_ID_DEM, 0, _api, _err); \\r
 #define DET_REPORTERROR(_x,_y,_z,_q) Det_ReportError(_x, _y, _z, _q)\r
 \r
 #else\r
-#define VALIDATE(_exp,_api,_err )\r
 #define VALIDATE_RV(_exp,_api,_err,_rv )\r
 #define VALIDATE_NO_RV(_exp,_api,_err )\r
 #define DET_REPORTERROR(_x,_y,_z,_q)\r
 #endif\r
 \r
+#if (DEM_OBD_SUPPORT == STD_ON)\r
+#error "DEM_OBD_SUPPORT is set to STD_ON, this is not supported by the code."\r
+#endif\r
+\r
+#if (DEM_PTO_SUPPORT == STD_ON)\r
+#error "DEM_PTO_SUPPORT is set to STD_ON, this is not supported by the code."\r
+#endif\r
+\r
+#if (DEM_TYPE_OF_DTC_SUPPORTED != 0x01)\r
+#error "DEM_TYPE_OF_DTC_SUPPORTED is not set to 1 (ISO14229-1), only ISO14229-1 is currently supported by the code."\r
+#endif\r
+\r
 \r
 /*\r
  * Local types\r
@@ -192,6 +203,7 @@ static ExtDataRecType               priMemExtDataBuffer[DEM_MAX_NUMBER_EXT_DATA_PRI_MEM] __at
  * Procedure:  zeroPriMemBuffers\r
  * Description:        Fill the primary buffers with zeroes\r
  */\r
+//lint -e957   PC-Lint exception - Used only by DemTest\r
 void demZeroPriMemBuffers(void)\r
 {\r
        memset(priMemEventBuffer, 0, sizeof(priMemEventBuffer));\r
@@ -207,12 +219,13 @@ void demZeroPriMemBuffers(void)
 static ChecksumType calcChecksum(void *data, uint16 nrOfBytes)\r
 {\r
        uint16 i;\r
-       uint8 *ptr = (uint8*)data;\r
+       uint8 *byte = (uint8*)data;\r
        ChecksumType sum = 0;\r
 \r
-       for (i = 0; i < nrOfBytes; i++)\r
-               sum += *ptr++;\r
-       sum ^= 0xaaaa;\r
+       for (i = 0; i < nrOfBytes; i++) {\r
+               sum += byte[i];\r
+       }\r
+       sum ^= 0xaaaau;\r
        return sum;\r
 }\r
 \r
@@ -270,22 +283,26 @@ static boolean checkDtcGroup(uint32 dtc, const Dem_EventParameterType *eventPara
 static boolean checkDtcOrigin(Dem_DTCOriginType dtcOrigin, const Dem_EventParameterType *eventParam)\r
 {\r
        boolean result = FALSE;\r
+       boolean dtcOriginFound = FALSE;\r
        uint16 i;\r
 \r
-       for (i = 0; (eventParam->EventClass->EventDestination[i] != dtcOrigin) && (i < DEM_MAX_NR_OF_EVENT_DESTINATION); i++);\r
+       for (i = 0;(i < DEM_MAX_NR_OF_EVENT_DESTINATION) && (!dtcOriginFound); i++){\r
+               dtcOriginFound = (eventParam->EventClass->EventDestination[i] == dtcOrigin);\r
+       }\r
 \r
-       if (i < DEM_MAX_NR_OF_EVENT_DESTINATION) {\r
+       if (dtcOriginFound) {\r
                result = TRUE;\r
        }\r
 \r
        return result;\r
 }\r
 \r
-\r
 /*\r
  * Procedure:  checkDtcSeverityMask\r
  * Description:        Return TRUE if "dtcSeverityMask" match any of the events DTC severity otherwise FALSE.\r
  */\r
+// PC-Lint (715 etc): Remove errors until function is filled.\r
+//lint -e{715}         Symbol not referenced\r
 static boolean checkDtcSeverityMask(Dem_DTCSeverityType dtcSeverityMask, const Dem_EventParameterType *eventParam)\r
 {\r
        boolean result = TRUE;\r
@@ -300,6 +317,8 @@ static boolean checkDtcSeverityMask(Dem_DTCSeverityType dtcSeverityMask, const D
  * Procedure:  checkDtcFaultDetectionCounterMask\r
  * Description:        TBD.\r
  */\r
+// PC-Lint (715 etc): Remove errors until function is filled.\r
+//lint -e{715}         Symbol not referenced\r
 static boolean checkDtcFaultDetectionCounter(const Dem_EventParameterType *eventParam)\r
 {\r
        boolean result = TRUE;\r
@@ -317,14 +336,15 @@ static boolean checkDtcFaultDetectionCounter(const Dem_EventParameterType *event
  */\r
 static void lookupEventStatusRec(Dem_EventIdType eventId, EventStatusRecType **const eventStatusRec)\r
 {\r
-       EventStatusRecType *eventStatusRecPtr = eventStatusBuffer;\r
+       uint8 i;\r
+       boolean eventIdFound = FALSE;\r
 \r
-       while ((eventStatusRecPtr->eventId != eventId) && (eventStatusRecPtr < &eventStatusBuffer[DEM_MAX_NUMBER_EVENT])) {\r
-               eventStatusRecPtr++;\r
+       for (i = 0; (i < DEM_MAX_NUMBER_EVENT) && (!eventIdFound); i++) {\r
+               eventIdFound = (eventStatusBuffer[i].eventId == eventId);\r
        }\r
 \r
-       if (eventStatusRecPtr < &eventStatusBuffer[DEM_MAX_NUMBER_EVENT]) {\r
-               *eventStatusRec = eventStatusRecPtr;\r
+       if (eventIdFound) {\r
+               *eventStatusRec = &eventStatusBuffer[i-1];\r
        } else {\r
                *eventStatusRec = NULL;\r
        }\r
@@ -338,15 +358,16 @@ static void lookupEventStatusRec(Dem_EventIdType eventId, EventStatusRecType **c
  */\r
 static void lookupEventIdParameter(Dem_EventIdType eventId, const Dem_EventParameterType **const eventIdParam)\r
 {\r
-       const Dem_EventParameterType *EventIdParamPtr = configSet->EventParameter;\r
+       const Dem_EventParameterType *EventIdParamList = configSet->EventParameter;\r
 \r
        // Lookup the correct event id parameters\r
-       while ((EventIdParamPtr->EventID != eventId) && !EventIdParamPtr->Arc_EOL) {\r
-               EventIdParamPtr++;\r
+       uint16 i=0;\r
+       while ((EventIdParamList[i].EventID != eventId) && (!EventIdParamList[i].Arc_EOL)) {\r
+               i++;\r
        }\r
 \r
-       if (!EventIdParamPtr->Arc_EOL) {\r
-               *eventIdParam = EventIdParamPtr;\r
+       if (!EventIdParamList[i].Arc_EOL) {\r
+               *eventIdParam = &EventIdParamList[i];\r
        } else {\r
                *eventIdParam = NULL;\r
        }\r
@@ -357,8 +378,9 @@ static void lookupEventIdParameter(Dem_EventIdType eventId, const Dem_EventParam
  * Procedure:  preDebounceNone\r
  * Description:        Returns the result of the debouncing.\r
  */\r
-static Dem_EventStatusType preDebounceNone(Dem_EventStatusType reportedStatus, EventStatusRecType* statusRecord) {\r
+static Dem_EventStatusType preDebounceNone(const Dem_EventStatusType reportedStatus, const EventStatusRecType* statusRecord) {\r
        Dem_EventStatusType returnCode;\r
+       (void)statusRecord;             // Just to get rid of PC-Lint warnings\r
 \r
        switch (reportedStatus) {\r
        case DEM_EVENT_STATUS_FAILED: /** @req DEM091.NoneFailed */\r
@@ -388,11 +410,11 @@ static Dem_EventStatusType preDebounceCounterBased(Dem_EventStatusType reportedS
        switch (reportedStatus) {\r
        case DEM_EVENT_STATUS_PREFAILED:\r
                if (statusRecord->faultDetectionCounter < DEBOUNCE_FDC_TEST_FAILED) {\r
-                       if (pdVars->JumpUp && (statusRecord->faultDetectionCounter < 0)) {\r
+                       if ((pdVars->JumpUp) && (statusRecord->faultDetectionCounter < 0)) {\r
                                statusRecord->faultDetectionCounter = 0;\r
                        } else {\r
-                               if (((sint16)statusRecord->faultDetectionCounter + pdVars->CountInStepSize) < DEBOUNCE_FDC_TEST_FAILED) {\r
-                                       statusRecord->faultDetectionCounter += pdVars->CountInStepSize;\r
+                               if (((sint16)statusRecord->faultDetectionCounter + (sint8)pdVars->CountInStepSize) < DEBOUNCE_FDC_TEST_FAILED) {\r
+                                       statusRecord->faultDetectionCounter += (sint8)pdVars->CountInStepSize;\r
                                } else {\r
                                        statusRecord->faultDetectionCounter = DEBOUNCE_FDC_TEST_FAILED;\r
                                }\r
@@ -402,11 +424,11 @@ static Dem_EventStatusType preDebounceCounterBased(Dem_EventStatusType reportedS
 \r
        case DEM_EVENT_STATUS_PREPASSED:\r
                if (statusRecord->faultDetectionCounter > DEBOUNCE_FDC_TEST_PASSED) {\r
-                       if (pdVars->JumpDown && (statusRecord->faultDetectionCounter > 0)) {\r
+                       if ((pdVars->JumpDown) && (statusRecord->faultDetectionCounter > 0)) {\r
                                statusRecord->faultDetectionCounter = 0;\r
                        } else {\r
-                               if (((sint16)statusRecord->faultDetectionCounter - pdVars->CountOutStepSize) > DEBOUNCE_FDC_TEST_PASSED) {\r
-                                       statusRecord->faultDetectionCounter -= pdVars->CountOutStepSize;\r
+                               if (((sint16)statusRecord->faultDetectionCounter - (sint8)pdVars->CountOutStepSize) > DEBOUNCE_FDC_TEST_PASSED) {\r
+                                       statusRecord->faultDetectionCounter -= (sint8)pdVars->CountOutStepSize;\r
                                } else {\r
                                        statusRecord->faultDetectionCounter = DEBOUNCE_FDC_TEST_PASSED;\r
                                }\r
@@ -508,7 +530,7 @@ static void updateEventStatusRec(const Dem_EventParameterType *eventParam, Dem_E
                        }\r
                        /** @req DEM036 */ /** @req DEM379.PendingSet */\r
                        eventStatusRecPtr->eventStatusExtended |= (DEM_TEST_FAILED | DEM_TEST_FAILED_THIS_OPERATION_CYCLE | DEM_TEST_FAILED_SINCE_LAST_CLEAR | DEM_PENDING_DTC);\r
-                       eventStatusRecPtr->eventStatusExtended &= ~(DEM_TEST_NOT_COMPLETED_SINCE_LAST_CLEAR | DEM_TEST_NOT_COMPLETED_THIS_OPERATION_CYCLE);\r
+                       eventStatusRecPtr->eventStatusExtended &= (Dem_EventStatusExtendedType)~(DEM_TEST_NOT_COMPLETED_SINCE_LAST_CLEAR | DEM_TEST_NOT_COMPLETED_THIS_OPERATION_CYCLE);\r
                }\r
 \r
                // Check test passed\r
@@ -517,8 +539,8 @@ static void updateEventStatusRec(const Dem_EventParameterType *eventParam, Dem_E
                                eventStatusRecPtr->errorStatusChanged = TRUE;\r
                        }\r
                        /** @req DEM036 */\r
-                       eventStatusRecPtr->eventStatusExtended &= ~DEM_TEST_FAILED;\r
-                       eventStatusRecPtr->eventStatusExtended &= ~(DEM_TEST_NOT_COMPLETED_SINCE_LAST_CLEAR | DEM_TEST_NOT_COMPLETED_THIS_OPERATION_CYCLE);\r
+                       eventStatusRecPtr->eventStatusExtended &= (Dem_EventStatusExtendedType)~DEM_TEST_FAILED;\r
+                       eventStatusRecPtr->eventStatusExtended &= (Dem_EventStatusExtendedType)~(DEM_TEST_NOT_COMPLETED_SINCE_LAST_CLEAR | DEM_TEST_NOT_COMPLETED_THIS_OPERATION_CYCLE);\r
                }\r
 \r
                // Copy the record\r
@@ -527,7 +549,7 @@ static void updateEventStatusRec(const Dem_EventParameterType *eventParam, Dem_E
        else {\r
                // Copy an empty record to return data\r
                eventStatusRec->eventId = DEM_EVENT_ID_NULL;\r
-               eventStatusRecPtr->faultDetectionCounter = 0;\r
+               eventStatusRec->faultDetectionCounter = 0;\r
                eventStatusRec->occurrence = 0;\r
                eventStatusRec->eventStatusExtended = DEM_TEST_NOT_COMPLETED_THIS_OPERATION_CYCLE | DEM_TEST_NOT_COMPLETED_SINCE_LAST_CLEAR;\r
                eventStatusRec->errorStatusChanged = FALSE;\r
@@ -541,7 +563,7 @@ static void updateEventStatusRec(const Dem_EventParameterType *eventParam, Dem_E
  * Procedure:  mergeEventStatusRec\r
  * Description:        Update the occurrence counter of status, if not exist a new record is created\r
  */\r
-static void mergeEventStatusRec(EventRecType *eventRec)\r
+static void mergeEventStatusRec(const EventRecType *eventRec)\r
 {\r
        EventStatusRecType *eventStatusRecPtr;\r
        imask_t state = McuE_EnterCriticalSection();\r
@@ -631,7 +653,7 @@ static boolean lookupDtcEvent(uint32 dtc, EventStatusRecType **eventStatusRec)
 \r
        *eventStatusRec = NULL;\r
 \r
-       for (i = 0; (i < DEM_MAX_NUMBER_EVENT) && !dtcFound; i++) {\r
+       for (i = 0; (i < DEM_MAX_NUMBER_EVENT) && (!dtcFound); i++) {\r
                if (eventStatusBuffer[i].eventId != DEM_EVENT_ID_NULL) {\r
                        if (eventStatusBuffer[i].eventParamRef->DTCClassRef != NULL) {\r
 \r
@@ -669,11 +691,11 @@ static boolean matchEventWithDtcFilter(const EventStatusRecType *eventRec)
 \r
                                        // Check severity\r
                                        if ((dtcFilter.filterWithSeverity == DEM_FILTER_WITH_SEVERITY_NO)\r
-                                               || ((dtcFilter.filterWithSeverity == DEM_FILTER_WITH_SEVERITY_YES) && checkDtcSeverityMask(dtcFilter.dtcSeverityMask, eventRec->eventParamRef))) {\r
+                                               || ((dtcFilter.filterWithSeverity == DEM_FILTER_WITH_SEVERITY_YES) && (checkDtcSeverityMask(dtcFilter.dtcSeverityMask, eventRec->eventParamRef)))) {\r
 \r
                                                // Check fault detection counter\r
                                                if ((dtcFilter.filterForFaultDetectionCounter == DEM_FILTER_FOR_FDC_NO)\r
-                                                       || ((dtcFilter.filterWithSeverity == DEM_FILTER_FOR_FDC_YES) && checkDtcFaultDetectionCounter(eventRec->eventParamRef))) {\r
+                                                       || ((dtcFilter.filterWithSeverity == DEM_FILTER_FOR_FDC_YES) && (checkDtcFaultDetectionCounter(eventRec->eventParamRef)))) {\r
                                                        dtcMatch = TRUE;\r
                                                }\r
                                        }\r
@@ -686,6 +708,8 @@ static boolean matchEventWithDtcFilter(const EventStatusRecType *eventRec)
 }\r
 \r
 \r
+// PC-Lint (715 etc): Remove errors until function is filled.\r
+//lint -e{715}         Symbol not referenced\r
 static void getFreezeFrameData(const Dem_EventParameterType *eventParam, FreezeFrameRecType *freezeFrame)\r
 {\r
        // TODO: Fill out\r
@@ -693,13 +717,17 @@ static void getFreezeFrameData(const Dem_EventParameterType *eventParam, FreezeF
 }\r
 \r
 \r
-static void storeFreezeFrameDataPreInit(const Dem_EventParameterType *eventParam, FreezeFrameRecType *freezeFrame)\r
+// PC-Lint (715 etc): Remove errors until function is filled.\r
+//lint -e{715}         Symbol not referenced\r
+static void storeFreezeFrameDataPreInit(const Dem_EventParameterType *eventParam, const FreezeFrameRecType *freezeFrame)\r
 {\r
        // TODO: Fill out\r
 }\r
 \r
 \r
-static void updateFreezeFrameOccurrencePreInit(EventRecType *EventBuffer)\r
+// PC-Lint (715 etc): Remove errors until function is filled.\r
+//lint -e{715}         Symbol not referenced\r
+static void updateFreezeFrameOccurrencePreInit(const EventRecType *EventBuffer)\r
 {\r
        // TODO: Fill out\r
 }\r
@@ -760,24 +788,32 @@ static void getExtendedData(const Dem_EventParameterType *eventParam, ExtDataRec
  * Description:        Store the extended data pointed by "extendedData" to the "preInitExtDataBuffer",\r
  *                             if non existent a new entry is created.\r
  */\r
-static void storeExtendedDataPreInit(const Dem_EventParameterType *eventParam, ExtDataRecType *extendedData)\r
+static void storeExtendedDataPreInit(const Dem_EventParameterType *eventParam, const ExtDataRecType *extendedData)\r
 {\r
+       boolean eventIdFound = FALSE;\r
+       boolean eventIdFreePositionFound=FALSE;\r
        uint16 i;\r
        imask_t state = McuE_EnterCriticalSection();\r
 \r
        // Check if already stored\r
-       for (i = 0; (preInitExtDataBuffer[i].eventId != eventParam->EventID) && (i<DEM_MAX_NUMBER_EXT_DATA_PRE_INIT); i++);\r
+       for (i = 0; (i<DEM_MAX_NUMBER_EXT_DATA_PRE_INIT) && (!eventIdFound); i++){\r
+               eventIdFound = (preInitExtDataBuffer[i].eventId == eventParam->EventID);\r
+       }\r
 \r
-       if (i < DEM_MAX_NUMBER_EXT_DATA_PRE_INIT) {\r
+       if(eventIdFound){\r
                // Yes, overwrite existing\r
-               memcpy(&preInitExtDataBuffer[i], extendedData, sizeof(ExtDataRecType));\r
+               memcpy(&preInitExtDataBuffer[i-1], extendedData, sizeof(ExtDataRecType));\r
        }\r
-       else {\r
+       else{\r
                // No, lookup first free position\r
-               for (i = 0; (preInitExtDataBuffer[i].eventId !=0) && (i<DEM_MAX_NUMBER_EXT_DATA_PRE_INIT); i++);\r
+               for (i = 0; (i<DEM_MAX_NUMBER_EXT_DATA_PRE_INIT) && (!eventIdFreePositionFound); i++){\r
+                       if(preInitExtDataBuffer[i].eventId ==0){\r
+                               eventIdFreePositionFound=TRUE;\r
+                       }\r
+               }\r
 \r
-               if (i < DEM_MAX_NUMBER_EXT_DATA_PRE_INIT) {\r
-                       memcpy(&preInitExtDataBuffer[i], extendedData, sizeof(ExtDataRecType));\r
+               if (eventIdFreePositionFound) {\r
+                       memcpy(&preInitExtDataBuffer[i-1], extendedData, sizeof(ExtDataRecType));\r
                }\r
                else {\r
                        // Error: Pre init extended data buffer full\r
@@ -788,34 +824,41 @@ static void storeExtendedDataPreInit(const Dem_EventParameterType *eventParam, E
        McuE_ExitCriticalSection(state);\r
 }\r
 \r
-\r
 /*\r
  * Procedure:  storeEventPriMem\r
  * Description:        Store the event data of "eventStatus->eventId" in "priMemEventBuffer",\r
  *                             if non existent a new entry is created.\r
  */\r
-static void storeEventPriMem(const Dem_EventParameterType *eventParam, EventStatusRecType *eventStatus)\r
+static void storeEventPriMem(const Dem_EventParameterType *eventParam, const EventStatusRecType *eventStatus)\r
 {\r
+       boolean eventIdFound = FALSE;\r
+       boolean eventIdFreePositionFound=FALSE;\r
        uint16 i;\r
        imask_t state = McuE_EnterCriticalSection();\r
 \r
+       (void)*eventParam;      // Currently not used, do this to avoid warning\r
 \r
        // Lookup event ID\r
-       for (i = 0; (priMemEventBuffer[i].eventId != eventStatus->eventId) && (i < DEM_MAX_NUMBER_EVENT_ENTRY_PRI); i++);\r
+       for (i = 0; (i < DEM_MAX_NUMBER_EVENT_ENTRY_PRI) && (!eventIdFound); i++){\r
+               eventIdFound = (priMemEventBuffer[i].eventId == eventStatus->eventId);\r
+       }\r
 \r
-       if (i < DEM_MAX_NUMBER_EVENT_ENTRY_PRI) {\r
+       if (eventIdFound) {\r
                // Update event found\r
-               priMemEventBuffer[i].occurrence = eventStatus->occurrence;\r
-               priMemEventBuffer[i].checksum = calcChecksum(&priMemEventBuffer[i], sizeof(EventRecType)-sizeof(ChecksumType));\r
+               priMemEventBuffer[i-1].occurrence = eventStatus->occurrence;\r
+               priMemEventBuffer[i-1].checksum = calcChecksum(&priMemEventBuffer[i-1], sizeof(EventRecType)-sizeof(ChecksumType));\r
        }\r
        else {\r
                // Search for free position\r
-               for (i=0; (priMemEventBuffer[i].eventId != DEM_EVENT_ID_NULL) && (i < DEM_MAX_NUMBER_EVENT_ENTRY_PRI); i++);\r
+               for (i=0; (i < DEM_MAX_NUMBER_EVENT_ENTRY_PRI) && (!eventIdFreePositionFound); i++){\r
+                       eventIdFreePositionFound = (priMemEventBuffer[i].eventId == DEM_EVENT_ID_NULL);\r
+               }\r
+\r
 \r
-               if (i < DEM_MAX_NUMBER_EVENT_ENTRY_PRI) {\r
-                       priMemEventBuffer[i].eventId = eventStatus->eventId;\r
-                       priMemEventBuffer[i].occurrence = eventStatus->occurrence;\r
-                       priMemEventBuffer[i].checksum = calcChecksum(&priMemEventBuffer[i], sizeof(EventRecType)-sizeof(ChecksumType));\r
+               if (eventIdFreePositionFound) {\r
+                       priMemEventBuffer[i-1].eventId = eventStatus->eventId;\r
+                       priMemEventBuffer[i-1].occurrence = eventStatus->occurrence;\r
+                       priMemEventBuffer[i-1].checksum = calcChecksum(&priMemEventBuffer[i-1], sizeof(EventRecType)-sizeof(ChecksumType));\r
                }\r
                else {\r
                        // Error: Pri mem event buffer full\r
@@ -826,35 +869,36 @@ static void storeEventPriMem(const Dem_EventParameterType *eventParam, EventStat
        McuE_ExitCriticalSection(state);\r
 }\r
 \r
-\r
 /*\r
  * Procedure:  deleteEventPriMem\r
  * Description:        Delete the event data of "eventParam->eventId" from "priMemEventBuffer".\r
  */\r
 static void deleteEventPriMem(const Dem_EventParameterType *eventParam)\r
 {\r
+       boolean eventIdFound = FALSE;\r
        uint16 i;\r
        imask_t state = McuE_EnterCriticalSection();\r
 \r
 \r
        // Lookup event ID\r
-       for (i = 0; (priMemEventBuffer[i].eventId != eventParam->EventID) && (i < DEM_MAX_NUMBER_EVENT_ENTRY_PRI); i++);\r
+       for (i = 0; (i < DEM_MAX_NUMBER_EVENT_ENTRY_PRI) && (!eventIdFound); i++){\r
+               eventIdFound = (priMemEventBuffer[i].eventId == eventParam->EventID);\r
+       }\r
 \r
-       if (i < DEM_MAX_NUMBER_EVENT_ENTRY_PRI) {\r
+       if (eventIdFound) {\r
                // Delete event found\r
-               memset(&priMemEventBuffer[i], 0, sizeof(EventRecType));\r
+               memset(&priMemEventBuffer[i-1], 0, sizeof(EventRecType));\r
        }\r
 \r
        McuE_ExitCriticalSection(state);\r
 }\r
 \r
-\r
 /*\r
  * Procedure:  storeEventEvtMem\r
  * Description:        Store the event data of "eventStatus->eventId" in event memory according to\r
  *                             "eventParam" destination option.\r
  */\r
-static void storeEventEvtMem(const Dem_EventParameterType *eventParam, EventStatusRecType *eventStatus)\r
+static void storeEventEvtMem(const Dem_EventParameterType *eventParam, const EventStatusRecType *eventStatus)\r
 {\r
        uint16 i;\r
 \r
@@ -884,23 +928,29 @@ static void storeEventEvtMem(const Dem_EventParameterType *eventParam, EventStat
  * Description:        Store the extended data pointed by "extendedData" to the "priMemExtDataBuffer",\r
  *                             if non existent a new entry is created.\r
  */\r
-static void storeExtendedDataPriMem(const Dem_EventParameterType *eventParam, ExtDataRecType *extendedData) /** @req DEM041 */\r
+static void storeExtendedDataPriMem(const Dem_EventParameterType *eventParam, const ExtDataRecType *extendedData) /** @req DEM041 */\r
 {\r
+       boolean eventIdFound = FALSE;\r
+       boolean eventIdFreePositionFound=FALSE;\r
        uint16 i;\r
        imask_t state = McuE_EnterCriticalSection();\r
 \r
        // Check if already stored\r
-       for (i = 0; (priMemExtDataBuffer[i].eventId != eventParam->EventID) && (i<DEM_MAX_NUMBER_EXT_DATA_PRI_MEM); i++);\r
+       for (i = 0; (i<DEM_MAX_NUMBER_EXT_DATA_PRI_MEM) && (!eventIdFound); i++){\r
+               eventIdFound = (priMemExtDataBuffer[i].eventId == eventParam->EventID);\r
+       }\r
 \r
-       if (i < DEM_MAX_NUMBER_EXT_DATA_PRI_MEM) {\r
+       if (eventIdFound) {\r
                // Yes, overwrite existing\r
-               memcpy(&priMemExtDataBuffer[i], extendedData, sizeof(ExtDataRecType));\r
+               memcpy(&priMemExtDataBuffer[i-1], extendedData, sizeof(ExtDataRecType));\r
        }\r
        else {\r
                // No, lookup first free position\r
-               for (i = 0; (priMemExtDataBuffer[i].eventId != DEM_EVENT_ID_NULL) && (i < DEM_MAX_NUMBER_EXT_DATA_PRI_MEM); i++);\r
-               if (i < DEM_MAX_NUMBER_EXT_DATA_PRI_MEM) {\r
-                       memcpy(&priMemExtDataBuffer[i], extendedData, sizeof(ExtDataRecType));\r
+               for (i = 0; (i < DEM_MAX_NUMBER_EXT_DATA_PRI_MEM) && (!eventIdFreePositionFound); i++){\r
+                       eventIdFreePositionFound =  (priMemExtDataBuffer[i].eventId == DEM_EVENT_ID_NULL);\r
+               }\r
+               if (eventIdFreePositionFound) {\r
+                       memcpy(&priMemExtDataBuffer[i-1], extendedData, sizeof(ExtDataRecType));\r
                }\r
                else {\r
                        // Error: Pri mem extended data buffer full\r
@@ -911,34 +961,35 @@ static void storeExtendedDataPriMem(const Dem_EventParameterType *eventParam, Ex
        McuE_ExitCriticalSection(state);\r
 }\r
 \r
-\r
 /*\r
  * Procedure:  deleteExtendedDataPriMem\r
  * Description:        Delete the extended data of "eventParam->eventId" from "priMemExtDataBuffer".\r
  */\r
 static void deleteExtendedDataPriMem(const Dem_EventParameterType *eventParam)\r
 {\r
+       boolean eventIdFound = FALSE;\r
        uint16 i;\r
        imask_t state = McuE_EnterCriticalSection();\r
 \r
        // Check if already stored\r
-       for (i = 0; (priMemExtDataBuffer[i].eventId != eventParam->EventID) && (i<DEM_MAX_NUMBER_EXT_DATA_PRI_MEM); i++);\r
+       for (i = 0;(i<DEM_MAX_NUMBER_EXT_DATA_PRI_MEM) && (!eventIdFound); i++){\r
+               eventIdFound = (priMemExtDataBuffer[i].eventId == eventParam->EventID);\r
+       }\r
 \r
-       if (i < DEM_MAX_NUMBER_EXT_DATA_PRI_MEM) {\r
+       if (eventIdFound) {\r
                // Yes, clear record\r
-               memset(&priMemExtDataBuffer[i], 0, sizeof(ExtDataRecType));\r
+               memset(&priMemExtDataBuffer[i-1], 0, sizeof(ExtDataRecType));\r
        }\r
 \r
        McuE_ExitCriticalSection(state);\r
 }\r
 \r
-\r
 /*\r
  * Procedure:  storeExtendedDataEvtMem\r
  * Description:        Store the extended data in event memory according to\r
  *                             "eventParam" destination option\r
  */\r
-static void storeExtendedDataEvtMem(const Dem_EventParameterType *eventParam, ExtDataRecType *extendedData)\r
+static void storeExtendedDataEvtMem(const Dem_EventParameterType *eventParam, const ExtDataRecType *extendedData)\r
 {\r
        uint16 i;\r
 \r
@@ -968,23 +1019,22 @@ static void storeExtendedDataEvtMem(const Dem_EventParameterType *eventParam, Ex
  * Description:        Returns TRUE if the requested extended data number was found among the configured records for the event.\r
  *                             "extDataRecClassPtr" returns a pointer to the record class, "posInExtData" returns the position in stored extended data.\r
  */\r
-static boolean lookupExtendedDataRecNumParam(uint8 extendedDataNumber, const Dem_EventParameterType *eventParam, Dem_ExtendedDataRecordClassType const **extDataRecClassPtr, uint8 *posInExtData)\r
+static boolean lookupExtendedDataRecNumParam(uint8 extendedDataNumber, const Dem_EventParameterType *eventParam, Dem_ExtendedDataRecordClassType const **extDataRecClassPtr, uint16 *posInExtData)\r
 {\r
        boolean recNumFound = FALSE;\r
 \r
        if (eventParam->ExtendedDataClassRef != NULL) {\r
-               Dem_ExtendedDataRecordClassType const* const* extDataRecClassRefList = eventParam->ExtendedDataClassRef->ExtendedDataRecordClassRef;\r
                uint16  byteCnt = 0;\r
                uint16 i;\r
 \r
                // Request extended data and copy it to the buffer\r
-               for (i = 0; (i < DEM_MAX_NR_OF_RECORDS_IN_EXTENDED_DATA) && (extDataRecClassRefList[i] != NULL) && !recNumFound; i++) {\r
-                       if (extDataRecClassRefList[i]->RecordNumber == extendedDataNumber) {\r
-                               *extDataRecClassPtr =  extDataRecClassRefList[i];\r
+               for (i = 0; (i < DEM_MAX_NR_OF_RECORDS_IN_EXTENDED_DATA) && (eventParam->ExtendedDataClassRef->ExtendedDataRecordClassRef[i] != NULL) && (!recNumFound); i++) {\r
+                       if (eventParam->ExtendedDataClassRef->ExtendedDataRecordClassRef[i]->RecordNumber == extendedDataNumber) {\r
+                               *extDataRecClassPtr =  eventParam->ExtendedDataClassRef->ExtendedDataRecordClassRef[i];\r
                                *posInExtData = byteCnt;\r
                                recNumFound = TRUE;\r
                        }\r
-                       byteCnt += extDataRecClassRefList[i]->DataSize;\r
+                       byteCnt += eventParam->ExtendedDataClassRef->ExtendedDataRecordClassRef[i]->DataSize;\r
                }\r
        }\r
 \r
@@ -999,27 +1049,31 @@ static boolean lookupExtendedDataRecNumParam(uint8 extendedDataNumber, const Dem
 static boolean lookupExtendedDataPriMem(Dem_EventIdType eventId, ExtDataRecType **extData)\r
 {\r
        boolean eventIdFound = FALSE;\r
-       uint16 i;\r
+       sint16 i;\r
 \r
        // Lookup corresponding extended data\r
-       for (i = 0; (priMemExtDataBuffer[i].eventId != eventId) && (i < DEM_MAX_NUMBER_EXT_DATA_PRI_MEM); i++);\r
+       for (i = 0; (i < DEM_MAX_NUMBER_EXT_DATA_PRI_MEM) && (!eventIdFound); i++) {\r
+               eventIdFound = (priMemExtDataBuffer[i].eventId == eventId);\r
+       }\r
 \r
-       if (i < DEM_MAX_NUMBER_EXT_DATA_PRI_MEM) {\r
+       if (eventIdFound) {\r
                // Yes, return pointer\r
-               *extData = &priMemExtDataBuffer[i];\r
-               eventIdFound = TRUE;\r
+               *extData = &priMemExtDataBuffer[i-1];\r
        }\r
 \r
        return eventIdFound;\r
 }\r
 \r
-\r
-static void storeFreezeFrameDataPriMem(const Dem_EventParameterType *eventParam, FreezeFrameRecType *freezeFrame)\r
+// PC-Lint (715 etc): Remove errors until function is filled.\r
+//lint -e{715}         Symbol not referenced\r
+static void storeFreezeFrameDataPriMem(const Dem_EventParameterType *eventParam, const FreezeFrameRecType *freezeFrame)\r
 {\r
        // TODO: Fill out\r
 }\r
 \r
 \r
+// PC-Lint (715 etc): Remove errors until function is filled.\r
+//lint -e{715}         Symbol not referenced\r
 static void deleteFreezeFrameDataPriMem(const Dem_EventParameterType *eventParam)\r
 {\r
        // TODO: Fill out\r
@@ -1031,7 +1085,7 @@ static void deleteFreezeFrameDataPriMem(const Dem_EventParameterType *eventParam
  * Description:        Store the freeze frame data in event memory according to\r
  *                             "eventParam" destination option\r
  */\r
-static void storeFreezeFrameDataEvtMem(const Dem_EventParameterType *eventParam, FreezeFrameRecType *freezeFrame)\r
+static void storeFreezeFrameDataEvtMem(const Dem_EventParameterType *eventParam, const FreezeFrameRecType *freezeFrame)\r
 {\r
        uint16 i;\r
 \r
@@ -1048,6 +1102,7 @@ static void storeFreezeFrameDataEvtMem(const Dem_EventParameterType *eventParam,
                        // Not yet supported\r
                        DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GLOBAL_ID, DEM_E_NOT_IMPLEMENTED_YET);\r
                        break;\r
+\r
                default:\r
                        break;\r
                }\r
@@ -1131,7 +1186,7 @@ static Std_ReturnType handleEvent(Dem_EventIdType eventId, Dem_EventStatusType e
        if (eventParam != NULL) {\r
                if (eventParam->EventClass->OperationCycleRef < DEM_OPERATION_CYCLE_ID_ENDMARK) {\r
                        if (operationCycleStateList[eventParam->EventClass->OperationCycleRef] == DEM_CYCLE_STATE_START) {\r
-                               if (!(disableDtcStorage.storageDisabled && checkDtcGroup(disableDtcStorage.dtcGroup, eventParam) && checkDtcKind(disableDtcStorage.dtcKind, eventParam)))  {\r
+                               if ((!((disableDtcStorage.storageDisabled) && (checkDtcGroup(disableDtcStorage.dtcGroup, eventParam)) && (checkDtcKind(disableDtcStorage.dtcKind, eventParam)))))  {\r
                                        updateEventStatusRec(eventParam, eventStatus, TRUE, &eventStatusLocal);\r
                                        if (eventStatusLocal.errorStatusChanged) {\r
                                                if (eventStatusLocal.eventStatusExtended & DEM_TEST_FAILED) {\r
@@ -1182,7 +1237,7 @@ static void resetEventStatus(Dem_EventIdType eventId)
 \r
        lookupEventStatusRec(eventId, &eventStatusRecPtr);\r
        if (eventStatusRecPtr != NULL) {\r
-               eventStatusRecPtr->eventStatusExtended &= ~DEM_TEST_FAILED; /** @req DEM187 */\r
+               eventStatusRecPtr->eventStatusExtended &= (Dem_EventStatusExtendedType)~DEM_TEST_FAILED; /** @req DEM187 */\r
        }\r
 \r
        McuE_ExitCriticalSection(state);\r
@@ -1332,7 +1387,7 @@ static Std_ReturnType setOperationCycleState(Dem_OperationCycleIdType operationC
                        // Lookup event ID\r
                        for (i = 0; i < DEM_MAX_NUMBER_EVENT; i++) {\r
                                if ((eventStatusBuffer[i].eventId != DEM_EVENT_ID_NULL) && (eventStatusBuffer[i].eventParamRef->EventClass->OperationCycleRef == operationCycleId)) {\r
-                                       eventStatusBuffer[i].eventStatusExtended &= ~DEM_TEST_FAILED_THIS_OPERATION_CYCLE;\r
+                                       eventStatusBuffer[i].eventStatusExtended &= (Dem_EventStatusExtendedType)~DEM_TEST_FAILED_THIS_OPERATION_CYCLE;\r
                                        eventStatusBuffer[i].eventStatusExtended |= DEM_TEST_NOT_COMPLETED_THIS_OPERATION_CYCLE;\r
                                }\r
                        }\r
@@ -1343,8 +1398,8 @@ static Std_ReturnType setOperationCycleState(Dem_OperationCycleIdType operationC
                        // Lookup event ID\r
                        for (i = 0; i < DEM_MAX_NUMBER_EVENT; i++) {\r
                                if ((eventStatusBuffer[i].eventId != DEM_EVENT_ID_NULL) && (eventStatusBuffer[i].eventParamRef->EventClass->OperationCycleRef == operationCycleId)) {\r
-                                       if (!(eventStatusBuffer[i].eventStatusExtended & DEM_TEST_FAILED_THIS_OPERATION_CYCLE) && !(eventStatusBuffer[i].eventStatusExtended & DEM_TEST_NOT_COMPLETED_THIS_OPERATION_CYCLE)) {\r
-                                               eventStatusBuffer[i].eventStatusExtended &= ~DEM_PENDING_DTC;           // Clear pendingDTC bit /** @req DEM379.PendingClear\r
+                                       if ((!(eventStatusBuffer[i].eventStatusExtended & DEM_TEST_FAILED_THIS_OPERATION_CYCLE)) && (!(eventStatusBuffer[i].eventStatusExtended & DEM_TEST_NOT_COMPLETED_THIS_OPERATION_CYCLE))) {\r
+                                               eventStatusBuffer[i].eventStatusExtended &= (Dem_EventStatusExtendedType)~DEM_PENDING_DTC;              // Clear pendingDTC bit /** @req DEM379.PendingClear\r
                                        }\r
                                }\r
                        }\r
@@ -1392,7 +1447,7 @@ static Std_ReturnType setOperationCycleState(Dem_OperationCycleIdType operationC
 void Dem_PreInit(void)\r
 {\r
        /** @req DEM180 */\r
-       int i, j;\r
+       uint16 i, j;\r
 \r
        VALIDATE_NO_RV(DEM_Config.ConfigSet != NULL, DEM_PREINIT_ID, DEM_E_CONFIG_PTR_INVALID);\r
 \r
@@ -1419,21 +1474,23 @@ void Dem_PreInit(void)
                preInitFreezeFrameBuffer[i].eventId = DEM_EVENT_ID_NULL;\r
                preInitFreezeFrameBuffer[i].occurrence = 0;\r
                preInitFreezeFrameBuffer[i].dataSize = 0;\r
-               for (j = 0; j < DEM_MAX_SIZE_FF_DATA;j++)\r
+               for (j = 0; j < DEM_MAX_SIZE_FF_DATA;j++){\r
                        preInitFreezeFrameBuffer[i].data[j] = 0;\r
+               }\r
        }\r
 \r
        for (i = 0; i < DEM_MAX_NUMBER_EXT_DATA_PRE_INIT; i++) {\r
                preInitExtDataBuffer[i].checksum = 0;\r
                preInitExtDataBuffer[i].eventId = DEM_EVENT_ID_NULL;\r
                preInitExtDataBuffer[i].dataSize = 0;\r
-               for (j = 0; j < DEM_MAX_SIZE_EXT_DATA;j++)\r
+               for (j = 0; j < DEM_MAX_SIZE_EXT_DATA;j++){\r
                        preInitExtDataBuffer[i].data[j] = 0;\r
+               }\r
        }\r
 \r
        disableDtcStorage.storageDisabled = FALSE;\r
 \r
-       setOperationCycleState(DEM_ACTIVE, DEM_CYCLE_STATE_START); /** @req DEM047 */\r
+       (void)setOperationCycleState(DEM_ACTIVE, DEM_CYCLE_STATE_START); /** @req DEM047 */\r
 \r
        demState = DEM_PREINITIALIZED;\r
 }\r
@@ -1456,7 +1513,7 @@ void Dem_Init(void)
        // Validate event records stored in primary memory\r
        for (i = 0; i < DEM_MAX_NUMBER_EVENT_PRI_MEM; i++) {\r
                cSum = calcChecksum(&priMemEventBuffer[i], sizeof(EventRecType)-sizeof(ChecksumType));\r
-               if ((cSum != priMemEventBuffer[i].checksum) || priMemEventBuffer[i].eventId == DEM_EVENT_ID_NULL) {\r
+               if ((cSum != priMemEventBuffer[i].checksum) || (priMemEventBuffer[i].eventId == DEM_EVENT_ID_NULL)) {\r
                        // Unlegal record, clear the record\r
                        memset(&priMemEventBuffer[i], 0, sizeof(EventRecType));\r
                }\r
@@ -1472,7 +1529,7 @@ void Dem_Init(void)
        // Validate extended data records stored in primary memory\r
        for (i = 0; i < DEM_MAX_NUMBER_EXT_DATA_PRI_MEM; i++) {\r
                cSum = calcChecksum(&priMemExtDataBuffer[i], sizeof(ExtDataRecType)-sizeof(ChecksumType));\r
-               if ((cSum != priMemExtDataBuffer[i].checksum) || priMemExtDataBuffer[i].eventId == DEM_EVENT_ID_NULL) {\r
+               if ((cSum != priMemExtDataBuffer[i].checksum) || (priMemExtDataBuffer[i].eventId == DEM_EVENT_ID_NULL)) {\r
                        // Unlegal record, clear the record\r
                        memset(&priMemExtDataBuffer[i], 0, sizeof(ExtDataRecType));\r
                }\r
@@ -1538,7 +1595,7 @@ void Dem_Init(void)
  */\r
 void Dem_Shutdown(void)\r
 {\r
-       setOperationCycleState(DEM_ACTIVE, DEM_CYCLE_STATE_END); /** @req DEM047 */\r
+       (void)setOperationCycleState(DEM_ACTIVE, DEM_CYCLE_STATE_END); /** @req DEM047 */\r
 \r
        demState = DEM_UNINITIALIZED; /** @req DEM368 */\r
 }\r
@@ -1830,7 +1887,7 @@ Dem_ReturnSetDTCFilterType Dem_SetDTCFilter(uint8 dtcStatusMask,
                // Check filterWithSeverity and dtcSeverityMask parameter\r
                VALIDATE_RV(((filterWithSeverity == DEM_FILTER_WITH_SEVERITY_NO)\r
                                        || ((filterWithSeverity == DEM_FILTER_WITH_SEVERITY_YES)\r
-                                               && !(dtcSeverityMask & ~(DEM_SEVERITY_MAINTENANCE_ONLY | DEM_SEVERITY_CHECK_AT_NEXT_FALT | DEM_SEVERITY_CHECK_IMMEDIATELY)))), DEM_SETDTCFILTER_ID, DEM_E_PARAM_DATA, DEM_WRONG_FILTER);\r
+                                               && (!(dtcSeverityMask & (Dem_DTCSeverityType)~(DEM_SEVERITY_MAINTENANCE_ONLY | DEM_SEVERITY_CHECK_AT_NEXT_FALT | DEM_SEVERITY_CHECK_IMMEDIATELY))))), DEM_SETDTCFILTER_ID, DEM_E_PARAM_DATA, DEM_WRONG_FILTER);\r
 \r
                // Check filterForFaultDetectionCounter parameter\r
                VALIDATE_RV((filterForFaultDetectionCounter == DEM_FILTER_FOR_FDC_YES) || (filterForFaultDetectionCounter ==  DEM_FILTER_FOR_FDC_NO), DEM_SETDTCFILTER_ID, DEM_E_PARAM_DATA, DEM_WRONG_FILTER);\r
@@ -1932,7 +1989,7 @@ Dem_ReturnGetNextFilteredDTCType Dem_GetNextFilteredDTC(uint32 *dtc, Dem_EventSt
 \r
        if (demState == DEM_INITIALIZED) {\r
                // TODO: This job should be done in an more advanced way according to Dem217\r
-               while (!dtcFound && (dtcFilter.faultIndex != 0)) {\r
+               while ((!dtcFound) && (dtcFilter.faultIndex != 0)) {\r
                        dtcFilter.faultIndex--;\r
                        if (eventStatusBuffer[dtcFilter.faultIndex].eventId != DEM_EVENT_ID_NULL) {\r
                                if (matchEventWithDtcFilter(&eventStatusBuffer[dtcFilter.faultIndex])) {\r
@@ -1986,11 +2043,17 @@ Dem_ReturnClearDTCType Dem_ClearDTC(uint32 dtc, Dem_DTCKindType dtcKind, Dem_DTC
                        if (eventId != DEM_EVENT_ID_NULL) {\r
                                eventParam = eventStatusBuffer[i].eventParamRef;\r
                                if (eventParam != NULL) {\r
-                                       if (DEM_CLEAR_ALL_EVENTS | (eventParam->DTCClassRef != NULL)) {\r
+                                       //lint --e(506) PC-Lint exception Misra 13.7, 14.1 Allow configuration variables in boolean expression\r
+                                       //lint --e(774) PC-Lint exception       Related to MISRA 13.7\r
+                                       if ((DEM_CLEAR_ALL_EVENTS == STD_ON) || (eventParam->DTCClassRef != NULL)) {\r
                                                if (checkDtcKind(dtcKind, eventParam)) {\r
                                                        if (checkDtcGroup(dtc, eventParam)) {\r
-                                                               for (j = 0; (j < DEM_MAX_NR_OF_EVENT_DESTINATION) && (eventParam->EventClass->EventDestination[j] != dtcOrigin); j++);\r
-                                                               if (j < DEM_MAX_NR_OF_EVENT_DESTINATION) {\r
+                                                               boolean dtcOriginFound = FALSE;\r
+                                                               for (j = 0; (j < DEM_MAX_NR_OF_EVENT_DESTINATION) && (!dtcOriginFound) ; j++){\r
+                                                                       dtcOriginFound =(eventParam->EventClass->EventDestination[j] == dtcOrigin);\r
+                                                               }\r
+                                                               //if (j-1 < DEM_MAX_NR_OF_EVENT_DESTINATION) {\r
+                                                               if (dtcOriginFound) {\r
                                                                        // Yes! All conditions met.\r
                                                                        switch (dtcOrigin)\r
                                                                        {\r
@@ -2075,6 +2138,7 @@ Dem_ReturnControlDTCStorageType Dem_EnableDTCStorage(Dem_DTCGroupType dtcGroup,
 \r
        if (demState == DEM_INITIALIZED) {\r
                // TODO: Behavior is not defined if group or kind do not match active settings, therefore the filter is just switched off.\r
+               (void)dtcGroup; (void)dtcKind;  // Just to make get rid of PC-Lint warnings\r
                disableDtcStorage.storageDisabled = FALSE; /** @req DEM080 */\r
        } else {\r
                DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_ENABLEDTCSTORAGE_ID, DEM_E_UNINIT);\r
@@ -2088,13 +2152,13 @@ Dem_ReturnControlDTCStorageType Dem_EnableDTCStorage(Dem_DTCGroupType dtcGroup,
  * Procedure:  Dem_GetExtendedDataRecordByDTC\r
  * Reentrant:  No\r
  */\r
-Dem_ReturnGetExtendedDataRecordByDTCType Dem_GetExtendedDataRecordByDTC(uint32 dtc, Dem_DTCKindType dtcKind, Dem_DTCOriginType dtcOrigin, uint8 extendedDataNumber, uint8 *destBuffer, uint8 *bufSize)\r
+Dem_ReturnGetExtendedDataRecordByDTCType Dem_GetExtendedDataRecordByDTC(uint32 dtc, Dem_DTCKindType dtcKind, Dem_DTCOriginType dtcOrigin, uint8 extendedDataNumber, uint8 *destBuffer, uint16 *bufSize)\r
 {\r
        Dem_ReturnGetExtendedDataRecordByDTCType returnCode = DEM_RECORD_WRONG_DTC;\r
        EventStatusRecType *eventRec;\r
        Dem_ExtendedDataRecordClassType const *extendedDataRecordClass = NULL;\r
        ExtDataRecType *extData;\r
-       uint8 posInExtData = 0;\r
+       uint16 posInExtData = 0;\r
 \r
        if (demState == DEM_INITIALIZED) {\r
                if (lookupDtcEvent(dtc, &eventRec)) {\r
@@ -2164,7 +2228,7 @@ Dem_ReturnGetSizeOfExtendedDataRecordByDTCType Dem_GetSizeOfExtendedDataRecordBy
        Dem_ReturnGetExtendedDataRecordByDTCType returnCode = DEM_GET_SIZEOFEDRBYDTC_W_DTC;\r
        EventStatusRecType *eventRec;\r
        Dem_ExtendedDataRecordClassType const *extendedDataRecordClass = NULL;\r
-       uint8 posInExtData;\r
+       uint16 posInExtData;\r
 \r
        if (demState == DEM_INITIALIZED) {\r
                if (lookupDtcEvent(dtc, &eventRec)) {\r
index fe1789fba68d1c6e19b0cfbd094789d7ef6e5497..66862f605d022a766953839d00b7f2dc013fe429 100644 (file)
@@ -23,7 +23,7 @@
 #ifndef DEM_TYPES_H_\r
 #define DEM_TYPES_H_\r
 #include "Std_Types.h" /** @req DEM176.Std */\r
-\r
+#include "Rte_Dem.h"\r
 #define DEM_EVENT_DESTINATION_END_OF_LIST 0\r
 \r
 /*\r
@@ -35,122 +35,49 @@ typedef uint8 Dem_ReturnTypeOfDtcSupportedType;
 #define DEM_SAEJ1939_73                0x02\r
 #define DEM_ISO_11992_4                0x03\r
 \r
-/*\r
- * Dem_EventIdType\r
- */\r
-typedef uint16 Dem_EventIdType;\r
-\r
 /*\r
  * Dem_DTCGroupType\r
  */\r
 typedef uint32 Dem_DTCGroupType;\r
-#define        DEM_DTC_GROUP_ALL_DTCS                  0xffffff\r
+#define        DEM_DTC_GROUP_ALL_DTCS                  (Dem_DTCGroupType)0xffffff\r
 \r
 /*\r
  * Dem status type\r
  */\r
-#define DEM_DTC_STATUS_MASK_ALL                        0x00\r
+#define DEM_DTC_STATUS_MASK_ALL                        (uint8)0x00\r
 \r
 \r
-/*\r
- * DemDTCKindType\r
- */\r
-typedef uint8 Dem_DTCKindType;\r
-#define        DEM_DTC_KIND_ALL_DTCS                   0x01\r
-#define        DEM_DTC_KIND_EMISSION_REL_DTCS  0x02\r
-\r
 /*\r
  * DemDTCOriginType\r
  */\r
 typedef uint8 Dem_DTCOriginType;\r
-#define        DEM_DTC_ORIGIN_SECONDARY_MEMORY 0x01\r
-#define        DEM_DTC_ORIGIN_PRIMARY_MEMORY   0x02\r
-#define        DEM_DTC_ORIGIN_PERMANENT_MEMORY 0x03\r
-#define        DEM_DTC_ORIGIN_MIRROR_MEMORY    0x04\r
-\r
-/*\r
- * DemEventStatusExtendedType\r
- */\r
-typedef uint8 Dem_EventStatusExtendedType;\r
-#define        DEM_TEST_FAILED                                                         0x01\r
-#define        DEM_TEST_FAILED_THIS_OPERATION_CYCLE            0x02\r
-#define        DEM_PENDING_DTC                                                         0x04\r
-#define        DEM_CONFIRMED_DTC                                                       0x08\r
-#define        DEM_TEST_NOT_COMPLETED_SINCE_LAST_CLEAR         0x10\r
-#define        DEM_TEST_FAILED_SINCE_LAST_CLEAR                        0x20\r
-#define        DEM_TEST_NOT_COMPLETED_THIS_OPERATION_CYCLE 0x40\r
-#define        DEM_WARNING_INDICATOR_REQUESTED                         0x80\r
-\r
-/*\r
- * DemOperationCycleType\r
- */\r
-typedef uint8 Dem_OperationCycleIdType;        // TODO: Check type and values\r
-enum {\r
-       DEM_ACTIVE,             // Started by DEM on Dem_PreInit and stopped on Dem_Shutdown\r
-\r
-       DEM_POWER,              // Power ON/OFF Cycle\r
-       DEM_IGNITION,   // Ignition ON/OF Cycle\r
-       DEM_WARMUP,             // OBD Warm up Cycle\r
-       DEM_OBD_DCY,    // OBD Driving Cycle\r
-\r
-       DEM_OPERATION_CYCLE_ID_ENDMARK\r
-}; /** @req DEM142 */\r
-\r
-/*\r
- * Dem_OperationCycleStateType\r
- */\r
-typedef uint8 Dem_OperationCycleStateType;\r
-#define DEM_CYCLE_STATE_START          1\r
-#define DEM_CYCLE_STATE_END                    2\r
+#define        DEM_DTC_ORIGIN_SECONDARY_MEMORY (Dem_DTCOriginType)0x01\r
+#define        DEM_DTC_ORIGIN_PRIMARY_MEMORY   (Dem_DTCOriginType)0x02\r
+#define        DEM_DTC_ORIGIN_PERMANENT_MEMORY (Dem_DTCOriginType)0x03\r
+#define        DEM_DTC_ORIGIN_MIRROR_MEMORY    (Dem_DTCOriginType)0x04\r
 \r
 /*\r
  * Dem_FreezeFrameKindType\r
  */\r
 typedef uint8 Dem_FreezeFrameKindType; // TODO: Check type and values\r
-#define        DEM_FREEZE_FRAME_NON_OBD        0x01\r
-#define DEM_FREEZE_FRAME_OBD           0x02\r
+#define        DEM_FREEZE_FRAME_NON_OBD        (Dem_FreezeFrameKindType)0x01\r
+#define DEM_FREEZE_FRAME_OBD           (Dem_FreezeFrameKindType)0x02\r
 \r
 /*\r
  * Dem_EventKindType\r
  */\r
 typedef uint8 Dem_EventKindType;               // TODO: Check type and values\r
-#define DEM_EVENT_KIND_BSW             0x01\r
-#define DEM_EVENT_KIND_SWC             0x02\r
+#define DEM_EVENT_KIND_BSW             (Dem_EventKindType)0x01\r
+#define DEM_EVENT_KIND_SWC             (Dem_EventKindType)0x02\r
 \r
 /*\r
  * Dem_EventStatusType\r
  */\r
 typedef uint8 Dem_EventStatusType;\r
-#define DEM_EVENT_STATUS_PASSED                0\r
-#define DEM_EVENT_STATUS_FAILED                1\r
-#define DEM_EVENT_STATUS_PREPASSED     2\r
-#define DEM_EVENT_STATUS_PREFAILED     3\r
-\r
-/*\r
- * Dem_DTCType\r
- */\r
-typedef uint32 Dem_DTCType;\r
-\r
-/*\r
- * Dem_InitMonitorKindType\r
- */\r
-typedef uint8 Dem_InitMonitorKindType;\r
-#define DEM_INIT_MONITOR_CLEAR         1\r
-#define DEM_INIT_MONITOR_RESTART       2\r
-\r
-/*\r
- * Dem_IndicatorStatusType\r
- */\r
-typedef uint8 Dem_IndicatorStatusType;\r
-#define DEM_INDICATOR_OFF                      0\r
-#define DEM_INDICATOR_CONTINUOUS       1\r
-#define DEM_INDICATOR_BLINKING         2\r
-#define DEM_INDICATOR_BLINK_CONT       3\r
-\r
-/*\r
- * Dem_FaultDetectionCpunterType\r
- */\r
-typedef sint8 Dem_FaultDetectionCounterType;\r
+#define DEM_EVENT_STATUS_PASSED                (Dem_EventStatusType)0\r
+#define DEM_EVENT_STATUS_FAILED                (Dem_EventStatusType)1\r
+#define DEM_EVENT_STATUS_PREPASSED     (Dem_EventStatusType)2\r
+#define DEM_EVENT_STATUS_PREFAILED     (Dem_EventStatusType)3\r
 \r
 /*\r
  * Dem_PreDebounceNameType\r
@@ -167,168 +94,225 @@ enum {
  * Dem_FilterWithSeverityType\r
  */\r
 typedef uint8 Dem_FilterWithSeverityType;\r
-#define DEM_FILTER_WITH_SEVERITY_YES    0x00\r
-#define DEM_FILTER_WITH_SEVERITY_NO     0x01\r
+#define DEM_FILTER_WITH_SEVERITY_YES    (Dem_FilterWithSeverityType)0x00\r
+#define DEM_FILTER_WITH_SEVERITY_NO     (Dem_FilterWithSeverityType)0x01\r
 \r
 /*\r
  * Dem_FilterForFDCType\r
  */\r
 typedef uint8 Dem_FilterForFDCType;\r
-#define DEM_FILTER_FOR_FDC_YES          0x00\r
-#define DEM_FILTER_FOR_FDC_NO           0x01\r
+#define DEM_FILTER_FOR_FDC_YES          (Dem_FilterForFDCType)0x00\r
+#define DEM_FILTER_FOR_FDC_NO           (Dem_FilterForFDCType)0x01\r
 \r
 /*\r
  * Dem_DTCSeverityType\r
  */\r
 typedef uint8 Dem_DTCSeverityType;\r
-#define DEM_SEVERITY_NO_SEVERITY        0x00 // No severity information available\r
-#define DEM_SEVERITY_MAINTENANCE_ONLY   0x20\r
-#define DEM_SEVERITY_CHECK_AT_NEXT_FALT 0x40\r
-#define DEM_SEVERITY_CHECK_IMMEDIATELY  0x80\r
+#define DEM_SEVERITY_NO_SEVERITY        (Dem_DTCSeverityType)0x00 // No severity information available\r
+#define DEM_SEVERITY_MAINTENANCE_ONLY   (Dem_DTCSeverityType)0x20\r
+#define DEM_SEVERITY_CHECK_AT_NEXT_FALT (Dem_DTCSeverityType)0x40\r
+#define DEM_SEVERITY_CHECK_IMMEDIATELY  (Dem_DTCSeverityType)0x80\r
 \r
 /*\r
  * Dem_ReturnSetDTCFilterType\r
  */\r
 typedef uint8 Dem_ReturnSetDTCFilterType;\r
-#define DEM_FILTER_ACCEPTED    0x00\r
-#define DEM_WRONG_FILTER       0x01\r
+#define DEM_FILTER_ACCEPTED    (Dem_ReturnSetDTCFilterType)0x00\r
+#define DEM_WRONG_FILTER       (Dem_ReturnSetDTCFilterType)0x01\r
 \r
 /*\r
  * Dem_ReturnGetStatusOfDTCType\r
  */\r
 typedef uint8 Dem_ReturnGetStatusOfDTCType;\r
-#define DEM_STATUS_OK                                          0x00\r
-#define DEM_STATUS_WRONG_DTC                           0x01\r
-#define DEM_STATUS_WRONG_DTCORIGIN                     0x02\r
-#define DEM_STATUS_FAILED                                      0x04\r
-#define DEM_STATUS_WRONG_DTCKIND                       0x03\r
+#define DEM_STATUS_OK                                          (Dem_ReturnGetStatusOfDTCType)0x00\r
+#define DEM_STATUS_WRONG_DTC                           (Dem_ReturnGetStatusOfDTCType)0x01\r
+#define DEM_STATUS_WRONG_DTCORIGIN                     (Dem_ReturnGetStatusOfDTCType)0x02\r
+#define DEM_STATUS_FAILED                                      (Dem_ReturnGetStatusOfDTCType)0x04\r
+#define DEM_STATUS_WRONG_DTCKIND                       (Dem_ReturnGetStatusOfDTCType)0x03\r
 \r
 /*\r
  * Dem_ReturnGetNextFilteredDTCType\r
  */\r
 typedef uint8 Dem_ReturnGetNextFilteredDTCType;\r
-#define DEM_FILTERED_OK                                                0x00\r
-#define DEM_FILTERED_NO_MATCHING_DTC           0x01\r
-#define DEM_FILTERED_WRONG_DTCKIND                     0x02\r
-#define DEM_FILTERED_PENDING                           0x03\r
+#define DEM_FILTERED_OK                                                (Dem_ReturnGetNextFilteredDTCType)0x00\r
+#define DEM_FILTERED_NO_MATCHING_DTC           (Dem_ReturnGetNextFilteredDTCType)0x01\r
+#define DEM_FILTERED_WRONG_DTCKIND                     (Dem_ReturnGetNextFilteredDTCType)0x02\r
+#define DEM_FILTERED_PENDING                           (Dem_ReturnGetNextFilteredDTCType)0x03\r
 \r
 /*\r
  * Dem_ReturnGetNumberOfFilteredDTCType\r
  */\r
 typedef uint8 Dem_ReturnGetNumberOfFilteredDTCType;\r
-#define DEM_NUMBER_OK                                          0x00\r
-#define DEM_NUMBER_FAILED                                      0x01\r
-#define DEM_NUMBER_PENDING                                     0x02\r
+#define DEM_NUMBER_OK                                          (Dem_ReturnGetNumberOfFilteredDTCType)0x00\r
+#define DEM_NUMBER_FAILED                                      (Dem_ReturnGetNumberOfFilteredDTCType)0x01\r
+#define DEM_NUMBER_PENDING                                     (Dem_ReturnGetNumberOfFilteredDTCType)0x02\r
 \r
 /*\r
  * Dem_ReturnClearDTCType\r
  */\r
 typedef uint8 Dem_ReturnClearDTCType;\r
-#define DEM_CLEAR_OK                                           0x00\r
-#define DEM_CLEAR_WRONG_DTC                                    0x01\r
-#define DEM_CLEAR_WRONG_DTCORIGIN                      0x02\r
-#define DEM_CLEAR_WRONG_DTCKIND                                0x03\r
-#define DEM_CLEAR_FAILED                                       0x04\r
-#define DEM_DTC_PENDING                                                0x05\r
+#define DEM_CLEAR_OK                                           (Dem_ReturnClearDTCType)0x00\r
+#define DEM_CLEAR_WRONG_DTC                                    (Dem_ReturnClearDTCType)0x01\r
+#define DEM_CLEAR_WRONG_DTCORIGIN                      (Dem_ReturnClearDTCType)0x02\r
+#define DEM_CLEAR_WRONG_DTCKIND                                (Dem_ReturnClearDTCType)0x03\r
+#define DEM_CLEAR_FAILED                                       (Dem_ReturnClearDTCType)0x04\r
+#define DEM_DTC_PENDING                                                (Dem_ReturnClearDTCType)0x05\r
 \r
 /*\r
  * Dem_ReturnControlDTCStorageType\r
  */\r
 typedef uint8 Dem_ReturnControlDTCStorageType;\r
-#define DEM_CONTROL_DTC_STORAGE_OK                     0x00\r
-#define DEM_CONTROL_DTC_STORAGE_N_OK           0x01\r
-#define DEM_CONTROL_DTC_WRONG_DTCGROUP         0x02\r
+#define DEM_CONTROL_DTC_STORAGE_OK                     (Dem_ReturnControlDTCStorageType)0x00\r
+#define DEM_CONTROL_DTC_STORAGE_N_OK           (Dem_ReturnControlDTCStorageType)0x01\r
+#define DEM_CONTROL_DTC_WRONG_DTCGROUP         (Dem_ReturnControlDTCStorageType)0x02\r
 \r
 /*\r
  * Dem_ReturnControlEventUpdateType\r
  */\r
 typedef uint8 Dem_ReturnControlEventUpdateType;\r
-#define DEM_CONTROL_EVENT_UPDATE_OK                    0x00\r
-#define DEM_CONTROL_EVENT_N_OK                         0x01\r
-#define DEM_CONTROL_EVENT_WRONG_DTCGROUP       0x02\r
+#define DEM_CONTROL_EVENT_UPDATE_OK                    (Dem_ReturnControlEventUpdateType)0x00\r
+#define DEM_CONTROL_EVENT_N_OK                         (Dem_ReturnControlEventUpdateType)0x01\r
+#define DEM_CONTROL_EVENT_WRONG_DTCGROUP       (Dem_ReturnControlEventUpdateType)0x02\r
 \r
 /*\r
  * Dem_ReturnGetDTCOfFreezeframeRecordType\r
  */\r
 typedef uint8 Dem_ReturnGetDTCOfFreezeframeRecordType;\r
-#define DEM_GET_DTCOFFF_OK                                     0x00\r
-#define DEM_GET_DTCOFFF_WRONG_RECORD           0x01\r
-#define DEM_GET_DTCOFFF_NO_DTC_FOR_RECORD      0x02\r
-#define DEM_GET_DTCOFFF_WRONG_DTCKIND          0x03\r
+#define DEM_GET_DTCOFFF_OK                                     (Dem_ReturnGetDTCOfFreezeframeRecordType)0x00\r
+#define DEM_GET_DTCOFFF_WRONG_RECORD           (Dem_ReturnGetDTCOfFreezeframeRecordType)0x01\r
+#define DEM_GET_DTCOFFF_NO_DTC_FOR_RECORD      (Dem_ReturnGetDTCOfFreezeframeRecordType)0x02\r
+#define DEM_GET_DTCOFFF_WRONG_DTCKIND          (Dem_ReturnGetDTCOfFreezeframeRecordType)0x03\r
 \r
 /*\r
  * Dem_GetFreezeFameDataIdentifierByDTCType\r
  */\r
 typedef uint8 Dem_GetFreezeFameDataIdentifierByDTCType;\r
-#define DEM_GET_ID_OK                                          0x00\r
-#define DEM_GET_ID_WRONG_DTC                           0x01\r
-#define DEM_GET_ID_WRONG_DTCORIGIN                     0x02\r
-#define DEM_GET_ID_WRONG_DTCKIND                       0x03\r
-#define DEM_GET_ID_WRONG_FF_TYPE                       0x04\r
+#define DEM_GET_ID_OK                                          (Dem_GetFreezeFameDataIdentifierByDTCType)0x00\r
+#define DEM_GET_ID_WRONG_DTC                           (Dem_GetFreezeFameDataIdentifierByDTCType)0x01\r
+#define DEM_GET_ID_WRONG_DTCORIGIN                     (Dem_GetFreezeFameDataIdentifierByDTCType)0x02\r
+#define DEM_GET_ID_WRONG_DTCKIND                       (Dem_GetFreezeFameDataIdentifierByDTCType)0x03\r
+#define DEM_GET_ID_WRONG_FF_TYPE                       (Dem_GetFreezeFameDataIdentifierByDTCType)0x04\r
 \r
 /*\r
  * Dem_ReturnGetExtendedDataRecordByDTCType\r
  */\r
 typedef uint8 Dem_ReturnGetExtendedDataRecordByDTCType;\r
-#define DEM_RECORD_OK                                          0x00\r
-#define DEM_RECORD_WRONG_DTC                           0x01\r
-#define DEM_RECORD_WRONG_DTCORIGIN                     0x02\r
-#define DEM_RECORD_DTCKIND                                     0x03\r
-#define DEM_RECORD_NUMBER                                      0x04\r
-#define DEM_RECORD_BUFFERSIZE                          0x05\r
-#define DEM_RECORD_PENDING                                     0x06\r
+#define DEM_RECORD_OK                                          (Dem_ReturnGetExtendedDataRecordByDTCType)0x00\r
+#define DEM_RECORD_WRONG_DTC                           (Dem_ReturnGetExtendedDataRecordByDTCType)0x01\r
+#define DEM_RECORD_WRONG_DTCORIGIN                     (Dem_ReturnGetExtendedDataRecordByDTCType)0x02\r
+#define DEM_RECORD_DTCKIND                                     (Dem_ReturnGetExtendedDataRecordByDTCType)0x03\r
+#define DEM_RECORD_NUMBER                                      (Dem_ReturnGetExtendedDataRecordByDTCType)0x04\r
+#define DEM_RECORD_BUFFERSIZE                          (Dem_ReturnGetExtendedDataRecordByDTCType)0x05\r
+#define DEM_RECORD_PENDING                                     (Dem_ReturnGetExtendedDataRecordByDTCType)0x06\r
 \r
 /*\r
  * Dem_ReturnGetDTCByOccurenceTimeType\r
  */\r
 typedef uint8 Dem_ReturnGetDTCByOccurenceTimeType;\r
-#define DEM_OCCURR_OK                                          0x00\r
-#define DEM_OCCURR_WRONG_DTCKIND                       0x01\r
-#define DEM_OCCURR_FAILED                                      0x02\r
+#define DEM_OCCURR_OK                                          (Dem_ReturnGetDTCByOccurenceTimeType)0x00\r
+#define DEM_OCCURR_WRONG_DTCKIND                       (Dem_ReturnGetDTCByOccurenceTimeType)0x01\r
+#define DEM_OCCURR_FAILED                                      (Dem_ReturnGetDTCByOccurenceTimeType)0x02\r
 \r
 /*\r
  * Dem_ReturnGetFreezeFrameDataByDTCType\r
  */\r
 typedef uint8 Dem_ReturnGetFreezeFrameDataByDTCType;\r
-#define DEM_GET_FFDATABYDTC_OK                         0x00\r
-#define DEM_GET_FFDATABYDTC_WRONG_DTC          0x01\r
-#define DEM_GET_FFDATABYDTC_WRONG_DTCORIGIN    0x02\r
-#define DEM_GET_FFDATABYDTC_WRONG_DTCKIND      0x03\r
-#define DEM_GET_FFDATABYDTC_RECORDNUMBER       0x04\r
-#define DEM_GET_FFDATABYDTC_WRONG_DATAID       0x05\r
-#define DEM_GET_FFDATABYDTC_BUFFERSIZE         0x06\r
-#define DEM_GET_ID_PENDING                                     0x07\r
+#define DEM_GET_FFDATABYDTC_OK                         (Dem_ReturnGetFreezeFrameDataByDTCType)0x00\r
+#define DEM_GET_FFDATABYDTC_WRONG_DTC          (Dem_ReturnGetFreezeFrameDataByDTCType)0x01\r
+#define DEM_GET_FFDATABYDTC_WRONG_DTCORIGIN    (Dem_ReturnGetFreezeFrameDataByDTCType)0x02\r
+#define DEM_GET_FFDATABYDTC_WRONG_DTCKIND      (Dem_ReturnGetFreezeFrameDataByDTCType)0x03\r
+#define DEM_GET_FFDATABYDTC_RECORDNUMBER       (Dem_ReturnGetFreezeFrameDataByDTCType)0x04\r
+#define DEM_GET_FFDATABYDTC_WRONG_DATAID       (Dem_ReturnGetFreezeFrameDataByDTCType)0x05\r
+#define DEM_GET_FFDATABYDTC_BUFFERSIZE         (Dem_ReturnGetFreezeFrameDataByDTCType)0x06\r
+#define DEM_GET_ID_PENDING                                     (Dem_ReturnGetFreezeFrameDataByDTCType)0x07\r
 \r
 /*\r
  * Dem_ReturnGetSizeOfExtendedDataRecordByDTCType\r
  */\r
 typedef uint8 Dem_ReturnGetSizeOfExtendedDataRecordByDTCType;\r
-#define DEM_GET_SIZEOFEDRBYDTC_OK                      0x00\r
-#define DEM_GET_SIZEOFEDRBYDTC_W_DTC           0x01\r
-#define DEM_GET_SIZEOFEDRBYDTC_W_DTCOR         0x02\r
-#define DEM_GET_SIZEOFEDRBYDTC_W_DTCKI         0x03\r
-#define DEM_GET_SIZEOFEDRBYDTC_W_RNUM          0x04\r
-#define DEM_GET_SIZEOFEDRBYDTC_PENDING         0x05\r
+#define DEM_GET_SIZEOFEDRBYDTC_OK                      (Dem_ReturnGetSizeOfExtendedDataRecordByDTCType)0x00\r
+#define DEM_GET_SIZEOFEDRBYDTC_W_DTC           (Dem_ReturnGetSizeOfExtendedDataRecordByDTCType)0x01\r
+#define DEM_GET_SIZEOFEDRBYDTC_W_DTCOR         (Dem_ReturnGetSizeOfExtendedDataRecordByDTCType)0x02\r
+#define DEM_GET_SIZEOFEDRBYDTC_W_DTCKI         (Dem_ReturnGetSizeOfExtendedDataRecordByDTCType)0x03\r
+#define DEM_GET_SIZEOFEDRBYDTC_W_RNUM          (Dem_ReturnGetSizeOfExtendedDataRecordByDTCType)0x04\r
+#define DEM_GET_SIZEOFEDRBYDTC_PENDING         (Dem_ReturnGetSizeOfExtendedDataRecordByDTCType)0x05\r
 \r
 /*\r
  * Dem_ReturnGetSizeOfFreezeFrameType\r
  */\r
 typedef uint8 Dem_ReturnGetSizeOfFreezeFrameType;\r
-#define DEM_GET_SIZEOFFF_OK                                    0x00\r
-#define DEM_GET_SIZEOFFF_WRONG_DTC                     0x01\r
-#define DEM_GET_SIZEOFFF_WRONG_DTCOR           0x02\r
-#define DEM_GET_SIZEOFFF_WRONG_DTCKIND         0x03\r
-#define DEM_GET_SIZEOFFF_WRONG_RNUM                    0x04\r
-#define DEM_GET_SIZEOFFF_PENDING                       0x05\r
+#define DEM_GET_SIZEOFFF_OK                                    (Dem_ReturnGetSizeOfFreezeFrameType)0x00\r
+#define DEM_GET_SIZEOFFF_WRONG_DTC                     (Dem_ReturnGetSizeOfFreezeFrameType)0x01\r
+#define DEM_GET_SIZEOFFF_WRONG_DTCOR           (Dem_ReturnGetSizeOfFreezeFrameType)0x02\r
+#define DEM_GET_SIZEOFFF_WRONG_DTCKIND         (Dem_ReturnGetSizeOfFreezeFrameType)0x03\r
+#define DEM_GET_SIZEOFFF_WRONG_RNUM                    (Dem_ReturnGetSizeOfFreezeFrameType)0x04\r
+#define DEM_GET_SIZEOFFF_PENDING                       (Dem_ReturnGetSizeOfFreezeFrameType)0x05\r
 \r
 /*\r
  * Dem_ReturnGetSeverityOfDTCType\r
  */\r
 typedef uint8 Dem_ReturnGetSeverityOfDTCType;\r
-#define DEM_GET_SEVERITYOFDTC_OK                       0x00\r
-#define DEM_GET_SEVERITYOFDTC_WRONG_DTC                0x01\r
-#define DEM_GET_SEVERITYOFDTC_WRONG_ORIGIN     0x02\r
-#define DEM_GET_SEVERITYOFDTC_NOSEVERITY       0x03\r
+#define DEM_GET_SEVERITYOFDTC_OK                       (Dem_ReturnGetSeverityOfDTCType)0x00\r
+#define DEM_GET_SEVERITYOFDTC_WRONG_DTC                (Dem_ReturnGetSeverityOfDTCType)0x01\r
+#define DEM_GET_SEVERITYOFDTC_WRONG_ORIGIN     (Dem_ReturnGetSeverityOfDTCType)0x02\r
+#define DEM_GET_SEVERITYOFDTC_NOSEVERITY       (Dem_ReturnGetSeverityOfDTCType)0x03\r
+\r
+\r
+/*******************************************************\r
+ * Definitions where the type is declared in Rte_Dem.h *
+ *******************************************************/\r
+/*\r
+ * DemEventStatusExtendedType definitions\r
+ */\r
+#define        DEM_TEST_FAILED                                                         (Dem_EventStatusExtendedType)0x01\r
+#define        DEM_TEST_FAILED_THIS_OPERATION_CYCLE            (Dem_EventStatusExtendedType)0x02\r
+#define        DEM_PENDING_DTC                                                         (Dem_EventStatusExtendedType)0x04\r
+#define        DEM_CONFIRMED_DTC                                                       (Dem_EventStatusExtendedType)0x08\r
+#define        DEM_TEST_NOT_COMPLETED_SINCE_LAST_CLEAR         (Dem_EventStatusExtendedType)0x10\r
+#define        DEM_TEST_FAILED_SINCE_LAST_CLEAR                        (Dem_EventStatusExtendedType)0x20\r
+#define        DEM_TEST_NOT_COMPLETED_THIS_OPERATION_CYCLE (Dem_EventStatusExtendedType)0x40\r
+#define        DEM_WARNING_INDICATOR_REQUESTED                         (Dem_EventStatusExtendedType)0x80\r
+\r
+/*\r
+ * DemDTCKindType definitions\r
+ */\r
+#define        DEM_DTC_KIND_ALL_DTCS                   (Dem_DTCKindType)0x01\r
+#define        DEM_DTC_KIND_EMISSION_REL_DTCS  (Dem_DTCKindType)0x02\r
+\r
+/*\r
+ * Dem_InitMonitorKindType definitions\r
+ */\r
+#define DEM_INIT_MONITOR_CLEAR         (Dem_InitMonitorKindType)1\r
+#define DEM_INIT_MONITOR_RESTART       (Dem_InitMonitorKindType)2\r
+\r
+\r
+/*\r
+ * Dem_IndicatorStatusType definitions\r
+ */\r
+#define DEM_INDICATOR_OFF                      (Dem_IndicatorStatusType)0\r
+#define DEM_INDICATOR_CONTINUOUS       (Dem_IndicatorStatusType)1\r
+#define DEM_INDICATOR_BLINKING         (Dem_IndicatorStatusType)2\r
+#define DEM_INDICATOR_BLINK_CONT       (Dem_IndicatorStatusType)3\r
+\r
+/*\r
+ * DemOperationCycleType definitions\r
+ */\r
+enum {\r
+       DEM_ACTIVE,             // Started by DEM on Dem_PreInit and stopped on Dem_Shutdown\r
+\r
+       DEM_POWER,              // Power ON/OFF Cycle\r
+       DEM_IGNITION,   // Ignition ON/OF Cycle\r
+       DEM_WARMUP,             // OBD Warm up Cycle\r
+       DEM_OBD_DCY,    // OBD Driving Cycle\r
+\r
+       DEM_OPERATION_CYCLE_ID_ENDMARK\r
+}; /** @req DEM142 */\r
+\r
+/*\r
+ * Dem_OperationCycleStateType definitions\r
+ */\r
+#define DEM_CYCLE_STATE_START          (Dem_OperationCycleStateType)1\r
+#define DEM_CYCLE_STATE_END                    (Dem_OperationCycleStateType)2\r
 \r
 \r
 \r
similarity index 64%
rename from arch/ppc/mpc55xx/drivers/WdgM.h
rename to diagnostic/Dem/Rte_Dem.h
index 9a0a63cfb90756c21fa3f4ee1c3024bd7cdac4eb..62966110caa8de34e9314ec7a677f77d446b6a1f 100644 (file)
  * for more details.\r
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-#include "WdgM_Cfg.h"\r
-\r
-Std_ReturnType WdgM_UpdateAliveCounter (WdgM_SupervisedEntityIdType SEid);\r
-Std_ReturnType WdgM_ActivateAliveSupervision (WdgM_SupervisedEntityIdType SEid);\r
-Std_ReturnType WdgM_DeactivateAliveSupervision (WdgM_SupervisedEntityIdType SEid);\r
-void WdgM_Init(const WdgM_ConfigType* ConfigPtr);\r
-void WdgM_MainFunction_AliveSupervision (void);\r
-void WdgM_MainFunction_Trigger (void);\r
+#ifndef RTE_DEM_H_\r
+#define RTE_DEM_H_\r
+\r
+typedef uint8 Dem_DTCKindType;\r
+typedef uint32 Dem_DTCType;\r
+typedef uint16 Dem_EventIdType;\r
+typedef uint8 Dem_EventStatusExtendedType;\r
+typedef sint8 Dem_FaultDetectionCounterType;\r
+typedef uint8 Dem_IndicatorStatusType;\r
+typedef uint8 Dem_InitMonitorKindType;\r
+typedef uint8 Dem_OperationCycleIdType;\r
+typedef uint8 Dem_OperationCycleStateType;\r
+\r
+#endif /* RTE_DEM_H_ */\r
index 4f046cd0486aa03e96ec705965595ba996eff029..6b39b3c06f0cc562bfe28e3ec5461c277a4a7610 100644 (file)
  *\r
  */\r
 \r
+/*\r
+ *  General requirements\r
+ */\r
+/** @req DET001 */\r
+/** @req DET002 */\r
+\r
+\r
 #include "Std_Types.h"\r
 #include "Det.h"\r
 #include "Cpu.h"\r
+#include "MemMap.h" /** @req DET006 */\r
 \r
 #define DEBUG_LVL 1\r
 #include "debug.h"\r
@@ -34,12 +42,14 @@ typedef enum
     DET_STARTED\r
 } Det_StateType;\r
 \r
-static Det_StateType _detState = DET_UNINITIALIZED;\r
+static Det_StateType detState = DET_UNINITIALIZED;\r
 \r
 #if ( DET_USE_RAMLOG == STD_ON )\r
+\r
 // Ram log variables in uninitialized memory\r
-uint32 Det_RamlogIndex __attribute__ ((section (".ramlog")));\r
-Det_EntryType Det_RamLog[DET_RAMLOG_SIZE] __attribute__ ((section (".ramlog")));\r
+SECTION_RAMLOG uint32 Det_RamlogIndex;\r
+/*lint -esym(552,Det_RamLog)*/ /* PC-Lint OK. supress lintwarning about Det_Ramlog not being accessed */\r
+SECTION_RAMLOG Det_EntryType Det_RamLog[DET_RAMLOG_SIZE] ;\r
 #endif\r
 \r
 #if ( DET_ENABLE_CALLBACKS == STD_ON )\r
@@ -47,36 +57,48 @@ detCbk_t detCbk_List[DET_NUMBER_OF_CALLBACKS];
 \r
 uint8 Det_AddCbk(detCbk_t detCbk)\r
 {\r
-    if (_detState != DET_UNINITIALIZED)\r
+       uint8 rv = DET_CBK_REGISTRATION_FAILED_INDEX;    // Return DET_CBK_REGISTRATION_FAILED_INDEX if the registration fails\r
+\r
+    if (detState != DET_UNINITIALIZED)\r
     {\r
-        for (uint32 i=0; i<DET_NUMBER_OF_CALLBACKS; i++)\r
+        for (uint8 i = 0; i < DET_NUMBER_OF_CALLBACKS; i++)\r
         {\r
-            if (NULL==detCbk_List[i])\r
+            if (NULL == detCbk_List[i])\r
             {\r
-                detCbk_List[i]=detCbk;\r
-                return i;\r
+                detCbk_List[i] = detCbk;\r
+                rv = i;\r
+                break;\r
             }\r
         }\r
     }\r
 \r
-    Det_ReportError(DET_MODULE_ID, 0, DET_CALLBACK_API, DET_E_CBK_REGISTRATION_FAILED);\r
-    return (0xFF); // Return 0xff to indicate that the registration failed\r
+    if (rv == DET_CBK_REGISTRATION_FAILED_INDEX)\r
+    {\r
+        Det_ReportError(DET_MODULE_ID, 0, DET_CALLBACK_API, DET_E_CBK_REGISTRATION_FAILED);\r
+    }\r
+\r
+    return rv;\r
 }\r
 \r
+\r
 void Det_RemoveCbk(uint8 detCbkIndex)\r
 {\r
     // Validate the index\r
     if (detCbkIndex >= DET_NUMBER_OF_CALLBACKS)\r
+    {\r
         Det_ReportError(DET_MODULE_ID, 0, DET_CALLBACK_API, DET_E_INDEX_OUT_OF_RANGE);\r
-\r
-    detCbk_List[detCbkIndex]=NULL;\r
+    }\r
+    else\r
+    {\r
+       detCbk_List[detCbkIndex]=NULL;\r
+    }\r
 }\r
 #endif\r
 \r
 \r
 void Det_Init(void)\r
 {\r
-    // Implements DET000\r
+\r
 #if ( DET_ENABLE_CALLBACKS == STD_ON )\r
     for (uint32 i=0; i<DET_NUMBER_OF_CALLBACKS; i++)\r
     {\r
@@ -84,7 +106,7 @@ void Det_Init(void)
     }\r
 #endif\r
 \r
-    // Implements DET000\r
+    /** @req DET000 */\r
 #if ( DET_USE_RAMLOG == STD_ON )\r
     for(uint32 i=0; i < DET_RAMLOG_SIZE; i++)\r
     {\r
@@ -96,23 +118,24 @@ void Det_Init(void)
     Det_RamlogIndex = 0;\r
 #endif\r
 \r
-    _detState = DET_INITIALIZED;\r
+    detState = DET_INITIALIZED;\r
 }\r
 \r
 #if DET_DEINIT_API == STD_ON\r
 void Det_DeInit( void )\r
 {\r
-    _detState = DET_UNINITIALIZED;\r
+    detState = DET_UNINITIALIZED;\r
 }\r
 #endif\r
 \r
 void Det_ReportError(uint16 ModuleId, uint8 InstanceId, uint8 ApiId, uint8 ErrorId)\r
 {\r
-    if (_detState == DET_STARTED) // No action is taken if the module is not started\r
+    if (detState == DET_STARTED) // No action is taken if the module is not started\r
     {\r
 #if ( DET_ENABLE_CALLBACKS == STD_ON )\r
-        long old1;\r
+        uint32 old1; // 586 PC-Lint OK: fattar inte att den används i macrot.\r
         Irq_Save(old1);\r
+\r
         for (uint32 i=0; i<DET_NUMBER_OF_CALLBACKS; i++)\r
         {\r
             if (NULL!=detCbk_List[i])\r
@@ -123,8 +146,9 @@ void Det_ReportError(uint16 ModuleId, uint8 InstanceId, uint8 ApiId, uint8 Error
         Irq_Restore(old1);\r
 #endif\r
 \r
+\r
 #if ( DET_USE_RAMLOG == STD_ON )\r
-        long old2;\r
+        uint32 old2;\r
         Irq_Save(old2);\r
         if (Det_RamlogIndex < DET_RAMLOG_SIZE)\r
         {\r
@@ -134,8 +158,9 @@ void Det_ReportError(uint16 ModuleId, uint8 InstanceId, uint8 ApiId, uint8 Error
             Det_RamLog[Det_RamlogIndex].errorId = ErrorId;\r
             Det_RamlogIndex++;\r
 #if ( DET_WRAP_RAMLOG == STD_ON )\r
-            if (Det_RamlogIndex == DET_RAMLOG_SIZE)\r
+            if (Det_RamlogIndex == DET_RAMLOG_SIZE){\r
                 Det_RamlogIndex = 0;\r
+            }\r
 #endif\r
         }\r
         Irq_Restore(old2);\r
@@ -149,5 +174,5 @@ void Det_ReportError(uint16 ModuleId, uint8 InstanceId, uint8 ApiId, uint8 Error
 \r
 void Det_Start(void)\r
 {\r
-    _detState = DET_STARTED;\r
+    detState = DET_STARTED;\r
 }\r
index 8e5ba556342ba4750ad559d6c746a9046292dc6e..59e27f48d55fceb6864e664d153e18730e47a8b5 100644 (file)
 #include "Mcu.h"\r
 #include <stdio.h>\r
 #include <assert.h>\r
-#define USE_TRACE      1\r
-#include "debug.h"\r
-\r
-\r
-#if 0\r
-#ifdef USE_STARTUPHOOK\r
-#ifdef CFG_MPC55XX\r
-#if !defined(USE_SIMULATOR)\r
-// Quick fix\r
-//#include "kernel_offset.h"\r
 \r
-extern uint8_t pcb_list[];\r
+//#define USE_LDEBUG_PRINTF // Uncomment this to turn debug statements on.\r
+#include "debug.h"\r
 \r
-#endif\r
-#endif\r
-#endif\r
-#endif\r
 \r
 \r
 \r
@@ -53,9 +40,7 @@ ProtectionReturnType ProtectionHook( StatusType FatalError ) {
 void StartupHook( void ) {\r
        LDEBUG_PRINTF("## StartupHook\n");\r
 \r
-//     uint32_t sys_freq = McuE_GetSystemClock();\r
-\r
-       LDEBUG_PRINTF("Sys clock %d Hz\n",sys_freq);\r
+       LDEBUG_PRINTF("Sys clock %u Hz\n",(unsigned)McuE_GetSystemClock());\r
 }\r
 \r
 void ShutdownHook( StatusType Error ) {\r
@@ -87,14 +72,3 @@ void PostTaskHook( void ) {
        }\r
 //     LDEBUG_PRINTF("## PostTaskHook, taskid=%d\n",task);\r
 }\r
-\r
-#if 0\r
-struct OsHooks os_conf_global_hooks = {\r
-               .StartupHook = StartupHook,\r
-               .ProtectionHook = ProtectionHook,\r
-               .ShutdownHook = ShutdownHook,\r
-               .ErrorHook = ErrorHook,\r
-               .PreTaskHook = PreTaskHook,\r
-               .PostTaskHook = PostTaskHook\r
-               };\r
-#endif\r
index 2026620797eda1ebd529fd40ca7d44989510a005..0f0dd177494b811ce80551991ba201d1535bf4d1 100644 (file)
 #define LED_CHANNEL             DIO_CHANNEL_NAME_LED_CHANNEL\r
 \r
 #elif defined(CFG_BRD_STM32_STM3210C)\r
-#define LED_CHANNEL             LED_CHANNEL1\r
+#define LED_CHANNEL             DIO_CHANNEL_NAME_LED_CHANNEL4\r
 \r
 #elif defined(CFG_BRD_STM32_MCBSTM32)\r
-#define LED_CHANNEL             LED_CHANNEL1\r
+#define LED_CHANNEL             DIO_CHANNEL_NAME_LED_CHANNEL1\r
 \r
 #else\r
 #warning "Unknown board or CFG_BRD_* undefined"\r
index 58268a11f95f8ef6d48f28d960efb16d4e3f1276..17afef63acf90ff21ae66ad67ab67bc8f6ea8a04 100644 (file)
@@ -18,6 +18,8 @@
 \r
 #include "EcuM.h"\r
 #include "blinker_main.h"\r
+\r
+//#define USE_LDEBUG_PRINTF // Uncomment this to turn debug statements on.\r
 #include "debug.h"\r
 \r
 \r
diff --git a/examples/blinker_node/blinker_node_arm_stm32_f103.arxml b/examples/blinker_node/blinker_node_arm_stm32_f103.arxml
new file mode 100644 (file)
index 0000000..d825b87
--- /dev/null
@@ -0,0 +1,794 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<AUTOSAR xmlns="http://autosar.org/3.1.4"><TOP-LEVEL-PACKAGES>\r
+    <AR-PACKAGE>\r
+      <SHORT-NAME>blinker_node_arm_stm32_f103</SHORT-NAME>\r
+      <ELEMENTS>\r
+        <ECU-CONFIGURATION UUID="69a3e35e-1874-432a-94f0-b3c74c805be3">\r
+          <SHORT-NAME>blinker_node_arm_stm32_f103</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <DOC-REVISIONS>\r
+              <DOC-REVISION/>\r
+            </DOC-REVISIONS>\r
+            <SDGS>\r
+              <SDG GID="Arccore::EcuOptions">\r
+                <SD GID="MCU">STM32_F103</SD>\r
+                <SD GID="GENDIR"></SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <ECU-SW-COMPOSITION-REF DEST="ECU-SW-COMPOSITION">/blinker_node_arm_stm32_f103/SwComposition_blinker_node_arm_stm32_f103</ECU-SW-COMPOSITION-REF>\r
+          <MODULE-REFS>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_arm_stm32_f103/Os</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_arm_stm32_f103/Mcu</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_arm_stm32_f103/Det</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_arm_stm32_f103/EcuM</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_arm_stm32_f103/Port</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_arm_stm32_f103/Dio</MODULE-REF>\r
+          </MODULE-REFS>\r
+        </ECU-CONFIGURATION>\r
+        <ECU-SW-COMPOSITION UUID="ed185637-4f36-4989-8584-9aade6ae3578">\r
+          <SHORT-NAME>SwComposition_blinker_node_arm_stm32_f103</SHORT-NAME>\r
+        </ECU-SW-COMPOSITION>\r
+        <MODULE-CONFIGURATION UUID="8f496cdc-208c-4918-a887-88c86b069602">\r
+          <SHORT-NAME>Os</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.11</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Os</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="b55a25dd-282a-4102-bbb9-eaefcd782dad">\r
+              <SHORT-NAME>OsOS</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsOS</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsStackMonitoring</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsOS/OsStatus</DEFINITION-REF>\r
+                  <VALUE>EXTENDED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseGetServiceId</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseParameterAccess</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseResScheduler</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsTickFrequency</DEFINITION-REF>\r
+                  <VALUE>1000</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsInterruptStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsIdleStackSize</DEFINITION-REF>\r
+                  <VALUE>512</VALUE>\r
+                </INTEGER-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsUseDebug</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugTask</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugAlarm</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugResource</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugScheduleTable</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugEvent</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="62701b7c-02ab-4bd2-b5df-cf959638d61b">\r
+                  <SHORT-NAME>OsHooks</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsOS/OsHooks</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsErrorHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsPostTaskHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsPreTaskHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsProtectionHook</DEFINITION-REF>\r
+                      <VALUE>false</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsShutdownHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsStartupHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="b37874ef-0d10-4fdf-beee-b9470e0e7751">\r
+              <SHORT-NAME>alarm25</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/blinker_node_arm_stm32_f103/Os/OsTick</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="7f57c907-292e-4b2b-8d2d-0eb706bea759">\r
+                  <SHORT-NAME>OsAlarmActivateTask</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask/OsAlarmActivateTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/blinker_node_arm_stm32_f103/Os/bTask25</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="e84dd780-f9e1-4915-878c-6ea573729f55">\r
+              <SHORT-NAME>alarm10</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/blinker_node_arm_stm32_f103/Os/OsTick</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="40d56a04-b12e-4f25-ab64-97f7554de5b4">\r
+                  <SHORT-NAME>OsAlarmActivateTask</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask/OsAlarmActivateTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/blinker_node_arm_stm32_f103/Os/bTask10</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="b2cb6a6b-de7c-49d1-b7e6-b7f32b0bc17d">\r
+              <SHORT-NAME>alarm100</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/blinker_node_arm_stm32_f103/Os/OsTick</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="1cf5902c-ac5d-481d-8ccd-e478b17c3600">\r
+                  <SHORT-NAME>OsAlarmActivateTask</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask/OsAlarmActivateTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/blinker_node_arm_stm32_f103/Os/bTask100</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="bc300672-c9c6-4205-9a6b-75644c209d9f">\r
+              <SHORT-NAME>bTask25</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="e3670d78-76a0-44ad-b866-5525102487b3">\r
+              <SHORT-NAME>bTask100</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="66861439-4bab-4028-84f6-6aa0e0a14801">\r
+              <SHORT-NAME>bTask10</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="b2267099-a58d-4cf4-bbd2-8cecb183ffff">\r
+              <SHORT-NAME>Startup</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>2</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="a99bc5f6-9f52-426f-9074-dac15640d987">\r
+                  <SHORT-NAME>OsTaskAutostart</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask/OsTaskAutostart</DEFINITION-REF>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="1fc9bdf6-e4e3-409c-b2ee-e752afe3ae3c">\r
+              <SHORT-NAME>OsTick</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsCounter</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMaxAllowedValue</DEFINITION-REF>\r
+                  <VALUE>65535</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMinCycle</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterTicksPerBase</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterType</DEFINITION-REF>\r
+                  <VALUE>OS_TICK</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="c2206df0-859a-40cf-961b-cbf0bcb9afc4">\r
+          <SHORT-NAME>Mcu</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.2</SD>\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Mcu</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="9bbdadc7-5326-4e47-bbfa-1f719ea7dab3">\r
+              <SHORT-NAME>McuGeneralConfiguration</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuGeneralConfiguration</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Mcu/McuGeneralConfiguration/McuDevErrorDetect</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Mcu/McuGeneralConfiguration/McuPerformResetApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Mcu/McuGeneralConfiguration/McuVersionInfoApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="7d908051-b111-4abe-b843-ad5d86729cc0">\r
+              <SHORT-NAME>McuModuleConfiguration</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSrcFailureNotification</DEFINITION-REF>\r
+                  <VALUE>DISABLED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="DERIVED-INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuNumberOfMcuModes</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="DERIVED-INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuRamSectors</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuResetSetting</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="65b01764-a1c8-46bf-b49b-6e191f048f7b">\r
+                  <SHORT-NAME>McuClockSettingConfig</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAHBClocksEnable</DEFINITION-REF>\r
+                      <VALUE>DMA1</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB1ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>TIM2</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB1ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>CAN1</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB2ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>ADC1</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB2ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>GPIOA</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB2ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>GPIOB</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB2ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>GPIOC</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB2ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>AFIO</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuDefaultClockReference</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/blinker_node_arm_stm32_f103/Mcu/McuModuleConfiguration/McuClockSettingConfig/EXT_REF_8MHZ</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                  <SUB-CONTAINERS>\r
+                    <CONTAINER UUID="592199d2-9908-4ab1-851e-adc0ac39ffff">\r
+                      <SHORT-NAME>EXT_REF_8MHZ</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <FLOAT-VALUE>\r
+                          <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointFrequency</DEFINITION-REF>\r
+                          <VALUE>8000000.0</VALUE>\r
+                        </FLOAT-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllEprediv</DEFINITION-REF>\r
+                          <VALUE>9</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllEmfd</DEFINITION-REF>\r
+                          <VALUE>0</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllErfd</DEFINITION-REF>\r
+                          <VALUE>0</VALUE>\r
+                        </INTEGER-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                  </SUB-CONTAINERS>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="be21cf3d-04ca-4ed7-b915-78c9283f76f6">\r
+                  <SHORT-NAME>McuModeSettingConf</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuModeSettingConf</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuModeSettingConf/McuMode</DEFINITION-REF>\r
+                      <VALUE>0</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="3ad3c9fc-393d-4e03-a72b-d1e495de9a03">\r
+          <SHORT-NAME>Det</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.1</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Det</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="68b36355-7a5c-46df-b90d-d90a9fa6736c">\r
+              <SHORT-NAME>DetGeneral</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Det/DetGeneral</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetEnableCallbacks</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetUseRamlog</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetWrapRamlog</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetUseStdErr</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetDeInitAPI</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Det/DetGeneral/DetNumberOfCallbacks</DEFINITION-REF>\r
+                  <VALUE>5</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Det/DetGeneral/DetRamlogSize</DEFINITION-REF>\r
+                  <VALUE>16</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="ad852475-2ec5-4387-81af-5e4359917e93">\r
+          <SHORT-NAME>EcuM</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.1</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/EcuM</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="879e39e2-1aa6-46b4-ad3f-eecb914418ff">\r
+              <SHORT-NAME>EcuMGeneral</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/EcuM/EcuMGeneral</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/EcuM/EcuMGeneral/EcuMDevErrorDetect</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/EcuM/EcuMGeneral/EcuMIncludeNvramMgr</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/EcuM/EcuMGeneral/EcuMVersionInfoApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <FLOAT-VALUE>\r
+                  <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/EcuM/EcuMGeneral/EcuMMainFunctionPeriod</DEFINITION-REF>\r
+                  <VALUE>0.2</VALUE>\r
+                </FLOAT-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="941d2f53-211b-4632-8330-ff852241d7b4">\r
+              <SHORT-NAME>EcuMConfiguration</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/EcuM/EcuMConfiguration</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <FLOAT-VALUE>\r
+                  <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/EcuM/EcuMConfiguration/EcuMNvramReadallTimeout</DEFINITION-REF>\r
+                  <VALUE>10.0</VALUE>\r
+                </FLOAT-VALUE>\r
+                <FLOAT-VALUE>\r
+                  <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/EcuM/EcuMConfiguration/EcuMRunMinimumDuration</DEFINITION-REF>\r
+                  <VALUE>10.0</VALUE>\r
+                </FLOAT-VALUE>\r
+                <FLOAT-VALUE>\r
+                  <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/EcuM/EcuMConfiguration/EcuMNvramWriteallTimeout</DEFINITION-REF>\r
+                  <VALUE>10.0</VALUE>\r
+                </FLOAT-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="844e035f-1dfa-4d9f-8c62-acc0776e6404">\r
+          <SHORT-NAME>Port</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.2</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Port</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="80ead9b7-27be-44e2-bc05-934fb847390a">\r
+              <SHORT-NAME>PortConfigSet</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet</DEFINITION-REF>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="6d709b59-04d0-44df-a3e7-65da753b1974">\r
+                  <SHORT-NAME>PortContainer_1</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer</DEFINITION-REF>\r
+                  <SUB-CONTAINERS>\r
+                    <CONTAINER UUID="1233fe37-e919-4b9a-9c10-89bdbcaeca81">\r
+                      <SHORT-NAME>B13</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinPullMode</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirection</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_10MHz_MODE</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirectionChangeable</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinHysteresisEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinOpenDrainEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcReducedDrive</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinId</DEFINITION-REF>\r
+                          <VALUE>29</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <STRING-VALUE>\r
+                          <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcPortPinName</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </STRING-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinLevelValue</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_HIGH</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinMode</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_PUSHPULL_CNF</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                    <CONTAINER UUID="5a8b80b4-e1db-4e70-8f33-50c1fffa61dd">\r
+                      <SHORT-NAME>B14</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinPullMode</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirection</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_10MHz_MODE</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirectionChangeable</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinHysteresisEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinOpenDrainEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcReducedDrive</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinId</DEFINITION-REF>\r
+                          <VALUE>30</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <STRING-VALUE>\r
+                          <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcPortPinName</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </STRING-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinLevelValue</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_HIGH</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinMode</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_PUSHPULL_CNF</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                  </SUB-CONTAINERS>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="f25b824a-e61e-4f91-ac6a-9dc8379dc97e">\r
+              <SHORT-NAME>PortGeneral</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortGeneral</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortGeneral/ArcGpioRemap</DEFINITION-REF>\r
+                  <VALUE>Remap1_CAN1</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortDevErrorDetect</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortSetPinDirectionApi</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortSetPinModeApi</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortVersionInfoApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortGeneral/ArcGpioRemap</DEFINITION-REF>\r
+                  <VALUE>PartialRemap2_TIM2</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="98039516-0a14-4137-946a-1a1797bbc961">\r
+          <SHORT-NAME>Dio</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.0</SD>\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Dio</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="42abff38-b3e4-488c-a50d-c27e7710d8e0">\r
+              <SHORT-NAME>DioGeneral</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioGeneral</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Dio/DioGeneral/DioDevErrorDetect</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Dio/DioGeneral/DioVersionInfoApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="2b6f247f-98ce-4501-b07f-f3b5374a003a">\r
+              <SHORT-NAME>LED_PORT</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioPort</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Dio/DioPort/DioPortId</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <STRING-VALUE>\r
+                  <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/Dio/DioPort/ArcCoreDioPhysicalPort</DEFINITION-REF>\r
+                  <VALUE>B</VALUE>\r
+                </STRING-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="9c7caeea-c077-409b-b7be-f18b3d949cd0">\r
+                  <SHORT-NAME>LED_CHANNEL1</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioPort/DioChannel</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Dio/DioPort/DioChannel/DioChannelId</DEFINITION-REF>\r
+                      <VALUE>29</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="469ceef0-ab55-4ec9-8884-bd9a6faf333d">\r
+                  <SHORT-NAME>LED_CHANNEL2</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioPort/DioChannel</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Dio/DioPort/DioChannel/DioChannelId</DEFINITION-REF>\r
+                      <VALUE>30</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+      </ELEMENTS>\r
+    </AR-PACKAGE>\r
+  </TOP-LEVEL-PACKAGES></AUTOSAR>\r
diff --git a/examples/blinker_node/blinker_node_arm_stm32_f107.arxml b/examples/blinker_node/blinker_node_arm_stm32_f107.arxml
new file mode 100644 (file)
index 0000000..89b391a
--- /dev/null
@@ -0,0 +1,922 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<AUTOSAR xmlns="http://autosar.org/3.1.4"><TOP-LEVEL-PACKAGES>\r
+    <AR-PACKAGE>\r
+      <SHORT-NAME>blinker_node_arm_cm3</SHORT-NAME>\r
+      <ELEMENTS>\r
+        <ECU-CONFIGURATION UUID="7cf102d9-f929-4b4a-97b6-4ef11256183a">\r
+          <SHORT-NAME>blinker_node_arm_cm3_107</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <DOC-REVISIONS>\r
+              <DOC-REVISION/>\r
+            </DOC-REVISIONS>\r
+            <SDGS>\r
+              <SDG GID="Arccore::EcuOptions">\r
+                <SD GID="MCU">STM32_F107</SD>\r
+                <SD GID="GENDIR"></SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <ECU-SW-COMPOSITION-REF DEST="ECU-SW-COMPOSITION">/blinker_node_arm_cm3/SwComposition_blinker_node_arm_cm3</ECU-SW-COMPOSITION-REF>\r
+          <MODULE-REFS>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_arm_cm3/Os</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_arm_cm3/Dio</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_arm_cm3/Port</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_arm_cm3/Det</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_arm_cm3/Mcu</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_arm_cm3/EcuM</MODULE-REF>\r
+          </MODULE-REFS>\r
+        </ECU-CONFIGURATION>\r
+        <ECU-SW-COMPOSITION UUID="bf0ee133-5ed1-418a-b260-47e171242afc">\r
+          <SHORT-NAME>SwComposition_blinker_node_arm_cm3</SHORT-NAME>\r
+        </ECU-SW-COMPOSITION>\r
+        <MODULE-CONFIGURATION UUID="4fe46a12-0672-428f-99e3-c4ca6570a776">\r
+          <SHORT-NAME>Os</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.7</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Os</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="80853be9-55dc-435f-95ed-9a1c90750299">\r
+              <SHORT-NAME>OsOS</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsOS</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsStackMonitoring</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsOS/OsStatus</DEFINITION-REF>\r
+                  <VALUE>EXTENDED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseGetServiceId</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseParameterAccess</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseResScheduler</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsTickFrequency</DEFINITION-REF>\r
+                  <VALUE>1000</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsInterruptStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsIdleStackSize</DEFINITION-REF>\r
+                  <VALUE>512</VALUE>\r
+                </INTEGER-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsUseDebug</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugTask</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugAlarm</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugResource</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugScheduleTable</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugEvent</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="7f1dfe11-aeff-4131-89a9-2fbe9a87f01f">\r
+                  <SHORT-NAME>OsHooks</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsOS/OsHooks</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsErrorHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsPostTaskHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsPreTaskHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsProtectionHook</DEFINITION-REF>\r
+                      <VALUE>false</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsShutdownHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsStartupHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="77224460-9071-4c32-9ba5-5ee19d0a5be2">\r
+              <SHORT-NAME>alarm25</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/blinker_node_arm_cm3/Os/OsTick</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="28398b0a-02ef-4aa0-9f06-90c0683ad934">\r
+                  <SHORT-NAME>OsAlarmActivateTask</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask/OsAlarmActivateTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/blinker_node_arm_cm3/Os/bTask25</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="b4e4c707-af7c-4d9f-a156-1507283b4ebe">\r
+              <SHORT-NAME>OsTick</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsCounter</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMaxAllowedValue</DEFINITION-REF>\r
+                  <VALUE>65535</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMinCycle</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterTicksPerBase</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterType</DEFINITION-REF>\r
+                  <VALUE>OS_TICK</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="44a8dc3f-2e97-4bb7-8139-57852146269a">\r
+              <SHORT-NAME>bTask25</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="f9e78da1-ee81-40a0-940b-3e04d9e9034c">\r
+              <SHORT-NAME>bTask100</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="157c6a3d-f8ad-4493-9d76-a8f9411066aa">\r
+              <SHORT-NAME>bTask10</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="ace8439e-ddb7-4bd7-b9e5-643a759f3e55">\r
+              <SHORT-NAME>Startup</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>2</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="40214336-c4be-4506-8ccc-75ff014f39fe">\r
+                  <SHORT-NAME>OsTaskAutostart</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask/OsTaskAutostart</DEFINITION-REF>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="08cf618f-ebe2-483c-8ba5-fde04f3c6160">\r
+              <SHORT-NAME>alarm10</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/blinker_node_arm_cm3/Os/OsTick</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="8a235c19-4b95-4bf1-a309-f15916dd2d8d">\r
+                  <SHORT-NAME>OsAlarmActivateTask</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask/OsAlarmActivateTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/blinker_node_arm_cm3/Os/bTask10</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="0f791241-110b-4cac-9e54-b41ad56c7f05">\r
+              <SHORT-NAME>alarm100</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/blinker_node_arm_cm3/Os/OsTick</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="3eb17f20-d68e-4d62-87e3-6775933e93a2">\r
+                  <SHORT-NAME>OsAlarmActivateTask</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask/OsAlarmActivateTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/blinker_node_arm_cm3/Os/bTask100</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="41ed7b6e-ff53-4509-a2d1-943d8261e36d">\r
+          <SHORT-NAME>Dio</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.0</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Dio</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="5142b895-319c-4954-9e68-c65926b1bde9">\r
+              <SHORT-NAME>DioGeneral</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioGeneral</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Dio/DioGeneral/DioDevErrorDetect</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Dio/DioGeneral/DioVersionInfoApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="bcdf538c-c632-43f4-b5cd-044bae94bb81">\r
+              <SHORT-NAME>LED_PORT</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioPort</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Dio/DioPort/DioPortId</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <STRING-VALUE>\r
+                  <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/Dio/DioPort/ArcCoreDioPhysicalPort</DEFINITION-REF>\r
+                  <VALUE>D</VALUE>\r
+                </STRING-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="749d0ffd-c994-41a1-b4c7-80400cde05ca">\r
+                  <SHORT-NAME>LED_CHANNEL1</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioPort/DioChannel</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Dio/DioPort/DioChannel/DioChannelId</DEFINITION-REF>\r
+                      <VALUE>55</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="44f582a3-7fd9-4d79-b41a-08ab68858e7e">\r
+                  <SHORT-NAME>LED_CHANNEL2</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioPort/DioChannel</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Dio/DioPort/DioChannel/DioChannelId</DEFINITION-REF>\r
+                      <VALUE>61</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="3e6df5d3-a0f1-4e27-8562-36d2c6d01795">\r
+                  <SHORT-NAME>LED_CHANNEL3</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioPort/DioChannel</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Dio/DioPort/DioChannel/DioChannelId</DEFINITION-REF>\r
+                      <VALUE>51</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="7cbdc7b8-c938-4e5b-a84f-e4c4f1f2d705">\r
+                  <SHORT-NAME>LED_CHANNEL4</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioPort/DioChannel</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Dio/DioPort/DioChannel/DioChannelId</DEFINITION-REF>\r
+                      <VALUE>52</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="c4495147-c1ed-4a19-b1e3-ab23d11e7bcf">\r
+          <SHORT-NAME>Port</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.2</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Port</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="2ba230a3-f785-4514-a224-7269f37bd048">\r
+              <SHORT-NAME>PortConfigSet</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet</DEFINITION-REF>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="2d1aee91-6d16-4a68-a045-4b35ad52966e">\r
+                  <SHORT-NAME>PortContainer_1</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer</DEFINITION-REF>\r
+                  <SUB-CONTAINERS>\r
+                    <CONTAINER UUID="be66b280-6ace-4b1f-b8a3-a923d64569b5">\r
+                      <SHORT-NAME>D3_LED3</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinPullMode</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirection</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_10MHz_MODE</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirectionChangeable</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinHysteresisEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinOpenDrainEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcReducedDrive</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinId</DEFINITION-REF>\r
+                          <VALUE>51</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <STRING-VALUE>\r
+                          <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcPortPinName</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </STRING-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinLevelValue</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_HIGH</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinMode</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_PUSHPULL_CNF</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                    <CONTAINER UUID="eb64422e-85c5-4fec-964d-5916a807f1fe">\r
+                      <SHORT-NAME>D4_LED4</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinPullMode</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirection</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_10MHz_MODE</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirectionChangeable</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinHysteresisEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinOpenDrainEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcReducedDrive</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinId</DEFINITION-REF>\r
+                          <VALUE>52</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <STRING-VALUE>\r
+                          <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcPortPinName</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </STRING-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinLevelValue</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_HIGH</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinMode</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_PUSHPULL_CNF</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                    <CONTAINER UUID="a99a1b7e-6ffa-474b-91d6-1324e60d8c7f">\r
+                      <SHORT-NAME>D7_LED1</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinPullMode</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirection</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_10MHz_MODE</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirectionChangeable</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinHysteresisEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinOpenDrainEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcReducedDrive</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinId</DEFINITION-REF>\r
+                          <VALUE>55</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <STRING-VALUE>\r
+                          <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcPortPinName</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </STRING-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinLevelValue</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_HIGH</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinMode</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_PUSHPULL_CNF</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                    <CONTAINER UUID="c430af31-68b9-4780-8dc2-d9f09edde143">\r
+                      <SHORT-NAME>D13_LED2</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinPullMode</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirection</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_10MHz_MODE</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirectionChangeable</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinHysteresisEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinOpenDrainEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcReducedDrive</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinId</DEFINITION-REF>\r
+                          <VALUE>61</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <STRING-VALUE>\r
+                          <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcPortPinName</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </STRING-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinLevelValue</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_HIGH</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinMode</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_PUSHPULL_CNF</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                  </SUB-CONTAINERS>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="0ffde529-3c0f-49eb-88af-da644cb60e3e">\r
+              <SHORT-NAME>PortGeneral</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortGeneral</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortGeneral/ArcGpioRemap</DEFINITION-REF>\r
+                  <VALUE></VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortDevErrorDetect</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortSetPinDirectionApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortSetPinModeApi</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortVersionInfoApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="e0b9bc68-bd05-4ae1-9ae1-7a46fc6a3f86">\r
+          <SHORT-NAME>Det</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.1</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Det</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="42d6bd8a-d355-4e0c-be5b-02cfb3a0e8e0">\r
+              <SHORT-NAME>DetGeneral</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Det/DetGeneral</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetEnableCallbacks</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetUseRamlog</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetWrapRamlog</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetUseStdErr</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetDeInitAPI</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Det/DetGeneral/DetNumberOfCallbacks</DEFINITION-REF>\r
+                  <VALUE>5</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Det/DetGeneral/DetRamlogSize</DEFINITION-REF>\r
+                  <VALUE>16</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="456a6a95-5836-473d-95e1-599a735500a0">\r
+          <SHORT-NAME>Mcu</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.2</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Mcu</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="b45ffd68-b2b9-4874-9de0-5f1faae58415">\r
+              <SHORT-NAME>McuGeneralConfiguration</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuGeneralConfiguration</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Mcu/McuGeneralConfiguration/McuDevErrorDetect</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Mcu/McuGeneralConfiguration/McuPerformResetApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Mcu/McuGeneralConfiguration/McuVersionInfoApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="a43b4ed4-eed7-4a21-885f-b5ba25372099">\r
+              <SHORT-NAME>McuModuleConfiguration</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSrcFailureNotification</DEFINITION-REF>\r
+                  <VALUE>DISABLED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="DERIVED-INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuNumberOfMcuModes</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="DERIVED-INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuRamSectors</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuResetSetting</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="5b150cab-d2e9-426f-b365-9ae189671851">\r
+                  <SHORT-NAME>McuClockSettingConfig</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAHBClocksEnable</DEFINITION-REF>\r
+                      <VALUE>DMA1</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAHBClocksEnable</DEFINITION-REF>\r
+                      <VALUE>ETH_MAC</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAHBClocksEnable</DEFINITION-REF>\r
+                      <VALUE>ETH_MAC_Tx</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAHBClocksEnable</DEFINITION-REF>\r
+                      <VALUE>ETH_MAC_Rx</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB1ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>TIM2</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB1ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>CAN1</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB2ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>ADC1</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB2ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>GPIOA</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB2ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>GPIOB</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB2ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>GPIOC</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB2ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>GPIOD</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB2ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>GPIOE</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB2ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>AFIO</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuDefaultClockReference</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/blinker_node_arm_cm3/Mcu/McuModuleConfiguration/McuClockSettingConfig/EXT_REF_25MHZ</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                  <SUB-CONTAINERS>\r
+                    <CONTAINER UUID="08023f7f-13d4-4ccf-902a-d0e86ccc4443">\r
+                      <SHORT-NAME>EXT_REF_25MHZ</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <FLOAT-VALUE>\r
+                          <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointFrequency</DEFINITION-REF>\r
+                          <VALUE>2.5E7</VALUE>\r
+                        </FLOAT-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllEprediv</DEFINITION-REF>\r
+                          <VALUE>9</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllEmfd</DEFINITION-REF>\r
+                          <VALUE>8</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllErfd</DEFINITION-REF>\r
+                          <VALUE>0</VALUE>\r
+                        </INTEGER-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                  </SUB-CONTAINERS>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="179c0741-fc9d-403a-a18f-b1c76a5374f7">\r
+                  <SHORT-NAME>McuModeSettingConf</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuModeSettingConf</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuModeSettingConf/McuMode</DEFINITION-REF>\r
+                      <VALUE>0</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="597f7367-2870-4d20-8912-217d97d63aaa">\r
+          <SHORT-NAME>EcuM</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.1</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/EcuM</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="32e03636-768e-40a9-9de6-e94ef943afdc">\r
+              <SHORT-NAME>EcuMGeneral</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/EcuM/EcuMGeneral</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/EcuM/EcuMGeneral/EcuMDevErrorDetect</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/EcuM/EcuMGeneral/EcuMIncludeNvramMgr</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/EcuM/EcuMGeneral/EcuMVersionInfoApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <FLOAT-VALUE>\r
+                  <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/EcuM/EcuMGeneral/EcuMMainFunctionPeriod</DEFINITION-REF>\r
+                  <VALUE>0.2</VALUE>\r
+                </FLOAT-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="bf51604d-cca9-49b6-90da-535a5b1b5ff4">\r
+              <SHORT-NAME>EcuMConfiguration</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/EcuM/EcuMConfiguration</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <FLOAT-VALUE>\r
+                  <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/EcuM/EcuMConfiguration/EcuMNvramReadallTimeout</DEFINITION-REF>\r
+                  <VALUE>10.0</VALUE>\r
+                </FLOAT-VALUE>\r
+                <FLOAT-VALUE>\r
+                  <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/EcuM/EcuMConfiguration/EcuMRunMinimumDuration</DEFINITION-REF>\r
+                  <VALUE>10.0</VALUE>\r
+                </FLOAT-VALUE>\r
+                <FLOAT-VALUE>\r
+                  <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/EcuM/EcuMConfiguration/EcuMNvramWriteallTimeout</DEFINITION-REF>\r
+                  <VALUE>10.0</VALUE>\r
+                </FLOAT-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+      </ELEMENTS>\r
+    </AR-PACKAGE>\r
+  </TOP-LEVEL-PACKAGES></AUTOSAR>\r
diff --git a/examples/blinker_node/blinker_node_mpc5516.arxml b/examples/blinker_node/blinker_node_mpc5516.arxml
new file mode 100644 (file)
index 0000000..de3a1c8
--- /dev/null
@@ -0,0 +1,766 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<AUTOSAR xmlns="http://autosar.org/3.1.4"><TOP-LEVEL-PACKAGES>\r
+    <AR-PACKAGE>\r
+      <SHORT-NAME>blinker_node_mpc5516</SHORT-NAME>\r
+      <ELEMENTS>\r
+        <ECU-CONFIGURATION UUID="fafd2115-4e79-4839-9b0e-02ee81d3ce31">\r
+          <SHORT-NAME>blinker_node_mpc5516</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <DOC-REVISIONS>\r
+              <DOC-REVISION/>\r
+            </DOC-REVISIONS>\r
+            <SDGS>\r
+              <SDG GID="Arccore::EcuOptions">\r
+                <SD GID="MCU">MPC551x</SD>\r
+                <SD GID="GENDIR"></SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <ECU-SW-COMPOSITION-REF DEST="ECU-SW-COMPOSITION">/blinker_node_mpc5516/SwComposition_blinker_node_mpc5516</ECU-SW-COMPOSITION-REF>\r
+          <MODULE-REFS>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_mpc5516/Os</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_mpc5516/Mcu</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_mpc5516/Det</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_mpc5516/Port</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_mpc5516/Dio</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_mpc5516/EcuM</MODULE-REF>\r
+          </MODULE-REFS>\r
+        </ECU-CONFIGURATION>\r
+        <ECU-SW-COMPOSITION UUID="84813c46-449a-4458-b10e-ff0fd142f7e6">\r
+          <SHORT-NAME>SwComposition_blinker_node_mpc5516</SHORT-NAME>\r
+        </ECU-SW-COMPOSITION>\r
+        <MODULE-CONFIGURATION UUID="20701c30-27ef-4b41-af75-c192b6351cce">\r
+          <SHORT-NAME>Os</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.11</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Os</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="7dd96d0a-3e66-4dce-b470-1be14ff71e57">\r
+              <SHORT-NAME>OsOS</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsOS</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsStackMonitoring</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsOS/OsStatus</DEFINITION-REF>\r
+                  <VALUE>EXTENDED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseGetServiceId</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseParameterAccess</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseResScheduler</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsTickFrequency</DEFINITION-REF>\r
+                  <VALUE>1000</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsInterruptStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsIdleStackSize</DEFINITION-REF>\r
+                  <VALUE>512</VALUE>\r
+                </INTEGER-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsUseDebug</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugTask</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugAlarm</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugResource</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugScheduleTable</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugEvent</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="10d0dd34-3ee5-42b4-ac69-0a7fd2d57c8d">\r
+                  <SHORT-NAME>OsHooks</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsOS/OsHooks</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsErrorHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsPostTaskHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsPreTaskHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsProtectionHook</DEFINITION-REF>\r
+                      <VALUE>false</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsShutdownHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsStartupHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="d5c6e0df-a323-4975-9539-52c09d7a91c5">\r
+              <SHORT-NAME>alarm25</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/blinker_node_mpc5516/Os/OsTick</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="2faae0a2-fe70-4602-8d51-4d4a7d454529">\r
+                  <SHORT-NAME>OsAlarmActivateTask</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask/OsAlarmActivateTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/blinker_node_mpc5516/Os/bTask25</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="1490b225-8c9d-47bb-8509-d09127b8567f">\r
+              <SHORT-NAME>alarm10</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/blinker_node_mpc5516/Os/OsTick</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="970835b3-5d1f-4df0-858d-21036a4d1ddf">\r
+                  <SHORT-NAME>OsAlarmActivateTask</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask/OsAlarmActivateTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/blinker_node_mpc5516/Os/bTask10</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="eb99f6d7-c181-4c96-a3ce-d755118ae299">\r
+              <SHORT-NAME>alarm100</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/blinker_node_mpc5516/Os/OsTick</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="557770ac-c3e5-4072-836d-26955aacff57">\r
+                  <SHORT-NAME>OsAlarmActivateTask</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask/OsAlarmActivateTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/blinker_node_mpc5516/Os/bTask100</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="c22763c4-e863-4f46-b0b7-c10ad3b28ef1">\r
+              <SHORT-NAME>OsTick</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsCounter</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMaxAllowedValue</DEFINITION-REF>\r
+                  <VALUE>65535</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMinCycle</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterTicksPerBase</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterType</DEFINITION-REF>\r
+                  <VALUE>OS_TICK</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="bc61edc4-d1aa-4678-9d82-f53d44bd0dc8">\r
+              <SHORT-NAME>bTask25</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="4e1907a3-ce6c-488f-89c8-3aadceb00c45">\r
+              <SHORT-NAME>bTask100</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="db82468e-07db-496d-8a7f-cb9dcf5d0816">\r
+              <SHORT-NAME>bTask10</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="f65bdf58-36db-4990-9487-a8feafefffc6">\r
+              <SHORT-NAME>Startup</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>2</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="4e41bd9d-0c4e-4192-b627-a8bb28a3a6be">\r
+                  <SHORT-NAME>OsTaskAutostart</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask/OsTaskAutostart</DEFINITION-REF>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="2e154d7d-f497-4314-ba43-4493bf64aa0d">\r
+          <SHORT-NAME>Mcu</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.2</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Mcu</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="0edd9d00-1f4a-4ea5-a22a-c45cdbcf6e13">\r
+              <SHORT-NAME>McuGeneralConfiguration</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuGeneralConfiguration</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Mcu/McuGeneralConfiguration/McuDevErrorDetect</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Mcu/McuGeneralConfiguration/McuPerformResetApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Mcu/McuGeneralConfiguration/McuVersionInfoApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="84e20040-0673-47e6-93b8-2408cc64eb97">\r
+              <SHORT-NAME>McuModuleConfiguration</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSrcFailureNotification</DEFINITION-REF>\r
+                  <VALUE>DISABLED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="DERIVED-INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuNumberOfMcuModes</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="DERIVED-INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuRamSectors</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuResetSetting</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="19d66b5b-4d9b-4cdf-a08e-2d24bf390a33">\r
+                  <SHORT-NAME>McuClockSettingConfig</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuDefaultClockReference</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/blinker_node_mpc5516/Mcu/McuModuleConfiguration/McuClockSettingConfig/EXT_REF_80MHZ</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                  <SUB-CONTAINERS>\r
+                    <CONTAINER UUID="8c6f2066-f999-492f-8599-71a0d3aab0de">\r
+                      <SHORT-NAME>EXT_REF_80MHZ</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <FLOAT-VALUE>\r
+                          <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointFrequency</DEFINITION-REF>\r
+                          <VALUE>8000000.0</VALUE>\r
+                        </FLOAT-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllEprediv</DEFINITION-REF>\r
+                          <VALUE>1</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllEmfd</DEFINITION-REF>\r
+                          <VALUE>104</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllErfd</DEFINITION-REF>\r
+                          <VALUE>5</VALUE>\r
+                        </INTEGER-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                    <CONTAINER UUID="8a989167-768f-47cd-86c8-ce9619b47d85">\r
+                      <SHORT-NAME>EXT_REF_66MHZ</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <FLOAT-VALUE>\r
+                          <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointFrequency</DEFINITION-REF>\r
+                          <VALUE>1.6E7</VALUE>\r
+                        </FLOAT-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllEprediv</DEFINITION-REF>\r
+                          <VALUE>3</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllEmfd</DEFINITION-REF>\r
+                          <VALUE>83</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllErfd</DEFINITION-REF>\r
+                          <VALUE>5</VALUE>\r
+                        </INTEGER-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                  </SUB-CONTAINERS>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="734a50e2-70db-4cf9-856c-afd74514d902">\r
+                  <SHORT-NAME>McuModeSettingConf</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuModeSettingConf</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuModeSettingConf/McuMode</DEFINITION-REF>\r
+                      <VALUE>0</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="99dd2932-f344-424c-88cb-0b0e6e005662">\r
+          <SHORT-NAME>Det</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.1</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Det</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="7d8226d8-a4c9-4d6d-85b5-833eb68ad0e8">\r
+              <SHORT-NAME>DetGeneral</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Det/DetGeneral</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetEnableCallbacks</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetUseRamlog</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetWrapRamlog</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetUseStdErr</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetDeInitAPI</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Det/DetGeneral/DetNumberOfCallbacks</DEFINITION-REF>\r
+                  <VALUE>5</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Det/DetGeneral/DetRamlogSize</DEFINITION-REF>\r
+                  <VALUE>16</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="36b47e2e-64a8-4e14-89f9-eca2a49722c2">\r
+          <SHORT-NAME>Port</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.2</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Port</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="60a1cceb-9bde-468c-8a66-a5590fbbc647">\r
+              <SHORT-NAME>PortConfigSet</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet</DEFINITION-REF>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="d745e13a-91e8-424c-8038-0a1e3bec9f84">\r
+                  <SHORT-NAME>LED_PORT</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer</DEFINITION-REF>\r
+                  <SUB-CONTAINERS>\r
+                    <CONTAINER UUID="2a51b050-1fc1-41c7-8c1c-5c6d3933bf6c">\r
+                      <SHORT-NAME>PD[4]</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinPullMode</DEFINITION-REF>\r
+                          <VALUE>PULL_NONE</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirection</DEFINITION-REF>\r
+                          <VALUE>PORT_PIN_OUT</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirectionChangeable</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinHysteresisEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinOpenDrainEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinId</DEFINITION-REF>\r
+                          <VALUE>52</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinSlewRate</DEFINITION-REF>\r
+                          <VALUE>SLEW_RATE_MIN</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinLevelValue</DEFINITION-REF>\r
+                          <VALUE>PORT_PIN_LEVEL_LOW</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinMode</DEFINITION-REF>\r
+                          <VALUE>PORT_PIN_MODE_DIO</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                    <CONTAINER UUID="c3d466db-9737-425a-a299-a7c781b4b172">\r
+                      <SHORT-NAME>PD[5]</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinPullMode</DEFINITION-REF>\r
+                          <VALUE>PULL_NONE</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirection</DEFINITION-REF>\r
+                          <VALUE>PORT_PIN_OUT</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirectionChangeable</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinHysteresisEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinOpenDrainEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinId</DEFINITION-REF>\r
+                          <VALUE>53</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinSlewRate</DEFINITION-REF>\r
+                          <VALUE>SLEW_RATE_MIN</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinLevelValue</DEFINITION-REF>\r
+                          <VALUE>PORT_PIN_LEVEL_LOW</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinMode</DEFINITION-REF>\r
+                          <VALUE>PORT_PIN_MODE_DIO</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                  </SUB-CONTAINERS>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="8d698577-d736-4761-a645-99c113994342">\r
+              <SHORT-NAME>PortGeneral</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortGeneral</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortDevErrorDetect</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortSetPinDirectionApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortSetPinModeApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortVersionInfoApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="bae978ad-fefb-42c3-95aa-c63822629f46">\r
+          <SHORT-NAME>Dio</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.0</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Dio</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="ada3bc9a-8e9f-4ca9-96f7-885424b3b2e8">\r
+              <SHORT-NAME>DioGeneral</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioGeneral</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Dio/DioGeneral/DioDevErrorDetect</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Dio/DioGeneral/DioVersionInfoApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="7ac5acc6-3fab-41f5-93b1-0852b893b5c2">\r
+              <SHORT-NAME>LED_PORT</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioPort</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Dio/DioPort/DioPortId</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <STRING-VALUE>\r
+                  <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/Dio/DioPort/ArcCoreDioPhysicalPort</DEFINITION-REF>\r
+                  <VALUE>DIO_PORT_D</VALUE>\r
+                </STRING-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="aa03e900-b874-439e-89fe-ec0acdc9fb77">\r
+                  <SHORT-NAME>LEDS_LED4</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioPort/DioChannel</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Dio/DioPort/DioChannel/DioChannelId</DEFINITION-REF>\r
+                      <VALUE>52</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="d31260a8-ad8e-4af9-82b4-225107392aca">\r
+                  <SHORT-NAME>LEDS_LED5</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioPort/DioChannel</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Dio/DioPort/DioChannel/DioChannelId</DEFINITION-REF>\r
+                      <VALUE>53</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="198876eb-33cf-4cbf-a37c-06d8a9670fe9">\r
+          <SHORT-NAME>EcuM</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.1</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/EcuM</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="576fbc52-a01f-44d3-9519-8e4116800610">\r
+              <SHORT-NAME>EcuMGeneral</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/EcuM/EcuMGeneral</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/EcuM/EcuMGeneral/EcuMDevErrorDetect</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/EcuM/EcuMGeneral/EcuMIncludeNvramMgr</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/EcuM/EcuMGeneral/EcuMVersionInfoApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <FLOAT-VALUE>\r
+                  <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/EcuM/EcuMGeneral/EcuMMainFunctionPeriod</DEFINITION-REF>\r
+                  <VALUE>0.2</VALUE>\r
+                </FLOAT-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="fa5bd3d6-0951-43a5-8529-7140d9689037">\r
+              <SHORT-NAME>EcuMConfiguration</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/EcuM/EcuMConfiguration</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <FLOAT-VALUE>\r
+                  <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/EcuM/EcuMConfiguration/EcuMNvramReadallTimeout</DEFINITION-REF>\r
+                  <VALUE>10.0</VALUE>\r
+                </FLOAT-VALUE>\r
+                <FLOAT-VALUE>\r
+                  <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/EcuM/EcuMConfiguration/EcuMRunMinimumDuration</DEFINITION-REF>\r
+                  <VALUE>10.0</VALUE>\r
+                </FLOAT-VALUE>\r
+                <FLOAT-VALUE>\r
+                  <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/EcuM/EcuMConfiguration/EcuMNvramWriteallTimeout</DEFINITION-REF>\r
+                  <VALUE>10.0</VALUE>\r
+                </FLOAT-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+      </ELEMENTS>\r
+    </AR-PACKAGE>\r
+  </TOP-LEVEL-PACKAGES></AUTOSAR>\r
diff --git a/examples/blinker_node/blinker_node_mpc5567.arxml b/examples/blinker_node/blinker_node_mpc5567.arxml
new file mode 100644 (file)
index 0000000..52a7f32
--- /dev/null
@@ -0,0 +1,692 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<AUTOSAR xmlns="http://autosar.org/3.1.4"><TOP-LEVEL-PACKAGES>\r
+    <AR-PACKAGE>\r
+      <SHORT-NAME>blinker_node_mpc5567</SHORT-NAME>\r
+      <ELEMENTS>\r
+        <ECU-CONFIGURATION UUID="f2333a5b-cda0-4ee4-8f4f-113e8e15a04c">\r
+          <SHORT-NAME>blinker_node_mpc5567</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <DOC-REVISIONS>\r
+              <DOC-REVISION/>\r
+            </DOC-REVISIONS>\r
+            <SDGS>\r
+              <SDG GID="Arccore::EcuOptions">\r
+                <SD GID="MCU">MPC5567</SD>\r
+                <SD GID="GENDIR"></SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <ECU-SW-COMPOSITION-REF DEST="ECU-SW-COMPOSITION">/blinker_node_mpc5567/SwComposition_blinker_node_mpc5567</ECU-SW-COMPOSITION-REF>\r
+          <MODULE-REFS>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_mpc5567/Os</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_mpc5567/Det</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_mpc5567/EcuM</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_mpc5567/Mcu</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_mpc5567/Port</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_mpc5567/Dio</MODULE-REF>\r
+          </MODULE-REFS>\r
+        </ECU-CONFIGURATION>\r
+        <ECU-SW-COMPOSITION UUID="2344f354-89d5-4ed5-bdc4-328cf0ee0c6b">\r
+          <SHORT-NAME>SwComposition_blinker_node_mpc5567</SHORT-NAME>\r
+        </ECU-SW-COMPOSITION>\r
+        <MODULE-CONFIGURATION UUID="45cc3b0a-a0c2-4368-8950-4fd43999d34d">\r
+          <SHORT-NAME>Os</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.7</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Os</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="85776455-d0ad-42aa-943b-eaf5370c764a">\r
+              <SHORT-NAME>OsOS</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsOS</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsStackMonitoring</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsOS/OsStatus</DEFINITION-REF>\r
+                  <VALUE>EXTENDED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseGetServiceId</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseParameterAccess</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseResScheduler</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsTickFrequency</DEFINITION-REF>\r
+                  <VALUE>1000</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsInterruptStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsIdleStackSize</DEFINITION-REF>\r
+                  <VALUE>512</VALUE>\r
+                </INTEGER-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsUseDebug</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugTask</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugAlarm</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugResource</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugScheduleTable</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugEvent</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="3b9e5e09-7789-4dd0-80f9-8336f61037b2">\r
+                  <SHORT-NAME>OsHooks</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsOS/OsHooks</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsErrorHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsPostTaskHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsPreTaskHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsProtectionHook</DEFINITION-REF>\r
+                      <VALUE>false</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsShutdownHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsStartupHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="299edb5c-e9bb-4cb7-99f2-96078c8ef889">\r
+              <SHORT-NAME>OsTick</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsCounter</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMaxAllowedValue</DEFINITION-REF>\r
+                  <VALUE>65535</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMinCycle</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterTicksPerBase</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterType</DEFINITION-REF>\r
+                  <VALUE>OS_TICK</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="c5956a55-cb41-4643-ac03-c9bec22d3c18">\r
+              <SHORT-NAME>bTask25</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="dafa1a5c-d8c0-4eec-a2b5-9cd2712b0047">\r
+              <SHORT-NAME>bTask100</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="56221300-739c-4915-b621-40d5a88b55b1">\r
+              <SHORT-NAME>bTask10</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="a7970a5d-6275-426e-a51a-20691031bdf5">\r
+              <SHORT-NAME>Startup</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>2</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="94467704-ad80-4c67-b089-21f4e865997b">\r
+                  <SHORT-NAME>OsTaskAutostart</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask/OsTaskAutostart</DEFINITION-REF>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="a22b376e-0d40-47d6-96a7-f5ea15cc6f87">\r
+              <SHORT-NAME>alarm25</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/blinker_node_mpc5567/Os/OsTick</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="6a89f7c1-2516-488a-a318-25f5c54b4079">\r
+                  <SHORT-NAME>OsAlarmActivateTask</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask/OsAlarmActivateTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/blinker_node_mpc5567/Os/bTask25</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="c79487f9-46b5-45f5-b459-1f06be319f6a">\r
+              <SHORT-NAME>alarm10</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/blinker_node_mpc5567/Os/OsTick</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="3fa0a654-a059-4973-b476-cafe03690655">\r
+                  <SHORT-NAME>OsAlarmActivateTask</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask/OsAlarmActivateTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/blinker_node_mpc5567/Os/bTask10</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="c2a105af-fd99-4b2e-9dd7-ddc18617ebbc">\r
+              <SHORT-NAME>alarm100</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/blinker_node_mpc5567/Os/OsTick</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="89f89e91-5691-49cd-833b-4e9d14117a98">\r
+                  <SHORT-NAME>OsAlarmActivateTask</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask/OsAlarmActivateTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/blinker_node_mpc5567/Os/bTask100</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="99dd2932-f344-424c-88cb-0b0e6e005662">\r
+          <SHORT-NAME>Det</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.1</SD>\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Det</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="7d8226d8-a4c9-4d6d-85b5-833eb68ad0e8">\r
+              <SHORT-NAME>DetGeneral</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Det/DetGeneral</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetEnableCallbacks</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetUseRamlog</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetWrapRamlog</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetUseStdErr</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Det/DetGeneral/DetDeInitAPI</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Det/DetGeneral/DetNumberOfCallbacks</DEFINITION-REF>\r
+                  <VALUE>5</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Det/DetGeneral/DetRamlogSize</DEFINITION-REF>\r
+                  <VALUE>16</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="198876eb-33cf-4cbf-a37c-06d8a9670fe9">\r
+          <SHORT-NAME>EcuM</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.1</SD>\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/EcuM</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="576fbc52-a01f-44d3-9519-8e4116800610">\r
+              <SHORT-NAME>EcuMGeneral</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/EcuM/EcuMGeneral</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/EcuM/EcuMGeneral/EcuMDevErrorDetect</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/EcuM/EcuMGeneral/EcuMIncludeNvramMgr</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/EcuM/EcuMGeneral/EcuMVersionInfoApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <FLOAT-VALUE>\r
+                  <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/EcuM/EcuMGeneral/EcuMMainFunctionPeriod</DEFINITION-REF>\r
+                  <VALUE>0.2</VALUE>\r
+                </FLOAT-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="fa5bd3d6-0951-43a5-8529-7140d9689037">\r
+              <SHORT-NAME>EcuMConfiguration</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/EcuM/EcuMConfiguration</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <FLOAT-VALUE>\r
+                  <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/EcuM/EcuMConfiguration/EcuMNvramReadallTimeout</DEFINITION-REF>\r
+                  <VALUE>10.0</VALUE>\r
+                </FLOAT-VALUE>\r
+                <FLOAT-VALUE>\r
+                  <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/EcuM/EcuMConfiguration/EcuMRunMinimumDuration</DEFINITION-REF>\r
+                  <VALUE>10.0</VALUE>\r
+                </FLOAT-VALUE>\r
+                <FLOAT-VALUE>\r
+                  <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/EcuM/EcuMConfiguration/EcuMNvramWriteallTimeout</DEFINITION-REF>\r
+                  <VALUE>10.0</VALUE>\r
+                </FLOAT-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="cfa529c2-e3f7-422c-a12b-3271f42cb27d">\r
+          <SHORT-NAME>Mcu</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.2</SD>\r
+                <SD GID="GENERATE_AND_VALIDATE">false</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Mcu</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="72eda2b7-cb7d-4873-b5e9-79daed917de9">\r
+              <SHORT-NAME>McuGeneralConfiguration</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuGeneralConfiguration</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Mcu/McuGeneralConfiguration/McuDevErrorDetect</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Mcu/McuGeneralConfiguration/McuPerformResetApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Mcu/McuGeneralConfiguration/McuVersionInfoApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="d8f198d5-8901-4cfa-ba6b-06b5fa32fe84">\r
+              <SHORT-NAME>McuModuleConfiguration</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSrcFailureNotification</DEFINITION-REF>\r
+                  <VALUE>DISABLED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="DERIVED-INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuNumberOfMcuModes</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="DERIVED-INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuRamSectors</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuResetSetting</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="b4a7ace7-9dc0-489b-b545-a813bc08b327">\r
+                  <SHORT-NAME>McuClockSettingConfig</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuDefaultClockReference</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/blinker_node_mpc5567/Mcu/McuModuleConfiguration/McuClockSettingConfig/EXT_REF_80MHZ</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                  <SUB-CONTAINERS>\r
+                    <CONTAINER UUID="72e293da-ad58-40a3-bb0a-07b9010c05fb">\r
+                      <SHORT-NAME>EXT_REF_80MHZ</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <FLOAT-VALUE>\r
+                          <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointFrequency</DEFINITION-REF>\r
+                          <VALUE>1.6E7</VALUE>\r
+                        </FLOAT-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllEprediv</DEFINITION-REF>\r
+                          <VALUE>2</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllEmfd</DEFINITION-REF>\r
+                          <VALUE>11</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllErfd</DEFINITION-REF>\r
+                          <VALUE>0</VALUE>\r
+                        </INTEGER-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                  </SUB-CONTAINERS>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="bb62035a-69d0-4503-8ce8-7b7adb6b845a">\r
+                  <SHORT-NAME>McuModeSettingConf</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuModeSettingConf</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuModeSettingConf/McuMode</DEFINITION-REF>\r
+                      <VALUE>0</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="8254a509-e508-4280-8ec0-0817ef68495b">\r
+          <SHORT-NAME>Port</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.2</SD>\r
+                <SD GID="GENERATE_AND_VALIDATE">false</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Port</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="496e8330-5da6-48f8-9e21-f6d4fed81187">\r
+              <SHORT-NAME>PortConfigSet</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet</DEFINITION-REF>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="0f17c271-bfae-4d07-8283-9ce8a8118f1b">\r
+                  <SHORT-NAME>PortContainer_1</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer</DEFINITION-REF>\r
+                  <SUB-CONTAINERS>\r
+                    <CONTAINER UUID="0c45b12c-496e-4f6a-9949-5e224a9adf33">\r
+                      <SHORT-NAME>GPIO[125]</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinPullMode</DEFINITION-REF>\r
+                          <VALUE>PULL_NONE</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirection</DEFINITION-REF>\r
+                          <VALUE>PORT_PIN_OUT</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirectionChangeable</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinHysteresisEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinOpenDrainEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinId</DEFINITION-REF>\r
+                          <VALUE>125</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinSlewRate</DEFINITION-REF>\r
+                          <VALUE>SLEW_RATE_MIN</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinLevelValue</DEFINITION-REF>\r
+                          <VALUE>PORT_PIN_LEVEL_LOW</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinMode</DEFINITION-REF>\r
+                          <VALUE>PORT_PIN_MODE_DIO</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                  </SUB-CONTAINERS>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="105ccb0c-0a5c-4930-a423-09e2b0730514">\r
+              <SHORT-NAME>PortGeneral</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortGeneral</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortDevErrorDetect</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortSetPinDirectionApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortSetPinModeApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortVersionInfoApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="70ab573d-bc1a-419a-8c53-86d9da6d2405">\r
+          <SHORT-NAME>Dio</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.0</SD>\r
+                <SD GID="GENERATE_AND_VALIDATE">false</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Dio</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="0b40745e-f0ce-4aee-9499-b05e16e2241f">\r
+              <SHORT-NAME>DioGeneral</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioGeneral</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Dio/DioGeneral/DioDevErrorDetect</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Dio/DioGeneral/DioVersionInfoApi</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="ba82bde5-69dc-4c1d-8fc0-2539f1e7e105">\r
+              <SHORT-NAME>DioPort_1</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioPort</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Dio/DioPort/DioPortId</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <STRING-VALUE>\r
+                  <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/Dio/DioPort/ArcCoreDioPhysicalPort</DEFINITION-REF>\r
+                  <VALUE>DIO_MPC5567_GENERIC_PORT</VALUE>\r
+                </STRING-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="19f14a77-d8e8-40cb-99dd-6b6e751b916a">\r
+                  <SHORT-NAME>LED_K2</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioPort/DioChannel</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Dio/DioPort/DioChannel/DioChannelId</DEFINITION-REF>\r
+                      <VALUE>125</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+      </ELEMENTS>\r
+    </AR-PACKAGE>\r
+  </TOP-LEVEL-PACKAGES></AUTOSAR>\r
index 70d0af7c93bb28ebfa685f8fafe46129a837057e..47ba49527b9f763bfaf9d828b7602eb70dec1796 100644 (file)
@@ -65,7 +65,7 @@ void bTask25( void );
 #define OS_OSIDLE_STACK_SIZE 512\r
 \r
 #define OS_ALARM_CNT                   3 \r
-#define OS_TASK_CNT                            5\r
+#define OS_TASK_CNT                            6\r
 #define OS_SCHTBL_CNT                  0\r
 #define OS_COUNTER_CNT                 1\r
 #define OS_EVENTS_CNT                  0\r
index 9c015494de53bc65c9ff46cb483823b4646d6c8f..57e824e80d5fa218d99e50dcf9491e31710a2719 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Nov 24 20:08:51 CET 2010\r
+ *           on Fri Jan 14 16:10:48 CET 2011\r
  */\r
 \r
        \r
index b18e6c8260d78d0c26f63ce74cebde24e6ef6804..e7866e1336487c9ef3642d2e7d18184cf956675b 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Nov 24 20:08:51 CET 2010\r
+ *           on Fri Jan 14 16:10:48 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2
+#if ((OS_SW_MAJOR_VERSION != 2)
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
diff --git a/examples/blinker_node/config/mpc5516it/Det_cfg.h b/examples/blinker_node/config/mpc5516it/Det_cfg.h
new file mode 100644 (file)
index 0000000..260e128
--- /dev/null
@@ -0,0 +1,37 @@
+/*\r
+ * Configuration of module Det (Det_cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC551x\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 12:40:30 CET 2011\r
+ */\r
+\r
+
+#if !(((DET_SW_MAJOR_VERSION == 1) && (DET_SW_MINOR_VERSION == 0)) )
+#error "Det: Configuration file version differs from BSW version."
+#endif
+
+/*\r
+ * Development Error Tracer driver\r
+ *\r
+ * Specification: Autosar v2.0.1, Final\r
+ *\r
+ */\r
+#ifndef DET_CFG_H\r
+#define DET_CFG_H \r
+\r
+#define DET_ENABLE_CALLBACKS STD_OFF // Enable to use callback on errors\r
+#define DET_USE_RAMLOG       STD_ON  // Enable to log DET errors to ramlog\r
+#define DET_WRAP_RAMLOG      STD_ON  // The ramlog wraps around when reaching the end\r
+#define DET_USE_STDERR       STD_OFF // Enable to get DET errors on stderr\r
+#define DET_DEINIT_API       STD_OFF // Enable/Disable the Det_DeInit function\r
+#define DET_RAMLOG_SIZE         (16)  // Number of entries in ramlog\r
+#define DET_NUMBER_OF_CALLBACKS (5)  // Number of callbacks\r
+\r
+#endif /* DET_CFG_H */\r
diff --git a/examples/blinker_node/config/mpc5516it/Dio_Cfg.h b/examples/blinker_node/config/mpc5516it/Dio_Cfg.h
new file mode 100644 (file)
index 0000000..a1b91b0
--- /dev/null
@@ -0,0 +1,66 @@
+/*\r
+ * Configuration of module Dio (Dio_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC551x\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.0\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 12:40:30 CET 2011\r
+ */\r
+\r
+
+#if !(((DIO_SW_MAJOR_VERSION == 1) && (DIO_SW_MINOR_VERSION == 0)) )
+#error "Dio: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef DIO_CFG_H_\r
+#define DIO_CFG_H_\r
+\r
+#define DIO_VERSION_INFO_API    STD_ON\r
+#define DIO_DEV_ERROR_DETECT    STD_ON\r
+\r
+#define DIO_END_OF_LIST  -1\r
+\r
+// Physical ports\r
+typedef enum\r
+{\r
+  DIO_PORT_A = 0,\r
+  DIO_PORT_B = 1,\r
+  DIO_PORT_C = 2,\r
+  DIO_PORT_D = 3,\r
+  DIO_PORT_E = 4,\r
+  DIO_PORT_F = 5,\r
+  DIO_PORT_G = 6,\r
+  DIO_PORT_H = 7,\r
+  DIO_PORT_I = 8,\r
+  DIO_PORT_J = 9,\r
+  DIO_PORT_K = 10,\r
+} Dio_PortTypesType;\r
+\r
+\r
+// Channels    \r
+#define DIO_CHANNEL_NAME_LEDS_LED4     52\r
+#define DIO_CHANNEL_NAME_LEDS_LED5     53\r
+\r
+// Channel group\r
+\r
+// Ports\r
+#define DIO_PORT_NAME_LED_PORT                 (DIO_PORT_D)\r
+\r
+\r
+\r
+\r
+// Pointers for convenience.\r
+// Channels    \r
+extern const Dio_ChannelType DioChannelConfigData[];\r
+// Channel group\r
+extern const Dio_ChannelGroupType DioConfigData[];\r
+// Port\r
+extern const Dio_PortType DioPortConfigData[];\r
+\r
+#endif /*DIO_CFG_H_*/\r
diff --git a/examples/blinker_node/config/mpc5516it/Dio_Lcfg.c b/examples/blinker_node/config/mpc5516it/Dio_Lcfg.c
new file mode 100644 (file)
index 0000000..4349275
--- /dev/null
@@ -0,0 +1,43 @@
+/*\r
+ * Configuration of module Dio (Dio_Lcfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC551x\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.0\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 12:40:30 CET 2011\r
+ */\r
+\r
+\r
+       \r
+#include "Dio.h"\r
+#include "Dio_Cfg.h"\r
+\r
+const Dio_ChannelType DioChannelConfigData[] = { \r
+       DIO_CHANNEL_NAME_LEDS_LED4,\r
+       DIO_CHANNEL_NAME_LEDS_LED5,\r
+       DIO_END_OF_LIST\r
+};\r
+\r
+const Dio_PortType DioPortConfigData[] = { \r
+       DIO_PORT_NAME_LED_PORT,  \r
+       DIO_END_OF_LIST\r
+};\r
+\r
+const Dio_ChannelGroupType DioConfigData[] = {\r
+       { \r
+         .port = DIO_END_OF_LIST, \r
+         .offset = DIO_END_OF_LIST, \r
+         .mask = DIO_END_OF_LIST, \r
+       }\r
+};\r
+\r
+\r
+uint32 Dio_GetPortConfigSize(void)\r
+{\r
+  return sizeof(DioConfigData);\r
+}\r
diff --git a/examples/blinker_node/config/mpc5516it/EcuM.mk b/examples/blinker_node/config/mpc5516it/EcuM.mk
new file mode 100644 (file)
index 0000000..2c3ffd0
--- /dev/null
@@ -0,0 +1,3 @@
+\r
+MOD_USE += MCU PORT DIO \r
+\r
diff --git a/examples/blinker_node/config/mpc5516it/EcuM_Callout_template.c b/examples/blinker_node/config/mpc5516it/EcuM_Callout_template.c
new file mode 100644 (file)
index 0000000..58cd9aa
--- /dev/null
@@ -0,0 +1,296 @@
+/*\r
+ * Configuration of module EcuM (EcuM_Callout_template.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC551x\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Mon Jan 24 11:07:49 CET 2011\r
+ */\r
+\r
+\r
+#include "EcuM.h"\r
+#include "EcuM_Cbk.h"\r
+#include "Det.h"\r
+#if defined(USE_DEM)\r
+#include "Dem.h"\r
+#endif\r
+#if defined(USE_MCU)\r
+#include "Mcu.h"\r
+#endif\r
+#if defined(USE_GPT)\r
+#include "Gpt.h"\r
+#endif\r
+#if defined(USE_CAN)\r
+#include "Can.h"\r
+#endif\r
+#if defined(USE_CANIF)\r
+#include "CanIf.h"\r
+#endif\r
+#if defined(USE_PDUR)\r
+#include "PduR.h"\r
+#endif\r
+#if defined(USE_COM)\r
+#include "Com.h"\r
+#endif\r
+#if defined(USE_CANTP)\r
+#include "CanTp.h"\r
+#endif\r
+#if defined(USE_DCM)\r
+#include "Dcm.h"\r
+#endif\r
+#if defined(USE_PWM)\r
+#include "Pwm.h"\r
+#endif\r
+#if defined(USE_IOHWAB)\r
+#include "IoHwAb.h"\r
+#endif\r
+#if defined(USE_FLS)\r
+#include "Fls.h"\r
+#endif\r
+#if defined(USE_EEP)\r
+#include "Eep.h"\r
+#endif\r
+#if defined(USE_FEE)\r
+#include "Fee.h"\r
+#endif\r
+#if defined(USE_EA)\r
+#include "Ea.h"\r
+#endif\r
+#if defined(USE_NVM)\r
+#include "NvM.h"\r
+#endif\r
+#if defined(USE_COMM)\r
+#include "ComM.h"\r
+#endif\r
+#if defined(USE_NM)\r
+#include "Nm.h"\r
+#endif\r
+#if defined(USE_CANNM)\r
+#include "CanNm.h"\r
+#endif\r
+#if defined(USE_CANSM)\r
+#include "CanSM.h"\r
+#endif\r
+#if defined(USE_LINSM)\r
+#include "LinSM.h"\r
+#endif\r
+\r
+void EcuM_AL_DriverInitZero(void)\r
+{\r
+       Det_Init();\r
+    Det_Start();\r
+}\r
+\r
+EcuM_ConfigType* EcuM_DeterminePbConfiguration(void)\r
+{\r
+       return &EcuMConfig;\r
+}\r
+\r
+void EcuM_AL_DriverInitOne(const EcuM_ConfigType *ConfigPtr)\r
+{\r
+  //lint --e{715}       PC-Lint (715) - ConfigPtr usage depends on configuration of modules\r
+\r
+#if defined(USE_MCU)\r
+       Mcu_Init(ConfigPtr->McuConfig);\r
+\r
+       // Set up default clock (Mcu_InitClock requires initRun==1)\r
+       // Ignoring return value\r
+       (void) Mcu_InitClock( ConfigPtr->McuConfig->McuDefaultClockSettings );\r
+\r
+       // Wait for PLL to sync.\r
+       while (Mcu_GetPllStatus() != MCU_PLL_LOCKED)\r
+       {\r
+         ;\r
+       }\r
+#endif\r
+\r
+#if defined(USE_DEM)\r
+       // Preinitialize DEM\r
+       Dem_PreInit();\r
+#endif\r
+\r
+#if defined(USE_PORT)\r
+       // Setup Port\r
+       Port_Init(ConfigPtr->PortConfig);\r
+#endif\r
+\r
+\r
+#if defined(USE_GPT)\r
+       // Setup the GPT\r
+       Gpt_Init(ConfigPtr->GptConfig);\r
+#endif\r
+\r
+       // Setup watchdog\r
+       // TODO\r
+\r
+#if defined(USE_DMA)\r
+       // Setup DMA\r
+       Dma_Init(ConfigPtr->DmaConfig);\r
+#endif\r
+\r
+#if defined(USE_ADC)\r
+       // Setup ADC\r
+       Adc_Init(ConfigPtr->AdcConfig);\r
+#endif\r
+\r
+       // Setup ICU\r
+       // TODO\r
+\r
+       // Setup PWM\r
+#if defined(USE_PWM)\r
+       // Setup PWM\r
+       Pwm_Init(ConfigPtr->PwmConfig);\r
+#endif\r
+}\r
+\r
+void EcuM_AL_DriverInitTwo(const EcuM_ConfigType* ConfigPtr)\r
+{\r
+  //lint --e{715}       PC-Lint (715) - ConfigPtr usage depends on configuration of modules\r
+\r
+#if defined(USE_SPI)\r
+       // Setup SPI\r
+       Spi_Init(ConfigPtr->SpiConfig);\r
+#endif\r
+\r
+#if defined(USE_EEP)\r
+       // Setup EEP\r
+       Eep_Init(ConfigPtr->EEpConfig);\r
+#endif\r
+\r
+#if defined(USE_FLS)\r
+       // Setup Flash\r
+       Fls_Init(ConfigPtr->FlashConfig);\r
+#endif\r
+\r
+#if defined(USE_FEE)\r
+       // Setup FEE\r
+       Fee_Init();\r
+#endif\r
+\r
+#if defined(USE_EA)\r
+       // Setup EA\r
+       Ea_init();\r
+#endif\r
+\r
+#if defined(USE_NVM)\r
+       // Setup NVRAM Manager and start the read all job\r
+       NvM_Init();\r
+       NvM_ReadAll();\r
+#endif\r
+\r
+       // Setup CAN tranceiver\r
+       // TODO\r
+\r
+#if defined(USE_CAN)\r
+       // Setup Can driver\r
+       Can_Init(ConfigPtr->CanConfig);\r
+#endif\r
+\r
+#if defined(USE_CANIF)\r
+       // Setup CanIf\r
+       CanIf_Init(ConfigPtr->CanIfConfig);\r
+#endif\r
+\r
+#if defined(USE_CANTP)\r
+       // Setup CAN TP\r
+       CanTp_Init();\r
+#endif\r
+\r
+#if defined(USE_CANSM)\r
+        CanSM_Init(ConfigPtr->CanSMConfig);\r
+#endif\r
+\r
+       // Setup LIN\r
+       // TODO\r
+\r
+#if defined(USE_PDUR)\r
+       // Setup PDU Router\r
+       PduR_Init(ConfigPtr->PduRConfig);\r
+#endif\r
+\r
+#if defined(USE_CANNM)\r
+        // Setup Can Network Manager\r
+        CanNm_Init(ConfigPtr->CanNmConfig);\r
+#endif\r
+\r
+#if defined(USE_NM)\r
+        // Setup Network Management Interface\r
+        Nm_Init(ConfigPtr->NmConfig);\r
+#endif\r
+\r
+#if defined(USE_COM)\r
+       // Setup COM layer\r
+       Com_Init(ConfigPtr->ComConfig);\r
+#endif\r
+\r
+#if defined(USE_DCM)\r
+       // Setup DCM\r
+       Dcm_Init();\r
+#endif\r
+\r
+#if defined(USE_IOHWAB)\r
+       // Setup IO hardware abstraction layer\r
+       IoHwAb_Init();\r
+#endif\r
+\r
+}\r
+\r
+void EcuM_AL_DriverInitThree(const EcuM_ConfigType* ConfigPtr)\r
+{\r
+  //lint --e{715}       PC-Lint (715) - ConfigPtr usage depends on configuration of modules\r
+\r
+#if defined(USE_DEM)\r
+       // Setup DEM\r
+       Dem_Init();\r
+#endif\r
+\r
+#if defined(USE_COMM)\r
+        // Setup Communication Manager\r
+        ComM_Init(ConfigPtr->ComMConfig);\r
+#endif\r
+}\r
+\r
+void EcuM_OnEnterRUN(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnExitRun(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnExitPostRun(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnPrepShutdown(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnGoSleep(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnGoOffOne(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnGoOffTwo(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_AL_SwitchOff(void)\r
+{\r
+\r
+}\r
diff --git a/examples/blinker_node/config/mpc5516it/EcuM_Cfg.c b/examples/blinker_node/config/mpc5516it/EcuM_Cfg.c
new file mode 100644 (file)
index 0000000..8afad22
--- /dev/null
@@ -0,0 +1,73 @@
+/*\r
+ * Configuration of module EcuM (EcuM_Cfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC551x\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Mon Jan 24 11:07:49 CET 2011\r
+ */\r
+\r
+\r
+\r
+#include "EcuM.h"\r
+\r
+EcuM_ConfigType EcuMConfig =\r
+{\r
+       .EcuMDefaultShutdownTarget = ECUM_STATE_RESET,\r
+       .EcuMDefaultSleepMode = 0, // Don't care\r
+       .EcuMDefaultAppMode = OSDEFAULTAPPMODE,\r
+       .EcuMNvramReadAllTimeout = ECUM_NVRAM_READALL_TIMEOUT,\r
+       .EcuMNvramWriteAllTimeout = ECUM_NVRAM_WRITEALL_TIMEOUT,\r
+       .EcuMRunMinimumDuration = ECUM_NVRAM_MIN_RUN_DURATION,\r
+\r
+#if defined(USE_MCU)\r
+        .McuConfig = McuConfigData,\r
+#endif\r
+#if defined(USE_PORT)\r
+        .PortConfig = &PortConfigData,\r
+#endif\r
+#if defined(USE_CAN)\r
+        .CanConfig = &CanConfigData,\r
+#endif\r
+#if defined(USE_CANIF)\r
+        .CanIfConfig = &CanIf_Config,\r
+#endif\r
+#if defined(USE_CANSM)\r
+        .CanSMConfig = &CanSM_Config,\r
+#endif\r
+#if defined(USE_CANNM)\r
+        .CanNmConfig = &CanNm_Config,\r
+#endif\r
+#if defined(USE_COM)\r
+        .ComConfig = &ComConfiguration,\r
+#endif\r
+#if defined(USE_COMM)\r
+        .ComMConfig = &ComM_Config,\r
+#endif\r
+#if defined(USE_NM)\r
+        .NmConfig = &Nm_Config,\r
+#endif\r
+#if defined(USE_PDUR)\r
+        .PduRConfig = &PduR_Config,\r
+#endif\r
+#if defined(USE_DMA)\r
+        .DmaConfig = DmaConfig,\r
+#endif\r
+#if defined(USE_ADC)\r
+        .AdcConfig = AdcConfig,\r
+#endif\r
+#if defined(USE_PWM)\r
+        .PwmConfig = &PwmConfig,\r
+#endif\r
+#if defined(USE_GPT)\r
+        .GptConfig = GptConfigData,\r
+#endif\r
+#if defined(USE_FLS)\r
+       .FlashConfig = FlsConfigSet,\r
+#endif\r
+};\r
diff --git a/examples/blinker_node/config/mpc5516it/EcuM_Cfg.h b/examples/blinker_node/config/mpc5516it/EcuM_Cfg.h
new file mode 100644 (file)
index 0000000..a2a73e7
--- /dev/null
@@ -0,0 +1,43 @@
+/*\r
+ * Configuration of module EcuM (EcuM_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC551x\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 12:40:30 CET 2011\r
+ */\r
+\r
+
+#if !(((ECUM_SW_MAJOR_VERSION == 2) && (ECUM_SW_MINOR_VERSION == 0)) )
+#error "EcuM: Configuration file version differs from BSW version."
+#endif
+
+\r
+\r
+#ifndef ECUM_CFG_H_\r
+#define ECUM_CFG_H_\r
+\r
+#define ECUM_VERSION_INFO_API  STD_ON\r
+#define ECUM_DEV_ERROR_DETECT  STD_ON\r
+\r
+#include "EcuM_Generated_Types.h"\r
+\r
+#define ECUM_MAIN_FUNCTION_PERIOD  (200)\r
+#define ECUM_NVRAM_READALL_TIMEOUT (10000)\r
+#define ECUM_NVRAM_WRITEALL_TIMEOUT (10000)\r
+#define ECUM_NVRAM_MIN_RUN_DURATION (10000)\r
+\r
+// EcuM_UserType definitions\r
+typedef enum {\r
+    ECUM_USER_SYSTEM,   // Dummy user to get at least one user in system\r
+       ECUM_USER_ENDMARK       // Must be the last in list!\r
+} EcuM_UserList;\r
+\r
+extern EcuM_ConfigType EcuMConfig;\r
+\r
+#endif /*ECUM_CFG_H_*/\r
diff --git a/examples/blinker_node/config/mpc5516it/EcuM_Generated_Types.h b/examples/blinker_node/config/mpc5516it/EcuM_Generated_Types.h
new file mode 100644 (file)
index 0000000..2e17d53
--- /dev/null
@@ -0,0 +1,129 @@
+/*\r
+ * Configuration of module EcuM (EcuM_Generated_Types.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC551x\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Mon Jan 24 11:07:49 CET 2011\r
+ */\r
+\r
+
+#if !(((ECUM_SW_MAJOR_VERSION == 2) && (ECUM_SW_MINOR_VERSION == 0)) )
+#error "EcuM: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef _ECUM_GENERATED_TYPES_H_\r
+#define _ECUM_GENERATED_TYPES_H_\r
+\r
+#if defined(USE_MCU)\r
+#include "Mcu.h"\r
+#endif\r
+#if defined(USE_PORT)\r
+#include "Port.h"\r
+#endif\r
+#if defined(USE_CAN)\r
+#include "Can.h"\r
+#endif\r
+#if defined(USE_CANIF)\r
+#include "CanIf.h"\r
+#endif\r
+#if defined(USE_PWM)\r
+#include "Pwm.h"\r
+#endif\r
+#if defined(USE_COM)\r
+#include "Com.h"\r
+#endif\r
+#if defined(USE_PDUR)\r
+#include "PduR.h"\r
+#endif\r
+#if defined(USE_DMA)\r
+#include "Dma.h"\r
+#endif\r
+#if defined(USE_ADC)\r
+#include "Adc.h"\r
+#endif\r
+#if defined(USE_GPT)\r
+#include "Gpt.h"\r
+#endif\r
+#if defined(USE_COMM)\r
+#include "ComM.h"\r
+#endif\r
+#if defined(USE_NM)\r
+#include "Nm.h"\r
+#endif\r
+#if defined(USE_CANNM)\r
+#include "CanNm.h"\r
+#endif\r
+#if defined(USE_CANSM)\r
+#include "CanSM.h"\r
+#endif\r
+#if defined(USE_LINSM)\r
+#include "LinSM.h"\r
+#endif\r
+#if defined(USE_FLS)\r
+#include "Fls.h"\r
+#endif\r
+\r
+typedef struct\r
+{\r
+       EcuM_StateType EcuMDefaultShutdownTarget;\r
+       uint8 EcuMDefaultSleepMode;\r
+       AppModeType EcuMDefaultAppMode;\r
+       uint32 EcuMRunMinimumDuration;\r
+       uint32 EcuMNvramReadAllTimeout;\r
+       uint32 EcuMNvramWriteAllTimeout;\r
+\r
+#if defined(USE_MCU)\r
+        const Mcu_ConfigType* McuConfig;\r
+#endif\r
+#if defined(USE_PORT)\r
+        const Port_ConfigType* PortConfig;\r
+#endif\r
+#if defined(USE_CAN)\r
+        const Can_ConfigType* CanConfig;\r
+#endif\r
+#if defined(USE_CANIF)\r
+        const CanIf_ConfigType* CanIfConfig;\r
+#endif\r
+#if defined(USE_CANSM)\r
+        const CanSM_ConfigType* CanSMConfig;\r
+#endif\r
+#if defined(USE_NM)\r
+        const Nm_ConfigType* NmConfig;\r
+#endif\r
+#if defined(USE_CANNM)\r
+        const CanNm_ConfigType* CanNmConfig;\r
+#endif\r
+#if defined(USE_COMM)\r
+        const ComM_ConfigType* ComMConfig;\r
+#endif\r
+#if defined(USE_COM)\r
+        const Com_ConfigType* ComConfig;\r
+#endif\r
+#if defined(USE_PDUR)\r
+        const PduR_PBConfigType* PduRConfig;\r
+#endif\r
+#if defined(USE_PWM)\r
+        const Pwm_ConfigType* PwmConfig;\r
+#endif\r
+#if defined(USE_DMA)\r
+        const Dma_ConfigType* DmaConfig;\r
+#endif\r
+#if defined(USE_ADC)\r
+    const Adc_ConfigType* AdcConfig;\r
+#endif\r
+#if defined(USE_GPT)\r
+    const Gpt_ConfigType* GptConfig;\r
+#endif\r
+#if defined(USE_FLS)\r
+       const Fls_ConfigType* FlashConfig;\r
+#endif\r
+} EcuM_ConfigType;\r
+\r
+#endif /*_ECUM_GENERATED_TYPES_H_*/\r
diff --git a/examples/blinker_node/config/mpc5516it/Mcu_Cfg.c b/examples/blinker_node/config/mpc5516it/Mcu_Cfg.c
new file mode 100644 (file)
index 0000000..dcb0134
--- /dev/null
@@ -0,0 +1,57 @@
+/*\r
+ * Configuration of module Mcu (Mcu_Cfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC551x\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 12:40:30 CET 2011\r
+ */\r
+\r
+\r
+#ifndef MCU_CFG_C_\r
+#define MCU_CFG_C_\r
+\r
+#include "Mcu.h"\r
+\r
+Mcu_RamSectorSettingConfigType Mcu_RamSectorSettingConfigData[] = {\r
+  {\r
+       .McuRamDefaultValue = 0,\r
+    .McuRamSectionBaseAddress = 0,\r
+       .McuRamSectionSize = 0xFF,\r
+  }\r
+};\r
+\r
+Mcu_ClockSettingConfigType Mcu_ClockSettingConfigData[] =\r
+{\r
+  {\r
+    .McuClockReferencePointFrequency = 8000000UL,\r
+    .Pll1    = 1,\r
+    .Pll2    = 104,\r
+    .Pll3    = 5,\r
+  },\r
+  {\r
+    .McuClockReferencePointFrequency = 16000000UL,\r
+    .Pll1    = 3,\r
+    .Pll2    = 83,\r
+    .Pll3    = 5,\r
+  },\r
+};\r
+\r
+\r
+const Mcu_ConfigType McuConfigData[] = {\r
+  {\r
+       .McuClockSrcFailureNotification = 0,\r
+       .McuRamSectors = 1,\r
+       .McuClockSettings = 2,\r
+       .McuDefaultClockSettings = 0,\r
+       .McuClockSettingConfig = &Mcu_ClockSettingConfigData[0],\r
+       .McuRamSectorSettingConfig = &Mcu_RamSectorSettingConfigData[0],\r
+  }\r
+};\r
+\r
+#endif /*MCU_CFG_C_*/\r
diff --git a/examples/blinker_node/config/mpc5516it/Mcu_Cfg.h b/examples/blinker_node/config/mpc5516it/Mcu_Cfg.h
new file mode 100644 (file)
index 0000000..17cb124
--- /dev/null
@@ -0,0 +1,37 @@
+/*\r
+ * Configuration of module Mcu (Mcu_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC551x\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 12:40:30 CET 2011\r
+ */\r
+\r
+
+#if !(((MCU_SW_MAJOR_VERSION == 2) && (MCU_SW_MINOR_VERSION == 0)) )
+#error "Mcu: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef MCU_CFG_H_\r
+#define MCU_CFG_H_\r
+\r
+\r
+#define MCU_DEV_ERROR_DETECT   STD_ON \r
+#define MCU_PERFORM_RESET_API  STD_ON\r
+#define MCU_VERSION_INFO_API   STD_ON\r
+\r
+typedef enum {\r
+       MCU_CLOCKTYPE_EXT_REF_80MHZ = 0,\r
+       MCU_CLOCKTYPE_EXT_REF_66MHZ = 1,\r
+  MCU_NBR_OF_CLOCKS,\r
+} Mcu_ClockType;\r
+\r
+#define MCU_DEFAULT_CONFIG McuConfigData[0]\r
+\r
+#endif /*MCU_CFG_H_*/\r
index 0ea395ff171507e9d08301fe3f51a76789b183e9..9e4673628dec737425cf29d4b92b68f9dc57c45a 100644 (file)
@@ -1,15 +1,15 @@
 /*\r
  * Configuration of module Os (Os_Cfg.c)\r
  *\r
- * Created by: ArcCore AB\r
- * Configured for (MCU): Undefined MCU\r
+ * Created by: \r
+ * Configured for (MCU): MPC551x\r
  *\r
  * Module vendor: ArcCore\r
  * Module version: 2.0.11\r
  *\r
- * Copyright ArcCore AB 2010\r
+ * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Mon Dec 06 14:04:02 CET 2010\r
+ *           on Wed Jan 26 12:40:30 CET 2011\r
  */\r
 \r
        \r
index 89c6841dcdae02ab711dcc14c7a4f55082b9d1a3..7ae0febd65bf3a97bea1eee307a9c30ac3fdfbcd 100644 (file)
@@ -1,19 +1,19 @@
 /*\r
  * Configuration of module Os (Os_Cfg.h)\r
  *\r
- * Created by: ArcCore AB\r
- * Configured for (MCU): Undefined MCU\r
+ * Created by: \r
+ * Configured for (MCU): MPC551x\r
  *\r
  * Module vendor: ArcCore\r
  * Module version: 2.0.11\r
  *\r
- * Copyright ArcCore AB 2010\r
+ * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Mon Dec 06 14:04:02 CET 2010\r
+ *           on Wed Jan 26 12:40:30 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
diff --git a/examples/blinker_node/config/mpc5516it/Port_Cfg.c b/examples/blinker_node/config/mpc5516it/Port_Cfg.c
new file mode 100644 (file)
index 0000000..68e48d6
--- /dev/null
@@ -0,0 +1,323 @@
+/*\r
+ * Configuration of module Port (Port_Cfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC551x\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 12:40:30 CET 2011\r
+ */\r
+\r
+       \r
+// File generated on Wed Jan 26 12:40:30 CET 2011\r
+// File generated by com.arccore.bswbuilder.modules.port.mpc5516\r
+\r
+#include "Port.h"\r
+#include "Port_Cfg.h"\r
+#include <stdlib.h>\r
+\r
+const uint16_t PortPadConfigData[] = {\r
+       PORT_PCR_RESET,                 /* PCR  0 */\r
+       PORT_PCR_RESET,                 /* PCR  1 */\r
+       PORT_PCR_RESET,                 /* PCR  2 */\r
+       PORT_PCR_RESET,                 /* PCR  3 */\r
+       PORT_PCR_RESET,                 /* PCR  4 */\r
+       PORT_PCR_RESET,                 /* PCR  5 */\r
+       PORT_PCR_RESET,                 /* PCR  6 */\r
+       PORT_PCR_RESET,                 /* PCR  7 */\r
+       PORT_PCR_RESET,                 /* PCR  8 */\r
+       PORT_PCR_RESET,                 /* PCR  9 */\r
+       PORT_PCR_RESET,                 /* PCR  10 */\r
+       PORT_PCR_RESET,                 /* PCR  11 */\r
+       PORT_PCR_RESET,                 /* PCR  12 */\r
+       PORT_PCR_RESET,                 /* PCR  13 */\r
+       PORT_PCR_RESET,                 /* PCR  14 */\r
+       PORT_PCR_RESET,                 /* PCR  15 */\r
+       PORT_PCR_RESET,                 /* PCR  16 */\r
+       PORT_PCR_RESET,                 /* PCR  17 */\r
+       PORT_PCR_RESET,                 /* PCR  18 */\r
+       PORT_PCR_RESET,                 /* PCR  19 */\r
+       PORT_PCR_RESET,                 /* PCR  20 */\r
+       PORT_PCR_RESET,                 /* PCR  21 */\r
+       PORT_PCR_RESET,                 /* PCR  22 */\r
+       PORT_PCR_RESET,                 /* PCR  23 */\r
+       PORT_PCR_RESET,                 /* PCR  24 */\r
+       PORT_PCR_RESET,                 /* PCR  25 */\r
+       PORT_PCR_RESET,                 /* PCR  26 */\r
+       PORT_PCR_RESET,                 /* PCR  27 */\r
+       PORT_PCR_RESET,                 /* PCR  28 */\r
+       PORT_PCR_RESET,                 /* PCR  29 */\r
+       PORT_PCR_RESET,                 /* PCR  30 */\r
+       PORT_PCR_RESET,                 /* PCR  31 */\r
+       PORT_PCR_RESET,                 /* PCR  32 */\r
+       PORT_PCR_RESET,                 /* PCR  33 */\r
+       PORT_PCR_RESET,                 /* PCR  34 */\r
+       PORT_PCR_RESET,                 /* PCR  35 */\r
+       PORT_PCR_RESET,                 /* PCR  36 */\r
+       PORT_PCR_RESET,                 /* PCR  37 */\r
+       PORT_PCR_RESET,                 /* PCR  38 */\r
+       PORT_PCR_RESET,                 /* PCR  39 */\r
+       PORT_PCR_RESET,                 /* PCR  40 */\r
+       PORT_PCR_RESET,                 /* PCR  41 */\r
+       PORT_PCR_RESET,                 /* PCR  42 */\r
+       PORT_PCR_RESET,                 /* PCR  43 */\r
+       PORT_PCR_RESET,                 /* PCR  44 */\r
+       PORT_PCR_RESET,                 /* PCR  45 */\r
+       PORT_PCR_RESET,                 /* PCR  46 */\r
+       PORT_PCR_RESET,                 /* PCR  47 */\r
+       PORT_PCR_RESET,                 /* PCR  48 */\r
+       PORT_PCR_RESET,                 /* PCR  49 */\r
+       PORT_PCR_RESET,                 /* PCR  50 */\r
+       PORT_PCR_RESET,                 /* PCR  51 */\r
+       ( PORT_FUNC0 | PORT_OBE_ENABLE | PORT_SLEW_RATE_MIN | PORT_PULL_NONE ), /* PCR  52 : PORT_PIN_MODE_DIO */\r
+       ( PORT_FUNC0 | PORT_OBE_ENABLE | PORT_SLEW_RATE_MIN | PORT_PULL_NONE ), /* PCR  53 : PORT_PIN_MODE_DIO */\r
+       PORT_PCR_RESET,                 /* PCR  54 */\r
+       PORT_PCR_RESET,                 /* PCR  55 */\r
+       PORT_PCR_RESET,                 /* PCR  56 */\r
+       PORT_PCR_RESET,                 /* PCR  57 */\r
+       PORT_PCR_RESET,                 /* PCR  58 */\r
+       PORT_PCR_RESET,                 /* PCR  59 */\r
+       PORT_PCR_RESET,                 /* PCR  60 */\r
+       PORT_PCR_RESET,                 /* PCR  61 */\r
+       PORT_PCR_RESET,                 /* PCR  62 */\r
+       PORT_PCR_RESET,                 /* PCR  63 */\r
+       PORT_PCR_RESET,                 /* PCR  64 */\r
+       PORT_PCR_RESET,                 /* PCR  65 */\r
+       PORT_PCR_RESET,                 /* PCR  66 */\r
+       PORT_PCR_RESET,                 /* PCR  67 */\r
+       PORT_PCR_RESET,                 /* PCR  68 */\r
+       PORT_PCR_RESET,                 /* PCR  69 */\r
+       PORT_PCR_RESET,                 /* PCR  70 */\r
+       PORT_PCR_RESET,                 /* PCR  71 */\r
+       PORT_PCR_RESET,                 /* PCR  72 */\r
+       PORT_PCR_RESET,                 /* PCR  73 */\r
+       PORT_PCR_RESET,                 /* PCR  74 */\r
+       PORT_PCR_RESET,                 /* PCR  75 */\r
+       PORT_PCR_RESET,                 /* PCR  76 */\r
+       PORT_PCR_RESET,                 /* PCR  77 */\r
+       PORT_PCR_RESET,                 /* PCR  78 */\r
+       PORT_PCR_RESET,                 /* PCR  79 */\r
+       PORT_PCR_RESET,                 /* PCR  80 */\r
+       PORT_PCR_RESET,                 /* PCR  81 */\r
+       PORT_PCR_RESET,                 /* PCR  82 */\r
+       PORT_PCR_RESET,                 /* PCR  83 */\r
+       PORT_PCR_RESET,                 /* PCR  84 */\r
+       PORT_PCR_RESET,                 /* PCR  85 */\r
+       PORT_PCR_RESET,                 /* PCR  86 */\r
+       PORT_PCR_RESET,                 /* PCR  87 */\r
+       PORT_PCR_RESET,                 /* PCR  88 */\r
+       PORT_PCR_RESET,                 /* PCR  89 */\r
+       PORT_PCR_RESET,                 /* PCR  90 */\r
+       PORT_PCR_RESET,                 /* PCR  91 */\r
+       PORT_PCR_RESET,                 /* PCR  92 */\r
+       PORT_PCR_RESET,                 /* PCR  93 */\r
+       PORT_PCR_RESET,                 /* PCR  94 */\r
+       PORT_PCR_RESET,                 /* PCR  95 */\r
+       PORT_PCR_RESET,                 /* PCR  96 */\r
+       PORT_PCR_RESET,                 /* PCR  97 */\r
+       PORT_PCR_RESET,                 /* PCR  98 */\r
+       PORT_PCR_RESET,                 /* PCR  99 */\r
+       PORT_PCR_RESET,                 /* PCR  100 */\r
+       PORT_PCR_RESET,                 /* PCR  101 */\r
+       PORT_PCR_RESET,                 /* PCR  102 */\r
+       PORT_PCR_RESET,                 /* PCR  103 */\r
+       PORT_PCR_RESET,                 /* PCR  104 */\r
+       PORT_PCR_RESET,                 /* PCR  105 */\r
+       PORT_PCR_RESET,                 /* PCR  106 */\r
+       PORT_PCR_RESET,                 /* PCR  107 */\r
+       PORT_PCR_RESET,                 /* PCR  108 */\r
+       PORT_PCR_RESET,                 /* PCR  109 */\r
+       PORT_PCR_RESET,                 /* PCR  110 */\r
+       PORT_PCR_RESET,                 /* PCR  111 */\r
+       PORT_PCR_RESET,                 /* PCR  112 */\r
+       PORT_PCR_RESET,                 /* PCR  113 */\r
+       PORT_PCR_RESET,                 /* PCR  114 */\r
+       PORT_PCR_RESET,                 /* PCR  115 */\r
+       PORT_PCR_RESET,                 /* PCR  116 */\r
+       PORT_PCR_RESET,                 /* PCR  117 */\r
+       PORT_PCR_RESET,                 /* PCR  118 */\r
+       PORT_PCR_RESET,                 /* PCR  119 */\r
+       PORT_PCR_RESET,                 /* PCR  120 */\r
+       PORT_PCR_RESET,                 /* PCR  121 */\r
+       PORT_PCR_RESET,                 /* PCR  122 */\r
+       PORT_PCR_RESET,                 /* PCR  123 */\r
+       PORT_PCR_RESET,                 /* PCR  124 */\r
+       PORT_PCR_RESET,                 /* PCR  125 */\r
+       PORT_PCR_RESET,                 /* PCR  126 */\r
+       PORT_PCR_RESET,                 /* PCR  127 */\r
+       PORT_PCR_RESET,                 /* PCR  128 */\r
+       PORT_PCR_RESET,                 /* PCR  129 */\r
+       PORT_PCR_RESET,                 /* PCR  130 */\r
+       PORT_PCR_RESET,                 /* PCR  131 */\r
+       PORT_PCR_RESET,                 /* PCR  132 */\r
+       PORT_PCR_RESET,                 /* PCR  133 */\r
+       PORT_PCR_RESET,                 /* PCR  134 */\r
+       PORT_PCR_RESET,                 /* PCR  135 */\r
+       PORT_PCR_RESET,                 /* PCR  136 */\r
+       PORT_PCR_RESET,                 /* PCR  137 */\r
+       PORT_PCR_RESET,                 /* PCR  138 */\r
+       PORT_PCR_RESET,                 /* PCR  139 */\r
+       PORT_PCR_RESET,                 /* PCR  140 */\r
+       PORT_PCR_RESET,                 /* PCR  141 */\r
+       PORT_PCR_RESET,                 /* PCR  142 */\r
+       PORT_PCR_RESET,                 /* PCR  143 */\r
+       PORT_PCR_RESET,                 /* PCR  144 */\r
+};\r
+\r
+const uint8_t PortOutConfigData[] = {\r
+       PORT_GPDO_RESET,                        /* GPDO 0 */\r
+       PORT_GPDO_RESET,                        /* GPDO 1 */\r
+       PORT_GPDO_RESET,                        /* GPDO 2 */\r
+       PORT_GPDO_RESET,                        /* GPDO 3 */\r
+       PORT_GPDO_RESET,                        /* GPDO 4 */\r
+       PORT_GPDO_RESET,                        /* GPDO 5 */\r
+       PORT_GPDO_RESET,                        /* GPDO 6 */\r
+       PORT_GPDO_RESET,                        /* GPDO 7 */\r
+       PORT_GPDO_RESET,                        /* GPDO 8 */\r
+       PORT_GPDO_RESET,                        /* GPDO 9 */\r
+       PORT_GPDO_RESET,                        /* GPDO 10 */\r
+       PORT_GPDO_RESET,                        /* GPDO 11 */\r
+       PORT_GPDO_RESET,                        /* GPDO 12 */\r
+       PORT_GPDO_RESET,                        /* GPDO 13 */\r
+       PORT_GPDO_RESET,                        /* GPDO 14 */\r
+       PORT_GPDO_RESET,                        /* GPDO 15 */\r
+       PORT_GPDO_RESET,                        /* GPDO 16 */\r
+       PORT_GPDO_RESET,                        /* GPDO 17 */\r
+       PORT_GPDO_RESET,                        /* GPDO 18 */\r
+       PORT_GPDO_RESET,                        /* GPDO 19 */\r
+       PORT_GPDO_RESET,                        /* GPDO 20 */\r
+       PORT_GPDO_RESET,                        /* GPDO 21 */\r
+       PORT_GPDO_RESET,                        /* GPDO 22 */\r
+       PORT_GPDO_RESET,                        /* GPDO 23 */\r
+       PORT_GPDO_RESET,                        /* GPDO 24 */\r
+       PORT_GPDO_RESET,                        /* GPDO 25 */\r
+       PORT_GPDO_RESET,                        /* GPDO 26 */\r
+       PORT_GPDO_RESET,                        /* GPDO 27 */\r
+       PORT_GPDO_RESET,                        /* GPDO 28 */\r
+       PORT_GPDO_RESET,                        /* GPDO 29 */\r
+       PORT_GPDO_RESET,                        /* GPDO 30 */\r
+       PORT_GPDO_RESET,                        /* GPDO 31 */\r
+       PORT_GPDO_RESET,                        /* GPDO 32 */\r
+       PORT_GPDO_RESET,                        /* GPDO 33 */\r
+       PORT_GPDO_RESET,                        /* GPDO 34 */\r
+       PORT_GPDO_RESET,                        /* GPDO 35 */\r
+       PORT_GPDO_RESET,                        /* GPDO 36 */\r
+       PORT_GPDO_RESET,                        /* GPDO 37 */\r
+       PORT_GPDO_RESET,                        /* GPDO 38 */\r
+       PORT_GPDO_RESET,                        /* GPDO 39 */\r
+       PORT_GPDO_RESET,                        /* GPDO 40 */\r
+       PORT_GPDO_RESET,                        /* GPDO 41 */\r
+       PORT_GPDO_RESET,                        /* GPDO 42 */\r
+       PORT_GPDO_RESET,                        /* GPDO 43 */\r
+       PORT_GPDO_RESET,                        /* GPDO 44 */\r
+       PORT_GPDO_RESET,                        /* GPDO 45 */\r
+       PORT_GPDO_RESET,                        /* GPDO 46 */\r
+       PORT_GPDO_RESET,                        /* GPDO 47 */\r
+       PORT_GPDO_RESET,                        /* GPDO 48 */\r
+       PORT_GPDO_RESET,                        /* GPDO 49 */\r
+       PORT_GPDO_RESET,                        /* GPDO 50 */\r
+       PORT_GPDO_RESET,                        /* GPDO 51 */\r
+       PORT_GPDO_RESET,                /* GPDO 52 */\r
+       PORT_GPDO_RESET,                /* GPDO 53 */\r
+       PORT_GPDO_RESET,                        /* GPDO 54 */\r
+       PORT_GPDO_RESET,                        /* GPDO 55 */\r
+       PORT_GPDO_RESET,                        /* GPDO 56 */\r
+       PORT_GPDO_RESET,                        /* GPDO 57 */\r
+       PORT_GPDO_RESET,                        /* GPDO 58 */\r
+       PORT_GPDO_RESET,                        /* GPDO 59 */\r
+       PORT_GPDO_RESET,                        /* GPDO 60 */\r
+       PORT_GPDO_RESET,                        /* GPDO 61 */\r
+       PORT_GPDO_RESET,                        /* GPDO 62 */\r
+       PORT_GPDO_RESET,                        /* GPDO 63 */\r
+       PORT_GPDO_RESET,                        /* GPDO 64 */\r
+       PORT_GPDO_RESET,                        /* GPDO 65 */\r
+       PORT_GPDO_RESET,                        /* GPDO 66 */\r
+       PORT_GPDO_RESET,                        /* GPDO 67 */\r
+       PORT_GPDO_RESET,                        /* GPDO 68 */\r
+       PORT_GPDO_RESET,                        /* GPDO 69 */\r
+       PORT_GPDO_RESET,                        /* GPDO 70 */\r
+       PORT_GPDO_RESET,                        /* GPDO 71 */\r
+       PORT_GPDO_RESET,                        /* GPDO 72 */\r
+       PORT_GPDO_RESET,                        /* GPDO 73 */\r
+       PORT_GPDO_RESET,                        /* GPDO 74 */\r
+       PORT_GPDO_RESET,                        /* GPDO 75 */\r
+       PORT_GPDO_RESET,                        /* GPDO 76 */\r
+       PORT_GPDO_RESET,                        /* GPDO 77 */\r
+       PORT_GPDO_RESET,                        /* GPDO 78 */\r
+       PORT_GPDO_RESET,                        /* GPDO 79 */\r
+       PORT_GPDO_RESET,                        /* GPDO 80 */\r
+       PORT_GPDO_RESET,                        /* GPDO 81 */\r
+       PORT_GPDO_RESET,                        /* GPDO 82 */\r
+       PORT_GPDO_RESET,                        /* GPDO 83 */\r
+       PORT_GPDO_RESET,                        /* GPDO 84 */\r
+       PORT_GPDO_RESET,                        /* GPDO 85 */\r
+       PORT_GPDO_RESET,                        /* GPDO 86 */\r
+       PORT_GPDO_RESET,                        /* GPDO 87 */\r
+       PORT_GPDO_RESET,                        /* GPDO 88 */\r
+       PORT_GPDO_RESET,                        /* GPDO 89 */\r
+       PORT_GPDO_RESET,                        /* GPDO 90 */\r
+       PORT_GPDO_RESET,                        /* GPDO 91 */\r
+       PORT_GPDO_RESET,                        /* GPDO 92 */\r
+       PORT_GPDO_RESET,                        /* GPDO 93 */\r
+       PORT_GPDO_RESET,                        /* GPDO 94 */\r
+       PORT_GPDO_RESET,                        /* GPDO 95 */\r
+       PORT_GPDO_RESET,                        /* GPDO 96 */\r
+       PORT_GPDO_RESET,                        /* GPDO 97 */\r
+       PORT_GPDO_RESET,                        /* GPDO 98 */\r
+       PORT_GPDO_RESET,                        /* GPDO 99 */\r
+       PORT_GPDO_RESET,                        /* GPDO 100 */\r
+       PORT_GPDO_RESET,                        /* GPDO 101 */\r
+       PORT_GPDO_RESET,                        /* GPDO 102 */\r
+       PORT_GPDO_RESET,                        /* GPDO 103 */\r
+       PORT_GPDO_RESET,                        /* GPDO 104 */\r
+       PORT_GPDO_RESET,                        /* GPDO 105 */\r
+       PORT_GPDO_RESET,                        /* GPDO 106 */\r
+       PORT_GPDO_RESET,                        /* GPDO 107 */\r
+       PORT_GPDO_RESET,                        /* GPDO 108 */\r
+       PORT_GPDO_RESET,                        /* GPDO 109 */\r
+       PORT_GPDO_RESET,                        /* GPDO 110 */\r
+       PORT_GPDO_RESET,                        /* GPDO 111 */\r
+       PORT_GPDO_RESET,                        /* GPDO 112 */\r
+       PORT_GPDO_RESET,                        /* GPDO 113 */\r
+       PORT_GPDO_RESET,                        /* GPDO 114 */\r
+       PORT_GPDO_RESET,                        /* GPDO 115 */\r
+       PORT_GPDO_RESET,                        /* GPDO 116 */\r
+       PORT_GPDO_RESET,                        /* GPDO 117 */\r
+       PORT_GPDO_RESET,                        /* GPDO 118 */\r
+       PORT_GPDO_RESET,                        /* GPDO 119 */\r
+       PORT_GPDO_RESET,                        /* GPDO 120 */\r
+       PORT_GPDO_RESET,                        /* GPDO 121 */\r
+       PORT_GPDO_RESET,                        /* GPDO 122 */\r
+       PORT_GPDO_RESET,                        /* GPDO 123 */\r
+       PORT_GPDO_RESET,                        /* GPDO 124 */\r
+       PORT_GPDO_RESET,                        /* GPDO 125 */\r
+       PORT_GPDO_RESET,                        /* GPDO 126 */\r
+       PORT_GPDO_RESET,                        /* GPDO 127 */\r
+       PORT_GPDO_RESET,                        /* GPDO 128 */\r
+       PORT_GPDO_RESET,                        /* GPDO 129 */\r
+       PORT_GPDO_RESET,                        /* GPDO 130 */\r
+       PORT_GPDO_RESET,                        /* GPDO 131 */\r
+       PORT_GPDO_RESET,                        /* GPDO 132 */\r
+       PORT_GPDO_RESET,                        /* GPDO 133 */\r
+       PORT_GPDO_RESET,                        /* GPDO 134 */\r
+       PORT_GPDO_RESET,                        /* GPDO 135 */\r
+       PORT_GPDO_RESET,                        /* GPDO 136 */\r
+       PORT_GPDO_RESET,                        /* GPDO 137 */\r
+       PORT_GPDO_RESET,                        /* GPDO 138 */\r
+       PORT_GPDO_RESET,                        /* GPDO 139 */\r
+       PORT_GPDO_RESET,                        /* GPDO 140 */\r
+       PORT_GPDO_RESET,                        /* GPDO 141 */\r
+       PORT_GPDO_RESET,                        /* GPDO 142 */\r
+};\r
+\r
+const Port_ConfigType PortConfigData =\r
+{\r
+  .padCnt = sizeof(PortPadConfigData),\r
+  .padConfig = PortPadConfigData,\r
+  .outCnt = sizeof(PortOutConfigData),\r
+  .outConfig = PortOutConfigData,\r
+};\r
diff --git a/examples/blinker_node/config/mpc5516it/Port_Cfg.h b/examples/blinker_node/config/mpc5516it/Port_Cfg.h
new file mode 100644 (file)
index 0000000..734b62a
--- /dev/null
@@ -0,0 +1,93 @@
+/*\r
+ * Configuration of module Port (Port_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC551x\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 12:40:30 CET 2011\r
+ */\r
+\r
+
+#if !(((PORT_SW_MAJOR_VERSION == 1) && (PORT_SW_MINOR_VERSION == 0)) )
+#error "Port: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef PORT_CFG_H_\r
+#define PORT_CFG_H_\r
+\r
+#include "Std_Types.h"\r
+\r
+#define        PORT_VERSION_INFO_API                           STD_ON\r
+#define        PORT_DEV_ERROR_DETECT                           STD_ON\r
+#define PORT_SET_PIN_MODE_API                          STD_ON\r
+#define PORT_SET_PIN_DIRECTION_API             STD_ON\r
+\r
+#define                PORT_BIT0                       (1<<15)\r
+#define                PORT_BIT1                       (1<<14)\r
+#define                PORT_BIT2                       (1<<13)\r
+#define                PORT_BIT3                       (1<<12)\r
+#define                PORT_BIT4                       (1<<11)\r
+#define                PORT_BIT5                       (1<<10)\r
+#define                PORT_BIT6                       (1<<9)\r
+#define                PORT_BIT7                       (1<<8)\r
+#define                PORT_BIT8                       (1<<7)\r
+#define                PORT_BIT9                       (1<<6)\r
+#define                PORT_BIT10                      (1<<5)\r
+#define                PORT_BIT11                      (1<<4)\r
+#define                PORT_BIT12                      (1<<3)\r
+#define                PORT_BIT13                      (1<<2)\r
+#define                PORT_BIT14                      (1<<1)\r
+#define                PORT_BIT15                      (1<<0)\r
+\r
+#define                PORT_WPE_BIT            PORT_BIT14\r
+#define                PORT_WPS_BIT            PORT_BIT15\r
+#define                PORT_SRC0                       PORT_BIT12\r
+#define                PORT_SRC1                       PORT_BIT13\r
+\r
+#define                PORT_PULL_UP            (PORT_WPE_BIT|PORT_WPS_BIT)\r
+#define                PORT_PULL_DOWN          (PORT_WPE_BIT)\r
+#define                PORT_PULL_NONE          0\r
+#define                PORT_SLEW_RATE_MIN      0\r
+#define                PORT_SLEW_RATE_MED      PORT_BIT13\r
+#define                PORT_SLEW_RATE_MAX      (PORT_BIT12|PORT_BIT13)\r
+#define                PORT_HYS_ENABLE         PORT_BIT11\r
+#define                PORT_ODE_ENABLE         PORT_BIT10\r
+#define                PORT_IBE_ENABLE         PORT_BIT7\r
+#define                PORT_OBE_ENABLE         PORT_BIT6\r
+#define                PORT_IO                         (0)\r
+#define                PORT_FUNC0                      (0)\r
+#define                PORT_FUNC1                      (PORT_BIT5)\r
+#define                PORT_FUNC2                      (PORT_BIT4)\r
+#define                PORT_FUNC3                      (PORT_BIT4|PORT_BIT5)\r
+#define                PORT_FUNC4                      (PORT_BIT3)\r
+\r
+#define                PORT_PCR_RESET          (0)\r
+#define                PORT_GPDO_RESET         (0)\r
+\r
+#define                PORT_GPDO_HIGH          (1)\r
+\r
+\r
+typedef uint16 Port_PinType;\r
+\r
+typedef struct\r
+{\r
+       uint16_t padCnt;\r
+       const uint16_t *padConfig;\r
+       uint16_t outCnt;\r
+       const uint8_t *outConfig;\r
+//     uint16_t inCnt;\r
+//     const uint8_t *inConfig;\r
+} Port_ConfigType;\r
+\r
+extern const Port_ConfigType PortConfigData;\r
+\r
+#define PORT_PIN_NAME_PD4              52      \r
+#define PORT_PIN_NAME_PD5              53      \r
+\r
+#endif /* PORT_CFG_H_ */\r
diff --git a/examples/blinker_node/config/mpc5567qrtech/Det_cfg.h b/examples/blinker_node/config/mpc5567qrtech/Det_cfg.h
new file mode 100644 (file)
index 0000000..878befb
--- /dev/null
@@ -0,0 +1,37 @@
+/*\r
+ * Configuration of module Det (Det_cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC5567\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 14:18:05 CET 2011\r
+ */\r
+\r
+
+#if !(((DET_SW_MAJOR_VERSION == 1) && (DET_SW_MINOR_VERSION == 0)) )
+#error "Det: Configuration file version differs from BSW version."
+#endif
+
+/*\r
+ * Development Error Tracer driver\r
+ *\r
+ * Specification: Autosar v2.0.1, Final\r
+ *\r
+ */\r
+#ifndef DET_CFG_H\r
+#define DET_CFG_H \r
+\r
+#define DET_ENABLE_CALLBACKS STD_OFF // Enable to use callback on errors\r
+#define DET_USE_RAMLOG       STD_ON  // Enable to log DET errors to ramlog\r
+#define DET_WRAP_RAMLOG      STD_ON  // The ramlog wraps around when reaching the end\r
+#define DET_USE_STDERR       STD_OFF // Enable to get DET errors on stderr\r
+#define DET_DEINIT_API       STD_OFF // Enable/Disable the Det_DeInit function\r
+#define DET_RAMLOG_SIZE         (16)  // Number of entries in ramlog\r
+#define DET_NUMBER_OF_CALLBACKS (5)  // Number of callbacks\r
+\r
+#endif /* DET_CFG_H */\r
diff --git a/examples/blinker_node/config/mpc5567qrtech/Dio_Cfg.h b/examples/blinker_node/config/mpc5567qrtech/Dio_Cfg.h
new file mode 100644 (file)
index 0000000..17f1362
--- /dev/null
@@ -0,0 +1,55 @@
+/*\r
+ * Configuration of module Dio (Dio_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC5567\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.0\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 14:18:05 CET 2011\r
+ */\r
+\r
+
+#if !(((DIO_SW_MAJOR_VERSION == 1) && (DIO_SW_MINOR_VERSION == 0)) )
+#error "Dio: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef DIO_CFG_H_\r
+#define DIO_CFG_H_\r
+\r
+#define DIO_VERSION_INFO_API    STD_ON\r
+#define DIO_DEV_ERROR_DETECT    STD_ON\r
+\r
+#define DIO_END_OF_LIST  -1\r
+\r
+// Physical ports\r
+typedef enum\r
+{\r
+  DIO_MPC5567_GENERIC_PORT = 0,\r
+} Dio_PortTypesType;\r
+\r
+\r
+// Channels    \r
+#define DIO_CHANNEL_NAME_LED_K2        125\r
+\r
+// Channel group\r
+\r
+// Ports\r
+#define DIO_PORT_NAME_DioPort_1                (DIO_MPC5567_GENERIC_PORT)\r
+\r
+\r
+\r
+\r
+// Pointers for convenience.\r
+// Channels    \r
+extern const Dio_ChannelType DioChannelConfigData[];\r
+// Channel group\r
+extern const Dio_ChannelGroupType DioConfigData[];\r
+// Port\r
+extern const Dio_PortType DioPortConfigData[];\r
+\r
+#endif /*DIO_CFG_H_*/\r
diff --git a/examples/blinker_node/config/mpc5567qrtech/Dio_Lcfg.c b/examples/blinker_node/config/mpc5567qrtech/Dio_Lcfg.c
new file mode 100644 (file)
index 0000000..266968e
--- /dev/null
@@ -0,0 +1,42 @@
+/*\r
+ * Configuration of module Dio (Dio_Lcfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC5567\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.0\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 14:18:05 CET 2011\r
+ */\r
+\r
+\r
+       \r
+#include "Dio.h"\r
+#include "Dio_Cfg.h"\r
+\r
+const Dio_ChannelType DioChannelConfigData[] = { \r
+       DIO_CHANNEL_NAME_LED_K2,\r
+       DIO_END_OF_LIST\r
+};\r
+\r
+const Dio_PortType DioPortConfigData[] = { \r
+       DIO_PORT_NAME_DioPort_1,  \r
+       DIO_END_OF_LIST\r
+};\r
+\r
+const Dio_ChannelGroupType DioConfigData[] = {\r
+       { \r
+         .port = DIO_END_OF_LIST, \r
+         .offset = DIO_END_OF_LIST, \r
+         .mask = DIO_END_OF_LIST, \r
+       }\r
+};\r
+\r
+\r
+uint32 Dio_GetPortConfigSize(void)\r
+{\r
+  return sizeof(DioConfigData);\r
+}\r
diff --git a/examples/blinker_node/config/mpc5567qrtech/EcuM.mk b/examples/blinker_node/config/mpc5567qrtech/EcuM.mk
new file mode 100644 (file)
index 0000000..2c3ffd0
--- /dev/null
@@ -0,0 +1,3 @@
+\r
+MOD_USE += MCU PORT DIO \r
+\r
diff --git a/examples/blinker_node/config/mpc5567qrtech/EcuM_Callout_template.c b/examples/blinker_node/config/mpc5567qrtech/EcuM_Callout_template.c
new file mode 100644 (file)
index 0000000..4e7a70f
--- /dev/null
@@ -0,0 +1,296 @@
+/*\r
+ * Configuration of module EcuM (EcuM_Callout_template.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC5567\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 14:14:21 CET 2011\r
+ */\r
+\r
+\r
+#include "EcuM.h"\r
+#include "EcuM_Cbk.h"\r
+#include "Det.h"\r
+#if defined(USE_DEM)\r
+#include "Dem.h"\r
+#endif\r
+#if defined(USE_MCU)\r
+#include "Mcu.h"\r
+#endif\r
+#if defined(USE_GPT)\r
+#include "Gpt.h"\r
+#endif\r
+#if defined(USE_CAN)\r
+#include "Can.h"\r
+#endif\r
+#if defined(USE_CANIF)\r
+#include "CanIf.h"\r
+#endif\r
+#if defined(USE_PDUR)\r
+#include "PduR.h"\r
+#endif\r
+#if defined(USE_COM)\r
+#include "Com.h"\r
+#endif\r
+#if defined(USE_CANTP)\r
+#include "CanTp.h"\r
+#endif\r
+#if defined(USE_DCM)\r
+#include "Dcm.h"\r
+#endif\r
+#if defined(USE_PWM)\r
+#include "Pwm.h"\r
+#endif\r
+#if defined(USE_IOHWAB)\r
+#include "IoHwAb.h"\r
+#endif\r
+#if defined(USE_FLS)\r
+#include "Fls.h"\r
+#endif\r
+#if defined(USE_EEP)\r
+#include "Eep.h"\r
+#endif\r
+#if defined(USE_FEE)\r
+#include "Fee.h"\r
+#endif\r
+#if defined(USE_EA)\r
+#include "Ea.h"\r
+#endif\r
+#if defined(USE_NVM)\r
+#include "NvM.h"\r
+#endif\r
+#if defined(USE_COMM)\r
+#include "ComM.h"\r
+#endif\r
+#if defined(USE_NM)\r
+#include "Nm.h"\r
+#endif\r
+#if defined(USE_CANNM)\r
+#include "CanNm.h"\r
+#endif\r
+#if defined(USE_CANSM)\r
+#include "CanSM.h"\r
+#endif\r
+#if defined(USE_LINSM)\r
+#include "LinSM.h"\r
+#endif\r
+\r
+void EcuM_AL_DriverInitZero(void)\r
+{\r
+       Det_Init();\r
+    Det_Start();\r
+}\r
+\r
+EcuM_ConfigType* EcuM_DeterminePbConfiguration(void)\r
+{\r
+       return &EcuMConfig;\r
+}\r
+\r
+void EcuM_AL_DriverInitOne(const EcuM_ConfigType *ConfigPtr)\r
+{\r
+  //lint --e{715}       PC-Lint (715) - ConfigPtr usage depends on configuration of modules\r
+\r
+#if defined(USE_MCU)\r
+       Mcu_Init(ConfigPtr->McuConfig);\r
+\r
+       // Set up default clock (Mcu_InitClock requires initRun==1)\r
+       // Ignoring return value\r
+       (void) Mcu_InitClock( ConfigPtr->McuConfig->McuDefaultClockSettings );\r
+\r
+       // Wait for PLL to sync.\r
+       while (Mcu_GetPllStatus() != MCU_PLL_LOCKED)\r
+       {\r
+         ;\r
+       }\r
+#endif\r
+\r
+#if defined(USE_DEM)\r
+       // Preinitialize DEM\r
+       Dem_PreInit();\r
+#endif\r
+\r
+#if defined(USE_PORT)\r
+       // Setup Port\r
+       Port_Init(ConfigPtr->PortConfig);\r
+#endif\r
+\r
+\r
+#if defined(USE_GPT)\r
+       // Setup the GPT\r
+       Gpt_Init(ConfigPtr->GptConfig);\r
+#endif\r
+\r
+       // Setup watchdog\r
+       // TODO\r
+\r
+#if defined(USE_DMA)\r
+       // Setup DMA\r
+       Dma_Init(ConfigPtr->DmaConfig);\r
+#endif\r
+\r
+#if defined(USE_ADC)\r
+       // Setup ADC\r
+       Adc_Init(ConfigPtr->AdcConfig);\r
+#endif\r
+\r
+       // Setup ICU\r
+       // TODO\r
+\r
+       // Setup PWM\r
+#if defined(USE_PWM)\r
+       // Setup PWM\r
+       Pwm_Init(ConfigPtr->PwmConfig);\r
+#endif\r
+}\r
+\r
+void EcuM_AL_DriverInitTwo(const EcuM_ConfigType* ConfigPtr)\r
+{\r
+  //lint --e{715}       PC-Lint (715) - ConfigPtr usage depends on configuration of modules\r
+\r
+#if defined(USE_SPI)\r
+       // Setup SPI\r
+       Spi_Init(ConfigPtr->SpiConfig);\r
+#endif\r
+\r
+#if defined(USE_EEP)\r
+       // Setup EEP\r
+       Eep_Init(ConfigPtr->EEpConfig);\r
+#endif\r
+\r
+#if defined(USE_FLS)\r
+       // Setup Flash\r
+       Fls_Init(ConfigPtr->FlashConfig);\r
+#endif\r
+\r
+#if defined(USE_FEE)\r
+       // Setup FEE\r
+       Fee_Init();\r
+#endif\r
+\r
+#if defined(USE_EA)\r
+       // Setup EA\r
+       Ea_init();\r
+#endif\r
+\r
+#if defined(USE_NVM)\r
+       // Setup NVRAM Manager and start the read all job\r
+       NvM_Init();\r
+       NvM_ReadAll();\r
+#endif\r
+\r
+       // Setup CAN tranceiver\r
+       // TODO\r
+\r
+#if defined(USE_CAN)\r
+       // Setup Can driver\r
+       Can_Init(ConfigPtr->CanConfig);\r
+#endif\r
+\r
+#if defined(USE_CANIF)\r
+       // Setup CanIf\r
+       CanIf_Init(ConfigPtr->CanIfConfig);\r
+#endif\r
+\r
+#if defined(USE_CANTP)\r
+       // Setup CAN TP\r
+       CanTp_Init();\r
+#endif\r
+\r
+#if defined(USE_CANSM)\r
+        CanSM_Init(ConfigPtr->CanSMConfig);\r
+#endif\r
+\r
+       // Setup LIN\r
+       // TODO\r
+\r
+#if defined(USE_PDUR)\r
+       // Setup PDU Router\r
+       PduR_Init(ConfigPtr->PduRConfig);\r
+#endif\r
+\r
+#if defined(USE_CANNM)\r
+        // Setup Can Network Manager\r
+        CanNm_Init(ConfigPtr->CanNmConfig);\r
+#endif\r
+\r
+#if defined(USE_NM)\r
+        // Setup Network Management Interface\r
+        Nm_Init(ConfigPtr->NmConfig);\r
+#endif\r
+\r
+#if defined(USE_COM)\r
+       // Setup COM layer\r
+       Com_Init(ConfigPtr->ComConfig);\r
+#endif\r
+\r
+#if defined(USE_DCM)\r
+       // Setup DCM\r
+       Dcm_Init();\r
+#endif\r
+\r
+#if defined(USE_IOHWAB)\r
+       // Setup IO hardware abstraction layer\r
+       IoHwAb_Init();\r
+#endif\r
+\r
+}\r
+\r
+void EcuM_AL_DriverInitThree(const EcuM_ConfigType* ConfigPtr)\r
+{\r
+  //lint --e{715}       PC-Lint (715) - ConfigPtr usage depends on configuration of modules\r
+\r
+#if defined(USE_DEM)\r
+       // Setup DEM\r
+       Dem_Init();\r
+#endif\r
+\r
+#if defined(USE_COMM)\r
+        // Setup Communication Manager\r
+        ComM_Init(ConfigPtr->ComMConfig);\r
+#endif\r
+}\r
+\r
+void EcuM_OnEnterRUN(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnExitRun(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnExitPostRun(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnPrepShutdown(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnGoSleep(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnGoOffOne(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnGoOffTwo(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_AL_SwitchOff(void)\r
+{\r
+\r
+}\r
diff --git a/examples/blinker_node/config/mpc5567qrtech/EcuM_Cfg.c b/examples/blinker_node/config/mpc5567qrtech/EcuM_Cfg.c
new file mode 100644 (file)
index 0000000..616296e
--- /dev/null
@@ -0,0 +1,73 @@
+/*\r
+ * Configuration of module EcuM (EcuM_Cfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC5567\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 14:14:21 CET 2011\r
+ */\r
+\r
+\r
+\r
+#include "EcuM.h"\r
+\r
+EcuM_ConfigType EcuMConfig =\r
+{\r
+       .EcuMDefaultShutdownTarget = ECUM_STATE_RESET,\r
+       .EcuMDefaultSleepMode = 0, // Don't care\r
+       .EcuMDefaultAppMode = OSDEFAULTAPPMODE,\r
+       .EcuMNvramReadAllTimeout = ECUM_NVRAM_READALL_TIMEOUT,\r
+       .EcuMNvramWriteAllTimeout = ECUM_NVRAM_WRITEALL_TIMEOUT,\r
+       .EcuMRunMinimumDuration = ECUM_NVRAM_MIN_RUN_DURATION,\r
+\r
+#if defined(USE_MCU)\r
+        .McuConfig = McuConfigData,\r
+#endif\r
+#if defined(USE_PORT)\r
+        .PortConfig = &PortConfigData,\r
+#endif\r
+#if defined(USE_CAN)\r
+        .CanConfig = &CanConfigData,\r
+#endif\r
+#if defined(USE_CANIF)\r
+        .CanIfConfig = &CanIf_Config,\r
+#endif\r
+#if defined(USE_CANSM)\r
+        .CanSMConfig = &CanSM_Config,\r
+#endif\r
+#if defined(USE_CANNM)\r
+        .CanNmConfig = &CanNm_Config,\r
+#endif\r
+#if defined(USE_COM)\r
+        .ComConfig = &ComConfiguration,\r
+#endif\r
+#if defined(USE_COMM)\r
+        .ComMConfig = &ComM_Config,\r
+#endif\r
+#if defined(USE_NM)\r
+        .NmConfig = &Nm_Config,\r
+#endif\r
+#if defined(USE_PDUR)\r
+        .PduRConfig = &PduR_Config,\r
+#endif\r
+#if defined(USE_DMA)\r
+        .DmaConfig = DmaConfig,\r
+#endif\r
+#if defined(USE_ADC)\r
+        .AdcConfig = AdcConfig,\r
+#endif\r
+#if defined(USE_PWM)\r
+        .PwmConfig = &PwmConfig,\r
+#endif\r
+#if defined(USE_GPT)\r
+        .GptConfig = GptConfigData,\r
+#endif\r
+#if defined(USE_FLS)\r
+       .FlashConfig = FlsConfigSet,\r
+#endif\r
+};\r
diff --git a/examples/blinker_node/config/mpc5567qrtech/EcuM_Cfg.h b/examples/blinker_node/config/mpc5567qrtech/EcuM_Cfg.h
new file mode 100644 (file)
index 0000000..6909d9e
--- /dev/null
@@ -0,0 +1,43 @@
+/*\r
+ * Configuration of module EcuM (EcuM_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC5567\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 14:18:05 CET 2011\r
+ */\r
+\r
+
+#if !(((ECUM_SW_MAJOR_VERSION == 2) && (ECUM_SW_MINOR_VERSION == 0)) )
+#error "EcuM: Configuration file version differs from BSW version."
+#endif
+
+\r
+\r
+#ifndef ECUM_CFG_H_\r
+#define ECUM_CFG_H_\r
+\r
+#define ECUM_VERSION_INFO_API  STD_ON\r
+#define ECUM_DEV_ERROR_DETECT  STD_ON\r
+\r
+#include "EcuM_Generated_Types.h"\r
+\r
+#define ECUM_MAIN_FUNCTION_PERIOD  (200)\r
+#define ECUM_NVRAM_READALL_TIMEOUT (10000)\r
+#define ECUM_NVRAM_WRITEALL_TIMEOUT (10000)\r
+#define ECUM_NVRAM_MIN_RUN_DURATION (10000)\r
+\r
+// EcuM_UserType definitions\r
+typedef enum {\r
+    ECUM_USER_SYSTEM,   // Dummy user to get at least one user in system\r
+       ECUM_USER_ENDMARK       // Must be the last in list!\r
+} EcuM_UserList;\r
+\r
+extern EcuM_ConfigType EcuMConfig;\r
+\r
+#endif /*ECUM_CFG_H_*/\r
diff --git a/examples/blinker_node/config/mpc5567qrtech/EcuM_Generated_Types.h b/examples/blinker_node/config/mpc5567qrtech/EcuM_Generated_Types.h
new file mode 100644 (file)
index 0000000..5b8b03d
--- /dev/null
@@ -0,0 +1,129 @@
+/*\r
+ * Configuration of module EcuM (EcuM_Generated_Types.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC5567\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 14:14:21 CET 2011\r
+ */\r
+\r
+
+#if !(((ECUM_SW_MAJOR_VERSION == 2) && (ECUM_SW_MINOR_VERSION == 0)) )
+#error "EcuM: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef _ECUM_GENERATED_TYPES_H_\r
+#define _ECUM_GENERATED_TYPES_H_\r
+\r
+#if defined(USE_MCU)\r
+#include "Mcu.h"\r
+#endif\r
+#if defined(USE_PORT)\r
+#include "Port.h"\r
+#endif\r
+#if defined(USE_CAN)\r
+#include "Can.h"\r
+#endif\r
+#if defined(USE_CANIF)\r
+#include "CanIf.h"\r
+#endif\r
+#if defined(USE_PWM)\r
+#include "Pwm.h"\r
+#endif\r
+#if defined(USE_COM)\r
+#include "Com.h"\r
+#endif\r
+#if defined(USE_PDUR)\r
+#include "PduR.h"\r
+#endif\r
+#if defined(USE_DMA)\r
+#include "Dma.h"\r
+#endif\r
+#if defined(USE_ADC)\r
+#include "Adc.h"\r
+#endif\r
+#if defined(USE_GPT)\r
+#include "Gpt.h"\r
+#endif\r
+#if defined(USE_COMM)\r
+#include "ComM.h"\r
+#endif\r
+#if defined(USE_NM)\r
+#include "Nm.h"\r
+#endif\r
+#if defined(USE_CANNM)\r
+#include "CanNm.h"\r
+#endif\r
+#if defined(USE_CANSM)\r
+#include "CanSM.h"\r
+#endif\r
+#if defined(USE_LINSM)\r
+#include "LinSM.h"\r
+#endif\r
+#if defined(USE_FLS)\r
+#include "Fls.h"\r
+#endif\r
+\r
+typedef struct\r
+{\r
+       EcuM_StateType EcuMDefaultShutdownTarget;\r
+       uint8 EcuMDefaultSleepMode;\r
+       AppModeType EcuMDefaultAppMode;\r
+       uint32 EcuMRunMinimumDuration;\r
+       uint32 EcuMNvramReadAllTimeout;\r
+       uint32 EcuMNvramWriteAllTimeout;\r
+\r
+#if defined(USE_MCU)\r
+        const Mcu_ConfigType* McuConfig;\r
+#endif\r
+#if defined(USE_PORT)\r
+        const Port_ConfigType* PortConfig;\r
+#endif\r
+#if defined(USE_CAN)\r
+        const Can_ConfigType* CanConfig;\r
+#endif\r
+#if defined(USE_CANIF)\r
+        const CanIf_ConfigType* CanIfConfig;\r
+#endif\r
+#if defined(USE_CANSM)\r
+        const CanSM_ConfigType* CanSMConfig;\r
+#endif\r
+#if defined(USE_NM)\r
+        const Nm_ConfigType* NmConfig;\r
+#endif\r
+#if defined(USE_CANNM)\r
+        const CanNm_ConfigType* CanNmConfig;\r
+#endif\r
+#if defined(USE_COMM)\r
+        const ComM_ConfigType* ComMConfig;\r
+#endif\r
+#if defined(USE_COM)\r
+        const Com_ConfigType* ComConfig;\r
+#endif\r
+#if defined(USE_PDUR)\r
+        const PduR_PBConfigType* PduRConfig;\r
+#endif\r
+#if defined(USE_PWM)\r
+        const Pwm_ConfigType* PwmConfig;\r
+#endif\r
+#if defined(USE_DMA)\r
+        const Dma_ConfigType* DmaConfig;\r
+#endif\r
+#if defined(USE_ADC)\r
+    const Adc_ConfigType* AdcConfig;\r
+#endif\r
+#if defined(USE_GPT)\r
+    const Gpt_ConfigType* GptConfig;\r
+#endif\r
+#if defined(USE_FLS)\r
+       const Fls_ConfigType* FlashConfig;\r
+#endif\r
+} EcuM_ConfigType;\r
+\r
+#endif /*_ECUM_GENERATED_TYPES_H_*/\r
diff --git a/examples/blinker_node/config/mpc5567qrtech/Mcu_Cfg.c b/examples/blinker_node/config/mpc5567qrtech/Mcu_Cfg.c
new file mode 100644 (file)
index 0000000..4edca0a
--- /dev/null
@@ -0,0 +1,51 @@
+/*\r
+ * Configuration of module Mcu (Mcu_Cfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC5567\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 14:18:05 CET 2011\r
+ */\r
+\r
+\r
+#ifndef MCU_CFG_C_\r
+#define MCU_CFG_C_\r
+\r
+#include "Mcu.h"\r
+\r
+Mcu_RamSectorSettingConfigType Mcu_RamSectorSettingConfigData[] = {\r
+  {\r
+       .McuRamDefaultValue = 0,\r
+    .McuRamSectionBaseAddress = 0,\r
+       .McuRamSectionSize = 0xFF,\r
+  }\r
+};\r
+\r
+Mcu_ClockSettingConfigType Mcu_ClockSettingConfigData[] =\r
+{\r
+  {\r
+    .McuClockReferencePointFrequency = 16000000UL,\r
+    .Pll1    = 2,\r
+    .Pll2    = 11,\r
+    .Pll3    = 0,\r
+  },\r
+};\r
+\r
+\r
+const Mcu_ConfigType McuConfigData[] = {\r
+  {\r
+       .McuClockSrcFailureNotification = 0,\r
+       .McuRamSectors = 1,\r
+       .McuClockSettings = 1,\r
+       .McuDefaultClockSettings = 0,\r
+       .McuClockSettingConfig = &Mcu_ClockSettingConfigData[0],\r
+       .McuRamSectorSettingConfig = &Mcu_RamSectorSettingConfigData[0],\r
+  }\r
+};\r
+\r
+#endif /*MCU_CFG_C_*/\r
diff --git a/examples/blinker_node/config/mpc5567qrtech/Mcu_Cfg.h b/examples/blinker_node/config/mpc5567qrtech/Mcu_Cfg.h
new file mode 100644 (file)
index 0000000..7cd4375
--- /dev/null
@@ -0,0 +1,38 @@
+/*\r
+ * Configuration of module Mcu (Mcu_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC5567\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 14:18:05 CET 2011\r
+ */\r
+\r
+
+#if !(((MCU_SW_MAJOR_VERSION == 2) && (MCU_SW_MINOR_VERSION == 0)) )
+#error "Mcu: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef MCU_CFG_H_\r
+#define MCU_CFG_H_\r
+\r
+#include "mpc55xx.h"\r
+\r
+\r
+#define MCU_DEV_ERROR_DETECT   STD_ON \r
+#define MCU_PERFORM_RESET_API  STD_ON\r
+#define MCU_VERSION_INFO_API   STD_ON\r
+\r
+typedef enum {\r
+       MCU_CLOCKTYPE_EXT_REF_80MHZ = 0,\r
+  MCU_NBR_OF_CLOCKS,\r
+} Mcu_ClockType;\r
+\r
+#define MCU_DEFAULT_CONFIG McuConfigData[0]\r
+\r
+#endif /*MCU_CFG_H_*/\r
index 0ea395ff171507e9d08301fe3f51a76789b183e9..4a89728c81a4a25d42b24d28a02f06228242a7b7 100644 (file)
@@ -1,15 +1,15 @@
 /*\r
  * Configuration of module Os (Os_Cfg.c)\r
  *\r
- * Created by: ArcCore AB\r
- * Configured for (MCU): Undefined MCU\r
+ * Created by: \r
+ * Configured for (MCU): MPC5567\r
  *\r
  * Module vendor: ArcCore\r
  * Module version: 2.0.11\r
  *\r
- * Copyright ArcCore AB 2010\r
+ * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Mon Dec 06 14:04:02 CET 2010\r
+ *           on Wed Jan 26 14:18:05 CET 2011\r
  */\r
 \r
        \r
index 89c6841dcdae02ab711dcc14c7a4f55082b9d1a3..78452e380361dd27af7872c718e85fa78cb0e3c4 100644 (file)
@@ -1,19 +1,19 @@
 /*\r
  * Configuration of module Os (Os_Cfg.h)\r
  *\r
- * Created by: ArcCore AB\r
- * Configured for (MCU): Undefined MCU\r
+ * Created by: \r
+ * Configured for (MCU): MPC5567\r
  *\r
  * Module vendor: ArcCore\r
  * Module version: 2.0.11\r
  *\r
- * Copyright ArcCore AB 2010\r
+ * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Mon Dec 06 14:04:02 CET 2010\r
+ *           on Wed Jan 26 14:18:04 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
diff --git a/examples/blinker_node/config/mpc5567qrtech/Port_Cfg.c b/examples/blinker_node/config/mpc5567qrtech/Port_Cfg.c
new file mode 100644 (file)
index 0000000..5148681
--- /dev/null
@@ -0,0 +1,548 @@
+/*\r
+ * Configuration of module Port (Port_Cfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC5567\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 14:18:05 CET 2011\r
+ */\r
+\r
+       \r
+// File generated on Wed Jan 26 14:18:05 CET 2011\r
+// File generated by com.arccore.bswbuilder.modules.port.mpc5567\r
+\r
+#include "Port.h"\r
+#include "Port_Cfg.h"\r
+#include <stdlib.h>\r
+\r
+const uint16_t PortPadConfigData[] = {\r
+       PORT_PCR_RESET,                 /* PCR  0 */\r
+       PORT_PCR_RESET,                 /* PCR  1 */\r
+       PORT_PCR_RESET,                 /* PCR  2 */\r
+       PORT_PCR_RESET,                 /* PCR  3 */\r
+       PORT_PCR_RESET,                 /* PCR  4 */\r
+       PORT_PCR_RESET,                 /* PCR  5 */\r
+       PORT_PCR_RESET,                 /* PCR  6 */\r
+       PORT_PCR_RESET,                 /* PCR  7 */\r
+       PORT_PCR_RESET,                 /* PCR  8 */\r
+       PORT_PCR_RESET,                 /* PCR  9 */\r
+       PORT_PCR_RESET,                 /* PCR  10 */\r
+       PORT_PCR_RESET,                 /* PCR  11 */\r
+       PORT_PCR_RESET,                 /* PCR  12 */\r
+       PORT_PCR_RESET,                 /* PCR  13 */\r
+       PORT_PCR_RESET,                 /* PCR  14 */\r
+       PORT_PCR_RESET,                 /* PCR  15 */\r
+       PORT_PCR_RESET,                 /* PCR  16 */\r
+       PORT_PCR_RESET,                 /* PCR  17 */\r
+       PORT_PCR_RESET,                 /* PCR  18 */\r
+       PORT_PCR_RESET,                 /* PCR  19 */\r
+       PORT_PCR_RESET,                 /* PCR  20 */\r
+       PORT_PCR_RESET,                 /* PCR  21 */\r
+       PORT_PCR_RESET,                 /* PCR  22 */\r
+       PORT_PCR_RESET,                 /* PCR  23 */\r
+       PORT_PCR_RESET,                 /* PCR  24 */\r
+       PORT_PCR_RESET,                 /* PCR  25 */\r
+       PORT_PCR_RESET,                 /* PCR  26 */\r
+       PORT_PCR_RESET,                 /* PCR  27 */\r
+       PORT_PCR_RESET,                 /* PCR  28 */\r
+       PORT_PCR_RESET,                 /* PCR  29 */\r
+       PORT_PCR_RESET,                 /* PCR  30 */\r
+       PORT_PCR_RESET,                 /* PCR  31 */\r
+       PORT_PCR_RESET,                 /* PCR  32 */\r
+       PORT_PCR_RESET,                 /* PCR  33 */\r
+       PORT_PCR_RESET,                 /* PCR  34 */\r
+       PORT_PCR_RESET,                 /* PCR  35 */\r
+       PORT_PCR_RESET,                 /* PCR  36 */\r
+       PORT_PCR_RESET,                 /* PCR  37 */\r
+       PORT_PCR_RESET,                 /* PCR  38 */\r
+       PORT_PCR_RESET,                 /* PCR  39 */\r
+       PORT_PCR_RESET,                 /* PCR  40 */\r
+       PORT_PCR_RESET,                 /* PCR  41 */\r
+       PORT_PCR_RESET,                 /* PCR  42 */\r
+       PORT_PCR_RESET,                 /* PCR  43 */\r
+       PORT_PCR_RESET,                 /* PCR  44 */\r
+       PORT_PCR_RESET,                 /* PCR  45 */\r
+       PORT_PCR_RESET,                 /* PCR  46 */\r
+       PORT_PCR_RESET,                 /* PCR  47 */\r
+       PORT_PCR_RESET,                 /* PCR  48 */\r
+       PORT_PCR_RESET,                 /* PCR  49 */\r
+       PORT_PCR_RESET,                 /* PCR  50 */\r
+       PORT_PCR_RESET,                 /* PCR  51 */\r
+       PORT_PCR_RESET,                 /* PCR  52 */\r
+       PORT_PCR_RESET,                 /* PCR  53 */\r
+       PORT_PCR_RESET,                 /* PCR  54 */\r
+       PORT_PCR_RESET,                 /* PCR  55 */\r
+       PORT_PCR_RESET,                 /* PCR  56 */\r
+       PORT_PCR_RESET,                 /* PCR  57 */\r
+       PORT_PCR_RESET,                 /* PCR  58 */\r
+       PORT_PCR_RESET,                 /* PCR  59 */\r
+       PORT_PCR_RESET,                 /* PCR  60 */\r
+       PORT_PCR_RESET,                 /* PCR  61 */\r
+       PORT_PCR_RESET,                 /* PCR  62 */\r
+       PORT_PCR_RESET,                 /* PCR  63 */\r
+       PORT_PCR_RESET,                 /* PCR  64 */\r
+       PORT_PCR_RESET,                 /* PCR  65 */\r
+       PORT_PCR_RESET,                 /* PCR  66 */\r
+       PORT_PCR_RESET,                 /* PCR  67 */\r
+       PORT_PCR_RESET,                 /* PCR  68 */\r
+       PORT_PCR_RESET,                 /* PCR  69 */\r
+       PORT_PCR_RESET,                 /* PCR  70 */\r
+       PORT_PCR_RESET,                 /* PCR  71 */\r
+       PORT_PCR_RESET,                 /* PCR  72 */\r
+       PORT_PCR_RESET,                 /* PCR  73 */\r
+       PORT_PCR_RESET,                 /* PCR  74 */\r
+       PORT_PCR_RESET,                 /* PCR  75 */\r
+       PORT_PCR_RESET,                 /* PCR  76 */\r
+       PORT_PCR_RESET,                 /* PCR  77 */\r
+       PORT_PCR_RESET,                 /* PCR  78 */\r
+       PORT_PCR_RESET,                 /* PCR  79 */\r
+       PORT_PCR_RESET,                 /* PCR  80 */\r
+       PORT_PCR_RESET,                 /* PCR  81 */\r
+       PORT_PCR_RESET,                 /* PCR  82 */\r
+       PORT_PCR_RESET,                 /* PCR  83 */\r
+       PORT_PCR_RESET,                 /* PCR  84 */\r
+       PORT_PCR_RESET,                 /* PCR  85 */\r
+       PORT_PCR_RESET,                 /* PCR  86 */\r
+       PORT_PCR_RESET,                 /* PCR  87 */\r
+       PORT_PCR_RESET,                 /* PCR  88 */\r
+       PORT_PCR_RESET,                 /* PCR  89 */\r
+       PORT_PCR_RESET,                 /* PCR  90 */\r
+       PORT_PCR_RESET,                 /* PCR  91 */\r
+       PORT_PCR_RESET,                 /* PCR  92 */\r
+       PORT_PCR_RESET,                 /* PCR  93 */\r
+       PORT_PCR_RESET,                 /* PCR  94 */\r
+       PORT_PCR_RESET,                 /* PCR  95 */\r
+       PORT_PCR_RESET,                 /* PCR  96 */\r
+       PORT_PCR_RESET,                 /* PCR  97 */\r
+       PORT_PCR_RESET,                 /* PCR  98 */\r
+       PORT_PCR_RESET,                 /* PCR  99 */\r
+       PORT_PCR_RESET,                 /* PCR  100 */\r
+       PORT_PCR_RESET,                 /* PCR  101 */\r
+       PORT_PCR_RESET,                 /* PCR  102 */\r
+       PORT_PCR_RESET,                 /* PCR  103 */\r
+       PORT_PCR_RESET,                 /* PCR  104 */\r
+       PORT_PCR_RESET,                 /* PCR  105 */\r
+       PORT_PCR_RESET,                 /* PCR  106 */\r
+       PORT_PCR_RESET,                 /* PCR  107 */\r
+       PORT_PCR_RESET,                 /* PCR  108 */\r
+       PORT_PCR_RESET,                 /* PCR  109 */\r
+       PORT_PCR_RESET,                 /* PCR  110 */\r
+       PORT_PCR_RESET,                 /* PCR  111 */\r
+       PORT_PCR_RESET,                 /* PCR  112 */\r
+       PORT_PCR_RESET,                 /* PCR  113 */\r
+       PORT_PCR_RESET,                 /* PCR  114 */\r
+       PORT_PCR_RESET,                 /* PCR  115 */\r
+       PORT_PCR_RESET,                 /* PCR  116 */\r
+       PORT_PCR_RESET,                 /* PCR  117 */\r
+       PORT_PCR_RESET,                 /* PCR  118 */\r
+       PORT_PCR_RESET,                 /* PCR  119 */\r
+       PORT_PCR_RESET,                 /* PCR  120 */\r
+       PORT_PCR_RESET,                 /* PCR  121 */\r
+       PORT_PCR_RESET,                 /* PCR  122 */\r
+       PORT_PCR_RESET,                 /* PCR  123 */\r
+       PORT_PCR_RESET,                 /* PCR  124 */\r
+       ( PORT_FUNC0 | PORT_OBE_ENABLE | PORT_SLEW_RATE_MIN | PORT_PULL_NONE ), /* PCR  125 : PORT_PIN_MODE_DIO */\r
+       PORT_PCR_RESET,                 /* PCR  126 */\r
+       PORT_PCR_RESET,                 /* PCR  127 */\r
+       PORT_PCR_RESET,                 /* PCR  128 */\r
+       PORT_PCR_RESET,                 /* PCR  129 */\r
+       PORT_PCR_RESET,                 /* PCR  130 */\r
+       PORT_PCR_RESET,                 /* PCR  131 */\r
+       PORT_PCR_RESET,                 /* PCR  132 */\r
+       PORT_PCR_RESET,                 /* PCR  133 */\r
+       PORT_PCR_RESET,                 /* PCR  134 */\r
+       PORT_PCR_RESET,                 /* PCR  135 */\r
+       PORT_PCR_RESET,                 /* PCR  136 */\r
+       PORT_PCR_RESET,                 /* PCR  137 */\r
+       PORT_PCR_RESET,                 /* PCR  138 */\r
+       PORT_PCR_RESET,                 /* PCR  139 */\r
+       PORT_PCR_RESET,                 /* PCR  140 */\r
+       PORT_PCR_RESET,                 /* PCR  141 */\r
+       PORT_PCR_RESET,                 /* PCR  142 */\r
+       PORT_PCR_RESET,                 /* PCR  143 */\r
+       PORT_PCR_RESET,                 /* PCR  144 */\r
+       PORT_PCR_RESET,                 /* PCR  145 */\r
+       PORT_PCR_RESET,                 /* PCR  146 */\r
+       PORT_PCR_RESET,                 /* PCR  147 */\r
+       PORT_PCR_RESET,                 /* PCR  148 */\r
+       PORT_PCR_RESET,                 /* PCR  149 */\r
+       PORT_PCR_RESET,                 /* PCR  150 */\r
+       PORT_PCR_RESET,                 /* PCR  151 */\r
+       PORT_PCR_RESET,                 /* PCR  152 */\r
+       PORT_PCR_RESET,                 /* PCR  153 */\r
+       PORT_PCR_RESET,                 /* PCR  154 */\r
+       PORT_PCR_RESET,                 /* PCR  155 */\r
+       PORT_PCR_RESET,                 /* PCR  156 */\r
+       PORT_PCR_RESET,                 /* PCR  157 */\r
+       PORT_PCR_RESET,                 /* PCR  158 */\r
+       PORT_PCR_RESET,                 /* PCR  159 */\r
+       PORT_PCR_RESET,                 /* PCR  160 */\r
+       PORT_PCR_RESET,                 /* PCR  161 */\r
+       PORT_PCR_RESET,                 /* PCR  162 */\r
+       PORT_PCR_RESET,                 /* PCR  163 */\r
+       PORT_PCR_RESET,                 /* PCR  164 */\r
+       PORT_PCR_RESET,                 /* PCR  165 */\r
+       PORT_PCR_RESET,                 /* PCR  166 */\r
+       PORT_PCR_RESET,                 /* PCR  167 */\r
+       PORT_PCR_RESET,                 /* PCR  168 */\r
+       PORT_PCR_RESET,                 /* PCR  169 */\r
+       PORT_PCR_RESET,                 /* PCR  170 */\r
+       PORT_PCR_RESET,                 /* PCR  171 */\r
+       PORT_PCR_RESET,                 /* PCR  172 */\r
+       PORT_PCR_RESET,                 /* PCR  173 */\r
+       PORT_PCR_RESET,                 /* PCR  174 */\r
+       PORT_PCR_RESET,                 /* PCR  175 */\r
+       PORT_PCR_RESET,                 /* PCR  176 */\r
+       PORT_PCR_RESET,                 /* PCR  177 */\r
+       PORT_PCR_RESET,                 /* PCR  178 */\r
+       PORT_PCR_RESET,                 /* PCR  179 */\r
+       PORT_PCR_RESET,                 /* PCR  180 */\r
+       PORT_PCR_RESET,                 /* PCR  181 */\r
+       PORT_PCR_RESET,                 /* PCR  182 */\r
+       PORT_PCR_RESET,                 /* PCR  183 */\r
+       PORT_PCR_RESET,                 /* PCR  184 */\r
+       PORT_PCR_RESET,                 /* PCR  185 */\r
+       PORT_PCR_RESET,                 /* PCR  186 */\r
+       PORT_PCR_RESET,                 /* PCR  187 */\r
+       PORT_PCR_RESET,                 /* PCR  188 */\r
+       PORT_PCR_RESET,                 /* PCR  189 */\r
+       PORT_PCR_RESET,                 /* PCR  190 */\r
+       PORT_PCR_RESET,                 /* PCR  191 */\r
+       PORT_PCR_RESET,                 /* PCR  192 */\r
+       PORT_PCR_RESET,                 /* PCR  193 */\r
+       PORT_PCR_RESET,                 /* PCR  194 */\r
+       PORT_PCR_RESET,                 /* PCR  195 */\r
+       PORT_PCR_RESET,                 /* PCR  196 */\r
+       PORT_PCR_RESET,                 /* PCR  197 */\r
+       PORT_PCR_RESET,                 /* PCR  198 */\r
+       PORT_PCR_RESET,                 /* PCR  199 */\r
+       PORT_PCR_RESET,                 /* PCR  200 */\r
+       PORT_PCR_RESET,                 /* PCR  201 */\r
+       PORT_PCR_RESET,                 /* PCR  202 */\r
+       PORT_PCR_RESET,                 /* PCR  203 */\r
+       PORT_PCR_RESET,                 /* PCR  204 */\r
+       PORT_PCR_RESET,                 /* PCR  205 */\r
+       PORT_PCR_RESET,                 /* PCR  206 */\r
+       PORT_PCR_RESET,                 /* PCR  207 */\r
+       PORT_PCR_RESET,                 /* PCR  208 */\r
+       PORT_PCR_RESET,                 /* PCR  209 */\r
+       PORT_PCR_RESET,                 /* PCR  210 */\r
+       PORT_PCR_RESET,                 /* PCR  211 */\r
+       PORT_PCR_RESET,                 /* PCR  212 */\r
+       PORT_PCR_RESET,                 /* PCR  213 */\r
+       PORT_PCR_RESET,                 /* PCR  214 */\r
+       PORT_PCR_RESET,                 /* PCR  215 */\r
+       PORT_PCR_RESET,                 /* PCR  216 */\r
+       PORT_PCR_RESET,                 /* PCR  217 */\r
+       PORT_PCR_RESET,                 /* PCR  218 */\r
+       PORT_PCR_RESET,                 /* PCR  219 */\r
+       PORT_PCR_RESET,                 /* PCR  220 */\r
+       PORT_PCR_RESET,                 /* PCR  221 */\r
+       PORT_PCR_RESET,                 /* PCR  222 */\r
+       PORT_PCR_RESET,                 /* PCR  223 */\r
+       PORT_PCR_RESET,                 /* PCR  224 */\r
+       PORT_PCR_RESET,                 /* PCR  225 */\r
+       PORT_PCR_RESET,                 /* PCR  226 */\r
+       PORT_PCR_RESET,                 /* PCR  227 */\r
+       PORT_PCR_RESET,                 /* PCR  228 */\r
+       PORT_PCR_RESET,                 /* PCR  229 */\r
+       PORT_PCR_RESET,                 /* PCR  230 */\r
+       PORT_PCR_RESET,                 /* PCR  231 */\r
+       PORT_PCR_RESET,                 /* PCR  232 */\r
+       PORT_PCR_RESET,                 /* PCR  233 */\r
+       PORT_PCR_RESET,                 /* PCR  234 */\r
+       PORT_PCR_RESET,                 /* PCR  235 */\r
+       PORT_PCR_RESET,                 /* PCR  236 */\r
+       PORT_PCR_RESET,                 /* PCR  237 */\r
+       PORT_PCR_RESET,                 /* PCR  238 */\r
+       PORT_PCR_RESET,                 /* PCR  239 */\r
+       PORT_PCR_RESET,                 /* PCR  240 */\r
+       PORT_PCR_RESET,                 /* PCR  241 */\r
+       PORT_PCR_RESET,                 /* PCR  242 */\r
+       PORT_PCR_RESET,                 /* PCR  243 */\r
+       PORT_PCR_RESET,                 /* PCR  244 */\r
+       PORT_PCR_RESET,                 /* PCR  245 */\r
+       PORT_PCR_RESET,                 /* PCR  246 */\r
+       PORT_PCR_RESET,                 /* PCR  247 */\r
+       PORT_PCR_RESET,                 /* PCR  248 */\r
+       PORT_PCR_RESET,                 /* PCR  249 */\r
+       PORT_PCR_RESET,                 /* PCR  250 */\r
+       PORT_PCR_RESET,                 /* PCR  251 */\r
+       PORT_PCR_RESET,                 /* PCR  252 */\r
+       PORT_PCR_RESET,                 /* PCR  253 */\r
+       PORT_PCR_RESET,                 /* PCR  254 */\r
+       PORT_PCR_RESET,                 /* PCR  255 */\r
+       PORT_PCR_RESET,                 /* PCR  256 */\r
+       PORT_PCR_RESET,                 /* PCR  257 */\r
+       PORT_PCR_RESET,                 /* PCR  258 */\r
+       PORT_PCR_RESET,                 /* PCR  259 */\r
+       PORT_PCR_RESET,                 /* PCR  260 */\r
+       PORT_PCR_RESET,                 /* PCR  261 */\r
+       PORT_PCR_RESET,                 /* PCR  262 */\r
+       PORT_PCR_RESET,                 /* PCR  263 */\r
+       PORT_PCR_RESET,                 /* PCR  264 */\r
+       PORT_PCR_RESET,                 /* PCR  265 */\r
+       PORT_PCR_RESET,                 /* PCR  266 */\r
+       PORT_PCR_RESET,                 /* PCR  267 */\r
+       PORT_PCR_RESET,                 /* PCR  268 */\r
+       PORT_PCR_RESET,                 /* PCR  269 */\r
+       PORT_PCR_RESET,                 /* PCR  270 */\r
+       PORT_PCR_RESET,                 /* PCR  271 */\r
+       PORT_PCR_RESET,                 /* PCR  272 */\r
+       PORT_PCR_RESET,                 /* PCR  273 */\r
+       PORT_PCR_RESET,                 /* PCR  274 */\r
+       PORT_PCR_RESET,                 /* PCR  275 */\r
+       PORT_PCR_RESET,                 /* PCR  276 */\r
+       PORT_PCR_RESET,                 /* PCR  277 */\r
+       PORT_PCR_RESET,                 /* PCR  278 */\r
+       PORT_PCR_RESET,                 /* PCR  279 */\r
+       PORT_PCR_RESET,                 /* PCR  280 */\r
+       PORT_PCR_RESET,                 /* PCR  281 */\r
+       PORT_PCR_RESET,                 /* PCR  282 */\r
+       PORT_PCR_RESET,                 /* PCR  283 */\r
+       PORT_PCR_RESET,                 /* PCR  284 */\r
+       PORT_PCR_RESET,                 /* PCR  285 */\r
+       PORT_PCR_RESET,                 /* PCR  286 */\r
+       PORT_PCR_RESET,                 /* PCR  287 */\r
+       PORT_PCR_RESET,                 /* PCR  288 */\r
+       PORT_PCR_RESET,                 /* PCR  289 */\r
+       PORT_PCR_RESET,                 /* PCR  290 */\r
+       PORT_PCR_RESET,                 /* PCR  291 */\r
+       PORT_PCR_RESET,                 /* PCR  292 */\r
+       PORT_PCR_RESET,                 /* PCR  293 */\r
+       PORT_PCR_RESET,                 /* PCR  294 */\r
+       PORT_PCR_RESET,                 /* PCR  295 */\r
+       PORT_PCR_RESET,                 /* PCR  296 */\r
+       PORT_PCR_RESET,                 /* PCR  297 */\r
+       PORT_PCR_RESET,                 /* PCR  298 */\r
+};\r
+\r
+const uint8_t PortOutConfigData[] = {\r
+       PORT_GPDO_RESET,                        /* GPDO 0 */\r
+       PORT_GPDO_RESET,                        /* GPDO 1 */\r
+       PORT_GPDO_RESET,                        /* GPDO 2 */\r
+       PORT_GPDO_RESET,                        /* GPDO 3 */\r
+       PORT_GPDO_RESET,                        /* GPDO 4 */\r
+       PORT_GPDO_RESET,                        /* GPDO 5 */\r
+       PORT_GPDO_RESET,                        /* GPDO 6 */\r
+       PORT_GPDO_RESET,                        /* GPDO 7 */\r
+       PORT_GPDO_RESET,                        /* GPDO 8 */\r
+       PORT_GPDO_RESET,                        /* GPDO 9 */\r
+       PORT_GPDO_RESET,                        /* GPDO 10 */\r
+       PORT_GPDO_RESET,                        /* GPDO 11 */\r
+       PORT_GPDO_RESET,                        /* GPDO 12 */\r
+       PORT_GPDO_RESET,                        /* GPDO 13 */\r
+       PORT_GPDO_RESET,                        /* GPDO 14 */\r
+       PORT_GPDO_RESET,                        /* GPDO 15 */\r
+       PORT_GPDO_RESET,                        /* GPDO 16 */\r
+       PORT_GPDO_RESET,                        /* GPDO 17 */\r
+       PORT_GPDO_RESET,                        /* GPDO 18 */\r
+       PORT_GPDO_RESET,                        /* GPDO 19 */\r
+       PORT_GPDO_RESET,                        /* GPDO 20 */\r
+       PORT_GPDO_RESET,                        /* GPDO 21 */\r
+       PORT_GPDO_RESET,                        /* GPDO 22 */\r
+       PORT_GPDO_RESET,                        /* GPDO 23 */\r
+       PORT_GPDO_RESET,                        /* GPDO 24 */\r
+       PORT_GPDO_RESET,                        /* GPDO 25 */\r
+       PORT_GPDO_RESET,                        /* GPDO 26 */\r
+       PORT_GPDO_RESET,                        /* GPDO 27 */\r
+       PORT_GPDO_RESET,                        /* GPDO 28 */\r
+       PORT_GPDO_RESET,                        /* GPDO 29 */\r
+       PORT_GPDO_RESET,                        /* GPDO 30 */\r
+       PORT_GPDO_RESET,                        /* GPDO 31 */\r
+       PORT_GPDO_RESET,                        /* GPDO 32 */\r
+       PORT_GPDO_RESET,                        /* GPDO 33 */\r
+       PORT_GPDO_RESET,                        /* GPDO 34 */\r
+       PORT_GPDO_RESET,                        /* GPDO 35 */\r
+       PORT_GPDO_RESET,                        /* GPDO 36 */\r
+       PORT_GPDO_RESET,                        /* GPDO 37 */\r
+       PORT_GPDO_RESET,                        /* GPDO 38 */\r
+       PORT_GPDO_RESET,                        /* GPDO 39 */\r
+       PORT_GPDO_RESET,                        /* GPDO 40 */\r
+       PORT_GPDO_RESET,                        /* GPDO 41 */\r
+       PORT_GPDO_RESET,                        /* GPDO 42 */\r
+       PORT_GPDO_RESET,                        /* GPDO 43 */\r
+       PORT_GPDO_RESET,                        /* GPDO 44 */\r
+       PORT_GPDO_RESET,                        /* GPDO 45 */\r
+       PORT_GPDO_RESET,                        /* GPDO 46 */\r
+       PORT_GPDO_RESET,                        /* GPDO 47 */\r
+       PORT_GPDO_RESET,                        /* GPDO 48 */\r
+       PORT_GPDO_RESET,                        /* GPDO 49 */\r
+       PORT_GPDO_RESET,                        /* GPDO 50 */\r
+       PORT_GPDO_RESET,                        /* GPDO 51 */\r
+       PORT_GPDO_RESET,                        /* GPDO 52 */\r
+       PORT_GPDO_RESET,                        /* GPDO 53 */\r
+       PORT_GPDO_RESET,                        /* GPDO 54 */\r
+       PORT_GPDO_RESET,                        /* GPDO 55 */\r
+       PORT_GPDO_RESET,                        /* GPDO 56 */\r
+       PORT_GPDO_RESET,                        /* GPDO 57 */\r
+       PORT_GPDO_RESET,                        /* GPDO 58 */\r
+       PORT_GPDO_RESET,                        /* GPDO 59 */\r
+       PORT_GPDO_RESET,                        /* GPDO 60 */\r
+       PORT_GPDO_RESET,                        /* GPDO 61 */\r
+       PORT_GPDO_RESET,                        /* GPDO 62 */\r
+       PORT_GPDO_RESET,                        /* GPDO 63 */\r
+       PORT_GPDO_RESET,                        /* GPDO 64 */\r
+       PORT_GPDO_RESET,                        /* GPDO 65 */\r
+       PORT_GPDO_RESET,                        /* GPDO 66 */\r
+       PORT_GPDO_RESET,                        /* GPDO 67 */\r
+       PORT_GPDO_RESET,                        /* GPDO 68 */\r
+       PORT_GPDO_RESET,                        /* GPDO 69 */\r
+       PORT_GPDO_RESET,                        /* GPDO 70 */\r
+       PORT_GPDO_RESET,                        /* GPDO 71 */\r
+       PORT_GPDO_RESET,                        /* GPDO 72 */\r
+       PORT_GPDO_RESET,                        /* GPDO 73 */\r
+       PORT_GPDO_RESET,                        /* GPDO 74 */\r
+       PORT_GPDO_RESET,                        /* GPDO 75 */\r
+       PORT_GPDO_RESET,                        /* GPDO 76 */\r
+       PORT_GPDO_RESET,                        /* GPDO 77 */\r
+       PORT_GPDO_RESET,                        /* GPDO 78 */\r
+       PORT_GPDO_RESET,                        /* GPDO 79 */\r
+       PORT_GPDO_RESET,                        /* GPDO 80 */\r
+       PORT_GPDO_RESET,                        /* GPDO 81 */\r
+       PORT_GPDO_RESET,                        /* GPDO 82 */\r
+       PORT_GPDO_RESET,                        /* GPDO 83 */\r
+       PORT_GPDO_RESET,                        /* GPDO 84 */\r
+       PORT_GPDO_RESET,                        /* GPDO 85 */\r
+       PORT_GPDO_RESET,                        /* GPDO 86 */\r
+       PORT_GPDO_RESET,                        /* GPDO 87 */\r
+       PORT_GPDO_RESET,                        /* GPDO 88 */\r
+       PORT_GPDO_RESET,                        /* GPDO 89 */\r
+       PORT_GPDO_RESET,                        /* GPDO 90 */\r
+       PORT_GPDO_RESET,                        /* GPDO 91 */\r
+       PORT_GPDO_RESET,                        /* GPDO 92 */\r
+       PORT_GPDO_RESET,                        /* GPDO 93 */\r
+       PORT_GPDO_RESET,                        /* GPDO 94 */\r
+       PORT_GPDO_RESET,                        /* GPDO 95 */\r
+       PORT_GPDO_RESET,                        /* GPDO 96 */\r
+       PORT_GPDO_RESET,                        /* GPDO 97 */\r
+       PORT_GPDO_RESET,                        /* GPDO 98 */\r
+       PORT_GPDO_RESET,                        /* GPDO 99 */\r
+       PORT_GPDO_RESET,                        /* GPDO 100 */\r
+       PORT_GPDO_RESET,                        /* GPDO 101 */\r
+       PORT_GPDO_RESET,                        /* GPDO 102 */\r
+       PORT_GPDO_RESET,                        /* GPDO 103 */\r
+       PORT_GPDO_RESET,                        /* GPDO 104 */\r
+       PORT_GPDO_RESET,                        /* GPDO 105 */\r
+       PORT_GPDO_RESET,                        /* GPDO 106 */\r
+       PORT_GPDO_RESET,                        /* GPDO 107 */\r
+       PORT_GPDO_RESET,                        /* GPDO 108 */\r
+       PORT_GPDO_RESET,                        /* GPDO 109 */\r
+       PORT_GPDO_RESET,                        /* GPDO 110 */\r
+       PORT_GPDO_RESET,                        /* GPDO 111 */\r
+       PORT_GPDO_RESET,                        /* GPDO 112 */\r
+       PORT_GPDO_RESET,                        /* GPDO 113 */\r
+       PORT_GPDO_RESET,                        /* GPDO 114 */\r
+       PORT_GPDO_RESET,                        /* GPDO 115 */\r
+       PORT_GPDO_RESET,                        /* GPDO 116 */\r
+       PORT_GPDO_RESET,                        /* GPDO 117 */\r
+       PORT_GPDO_RESET,                        /* GPDO 118 */\r
+       PORT_GPDO_RESET,                        /* GPDO 119 */\r
+       PORT_GPDO_RESET,                        /* GPDO 120 */\r
+       PORT_GPDO_RESET,                        /* GPDO 121 */\r
+       PORT_GPDO_RESET,                        /* GPDO 122 */\r
+       PORT_GPDO_RESET,                        /* GPDO 123 */\r
+       PORT_GPDO_RESET,                        /* GPDO 124 */\r
+       PORT_GPDO_RESET,                /* GPDO 125 */\r
+       PORT_GPDO_RESET,                        /* GPDO 126 */\r
+       PORT_GPDO_RESET,                        /* GPDO 127 */\r
+       PORT_GPDO_RESET,                        /* GPDO 128 */\r
+       PORT_GPDO_RESET,                        /* GPDO 129 */\r
+       PORT_GPDO_RESET,                        /* GPDO 130 */\r
+       PORT_GPDO_RESET,                        /* GPDO 131 */\r
+       PORT_GPDO_RESET,                        /* GPDO 132 */\r
+       PORT_GPDO_RESET,                        /* GPDO 133 */\r
+       PORT_GPDO_RESET,                        /* GPDO 134 */\r
+       PORT_GPDO_RESET,                        /* GPDO 135 */\r
+       PORT_GPDO_RESET,                        /* GPDO 136 */\r
+       PORT_GPDO_RESET,                        /* GPDO 137 */\r
+       PORT_GPDO_RESET,                        /* GPDO 138 */\r
+       PORT_GPDO_RESET,                        /* GPDO 139 */\r
+       PORT_GPDO_RESET,                        /* GPDO 140 */\r
+       PORT_GPDO_RESET,                        /* GPDO 141 */\r
+       PORT_GPDO_RESET,                        /* GPDO 142 */\r
+       PORT_GPDO_RESET,                        /* GPDO 143 */\r
+       PORT_GPDO_RESET,                        /* GPDO 144 */\r
+       PORT_GPDO_RESET,                        /* GPDO 145 */\r
+       PORT_GPDO_RESET,                        /* GPDO 146 */\r
+       PORT_GPDO_RESET,                        /* GPDO 147 */\r
+       PORT_GPDO_RESET,                        /* GPDO 148 */\r
+       PORT_GPDO_RESET,                        /* GPDO 149 */\r
+       PORT_GPDO_RESET,                        /* GPDO 150 */\r
+       PORT_GPDO_RESET,                        /* GPDO 151 */\r
+       PORT_GPDO_RESET,                        /* GPDO 152 */\r
+       PORT_GPDO_RESET,                        /* GPDO 153 */\r
+       PORT_GPDO_RESET,                        /* GPDO 154 */\r
+       PORT_GPDO_RESET,                        /* GPDO 155 */\r
+       PORT_GPDO_RESET,                        /* GPDO 156 */\r
+       PORT_GPDO_RESET,                        /* GPDO 157 */\r
+       PORT_GPDO_RESET,                        /* GPDO 158 */\r
+       PORT_GPDO_RESET,                        /* GPDO 159 */\r
+       PORT_GPDO_RESET,                        /* GPDO 160 */\r
+       PORT_GPDO_RESET,                        /* GPDO 161 */\r
+       PORT_GPDO_RESET,                        /* GPDO 162 */\r
+       PORT_GPDO_RESET,                        /* GPDO 163 */\r
+       PORT_GPDO_RESET,                        /* GPDO 164 */\r
+       PORT_GPDO_RESET,                        /* GPDO 165 */\r
+       PORT_GPDO_RESET,                        /* GPDO 166 */\r
+       PORT_GPDO_RESET,                        /* GPDO 167 */\r
+       PORT_GPDO_RESET,                        /* GPDO 168 */\r
+       PORT_GPDO_RESET,                        /* GPDO 169 */\r
+       PORT_GPDO_RESET,                        /* GPDO 170 */\r
+       PORT_GPDO_RESET,                        /* GPDO 171 */\r
+       PORT_GPDO_RESET,                        /* GPDO 172 */\r
+       PORT_GPDO_RESET,                        /* GPDO 173 */\r
+       PORT_GPDO_RESET,                        /* GPDO 174 */\r
+       PORT_GPDO_RESET,                        /* GPDO 175 */\r
+       PORT_GPDO_RESET,                        /* GPDO 176 */\r
+       PORT_GPDO_RESET,                        /* GPDO 177 */\r
+       PORT_GPDO_RESET,                        /* GPDO 178 */\r
+       PORT_GPDO_RESET,                        /* GPDO 179 */\r
+       PORT_GPDO_RESET,                        /* GPDO 180 */\r
+       PORT_GPDO_RESET,                        /* GPDO 181 */\r
+       PORT_GPDO_RESET,                        /* GPDO 182 */\r
+       PORT_GPDO_RESET,                        /* GPDO 183 */\r
+       PORT_GPDO_RESET,                        /* GPDO 184 */\r
+       PORT_GPDO_RESET,                        /* GPDO 185 */\r
+       PORT_GPDO_RESET,                        /* GPDO 186 */\r
+       PORT_GPDO_RESET,                        /* GPDO 187 */\r
+       PORT_GPDO_RESET,                        /* GPDO 188 */\r
+       PORT_GPDO_RESET,                        /* GPDO 189 */\r
+       PORT_GPDO_RESET,                        /* GPDO 190 */\r
+       PORT_GPDO_RESET,                        /* GPDO 191 */\r
+       PORT_GPDO_RESET,                        /* GPDO 192 */\r
+       PORT_GPDO_RESET,                        /* GPDO 193 */\r
+       PORT_GPDO_RESET,                        /* GPDO 194 */\r
+       PORT_GPDO_RESET,                        /* GPDO 195 */\r
+       PORT_GPDO_RESET,                        /* GPDO 196 */\r
+       PORT_GPDO_RESET,                        /* GPDO 197 */\r
+       PORT_GPDO_RESET,                        /* GPDO 198 */\r
+       PORT_GPDO_RESET,                        /* GPDO 199 */\r
+       PORT_GPDO_RESET,                        /* GPDO 200 */\r
+       PORT_GPDO_RESET,                        /* GPDO 201 */\r
+       PORT_GPDO_RESET,                        /* GPDO 202 */\r
+       PORT_GPDO_RESET,                        /* GPDO 203 */\r
+       PORT_GPDO_RESET,                        /* GPDO 204 */\r
+       PORT_GPDO_RESET,                        /* GPDO 205 */\r
+       PORT_GPDO_RESET,                        /* GPDO 206 */\r
+       PORT_GPDO_RESET,                        /* GPDO 207 */\r
+       PORT_GPDO_RESET,                        /* GPDO 208 */\r
+       PORT_GPDO_RESET,                        /* GPDO 209 */\r
+       PORT_GPDO_RESET,                        /* GPDO 210 */\r
+       PORT_GPDO_RESET,                        /* GPDO 211 */\r
+       PORT_GPDO_RESET,                        /* GPDO 212 */\r
+       PORT_GPDO_RESET,                        /* GPDO 213 */\r
+};\r
+\r
+const Port_ConfigType PortConfigData =\r
+{\r
+  .padCnt = sizeof(PortPadConfigData),\r
+  .padConfig = PortPadConfigData,\r
+  .outCnt = sizeof(PortOutConfigData),\r
+  .outConfig = PortOutConfigData,\r
+};\r
diff --git a/examples/blinker_node/config/mpc5567qrtech/Port_Cfg.h b/examples/blinker_node/config/mpc5567qrtech/Port_Cfg.h
new file mode 100644 (file)
index 0000000..c0cb97d
--- /dev/null
@@ -0,0 +1,92 @@
+/*\r
+ * Configuration of module Port (Port_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): MPC5567\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 14:18:05 CET 2011\r
+ */\r
+\r
+
+#if !(((PORT_SW_MAJOR_VERSION == 1) && (PORT_SW_MINOR_VERSION == 0)) )
+#error "Port: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef PORT_CFG_H_\r
+#define PORT_CFG_H_\r
+\r
+#include "Std_Types.h"\r
+\r
+#define        PORT_VERSION_INFO_API                           STD_ON\r
+#define        PORT_DEV_ERROR_DETECT                           STD_ON\r
+#define PORT_SET_PIN_MODE_API                          STD_ON\r
+#define PORT_SET_PIN_DIRECTION_API             STD_ON\r
+\r
+#define                PORT_BIT0                       (1<<15)\r
+#define                PORT_BIT1                       (1<<14)\r
+#define                PORT_BIT2                       (1<<13)\r
+#define                PORT_BIT3                       (1<<12)\r
+#define                PORT_BIT4                       (1<<11)\r
+#define                PORT_BIT5                       (1<<10)\r
+#define                PORT_BIT6                       (1<<9)\r
+#define                PORT_BIT7                       (1<<8)\r
+#define                PORT_BIT8                       (1<<7)\r
+#define                PORT_BIT9                       (1<<6)\r
+#define                PORT_BIT10                      (1<<5)\r
+#define                PORT_BIT11                      (1<<4)\r
+#define                PORT_BIT12                      (1<<3)\r
+#define                PORT_BIT13                      (1<<2)\r
+#define                PORT_BIT14                      (1<<1)\r
+#define                PORT_BIT15                      (1<<0)\r
+\r
+#define                PORT_WPE_BIT            PORT_BIT14\r
+#define                PORT_WPS_BIT            PORT_BIT15\r
+#define                PORT_SRC0                       PORT_BIT12\r
+#define                PORT_SRC1                       PORT_BIT13\r
+\r
+#define                PORT_PULL_UP            (PORT_WPE_BIT|PORT_WPS_BIT)\r
+#define                PORT_PULL_DOWN          (PORT_WPE_BIT)\r
+#define                PORT_PULL_NONE          0\r
+#define                PORT_SLEW_RATE_MIN      0\r
+#define                PORT_SLEW_RATE_MED      PORT_BIT13\r
+#define                PORT_SLEW_RATE_MAX      (PORT_BIT12|PORT_BIT13)\r
+#define                PORT_HYS_ENABLE         PORT_BIT11\r
+#define                PORT_ODE_ENABLE         PORT_BIT10\r
+#define                PORT_IBE_ENABLE         PORT_BIT7\r
+#define                PORT_OBE_ENABLE         PORT_BIT6\r
+#define                PORT_IO                         (0)\r
+#define                PORT_FUNC0                      (0)\r
+#define                PORT_FUNC1                      (PORT_BIT5)\r
+#define                PORT_FUNC2                      (PORT_BIT4)\r
+#define                PORT_FUNC3                      (PORT_BIT4|PORT_BIT5)\r
+#define                PORT_FUNC4                      (PORT_BIT3)\r
+\r
+#define                PORT_PCR_RESET          (0)\r
+#define                PORT_GPDO_RESET         (0)\r
+\r
+#define                PORT_GPDO_HIGH          (1)\r
+\r
+\r
+typedef uint16 Port_PinType;\r
+\r
+typedef struct\r
+{\r
+       uint16_t padCnt;\r
+       const uint16_t *padConfig;\r
+       uint16_t outCnt;\r
+       const uint8_t *outConfig;\r
+//     uint16_t inCnt;\r
+//     const uint8_t *inConfig;\r
+} Port_ConfigType;\r
+\r
+extern const Port_ConfigType PortConfigData;\r
+\r
+#define PORT_PIN_NAME_GPIO125          125     \r
+\r
+#endif /* PORT_CFG_H_ */\r
diff --git a/examples/blinker_node/config/stm32_mcbstm32/Det_cfg.h b/examples/blinker_node/config/stm32_mcbstm32/Det_cfg.h
new file mode 100644 (file)
index 0000000..0673de4
--- /dev/null
@@ -0,0 +1,37 @@
+/*\r
+ * Configuration of module Det (Det_cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F103\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 12:28:57 CET 2011\r
+ */\r
+\r
+
+#if !(((DET_SW_MAJOR_VERSION == 1) && (DET_SW_MINOR_VERSION == 0)) )
+#error "Det: Configuration file version differs from BSW version."
+#endif
+
+/*\r
+ * Development Error Tracer driver\r
+ *\r
+ * Specification: Autosar v2.0.1, Final\r
+ *\r
+ */\r
+#ifndef DET_CFG_H\r
+#define DET_CFG_H \r
+\r
+#define DET_ENABLE_CALLBACKS STD_OFF // Enable to use callback on errors\r
+#define DET_USE_RAMLOG       STD_ON  // Enable to log DET errors to ramlog\r
+#define DET_WRAP_RAMLOG      STD_ON  // The ramlog wraps around when reaching the end\r
+#define DET_USE_STDERR       STD_OFF // Enable to get DET errors on stderr\r
+#define DET_DEINIT_API       STD_OFF // Enable/Disable the Det_DeInit function\r
+#define DET_RAMLOG_SIZE         (16)  // Number of entries in ramlog\r
+#define DET_NUMBER_OF_CALLBACKS (5)  // Number of callbacks\r
+\r
+#endif /* DET_CFG_H */\r
diff --git a/examples/blinker_node/config/stm32_mcbstm32/Dio_Cfg.h b/examples/blinker_node/config/stm32_mcbstm32/Dio_Cfg.h
new file mode 100644 (file)
index 0000000..b46b88c
--- /dev/null
@@ -0,0 +1,62 @@
+/*\r
+ * Configuration of module Dio (Dio_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F103\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.0\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 12:28:57 CET 2011\r
+ */\r
+\r
+
+#if !(((DIO_SW_MAJOR_VERSION == 1) && (DIO_SW_MINOR_VERSION == 0)) )
+#error "Dio: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef DIO_CFG_H_\r
+#define DIO_CFG_H_\r
+\r
+#define DIO_VERSION_INFO_API    STD_ON\r
+#define DIO_DEV_ERROR_DETECT    STD_ON\r
+\r
+#define DIO_END_OF_LIST  -1\r
+\r
+// Physical ports\r
+typedef enum\r
+{\r
+  A = 0,\r
+  B = 1,\r
+  C = 2,\r
+  D = 3,\r
+  E = 4,\r
+  F = 5,\r
+  G = 6,\r
+} Dio_PortTypesType;\r
+\r
+\r
+// Channels    \r
+#define DIO_CHANNEL_NAME_LED_CHANNEL1  29\r
+#define DIO_CHANNEL_NAME_LED_CHANNEL2  30\r
+\r
+// Channel group\r
+\r
+// Ports\r
+#define DIO_PORT_NAME_LED_PORT                 (B)\r
+\r
+\r
+\r
+\r
+// Pointers for convenience.\r
+// Channels    \r
+extern const Dio_ChannelType DioChannelConfigData[];\r
+// Channel group\r
+extern const Dio_ChannelGroupType DioConfigData[];\r
+// Port\r
+extern const Dio_PortType DioPortConfigData[];\r
+\r
+#endif /*DIO_CFG_H_*/\r
diff --git a/examples/blinker_node/config/stm32_mcbstm32/Dio_Lcfg.c b/examples/blinker_node/config/stm32_mcbstm32/Dio_Lcfg.c
new file mode 100644 (file)
index 0000000..2d2e7c0
--- /dev/null
@@ -0,0 +1,43 @@
+/*\r
+ * Configuration of module Dio (Dio_Lcfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F103\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.0\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 12:28:57 CET 2011\r
+ */\r
+\r
+\r
+       \r
+#include "Dio.h"\r
+#include "Dio_Cfg.h"\r
+\r
+const Dio_ChannelType DioChannelConfigData[] = { \r
+       DIO_CHANNEL_NAME_LED_CHANNEL1,\r
+       DIO_CHANNEL_NAME_LED_CHANNEL2,\r
+       DIO_END_OF_LIST\r
+};\r
+\r
+const Dio_PortType DioPortConfigData[] = { \r
+       DIO_PORT_NAME_LED_PORT,  \r
+       DIO_END_OF_LIST\r
+};\r
+\r
+const Dio_ChannelGroupType DioConfigData[] = {\r
+       { \r
+         .port = DIO_END_OF_LIST, \r
+         .offset = DIO_END_OF_LIST, \r
+         .mask = DIO_END_OF_LIST, \r
+       }\r
+};\r
+\r
+\r
+uint32 Dio_GetPortConfigSize(void)\r
+{\r
+  return sizeof(DioConfigData);\r
+}\r
diff --git a/examples/blinker_node/config/stm32_mcbstm32/EcuM.mk b/examples/blinker_node/config/stm32_mcbstm32/EcuM.mk
new file mode 100644 (file)
index 0000000..9df4331
--- /dev/null
@@ -0,0 +1,3 @@
+\r
+MOD_USE += PORT DIO \r
+\r
diff --git a/examples/blinker_node/config/stm32_mcbstm32/EcuM_Callout_template.c b/examples/blinker_node/config/stm32_mcbstm32/EcuM_Callout_template.c
new file mode 100644 (file)
index 0000000..3573105
--- /dev/null
@@ -0,0 +1,296 @@
+/*\r
+ * Configuration of module EcuM (EcuM_Callout_template.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F103\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Mon Jan 24 13:05:28 CET 2011\r
+ */\r
+\r
+\r
+#include "EcuM.h"\r
+#include "EcuM_Cbk.h"\r
+#include "Det.h"\r
+#if defined(USE_DEM)\r
+#include "Dem.h"\r
+#endif\r
+#if defined(USE_MCU)\r
+#include "Mcu.h"\r
+#endif\r
+#if defined(USE_GPT)\r
+#include "Gpt.h"\r
+#endif\r
+#if defined(USE_CAN)\r
+#include "Can.h"\r
+#endif\r
+#if defined(USE_CANIF)\r
+#include "CanIf.h"\r
+#endif\r
+#if defined(USE_PDUR)\r
+#include "PduR.h"\r
+#endif\r
+#if defined(USE_COM)\r
+#include "Com.h"\r
+#endif\r
+#if defined(USE_CANTP)\r
+#include "CanTp.h"\r
+#endif\r
+#if defined(USE_DCM)\r
+#include "Dcm.h"\r
+#endif\r
+#if defined(USE_PWM)\r
+#include "Pwm.h"\r
+#endif\r
+#if defined(USE_IOHWAB)\r
+#include "IoHwAb.h"\r
+#endif\r
+#if defined(USE_FLS)\r
+#include "Fls.h"\r
+#endif\r
+#if defined(USE_EEP)\r
+#include "Eep.h"\r
+#endif\r
+#if defined(USE_FEE)\r
+#include "Fee.h"\r
+#endif\r
+#if defined(USE_EA)\r
+#include "Ea.h"\r
+#endif\r
+#if defined(USE_NVM)\r
+#include "NvM.h"\r
+#endif\r
+#if defined(USE_COMM)\r
+#include "ComM.h"\r
+#endif\r
+#if defined(USE_NM)\r
+#include "Nm.h"\r
+#endif\r
+#if defined(USE_CANNM)\r
+#include "CanNm.h"\r
+#endif\r
+#if defined(USE_CANSM)\r
+#include "CanSM.h"\r
+#endif\r
+#if defined(USE_LINSM)\r
+#include "LinSM.h"\r
+#endif\r
+\r
+void EcuM_AL_DriverInitZero(void)\r
+{\r
+       Det_Init();\r
+    Det_Start();\r
+}\r
+\r
+EcuM_ConfigType* EcuM_DeterminePbConfiguration(void)\r
+{\r
+       return &EcuMConfig;\r
+}\r
+\r
+void EcuM_AL_DriverInitOne(const EcuM_ConfigType *ConfigPtr)\r
+{\r
+  //lint --e{715}       PC-Lint (715) - ConfigPtr usage depends on configuration of modules\r
+\r
+#if defined(USE_MCU)\r
+       Mcu_Init(ConfigPtr->McuConfig);\r
+\r
+       // Set up default clock (Mcu_InitClock requires initRun==1)\r
+       // Ignoring return value\r
+       (void) Mcu_InitClock( ConfigPtr->McuConfig->McuDefaultClockSettings );\r
+\r
+       // Wait for PLL to sync.\r
+       while (Mcu_GetPllStatus() != MCU_PLL_LOCKED)\r
+       {\r
+         ;\r
+       }\r
+#endif\r
+\r
+#if defined(USE_DEM)\r
+       // Preinitialize DEM\r
+       Dem_PreInit();\r
+#endif\r
+\r
+#if defined(USE_PORT)\r
+       // Setup Port\r
+       Port_Init(ConfigPtr->PortConfig);\r
+#endif\r
+\r
+\r
+#if defined(USE_GPT)\r
+       // Setup the GPT\r
+       Gpt_Init(ConfigPtr->GptConfig);\r
+#endif\r
+\r
+       // Setup watchdog\r
+       // TODO\r
+\r
+#if defined(USE_DMA)\r
+       // Setup DMA\r
+       Dma_Init(ConfigPtr->DmaConfig);\r
+#endif\r
+\r
+#if defined(USE_ADC)\r
+       // Setup ADC\r
+       Adc_Init(ConfigPtr->AdcConfig);\r
+#endif\r
+\r
+       // Setup ICU\r
+       // TODO\r
+\r
+       // Setup PWM\r
+#if defined(USE_PWM)\r
+       // Setup PWM\r
+       Pwm_Init(ConfigPtr->PwmConfig);\r
+#endif\r
+}\r
+\r
+void EcuM_AL_DriverInitTwo(const EcuM_ConfigType* ConfigPtr)\r
+{\r
+  //lint --e{715}       PC-Lint (715) - ConfigPtr usage depends on configuration of modules\r
+\r
+#if defined(USE_SPI)\r
+       // Setup SPI\r
+       Spi_Init(ConfigPtr->SpiConfig);\r
+#endif\r
+\r
+#if defined(USE_EEP)\r
+       // Setup EEP\r
+       Eep_Init(ConfigPtr->EEpConfig);\r
+#endif\r
+\r
+#if defined(USE_FLS)\r
+       // Setup Flash\r
+       Fls_Init(ConfigPtr->FlashConfig);\r
+#endif\r
+\r
+#if defined(USE_FEE)\r
+       // Setup FEE\r
+       Fee_Init();\r
+#endif\r
+\r
+#if defined(USE_EA)\r
+       // Setup EA\r
+       Ea_init();\r
+#endif\r
+\r
+#if defined(USE_NVM)\r
+       // Setup NVRAM Manager and start the read all job\r
+       NvM_Init();\r
+       NvM_ReadAll();\r
+#endif\r
+\r
+       // Setup CAN tranceiver\r
+       // TODO\r
+\r
+#if defined(USE_CAN)\r
+       // Setup Can driver\r
+       Can_Init(ConfigPtr->CanConfig);\r
+#endif\r
+\r
+#if defined(USE_CANIF)\r
+       // Setup CanIf\r
+       CanIf_Init(ConfigPtr->CanIfConfig);\r
+#endif\r
+\r
+#if defined(USE_CANTP)\r
+       // Setup CAN TP\r
+       CanTp_Init();\r
+#endif\r
+\r
+#if defined(USE_CANSM)\r
+        CanSM_Init(ConfigPtr->CanSMConfig);\r
+#endif\r
+\r
+       // Setup LIN\r
+       // TODO\r
+\r
+#if defined(USE_PDUR)\r
+       // Setup PDU Router\r
+       PduR_Init(ConfigPtr->PduRConfig);\r
+#endif\r
+\r
+#if defined(USE_CANNM)\r
+        // Setup Can Network Manager\r
+        CanNm_Init(ConfigPtr->CanNmConfig);\r
+#endif\r
+\r
+#if defined(USE_NM)\r
+        // Setup Network Management Interface\r
+        Nm_Init(ConfigPtr->NmConfig);\r
+#endif\r
+\r
+#if defined(USE_COM)\r
+       // Setup COM layer\r
+       Com_Init(ConfigPtr->ComConfig);\r
+#endif\r
+\r
+#if defined(USE_DCM)\r
+       // Setup DCM\r
+       Dcm_Init();\r
+#endif\r
+\r
+#if defined(USE_IOHWAB)\r
+       // Setup IO hardware abstraction layer\r
+       IoHwAb_Init();\r
+#endif\r
+\r
+}\r
+\r
+void EcuM_AL_DriverInitThree(const EcuM_ConfigType* ConfigPtr)\r
+{\r
+  //lint --e{715}       PC-Lint (715) - ConfigPtr usage depends on configuration of modules\r
+\r
+#if defined(USE_DEM)\r
+       // Setup DEM\r
+       Dem_Init();\r
+#endif\r
+\r
+#if defined(USE_COMM)\r
+        // Setup Communication Manager\r
+        ComM_Init(ConfigPtr->ComMConfig);\r
+#endif\r
+}\r
+\r
+void EcuM_OnEnterRUN(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnExitRun(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnExitPostRun(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnPrepShutdown(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnGoSleep(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnGoOffOne(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnGoOffTwo(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_AL_SwitchOff(void)\r
+{\r
+\r
+}\r
diff --git a/examples/blinker_node/config/stm32_mcbstm32/EcuM_Cfg.c b/examples/blinker_node/config/stm32_mcbstm32/EcuM_Cfg.c
new file mode 100644 (file)
index 0000000..7bdfa4c
--- /dev/null
@@ -0,0 +1,73 @@
+/*\r
+ * Configuration of module EcuM (EcuM_Cfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F103\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Mon Jan 24 13:05:28 CET 2011\r
+ */\r
+\r
+\r
+\r
+#include "EcuM.h"\r
+\r
+EcuM_ConfigType EcuMConfig =\r
+{\r
+       .EcuMDefaultShutdownTarget = ECUM_STATE_RESET,\r
+       .EcuMDefaultSleepMode = 0, // Don't care\r
+       .EcuMDefaultAppMode = OSDEFAULTAPPMODE,\r
+       .EcuMNvramReadAllTimeout = ECUM_NVRAM_READALL_TIMEOUT,\r
+       .EcuMNvramWriteAllTimeout = ECUM_NVRAM_WRITEALL_TIMEOUT,\r
+       .EcuMRunMinimumDuration = ECUM_NVRAM_MIN_RUN_DURATION,\r
+\r
+#if defined(USE_MCU)\r
+        .McuConfig = McuConfigData,\r
+#endif\r
+#if defined(USE_PORT)\r
+        .PortConfig = &PortConfigData,\r
+#endif\r
+#if defined(USE_CAN)\r
+        .CanConfig = &CanConfigData,\r
+#endif\r
+#if defined(USE_CANIF)\r
+        .CanIfConfig = &CanIf_Config,\r
+#endif\r
+#if defined(USE_CANSM)\r
+        .CanSMConfig = &CanSM_Config,\r
+#endif\r
+#if defined(USE_CANNM)\r
+        .CanNmConfig = &CanNm_Config,\r
+#endif\r
+#if defined(USE_COM)\r
+        .ComConfig = &ComConfiguration,\r
+#endif\r
+#if defined(USE_COMM)\r
+        .ComMConfig = &ComM_Config,\r
+#endif\r
+#if defined(USE_NM)\r
+        .NmConfig = &Nm_Config,\r
+#endif\r
+#if defined(USE_PDUR)\r
+        .PduRConfig = &PduR_Config,\r
+#endif\r
+#if defined(USE_DMA)\r
+        .DmaConfig = DmaConfig,\r
+#endif\r
+#if defined(USE_ADC)\r
+        .AdcConfig = AdcConfig,\r
+#endif\r
+#if defined(USE_PWM)\r
+        .PwmConfig = &PwmConfig,\r
+#endif\r
+#if defined(USE_GPT)\r
+        .GptConfig = GptConfigData,\r
+#endif\r
+#if defined(USE_FLS)\r
+       .FlashConfig = FlsConfigSet,\r
+#endif\r
+};\r
diff --git a/examples/blinker_node/config/stm32_mcbstm32/EcuM_Cfg.h b/examples/blinker_node/config/stm32_mcbstm32/EcuM_Cfg.h
new file mode 100644 (file)
index 0000000..2d06e0b
--- /dev/null
@@ -0,0 +1,43 @@
+/*\r
+ * Configuration of module EcuM (EcuM_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F103\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 12:28:57 CET 2011\r
+ */\r
+\r
+
+#if !(((ECUM_SW_MAJOR_VERSION == 2) && (ECUM_SW_MINOR_VERSION == 0)) )
+#error "EcuM: Configuration file version differs from BSW version."
+#endif
+
+\r
+\r
+#ifndef ECUM_CFG_H_\r
+#define ECUM_CFG_H_\r
+\r
+#define ECUM_VERSION_INFO_API  STD_ON\r
+#define ECUM_DEV_ERROR_DETECT  STD_ON\r
+\r
+#include "EcuM_Generated_Types.h"\r
+\r
+#define ECUM_MAIN_FUNCTION_PERIOD  (200)\r
+#define ECUM_NVRAM_READALL_TIMEOUT (10000)\r
+#define ECUM_NVRAM_WRITEALL_TIMEOUT (10000)\r
+#define ECUM_NVRAM_MIN_RUN_DURATION (10000)\r
+\r
+// EcuM_UserType definitions\r
+typedef enum {\r
+    ECUM_USER_SYSTEM,   // Dummy user to get at least one user in system\r
+       ECUM_USER_ENDMARK       // Must be the last in list!\r
+} EcuM_UserList;\r
+\r
+extern EcuM_ConfigType EcuMConfig;\r
+\r
+#endif /*ECUM_CFG_H_*/\r
diff --git a/examples/blinker_node/config/stm32_mcbstm32/EcuM_Generated_Types.h b/examples/blinker_node/config/stm32_mcbstm32/EcuM_Generated_Types.h
new file mode 100644 (file)
index 0000000..39b0913
--- /dev/null
@@ -0,0 +1,129 @@
+/*\r
+ * Configuration of module EcuM (EcuM_Generated_Types.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F103\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Mon Jan 24 13:05:28 CET 2011\r
+ */\r
+\r
+
+#if !(((ECUM_SW_MAJOR_VERSION == 2) && (ECUM_SW_MINOR_VERSION == 0)) )
+#error "EcuM: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef _ECUM_GENERATED_TYPES_H_\r
+#define _ECUM_GENERATED_TYPES_H_\r
+\r
+#if defined(USE_MCU)\r
+#include "Mcu.h"\r
+#endif\r
+#if defined(USE_PORT)\r
+#include "Port.h"\r
+#endif\r
+#if defined(USE_CAN)\r
+#include "Can.h"\r
+#endif\r
+#if defined(USE_CANIF)\r
+#include "CanIf.h"\r
+#endif\r
+#if defined(USE_PWM)\r
+#include "Pwm.h"\r
+#endif\r
+#if defined(USE_COM)\r
+#include "Com.h"\r
+#endif\r
+#if defined(USE_PDUR)\r
+#include "PduR.h"\r
+#endif\r
+#if defined(USE_DMA)\r
+#include "Dma.h"\r
+#endif\r
+#if defined(USE_ADC)\r
+#include "Adc.h"\r
+#endif\r
+#if defined(USE_GPT)\r
+#include "Gpt.h"\r
+#endif\r
+#if defined(USE_COMM)\r
+#include "ComM.h"\r
+#endif\r
+#if defined(USE_NM)\r
+#include "Nm.h"\r
+#endif\r
+#if defined(USE_CANNM)\r
+#include "CanNm.h"\r
+#endif\r
+#if defined(USE_CANSM)\r
+#include "CanSM.h"\r
+#endif\r
+#if defined(USE_LINSM)\r
+#include "LinSM.h"\r
+#endif\r
+#if defined(USE_FLS)\r
+#include "Fls.h"\r
+#endif\r
+\r
+typedef struct\r
+{\r
+       EcuM_StateType EcuMDefaultShutdownTarget;\r
+       uint8 EcuMDefaultSleepMode;\r
+       AppModeType EcuMDefaultAppMode;\r
+       uint32 EcuMRunMinimumDuration;\r
+       uint32 EcuMNvramReadAllTimeout;\r
+       uint32 EcuMNvramWriteAllTimeout;\r
+\r
+#if defined(USE_MCU)\r
+        const Mcu_ConfigType* McuConfig;\r
+#endif\r
+#if defined(USE_PORT)\r
+        const Port_ConfigType* PortConfig;\r
+#endif\r
+#if defined(USE_CAN)\r
+        const Can_ConfigType* CanConfig;\r
+#endif\r
+#if defined(USE_CANIF)\r
+        const CanIf_ConfigType* CanIfConfig;\r
+#endif\r
+#if defined(USE_CANSM)\r
+        const CanSM_ConfigType* CanSMConfig;\r
+#endif\r
+#if defined(USE_NM)\r
+        const Nm_ConfigType* NmConfig;\r
+#endif\r
+#if defined(USE_CANNM)\r
+        const CanNm_ConfigType* CanNmConfig;\r
+#endif\r
+#if defined(USE_COMM)\r
+        const ComM_ConfigType* ComMConfig;\r
+#endif\r
+#if defined(USE_COM)\r
+        const Com_ConfigType* ComConfig;\r
+#endif\r
+#if defined(USE_PDUR)\r
+        const PduR_PBConfigType* PduRConfig;\r
+#endif\r
+#if defined(USE_PWM)\r
+        const Pwm_ConfigType* PwmConfig;\r
+#endif\r
+#if defined(USE_DMA)\r
+        const Dma_ConfigType* DmaConfig;\r
+#endif\r
+#if defined(USE_ADC)\r
+    const Adc_ConfigType* AdcConfig;\r
+#endif\r
+#if defined(USE_GPT)\r
+    const Gpt_ConfigType* GptConfig;\r
+#endif\r
+#if defined(USE_FLS)\r
+       const Fls_ConfigType* FlashConfig;\r
+#endif\r
+} EcuM_ConfigType;\r
+\r
+#endif /*_ECUM_GENERATED_TYPES_H_*/\r
diff --git a/examples/blinker_node/config/stm32_mcbstm32/Mcu_Cfg.c b/examples/blinker_node/config/stm32_mcbstm32/Mcu_Cfg.c
new file mode 100644 (file)
index 0000000..3d9c0f4
--- /dev/null
@@ -0,0 +1,57 @@
+/*\r
+ * Configuration of module Mcu (Mcu_Cfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F103\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 14:22:38 CET 2011\r
+ */\r
+\r
+\r
+#ifndef MCU_CFG_C_\r
+#define MCU_CFG_C_\r
+\r
+#include "Mcu.h"\r
+\r
+Mcu_RamSectorSettingConfigType Mcu_RamSectorSettingConfigData[] = {\r
+  {\r
+       .McuRamDefaultValue = 0,\r
+    .McuRamSectionBaseAddress = 0,\r
+       .McuRamSectionSize = 0xFF,\r
+  }\r
+};\r
+\r
+Mcu_ClockSettingConfigType Mcu_ClockSettingConfigData[] =\r
+{\r
+  {\r
+    .McuClockReferencePointFrequency = 8000000UL,\r
+    .Pll1    = 9,\r
+    .Pll2    = 0,\r
+    .Pll3    = 0,\r
+  },\r
+};\r
+\r
+const Mcu_PerClockConfigType McuPerClockConfigData =\r
+{ \r
+       .AHBClocksEnable = RCC_AHBPeriph_DMA1,\r
+       .APB1ClocksEnable = RCC_APB1Periph_TIM2 | RCC_APB1Periph_CAN1,\r
+       .APB2ClocksEnable = RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO\r
+};\r
+\r
+const Mcu_ConfigType McuConfigData[] = {\r
+  {\r
+       .McuClockSrcFailureNotification = 0,\r
+       .McuRamSectors = 1,\r
+       .McuClockSettings = 1,\r
+       .McuDefaultClockSettings = 0,\r
+       .McuClockSettingConfig = &Mcu_ClockSettingConfigData[0],\r
+       .McuRamSectorSettingConfig = &Mcu_RamSectorSettingConfigData[0],\r
+  }\r
+};\r
+\r
+#endif /*MCU_CFG_C_*/\r
diff --git a/examples/blinker_node/config/stm32_mcbstm32/Mcu_Cfg.h b/examples/blinker_node/config/stm32_mcbstm32/Mcu_Cfg.h
new file mode 100644 (file)
index 0000000..5402644
--- /dev/null
@@ -0,0 +1,38 @@
+/*\r
+ * Configuration of module Mcu (Mcu_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F103\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 14:22:38 CET 2011\r
+ */\r
+\r
+
+#if !(((MCU_SW_MAJOR_VERSION == 2) && (MCU_SW_MINOR_VERSION == 0)) )
+#error "Mcu: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef MCU_CFG_H_\r
+#define MCU_CFG_H_\r
+\r
+#include "Std_Types.h"\r
+#include "Mcu_ConfigTypes.h"\r
+\r
+#define MCU_DEV_ERROR_DETECT   STD_ON \r
+#define MCU_PERFORM_RESET_API  STD_ON\r
+#define MCU_VERSION_INFO_API   STD_ON\r
+\r
+typedef enum {\r
+       MCU_CLOCKTYPE_EXT_REF_8MHZ = 0,\r
+  MCU_NBR_OF_CLOCKS,\r
+} Mcu_ClockType;\r
+\r
+#define MCU_DEFAULT_CONFIG McuConfigData[0]\r
+\r
+#endif /*MCU_CFG_H_*/\r
index c482afac988ccae74f08bdec9d120c65788ecb19..dc304af76c5e83533ab20fea41242936e4799dd2 100644 (file)
@@ -2,14 +2,14 @@
  * Configuration of module Os (Os_Cfg.c)\r
  *\r
  * Created by: \r
- * Configured for (MCU): Cortex M3\r
+ * Configured for (MCU): STM32_F103\r
  *\r
  * Module vendor: ArcCore\r
  * Module version: 2.0.11\r
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Thu Dec 02 16:54:35 CET 2010\r
+ *           on Wed Jan 26 12:28:57 CET 2011\r
  */\r
 \r
        \r
index b9b96aea26f176329728318e1b04bf08dabf006b..3dcea47eac0fc15f34836d25898d8101ce74efc7 100644 (file)
@@ -2,18 +2,18 @@
  * Configuration of module Os (Os_Cfg.h)\r
  *\r
  * Created by: \r
- * Configured for (MCU): Cortex M3\r
+ * Configured for (MCU): STM32_F103\r
  *\r
  * Module vendor: ArcCore\r
  * Module version: 2.0.11\r
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Thu Dec 02 16:54:35 CET 2010\r
+ *           on Wed Jan 26 12:28:57 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
diff --git a/examples/blinker_node/config/stm32_mcbstm32/Port_Cfg.c b/examples/blinker_node/config/stm32_mcbstm32/Port_Cfg.c
new file mode 100644 (file)
index 0000000..153693b
--- /dev/null
@@ -0,0 +1,293 @@
+/*\r
+ * Configuration of module Port (Port_Cfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F103\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 12:28:57 CET 2011\r
+ */\r
+\r
+       \r
+#include "stm32f10x_gpio.h"\r
+#include "port.h"\r
+\r
+const uint32 remaps[] = {\r
+       GPIO_Remap1_CAN1,\r
+       GPIO_PartialRemap2_TIM2,\r
+};\r
+\r
+const GpioPinCnfMode_Type GPIOConf[] =\r
+{\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = 0,         \r
+       .GpioPinCnfMode_14 = 0,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = GPIO_OUTPUT_10MHz_MODE | GPIO_OUTPUT_PUSHPULL_CNF,         \r
+       .GpioPinCnfMode_14 = GPIO_OUTPUT_10MHz_MODE | GPIO_OUTPUT_PUSHPULL_CNF,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = 0,         \r
+       .GpioPinCnfMode_14 = 0,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = 0,         \r
+       .GpioPinCnfMode_14 = 0,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = 0,         \r
+       .GpioPinCnfMode_14 = 0,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = 0,         \r
+       .GpioPinCnfMode_14 = 0,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = 0,         \r
+       .GpioPinCnfMode_14 = 0,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+};\r
+\r
+\r
+const GpioPinOutLevel_Type GPIOOutConf[] =\r
+{\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = 0,        \r
+       .GpioPinOutLevel_14 = 0,        \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = GPIO_OUTPUT_HIGH,         \r
+       .GpioPinOutLevel_14 = GPIO_OUTPUT_HIGH,         \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = 0,        \r
+       .GpioPinOutLevel_14 = 0,        \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = 0,        \r
+       .GpioPinOutLevel_14 = 0,        \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = 0,        \r
+       .GpioPinOutLevel_14 = 0,        \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = 0,        \r
+       .GpioPinOutLevel_14 = 0,        \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = 0,        \r
+       .GpioPinOutLevel_14 = 0,        \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+};\r
+\r
+const Port_ConfigType PortConfigData =\r
+{\r
+       .padCnt = 7,\r
+       .padConfig = GPIOConf,\r
+       .outConfig = GPIOOutConf,\r
+\r
+    .remapCount = sizeof(remaps) / sizeof(uint32),\r
+    .remaps = &remaps[0]\r
+};\r
diff --git a/examples/blinker_node/config/stm32_mcbstm32/Port_Cfg.h b/examples/blinker_node/config/stm32_mcbstm32/Port_Cfg.h
new file mode 100644 (file)
index 0000000..7d0d661
--- /dev/null
@@ -0,0 +1,34 @@
+/*\r
+ * Configuration of module Port (Port_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F103\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Wed Jan 26 12:28:57 CET 2011\r
+ */\r
+\r
+
+#if !(((PORT_SW_MAJOR_VERSION == 1) && (PORT_SW_MINOR_VERSION == 0)) )
+#error "Port: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef PORT_CFG_H_\r
+#define PORT_CFG_H_\r
+\r
+#include "Std_Types.h"\r
+#include "Port_ConfigTypes.h"\r
+\r
+#define        PORT_VERSION_INFO_API                           STD_ON\r
+#define        PORT_DEV_ERROR_DETECT                           STD_ON\r
+#define PORT_SET_PIN_DIRECTION_API             STD_OFF\r
+\r
+/** Instance of the top level configuration container */\r
+extern const Port_ConfigType PortConfigData;\r
+\r
+#endif /* PORT_CFG_H_ */\r
diff --git a/examples/blinker_node/config/stm32_stm3210c/Det_cfg.h b/examples/blinker_node/config/stm32_stm3210c/Det_cfg.h
new file mode 100644 (file)
index 0000000..4ba2eba
--- /dev/null
@@ -0,0 +1,37 @@
+/*\r
+ * Configuration of module Det (Det_cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F107\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Jan 21 11:32:26 CET 2011\r
+ */\r
+\r
+
+#if !(((DET_SW_MAJOR_VERSION == 1) && (DET_SW_MINOR_VERSION == 0)) )
+#error "Det: Configuration file version differs from BSW version."
+#endif
+
+/*\r
+ * Development Error Tracer driver\r
+ *\r
+ * Specification: Autosar v2.0.1, Final\r
+ *\r
+ */\r
+#ifndef DET_CFG_H\r
+#define DET_CFG_H \r
+\r
+#define DET_ENABLE_CALLBACKS STD_OFF // Enable to use callback on errors\r
+#define DET_USE_RAMLOG       STD_ON  // Enable to log DET errors to ramlog\r
+#define DET_WRAP_RAMLOG      STD_ON  // The ramlog wraps around when reaching the end\r
+#define DET_USE_STDERR       STD_OFF // Enable to get DET errors on stderr\r
+#define DET_DEINIT_API       STD_OFF // Enable/Disable the Det_DeInit function\r
+#define DET_RAMLOG_SIZE         (16)  // Number of entries in ramlog\r
+#define DET_NUMBER_OF_CALLBACKS (5)  // Number of callbacks\r
+\r
+#endif /* DET_CFG_H */\r
diff --git a/examples/blinker_node/config/stm32_stm3210c/Dio_Cfg.h b/examples/blinker_node/config/stm32_stm3210c/Dio_Cfg.h
new file mode 100644 (file)
index 0000000..3e4a7f5
--- /dev/null
@@ -0,0 +1,64 @@
+/*\r
+ * Configuration of module Dio (Dio_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F107\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.0\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Jan 21 11:32:26 CET 2011\r
+ */\r
+\r
+
+#if !(((DIO_SW_MAJOR_VERSION == 1) && (DIO_SW_MINOR_VERSION == 0)) )
+#error "Dio: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef DIO_CFG_H_\r
+#define DIO_CFG_H_\r
+\r
+#define DIO_VERSION_INFO_API    STD_ON\r
+#define DIO_DEV_ERROR_DETECT    STD_ON\r
+\r
+#define DIO_END_OF_LIST  -1\r
+\r
+// Physical ports\r
+typedef enum\r
+{\r
+  A = 0,\r
+  B = 1,\r
+  C = 2,\r
+  D = 3,\r
+  E = 4,\r
+  F = 5,\r
+  G = 6,\r
+} Dio_PortTypesType;\r
+\r
+\r
+// Channels    \r
+#define DIO_CHANNEL_NAME_LED_CHANNEL1  55\r
+#define DIO_CHANNEL_NAME_LED_CHANNEL2  61\r
+#define DIO_CHANNEL_NAME_LED_CHANNEL3  51\r
+#define DIO_CHANNEL_NAME_LED_CHANNEL4  52\r
+\r
+// Channel group\r
+\r
+// Ports\r
+#define DIO_PORT_NAME_LED_PORT                 (D)\r
+\r
+\r
+\r
+\r
+// Pointers for convenience.\r
+// Channels    \r
+extern const Dio_ChannelType DioChannelConfigData[];\r
+// Channel group\r
+extern const Dio_ChannelGroupType DioConfigData[];\r
+// Port\r
+extern const Dio_PortType DioPortConfigData[];\r
+\r
+#endif /*DIO_CFG_H_*/\r
diff --git a/examples/blinker_node/config/stm32_stm3210c/Dio_Lcfg.c b/examples/blinker_node/config/stm32_stm3210c/Dio_Lcfg.c
new file mode 100644 (file)
index 0000000..b5a7999
--- /dev/null
@@ -0,0 +1,45 @@
+/*\r
+ * Configuration of module Dio (Dio_Lcfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F107\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.0\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Jan 21 11:32:26 CET 2011\r
+ */\r
+\r
+\r
+       \r
+#include "Dio.h"\r
+#include "Dio_Cfg.h"\r
+\r
+const Dio_ChannelType DioChannelConfigData[] = { \r
+       DIO_CHANNEL_NAME_LED_CHANNEL1,\r
+       DIO_CHANNEL_NAME_LED_CHANNEL2,\r
+       DIO_CHANNEL_NAME_LED_CHANNEL3,\r
+       DIO_CHANNEL_NAME_LED_CHANNEL4,\r
+       DIO_END_OF_LIST\r
+};\r
+\r
+const Dio_PortType DioPortConfigData[] = { \r
+       DIO_PORT_NAME_LED_PORT,  \r
+       DIO_END_OF_LIST\r
+};\r
+\r
+const Dio_ChannelGroupType DioConfigData[] = {\r
+       { \r
+         .port = DIO_END_OF_LIST, \r
+         .offset = DIO_END_OF_LIST, \r
+         .mask = DIO_END_OF_LIST, \r
+       }\r
+};\r
+\r
+\r
+uint32 Dio_GetPortConfigSize(void)\r
+{\r
+  return sizeof(DioConfigData);\r
+}\r
diff --git a/examples/blinker_node/config/stm32_stm3210c/EcuM.mk b/examples/blinker_node/config/stm32_stm3210c/EcuM.mk
new file mode 100644 (file)
index 0000000..ed5cc36
--- /dev/null
@@ -0,0 +1,3 @@
+\r
+MOD_USE += DIO PORT MCU \r
+\r
diff --git a/examples/blinker_node/config/stm32_stm3210c/EcuM_Callout_template.c b/examples/blinker_node/config/stm32_stm3210c/EcuM_Callout_template.c
new file mode 100644 (file)
index 0000000..b84d3a5
--- /dev/null
@@ -0,0 +1,296 @@
+/*\r
+ * Configuration of module EcuM (EcuM_Callout_template.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F107\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Jan 21 11:28:13 CET 2011\r
+ */\r
+\r
+\r
+#include "EcuM.h"\r
+#include "EcuM_Cbk.h"\r
+#include "Det.h"\r
+#if defined(USE_DEM)\r
+#include "Dem.h"\r
+#endif\r
+#if defined(USE_MCU)\r
+#include "Mcu.h"\r
+#endif\r
+#if defined(USE_GPT)\r
+#include "Gpt.h"\r
+#endif\r
+#if defined(USE_CAN)\r
+#include "Can.h"\r
+#endif\r
+#if defined(USE_CANIF)\r
+#include "CanIf.h"\r
+#endif\r
+#if defined(USE_PDUR)\r
+#include "PduR.h"\r
+#endif\r
+#if defined(USE_COM)\r
+#include "Com.h"\r
+#endif\r
+#if defined(USE_CANTP)\r
+#include "CanTp.h"\r
+#endif\r
+#if defined(USE_DCM)\r
+#include "Dcm.h"\r
+#endif\r
+#if defined(USE_PWM)\r
+#include "Pwm.h"\r
+#endif\r
+#if defined(USE_IOHWAB)\r
+#include "IoHwAb.h"\r
+#endif\r
+#if defined(USE_FLS)\r
+#include "Fls.h"\r
+#endif\r
+#if defined(USE_EEP)\r
+#include "Eep.h"\r
+#endif\r
+#if defined(USE_FEE)\r
+#include "Fee.h"\r
+#endif\r
+#if defined(USE_EA)\r
+#include "Ea.h"\r
+#endif\r
+#if defined(USE_NVM)\r
+#include "NvM.h"\r
+#endif\r
+#if defined(USE_COMM)\r
+#include "ComM.h"\r
+#endif\r
+#if defined(USE_NM)\r
+#include "Nm.h"\r
+#endif\r
+#if defined(USE_CANNM)\r
+#include "CanNm.h"\r
+#endif\r
+#if defined(USE_CANSM)\r
+#include "CanSM.h"\r
+#endif\r
+#if defined(USE_LINSM)\r
+#include "LinSM.h"\r
+#endif\r
+\r
+void EcuM_AL_DriverInitZero(void)\r
+{\r
+       Det_Init();\r
+    Det_Start();\r
+}\r
+\r
+EcuM_ConfigType* EcuM_DeterminePbConfiguration(void)\r
+{\r
+       return &EcuMConfig;\r
+}\r
+\r
+void EcuM_AL_DriverInitOne(const EcuM_ConfigType *ConfigPtr)\r
+{\r
+  //lint --e{715}       PC-Lint (715) - ConfigPtr usage depends on configuration of modules\r
+\r
+#if defined(USE_MCU)\r
+       Mcu_Init(ConfigPtr->McuConfig);\r
+\r
+       // Set up default clock (Mcu_InitClock requires initRun==1)\r
+       // Ignoring return value\r
+       (void) Mcu_InitClock( ConfigPtr->McuConfig->McuDefaultClockSettings );\r
+\r
+       // Wait for PLL to sync.\r
+       while (Mcu_GetPllStatus() != MCU_PLL_LOCKED)\r
+       {\r
+         ;\r
+       }\r
+#endif\r
+\r
+#if defined(USE_DEM)\r
+       // Preinitialize DEM\r
+       Dem_PreInit();\r
+#endif\r
+\r
+#if defined(USE_PORT)\r
+       // Setup Port\r
+       Port_Init(ConfigPtr->PortConfig);\r
+#endif\r
+\r
+\r
+#if defined(USE_GPT)\r
+       // Setup the GPT\r
+       Gpt_Init(ConfigPtr->GptConfig);\r
+#endif\r
+\r
+       // Setup watchdog\r
+       // TODO\r
+\r
+#if defined(USE_DMA)\r
+       // Setup DMA\r
+       Dma_Init(ConfigPtr->DmaConfig);\r
+#endif\r
+\r
+#if defined(USE_ADC)\r
+       // Setup ADC\r
+       Adc_Init(ConfigPtr->AdcConfig);\r
+#endif\r
+\r
+       // Setup ICU\r
+       // TODO\r
+\r
+       // Setup PWM\r
+#if defined(USE_PWM)\r
+       // Setup PWM\r
+       Pwm_Init(ConfigPtr->PwmConfig);\r
+#endif\r
+}\r
+\r
+void EcuM_AL_DriverInitTwo(const EcuM_ConfigType* ConfigPtr)\r
+{\r
+  //lint --e{715}       PC-Lint (715) - ConfigPtr usage depends on configuration of modules\r
+\r
+#if defined(USE_SPI)\r
+       // Setup SPI\r
+       Spi_Init(ConfigPtr->SpiConfig);\r
+#endif\r
+\r
+#if defined(USE_EEP)\r
+       // Setup EEP\r
+       Eep_Init(ConfigPtr->EEpConfig);\r
+#endif\r
+\r
+#if defined(USE_FLS)\r
+       // Setup Flash\r
+       Fls_Init(ConfigPtr->FlashConfig);\r
+#endif\r
+\r
+#if defined(USE_FEE)\r
+       // Setup FEE\r
+       Fee_Init();\r
+#endif\r
+\r
+#if defined(USE_EA)\r
+       // Setup EA\r
+       Ea_init();\r
+#endif\r
+\r
+#if defined(USE_NVM)\r
+       // Setup NVRAM Manager and start the read all job\r
+       NvM_Init();\r
+       NvM_ReadAll();\r
+#endif\r
+\r
+       // Setup CAN tranceiver\r
+       // TODO\r
+\r
+#if defined(USE_CAN)\r
+       // Setup Can driver\r
+       Can_Init(ConfigPtr->CanConfig);\r
+#endif\r
+\r
+#if defined(USE_CANIF)\r
+       // Setup CanIf\r
+       CanIf_Init(ConfigPtr->CanIfConfig);\r
+#endif\r
+\r
+#if defined(USE_CANTP)\r
+       // Setup CAN TP\r
+       CanTp_Init();\r
+#endif\r
+\r
+#if defined(USE_CANSM)\r
+        CanSM_Init(ConfigPtr->CanSMConfig);\r
+#endif\r
+\r
+       // Setup LIN\r
+       // TODO\r
+\r
+#if defined(USE_PDUR)\r
+       // Setup PDU Router\r
+       PduR_Init(ConfigPtr->PduRConfig);\r
+#endif\r
+\r
+#if defined(USE_CANNM)\r
+        // Setup Can Network Manager\r
+        CanNm_Init(ConfigPtr->CanNmConfig);\r
+#endif\r
+\r
+#if defined(USE_NM)\r
+        // Setup Network Management Interface\r
+        Nm_Init(ConfigPtr->NmConfig);\r
+#endif\r
+\r
+#if defined(USE_COM)\r
+       // Setup COM layer\r
+       Com_Init(ConfigPtr->ComConfig);\r
+#endif\r
+\r
+#if defined(USE_DCM)\r
+       // Setup DCM\r
+       Dcm_Init();\r
+#endif\r
+\r
+#if defined(USE_IOHWAB)\r
+       // Setup IO hardware abstraction layer\r
+       IoHwAb_Init();\r
+#endif\r
+\r
+}\r
+\r
+void EcuM_AL_DriverInitThree(const EcuM_ConfigType* ConfigPtr)\r
+{\r
+  //lint --e{715}       PC-Lint (715) - ConfigPtr usage depends on configuration of modules\r
+\r
+#if defined(USE_DEM)\r
+       // Setup DEM\r
+       Dem_Init();\r
+#endif\r
+\r
+#if defined(USE_COMM)\r
+        // Setup Communication Manager\r
+        ComM_Init(ConfigPtr->ComMConfig);\r
+#endif\r
+}\r
+\r
+void EcuM_OnEnterRUN(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnExitRun(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnExitPostRun(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnPrepShutdown(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnGoSleep(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnGoOffOne(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_OnGoOffTwo(void)\r
+{\r
+\r
+}\r
+\r
+void EcuM_AL_SwitchOff(void)\r
+{\r
+\r
+}\r
diff --git a/examples/blinker_node/config/stm32_stm3210c/EcuM_Cfg.c b/examples/blinker_node/config/stm32_stm3210c/EcuM_Cfg.c
new file mode 100644 (file)
index 0000000..de2c5a0
--- /dev/null
@@ -0,0 +1,73 @@
+/*\r
+ * Configuration of module EcuM (EcuM_Cfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F107\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Jan 21 11:28:13 CET 2011\r
+ */\r
+\r
+\r
+\r
+#include "EcuM.h"\r
+\r
+EcuM_ConfigType EcuMConfig =\r
+{\r
+       .EcuMDefaultShutdownTarget = ECUM_STATE_RESET,\r
+       .EcuMDefaultSleepMode = 0, // Don't care\r
+       .EcuMDefaultAppMode = OSDEFAULTAPPMODE,\r
+       .EcuMNvramReadAllTimeout = ECUM_NVRAM_READALL_TIMEOUT,\r
+       .EcuMNvramWriteAllTimeout = ECUM_NVRAM_WRITEALL_TIMEOUT,\r
+       .EcuMRunMinimumDuration = ECUM_NVRAM_MIN_RUN_DURATION,\r
+\r
+#if defined(USE_MCU)\r
+        .McuConfig = McuConfigData,\r
+#endif\r
+#if defined(USE_PORT)\r
+        .PortConfig = &PortConfigData,\r
+#endif\r
+#if defined(USE_CAN)\r
+        .CanConfig = &CanConfigData,\r
+#endif\r
+#if defined(USE_CANIF)\r
+        .CanIfConfig = &CanIf_Config,\r
+#endif\r
+#if defined(USE_CANSM)\r
+        .CanSMConfig = &CanSM_Config,\r
+#endif\r
+#if defined(USE_CANNM)\r
+        .CanNmConfig = &CanNm_Config,\r
+#endif\r
+#if defined(USE_COM)\r
+        .ComConfig = &ComConfiguration,\r
+#endif\r
+#if defined(USE_COMM)\r
+        .ComMConfig = &ComM_Config,\r
+#endif\r
+#if defined(USE_NM)\r
+        .NmConfig = &Nm_Config,\r
+#endif\r
+#if defined(USE_PDUR)\r
+        .PduRConfig = &PduR_Config,\r
+#endif\r
+#if defined(USE_DMA)\r
+        .DmaConfig = DmaConfig,\r
+#endif\r
+#if defined(USE_ADC)\r
+        .AdcConfig = AdcConfig,\r
+#endif\r
+#if defined(USE_PWM)\r
+        .PwmConfig = &PwmConfig,\r
+#endif\r
+#if defined(USE_GPT)\r
+        .GptConfig = GptConfigData,\r
+#endif\r
+#if defined(USE_FLS)\r
+       .FlashConfig = FlsConfigSet,\r
+#endif\r
+};\r
diff --git a/examples/blinker_node/config/stm32_stm3210c/EcuM_Cfg.h b/examples/blinker_node/config/stm32_stm3210c/EcuM_Cfg.h
new file mode 100644 (file)
index 0000000..40dd53c
--- /dev/null
@@ -0,0 +1,43 @@
+/*\r
+ * Configuration of module EcuM (EcuM_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F107\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Jan 21 11:32:26 CET 2011\r
+ */\r
+\r
+
+#if !(((ECUM_SW_MAJOR_VERSION == 2) && (ECUM_SW_MINOR_VERSION == 0)) )
+#error "EcuM: Configuration file version differs from BSW version."
+#endif
+
+\r
+\r
+#ifndef ECUM_CFG_H_\r
+#define ECUM_CFG_H_\r
+\r
+#define ECUM_VERSION_INFO_API  STD_ON\r
+#define ECUM_DEV_ERROR_DETECT  STD_OFF\r
+\r
+#include "EcuM_Generated_Types.h"\r
+\r
+#define ECUM_MAIN_FUNCTION_PERIOD  (200)\r
+#define ECUM_NVRAM_READALL_TIMEOUT (10000)\r
+#define ECUM_NVRAM_WRITEALL_TIMEOUT (10000)\r
+#define ECUM_NVRAM_MIN_RUN_DURATION (10000)\r
+\r
+// EcuM_UserType definitions\r
+typedef enum {\r
+    ECUM_USER_SYSTEM,   // Dummy user to get at least one user in system\r
+       ECUM_USER_ENDMARK       // Must be the last in list!\r
+} EcuM_UserList;\r
+\r
+extern EcuM_ConfigType EcuMConfig;\r
+\r
+#endif /*ECUM_CFG_H_*/\r
diff --git a/examples/blinker_node/config/stm32_stm3210c/EcuM_Generated_Types.h b/examples/blinker_node/config/stm32_stm3210c/EcuM_Generated_Types.h
new file mode 100644 (file)
index 0000000..d009461
--- /dev/null
@@ -0,0 +1,129 @@
+/*\r
+ * Configuration of module EcuM (EcuM_Generated_Types.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F107\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Jan 21 11:28:13 CET 2011\r
+ */\r
+\r
+
+#if !(((ECUM_SW_MAJOR_VERSION == 2) && (ECUM_SW_MINOR_VERSION == 0)) )
+#error "EcuM: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef _ECUM_GENERATED_TYPES_H_\r
+#define _ECUM_GENERATED_TYPES_H_\r
+\r
+#if defined(USE_MCU)\r
+#include "Mcu.h"\r
+#endif\r
+#if defined(USE_PORT)\r
+#include "Port.h"\r
+#endif\r
+#if defined(USE_CAN)\r
+#include "Can.h"\r
+#endif\r
+#if defined(USE_CANIF)\r
+#include "CanIf.h"\r
+#endif\r
+#if defined(USE_PWM)\r
+#include "Pwm.h"\r
+#endif\r
+#if defined(USE_COM)\r
+#include "Com.h"\r
+#endif\r
+#if defined(USE_PDUR)\r
+#include "PduR.h"\r
+#endif\r
+#if defined(USE_DMA)\r
+#include "Dma.h"\r
+#endif\r
+#if defined(USE_ADC)\r
+#include "Adc.h"\r
+#endif\r
+#if defined(USE_GPT)\r
+#include "Gpt.h"\r
+#endif\r
+#if defined(USE_COMM)\r
+#include "ComM.h"\r
+#endif\r
+#if defined(USE_NM)\r
+#include "Nm.h"\r
+#endif\r
+#if defined(USE_CANNM)\r
+#include "CanNm.h"\r
+#endif\r
+#if defined(USE_CANSM)\r
+#include "CanSM.h"\r
+#endif\r
+#if defined(USE_LINSM)\r
+#include "LinSM.h"\r
+#endif\r
+#if defined(USE_FLS)\r
+#include "Fls.h"\r
+#endif\r
+\r
+typedef struct\r
+{\r
+       EcuM_StateType EcuMDefaultShutdownTarget;\r
+       uint8 EcuMDefaultSleepMode;\r
+       AppModeType EcuMDefaultAppMode;\r
+       uint32 EcuMRunMinimumDuration;\r
+       uint32 EcuMNvramReadAllTimeout;\r
+       uint32 EcuMNvramWriteAllTimeout;\r
+\r
+#if defined(USE_MCU)\r
+        const Mcu_ConfigType* McuConfig;\r
+#endif\r
+#if defined(USE_PORT)\r
+        const Port_ConfigType* PortConfig;\r
+#endif\r
+#if defined(USE_CAN)\r
+        const Can_ConfigType* CanConfig;\r
+#endif\r
+#if defined(USE_CANIF)\r
+        const CanIf_ConfigType* CanIfConfig;\r
+#endif\r
+#if defined(USE_CANSM)\r
+        const CanSM_ConfigType* CanSMConfig;\r
+#endif\r
+#if defined(USE_NM)\r
+        const Nm_ConfigType* NmConfig;\r
+#endif\r
+#if defined(USE_CANNM)\r
+        const CanNm_ConfigType* CanNmConfig;\r
+#endif\r
+#if defined(USE_COMM)\r
+        const ComM_ConfigType* ComMConfig;\r
+#endif\r
+#if defined(USE_COM)\r
+        const Com_ConfigType* ComConfig;\r
+#endif\r
+#if defined(USE_PDUR)\r
+        const PduR_PBConfigType* PduRConfig;\r
+#endif\r
+#if defined(USE_PWM)\r
+        const Pwm_ConfigType* PwmConfig;\r
+#endif\r
+#if defined(USE_DMA)\r
+        const Dma_ConfigType* DmaConfig;\r
+#endif\r
+#if defined(USE_ADC)\r
+    const Adc_ConfigType* AdcConfig;\r
+#endif\r
+#if defined(USE_GPT)\r
+    const Gpt_ConfigType* GptConfig;\r
+#endif\r
+#if defined(USE_FLS)\r
+       const Fls_ConfigType* FlashConfig;\r
+#endif\r
+} EcuM_ConfigType;\r
+\r
+#endif /*_ECUM_GENERATED_TYPES_H_*/\r
diff --git a/examples/blinker_node/config/stm32_stm3210c/Mcu_Cfg.c b/examples/blinker_node/config/stm32_stm3210c/Mcu_Cfg.c
new file mode 100644 (file)
index 0000000..e7ef7bf
--- /dev/null
@@ -0,0 +1,57 @@
+/*\r
+ * Configuration of module Mcu (Mcu_Cfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F107\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Jan 21 11:32:26 CET 2011\r
+ */\r
+\r
+\r
+#ifndef MCU_CFG_C_\r
+#define MCU_CFG_C_\r
+\r
+#include "Mcu.h"\r
+\r
+Mcu_RamSectorSettingConfigType Mcu_RamSectorSettingConfigData[] = {\r
+  {\r
+       .McuRamDefaultValue = 0,\r
+    .McuRamSectionBaseAddress = 0,\r
+       .McuRamSectionSize = 0xFF,\r
+  }\r
+};\r
+\r
+Mcu_ClockSettingConfigType Mcu_ClockSettingConfigData[] =\r
+{\r
+  {\r
+    .McuClockReferencePointFrequency = 25000000UL,\r
+    .Pll1    = 9,\r
+    .Pll2    = 8,\r
+    .Pll3    = 0,\r
+  },\r
+};\r
+\r
+const Mcu_PerClockConfigType McuPerClockConfigData =\r
+{ \r
+       .AHBClocksEnable = RCC_AHBPeriph_DMA1 | RCC_AHBPeriph_ETH_MAC | RCC_AHBPeriph_ETH_MAC_Tx | RCC_AHBPeriph_ETH_MAC_Rx,\r
+       .APB1ClocksEnable = RCC_APB1Periph_TIM2 | RCC_APB1Periph_CAN1,\r
+       .APB2ClocksEnable = RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO\r
+};\r
+\r
+const Mcu_ConfigType McuConfigData[] = {\r
+  {\r
+       .McuClockSrcFailureNotification = 0,\r
+       .McuRamSectors = 1,\r
+       .McuClockSettings = 1,\r
+       .McuDefaultClockSettings = 0,\r
+       .McuClockSettingConfig = &Mcu_ClockSettingConfigData[0],\r
+       .McuRamSectorSettingConfig = &Mcu_RamSectorSettingConfigData[0],\r
+  }\r
+};\r
+\r
+#endif /*MCU_CFG_C_*/\r
diff --git a/examples/blinker_node/config/stm32_stm3210c/Mcu_Cfg.h b/examples/blinker_node/config/stm32_stm3210c/Mcu_Cfg.h
new file mode 100644 (file)
index 0000000..a4806f9
--- /dev/null
@@ -0,0 +1,38 @@
+/*\r
+ * Configuration of module Mcu (Mcu_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F107\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Jan 21 11:32:26 CET 2011\r
+ */\r
+\r
+
+#if !(((MCU_SW_MAJOR_VERSION == 2) && (MCU_SW_MINOR_VERSION == 0)) )
+#error "Mcu: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef MCU_CFG_H_\r
+#define MCU_CFG_H_\r
+\r
+#include "Std_Types.h"\r
+#include "Mcu_ConfigTypes.h"\r
+\r
+#define MCU_DEV_ERROR_DETECT   STD_OFF \r
+#define MCU_PERFORM_RESET_API  STD_ON\r
+#define MCU_VERSION_INFO_API   STD_ON\r
+\r
+typedef enum {\r
+       MCU_CLOCKTYPE_EXT_REF_25MHZ = 0,\r
+  MCU_NBR_OF_CLOCKS,\r
+} Mcu_ClockType;\r
+\r
+#define MCU_DEFAULT_CONFIG McuConfigData[0]\r
+\r
+#endif /*MCU_CFG_H_*/\r
index 28bb131377701e6b9fd81849c8a890f29d3a9dad..cdae4c2db14b8a91d0c46a4c8425c2ad30bc001f 100644 (file)
@@ -2,14 +2,14 @@
  * Configuration of module Os (Os_Cfg.c)\r
  *\r
  * Created by: \r
- * Configured for (MCU): Cortex M3\r
+ * Configured for (MCU): STM32_F107\r
  *\r
  * Module vendor: ArcCore\r
  * Module version: 2.0.11\r
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 15:40:47 CET 2010\r
+ *           on Fri Jan 21 11:32:26 CET 2011\r
  */\r
 \r
        \r
index 603e23fda315422a5badc10a4af7154c29c68143..7e282086e42f85668b78953622a49711790c7c3f 100644 (file)
@@ -2,18 +2,18 @@
  * Configuration of module Os (Os_Cfg.h)\r
  *\r
  * Created by: \r
- * Configured for (MCU): Cortex M3\r
+ * Configured for (MCU): STM32_F107\r
  *\r
  * Module vendor: ArcCore\r
  * Module version: 2.0.11\r
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 15:40:47 CET 2010\r
+ *           on Fri Jan 21 11:32:26 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
diff --git a/examples/blinker_node/config/stm32_stm3210c/Port_Cfg.c b/examples/blinker_node/config/stm32_stm3210c/Port_Cfg.c
new file mode 100644 (file)
index 0000000..d37cc9b
--- /dev/null
@@ -0,0 +1,291 @@
+/*\r
+ * Configuration of module Port (Port_Cfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F107\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Jan 21 11:32:26 CET 2011\r
+ */\r
+\r
+       \r
+#include "stm32f10x_gpio.h"\r
+#include "port.h"\r
+\r
+const uint32 remaps[] = {\r
+};\r
+\r
+const GpioPinCnfMode_Type GPIOConf[] =\r
+{\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = 0,         \r
+       .GpioPinCnfMode_14 = 0,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = 0,         \r
+       .GpioPinCnfMode_14 = 0,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = 0,         \r
+       .GpioPinCnfMode_14 = 0,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = GPIO_OUTPUT_10MHz_MODE | GPIO_OUTPUT_PUSHPULL_CNF,  \r
+       .GpioPinCnfMode_4 = GPIO_OUTPUT_10MHz_MODE | GPIO_OUTPUT_PUSHPULL_CNF,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = GPIO_OUTPUT_10MHz_MODE | GPIO_OUTPUT_PUSHPULL_CNF,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = GPIO_OUTPUT_10MHz_MODE | GPIO_OUTPUT_PUSHPULL_CNF,         \r
+       .GpioPinCnfMode_14 = 0,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = 0,         \r
+       .GpioPinCnfMode_14 = 0,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = 0,         \r
+       .GpioPinCnfMode_14 = 0,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = 0,         \r
+       .GpioPinCnfMode_14 = 0,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+};\r
+\r
+\r
+const GpioPinOutLevel_Type GPIOOutConf[] =\r
+{\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = 0,        \r
+       .GpioPinOutLevel_14 = 0,        \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = 0,        \r
+       .GpioPinOutLevel_14 = 0,        \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = 0,        \r
+       .GpioPinOutLevel_14 = 0,        \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = GPIO_OUTPUT_HIGH,  \r
+       .GpioPinOutLevel_4 = GPIO_OUTPUT_HIGH,  \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = GPIO_OUTPUT_HIGH,  \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = GPIO_OUTPUT_HIGH,         \r
+       .GpioPinOutLevel_14 = 0,        \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = 0,        \r
+       .GpioPinOutLevel_14 = 0,        \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = 0,        \r
+       .GpioPinOutLevel_14 = 0,        \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = 0,        \r
+       .GpioPinOutLevel_14 = 0,        \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+};\r
+\r
+const Port_ConfigType PortConfigData =\r
+{\r
+       .padCnt = 7,\r
+       .padConfig = GPIOConf,\r
+       .outConfig = GPIOOutConf,\r
+\r
+    .remapCount = sizeof(remaps) / sizeof(uint32),\r
+    .remaps = &remaps[0]\r
+};\r
diff --git a/examples/blinker_node/config/stm32_stm3210c/Port_Cfg.h b/examples/blinker_node/config/stm32_stm3210c/Port_Cfg.h
new file mode 100644 (file)
index 0000000..44ed6e0
--- /dev/null
@@ -0,0 +1,34 @@
+/*\r
+ * Configuration of module Port (Port_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F107\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Jan 21 11:32:26 CET 2011\r
+ */\r
+\r
+
+#if !(((PORT_SW_MAJOR_VERSION == 1) && (PORT_SW_MINOR_VERSION == 0)) )
+#error "Port: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef PORT_CFG_H_\r
+#define PORT_CFG_H_\r
+\r
+#include "Std_Types.h"\r
+#include "Port_ConfigTypes.h"\r
+\r
+#define        PORT_VERSION_INFO_API                           STD_ON\r
+#define        PORT_DEV_ERROR_DETECT                           STD_ON\r
+#define PORT_SET_PIN_DIRECTION_API             STD_ON\r
+\r
+/** Instance of the top level configuration container */\r
+extern const Port_ConfigType PortConfigData;\r
+\r
+#endif /* PORT_CFG_H_ */\r
index 869781cdf1f46d5ef53994d95f2c36e97521cb46..5a5d42e6f65ec1b1f3a0cd8d281ed6146edd92d1 100644 (file)
@@ -25,8 +25,8 @@
 #include "Pwm.h"\r
 #include <stdio.h>\r
 #include <assert.h>\r
-#define USE_TRACE      1\r
-#define USE_LDEBUG_PRINTF 1\r
+\r
+//#define USE_LDEBUG_PRINTF // Uncomment this to turn debug statements on.\r
 #include "debug.h"\r
 \r
 /* Notification callback from channel 0 */\r
@@ -48,20 +48,18 @@ void MyPwmNotificationRoutine(void) {
 \r
 /* Global hooks */\r
 ProtectionReturnType ProtectionHook( StatusType FatalError ) {\r
-       LDEBUG_PRINTF("## ProtectionHook\n");\r
+       LDEBUG_FPUTS("## ProtectionHook\n");\r
        return PRO_KILLAPPL;\r
 }\r
 \r
 void StartupHook( void ) {\r
-       LDEBUG_PRINTF("## StartupHook\n");\r
-\r
-       uint32_t sys_freq = McuE_GetSystemClock();\r
+       LDEBUG_FPUTS("## StartupHook\n");\r
 \r
-       LDEBUG_PRINTF("Sys clock %d Hz\n",sys_freq);\r
+       LDEBUG_PRINTF("Sys clock %u Hz\n",(unsigned)McuE_GetSystemClock());\r
 }\r
 \r
 void ShutdownHook( StatusType Error ) {\r
-       LDEBUG_PRINTF("## ShutdownHook\n");\r
+       LDEBUG_FPUTS("## ShutdownHook\n");\r
        while(1);\r
 }\r
 \r
@@ -89,14 +87,3 @@ void PostTaskHook( void ) {
        }\r
 //     LDEBUG_PRINTF("## PostTaskHook, taskid=%d\n",task);\r
 }\r
-\r
-#if 0\r
-struct OsHooks os_conf_global_hooks = {\r
-               .StartupHook = StartupHook,\r
-               .ProtectionHook = ProtectionHook,\r
-               .ShutdownHook = ShutdownHook,\r
-               .ErrorHook = ErrorHook,\r
-               .PreTaskHook = PreTaskHook,\r
-               .PostTaskHook = PostTaskHook\r
-               };\r
-#endif\r
index c2f901c4dc7283a098f004e8521405104c9b4816..4eee228a732762cf1cd644f9b1584d4967b8791a 100644 (file)
@@ -27,8 +27,9 @@
 #include <stdio.h>\r
 #include <assert.h>\r
 #include "pwm_sine_main.h"\r
+\r
+//#define USE_LDEBUG_PRINTF // Uncomment this to turn debug statements on.\r
 #include "debug.h"\r
-//#include "WdgM.h"\r
 \r
 \r
 void OsIdle( void ) {\r
index e593475980684d15a34f700a7ae94ae1408594c8..7c843f11d894e54e68545f6168d3b605d704f37c 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 15:28:34 CET 2010\r
+ *           on Fri Jan 14 16:54:45 CET 2011\r
  */\r
 \r
        \r
index e010f8bd7f3d2843cf874ab5093060bf3700e4e8..daa7f7c189dd5785a6f6123749f3d1347cff4b77 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 15:28:34 CET 2010\r
+ *           on Fri Jan 14 16:54:45 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2
+#if ((OS_SW_MAJOR_VERSION != 2)
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
index 9f1119c806356508a545c0e3165ceb8487a0fddc..d74358bb8e41d0dc17b75bafe9a083ad2075ce72 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 15:28:34 CET 2010\r
+ *           on Fri Jan 14 16:54:45 CET 2011\r
  */\r
 \r
        \r
index f4ded08cb8693458ff77e2411a39a0a8d6f8b490..22f2ca327e6777275a359e4635328278526b2188 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 15:28:34 CET 2010\r
+ *           on Fri Jan 14 16:54:45 CET 2011\r
  */\r
 \r
 
-#if (PORT_SW_MAJOR_VERSION != 1
+#if ((PORT_SW_MAJOR_VERSION != 1)
 #error "Port: Configuration file version differs from BSW version."
 #endif
 
index 067f6abdb245819003d55532aacd58eb046b5d85..05e8ed9d8a8b497e65730922431e627490c9f9fa 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 16:24:11 CET 2010\r
+ *           on Fri Jan 14 16:54:45 CET 2011\r
  */\r
 \r
 \r
index 3f0833e8dcdf1302ac442fd06d1743ad0fcd8918..111201e1fa3eea7867a47f887e031e8a4db9f967 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 16:24:11 CET 2010\r
+ *           on Fri Jan 14 16:54:45 CET 2011\r
  */\r
 \r
 
-#if (PWM_SW_MAJOR_VERSION != 1
+#if ((PWM_SW_MAJOR_VERSION != 1)
 #error "Pwm: Configuration file version differs from BSW version."
 #endif
 
index 9f0279c9458c0f376a6e80c1f37515a779c4c53e..a7988b4826d4fbc9d9926107525e78dda61f6121 100644 (file)
@@ -13,7 +13,7 @@
 */\r
 \r
 \r
-#if (OS_SW_MAJOR_VERSION != 2) \r
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )\r
 #error "Os: Configuration file version differs from BSW version."\r
 #endif\r
 \r
index c046aa0dcd82c0a3fbe5b9fc71dc8fd2e6472157..a21ec11c6251d1fcfca831c3a3f578de8773b47e 100644 (file)
@@ -21,6 +21,7 @@
 \r
 \r
 \r
+#include "Port.h"\r
 #include "Port_Cfg.h"\r
 \r
 // All:        PA,OBE,IBE,ODE,HYS,SRC,WPE,WPS\r
index 601cd7559d6058cf81807630306fb35a33092773..108f0903c28dde0bad01f0d48c8d51b8edb0b6a4 100644 (file)
@@ -18,6 +18,9 @@
 \r
 \r
 \r
+#if !(((PORT_SW_MAJOR_VERSION == 1) && (PORT_SW_MINOR_VERSION == 0)) )\r
+#error "Port: Configuration file version differs from BSW version."\r
+#endif\r
 \r
 \r
 #ifndef PORT_CFG_H_\r
index 4ea8ce75db4ca18ab68e79728886c6fde1cb136a..62d2e565136c1af99fa518401573a773b1ff987a 100644 (file)
@@ -13,7 +13,7 @@
 */\r
 \r
 \r
-#if (PWM_SW_MAJOR_VERSION != 1) \r
+#if !(((PWM_SW_MAJOR_VERSION == 1) && (PWM_SW_MINOR_VERSION == 0)) )\r
 #error "Pwm: Configuration file version differs from BSW version."\r
 #endif\r
 \r
index d77a36e6273af34dd6f5c55a3cd53ce08745ef58..fe9a14a4eed244971785a1694d1b7dc2c21dd0a5 100644 (file)
@@ -1,16 +1,16 @@
-/* \r
-* Configuration of module Os (Os_Cfg.c)\r
-* \r
-* Created by: ArcCore AB\r
-* Configured for (MCU): MPC5567\r
-* \r
-* Module editor vendor:  ArcCore\r
-* Module editor version: 2.0.7\r
-* \r
-* Copyright ArcCore AB 2010\r
-* Generated by Arctic Studio (http://arccore.com)\r
-*           on Mon May 03 11:16:23 CEST 2010\r
-*/\r
+/*\r
+ * Configuration of module Os (Os_Cfg.c)\r
+ *\r
+ * Created by: ArcCore AB\r
+ * Configured for (MCU): MPC5567\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.11\r
+ *\r
+ * Copyright ArcCore AB 2010\r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Jan 14 10:50:59 CET 2011\r
+ */\r
 \r
        \r
 \r
@@ -43,7 +43,7 @@ GEN_COUNTER_HEAD {
                                        COUNTER_UNIT_NANO,\r
                                        0xffff,\r
                                        1,\r
-                                       1,\r
+                                       0,\r
                                        0),\r
 };\r
 \r
@@ -72,11 +72,6 @@ GEN_ALARM_HEAD {
 \r
 // ################################    RESOURCES     ###############################\r
 GEN_RESOURCE_HEAD {\r
-       GEN_RESOURCE(   \r
-               RES_SCHEDULER,\r
-               RESOURCE_TYPE_STANDARD,\r
-               0\r
-       ),\r
 };\r
 \r
 // ##############################    STACKS (TASKS)     ############################\r
index 13abd6a76433fd27688b4839e5c72b482848b260..95984015cd56befcccd80d0f5ee22c303622c654 100644 (file)
@@ -1,22 +1,22 @@
-/* \r
-* Configuration of module Os (Os_Cfg.h)\r
-* \r
-* Created by: ArcCore AB\r
-* Configured for (MCU): MPC5567\r
-* \r
-* Module editor vendor:  ArcCore\r
-* Module editor version: 2.0.7\r
-* \r
-* Copyright ArcCore AB 2010\r
-* Generated by Arctic Studio (http://arccore.com)\r
-*           on Mon May 03 11:16:23 CEST 2010\r
-*/\r
-\r
-\r
-#if (OS_SW_MAJOR_VERSION != 2) \r
-#error "Os: Configuration file version differs from BSW version."\r
-#endif\r
-\r
+/*\r
+ * Configuration of module Os (Os_Cfg.h)\r
+ *\r
+ * Created by: ArcCore AB\r
+ * Configured for (MCU): MPC5567\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.11\r
+ *\r
+ * Copyright ArcCore AB 2010\r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Jan 14 10:50:59 CET 2011\r
+ */\r
+\r
+
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
+#error "Os: Configuration file version differs from BSW version."
+#endif
+
 \r
 #ifndef OS_CFG_H_\r
 #define OS_CFG_H_\r
index 0e57a8800b62bcdae515726d5d635d0fdc939e77..600f4796187c8f25339f397ce39e22b776ba9684 100644 (file)
@@ -1,24 +1,24 @@
-/* \r
-* Configuration of module Port (Port_Cfg.c)\r
-* \r
-* Created by: \r
-* Configured for (MCU): MPC5567\r
-* \r
-* Module vendor:  ArcCore\r
-* Module version: 1.0.0\r
-* \r
-* \r
-* Generated by Arctic Studio (http://arccore.com)\r
-*           on Fri Apr 09 13:44:55 CEST 2010\r
-*/\r
+/*\r
+ * Configuration of module Port (Port_Cfg.c)\r
+ *\r
+ * Created by: ArcCore AB\r
+ * Configured for (MCU): MPC5567\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * Copyright ArcCore AB 2010\r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Jan 14 10:50:58 CET 2011\r
+ */\r
 \r
        \r
-// File generated on Fri Apr 09 13:44:55 CEST 2010\r
+// File generated on Fri Jan 14 10:50:58 CET 2011\r
 // File generated by com.arccore.bswbuilder.modules.port.mpc5567\r
 \r
 #include "Port.h"\r
 #include "Port_Cfg.h"\r
-#include "stdlib.h"\r
+#include <stdlib.h>\r
 \r
 const uint16_t PortPadConfigData[] = {\r
        PORT_PCR_RESET,                 /* PCR  0 */\r
index fb060fb2ea7faf43330da71e4b3025655363848b..6099938ad727a78515d1ac792adef509d6ada2b6 100644 (file)
@@ -1,22 +1,22 @@
-/* \r
-* Configuration of module Port (Port_Cfg.h)\r
-* \r
-* Created by: \r
-* Configured for (MCU): MPC5567\r
-* \r
-* Module vendor:  ArcCore\r
-* Module version: 1.0.0\r
-* \r
-* \r
-* Generated by Arctic Studio (http://arccore.com)\r
-*           on Fri Apr 09 13:44:55 CEST 2010\r
-*/\r
-\r
-\r
-#if (PORT_SW_MAJOR_VERSION != 1) \r
-#error "Port: Configuration file version differs from BSW version."\r
-#endif\r
-\r
+/*\r
+ * Configuration of module Port (Port_Cfg.h)\r
+ *\r
+ * Created by: ArcCore AB\r
+ * Configured for (MCU): MPC5567\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * Copyright ArcCore AB 2010\r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Jan 14 10:50:58 CET 2011\r
+ */\r
+\r
+
+#if !(((PORT_SW_MAJOR_VERSION == 1) && (PORT_SW_MINOR_VERSION == 0)) )
+#error "Port: Configuration file version differs from BSW version."
+#endif
+
 \r
 #ifndef PORT_CFG_H_\r
 #define PORT_CFG_H_\r
@@ -25,8 +25,8 @@
 \r
 #define        PORT_VERSION_INFO_API                           STD_OFF\r
 #define        PORT_DEV_ERROR_DETECT                           STD_ON\r
-#define PORT_SET_PIN_MODE_API                          STD_ON\r
-#define        PORT_SET_PIN_DIRECTION_API                      STD_OFF\r
+#define PORT_SET_PIN_MODE_API                          STD_OFF\r
+#define PORT_SET_PIN_DIRECTION_API             STD_OFF\r
 \r
 #define                PORT_BIT0                       (1<<15)\r
 #define                PORT_BIT1                       (1<<14)\r
@@ -87,4 +87,7 @@ typedef struct
 \r
 extern const Port_ConfigType PortConfigData;\r
 \r
+#define PORT_PIN_NAME_EMIOS10          189     \r
+#define PORT_PIN_NAME_EMIOS12          191     \r
+\r
 #endif /* PORT_CFG_H_ */\r
index fc07f05ee54f13b20ff2881ee001049dc1c8f6cf..cf46db6723d067b323f22f84e507871cae2bebb1 100644 (file)
@@ -1,16 +1,16 @@
-/* \r
-* Configuration of module Pwm (Pwm_Cfg.c)\r
-* \r
-* Created by: \r
-* Configured for (MCU): MPC5567\r
-* \r
-* Module vendor:  ArcCore\r
-* Module version: 1.0.0\r
-* \r
-* \r
-* Generated by Arctic Studio (http://arccore.com)\r
-*           on Fri Apr 09 15:05:32 CEST 2010\r
-*/\r
+/*\r
+ * Configuration of module Pwm (Pwm_Cfg.c)\r
+ *\r
+ * Created by: ArcCore AB\r
+ * Configured for (MCU): MPC5567\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * Copyright ArcCore AB 2010\r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Jan 14 10:50:59 CET 2011\r
+ */\r
 \r
 /*\r
  * Pwm_Cfg.c\r
@@ -55,13 +55,10 @@ const Pwm_ConfigType PwmConfig = {
        },\r
 #if PWM_NOTIFICATION_SUPPORTED==ON\r
        .NotificationHandlers = {\r
-               // Notification routine for PWM_CHANNEL_1\r
-               MyPwmNotificationRoutine,\r
-               \r
-               // Notification routine for PWM_CHANNEL_2\r
-               NULL,\r
-               \r
+// Notification routine for PWM_CHANNEL_1\r
+               MyPwmNotificationRoutine,                                                       \r
+// Notification routine for PWM_CHANNEL_2\r
+               NULL,                                                   \r
        }\r
 #endif\r
 };\r
-       \r
index 089f4966c0c00f3472200750bdf183cf579f5c7c..9b040dd6785eba7ff69a858da4febf9c882e5ef3 100644 (file)
@@ -1,22 +1,22 @@
-/* \r
-* Configuration of module Pwm (Pwm_Cfg.h)\r
-* \r
-* Created by: \r
-* Configured for (MCU): MPC5567\r
-* \r
-* Module vendor:  ArcCore\r
-* Module version: 1.0.0\r
-* \r
-* \r
-* Generated by Arctic Studio (http://arccore.com)\r
-*           on Fri Apr 09 15:05:32 CEST 2010\r
-*/\r
-\r
-\r
-#if (PWM_SW_MAJOR_VERSION != 1) \r
-#error "Pwm: Configuration file version differs from BSW version."\r
-#endif\r
+/*\r
+ * Configuration of module Pwm (Pwm_Cfg.h)\r
+ *\r
+ * Created by: ArcCore AB\r
+ * Configured for (MCU): MPC5567\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.1\r
+ *\r
+ * Copyright ArcCore AB 2010\r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Fri Jan 14 10:50:59 CET 2011\r
+ */\r
 \r
+
+#if !(((PWM_SW_MAJOR_VERSION == 1) && (PWM_SW_MINOR_VERSION == 0)) )
+#error "Pwm: Configuration file version differs from BSW version."
+#endif
+
 \r
 #ifndef PWM_CFG_H_\r
 #define PWM_CFG_H_\r
@@ -186,4 +186,3 @@ typedef struct {
     }\r
 \r
 #endif /* PWM_CFG_H_ */\r
-       
\ No newline at end of file
index f0ad09b776b6038ee58f09a27fdbfa0dda6bceec..c8397fffb2b7779021e825344a58c88305cb4d56 100644 (file)
@@ -1,12 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
-<AUTOSAR xmlns="http://autosar.org/3.1.2"><TOP-LEVEL-PACKAGES>\r
+<AUTOSAR xmlns="http://autosar.org/3.1.2">\r
+  <TOP-LEVEL-PACKAGES>\r
     <AR-PACKAGE UUID="55d13f76-fbd7-4f4f-894f-6e893bb4af68">\r
       <SHORT-NAME>pwm_node_mpc5567</SHORT-NAME>\r
       <CATEGORY>EcuConfiguration</CATEGORY>\r
       <ADMIN-DATA>\r
         <DOC-REVISIONS>\r
           <DOC-REVISION>\r
-            <ISSUED-BY/>\r
+            <ISSUED-BY />\r
           </DOC-REVISION>\r
         </DOC-REVISIONS>\r
       </ADMIN-DATA>\r
                 <SD GID="MCU">MPC5567</SD>\r
                 <SD GID="COPYRIGHT">Copyright ArcCore AB 2010</SD>\r
                 <SD GID="AUTHOR">ArcCore AB</SD>\r
-                <SD GID="GENDIR"></SD>\r
+                <SD GID="GENDIR" />\r
               </SDG>\r
             </SDGS>\r
           </ADMIN-DATA>\r
+          <ECU-SW-COMPOSITION-REF DEST="ECU-SW-COMPOSITION">/pwm_node_mpc5567/SwComposition_pwm_node_mpc5567</ECU-SW-COMPOSITION-REF>\r
           <MODULE-REFS>\r
             <MODULE-REF DEST="MODULE-CONFIGURATION">/pwm_node_mpc5567/Port</MODULE-REF>\r
             <MODULE-REF DEST="MODULE-CONFIGURATION">/pwm_node_mpc5567/Pwm</MODULE-REF>\r
@@ -38,7 +40,7 @@
           <SHORT-NAME>Port</SHORT-NAME>\r
           <ADMIN-DATA>\r
             <SDGS>\r
-              <SDG/>\r
+              <SDG />\r
               <SDG GID="Arccore::ModuleOptions">\r
                 <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
                 <SD GID="ARCCORE_EDITOR_VERSION">1.0.0</SD>\r
           <SHORT-NAME>Pwm</SHORT-NAME>\r
           <ADMIN-DATA>\r
             <SDGS>\r
-              <SDG/>\r
+              <SDG />\r
               <SDG GID="Arccore::ModuleOptions">\r
                 <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
                 <SD GID="ARCCORE_EDITOR_VERSION">1.0.0</SD>\r
                     </ENUMERATION-VALUE>\r
                     <FUNCTION-NAME-VALUE>\r
                       <DEFINITION-REF DEST="FUNCTION-NAME-DEF">/ArcCore/Pwm/PwmChannelConfigSet/PwmChannel/PwmNotification</DEFINITION-REF>\r
-                      <VALUE></VALUE>\r
+                      <VALUE />\r
                     </FUNCTION-NAME-VALUE>\r
                     <FLOAT-VALUE>\r
                       <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/Pwm/PwmChannelConfigSet/PwmChannel/PwmPeriodDefault</DEFINITION-REF>\r
           <SHORT-NAME>Os</SHORT-NAME>\r
           <ADMIN-DATA>\r
             <SDGS>\r
-              <SDG/>\r
+              <SDG />\r
               <SDG GID="Arccore::ModuleOptions">\r
                 <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
                 <SD GID="ARCCORE_EDITOR_VERSION">2.0.7</SD>\r
             </CONTAINER>\r
           </CONTAINERS>\r
         </MODULE-CONFIGURATION>\r
+        <ECU-SW-COMPOSITION UUID="11a49707-21e6-4cba-b31c-dccc09708eed">\r
+          <SHORT-NAME>SwComposition_pwm_node_mpc5567</SHORT-NAME>\r
+        </ECU-SW-COMPOSITION>\r
       </ELEMENTS>\r
     </AR-PACKAGE>\r
-  </TOP-LEVEL-PACKAGES></AUTOSAR>\r
+  </TOP-LEVEL-PACKAGES>\r
+</AUTOSAR>\r
+\r
index b374996d8545fbd5adeca7f558463a96a9e32e36..fa550b29d287afa7101cb27d9a5d3816ee726c98 100644 (file)
 \r
 \r
 #include "Os.h"\r
+#include "Mcu.h"\r
 #include <stdio.h>\r
 #include <assert.h>\r
-#define USE_TRACE      1\r
-#include "debug.h"\r
-#include "Mcu.h"\r
-\r
-\r
-#if 0\r
-#ifdef USE_STARTUPHOOK\r
-#ifdef CFG_MPC55XX\r
-#if !defined(USE_SIMULATOR)\r
-// Quick fix\r
-//#include "Kernel_Offset.h"\r
 \r
-extern uint8_t pcb_list[];\r
-\r
-#endif\r
-#endif\r
-#endif\r
-#endif\r
+//#define USE_LDEBUG_PRINTF // Uncomment this to turn debug statements on.\r
+#include "debug.h"\r
 \r
 \r
 \r
 /* Global hooks */\r
 ProtectionReturnType ProtectionHook( StatusType FatalError ) {\r
-       LDEBUG_PRINTF("## ProtectionHook\n");\r
+       LDEBUG_FPUTS("## ProtectionHook\n");\r
        return PRO_KILLAPPL;\r
 }\r
 \r
 void StartupHook( void ) {\r
-       LDEBUG_PRINTF("## StartupHook\n");\r
+       LDEBUG_FPUTS("## StartupHook\n");\r
 \r
-       uint32_t sys_freq = McuE_GetSystemClock();\r
-\r
-       LDEBUG_PRINTF("Sys clock %d Hz\n",sys_freq);\r
+       LDEBUG_PRINTF("Sys clock %u Hz\n",(unsigned)McuE_GetSystemClock());\r
 }\r
 \r
 void ShutdownHook( StatusType Error ) {\r
-       LDEBUG_PRINTF("## ShutdownHook\n");\r
+       LDEBUG_FPUTS("## ShutdownHook\n");\r
        while(1);\r
 }\r
 \r
@@ -77,14 +61,3 @@ void PreTaskHook( void ) {
 void PostTaskHook( void ) {\r
 //     LDEBUG_PRINTF("## PostTaskHook, taskid=%d\n",task);\r
 }\r
-\r
-#if 0\r
-struct OsHooks os_conf_global_hooks = {\r
-               .StartupHook = StartupHook,\r
-               .ProtectionHook = ProtectionHook,\r
-               .ShutdownHook = ShutdownHook,\r
-               .ErrorHook = ErrorHook,\r
-               .PreTaskHook = PreTaskHook,\r
-               .PostTaskHook = PostTaskHook\r
-               };\r
-#endif\r
index 3d808be2606eb35f48d391ec9895ea3f571db2d4..410105e240ea806276834768c0567d5f335e138c 100644 (file)
 #include "EcuM.h"\r
 #include <stdio.h>\r
 #include <assert.h>\r
-#include "debug.h"\r
 #include "Com.h"\r
 #include "pwm_node2_helpers.h"\r
 \r
+//#define USE_LDEBUG_PRINTF // Uncomment this to turn debug statements on.\r
+#include "debug.h"\r
+\r
 void OsIdle( void ) {\r
        for(;;);\r
 }\r
index 7d5772d73a9541cc2970667a9ddcc6c21d2cf68c..01489fc85610dda09e1160565dd151274344f70b 100644 (file)
@@ -5,11 +5,11 @@
  * Configured for (MCU): HCS12\r
  *\r
  * Module vendor: ArcCore\r
- * Module version: 2.0.3\r
+ * Module version: 2.0.4\r
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 17:45:16 CET 2010\r
+ *           on Mon Jan 17 08:38:47 CET 2011\r
  */\r
 \r
 \r
@@ -54,7 +54,7 @@ const CanIf_ControllerConfigType CanIfControllerConfig[] = {
                .WakeupSupport = CANIF_WAKEUP_SUPPORT_NO_WAKEUP,\r
                .CanIfControllerIdRef = CANIF_CHANNEL_0,\r
                .CanIfDriverNameRef = "FLEXCAN",  // Not used\r
-               .CanIfInitControllerRef = &CanControllerConfigData[0],\r
+               .CanIfInitControllerRef = &CanControllerConfigData[1],\r
        },\r
        \r
 };\r
index 14019cf17332b52b966a3aeeabf710984ce1aa82..b2b618104d721b1f697f3f2cab5b9ca00190080b 100644 (file)
@@ -5,15 +5,15 @@
  * Configured for (MCU): HCS12\r
  *\r
  * Module vendor: ArcCore\r
- * Module version: 2.0.3\r
+ * Module version: 2.0.4\r
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 17:45:16 CET 2010\r
+ *           on Mon Jan 17 08:38:47 CET 2011\r
  */\r
 \r
 
-#if (CANIF_SW_MAJOR_VERSION != 1 && CANIF_SW_MINOR_VERSION != 1) 
+#if !(((CANIF_SW_MAJOR_VERSION == 1) && (CANIF_SW_MINOR_VERSION == 1)) )
 #error "CanIf: Configuration file version differs from BSW version."
 #endif
 
@@ -45,14 +45,14 @@ typedef enum {
        CANIF_SOFTFILTER_TYPE_INDEX,  // Not supported\r
        CANIF_SOFTFILTER_TYPE_LINEAR, // Not supported\r
        CANIF_SOFTFILTER_TYPE_TABLE,  // Not supported\r
-       CANIF_SOFTFILTER_TYPE_MASK,  // CanIfCanRxPduCanIdMask in RxPduConfig is used for filtering\r
+       CANIF_SOFTFILTER_TYPE_MASK  // CanIfCanRxPduCanIdMask in RxPduConfig is used for filtering\r
 } CanIf_SoftwareFilterTypeType;\r
 \r
 typedef enum {\r
        CANIF_USER_TYPE_CAN_NM,\r
        CANIF_USER_TYPE_CAN_TP,\r
        CANIF_USER_TYPE_CAN_PDUR,\r
-       CANIF_USER_TYPE_CAN_SPECIAL,\r
+       CANIF_USER_TYPE_CAN_SPECIAL\r
 } CanIf_UserTypeType;\r
 \r
 \r
@@ -83,18 +83,6 @@ typedef enum {
 #define CANIF_TRANSCEIVER_API               STD_OFF  // Not supported\r
 #define CANIF_TRANSMIT_CANCELLATION         STD_OFF  // Not supported\r
 \r
-//-------------------------------------------------------------------\r
-\r
-typedef struct {\r
-       void (*CancelTxConfirmation)( void *);  // (const Can_PduType *);\r
-       void (*RxIndication)(void *); //(const Can_PduType *);\r
-       void (*ControllerBusOff)(uint8);\r
-       void (*ControllerWakeup)(uint8);\r
-       void (*Arc_Error)(uint8,uint32);\r
-} CanIf_CallbackType;\r
-\r
-\r
-\r
 //-------------------------------------------------------------------\r
 /*\r
  * CanIfHrhRangeConfig container\r
@@ -329,7 +317,7 @@ typedef struct {
 typedef enum {\r
        CANIF_WAKEUP_SUPPORT_CONTROLLER,\r
        CANIF_WAKEUP_SUPPORT_NO_WAKEUP,\r
-       CANIF_WAKEUP_SUPPORT_TRANSCEIVER,\r
+       CANIF_WAKEUP_SUPPORT_TRANSCEIVER\r
 } CanIf_WakeupSupportType;\r
 \r
 \r
@@ -340,7 +328,7 @@ typedef struct {
        // CanIf-specific id of the controller\r
        CanIf_Arc_ChannelIdType CanIfControllerIdRef;\r
 \r
-       const char CanIfDriverNameRef[8]; // Not used\r
+       const uint8 CanIfDriverNameRef[8]; // Not used\r
 \r
        const Can_ControllerConfigType *CanIfInitControllerRef;\r
 } CanIf_ControllerConfigType;\r
index 8c9b6983dbb96920005fb546cbef2091bbc91519..187b50e595a75a90fbf372cb87905f597d27ffa3 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 17:45:16 CET 2010\r
+ *           on Mon Jan 17 08:38:47 CET 2011\r
  */\r
 \r
 
-#if (CAN_SW_MAJOR_VERSION != 1) 
+#if !(((CAN_SW_MAJOR_VERSION == 1) && (CAN_SW_MINOR_VERSION == 0)) )
 #error "Can: Configuration file version differs from BSW version."
 #endif
 
@@ -44,12 +44,12 @@ typedef enum {
 typedef enum {\r
        CAN_ID_TYPE_EXTENDED,\r
        CAN_ID_TYPE_MIXED,\r
-       CAN_ID_TYPE_STANDARD,\r
+       CAN_ID_TYPE_STANDARD\r
 } Can_IdTypeType;\r
 \r
 typedef enum {\r
        CAN_OBJECT_TYPE_RECEIVE,\r
-       CAN_OBJECT_TYPE_TRANSMIT,\r
+       CAN_OBJECT_TYPE_TRANSMIT\r
 } Can_ObjectTypeType;\r
 \r
 \r
@@ -84,7 +84,7 @@ typedef struct {
 typedef struct {\r
        //      Specifies the InstanceId of this module instance. If only one instance is\r
        //      present it shall have the Id 0\r
-       int CanIndex;\r
+       uint8 CanIndex;\r
 } Can_GeneralType;\r
 \r
 // Start mc9s12 unique\r
@@ -137,7 +137,7 @@ typedef struct Can_HardwareObjectStruct {
 \r
 typedef enum {\r
        CAN_ARC_PROCESS_TYPE_INTERRUPT,\r
-       CAN_ARC_PROCESS_TYPE_POLLING,\r
+       CAN_ARC_PROCESS_TYPE_POLLING\r
 } Can_Arc_ProcessType;\r
 \r
 typedef struct {\r
index 9e56d52c6e3b4f10541a3255b42e484617450334..101109ddb11ab2c892a6002773b8ff339a86b7cc 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 17:45:17 CET 2010\r
+ *           on Mon Jan 17 08:38:48 CET 2011\r
  */\r
 \r
        \r
index 6d6204c0c4a1fcba577440a47c5b57eff3157ba8..2d8060aa7042bbbd009e39555d5150df1d3724b2 100644 (file)
@@ -9,17 +9,17 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 17:45:16 CET 2010\r
+ *           on Mon Jan 17 08:38:47 CET 2011\r
  */\r
 \r
 
-#if (COM_SW_MAJOR_VERSION != 1) 
+#if !(((COM_SW_MAJOR_VERSION == 1) && (COM_SW_MINOR_VERSION == 1)) )
 #error "Com: Configuration file version differs from BSW version."
 #endif
 
 \r
-#ifndef COM_CFG_H_\r
-#define COM_CFG_H_\r
+#ifndef COM_CFG_H\r
+#define COM_CFG_H\r
 \r
 #define COM_MODULE_ID 20\r
 #define COM_INSTANCE_ID 1\r
@@ -45,4 +45,4 @@
 #define ComConfigurationTimeBase 0.0\r
 #define ComVersionInfoApi\r
 \r
-#endif /*COM_CFG_H_*/\r
+#endif /*COM_CFG_H*/\r
index a289b479caa81b2f08847588122da0bb6b352461..5ef6e6feb43f871ac64027611bf7be984b092742 100644 (file)
@@ -9,12 +9,13 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 17:45:16 CET 2010\r
+ *           on Mon Jan 17 08:38:47 CET 2011\r
  */\r
 \r
 \r
 #include "Com.h"\r
-#include "stdlib.h"\r
+#include "Com_Internal.h"\r
+#include <stdlib.h>\r
 #if defined(USE_PDUR)\r
 #include "PduR.h"\r
 #endif\r
@@ -51,16 +52,23 @@ const ComSignal_type ComSignal[] = {
                .ComNotification = NULL,\r
                .ComTimeoutFactor = 0,\r
                .ComTimeoutNotification = NULL,\r
+               .ComErrorNotification = NULL,\r
                .ComTransferProperty = TRIGGERED,\r
                \r
+               .ComUpdateBitPosition = 0,\r
+               .ComSignalArcUseUpdateBit = 0,\r
+               \r
                \r
                .ComSignalInitValue = &Com_SignalInitValue_SetLedLevelRx,\r
                .ComBitPosition = 7,\r
                .ComBitSize = 16,\r
                .ComSignalEndianess = COM_BIG_ENDIAN,\r
                .ComSignalType = UINT16,\r
+               .Com_Arc_IsSignalGroup = 0,\r
                .ComGroupSignal = NULL,\r
                \r
+               .ComRxDataTimeoutAction = COM_TIMEOUT_DATA_ACTION_NONE,\r
+               .Com_Arc_EOL = 0\r
        },\r
        {\r
                .Com_Arc_EOL = 1\r
@@ -73,7 +81,8 @@ const ComSignal_type ComSignal[] = {
  */\r
 const ComIPduGroup_type ComIPduGroup[] = {\r
        {\r
-               .ComIPduGroupHandleId = RxGroup\r
+               .ComIPduGroupHandleId = RxGroup,\r
+               .Com_Arc_EOL = 0\r
        },\r
        \r
        {\r
@@ -100,7 +109,20 @@ const ComIPdu_type ComIPdu[] = {
                .ComIPduDirection = RECEIVE,\r
                .ComIPduGroupRef = RxGroup,\r
                \r
+               .ComTxIPdu = {\r
+                       .ComTxIPduMinimumDelayFactor = 0,\r
+                       .ComTxIPduUnusedAreasDefault = 0,\r
+                       .ComTxModeTrue = {\r
+                               .ComTxModeMode = NONE,\r
+                               .ComTxModeNumberOfRepetitions = 0,\r
+                               .ComTxModeRepetitionPeriodFactor = 0,\r
+                               .ComTxModeTimeOffsetFactor = 0,\r
+                               .ComTxModeTimePeriodFactor = 0,\r
+                       },\r
+               },\r
+               \r
                .ComIPduSignalRef = ComIPduSignalRefs_LedCommandRx,\r
+               .Com_Arc_EOL = 0\r
        },   \r
        {\r
                .Com_Arc_EOL = 1\r
@@ -115,4 +137,48 @@ const Com_ConfigType ComConfiguration = {
        .ComGroupSignal = ComGroupSignal\r
 };\r
 \r
+/* IPdu buffers and signal group buffers */\r
+uint8 ComArcIPduBuffer_LedCommandRx[8];\r
+          \r
+\r
+Com_Arc_IPdu_type Com_Arc_IPdu[] = {\r
+       { // LedCommandRx\r
+               .Com_Arc_TxIPduTimers = {\r
+                       .ComTxIPduNumberOfRepetitionsLeft = 0,\r
+                       .ComTxModeRepetitionPeriodTimer = 0,\r
+                       .ComTxIPduMinimumDelayTimer = 0,\r
+                       .ComTxModeTimePeriodTimer = 0\r
+               },\r
+               .ComIPduDataPtr = ComArcIPduBuffer_LedCommandRx,\r
+               .Com_Arc_IpduStarted = 0        \r
+       },\r
+};\r
+\r
+Com_Arc_Signal_type Com_Arc_Signal[] = {\r
+       { // SetLedLevelRx\r
+               .Com_Arc_DeadlineCounter = 0,\r
+               .ComTimeoutFactor = 0,\r
+               .ComIPduHandleId = 0,\r
+               .ComSignalUpdated = 0,\r
+               .ComIPduDataPtr = NULL,\r
+               \r
+               .Com_Arc_ShadowBuffer = NULL\r
+               \r
+       },\r
+       \r
+};\r
+\r
+Com_Arc_GroupSignal_type Com_Arc_GroupSignal[COM_N_GROUP_SIGNALS];\r
+\r
+uint8 outgoingSduPtr[8];\r
+\r
+Com_Arc_Config_type Com_Arc_Config = {\r
+       .ComIPdu = Com_Arc_IPdu,\r
+       .ComSignal = Com_Arc_Signal,\r
+       .ComGroupSignal = Com_Arc_GroupSignal,\r
+       .OutgoingPdu = {\r
+                       .SduDataPtr = outgoingSduPtr,\r
+                       .SduLength = 0\r
+               }\r
+};\r
 \r
index 7080696c8ab6383364fcbffe18d634133d9b3985..e0aa7cdc537d8e3535d65aa7caf9357e2c9db26f 100644 (file)
@@ -9,16 +9,16 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 17:45:16 CET 2010\r
+ *           on Mon Jan 17 08:38:47 CET 2011\r
  */\r
 \r
 
-#if (COM_SW_MAJOR_VERSION != 1) 
+#if !(((COM_SW_MAJOR_VERSION == 1) && (COM_SW_MINOR_VERSION == 1)) )
 #error "Com: Configuration file version differs from BSW version."
 #endif
 
-#ifndef COM_PBCFG_H_\r
-#define COM_PBCFG_H_\r
+#ifndef COM_PBCFG_H\r
+#define COM_PBCFG_H\r
 \r
 #include "Com_Types.h"\r
 \r
@@ -30,16 +30,13 @@ extern const Com_ConfigType ComConfiguration;
 \r
 \r
 // PDU group definitions\r
-enum {\r
-       RxGroup = 0,\r
-};\r
+#define RxGroup 0\r
+\r
 \r
 // Signal definitions\r
-enum {\r
-       SetLedLevelRx = 0,\r
-};\r
+#define SetLedLevelRx 0\r
 \r
 \r
 \r
 \r
-#endif /* COM_PBCFG_H_ */\r
+#endif /* COM_PBCFG_H */\r
index b886b94ab87db232ff3a467e41d70269ac847dba..584f329d37dcb10975c09c03181ccedaf695f4f6 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 17:45:16 CET 2010\r
+ *           on Mon Jan 17 08:38:47 CET 2011\r
  */\r
 \r
 
-#if (ECUM_SW_MAJOR_VERSION != 2 && ECUM_SW_MINOR_VERSION != 0)
+#if !(((ECUM_SW_MAJOR_VERSION == 2) && (ECUM_SW_MINOR_VERSION == 0)) )
 #error "EcuM: Configuration file version differs from BSW version."
 #endif
 
index 7fee792a2915f10daf190ccbb4b3785f08dfdb23..564ce147db69d8b8b3334d90538f870860431314 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 17:45:16 CET 2010\r
+ *           on Mon Jan 17 08:38:47 CET 2011\r
  */\r
 \r
        \r
index a0b6dcfde18e2d790905c3a0855771b619afe4b6..1d6ed04ac9a057826211f1a4651ab4354254e9d7 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 17:45:16 CET 2010\r
+ *           on Mon Jan 17 08:38:47 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
index 6dfb9cc65ef04dfeafb5a0fb968fbdaba5152b8c..023310fcd15d1d3bb36886b9671387ff0063f9ab 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 17:45:16 CET 2010\r
+ *           on Mon Jan 17 08:38:47 CET 2011\r
  */\r
 \r
 
-#if (PDUR_SW_MAJOR_VERSION != 1) 
+#if !(((PDUR_SW_MAJOR_VERSION == 1) && (PDUR_SW_MINOR_VERSION == 0)) )
 #error "PduR: Configuration file version differs from BSW version."
 #endif
 
index 95869b20ad8f18d34fba9b5305df526d6d19b1d4..79d814b1cc10288d2d7798c817fc205e06d55d12 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 17:45:16 CET 2010\r
+ *           on Mon Jan 17 08:38:47 CET 2011\r
  */\r
 \r
 \r
index cf13ca8a6ac863d03f80235fa80cea1092c2c25d..2bd3c684288941b0643d33c934eb4bfc60002020 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 17:45:16 CET 2010\r
+ *           on Mon Jan 17 08:38:47 CET 2011\r
  */\r
 \r
 
-#if (PDUR_SW_MAJOR_VERSION != 1) 
+#if !(((PDUR_SW_MAJOR_VERSION == 1) && (PDUR_SW_MINOR_VERSION == 0)) )
 #error "PduR: Configuration file version differs from BSW version."
 #endif
 
index efd4447436891107eb8efb528e7b8570194c613e..21885a0da74ac5d74ffbc7d74ad366c9a81f8e03 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 17:45:16 CET 2010\r
+ *           on Mon Jan 17 08:38:47 CET 2011\r
  */\r
 \r
        \r
index c98425aeb260c98a664d05c56b93d3252be4d2a7..5da48f88607f032232b069146af61faad13a9895 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 17:45:16 CET 2010\r
+ *           on Mon Jan 17 08:38:47 CET 2011\r
  */\r
 \r
 
-#if (PORT_SW_MAJOR_VERSION != 1) 
+#if !(((PORT_SW_MAJOR_VERSION == 1) && (PORT_SW_MINOR_VERSION == 0)) )
 #error "Port: Configuration file version differs from BSW version."
 #endif
 
index a93e0268d7b0205559e622af7c491486bae66404..b592282196aa4f5543f51efa5b4455ec093f63b7 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 17:45:16 CET 2010\r
+ *           on Mon Jan 17 08:38:47 CET 2011\r
  */\r
 \r
 \r
index f2cceabe75a6449594c4d8e94361f1d322620a6d..b0e5e3b5ae009bc43ca96f4507b9c59304eebbe1 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 17:45:16 CET 2010\r
+ *           on Mon Jan 17 08:38:47 CET 2011\r
  */\r
 \r
 
-#if (PWM_SW_MAJOR_VERSION != 1) 
+#if !(((PWM_SW_MAJOR_VERSION == 1) && (PWM_SW_MINOR_VERSION == 0)) )
 #error "Pwm: Configuration file version differs from BSW version."
 #endif
 
index 0fc705f099f6370a2b98eb37334b74c8429d9970..49be17f2ca1d089657946fe0ca657177896fa432 100644 (file)
@@ -5,11 +5,11 @@
  * Configured for (MCU): MPC551x\r
  *\r
  * Module vendor: ArcCore\r
- * Module version: 2.0.3\r
+ * Module version: 2.0.4\r
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Fri Dec 03 08:32:04 CET 2010\r
+ *           on Mon Jan 17 11:45:29 CET 2011\r
  */\r
 \r
 \r
index f6744a1841ef78cfabdab5c16ddfd5f4081d4b09..61d33fd70bf3a0f3b638fd42c3dcfcb0c3d1b862 100644 (file)
@@ -5,15 +5,15 @@
  * Configured for (MCU): MPC551x\r
  *\r
  * Module vendor: ArcCore\r
- * Module version: 2.0.3\r
+ * Module version: 2.0.4\r
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Fri Dec 03 08:32:03 CET 2010\r
+ *           on Mon Jan 17 11:45:29 CET 2011\r
  */\r
 \r
 
-#if (CANIF_SW_MAJOR_VERSION != 1 && CANIF_SW_MINOR_VERSION != 1) 
+#if !(((CANIF_SW_MAJOR_VERSION == 1) && (CANIF_SW_MINOR_VERSION == 1)) )
 #error "CanIf: Configuration file version differs from BSW version."
 #endif
 
@@ -45,14 +45,14 @@ typedef enum {
        CANIF_SOFTFILTER_TYPE_INDEX,  // Not supported\r
        CANIF_SOFTFILTER_TYPE_LINEAR, // Not supported\r
        CANIF_SOFTFILTER_TYPE_TABLE,  // Not supported\r
-       CANIF_SOFTFILTER_TYPE_MASK,  // CanIfCanRxPduCanIdMask in RxPduConfig is used for filtering\r
+       CANIF_SOFTFILTER_TYPE_MASK  // CanIfCanRxPduCanIdMask in RxPduConfig is used for filtering\r
 } CanIf_SoftwareFilterTypeType;\r
 \r
 typedef enum {\r
        CANIF_USER_TYPE_CAN_NM,\r
        CANIF_USER_TYPE_CAN_TP,\r
        CANIF_USER_TYPE_CAN_PDUR,\r
-       CANIF_USER_TYPE_CAN_SPECIAL,\r
+       CANIF_USER_TYPE_CAN_SPECIAL\r
 } CanIf_UserTypeType;\r
 \r
 \r
@@ -83,18 +83,6 @@ typedef enum {
 #define CANIF_TRANSCEIVER_API               STD_OFF  // Not supported\r
 #define CANIF_TRANSMIT_CANCELLATION         STD_OFF  // Not supported\r
 \r
-//-------------------------------------------------------------------\r
-\r
-typedef struct {\r
-       void (*CancelTxConfirmation)( void *);  // (const Can_PduType *);\r
-       void (*RxIndication)(void *); //(const Can_PduType *);\r
-       void (*ControllerBusOff)(uint8);\r
-       void (*ControllerWakeup)(uint8);\r
-       void (*Arc_Error)(uint8,uint32);\r
-} CanIf_CallbackType;\r
-\r
-\r
-\r
 //-------------------------------------------------------------------\r
 /*\r
  * CanIfHrhRangeConfig container\r
@@ -329,7 +317,7 @@ typedef struct {
 typedef enum {\r
        CANIF_WAKEUP_SUPPORT_CONTROLLER,\r
        CANIF_WAKEUP_SUPPORT_NO_WAKEUP,\r
-       CANIF_WAKEUP_SUPPORT_TRANSCEIVER,\r
+       CANIF_WAKEUP_SUPPORT_TRANSCEIVER\r
 } CanIf_WakeupSupportType;\r
 \r
 \r
@@ -340,7 +328,7 @@ typedef struct {
        // CanIf-specific id of the controller\r
        CanIf_Arc_ChannelIdType CanIfControllerIdRef;\r
 \r
-       const char CanIfDriverNameRef[8]; // Not used\r
+       const uint8 CanIfDriverNameRef[8]; // Not used\r
 \r
        const Can_ControllerConfigType *CanIfInitControllerRef;\r
 } CanIf_ControllerConfigType;\r
index bbc864be81bbce99d8b2d456d71b1d906d5a00d4..7c1f4e8866432685b574985227fc301f327f096f 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Fri Dec 03 08:32:03 CET 2010\r
+ *           on Mon Jan 17 11:45:29 CET 2011\r
  */\r
 \r
 
-#if (CAN_SW_MAJOR_VERSION != 1) 
+#if !(((CAN_SW_MAJOR_VERSION == 1) && (CAN_SW_MINOR_VERSION == 0)) )
 #error "Can: Configuration file version differs from BSW version."
 #endif
 
@@ -51,12 +51,12 @@ typedef enum {
 typedef enum {\r
        CAN_ID_TYPE_EXTENDED,\r
        CAN_ID_TYPE_MIXED,\r
-       CAN_ID_TYPE_STANDARD,\r
+       CAN_ID_TYPE_STANDARD\r
 } Can_IdTypeType;\r
 \r
 typedef enum {\r
        CAN_OBJECT_TYPE_RECEIVE,\r
-       CAN_OBJECT_TYPE_TRANSMIT,\r
+       CAN_OBJECT_TYPE_TRANSMIT\r
 } Can_ObjectTypeType;\r
 \r
 \r
@@ -90,7 +90,7 @@ typedef struct {
 typedef struct {\r
        //      Specifies the InstanceId of this module instance. If only one instance is\r
        //      present it shall have the Id 0\r
-       int CanIndex;\r
+       uint8 CanIndex;\r
 } Can_GeneralType;\r
 \r
 // Start mc9s12 unique\r
@@ -138,7 +138,7 @@ typedef struct Can_HardwareObjectStruct {
 \r
 typedef enum {\r
        CAN_ARC_PROCESS_TYPE_INTERRUPT,\r
-       CAN_ARC_PROCESS_TYPE_POLLING,\r
+       CAN_ARC_PROCESS_TYPE_POLLING\r
 } Can_Arc_ProcessType;\r
 \r
 typedef struct {\r
index 8545526143c04067344bdc2716091d2dbfe126a7..7270f14b7ea57b37d99f9ddf06abda0d7508e322 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Fri Dec 03 08:32:03 CET 2010\r
+ *           on Mon Jan 17 11:45:29 CET 2011\r
  */\r
 \r
        \r
index ed7b02e180313d002a8180f2ebd3cb785789eede..b74a8905ee5c33e2d3580cd514b6bfb52d62722d 100644 (file)
@@ -9,17 +9,17 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Fri Dec 03 08:32:04 CET 2010\r
+ *           on Mon Jan 17 11:45:30 CET 2011\r
  */\r
 \r
 
-#if (COM_SW_MAJOR_VERSION != 1) 
+#if !(((COM_SW_MAJOR_VERSION == 1) && (COM_SW_MINOR_VERSION == 1)) )
 #error "Com: Configuration file version differs from BSW version."
 #endif
 
 \r
-#ifndef COM_CFG_H_\r
-#define COM_CFG_H_\r
+#ifndef COM_CFG_H\r
+#define COM_CFG_H\r
 \r
 #define COM_MODULE_ID 20\r
 #define COM_INSTANCE_ID 1\r
@@ -45,4 +45,4 @@
 #define ComConfigurationTimeBase 0.0\r
 #define ComVersionInfoApi\r
 \r
-#endif /*COM_CFG_H_*/\r
+#endif /*COM_CFG_H*/\r
index 2aa3086d2c88ca163d213ba63b66464c74ade362..7a79880f56bd46f02ba94f1b5fc07d27927234a6 100644 (file)
@@ -9,12 +9,13 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Fri Dec 03 08:32:04 CET 2010\r
+ *           on Mon Jan 17 11:45:30 CET 2011\r
  */\r
 \r
 \r
 #include "Com.h"\r
-#include "stdlib.h"\r
+#include "Com_Internal.h"\r
+#include <stdlib.h>\r
 #if defined(USE_PDUR)\r
 #include "PduR.h"\r
 #endif\r
@@ -51,16 +52,23 @@ const ComSignal_type ComSignal[] = {
                .ComNotification = NULL,\r
                .ComTimeoutFactor = 0,\r
                .ComTimeoutNotification = NULL,\r
+               .ComErrorNotification = NULL,\r
                .ComTransferProperty = TRIGGERED,\r
                \r
+               .ComUpdateBitPosition = 0,\r
+               .ComSignalArcUseUpdateBit = 0,\r
+               \r
                \r
                .ComSignalInitValue = &Com_SignalInitValue_SetLedLevelRx,\r
                .ComBitPosition = 7,\r
                .ComBitSize = 16,\r
                .ComSignalEndianess = COM_BIG_ENDIAN,\r
                .ComSignalType = UINT16,\r
+               .Com_Arc_IsSignalGroup = 0,\r
                .ComGroupSignal = NULL,\r
                \r
+               .ComRxDataTimeoutAction = COM_TIMEOUT_DATA_ACTION_NONE,\r
+               .Com_Arc_EOL = 0\r
        },\r
        {\r
                .Com_Arc_EOL = 1\r
@@ -73,7 +81,8 @@ const ComSignal_type ComSignal[] = {
  */\r
 const ComIPduGroup_type ComIPduGroup[] = {\r
        {\r
-               .ComIPduGroupHandleId = RxGroup\r
+               .ComIPduGroupHandleId = RxGroup,\r
+               .Com_Arc_EOL = 0\r
        },\r
        \r
        {\r
@@ -100,7 +109,20 @@ const ComIPdu_type ComIPdu[] = {
                .ComIPduDirection = RECEIVE,\r
                .ComIPduGroupRef = RxGroup,\r
                \r
+               .ComTxIPdu = {\r
+                       .ComTxIPduMinimumDelayFactor = 0,\r
+                       .ComTxIPduUnusedAreasDefault = 0,\r
+                       .ComTxModeTrue = {\r
+                               .ComTxModeMode = NONE,\r
+                               .ComTxModeNumberOfRepetitions = 0,\r
+                               .ComTxModeRepetitionPeriodFactor = 0,\r
+                               .ComTxModeTimeOffsetFactor = 0,\r
+                               .ComTxModeTimePeriodFactor = 0,\r
+                       },\r
+               },\r
+               \r
                .ComIPduSignalRef = ComIPduSignalRefs_LedCommandRx,\r
+               .Com_Arc_EOL = 0\r
        },   \r
        {\r
                .Com_Arc_EOL = 1\r
@@ -115,4 +137,48 @@ const Com_ConfigType ComConfiguration = {
        .ComGroupSignal = ComGroupSignal\r
 };\r
 \r
+/* IPdu buffers and signal group buffers */\r
+uint8 ComArcIPduBuffer_LedCommandRx[8];\r
+          \r
+\r
+Com_Arc_IPdu_type Com_Arc_IPdu[] = {\r
+       { // LedCommandRx\r
+               .Com_Arc_TxIPduTimers = {\r
+                       .ComTxIPduNumberOfRepetitionsLeft = 0,\r
+                       .ComTxModeRepetitionPeriodTimer = 0,\r
+                       .ComTxIPduMinimumDelayTimer = 0,\r
+                       .ComTxModeTimePeriodTimer = 0\r
+               },\r
+               .ComIPduDataPtr = ComArcIPduBuffer_LedCommandRx,\r
+               .Com_Arc_IpduStarted = 0        \r
+       },\r
+};\r
+\r
+Com_Arc_Signal_type Com_Arc_Signal[] = {\r
+       { // SetLedLevelRx\r
+               .Com_Arc_DeadlineCounter = 0,\r
+               .ComTimeoutFactor = 0,\r
+               .ComIPduHandleId = 0,\r
+               .ComSignalUpdated = 0,\r
+               .ComIPduDataPtr = NULL,\r
+               \r
+               .Com_Arc_ShadowBuffer = NULL\r
+               \r
+       },\r
+       \r
+};\r
+\r
+Com_Arc_GroupSignal_type Com_Arc_GroupSignal[COM_N_GROUP_SIGNALS];\r
+\r
+uint8 outgoingSduPtr[8];\r
+\r
+Com_Arc_Config_type Com_Arc_Config = {\r
+       .ComIPdu = Com_Arc_IPdu,\r
+       .ComSignal = Com_Arc_Signal,\r
+       .ComGroupSignal = Com_Arc_GroupSignal,\r
+       .OutgoingPdu = {\r
+                       .SduDataPtr = outgoingSduPtr,\r
+                       .SduLength = 0\r
+               }\r
+};\r
 \r
index 20b7e36c82f86fe2ce7aa81dfe4ccf1b10defe68..ba6125eff643fb78a9876cf708d3a4f22087176c 100644 (file)
@@ -9,16 +9,16 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Fri Dec 03 08:32:04 CET 2010\r
+ *           on Mon Jan 17 11:45:30 CET 2011\r
  */\r
 \r
 
-#if (COM_SW_MAJOR_VERSION != 1) 
+#if !(((COM_SW_MAJOR_VERSION == 1) && (COM_SW_MINOR_VERSION == 1)) )
 #error "Com: Configuration file version differs from BSW version."
 #endif
 
-#ifndef COM_PBCFG_H_\r
-#define COM_PBCFG_H_\r
+#ifndef COM_PBCFG_H\r
+#define COM_PBCFG_H\r
 \r
 #include "Com_Types.h"\r
 \r
@@ -30,16 +30,13 @@ extern const Com_ConfigType ComConfiguration;
 \r
 \r
 // PDU group definitions\r
-enum {\r
-       RxGroup = 0,\r
-};\r
+#define RxGroup 0\r
+\r
 \r
 // Signal definitions\r
-enum {\r
-       SetLedLevelRx = 0,\r
-};\r
+#define SetLedLevelRx 0\r
 \r
 \r
 \r
 \r
-#endif /* COM_PBCFG_H_ */\r
+#endif /* COM_PBCFG_H */\r
index f88f74b4eb99313f7578c18dd2793307d6f4c619..b1da2603be20fe6b318f9c4d7621dc6045941712 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Fri Dec 03 08:32:04 CET 2010\r
+ *           on Mon Jan 17 11:45:30 CET 2011\r
  */\r
 \r
 
-#if (ECUM_SW_MAJOR_VERSION != 2 && ECUM_SW_MINOR_VERSION != 0) 
+#if !(((ECUM_SW_MAJOR_VERSION == 2) && (ECUM_SW_MINOR_VERSION == 0)) )
 #error "EcuM: Configuration file version differs from BSW version."
 #endif
 
index 90dede06997a1d5a44dd078e2edfec0a4a038c39..abe6072f2377337a5f33209e333b4fd086bf20c3 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Fri Dec 03 08:32:04 CET 2010\r
+ *           on Mon Jan 17 11:45:30 CET 2011\r
  */\r
 \r
        \r
index 16b06d0f97712c1249870c96dac2a29091d0cb41..72d263bc20e9c4b0b0734bd3a84f2bd5942ce48a 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Fri Dec 03 08:32:04 CET 2010\r
+ *           on Mon Jan 17 11:45:30 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
index 6acc16d1d1d6d075f9fe9a53d79b24352d35e5f2..03a405fec7073ed0e07072104cef8747a63fe876 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Fri Dec 03 08:32:04 CET 2010\r
+ *           on Mon Jan 17 11:45:30 CET 2011\r
  */\r
 \r
 
-#if (PDUR_SW_MAJOR_VERSION != 1) 
+#if !(((PDUR_SW_MAJOR_VERSION == 1) && (PDUR_SW_MINOR_VERSION == 0)) )
 #error "PduR: Configuration file version differs from BSW version."
 #endif
 
index 43083006bf95dfb91fc4a1856addf57e2de41d5f..2bcb0c329c2490fd3ebff90f5716c5d6ab1d8089 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Fri Dec 03 08:32:04 CET 2010\r
+ *           on Mon Jan 17 11:45:30 CET 2011\r
  */\r
 \r
 \r
index 8c286c69b5e20ee046bb812d3ec0a75798205c9d..f65fa40e6c38d6bce1f5074a326599b935a5c958 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Fri Dec 03 08:32:04 CET 2010\r
+ *           on Mon Jan 17 11:45:30 CET 2011\r
  */\r
 \r
 
-#if (PDUR_SW_MAJOR_VERSION != 1) 
+#if !(((PDUR_SW_MAJOR_VERSION == 1) && (PDUR_SW_MINOR_VERSION == 0)) )
 #error "PduR: Configuration file version differs from BSW version."
 #endif
 
index edfbd2507f51a257026588cd68915b89c63d4627..c41f72b766b8edea75bf1c7e90b1114cda04ccfd 100644 (file)
@@ -9,16 +9,16 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Fri Dec 03 09:38:31 CET 2010\r
+ *           on Mon Jan 17 11:45:30 CET 2011\r
  */\r
 \r
        \r
-// File generated on Fri Dec 03 09:38:31 CET 2010\r
+// File generated on Mon Jan 17 11:45:30 CET 2011\r
 // File generated by com.arccore.bswbuilder.modules.port.mpc5516\r
 \r
 #include "Port.h"\r
 #include "Port_Cfg.h"\r
-#include "stdlib.h"\r
+#include <stdlib.h>\r
 \r
 const uint16_t PortPadConfigData[] = {\r
        PORT_PCR_RESET,                 /* PCR  0 */\r
index c77e0eb16e0bfcc0aa602bdca4e281e3b96a110b..bf253f4268abaaa466d0c53c6bdcefaca2db78af 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Fri Dec 03 09:38:31 CET 2010\r
+ *           on Mon Jan 17 11:45:30 CET 2011\r
  */\r
 \r
 
-#if (PORT_SW_MAJOR_VERSION != 1) 
+#if !(((PORT_SW_MAJOR_VERSION == 1) && (PORT_SW_MINOR_VERSION == 0)) )
 #error "Port: Configuration file version differs from BSW version."
 #endif
 
index a99221ab0f322d4cfdda15443b3fd09d22efad89..a7509661e52c112b52e311937e57d4c18e0ffffa 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Fri Dec 03 08:32:04 CET 2010\r
+ *           on Mon Jan 17 11:45:30 CET 2011\r
  */\r
 \r
 /*\r
@@ -44,10 +44,8 @@ const Pwm_ConfigType PwmConfig = {
        },\r
 #if PWM_NOTIFICATION_SUPPORTED==ON\r
        .NotificationHandlers = {\r
-               // Notification routine for PWM_CHANNEL_1\r
-               ,\r
-               \r
+// Notification routine for PWM_CHANNEL_1\r
+               NULL,                                                   \r
        }\r
 #endif\r
 };\r
-       
\ No newline at end of file
index 0deb8e896fc287f2dbc9169d5fa8061515b734c4..3804fbb31d7de4e88db00c6bd80d3fb15e2f3b8b 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Fri Dec 03 08:32:04 CET 2010\r
+ *           on Mon Jan 17 11:45:30 CET 2011\r
  */\r
 \r
 
-#if (PWM_SW_MAJOR_VERSION != 1) 
+#if !(((PWM_SW_MAJOR_VERSION == 1) && (PWM_SW_MINOR_VERSION == 0)) )
 #error "Pwm: Configuration file version differs from BSW version."
 #endif
 
@@ -185,4 +185,3 @@ typedef struct {
     }\r
 \r
 #endif /* PWM_CFG_H_ */\r
-       
\ No newline at end of file
index 4cb517cde4d4ed72108eba69b10792a79820c42c..7fb9d2d5b9a298efe1a409b8b93415caac72baaa 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 11:27:09 CET 2010\r
+ *           on Mon Jan 17 14:52:25 CET 2011\r
  */\r
 \r
        \r
index cedc4387a6c6c8a0abfd7ea620a921d88f0e01a2..82649a11dca003023de8060e476bd41f8a32a361 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 11:27:09 CET 2010\r
+ *           on Mon Jan 17 14:52:25 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
index a6f1c4702edfef4266b8399f57206c55c367fa7d..ee56079c432fa120d07654922ae1d8dd3b4c2955 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 11:29:27 CET 2010\r
+ *           on Mon Jan 17 10:42:01 CET 2011\r
  */\r
 \r
        \r
index 3d58ba661d7a9224ba071af203d73927353f108a..10d45ae432cba263f1e1020f060790b78e496c45 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 11:29:27 CET 2010\r
+ *           on Mon Jan 17 10:42:01 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
index 069611fa6d7795add9460b975ec410a2842b2590..c0e930a5d7b3301af02c2d8bcafe15371e08e5c2 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Mon Dec 06 14:44:20 CET 2010\r
+ *           on Mon Jan 17 12:21:12 CET 2011\r
  */\r
 \r
        \r
index ea70ddb57667011387e7469cf4eb588f6c9c976e..ee062de2239787e7379cfcd9524bf086d3929887 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Mon Dec 06 14:44:20 CET 2010\r
+ *           on Mon Jan 17 12:21:12 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
index 069611fa6d7795add9460b975ec410a2842b2590..706d961749f29a496cc685644e375f3c710d1780 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Mon Dec 06 14:44:20 CET 2010\r
+ *           on Fri Jan 14 10:52:54 CET 2011\r
  */\r
 \r
        \r
index ea70ddb57667011387e7469cf4eb588f6c9c976e..a360ccfe1a3809d76a7089a0dbcf43c32cafad3e 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Mon Dec 06 14:44:20 CET 2010\r
+ *           on Fri Jan 14 10:52:54 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
index 9122ec48834bb6d1c3405fd0a71e5d630ea9d75d..3a9b535e992f9406afde89d768089deef6dad970 100644 (file)
@@ -2,14 +2,14 @@
  * Configuration of module Os (Os_Cfg.c)\r
  *\r
  * Created by: \r
- * Configured for (MCU): Cortex M3\r
+ * Configured for (MCU): STM32_F107\r
  *\r
  * Module vendor: ArcCore\r
  * Module version: 2.0.11\r
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Thu Dec 02 17:01:44 CET 2010\r
+ *           on Mon Jan 17 08:49:22 CET 2011\r
  */\r
 \r
        \r
index 3de7ac1b1e08360ccf9c64822f48181857ac6526..ee1235aae1b186977374007cbd25b2d266810b82 100644 (file)
@@ -2,18 +2,18 @@
  * Configuration of module Os (Os_Cfg.h)\r
  *\r
  * Created by: \r
- * Configured for (MCU): Cortex M3\r
+ * Configured for (MCU): STM32_F107\r
  *\r
  * Module vendor: ArcCore\r
  * Module version: 2.0.11\r
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Thu Dec 02 17:01:44 CET 2010\r
+ *           on Mon Jan 17 08:49:22 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
index e90c96614093d18f246b0548884b7c86aa587801..67fd2705651a7fe291f96029345f8352bf885d3a 100644 (file)
@@ -2,14 +2,14 @@
  * Configuration of module Os (Os_Cfg.c)\r
  *\r
  * Created by: \r
- * Configured for (MCU): Cortex M3\r
+ * Configured for (MCU): STM32_F103\r
  *\r
  * Module vendor: ArcCore\r
  * Module version: 2.0.11\r
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 15:35:30 CET 2010\r
+ *           on Fri Jan 14 09:13:21 CET 2011\r
  */\r
 \r
        \r
index dc15f1e679344ff82da558577d63856a5f70a175..517ed4acbaea208def9843cd6b2e87aa1a5432d5 100644 (file)
@@ -2,18 +2,18 @@
  * Configuration of module Os (Os_Cfg.h)\r
  *\r
  * Created by: \r
- * Configured for (MCU): Cortex M3\r
+ * Configured for (MCU): STM32_F103\r
  *\r
  * Module vendor: ArcCore\r
  * Module version: 2.0.11\r
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 15:35:30 CET 2010\r
+ *           on Fri Jan 14 09:13:21 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
index 20c2f70f2259f5c38a1dcb7fbc0d9f20eae132fc..5156b08d110bf6f3c48780a0a688f1bd8395f5a5 100644 (file)
@@ -20,7 +20,7 @@ include $(ROOTDIR)/boards/board_common.mk
 #libitem-y += \r
 \r
 #linkfile\r
-ldcmdfile-y = linkscript_gcc.ldp\r
+ldcmdfile-y = linkscript_$(COMPILER).lcf\r
 vpath %.ldf $(ROOTDIR)/$(ARCH_PATH-y)/scripts\r
 #ldcmdfile-y = $(ROOTDIR)/$(ARCH_PATH-y)/scripts/linkscript_gcc.ldp\r
 \r
diff --git a/examples/simple/simple_arm_stm32_f103.arxml b/examples/simple/simple_arm_stm32_f103.arxml
new file mode 100644 (file)
index 0000000..e01925e
--- /dev/null
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<AUTOSAR xmlns="http://autosar.org/3.1.4"><TOP-LEVEL-PACKAGES>\r
+    <AR-PACKAGE>\r
+      <SHORT-NAME>simple_arm_cm3</SHORT-NAME>\r
+      <ELEMENTS>\r
+        <ECU-CONFIGURATION UUID="4ab03f0b-f00d-4eb3-8406-006c42d20f4d">\r
+          <SHORT-NAME>simple_arm_cm3</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <DOC-REVISIONS>\r
+              <DOC-REVISION/>\r
+            </DOC-REVISIONS>\r
+            <SDGS>\r
+              <SDG GID="Arccore::EcuOptions">\r
+                <SD GID="MCU">STM32_F103</SD>\r
+                <SD GID="GENDIR"></SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <ECU-SW-COMPOSITION-REF DEST="ECU-SW-COMPOSITION">/simple_arm_cm3/SwComposition_simple_arm_cm3</ECU-SW-COMPOSITION-REF>\r
+          <MODULE-REFS>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/simple_arm_cm3/Os</MODULE-REF>\r
+          </MODULE-REFS>\r
+        </ECU-CONFIGURATION>\r
+        <ECU-SW-COMPOSITION UUID="a5ac45c0-0dd8-4e11-8f33-bcc59510e846">\r
+          <SHORT-NAME>SwComposition_simple_arm_cm3</SHORT-NAME>\r
+        </ECU-SW-COMPOSITION>\r
+        <MODULE-CONFIGURATION UUID="29b23c16-ee7a-4b40-afaf-6c4117db16d3">\r
+          <SHORT-NAME>Os</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.6</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Os</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="92c5a2e3-81e3-4e1f-9137-174435a92b41">\r
+              <SHORT-NAME>OsOS</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsOS</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsStackMonitoring</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsOS/OsStatus</DEFINITION-REF>\r
+                  <VALUE>EXTENDED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseGetServiceId</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseParameterAccess</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseResScheduler</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsTickFrequency</DEFINITION-REF>\r
+                  <VALUE>1000</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsInterruptStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsIdleStackSize</DEFINITION-REF>\r
+                  <VALUE>512</VALUE>\r
+                </INTEGER-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsUseDebug</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugTask</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugAlarm</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugResource</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugScheduleTable</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugEvent</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="6578a055-00a4-4de2-8e87-3b7758f9caf7">\r
+                  <SHORT-NAME>OsHooks</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsOS/OsHooks</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsErrorHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsPostTaskHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsPreTaskHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsProtectionHook</DEFINITION-REF>\r
+                      <VALUE>false</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsShutdownHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsStartupHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="67722c4e-130a-4dac-8aeb-72ed94e3e7e9">\r
+              <SHORT-NAME>Alarm1</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/simple_arm_cm3/Os/OsTick</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="78d0ecea-4ed3-4503-b0c8-4ad0b400d6ab">\r
+                  <SHORT-NAME>OsAlarmAutostart</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart/OsAlarmAlarmTime</DEFINITION-REF>\r
+                      <VALUE>100</VALUE>\r
+                    </INTEGER-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart/OsAlarmAutostartType</DEFINITION-REF>\r
+                      <VALUE>ABSOLUTE</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart/OsAlarmCycleTime</DEFINITION-REF>\r
+                      <VALUE>10</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="e6de53f9-2026-4621-887f-556572f825be">\r
+                  <SHORT-NAME>OsAlarmSetEvent</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent/OsAlarmSetEventRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/simple_arm_cm3/Os/EVENT_2</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent/OsAlarmSetEventTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/simple_arm_cm3/Os/etask_1</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="9c54b7bd-b0c1-4733-a6a4-b77b22b8df12">\r
+              <SHORT-NAME>OsTick</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsCounter</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMaxAllowedValue</DEFINITION-REF>\r
+                  <VALUE>65535</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMinCycle</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterTicksPerBase</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterType</DEFINITION-REF>\r
+                  <VALUE>OS_TICK</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="170cda57-b4ad-4c67-8384-97736003af20">\r
+              <SHORT-NAME>etask_1</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>EXTENDED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="9254b1b9-6b3d-4e1a-b294-871e853d8ae0">\r
+                  <SHORT-NAME>OsTaskAutostart</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask/OsTaskAutostart</DEFINITION-REF>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="8c0b5497-cc95-4e9b-b102-99f3f7e637bb">\r
+              <SHORT-NAME>etask_2</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>2</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>EXTENDED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="b5d30e9f-ae64-42ba-861e-7dd525761722">\r
+                  <SHORT-NAME>OsTaskAutostart</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask/OsTaskAutostart</DEFINITION-REF>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="72dc534e-fc28-4883-b1d7-5e1162314494">\r
+              <SHORT-NAME>btask_3</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>3</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="5f7216e5-bed0-4a95-bf07-26b1c54be1c0">\r
+              <SHORT-NAME>EVENT_1</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsEvent</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsEvent/OsEventMask</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="896fdbc9-ed9a-4f24-9366-257760788019">\r
+              <SHORT-NAME>EVENT_2</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsEvent</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsEvent/OsEventMask</DEFINITION-REF>\r
+                  <VALUE>2</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="d681023d-1f60-4239-b9a2-7889a00bdaa4">\r
+              <SHORT-NAME>EVENT_3</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsEvent</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsEvent/OsEventMask</DEFINITION-REF>\r
+                  <VALUE>3</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+      </ELEMENTS>\r
+    </AR-PACKAGE>\r
+  </TOP-LEVEL-PACKAGES></AUTOSAR>\r
similarity index 97%
rename from examples/simple/simple_arm_cm3.arxml
rename to examples/simple/simple_arm_stm32_f107.arxml
index db7fffaa70828cd38868fc8546f4bed04463bd0c..c3cf6270c16ddbabfb50a02bcd5fda6aa9cd8471 100644 (file)
@@ -11,7 +11,7 @@
             </DOC-REVISIONS>\r
             <SDGS>\r
               <SDG GID="Arccore::EcuOptions">\r
-                <SD GID="MCU">Cortex M3</SD>\r
+                <SD GID="MCU">STM32_F107</SD>\r
                 <SD GID="GENDIR">/simple/config/stm32_stm3210c</SD>\r
               </SDG>\r
             </SDGS>\r
index d2756a3fec686f5fc289fc08ff1b526c2a7379df..e8bcf50df951810ea4fd28a8e67cedafac3cb936 100644 (file)
@@ -18,7 +18,7 @@
 #include "Mcu.h"
 #include "arc.h"
 
-#define USE_LDEBUG_PRINTF
+//#define USE_LDEBUG_PRINTF // Uncomment this to turn debug statements on.
 #include "debug.h"
 
 // How many errors to keep in error log.
@@ -52,7 +52,7 @@ void etask_1( void ) {
        StackInfoType si;
        TaskType currTask;
 
-       LDEBUG_PRINTF("etask_1 start\n");
+       LDEBUG_FPUTS("etask_1 start\n");
        for(;;) {
                SetEvent(TASK_ID_etask_2,EVENT_MASK_EVENT_1);
                WaitEvent(EVENT_MASK_EVENT_2);
@@ -71,7 +71,7 @@ void etask_1( void ) {
  * and activates task: btask_3.
  */
 void etask_2( void ) {
-       LDEBUG_PRINTF("etask_2 start\n");
+       LDEBUG_FPUTS("etask_2 start\n");
 
        for(;;) {
                WaitEvent(EVENT_MASK_EVENT_1);
@@ -100,20 +100,18 @@ void OsIdle( void ) {
 
 /* Global hooks */
 ProtectionReturnType ProtectionHook( StatusType FatalError ) {
-       LDEBUG_PRINTF("## ProtectionHook\n");
+       LDEBUG_FPUTS("## ProtectionHook\n");
        return PRO_KILLAPPL;
 }
 
 void StartupHook( void ) {
-       uint32_t sys_freq = McuE_GetSystemClock();
+       LDEBUG_FPUTS("## StartupHook\n");
 
-       LDEBUG_PRINTF("## StartupHook\n");
-
-       LDEBUG_PRINTF("Sys clock %u Hz\n",(unsigned)sys_freq);
+       LDEBUG_PRINTF("Sys clock %u Hz\n",(unsigned)McuE_GetSystemClock());
 }
 
 void ShutdownHook( StatusType Error ) {
-       LDEBUG_PRINTF("## ShutdownHook\n");
+       LDEBUG_FPUTS("## ShutdownHook\n");
        while(1);
 }
 
index 26145ce30ae9234af857720f09042ac1e0683c57..804568138b63bcbd2278e6c1db268572cd1fbf44 100644 (file)
 \r
 \r
 #include "Os.h"\r
+#include "Mcu.h"\r
 #include <stdio.h>\r
 #include <assert.h>\r
 \r
-#define USE_LDEBUG_PRINTF\r
+//#define USE_LDEBUG_PRINTF // Uncomment this to turn debug statements on.\r
 #include "debug.h"\r
 \r
-#include "Mcu.h"\r
-\r
-\r
-#if 0\r
-#ifdef USE_STARTUPHOOK\r
-#ifdef CFG_MPC55XX\r
-#if !defined(USE_SIMULATOR)\r
-// Quick fix\r
-//#include "Kernel_Offset.h"\r
-\r
-extern uint8_t pcb_list[];\r
-\r
-#endif\r
-#endif\r
-#endif\r
-#endif\r
 \r
 \r
 \r
@@ -55,9 +40,7 @@ ProtectionReturnType ProtectionHook( StatusType FatalError ) {
 void StartupHook( void ) {\r
        LDEBUG_PRINTF("## StartupHook\n");\r
 \r
-       uint32_t sys_freq = McuE_GetSystemClock();\r
-\r
-       LDEBUG_PRINTF("Sys clock %d Hz\n",sys_freq);\r
+       LDEBUG_PRINTF("Sys clock %u Hz\n",(unsigned)McuE_GetSystemClock());\r
 }\r
 \r
 void ShutdownHook( StatusType Error ) {\r
@@ -79,14 +62,3 @@ void PreTaskHook( void ) {
 void PostTaskHook( void ) {\r
 //     dbg_printf("## PostTaskHook, taskid=%d\n",task);\r
 }\r
-\r
-#if 0\r
-struct OsHooks os_conf_global_hooks = {\r
-               .StartupHook = StartupHook,\r
-               .ProtectionHook = ProtectionHook,\r
-               .ShutdownHook = ShutdownHook,\r
-               .ErrorHook = ErrorHook,\r
-               .PreTaskHook = PreTaskHook,\r
-               .PostTaskHook = PostTaskHook\r
-               };\r
-#endif\r
index eadb7fd3ea9fd04ece0077f95402a8d14270e754..e02f3c228c49968e9fb9f79b50a22217d44a87e4 100644 (file)
 #include "EcuM.h"\r
 #include <stdio.h>\r
 #include <assert.h>\r
-#include "debug.h"\r
 #include "Com.h"\r
 #include "Adc.h"\r
 \r
+//#define USE_LDEBUG_PRINTF // Uncomment this to turn debug statements on.\r
+#include "debug.h"\r
+\r
 void OsIdle( void ) {\r
        for(;;);\r
 }\r
index 8c2b00607451be6e39ec5faa652dc17d6cebc5ac..507bae26b920512216dba995cfd88ccb801c2ad1 100644 (file)
@@ -5,11 +5,11 @@
  * Configured for (MCU): MPC551x\r
  *\r
  * Module vendor: ArcCore\r
- * Module version: 2.0.3\r
+ * Module version: 2.0.4\r
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:18:14 CET 2010\r
+ *           on Mon Jan 17 12:24:21 CET 2011\r
  */\r
 \r
 \r
index 6563427aeacb597db831c95b496a7375cd4e9efe..1c4b539871d142e7528d1567fef9ee5af31bacde 100644 (file)
@@ -5,15 +5,15 @@
  * Configured for (MCU): MPC551x\r
  *\r
  * Module vendor: ArcCore\r
- * Module version: 2.0.3\r
+ * Module version: 2.0.4\r
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:18:14 CET 2010\r
+ *           on Mon Jan 17 12:24:21 CET 2011\r
  */\r
 \r
 
-#if (CANIF_SW_MAJOR_VERSION != 1 && CANIF_SW_MINOR_VERSION != 1) 
+#if !(((CANIF_SW_MAJOR_VERSION == 1) && (CANIF_SW_MINOR_VERSION == 1)) )
 #error "CanIf: Configuration file version differs from BSW version."
 #endif
 
@@ -45,14 +45,14 @@ typedef enum {
        CANIF_SOFTFILTER_TYPE_INDEX,  // Not supported\r
        CANIF_SOFTFILTER_TYPE_LINEAR, // Not supported\r
        CANIF_SOFTFILTER_TYPE_TABLE,  // Not supported\r
-       CANIF_SOFTFILTER_TYPE_MASK,  // CanIfCanRxPduCanIdMask in RxPduConfig is used for filtering\r
+       CANIF_SOFTFILTER_TYPE_MASK  // CanIfCanRxPduCanIdMask in RxPduConfig is used for filtering\r
 } CanIf_SoftwareFilterTypeType;\r
 \r
 typedef enum {\r
        CANIF_USER_TYPE_CAN_NM,\r
        CANIF_USER_TYPE_CAN_TP,\r
        CANIF_USER_TYPE_CAN_PDUR,\r
-       CANIF_USER_TYPE_CAN_SPECIAL,\r
+       CANIF_USER_TYPE_CAN_SPECIAL\r
 } CanIf_UserTypeType;\r
 \r
 \r
@@ -83,18 +83,6 @@ typedef enum {
 #define CANIF_TRANSCEIVER_API               STD_OFF  // Not supported\r
 #define CANIF_TRANSMIT_CANCELLATION         STD_OFF  // Not supported\r
 \r
-//-------------------------------------------------------------------\r
-\r
-typedef struct {\r
-       void (*CancelTxConfirmation)( void *);  // (const Can_PduType *);\r
-       void (*RxIndication)(void *); //(const Can_PduType *);\r
-       void (*ControllerBusOff)(uint8);\r
-       void (*ControllerWakeup)(uint8);\r
-       void (*Arc_Error)(uint8,uint32);\r
-} CanIf_CallbackType;\r
-\r
-\r
-\r
 //-------------------------------------------------------------------\r
 /*\r
  * CanIfHrhRangeConfig container\r
@@ -329,7 +317,7 @@ typedef struct {
 typedef enum {\r
        CANIF_WAKEUP_SUPPORT_CONTROLLER,\r
        CANIF_WAKEUP_SUPPORT_NO_WAKEUP,\r
-       CANIF_WAKEUP_SUPPORT_TRANSCEIVER,\r
+       CANIF_WAKEUP_SUPPORT_TRANSCEIVER\r
 } CanIf_WakeupSupportType;\r
 \r
 \r
@@ -340,7 +328,7 @@ typedef struct {
        // CanIf-specific id of the controller\r
        CanIf_Arc_ChannelIdType CanIfControllerIdRef;\r
 \r
-       const char CanIfDriverNameRef[8]; // Not used\r
+       const uint8 CanIfDriverNameRef[8]; // Not used\r
 \r
        const Can_ControllerConfigType *CanIfInitControllerRef;\r
 } CanIf_ControllerConfigType;\r
index 5046b86494d14f35b5e0b84583c5a6d4d3542f3b..0df74990eef34f0a9c5644cefd4d3a024a17bcf2 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:18:14 CET 2010\r
+ *           on Mon Jan 17 12:24:21 CET 2011\r
  */\r
 \r
 
-#if (CAN_SW_MAJOR_VERSION != 1) 
+#if !(((CAN_SW_MAJOR_VERSION == 1) && (CAN_SW_MINOR_VERSION == 0)) )
 #error "Can: Configuration file version differs from BSW version."
 #endif
 
@@ -51,12 +51,12 @@ typedef enum {
 typedef enum {\r
        CAN_ID_TYPE_EXTENDED,\r
        CAN_ID_TYPE_MIXED,\r
-       CAN_ID_TYPE_STANDARD,\r
+       CAN_ID_TYPE_STANDARD\r
 } Can_IdTypeType;\r
 \r
 typedef enum {\r
        CAN_OBJECT_TYPE_RECEIVE,\r
-       CAN_OBJECT_TYPE_TRANSMIT,\r
+       CAN_OBJECT_TYPE_TRANSMIT\r
 } Can_ObjectTypeType;\r
 \r
 \r
@@ -90,7 +90,7 @@ typedef struct {
 typedef struct {\r
        //      Specifies the InstanceId of this module instance. If only one instance is\r
        //      present it shall have the Id 0\r
-       int CanIndex;\r
+       uint8 CanIndex;\r
 } Can_GeneralType;\r
 \r
 // Start mc9s12 unique\r
@@ -138,7 +138,7 @@ typedef struct Can_HardwareObjectStruct {
 \r
 typedef enum {\r
        CAN_ARC_PROCESS_TYPE_INTERRUPT,\r
-       CAN_ARC_PROCESS_TYPE_POLLING,\r
+       CAN_ARC_PROCESS_TYPE_POLLING\r
 } Can_Arc_ProcessType;\r
 \r
 typedef struct {\r
index e6b8e2e160648d2a61ee04158a01ebbfccc0159f..21cce35e00b6050992be3bd566c8cac239a68d46 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:18:14 CET 2010\r
+ *           on Mon Jan 17 12:24:21 CET 2011\r
  */\r
 \r
        \r
index 073fe25d8e2a49032973ced1e25958a0f62ddef6..ccadae2e4cded8ec64b7d1ab7ebe68fdeb6e8be0 100644 (file)
@@ -9,17 +9,17 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:18:14 CET 2010\r
+ *           on Mon Jan 17 12:24:21 CET 2011\r
  */\r
 \r
 
-#if (COM_SW_MAJOR_VERSION != 1) 
+#if !(((COM_SW_MAJOR_VERSION == 1) && (COM_SW_MINOR_VERSION == 1)) )
 #error "Com: Configuration file version differs from BSW version."
 #endif
 
 \r
-#ifndef COM_CFG_H_\r
-#define COM_CFG_H_\r
+#ifndef COM_CFG_H\r
+#define COM_CFG_H\r
 \r
 #define COM_MODULE_ID 20\r
 #define COM_INSTANCE_ID 1\r
@@ -45,4 +45,4 @@
 #define ComConfigurationTimeBase 0.0\r
 #define ComVersionInfoApi\r
 \r
-#endif /*COM_CFG_H_*/\r
+#endif /*COM_CFG_H*/\r
index c5d6a4176a07322c8e5525bb55131d9738ed89d0..920294cb141a598db130a6f750d99401aab61749 100644 (file)
@@ -9,12 +9,13 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:18:14 CET 2010\r
+ *           on Mon Jan 17 12:24:21 CET 2011\r
  */\r
 \r
 \r
 #include "Com.h"\r
-#include "stdlib.h"\r
+#include "Com_Internal.h"\r
+#include <stdlib.h>\r
 #if defined(USE_PDUR)\r
 #include "PduR.h"\r
 #endif\r
@@ -51,16 +52,23 @@ const ComSignal_type ComSignal[] = {
                .ComNotification = NULL,\r
                .ComTimeoutFactor = 0,\r
                .ComTimeoutNotification = NULL,\r
+               .ComErrorNotification = NULL,\r
                .ComTransferProperty = TRIGGERED,\r
                \r
+               .ComUpdateBitPosition = 0,\r
+               .ComSignalArcUseUpdateBit = 0,\r
+               \r
                \r
                .ComSignalInitValue = &Com_SignalInitValue_SetLedLevelTx,\r
                .ComBitPosition = 7,\r
                .ComBitSize = 16,\r
                .ComSignalEndianess = COM_BIG_ENDIAN,\r
                .ComSignalType = UINT16,\r
+               .Com_Arc_IsSignalGroup = 0,\r
                .ComGroupSignal = NULL,\r
                \r
+               .ComRxDataTimeoutAction = COM_TIMEOUT_DATA_ACTION_NONE,\r
+               .Com_Arc_EOL = 0\r
        },\r
        {\r
                .Com_Arc_EOL = 1\r
@@ -73,7 +81,8 @@ const ComSignal_type ComSignal[] = {
  */\r
 const ComIPduGroup_type ComIPduGroup[] = {\r
        {\r
-               .ComIPduGroupHandleId = TxGroup\r
+               .ComIPduGroupHandleId = TxGroup,\r
+               .Com_Arc_EOL = 0\r
        },\r
        \r
        {\r
@@ -113,6 +122,7 @@ const ComIPdu_type ComIPdu[] = {
                },\r
                \r
                .ComIPduSignalRef = ComIPduSignalRefs_LedCommandTx,\r
+               .Com_Arc_EOL = 0\r
        },   \r
        {\r
                .Com_Arc_EOL = 1\r
@@ -127,4 +137,48 @@ const Com_ConfigType ComConfiguration = {
        .ComGroupSignal = ComGroupSignal\r
 };\r
 \r
+/* IPdu buffers and signal group buffers */\r
+uint8 ComArcIPduBuffer_LedCommandTx[8];\r
+          \r
+\r
+Com_Arc_IPdu_type Com_Arc_IPdu[] = {\r
+       { // LedCommandTx\r
+               .Com_Arc_TxIPduTimers = {\r
+                       .ComTxIPduNumberOfRepetitionsLeft = 0,\r
+                       .ComTxModeRepetitionPeriodTimer = 0,\r
+                       .ComTxIPduMinimumDelayTimer = 0,\r
+                       .ComTxModeTimePeriodTimer = 0\r
+               },\r
+               .ComIPduDataPtr = ComArcIPduBuffer_LedCommandTx,\r
+               .Com_Arc_IpduStarted = 0        \r
+       },\r
+};\r
+\r
+Com_Arc_Signal_type Com_Arc_Signal[] = {\r
+       { // SetLedLevelTx\r
+               .Com_Arc_DeadlineCounter = 0,\r
+               .ComTimeoutFactor = 0,\r
+               .ComIPduHandleId = 0,\r
+               .ComSignalUpdated = 0,\r
+               .ComIPduDataPtr = NULL,\r
+               \r
+               .Com_Arc_ShadowBuffer = NULL\r
+               \r
+       },\r
+       \r
+};\r
+\r
+Com_Arc_GroupSignal_type Com_Arc_GroupSignal[COM_N_GROUP_SIGNALS];\r
+\r
+uint8 outgoingSduPtr[8];\r
+\r
+Com_Arc_Config_type Com_Arc_Config = {\r
+       .ComIPdu = Com_Arc_IPdu,\r
+       .ComSignal = Com_Arc_Signal,\r
+       .ComGroupSignal = Com_Arc_GroupSignal,\r
+       .OutgoingPdu = {\r
+                       .SduDataPtr = outgoingSduPtr,\r
+                       .SduLength = 0\r
+               }\r
+};\r
 \r
index 2c8af49b8ddab5647652da38fb30865f327028a3..aa16c83ddf316e307d7d3cec4530f02a4d63fe30 100644 (file)
@@ -9,16 +9,16 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:18:14 CET 2010\r
+ *           on Mon Jan 17 12:24:21 CET 2011\r
  */\r
 \r
 
-#if (COM_SW_MAJOR_VERSION != 1) 
+#if !(((COM_SW_MAJOR_VERSION == 1) && (COM_SW_MINOR_VERSION == 1)) )
 #error "Com: Configuration file version differs from BSW version."
 #endif
 
-#ifndef COM_PBCFG_H_\r
-#define COM_PBCFG_H_\r
+#ifndef COM_PBCFG_H\r
+#define COM_PBCFG_H\r
 \r
 #include "Com_Types.h"\r
 \r
@@ -30,16 +30,13 @@ extern const Com_ConfigType ComConfiguration;
 \r
 \r
 // PDU group definitions\r
-enum {\r
-       TxGroup = 0,\r
-};\r
+#define TxGroup 0\r
+\r
 \r
 // Signal definitions\r
-enum {\r
-       SetLedLevelTx = 0,\r
-};\r
+#define SetLedLevelTx 0\r
 \r
 \r
 \r
 \r
-#endif /* COM_PBCFG_H_ */\r
+#endif /* COM_PBCFG_H */\r
index df5cc08a8ac56efc6b96c8f52ed409e9b13595fd..0f9315ff1f937cd36923ee1d7ef1361a7048d58c 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:18:15 CET 2010\r
+ *           on Mon Jan 17 12:24:21 CET 2011\r
  */\r
 \r
 
-#if (ECUM_SW_MAJOR_VERSION != 2 && ECUM_SW_MINOR_VERSION != 0)
+#if !(((ECUM_SW_MAJOR_VERSION == 2) && (ECUM_SW_MINOR_VERSION == 0)) )
 #error "EcuM: Configuration file version differs from BSW version."
 #endif
 
index 3c85c238043f24d49081498ba084827a823965f3..ebb27f6c1e5aa8690ea75b0b9c0f5065764c5f26 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:18:14 CET 2010\r
+ *           on Mon Jan 17 12:24:21 CET 2011\r
  */\r
 \r
        \r
index a51ef436c25ace0653298f39ffdcadec0fd2804f..3f5b935524a12792fb0ce6b6ae9723e0f66f4527 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:18:14 CET 2010\r
+ *           on Mon Jan 17 12:24:21 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
index 56fdf58dfd682f38b23c9bbe355c69e87b567e8f..a2baa1ea913f88b53f2ef9e4e47d38073fbdfa8c 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:18:14 CET 2010\r
+ *           on Mon Jan 17 12:24:21 CET 2011\r
  */\r
 \r
 
-#if (PDUR_SW_MAJOR_VERSION != 1) 
+#if !(((PDUR_SW_MAJOR_VERSION == 1) && (PDUR_SW_MINOR_VERSION == 0)) )
 #error "PduR: Configuration file version differs from BSW version."
 #endif
 
index 63445bdc6b631b39d4256207710c0ff3213199bb..402699f214d5993647a269bc7e68a149f7725d5e 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:18:14 CET 2010\r
+ *           on Mon Jan 17 12:24:21 CET 2011\r
  */\r
 \r
 \r
index 9847d30d64e29f1eeb96411971986416ab92ab0e..fe8e4342001870a4f578e9ff0735c5d7b6858b2d 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:18:14 CET 2010\r
+ *           on Mon Jan 17 12:24:21 CET 2011\r
  */\r
 \r
 
-#if (PDUR_SW_MAJOR_VERSION != 1) 
+#if !(((PDUR_SW_MAJOR_VERSION == 1) && (PDUR_SW_MINOR_VERSION == 0)) )
 #error "PduR: Configuration file version differs from BSW version."
 #endif
 
index 07cf9521b27e53a29174143b617ba605ca8115e5..035c5444d8736f1d9373e66f0e23879b83597487 100644 (file)
@@ -9,16 +9,16 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:18:15 CET 2010\r
+ *           on Mon Jan 17 12:24:21 CET 2011\r
  */\r
 \r
        \r
-// File generated on Wed Dec 01 20:18:15 CET 2010\r
+// File generated on Mon Jan 17 12:24:21 CET 2011\r
 // File generated by com.arccore.bswbuilder.modules.port.mpc5516\r
 \r
 #include "Port.h"\r
 #include "Port_Cfg.h"\r
-#include "stdlib.h"\r
+#include <stdlib.h>\r
 \r
 const uint16_t PortPadConfigData[] = {\r
        PORT_PCR_RESET,                 /* PCR  0 */\r
index ac04b215622e3dee3d482be0a0a08e1d108abd3f..c93e9fe33de4cab1e66afc94b1af862b854de98a 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:18:15 CET 2010\r
+ *           on Mon Jan 17 12:24:21 CET 2011\r
  */\r
 \r
 
-#if (PORT_SW_MAJOR_VERSION != 1) 
+#if !(((PORT_SW_MAJOR_VERSION == 1) && (PORT_SW_MINOR_VERSION == 0)) )
 #error "Port: Configuration file version differs from BSW version."
 #endif
 
index 0eead0869ed28dbd650c23a05e3d091e24210c14..d993ba4b7886dad95125c101861ae99048546752 100644 (file)
@@ -5,11 +5,11 @@
  * Configured for (MCU): MPC5567\r
  *\r
  * Module vendor: ArcCore\r
- * Module version: 2.0.3\r
+ * Module version: 2.0.4\r
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:25:27 CET 2010\r
+ *           on Fri Jan 14 10:53:45 CET 2011\r
  */\r
 \r
 \r
index 60db06de640bd1313cdfa6cd1c72491d6ce99f2c..b1ffc04b6f6c48f702d00e7772ebfcffb32ba88c 100644 (file)
@@ -5,15 +5,15 @@
  * Configured for (MCU): MPC5567\r
  *\r
  * Module vendor: ArcCore\r
- * Module version: 2.0.3\r
+ * Module version: 2.0.4\r
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:25:27 CET 2010\r
+ *           on Fri Jan 14 10:53:45 CET 2011\r
  */\r
 \r
 
-#if (CANIF_SW_MAJOR_VERSION != 1 && CANIF_SW_MINOR_VERSION != 1) 
+#if !(((CANIF_SW_MAJOR_VERSION == 1) && (CANIF_SW_MINOR_VERSION == 1)) )
 #error "CanIf: Configuration file version differs from BSW version."
 #endif
 
@@ -45,14 +45,14 @@ typedef enum {
        CANIF_SOFTFILTER_TYPE_INDEX,  // Not supported\r
        CANIF_SOFTFILTER_TYPE_LINEAR, // Not supported\r
        CANIF_SOFTFILTER_TYPE_TABLE,  // Not supported\r
-       CANIF_SOFTFILTER_TYPE_MASK,  // CanIfCanRxPduCanIdMask in RxPduConfig is used for filtering\r
+       CANIF_SOFTFILTER_TYPE_MASK  // CanIfCanRxPduCanIdMask in RxPduConfig is used for filtering\r
 } CanIf_SoftwareFilterTypeType;\r
 \r
 typedef enum {\r
        CANIF_USER_TYPE_CAN_NM,\r
        CANIF_USER_TYPE_CAN_TP,\r
        CANIF_USER_TYPE_CAN_PDUR,\r
-       CANIF_USER_TYPE_CAN_SPECIAL,\r
+       CANIF_USER_TYPE_CAN_SPECIAL\r
 } CanIf_UserTypeType;\r
 \r
 \r
@@ -83,18 +83,6 @@ typedef enum {
 #define CANIF_TRANSCEIVER_API               STD_OFF  // Not supported\r
 #define CANIF_TRANSMIT_CANCELLATION         STD_OFF  // Not supported\r
 \r
-//-------------------------------------------------------------------\r
-\r
-typedef struct {\r
-       void (*CancelTxConfirmation)( void *);  // (const Can_PduType *);\r
-       void (*RxIndication)(void *); //(const Can_PduType *);\r
-       void (*ControllerBusOff)(uint8);\r
-       void (*ControllerWakeup)(uint8);\r
-       void (*Arc_Error)(uint8,uint32);\r
-} CanIf_CallbackType;\r
-\r
-\r
-\r
 //-------------------------------------------------------------------\r
 /*\r
  * CanIfHrhRangeConfig container\r
@@ -329,7 +317,7 @@ typedef struct {
 typedef enum {\r
        CANIF_WAKEUP_SUPPORT_CONTROLLER,\r
        CANIF_WAKEUP_SUPPORT_NO_WAKEUP,\r
-       CANIF_WAKEUP_SUPPORT_TRANSCEIVER,\r
+       CANIF_WAKEUP_SUPPORT_TRANSCEIVER\r
 } CanIf_WakeupSupportType;\r
 \r
 \r
@@ -340,7 +328,7 @@ typedef struct {
        // CanIf-specific id of the controller\r
        CanIf_Arc_ChannelIdType CanIfControllerIdRef;\r
 \r
-       const char CanIfDriverNameRef[8]; // Not used\r
+       const uint8 CanIfDriverNameRef[8]; // Not used\r
 \r
        const Can_ControllerConfigType *CanIfInitControllerRef;\r
 } CanIf_ControllerConfigType;\r
index 14d3d78f643c09828d482340b8f924eefb84b6fc..50df7452584312ae0932ff5641caf8df70268de2 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:25:28 CET 2010\r
+ *           on Fri Jan 14 10:53:45 CET 2011\r
  */\r
 \r
 
-#if (CAN_SW_MAJOR_VERSION != 1) 
+#if !(((CAN_SW_MAJOR_VERSION == 1) && (CAN_SW_MINOR_VERSION == 0)) )
 #error "Can: Configuration file version differs from BSW version."
 #endif
 
@@ -42,19 +42,21 @@ typedef enum {
        CAN_CTRL_D = 3,\r
        FLEXCAN_E = 4,\r
        CAN_CTRL_E = 4,\r
-       CAN_CONTROLLER_CNT = 5\r
+       FLEXCAN_F = 5,\r
+       CAN_CTRL_F = 5,\r
+       CAN_CONTROLLER_CNT = 6\r
 }CanControllerIdType;\r
 \r
 \r
 typedef enum {\r
        CAN_ID_TYPE_EXTENDED,\r
        CAN_ID_TYPE_MIXED,\r
-       CAN_ID_TYPE_STANDARD,\r
+       CAN_ID_TYPE_STANDARD\r
 } Can_IdTypeType;\r
 \r
 typedef enum {\r
        CAN_OBJECT_TYPE_RECEIVE,\r
-       CAN_OBJECT_TYPE_TRANSMIT,\r
+       CAN_OBJECT_TYPE_TRANSMIT\r
 } Can_ObjectTypeType;\r
 \r
 \r
@@ -88,7 +90,7 @@ typedef struct {
 typedef struct {\r
        //      Specifies the InstanceId of this module instance. If only one instance is\r
        //      present it shall have the Id 0\r
-       int CanIndex;\r
+       uint8 CanIndex;\r
 } Can_GeneralType;\r
 \r
 // Start mc9s12 unique\r
@@ -136,7 +138,7 @@ typedef struct Can_HardwareObjectStruct {
 \r
 typedef enum {\r
        CAN_ARC_PROCESS_TYPE_INTERRUPT,\r
-       CAN_ARC_PROCESS_TYPE_POLLING,\r
+       CAN_ARC_PROCESS_TYPE_POLLING\r
 } Can_Arc_ProcessType;\r
 \r
 typedef struct {\r
index f4670b726355193d27d1d49ad7925d723649bc93..e53fc81c204d7a31f9e38ca13febd228aa9542a1 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:25:28 CET 2010\r
+ *           on Fri Jan 14 10:53:45 CET 2011\r
  */\r
 \r
        \r
index 9178131727735935b3e9345cda7229b2726726b6..dea1eafcac41b91a6a710c8c4cb21389be11da99 100644 (file)
@@ -9,17 +9,17 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:25:27 CET 2010\r
+ *           on Fri Jan 14 10:53:45 CET 2011\r
  */\r
 \r
 
-#if (COM_SW_MAJOR_VERSION != 1) 
+#if !(((COM_SW_MAJOR_VERSION == 1) && (COM_SW_MINOR_VERSION == 1)) )
 #error "Com: Configuration file version differs from BSW version."
 #endif
 
 \r
-#ifndef COM_CFG_H_\r
-#define COM_CFG_H_\r
+#ifndef COM_CFG_H\r
+#define COM_CFG_H\r
 \r
 #define COM_MODULE_ID 20\r
 #define COM_INSTANCE_ID 1\r
@@ -45,4 +45,4 @@
 #define ComConfigurationTimeBase 0.0\r
 #define ComVersionInfoApi\r
 \r
-#endif /*COM_CFG_H_*/\r
+#endif /*COM_CFG_H*/\r
index a48ba2f9464d45c1ff824e8a9d36215514143361..e9036323a513e47f4c5632d560c46b466ed24e38 100644 (file)
@@ -9,12 +9,13 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:25:27 CET 2010\r
+ *           on Fri Jan 14 10:53:45 CET 2011\r
  */\r
 \r
 \r
 #include "Com.h"\r
-#include "stdlib.h"\r
+#include "Com_Internal.h"\r
+#include <stdlib.h>\r
 #if defined(USE_PDUR)\r
 #include "PduR.h"\r
 #endif\r
@@ -51,16 +52,23 @@ const ComSignal_type ComSignal[] = {
                .ComNotification = NULL,\r
                .ComTimeoutFactor = 0,\r
                .ComTimeoutNotification = NULL,\r
+               .ComErrorNotification = NULL,\r
                .ComTransferProperty = TRIGGERED,\r
                \r
+               .ComUpdateBitPosition = 0,\r
+               .ComSignalArcUseUpdateBit = 0,\r
+               \r
                \r
                .ComSignalInitValue = &Com_SignalInitValue_SetLedLevelTx,\r
                .ComBitPosition = 7,\r
                .ComBitSize = 16,\r
                .ComSignalEndianess = COM_BIG_ENDIAN,\r
                .ComSignalType = UINT16,\r
+               .Com_Arc_IsSignalGroup = 0,\r
                .ComGroupSignal = NULL,\r
                \r
+               .ComRxDataTimeoutAction = COM_TIMEOUT_DATA_ACTION_NONE,\r
+               .Com_Arc_EOL = 0\r
        },\r
        {\r
                .Com_Arc_EOL = 1\r
@@ -73,7 +81,8 @@ const ComSignal_type ComSignal[] = {
  */\r
 const ComIPduGroup_type ComIPduGroup[] = {\r
        {\r
-               .ComIPduGroupHandleId = TxGroup\r
+               .ComIPduGroupHandleId = TxGroup,\r
+               .Com_Arc_EOL = 0\r
        },\r
        \r
        {\r
@@ -113,6 +122,7 @@ const ComIPdu_type ComIPdu[] = {
                },\r
                \r
                .ComIPduSignalRef = ComIPduSignalRefs_LedCommandTx,\r
+               .Com_Arc_EOL = 0\r
        },   \r
        {\r
                .Com_Arc_EOL = 1\r
@@ -127,4 +137,48 @@ const Com_ConfigType ComConfiguration = {
        .ComGroupSignal = ComGroupSignal\r
 };\r
 \r
+/* IPdu buffers and signal group buffers */\r
+uint8 ComArcIPduBuffer_LedCommandTx[8];\r
+          \r
+\r
+Com_Arc_IPdu_type Com_Arc_IPdu[] = {\r
+       { // LedCommandTx\r
+               .Com_Arc_TxIPduTimers = {\r
+                       .ComTxIPduNumberOfRepetitionsLeft = 0,\r
+                       .ComTxModeRepetitionPeriodTimer = 0,\r
+                       .ComTxIPduMinimumDelayTimer = 0,\r
+                       .ComTxModeTimePeriodTimer = 0\r
+               },\r
+               .ComIPduDataPtr = ComArcIPduBuffer_LedCommandTx,\r
+               .Com_Arc_IpduStarted = 0        \r
+       },\r
+};\r
+\r
+Com_Arc_Signal_type Com_Arc_Signal[] = {\r
+       { // SetLedLevelTx\r
+               .Com_Arc_DeadlineCounter = 0,\r
+               .ComTimeoutFactor = 0,\r
+               .ComIPduHandleId = 0,\r
+               .ComSignalUpdated = 0,\r
+               .ComIPduDataPtr = NULL,\r
+               \r
+               .Com_Arc_ShadowBuffer = NULL\r
+               \r
+       },\r
+       \r
+};\r
+\r
+Com_Arc_GroupSignal_type Com_Arc_GroupSignal[COM_N_GROUP_SIGNALS];\r
+\r
+uint8 outgoingSduPtr[8];\r
+\r
+Com_Arc_Config_type Com_Arc_Config = {\r
+       .ComIPdu = Com_Arc_IPdu,\r
+       .ComSignal = Com_Arc_Signal,\r
+       .ComGroupSignal = Com_Arc_GroupSignal,\r
+       .OutgoingPdu = {\r
+                       .SduDataPtr = outgoingSduPtr,\r
+                       .SduLength = 0\r
+               }\r
+};\r
 \r
index 9183ac86746e87476928e0c6b4872d356d1869aa..9da506c98ab378def6130df32d66f5d76453527b 100644 (file)
@@ -9,16 +9,16 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:25:27 CET 2010\r
+ *           on Fri Jan 14 10:53:45 CET 2011\r
  */\r
 \r
 
-#if (COM_SW_MAJOR_VERSION != 1) 
+#if !(((COM_SW_MAJOR_VERSION == 1) && (COM_SW_MINOR_VERSION == 1)) )
 #error "Com: Configuration file version differs from BSW version."
 #endif
 
-#ifndef COM_PBCFG_H_\r
-#define COM_PBCFG_H_\r
+#ifndef COM_PBCFG_H\r
+#define COM_PBCFG_H\r
 \r
 #include "Com_Types.h"\r
 \r
@@ -30,16 +30,13 @@ extern const Com_ConfigType ComConfiguration;
 \r
 \r
 // PDU group definitions\r
-enum {\r
-       TxGroup = 0,\r
-};\r
+#define TxGroup 0\r
+\r
 \r
 // Signal definitions\r
-enum {\r
-       SetLedLevelTx = 0,\r
-};\r
+#define SetLedLevelTx 0\r
 \r
 \r
 \r
 \r
-#endif /* COM_PBCFG_H_ */\r
+#endif /* COM_PBCFG_H */\r
index cf9bf583e59e57ee17965a66fd4d1869a9bd6ab7..54eb43ceb6c4d7ccafb98915e95efa67b8a3b6f6 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:25:28 CET 2010\r
+ *           on Fri Jan 14 10:53:45 CET 2011\r
  */\r
 \r
 
-#if (ECUM_SW_MAJOR_VERSION != 2 && ECUM_SW_MINOR_VERSION != 0)
+#if !(((ECUM_SW_MAJOR_VERSION == 2) && (ECUM_SW_MINOR_VERSION == 0)) )
 #error "EcuM: Configuration file version differs from BSW version."
 #endif
 
index 277b1683bc4f7de4fb951fce8bb9e32cef5f9dfb..b22c6a988e389fa2eb393a59e4077c835b808241 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:25:27 CET 2010\r
+ *           on Fri Jan 14 10:53:45 CET 2011\r
  */\r
 \r
        \r
index 2921cc21b24c88b7dc937aabafb6fd3ddf3a2433..40a85ee6fb84712848d2c4e991f41bc0af1d5f7a 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:25:27 CET 2010\r
+ *           on Fri Jan 14 10:53:45 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
index 262ad81ca0aa3302702470f26cb197c792359457..2268c2165a00c48863aaf1a2143f64c843c6c681 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:25:27 CET 2010\r
+ *           on Fri Jan 14 10:53:45 CET 2011\r
  */\r
 \r
 
-#if (PDUR_SW_MAJOR_VERSION != 1) 
+#if !(((PDUR_SW_MAJOR_VERSION == 1) && (PDUR_SW_MINOR_VERSION == 0)) )
 #error "PduR: Configuration file version differs from BSW version."
 #endif
 
index 24b0783b82aa4db283b44b4604770a089912ade8..708be59dd3834eebe8882cc62bf7b8a7f748ff11 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:25:28 CET 2010\r
+ *           on Fri Jan 14 10:53:45 CET 2011\r
  */\r
 \r
 \r
index 691a623c2538af2c3bc2ae192894170c5bbd1e10..fda2bd2ef43f7e9ecceac5d1b9fa59a6ec28d779 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:25:27 CET 2010\r
+ *           on Fri Jan 14 10:53:45 CET 2011\r
  */\r
 \r
 
-#if (PDUR_SW_MAJOR_VERSION != 1) 
+#if !(((PDUR_SW_MAJOR_VERSION == 1) && (PDUR_SW_MINOR_VERSION == 0)) )
 #error "PduR: Configuration file version differs from BSW version."
 #endif
 
index cdded662438a07b0dd825f98ff518b38fd81499a..9606336279de06da3e5b77f1747c1f3ff7d3e308 100644 (file)
@@ -9,16 +9,16 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:25:28 CET 2010\r
+ *           on Fri Jan 14 10:53:45 CET 2011\r
  */\r
 \r
        \r
-// File generated on Wed Dec 01 20:25:28 CET 2010\r
+// File generated on Fri Jan 14 10:53:45 CET 2011\r
 // File generated by com.arccore.bswbuilder.modules.port.mpc5567\r
 \r
 #include "Port.h"\r
 #include "Port_Cfg.h"\r
-#include "stdlib.h"\r
+#include <stdlib.h>\r
 \r
 const uint16_t PortPadConfigData[] = {\r
        PORT_PCR_RESET,                 /* PCR  0 */\r
index 691ddd961d4bdbe47c8fbd6b42446f52b493cfbd..863af2f4eed018a240957d1bcefe38ed72a4e57e 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 20:25:28 CET 2010\r
+ *           on Fri Jan 14 10:53:45 CET 2011\r
  */\r
 \r
 
-#if (PORT_SW_MAJOR_VERSION != 1) 
+#if !(((PORT_SW_MAJOR_VERSION == 1) && (PORT_SW_MINOR_VERSION == 0)) )
 #error "Port: Configuration file version differs from BSW version."
 #endif
 
index 3499b1141eb6e06d599bf462ec4d4b4d1f689b71..b149c2882aaf5a8e4aa4ba3c5231dc815e19fcf7 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 11:20:59 CET 2010\r
+ *           on Mon Jan 17 14:53:39 CET 2011\r
  */\r
 \r
        \r
index bbbebf0b275f30e6a80174ede27a720f380062b4..43c28374508622221cb318fd7b9e6b31e559069a 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 11:20:59 CET 2010\r
+ *           on Mon Jan 17 14:53:39 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
index 73883bf79cbf2613e5329d151c020114c7c1b465..674a5276d5b4f90eda785dec62cf437834c7fd94 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 11:17:19 CET 2010\r
+ *           on Mon Jan 17 11:00:47 CET 2011\r
  */\r
 \r
        \r
index 223ada3eb93542cd4e48f72139b807c533006619..d91cd34316f2118ac4854d5bbc00983cda1acb0d 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 11:17:19 CET 2010\r
+ *           on Mon Jan 17 11:00:47 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
index c0637c13e16a9df1286ee1d1621a12c911d33396..9909b4091b551fe1a5ae23311c0951911dae859b 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Thu Dec 02 15:48:34 CET 2010\r
+ *           on Mon Jan 17 12:33:23 CET 2011\r
  */\r
 \r
        \r
index 4965e08c65251a5e9065536f62f22b314ce77589..eeab31c4d7af11d8ad776dd716cb67914e5d67f9 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Thu Dec 02 15:48:34 CET 2010\r
+ *           on Mon Jan 17 12:33:23 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
index f3bda2460df47dff1c8ab68e3ef66a7115bf6069..dbda911eb4e5c742f181e21514fe7a45156ce8f9 100644 (file)
@@ -9,7 +9,7 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Mon Dec 06 15:00:37 CET 2010\r
+ *           on Fri Jan 14 11:34:04 CET 2011\r
  */\r
 \r
        \r
index a8852460cee4ef002d299d68b96c26096457414f..8f489efdb54f66a0debb966e7468dea0cb748bfe 100644 (file)
@@ -9,11 +9,11 @@
  *\r
  * Copyright ArcCore AB 2010\r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Mon Dec 06 15:00:37 CET 2010\r
+ *           on Fri Jan 14 11:34:04 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
index 576281214f0bfc6015ea0d618388f162969eb8d2..5000d5270294e124d01f5169107274acc6920c43 100644 (file)
@@ -2,14 +2,14 @@
  * Configuration of module Os (Os_Cfg.c)\r
  *\r
  * Created by: \r
- * Configured for (MCU): Cortex M3\r
+ * Configured for (MCU): STM32_F103\r
  *\r
  * Module vendor: ArcCore\r
  * Module version: 2.0.11\r
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 15:32:56 CET 2010\r
+ *           on Mon Jan 17 08:54:51 CET 2011\r
  */\r
 \r
        \r
index a6908dcd2af2cc9aaaf4f6da47a5282ae3e2a851..92ffea91780dadb2d31baf85f6f4a2eab916e698 100644 (file)
@@ -2,18 +2,18 @@
  * Configuration of module Os (Os_Cfg.h)\r
  *\r
  * Created by: \r
- * Configured for (MCU): Cortex M3\r
+ * Configured for (MCU): STM32_F103\r
  *\r
  * Module vendor: ArcCore\r
  * Module version: 2.0.11\r
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 15:32:56 CET 2010\r
+ *           on Mon Jan 17 08:54:51 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
index 576281214f0bfc6015ea0d618388f162969eb8d2..1eb4e87b77ee3e885f413cdcfe3b9029f97d52ef 100644 (file)
@@ -2,14 +2,14 @@
  * Configuration of module Os (Os_Cfg.c)\r
  *\r
  * Created by: \r
- * Configured for (MCU): Cortex M3\r
+ * Configured for (MCU): STM32_F107\r
  *\r
  * Module vendor: ArcCore\r
  * Module version: 2.0.11\r
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 15:32:56 CET 2010\r
+ *           on Fri Jan 14 09:15:16 CET 2011\r
  */\r
 \r
        \r
index a6908dcd2af2cc9aaaf4f6da47a5282ae3e2a851..1c9eb7375c42c6897fe88bda2c856222cec88359 100644 (file)
@@ -2,18 +2,18 @@
  * Configuration of module Os (Os_Cfg.h)\r
  *\r
  * Created by: \r
- * Configured for (MCU): Cortex M3\r
+ * Configured for (MCU): STM32_F107\r
  *\r
  * Module vendor: ArcCore\r
  * Module version: 2.0.11\r
  *\r
  * \r
  * Generated by Arctic Studio (http://arccore.com) \r
- *           on Wed Dec 01 15:32:56 CET 2010\r
+ *           on Fri Jan 14 09:15:16 CET 2011\r
  */\r
 \r
 
-#if (OS_SW_MAJOR_VERSION != 2) 
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
 #error "Os: Configuration file version differs from BSW version."
 #endif
 
index d7f7e7ff5a320e9cd83c594ad42e8aded29c5e97..15b6b08f5b115991c2b5b5ae1c48144150c01452 100644 (file)
@@ -18,7 +18,7 @@
 #include "Mcu.h"\r
 #include "arc.h"\r
 \r
-#define USE_LDEBUG_PRINTF\r
+//#define USE_LDEBUG_PRINTF // Uncomment this to turn debug statements on.\r
 #include "debug.h"\r
 \r
 // How many errors to keep in error log.\r
@@ -52,7 +52,7 @@ void etask_1( void ) {
        StackInfoType si;\r
        TaskType currTask;\r
 \r
-       LDEBUG_PRINTF("etask_1 start\n");\r
+       LDEBUG_FPUTS("etask_1 start\n");\r
        for(;;) {\r
                SetEvent(TASK_ID_etask_2,EVENT_MASK_EVENT_1);\r
                WaitEvent(EVENT_MASK_EVENT_2);\r
@@ -71,7 +71,7 @@ void etask_1( void ) {
  * and activates task: btask_3.\r
  */\r
 void etask_2( void ) {\r
-       LDEBUG_PRINTF("etask_2 start\n");\r
+       LDEBUG_FPUTS("etask_2 start\n");\r
 \r
        for(;;) {\r
                WaitEvent(EVENT_MASK_EVENT_1);\r
@@ -100,20 +100,18 @@ void OsIdle( void ) {
 \r
 /* Global hooks */\r
 ProtectionReturnType ProtectionHook( StatusType FatalError ) {\r
-       LDEBUG_PRINTF("## ProtectionHook\n");\r
+       LDEBUG_FPUTS("## ProtectionHook\n");\r
        return PRO_KILLAPPL;\r
 }\r
 \r
 void StartupHook( void ) {\r
-       uint32_t sys_freq = McuE_GetSystemClock();\r
+       LDEBUG_FPUTS("## StartupHook\n");\r
 \r
-       LDEBUG_PRINTF("## StartupHook\n");\r
-\r
-       LDEBUG_PRINTF("Sys clock %u Hz\n",(unsigned)sys_freq);\r
+       LDEBUG_PRINTF("Sys clock %u Hz\n",(unsigned)McuE_GetSystemClock());\r
 }\r
 \r
 void ShutdownHook( StatusType Error ) {\r
-       LDEBUG_PRINTF("## ShutdownHook\n");\r
+       LDEBUG_FPUTS("## ShutdownHook\n");\r
        while(1);\r
 }\r
 \r
similarity index 97%
rename from examples/tiny/tiny_arm_cm3.arxml
rename to examples/tiny/tiny_arm_stm32_f103.arxml
index 78e63b33d0b63c2a2740b54c1b1a478df145d69f..6c628c3647d59a98ac87b0805d6b193283ca0c39 100644 (file)
@@ -11,7 +11,7 @@
             </DOC-REVISIONS>\r
             <SDGS>\r
               <SDG GID="Arccore::EcuOptions">\r
-                <SD GID="MCU">Cortex M3</SD>\r
+                <SD GID="MCU">STM32_F103</SD>\r
                 <SD GID="GENDIR">/tiny/config/stm32_stm3210c</SD>\r
               </SDG>\r
             </SDGS>\r
similarity index 70%
rename from examples/blinker_node/blinker_node_arm_cm3.arxml
rename to examples/tiny/tiny_arm_stm32_f107.arxml
index 75b07c62bce4bf58dc24aa4e7ec00ab9ce64d5af..1e79317dd0efb0b67355117fc31f3aba04716ecc 100644 (file)
@@ -1,43 +1,43 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 <AUTOSAR xmlns="http://autosar.org/3.1.4"><TOP-LEVEL-PACKAGES>\r
     <AR-PACKAGE>\r
-      <SHORT-NAME>blinker_node_arm_cm3</SHORT-NAME>\r
+      <SHORT-NAME>tiny_arm_cm3</SHORT-NAME>\r
       <ELEMENTS>\r
-        <ECU-CONFIGURATION UUID="7cf102d9-f929-4b4a-97b6-4ef11256183a">\r
-          <SHORT-NAME>blinker_node_arm_cm3</SHORT-NAME>\r
+        <ECU-CONFIGURATION UUID="2791ca0a-8e26-4388-976c-a48110927414">\r
+          <SHORT-NAME>tiny_arm_cm3</SHORT-NAME>\r
           <ADMIN-DATA>\r
             <DOC-REVISIONS>\r
               <DOC-REVISION/>\r
             </DOC-REVISIONS>\r
             <SDGS>\r
               <SDG GID="Arccore::EcuOptions">\r
-                <SD GID="MCU">Cortex M3</SD>\r
-                <SD GID="GENDIR">/blinker/config/stm32_stm3210c</SD>\r
+                <SD GID="MCU">STM32_F107</SD>\r
+                <SD GID="GENDIR"></SD>\r
               </SDG>\r
             </SDGS>\r
           </ADMIN-DATA>\r
-          <ECU-SW-COMPOSITION-REF DEST="ECU-SW-COMPOSITION">/blinker_node_arm_cm3/SwComposition_blinker_node_arm_cm3</ECU-SW-COMPOSITION-REF>\r
+          <ECU-SW-COMPOSITION-REF DEST="ECU-SW-COMPOSITION">/tiny_arm_cm3/SwComposition_tiny_arm_cm3</ECU-SW-COMPOSITION-REF>\r
           <MODULE-REFS>\r
-            <MODULE-REF DEST="MODULE-CONFIGURATION">/blinker_node_arm_cm3/Os</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/tiny_arm_cm3/Os</MODULE-REF>\r
           </MODULE-REFS>\r
         </ECU-CONFIGURATION>\r
-        <ECU-SW-COMPOSITION UUID="bf0ee133-5ed1-418a-b260-47e171242afc">\r
-          <SHORT-NAME>SwComposition_blinker_node_arm_cm3</SHORT-NAME>\r
+        <ECU-SW-COMPOSITION UUID="9aecec1e-749c-47fe-9fdb-98ed851bf12f">\r
+          <SHORT-NAME>SwComposition_tiny_arm_cm3</SHORT-NAME>\r
         </ECU-SW-COMPOSITION>\r
-        <MODULE-CONFIGURATION UUID="4fe46a12-0672-428f-99e3-c4ca6570a776">\r
+        <MODULE-CONFIGURATION UUID="d9b75d00-e6eb-4671-a7cf-0abd1e1ed6a7">\r
           <SHORT-NAME>Os</SHORT-NAME>\r
           <ADMIN-DATA>\r
             <SDGS>\r
               <SDG/>\r
               <SDG GID="Arccore::ModuleOptions">\r
                 <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
-                <SD GID="ARCCORE_EDITOR_VERSION">2.0.7</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.6</SD>\r
               </SDG>\r
             </SDGS>\r
           </ADMIN-DATA>\r
           <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Os</DEFINITION-REF>\r
           <CONTAINERS>\r
-            <CONTAINER UUID="80853be9-55dc-435f-95ed-9a1c90750299">\r
+            <CONTAINER UUID="5ceca27a-71ff-4c71-bcb8-69a1f31f5d79">\r
               <SHORT-NAME>OsOS</SHORT-NAME>\r
               <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsOS</DEFINITION-REF>\r
               <PARAMETER-VALUES>\r
@@ -75,7 +75,7 @@
                 </INTEGER-VALUE>\r
                 <BOOLEAN-VALUE>\r
                   <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsUseDebug</DEFINITION-REF>\r
-                  <VALUE>true</VALUE>\r
+                  <VALUE>false</VALUE>\r
                 </BOOLEAN-VALUE>\r
                 <BOOLEAN-VALUE>\r
                   <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugTask</DEFINITION-REF>\r
@@ -99,7 +99,7 @@
                 </BOOLEAN-VALUE>\r
               </PARAMETER-VALUES>\r
               <SUB-CONTAINERS>\r
-                <CONTAINER UUID="7f1dfe11-aeff-4131-89a9-2fbe9a87f01f">\r
+                <CONTAINER UUID="185f3281-13f7-459b-9ccd-66eb1aff52ca">\r
                   <SHORT-NAME>OsHooks</SHORT-NAME>\r
                   <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsOS/OsHooks</DEFINITION-REF>\r
                   <PARAMETER-VALUES>\r
                 </CONTAINER>\r
               </SUB-CONTAINERS>\r
             </CONTAINER>\r
-            <CONTAINER UUID="77224460-9071-4c32-9ba5-5ee19d0a5be2">\r
-              <SHORT-NAME>alarm25</SHORT-NAME>\r
-              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
-              <REFERENCE-VALUES>\r
-                <REFERENCE-VALUE>\r
-                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
-                  <VALUE-REF DEST="CONTAINER">/blinker_node_arm_cm3/Os/OsTick</VALUE-REF>\r
-                </REFERENCE-VALUE>\r
-              </REFERENCE-VALUES>\r
-              <SUB-CONTAINERS>\r
-                <CONTAINER UUID="28398b0a-02ef-4aa0-9f06-90c0683ad934">\r
-                  <SHORT-NAME>OsAlarmActivateTask</SHORT-NAME>\r
-                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask</DEFINITION-REF>\r
-                  <REFERENCE-VALUES>\r
-                    <REFERENCE-VALUE>\r
-                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask/OsAlarmActivateTaskRef</DEFINITION-REF>\r
-                      <VALUE-REF DEST="CONTAINER">/blinker_node_arm_cm3/Os/bTask25</VALUE-REF>\r
-                    </REFERENCE-VALUE>\r
-                  </REFERENCE-VALUES>\r
-                </CONTAINER>\r
-              </SUB-CONTAINERS>\r
-            </CONTAINER>\r
-            <CONTAINER UUID="b4e4c707-af7c-4d9f-a156-1507283b4ebe">\r
-              <SHORT-NAME>OsTick</SHORT-NAME>\r
-              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsCounter</DEFINITION-REF>\r
-              <PARAMETER-VALUES>\r
-                <INTEGER-VALUE>\r
-                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMaxAllowedValue</DEFINITION-REF>\r
-                  <VALUE>65535</VALUE>\r
-                </INTEGER-VALUE>\r
-                <INTEGER-VALUE>\r
-                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMinCycle</DEFINITION-REF>\r
-                  <VALUE>0</VALUE>\r
-                </INTEGER-VALUE>\r
-                <INTEGER-VALUE>\r
-                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterTicksPerBase</DEFINITION-REF>\r
-                  <VALUE>0</VALUE>\r
-                </INTEGER-VALUE>\r
-                <ENUMERATION-VALUE>\r
-                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterType</DEFINITION-REF>\r
-                  <VALUE>OS_TICK</VALUE>\r
-                </ENUMERATION-VALUE>\r
-              </PARAMETER-VALUES>\r
-            </CONTAINER>\r
-            <CONTAINER UUID="44a8dc3f-2e97-4bb7-8139-57852146269a">\r
-              <SHORT-NAME>bTask25</SHORT-NAME>\r
-              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
-              <PARAMETER-VALUES>\r
-                <INTEGER-VALUE>\r
-                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
-                  <VALUE>1</VALUE>\r
-                </INTEGER-VALUE>\r
-                <INTEGER-VALUE>\r
-                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
-                  <VALUE>1</VALUE>\r
-                </INTEGER-VALUE>\r
-                <ENUMERATION-VALUE>\r
-                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
-                  <VALUE>BASIC</VALUE>\r
-                </ENUMERATION-VALUE>\r
-                <INTEGER-VALUE>\r
-                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
-                  <VALUE>2048</VALUE>\r
-                </INTEGER-VALUE>\r
-                <ENUMERATION-VALUE>\r
-                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
-                  <VALUE>FULL</VALUE>\r
-                </ENUMERATION-VALUE>\r
-              </PARAMETER-VALUES>\r
-            </CONTAINER>\r
-            <CONTAINER UUID="f9e78da1-ee81-40a0-940b-3e04d9e9034c">\r
-              <SHORT-NAME>bTask100</SHORT-NAME>\r
+            <CONTAINER UUID="4c1d9bd6-69e7-48c8-8036-35c6279f2240">\r
+              <SHORT-NAME>etask_1</SHORT-NAME>\r
               <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
               <PARAMETER-VALUES>\r
                 <INTEGER-VALUE>\r
                 </INTEGER-VALUE>\r
                 <ENUMERATION-VALUE>\r
                   <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
-                  <VALUE>BASIC</VALUE>\r
+                  <VALUE>EXTENDED</VALUE>\r
                 </ENUMERATION-VALUE>\r
                 <INTEGER-VALUE>\r
                   <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
                   <VALUE>FULL</VALUE>\r
                 </ENUMERATION-VALUE>\r
               </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="fbcd933e-5944-44dd-ac92-f9eace6bb55c">\r
+                  <SHORT-NAME>OsTaskAutostart</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask/OsTaskAutostart</DEFINITION-REF>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
             </CONTAINER>\r
-            <CONTAINER UUID="157c6a3d-f8ad-4493-9d76-a8f9411066aa">\r
-              <SHORT-NAME>bTask10</SHORT-NAME>\r
+            <CONTAINER UUID="41f28680-c88e-4083-bacc-40cf82ec3122">\r
+              <SHORT-NAME>etask_2</SHORT-NAME>\r
               <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
               <PARAMETER-VALUES>\r
                 <INTEGER-VALUE>\r
                 </INTEGER-VALUE>\r
                 <INTEGER-VALUE>\r
                   <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
-                  <VALUE>1</VALUE>\r
+                  <VALUE>2</VALUE>\r
                 </INTEGER-VALUE>\r
                 <ENUMERATION-VALUE>\r
                   <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
-                  <VALUE>BASIC</VALUE>\r
+                  <VALUE>EXTENDED</VALUE>\r
                 </ENUMERATION-VALUE>\r
                 <INTEGER-VALUE>\r
                   <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
                   <VALUE>FULL</VALUE>\r
                 </ENUMERATION-VALUE>\r
               </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="53d449ae-bdbe-49cb-bb22-141480e62565">\r
+                  <SHORT-NAME>OsTaskAutostart</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask/OsTaskAutostart</DEFINITION-REF>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
             </CONTAINER>\r
-            <CONTAINER UUID="ace8439e-ddb7-4bd7-b9e5-643a759f3e55">\r
-              <SHORT-NAME>Startup</SHORT-NAME>\r
+            <CONTAINER UUID="b5120b2f-2b4e-4e0f-8a7f-c7466b489644">\r
+              <SHORT-NAME>btask_3</SHORT-NAME>\r
               <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
               <PARAMETER-VALUES>\r
                 <INTEGER-VALUE>\r
                 </INTEGER-VALUE>\r
                 <INTEGER-VALUE>\r
                   <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
-                  <VALUE>2</VALUE>\r
+                  <VALUE>3</VALUE>\r
                 </INTEGER-VALUE>\r
                 <ENUMERATION-VALUE>\r
                   <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
                   <VALUE>FULL</VALUE>\r
                 </ENUMERATION-VALUE>\r
               </PARAMETER-VALUES>\r
-              <SUB-CONTAINERS>\r
-                <CONTAINER UUID="40214336-c4be-4506-8ccc-75ff014f39fe">\r
-                  <SHORT-NAME>OsTaskAutostart</SHORT-NAME>\r
-                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask/OsTaskAutostart</DEFINITION-REF>\r
-                </CONTAINER>\r
-              </SUB-CONTAINERS>\r
             </CONTAINER>\r
-            <CONTAINER UUID="08cf618f-ebe2-483c-8ba5-fde04f3c6160">\r
-              <SHORT-NAME>alarm10</SHORT-NAME>\r
+            <CONTAINER UUID="759524bb-836c-4d61-b59a-cf8edfb6e162">\r
+              <SHORT-NAME>Alarm_4ms</SHORT-NAME>\r
               <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
               <REFERENCE-VALUES>\r
                 <REFERENCE-VALUE>\r
                   <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
-                  <VALUE-REF DEST="CONTAINER">/blinker_node_arm_cm3/Os/OsTick</VALUE-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/tiny_arm_cm3/Os/OsTick</VALUE-REF>\r
                 </REFERENCE-VALUE>\r
               </REFERENCE-VALUES>\r
               <SUB-CONTAINERS>\r
-                <CONTAINER UUID="8a235c19-4b95-4bf1-a309-f15916dd2d8d">\r
-                  <SHORT-NAME>OsAlarmActivateTask</SHORT-NAME>\r
-                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask</DEFINITION-REF>\r
+                <CONTAINER UUID="45cda08c-e07f-4670-8f14-b85acb209a6f">\r
+                  <SHORT-NAME>OsAlarmAutostart</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart/OsAlarmAlarmTime</DEFINITION-REF>\r
+                      <VALUE>100</VALUE>\r
+                    </INTEGER-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart/OsAlarmAutostartType</DEFINITION-REF>\r
+                      <VALUE>ABSOLUTE</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart/OsAlarmCycleTime</DEFINITION-REF>\r
+                      <VALUE>4</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="5801fbe7-6b9b-4390-9341-2dd9ab4412f5">\r
+                  <SHORT-NAME>OsAlarmSetEvent</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent</DEFINITION-REF>\r
                   <REFERENCE-VALUES>\r
                     <REFERENCE-VALUE>\r
-                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask/OsAlarmActivateTaskRef</DEFINITION-REF>\r
-                      <VALUE-REF DEST="CONTAINER">/blinker_node_arm_cm3/Os/bTask10</VALUE-REF>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent/OsAlarmSetEventRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/tiny_arm_cm3/Os/EVENT_2</VALUE-REF>\r
                     </REFERENCE-VALUE>\r
-                  </REFERENCE-VALUES>\r
-                </CONTAINER>\r
-              </SUB-CONTAINERS>\r
-            </CONTAINER>\r
-            <CONTAINER UUID="0f791241-110b-4cac-9e54-b41ad56c7f05">\r
-              <SHORT-NAME>alarm100</SHORT-NAME>\r
-              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
-              <REFERENCE-VALUES>\r
-                <REFERENCE-VALUE>\r
-                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
-                  <VALUE-REF DEST="CONTAINER">/blinker_node_arm_cm3/Os/OsTick</VALUE-REF>\r
-                </REFERENCE-VALUE>\r
-              </REFERENCE-VALUES>\r
-              <SUB-CONTAINERS>\r
-                <CONTAINER UUID="3eb17f20-d68e-4d62-87e3-6775933e93a2">\r
-                  <SHORT-NAME>OsAlarmActivateTask</SHORT-NAME>\r
-                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask</DEFINITION-REF>\r
-                  <REFERENCE-VALUES>\r
                     <REFERENCE-VALUE>\r
-                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask/OsAlarmActivateTaskRef</DEFINITION-REF>\r
-                      <VALUE-REF DEST="CONTAINER">/blinker_node_arm_cm3/Os/bTask100</VALUE-REF>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent/OsAlarmSetEventTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/tiny_arm_cm3/Os/etask_1</VALUE-REF>\r
                     </REFERENCE-VALUE>\r
                   </REFERENCE-VALUES>\r
                 </CONTAINER>\r
               </SUB-CONTAINERS>\r
             </CONTAINER>\r
+            <CONTAINER UUID="f289efa7-5957-47a1-9c32-2248195ca090">\r
+              <SHORT-NAME>OsTick</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsCounter</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMaxAllowedValue</DEFINITION-REF>\r
+                  <VALUE>65535</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMinCycle</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterTicksPerBase</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterType</DEFINITION-REF>\r
+                  <VALUE>OS_TICK</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="e6dde7c3-6596-4a33-96ab-3a43d4ab1429">\r
+              <SHORT-NAME>EVENT_0</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsEvent</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsEvent/OsEventMask</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="d93f5687-240e-465d-afb4-da563598d37a">\r
+              <SHORT-NAME>EVENT_1</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsEvent</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsEvent/OsEventMask</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="94eef554-c26c-44d5-9b8f-501597b53d51">\r
+              <SHORT-NAME>EVENT_2</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsEvent</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsEvent/OsEventMask</DEFINITION-REF>\r
+                  <VALUE>2</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
           </CONTAINERS>\r
         </MODULE-CONFIGURATION>\r
       </ELEMENTS>\r
diff --git a/examples/wdg_node/build_config.mk b/examples/wdg_node/build_config.mk
new file mode 100644 (file)
index 0000000..23e2b32
--- /dev/null
@@ -0,0 +1,9 @@
+-include ../config/*.mk\r
+-include ../config/$(BOARDDIR)/*.mk\r
+\r
+MOD_USE += WDG WDGM PORT DIO MCU KERNEL ECUM DET GPT\r
+\r
+SELECT_CONSOLE = RAMLOG\r
+\r
+SELECT_OPT = OPT_DEBUG \r
+\r
diff --git a/examples/wdg_node/config/stm32_mcbstm32/Dio_Cfg.h b/examples/wdg_node/config/stm32_mcbstm32/Dio_Cfg.h
new file mode 100644 (file)
index 0000000..e38a23c
--- /dev/null
@@ -0,0 +1,61 @@
+/*\r
+ * Configuration of module Dio (Dio_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F103\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.0\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Mon Feb 28 18:42:03 CET 2011\r
+ */\r
+\r
+
+#if !(((DIO_SW_MAJOR_VERSION == 1) && (DIO_SW_MINOR_VERSION == 0)) )
+#error "Dio: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef DIO_CFG_H_\r
+#define DIO_CFG_H_\r
+\r
+#define DIO_VERSION_INFO_API    STD_OFF\r
+#define DIO_DEV_ERROR_DETECT    STD_OFF\r
+\r
+#define DIO_END_OF_LIST  -1\r
+\r
+// Physical ports\r
+typedef enum\r
+{\r
+  A = 0,\r
+  B = 1,\r
+  C = 2,\r
+  D = 3,\r
+  E = 4,\r
+  F = 5,\r
+  G = 6,\r
+} Dio_PortTypesType;\r
+\r
+\r
+// Channels    \r
+#define DIO_CHANNEL_NAME_HeartBeatLED  31\r
+\r
+// Channel group\r
+\r
+// Ports\r
+#define DIO_PORT_NAME_DioPort_1                (B)\r
+\r
+\r
+\r
+\r
+// Pointers for convenience.\r
+// Channels    \r
+extern const Dio_ChannelType DioChannelConfigData[];\r
+// Channel group\r
+extern const Dio_ChannelGroupType DioConfigData[];\r
+// Port\r
+extern const Dio_PortType DioPortConfigData[];\r
+\r
+#endif /*DIO_CFG_H_*/\r
diff --git a/examples/wdg_node/config/stm32_mcbstm32/Dio_Lcfg.c b/examples/wdg_node/config/stm32_mcbstm32/Dio_Lcfg.c
new file mode 100644 (file)
index 0000000..1a79cb9
--- /dev/null
@@ -0,0 +1,42 @@
+/*\r
+ * Configuration of module Dio (Dio_Lcfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F103\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.0\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Mon Feb 28 18:42:03 CET 2011\r
+ */\r
+\r
+\r
+       \r
+#include "Dio.h"\r
+#include "Dio_Cfg.h"\r
+\r
+const Dio_ChannelType DioChannelConfigData[] = { \r
+       DIO_CHANNEL_NAME_HeartBeatLED,\r
+       DIO_END_OF_LIST\r
+};\r
+\r
+const Dio_PortType DioPortConfigData[] = { \r
+       DIO_PORT_NAME_DioPort_1,  \r
+       DIO_END_OF_LIST\r
+};\r
+\r
+const Dio_ChannelGroupType DioConfigData[] = {\r
+       { \r
+         .port = DIO_END_OF_LIST, \r
+         .offset = DIO_END_OF_LIST, \r
+         .mask = DIO_END_OF_LIST, \r
+       }\r
+};\r
+\r
+\r
+uint32 Dio_GetPortConfigSize(void)\r
+{\r
+  return sizeof(DioConfigData);\r
+}\r
diff --git a/examples/wdg_node/config/stm32_mcbstm32/Gpt_Cfg.c b/examples/wdg_node/config/stm32_mcbstm32/Gpt_Cfg.c
new file mode 100644 (file)
index 0000000..0ac9647
--- /dev/null
@@ -0,0 +1,57 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+#include "Gpt.h"\r
+#include "Gpt_Cfg.h"\r
+#include <stdlib.h>\r
+\r
+#if defined(USE_KERNEL)\r
+extern void OsTick( void );\r
+#endif\r
+\r
+extern WdgM_Cbk_GptNotification (void);\r
+\r
+const Gpt_ConfigType GptConfigData[] =\r
+{\r
+        {\r
+                .GptChannelId = GPT_CHANNEL_TIM_2,\r
+                .GptChannelMode = GPT_MODE_ONESHOT,\r
+                .GptChannelClkSrc = 0,\r
+                .GptNotification = NULL,\r
+                .GptChannelPrescale = 72, // 1MHz\r
+                .GptEnableWakeup = FALSE,\r
+        },\r
+        {\r
+                .GptChannelId = GPT_CHANNEL_TIM_3,\r
+                .GptChannelMode = GPT_MODE_CONTINUOUS,\r
+                .GptChannelClkSrc = 0,\r
+                .GptNotification = WdgM_Cbk_GptNotification,\r
+                .GptChannelPrescale = 72, // 1MHz\r
+                .GptEnableWakeup = FALSE,\r
+        },\r
+\r
+        {\r
+                // Last channel in list\r
+                .GptChannelId = GPT_CHANNEL_ILL,\r
+        }\r
+};\r
diff --git a/examples/wdg_node/config/stm32_mcbstm32/Gpt_Cfg.h b/examples/wdg_node/config/stm32_mcbstm32/Gpt_Cfg.h
new file mode 100644 (file)
index 0000000..b562105
--- /dev/null
@@ -0,0 +1,97 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+/** @addtogroup Gpt GPT Driver\r
+ *  @{ */\r
+\r
+/** @file Gpt_Cfg.h\r
+ *  Definitions of configuration parameters for GPT Driver.\r
+ */\r
+\r
+#warning "This default file may only be used as an example!"\r
+\r
+#ifndef GPT_CFG_H_\r
+#define GPT_CFG_H_\r
+#include "Std_Types.h"\r
+\r
+\r
+/** Configuration is pre-compile only. Not supported. */\r
+#define GPT_VARIANT_PC STD_OFF\r
+/** Configuration is a mix of pre-compile and post-build */\r
+#define GPT_VARIANT_PB STD_ON\r
+\r
+//#define DEC_TEST\r
+//#define GPT_TEST\r
+\r
+/** HW PIT channels */\r
+#define GPT_CHANNEL_TIM_1      0\r
+#define GPT_CHANNEL_TIM_2      1\r
+#define GPT_CHANNEL_TIM_3      2\r
+#define GPT_CHANNEL_TIM_4      3\r
+\r
+#define GPT_CHANNEL_CNT        (GPT_CHANNEL_TIM_4 + 1)\r
+\r
+// Illegal channel\r
+#define GPT_CHANNEL_ILL        31\r
+\r
+/** Enable Development Error Trace */\r
+#define GPT_DEV_ERROR_DETECT           STD_ON\r
+/** Enables/Disables wakeup source reporting. Not supported. */\r
+#define GPT_REPORT_WAKEUP_SOURCE       STD_OFF\r
+/** Build DeInit API */\r
+#define GPT_DEINIT_API                                                 STD_ON\r
+/** Build notification API */\r
+#define GPT_ENABLE_DISABLE_NOTIFICATION_API     STD_ON\r
+/** Build time remaining API */\r
+#define GPT_TIME_REMAINING_API                                 STD_ON\r
+/** Build time elapsed API */\r
+#define GPT_TIME_ELAPSED_API                    STD_ON\r
+/** Build version info API */\r
+#define GPT_VERSION_INFO_API                                   STD_ON\r
+/** Build wakeup API. Not supported */\r
+#define GPT_WAKEUP_FUNCTIONALITY_API                   STD_OFF\r
+\r
+\r
+/** This container contains the channel-wide configuration (parameters) of the\r
+ *  GPT Driver */\r
+typedef struct  {\r
+       /** GPT187: The GPT module specific clock input for the timer unit can\r
+        *  statically be configured and allows  to select different clock sources\r
+        *  (external clock, internal GPT specific clock) per channel */\r
+       uint32 GptChannelClkSrc;\r
+\r
+       /** Channel Id of the GPT channel. */\r
+       Gpt_ChannelType GptChannelId;\r
+\r
+       /** Specifies the behaviour of the timer channel after the timeout has expired. */\r
+       Gpt_ChannelMode GptChannelMode;\r
+\r
+       /** Function pointer to callback function */\r
+       void (*GptNotification)();\r
+\r
+       /** GPT module specific prescaler factor per channel */\r
+       uint32 GptChannelPrescale;\r
+\r
+       /** GPT188: Enables wakeup capability of CPU for a channel when timeout\r
+        *  period expires. This might be different to enabling the notification\r
+        *  depending on hardware capabilities. Not supported. */\r
+       boolean GptEnableWakeup;\r
+} Gpt_ConfigType;\r
+\r
+/** The list of channel configurations */\r
+extern const Gpt_ConfigType GptConfigData[];\r
+\r
+#endif /*GPT_CFG_H_*/\r
+/** @} */\r
diff --git a/examples/wdg_node/config/stm32_mcbstm32/Mcu_Cfg.c b/examples/wdg_node/config/stm32_mcbstm32/Mcu_Cfg.c
new file mode 100644 (file)
index 0000000..4a80f4c
--- /dev/null
@@ -0,0 +1,57 @@
+/*\r
+ * Configuration of module Mcu (Mcu_Cfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F103\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Mon Feb 28 18:42:03 CET 2011\r
+ */\r
+\r
+\r
+#ifndef MCU_CFG_C_\r
+#define MCU_CFG_C_\r
+\r
+#include "Mcu.h"\r
+\r
+Mcu_RamSectorSettingConfigType Mcu_RamSectorSettingConfigData[] = {\r
+  {\r
+       .McuRamDefaultValue = 0,\r
+    .McuRamSectionBaseAddress = 0,\r
+       .McuRamSectionSize = 0xFF,\r
+  }\r
+};\r
+\r
+Mcu_ClockSettingConfigType Mcu_ClockSettingConfigData[] =\r
+{\r
+  {\r
+    .McuClockReferencePointFrequency = 8000000UL,\r
+    .Pll1    = 9,\r
+    .Pll2    = 8,\r
+    .Pll3    = 0,\r
+  },\r
+};\r
+\r
+const Mcu_PerClockConfigType McuPerClockConfigData =\r
+{\r
+       .AHBClocksEnable = 0,\r
+       .APB1ClocksEnable = RCC_APB1Periph_TIM3 | RCC_APB1Periph_WWDG | RCC_APB1Periph_TIM2,\r
+       .APB2ClocksEnable = RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO\r
+};\r
+\r
+const Mcu_ConfigType McuConfigData[] = {\r
+  {\r
+       .McuClockSrcFailureNotification = 0,\r
+       .McuRamSectors = 1,\r
+       .McuClockSettings = 1,\r
+       .McuDefaultClockSettings = 0,\r
+       .McuClockSettingConfig = &Mcu_ClockSettingConfigData[0],\r
+       .McuRamSectorSettingConfig = &Mcu_RamSectorSettingConfigData[0],\r
+  }\r
+};\r
+\r
+#endif /*MCU_CFG_C_*/\r
diff --git a/examples/wdg_node/config/stm32_mcbstm32/Mcu_Cfg.h b/examples/wdg_node/config/stm32_mcbstm32/Mcu_Cfg.h
new file mode 100644 (file)
index 0000000..abe8f44
--- /dev/null
@@ -0,0 +1,38 @@
+/*\r
+ * Configuration of module Mcu (Mcu_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F103\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Mon Feb 28 18:42:04 CET 2011\r
+ */\r
+\r
+
+#if !(((MCU_SW_MAJOR_VERSION == 2) && (MCU_SW_MINOR_VERSION == 0)) )
+#error "Mcu: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef MCU_CFG_H_\r
+#define MCU_CFG_H_\r
+\r
+#include "Std_Types.h"\r
+#include "Mcu_ConfigTypes.h"\r
+\r
+#define MCU_DEV_ERROR_DETECT   STD_OFF \r
+#define MCU_PERFORM_RESET_API  STD_ON\r
+#define MCU_VERSION_INFO_API   STD_ON\r
+\r
+typedef enum {\r
+       MCU_CLOCKTYPE_Clock = 0,\r
+  MCU_NBR_OF_CLOCKS,\r
+} Mcu_ClockType;\r
+\r
+#define MCU_DEFAULT_CONFIG McuConfigData[0]\r
+\r
+#endif /*MCU_CFG_H_*/\r
diff --git a/examples/wdg_node/config/stm32_mcbstm32/Os_Cfg.c b/examples/wdg_node/config/stm32_mcbstm32/Os_Cfg.c
new file mode 100644 (file)
index 0000000..ca0470d
--- /dev/null
@@ -0,0 +1,174 @@
+/*\r
+ * Configuration of module Os (Os_Cfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F103\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.11\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Mon Feb 28 18:42:03 CET 2011\r
+ */\r
+\r
+       \r
+\r
+#include <stdlib.h>\r
+#include <stdint.h>\r
+#include "Platform_Types.h"\r
+#include "Os.h"                                // includes Os_Cfg.h\r
+#include "os_config_macros.h"\r
+#include "kernel.h"\r
+#include "kernel_offset.h"\r
+#include "alist_i.h"\r
+#include "Mcu.h"\r
+\r
+extern void dec_exception( void );\r
+\r
+// Set the os tick frequency\r
+OsTickType OsTickFreq = 2000;\r
+\r
+\r
+// ###############################    DEBUG OUTPUT     #############################\r
+uint32 os_dbg_mask = 0;\r
\r
+\r
+\r
+// #################################    COUNTERS     ###############################\r
+GEN_COUNTER_HEAD {\r
+       GEN_COUNTER(    COUNTER_ID_OsTick,\r
+                                       "OsTick",\r
+                                       COUNTER_TYPE_HARD,\r
+                                       COUNTER_UNIT_NANO,\r
+                                       0xffff,\r
+                                       1,\r
+                                       0,\r
+                                       0),\r
+       GEN_COUNTER(    COUNTER_ID_WDFailureCounter,\r
+                                       "WDFailureCounter",\r
+                                       COUNTER_TYPE_SOFT,\r
+                                       COUNTER_UNIT_NANO,\r
+                                       65535,\r
+                                       1,\r
+                                       1,\r
+                                       0),\r
+};\r
+\r
+CounterType Os_Arc_OsTickCounter = COUNTER_ID_OsTick;\r
+\r
+// ##################################    ALARMS     ################################\r
+GEN_ALARM_AUTOSTART(ALARM_ID_Alarm_4ms, ALARM_AUTOSTART_ABSOLUTE, 10, 50, OSDEFAULTAPPMODE );\r
+       \r
+GEN_ALARM_AUTOSTART(ALARM_ID_Alarm_WdM, ALARM_AUTOSTART_ABSOLUTE, 1, 1, OSDEFAULTAPPMODE );\r
+       \r
+\r
+GEN_ALARM_HEAD {\r
+       GEN_ALARM(      ALARM_ID_Alarm_4ms,\r
+                               "Alarm_4ms",\r
+                               COUNTER_ID_OsTick,\r
+                               GEN_ALARM_AUTOSTART_NAME(ALARM_ID_Alarm_4ms),\r
+                               ALARM_ACTION_SETEVENT,\r
+                               TASK_ID_etask_1,\r
+                               EVENT_MASK_EVENT_2,\r
+                               NULL ),\r
+       GEN_ALARM(      ALARM_ID_Alarm_WdM,\r
+                               "Alarm_WdM",\r
+                               COUNTER_ID_OsTick,\r
+                               GEN_ALARM_AUTOSTART_NAME(ALARM_ID_Alarm_WdM),\r
+                               ALARM_ACTION_ACTIVATETASK,\r
+                               TASK_ID_WDTask,\r
+                               NULL,\r
+                               NULL ),\r
+};\r
+\r
+// ################################    RESOURCES     ###############################\r
+GEN_RESOURCE_HEAD {\r
+};\r
+\r
+// ##############################    STACKS (TASKS)     ############################\r
+DECLARE_STACK(OsIdle,OS_OSIDLE_STACK_SIZE);\r
+DECLARE_STACK(WDTask,1048);\r
+DECLARE_STACK(btask_3,1048);\r
+DECLARE_STACK(etask_1,2048);\r
+DECLARE_STACK(etask_2,2048);\r
+\r
+// ##################################    TASKS     #################################\r
+GEN_TASK_HEAD {\r
+       GEN_ETASK(      OsIdle,\r
+                               0,\r
+                               FULL,\r
+                               TRUE,\r
+                               NULL,\r
+                               0 \r
+       ),\r
+       GEN_BTASK(\r
+               WDTask,\r
+               4,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               0,\r
+               1\r
+       ),\r
+                               \r
+       GEN_BTASK(\r
+               btask_3,\r
+               3,\r
+               FULL,\r
+               FALSE,\r
+               NULL,\r
+               0,\r
+               1\r
+       ),\r
+                               \r
+       GEN_ETASK(\r
+               etask_1,\r
+               1,\r
+               FULL,\r
+               TRUE,\r
+               NULL,\r
+               0\r
+       ),\r
+               \r
+                               \r
+       GEN_ETASK(\r
+               etask_2,\r
+               2,\r
+               FULL,\r
+               TRUE,\r
+               NULL,\r
+               0\r
+       ),\r
+               \r
+                               \r
+};\r
+\r
+// ##################################    HOOKS     #################################\r
+GEN_HOOKS( \r
+       StartupHook, \r
+       NULL, \r
+       ShutdownHook, \r
+       ErrorHook,\r
+       PreTaskHook, \r
+       PostTaskHook \r
+);\r
+\r
+// ##################################    ISRS     ##################################\r
+\r
+\r
+// ############################    SCHEDULE TABLES     #############################\r
+\r
+// Table heads\r
+GEN_SCHTBL_HEAD {\r
+};\r
+\r
+GEN_PCB_LIST()\r
+\r
+uint8_t os_interrupt_stack[OS_INTERRUPT_STACK_SIZE] __attribute__ ((aligned (0x10)));\r
+\r
+GEN_IRQ_VECTOR_TABLE_HEAD {};\r
+GEN_IRQ_ISR_TYPE_TABLE_HEAD {};\r
+GEN_IRQ_PRIORITY_TABLE_HEAD {};\r
+\r
+#include "os_config_funcs.h"\r
diff --git a/examples/wdg_node/config/stm32_mcbstm32/Os_Cfg.h b/examples/wdg_node/config/stm32_mcbstm32/Os_Cfg.h
new file mode 100644 (file)
index 0000000..abb459b
--- /dev/null
@@ -0,0 +1,89 @@
+/*\r
+ * Configuration of module Os (Os_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F103\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.11\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Mon Feb 28 18:42:03 CET 2011\r
+ */\r
+\r
+
+#if !(((OS_SW_MAJOR_VERSION == 2) && (OS_SW_MINOR_VERSION == 0)) )
+#error "Os: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef OS_CFG_H_\r
+#define OS_CFG_H_\r
+\r
+\r
+// Alarm Id's\r
+#define ALARM_ID_Alarm_4ms     0\r
+#define ALARM_ID_Alarm_WdM     1\r
+\r
+// Counter Id's\r
+#define COUNTER_ID_OsTick      0\r
+#define COUNTER_ID_WDFailureCounter    1\r
+\r
+// Counter macros\r
+#define OSMAXALLOWEDVALUE_OsTick 65535\r
+#define OSMAXALLOWEDVALUE_WDFailureCounter 65535\r
+\r
+\r
+// Event masks\r
+#define EVENT_MASK_EVENT_0     0\r
+#define EVENT_MASK_EVENT_1     1\r
+#define EVENT_MASK_EVENT_2     2\r
+\r
+// Isr Id's\r
+\r
+// Resource Id's\r
+\r
+// Linked resource id's\r
+\r
+// Resource masks\r
+\r
+// Task Id's\r
+#define TASK_ID_OsIdle 0\r
+#define TASK_ID_WDTask 1\r
+#define TASK_ID_btask_3        2\r
+#define TASK_ID_etask_1        3\r
+#define TASK_ID_etask_2        4\r
+\r
+// Task entry points\r
+void OsIdle( void );\r
+void WDTask( void );\r
+void btask_3( void );\r
+void etask_1( void );\r
+void etask_2( void );\r
+\r
+// Schedule table id's\r
+\r
+// Stack size\r
+#define OS_INTERRUPT_STACK_SIZE        2048\r
+#define OS_OSIDLE_STACK_SIZE 512\r
+\r
+#define OS_ALARM_CNT                   2 \r
+#define OS_TASK_CNT                            5\r
+#define OS_SCHTBL_CNT                  0\r
+#define OS_COUNTER_CNT                 2\r
+#define OS_EVENTS_CNT                  3\r
+#define OS_ISRS_CNT                            0\r
+#define OS_RESOURCE_CNT                        0\r
+#define OS_LINKED_RESOURCE_CNT 0\r
+\r
+#define CFG_OS_DEBUG                           STD_OFF\r
+\r
+#define OS_SC1                                                 STD_ON     \r
+#define OS_STACK_MONITORING                    STD_ON\r
+#define OS_STATUS_EXTENDED                     STD_ON\r
+#define OS_USE_GET_SERVICE_ID          STD_ON\r
+#define OS_USE_PARAMETER_ACCESS                STD_ON\r
+#define OS_RES_SCHEDULER                       STD_ON\r
+\r
+#endif /*OS_CFG_H_*/\r
diff --git a/examples/wdg_node/config/stm32_mcbstm32/Port_Cfg.c b/examples/wdg_node/config/stm32_mcbstm32/Port_Cfg.c
new file mode 100644 (file)
index 0000000..390a02b
--- /dev/null
@@ -0,0 +1,291 @@
+/*\r
+ * Configuration of module Port (Port_Cfg.c)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F103\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Mon Feb 28 18:42:03 CET 2011\r
+ */\r
+\r
+       \r
+#include "stm32f10x_gpio.h"\r
+#include "Port.h"\r
+\r
+const uint32 remaps[] = {\r
+};\r
+\r
+const GpioPinCnfMode_Type GPIOConf[] =\r
+{\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = 0,         \r
+       .GpioPinCnfMode_14 = 0,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = GPIO_OUTPUT_2MHz_MODE | GPIO_OUTPUT_PUSHPULL_CNF,   \r
+       .GpioPinCnfMode_9 = GPIO_OUTPUT_2MHz_MODE | GPIO_OUTPUT_PUSHPULL_CNF,   \r
+       .GpioPinCnfMode_10 = GPIO_OUTPUT_2MHz_MODE | GPIO_OUTPUT_PUSHPULL_CNF,  \r
+       .GpioPinCnfMode_11 = GPIO_OUTPUT_2MHz_MODE | GPIO_OUTPUT_PUSHPULL_CNF,  \r
+       .GpioPinCnfMode_12 = GPIO_OUTPUT_2MHz_MODE | GPIO_OUTPUT_PUSHPULL_CNF,  \r
+       .GpioPinCnfMode_13 = GPIO_OUTPUT_2MHz_MODE | GPIO_OUTPUT_PUSHPULL_CNF,  \r
+       .GpioPinCnfMode_14 = GPIO_OUTPUT_2MHz_MODE | GPIO_OUTPUT_PUSHPULL_CNF,  \r
+       .GpioPinCnfMode_15 = GPIO_OUTPUT_2MHz_MODE | GPIO_OUTPUT_PUSHPULL_CNF,          \r
+  },\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = 0,         \r
+       .GpioPinCnfMode_14 = 0,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = 0,         \r
+       .GpioPinCnfMode_14 = 0,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = 0,         \r
+       .GpioPinCnfMode_14 = 0,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = 0,         \r
+       .GpioPinCnfMode_14 = 0,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+  {\r
+       .GpioPinCnfMode_0 = 0,  \r
+       .GpioPinCnfMode_1 = 0,  \r
+       .GpioPinCnfMode_2 = 0,  \r
+       .GpioPinCnfMode_3 = 0,  \r
+       .GpioPinCnfMode_4 = 0,  \r
+       .GpioPinCnfMode_5 = 0,  \r
+       .GpioPinCnfMode_6 = 0,  \r
+       .GpioPinCnfMode_7 = 0,  \r
+       .GpioPinCnfMode_8 = 0,  \r
+       .GpioPinCnfMode_9 = 0,  \r
+       .GpioPinCnfMode_10 = 0,         \r
+       .GpioPinCnfMode_11 = 0,         \r
+       .GpioPinCnfMode_12 = 0,         \r
+       .GpioPinCnfMode_13 = 0,         \r
+       .GpioPinCnfMode_14 = 0,         \r
+       .GpioPinCnfMode_15 = 0,                 \r
+  },\r
+};\r
+\r
+\r
+const GpioPinOutLevel_Type GPIOOutConf[] =\r
+{\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = 0,        \r
+       .GpioPinOutLevel_14 = 0,        \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = GPIO_OUTPUT_LOW,   \r
+       .GpioPinOutLevel_9 = GPIO_OUTPUT_LOW,   \r
+       .GpioPinOutLevel_10 = GPIO_OUTPUT_LOW,  \r
+       .GpioPinOutLevel_11 = GPIO_OUTPUT_LOW,  \r
+       .GpioPinOutLevel_12 = GPIO_OUTPUT_LOW,  \r
+       .GpioPinOutLevel_13 = GPIO_OUTPUT_LOW,  \r
+       .GpioPinOutLevel_14 = GPIO_OUTPUT_LOW,  \r
+       .GpioPinOutLevel_15 = GPIO_OUTPUT_HIGH,                 \r
+  },\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = 0,        \r
+       .GpioPinOutLevel_14 = 0,        \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = 0,        \r
+       .GpioPinOutLevel_14 = 0,        \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = 0,        \r
+       .GpioPinOutLevel_14 = 0,        \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = 0,        \r
+       .GpioPinOutLevel_14 = 0,        \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+  {\r
+       .GpioPinOutLevel_0 = 0,         \r
+       .GpioPinOutLevel_1 = 0,         \r
+       .GpioPinOutLevel_2 = 0,         \r
+       .GpioPinOutLevel_3 = 0,         \r
+       .GpioPinOutLevel_4 = 0,         \r
+       .GpioPinOutLevel_5 = 0,         \r
+       .GpioPinOutLevel_6 = 0,         \r
+       .GpioPinOutLevel_7 = 0,         \r
+       .GpioPinOutLevel_8 = 0,         \r
+       .GpioPinOutLevel_9 = 0,         \r
+       .GpioPinOutLevel_10 = 0,        \r
+       .GpioPinOutLevel_11 = 0,        \r
+       .GpioPinOutLevel_12 = 0,        \r
+       .GpioPinOutLevel_13 = 0,        \r
+       .GpioPinOutLevel_14 = 0,        \r
+       .GpioPinOutLevel_15 = 0,                \r
+  },\r
+};\r
+\r
+const Port_ConfigType PortConfigData =\r
+{\r
+       .padCnt = 7,\r
+       .padConfig = GPIOConf,\r
+       .outConfig = GPIOOutConf,\r
+\r
+    .remapCount = sizeof(remaps) / sizeof(uint32),\r
+    .remaps = &remaps[0]\r
+};\r
diff --git a/examples/wdg_node/config/stm32_mcbstm32/Port_Cfg.h b/examples/wdg_node/config/stm32_mcbstm32/Port_Cfg.h
new file mode 100644 (file)
index 0000000..de5d5cd
--- /dev/null
@@ -0,0 +1,34 @@
+/*\r
+ * Configuration of module Port (Port_Cfg.h)\r
+ *\r
+ * Created by: \r
+ * Configured for (MCU): STM32_F103\r
+ *\r
+ * Module vendor: ArcCore\r
+ * Module version: 2.0.2\r
+ *\r
+ * \r
+ * Generated by Arctic Studio (http://arccore.com) \r
+ *           on Mon Feb 28 18:42:03 CET 2011\r
+ */\r
+\r
+
+#if !(((PORT_SW_MAJOR_VERSION == 1) && (PORT_SW_MINOR_VERSION == 0)) )
+#error "Port: Configuration file version differs from BSW version."
+#endif
+
+\r
+#ifndef PORT_CFG_H_\r
+#define PORT_CFG_H_\r
+\r
+#include "Std_Types.h"\r
+#include "Port_ConfigTypes.h"\r
+\r
+#define        PORT_VERSION_INFO_API                           STD_OFF\r
+#define        PORT_DEV_ERROR_DETECT                           STD_OFF\r
+#define PORT_SET_PIN_DIRECTION_API             STD_OFF\r
+\r
+/** Instance of the top level configuration container */\r
+extern const Port_ConfigType PortConfigData;\r
+\r
+#endif /* PORT_CFG_H_ */\r
diff --git a/examples/wdg_node/config/stm32_mcbstm32/WdgIf_Cfg.c b/examples/wdg_node/config/stm32_mcbstm32/WdgIf_Cfg.c
new file mode 100644 (file)
index 0000000..41c8d2c
--- /dev/null
@@ -0,0 +1,41 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+#include "WdgIf.h"\r
+#include "Wdg.h"\r
+\r
+const WdgIf_DeviceType WdgIfDevice[] =\r
+{\r
+  {\r
+    .WdgIf_DeviceIndex = 0,\r
+    .WdgRef = &WdgWWDGGeneral,\r
+  },\r
+  {\r
+       .WdgIf_DeviceIndex = 1,\r
+       .WdgRef = &WdgIWDGGeneral,\r
+  },\r
+};\r
+\r
+const WdgIf_GeneralType WdgIfGeneral =\r
+{\r
+  .WdgIf_NumberOfDevices = sizeof(WdgIfDevice)/sizeof(WdgIfDevice[0]),\r
+};\r
+\r
+const WdgIf_ConfigType WdgIfConfig =\r
+{\r
+  .WdgIf_General = &WdgIfGeneral,\r
+  .WdgIf_Device = WdgIfDevice,\r
+};\r
+\r
diff --git a/examples/wdg_node/config/stm32_mcbstm32/WdgIf_Cfg.h b/examples/wdg_node/config/stm32_mcbstm32/WdgIf_Cfg.h
new file mode 100644 (file)
index 0000000..b293ae5
--- /dev/null
@@ -0,0 +1,41 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+#ifndef WDGIF_CFG_H_\r
+#define WDGIF_CFG_H_\r
+\r
+#include "Std_Types.h"\r
+#include "WdgIf_Types.h"\r
+\r
+typedef struct\r
+{\r
+       uint8 WdgIf_DeviceIndex;\r
+       const Wdg_GeneralType *WdgRef;\r
+}WdgIf_DeviceType;\r
+\r
+typedef struct\r
+{\r
+       uint8 WdgIf_NumberOfDevices;\r
+}WdgIf_GeneralType;\r
+\r
+typedef struct\r
+{\r
+       const WdgIf_GeneralType   *WdgIf_General;\r
+       const WdgIf_DeviceType    *WdgIf_Device;\r
+}WdgIf_ConfigType;\r
+\r
+extern const WdgIf_DeviceType WdgIfDevice[];\r
+extern const WdgIf_ConfigType WdgIfConfig;\r
+#endif /* WDGIF_CFG_H_ */\r
diff --git a/examples/wdg_node/config/stm32_mcbstm32/WdgM_Cfg.h b/examples/wdg_node/config/stm32_mcbstm32/WdgM_Cfg.h
new file mode 100644 (file)
index 0000000..f1488a1
--- /dev/null
@@ -0,0 +1,179 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+#ifndef WDGM_CFG_H_\r
+#define WDGM_CFG_H_\r
+\r
+#include "Std_Types.h"\r
+#include "WdgIf_Types.h"\r
+#include "WdgIf.h"\r
+#include "Gpt.h"\r
+\r
+#define WDGM_DEV_ERROR_DETECT  STD_ON\r
+#define WDGM_OFF_MODE_ENABLED   STD_OFF\r
+\r
+typedef enum\r
+{\r
+  WDGM_ALIVE_ETASK1,\r
+  WDGM_ALIVE_ETASK2,\r
+  WDGM_ALIVE_BTASK3,\r
+\r
+  /** @req WDGM085 **/\r
+  WDGM_NBR_OF_ALIVE_SIGNALS\r
+}WdgM_SupervisedEntityIdType;\r
+\r
+typedef enum\r
+{\r
+       WDGM_WIDE_MODE,\r
+       WDGM_NARROW_MODE,\r
+       WDGM_OFF_MODE,\r
+       WDGM_GPT_MODE,\r
+       WDGM_NBR_OF_MODES,\r
+}WdgM_ModeType;\r
+\r
+typedef enum\r
+{\r
+       WDGM_TRIGGER_INSTANCE0,\r
+       WDGM_TRIGGER_INSTANCE1,\r
+       WDGM_NBR_OF_TRIGGERS,\r
+}WdgM_TriggerIdType;\r
+\r
+typedef enum\r
+{\r
+  WDGM_ALIVE_OK,\r
+  WDGM_ALIVE_FAILED,\r
+  WDGM_ALIVE_EXPIRED,\r
+  WDGM_ALIVE_STOPPED,\r
+  WDGM_ALIVE_DEACTIVATED,\r
+}WdgM_AliveSupervisionStatusType;\r
+\r
+typedef enum\r
+{\r
+  WDGM_SUPERVISION_DISABLED,\r
+  WDGM_SUPERVISION_ENABLED\r
+}WdgM_ActivationStatusType;\r
+\r
+typedef int16_t WdgM_SupervisionCounterType ;\r
+typedef uint16_t WdgM_TriggerCounterType ;\r
+\r
+typedef struct\r
+{\r
+  WdgM_SupervisionCounterType     AliveCounter;\r
+  WdgM_SupervisionCounterType     SupervisionCycle;\r
+  WdgM_AliveSupervisionStatusType SupervisionStatus;\r
+  WdgM_SupervisionCounterType     NbrOfFailedRefCycles;\r
+}WdgM_AliveEntityStateType;\r
+\r
+typedef struct\r
+{\r
+  /** @req WDGM093 **/\r
+  const boolean                     WdgM_DeactivationAccessEnabled;\r
+  const WdgM_SupervisedEntityIdType WdgM_SupervisedEntityID;\r
+}WdgM_SupervisedEntityType;\r
+\r
+/** @req WDGM046 **/\r
+/** @req WDGM090 **/\r
+/** @req WDGM091 **/\r
+/** @req WDGM095 **/\r
+/** @req WDGM096 **/\r
+typedef struct\r
+{\r
+  const boolean                         WdgM_ActivationActivated;\r
+  const WdgM_SupervisedEntityIdType     WdgM_AliveSupervisionConfigID;\r
+  const WdgM_SupervisionCounterType     WdgM_ExpectedAliveIndications;\r
+  const WdgM_SupervisionCounterType     WdgM_SupervisionReferenceCycle;\r
+  const WdgM_SupervisionCounterType     WdgM_FailedSupervisionReferenceCycleTolerance;\r
+  const WdgM_SupervisionCounterType     WdgM_MinMargin;\r
+  const WdgM_SupervisionCounterType     WdgM_MaxMargin;\r
+  const WdgM_SupervisedEntityType       *WdgM_SupervisedEntityRef;\r
+}WdgM_AliveSupervisionType;\r
+\r
+typedef struct\r
+{\r
+       const sint8            *WdgM_WatchdogName;\r
+       const WdgIf_DeviceType *WdgM_DeviceRef;\r
+}WdgM_WatchdogType;\r
+\r
+/** @req WDGM002 **/\r
+/** @req WDGM003 **/\r
+typedef struct\r
+{\r
+       const uint16                     WdgM_NumberOfSupervisedEntities;\r
+       const uint16                     WdgM_NumberOfWatchdogs;\r
+       const WdgM_SupervisedEntityType  *WdgM_SupervisedEntityPtr;\r
+    const WdgM_WatchdogType          *WdgM_Watchdog;\r
+}WdgM_GeneralType;\r
+\r
+/** @req WDGM116 **/\r
+typedef struct\r
+{\r
+       const uint16                     WdgM_TriggerReferenceCycle;\r
+       const WdgIf_ModeType             WdgM_WatchdogMode;\r
+       const WdgM_WatchdogType          *WdgM_WatchdogRef;\r
+}WdgM_TriggerType;\r
+\r
+typedef struct\r
+{\r
+       const float32                    WdgM_SupervisionCycle;\r
+       const float32                    WdgM_TriggerCycle;\r
+}WdgM_ActivationSchMType;\r
+\r
+typedef struct\r
+{\r
+       const uint32                     WdgM_GptCycle;\r
+       const Gpt_ChannelType            WdgM_GptChannelRef; // TODO type??\r
+}WdgM_ActivationGPTType;\r
+\r
+typedef struct\r
+{\r
+       const boolean                    WdgM_IsGPTActivated;\r
+       const WdgM_ActivationSchMType    WdgM_ActivationSchM;\r
+       const WdgM_ActivationGPTType     WdgM_ActivationGPT;\r
+}WdgM_ActivationType;\r
+\r
+typedef struct\r
+{\r
+       const WdgM_SupervisionCounterType WdgM_ExpiredSupervisionCycleTol;\r
+       const WdgM_ModeType               WdgM_ModeId;\r
+       const WdgM_ActivationType         WdgM_Activation;\r
+       const WdgM_AliveSupervisionType   *WdgM_AliveSupervisionPtr;\r
+       const WdgM_TriggerType            WdgM_Trigger[WDGM_NBR_OF_TRIGGERS];\r
+}WdgM_ModeConfigType;\r
+\r
+typedef struct\r
+{\r
+       const WdgM_ModeType             WdgM_InitialMode;\r
+       WdgM_AliveEntityStateType       *WdgM_AliveEntityStatePtr;\r
+       const WdgM_ModeConfigType       WdgM_Mode[];\r
+}WdgM_ConfigSetType;\r
+\r
+/** @req WDGM118 **/\r
+typedef struct\r
+{\r
+  const WdgM_GeneralType   *WdgM_General;\r
+  const WdgM_ConfigSetType *WdgM_ConfigSet;\r
+}WdgM_ConfigType;\r
+\r
+extern const WdgM_ConfigType WdgMConfig;\r
+\r
+#endif /* WDGM_CFG_H_ */\r
diff --git a/examples/wdg_node/config/stm32_mcbstm32/WdgM_PBcfg.c b/examples/wdg_node/config/stm32_mcbstm32/WdgM_PBcfg.c
new file mode 100644 (file)
index 0000000..986a07f
--- /dev/null
@@ -0,0 +1,240 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+#include "WdgM.h"\r
+#include "WdgIf.h"\r
+\r
+\r
+WdgM_AliveEntityStateType WdgM_Supervision[WDGM_NBR_OF_ALIVE_SIGNALS];\r
+\r
+const WdgM_SupervisedEntityType WdgM_SupervisedEntity [WDGM_NBR_OF_ALIVE_SIGNALS] =\r
+{\r
+  {\r
+     .WdgM_DeactivationAccessEnabled = TRUE,\r
+     .WdgM_SupervisedEntityID        = WDGM_ALIVE_ETASK1,\r
+  },\r
+  {\r
+     .WdgM_DeactivationAccessEnabled = TRUE,\r
+     .WdgM_SupervisedEntityID        = WDGM_ALIVE_ETASK2,\r
+  },\r
+  {\r
+     .WdgM_DeactivationAccessEnabled = TRUE,\r
+     .WdgM_SupervisedEntityID        = WDGM_ALIVE_BTASK3,\r
+  },\r
+};\r
+\r
+\r
+const WdgM_AliveSupervisionType WdgM_AliveSupervisionNarrow [WDGM_NBR_OF_ALIVE_SIGNALS] =\r
+{\r
+  {\r
+       .WdgM_ActivationActivated = TRUE,\r
+    .WdgM_AliveSupervisionConfigID = WDGM_ALIVE_ETASK1,   // TODO Is this really what we should do??\r
+    .WdgM_ExpectedAliveIndications = 2,\r
+    .WdgM_SupervisionReferenceCycle = 76,\r
+    .WdgM_FailedSupervisionReferenceCycleTolerance = 2,\r
+    .WdgM_MinMargin = 1,\r
+    .WdgM_MaxMargin = 0,\r
+    .WdgM_SupervisedEntityRef = &WdgM_SupervisedEntity[WDGM_ALIVE_ETASK1],\r
+  },\r
+  {\r
+       .WdgM_ActivationActivated = TRUE,\r
+    .WdgM_AliveSupervisionConfigID = WDGM_ALIVE_ETASK2,   // TODO Is this really what we should do??\r
+    .WdgM_ExpectedAliveIndications = 2,\r
+    .WdgM_SupervisionReferenceCycle = 76,\r
+    .WdgM_FailedSupervisionReferenceCycleTolerance = 2,\r
+    .WdgM_MinMargin = 1,\r
+    .WdgM_MaxMargin = 0,\r
+    .WdgM_SupervisedEntityRef = &WdgM_SupervisedEntity[WDGM_ALIVE_ETASK2],\r
+  },\r
+  {\r
+       .WdgM_ActivationActivated = TRUE,\r
+    .WdgM_AliveSupervisionConfigID = WDGM_ALIVE_BTASK3,   // TODO Is this really what we should do??\r
+    .WdgM_ExpectedAliveIndications = 2,\r
+    .WdgM_SupervisionReferenceCycle = 76,\r
+    .WdgM_FailedSupervisionReferenceCycleTolerance = 2,\r
+    .WdgM_MinMargin = 1,\r
+    .WdgM_MaxMargin = 0,\r
+    .WdgM_SupervisedEntityRef = &WdgM_SupervisedEntity[WDGM_ALIVE_BTASK3],\r
+  },\r
+};\r
+\r
+// Much wider tolerance..\r
+const WdgM_AliveSupervisionType WdgM_AliveSupervisionWide [WDGM_NBR_OF_ALIVE_SIGNALS] =\r
+{\r
+  {\r
+       .WdgM_ActivationActivated = TRUE,\r
+    .WdgM_AliveSupervisionConfigID = WDGM_ALIVE_ETASK1,   // TODO Is this really what we should do??\r
+    .WdgM_ExpectedAliveIndications = 2,\r
+    .WdgM_SupervisionReferenceCycle = 76,\r
+    .WdgM_FailedSupervisionReferenceCycleTolerance = 10,\r
+    .WdgM_MinMargin = 10,\r
+    .WdgM_MaxMargin = 10,\r
+    .WdgM_SupervisedEntityRef = &WdgM_SupervisedEntity[WDGM_ALIVE_ETASK1],\r
+  },\r
+  {\r
+       .WdgM_ActivationActivated = TRUE,\r
+    .WdgM_AliveSupervisionConfigID = WDGM_ALIVE_ETASK2,   // TODO Is this really what we should do??\r
+    .WdgM_ExpectedAliveIndications = 2,\r
+    .WdgM_SupervisionReferenceCycle = 76,\r
+    .WdgM_FailedSupervisionReferenceCycleTolerance = 10,\r
+    .WdgM_MinMargin = 10,\r
+    .WdgM_MaxMargin = 10,\r
+    .WdgM_SupervisedEntityRef = &WdgM_SupervisedEntity[WDGM_ALIVE_ETASK2],\r
+  },\r
+  {\r
+       .WdgM_ActivationActivated = TRUE,\r
+    .WdgM_AliveSupervisionConfigID = WDGM_ALIVE_BTASK3,   // TODO Is this really what we should do??\r
+    .WdgM_ExpectedAliveIndications = 2,\r
+    .WdgM_SupervisionReferenceCycle = 76,\r
+    .WdgM_FailedSupervisionReferenceCycleTolerance = 10,\r
+    .WdgM_MinMargin = 10,\r
+    .WdgM_MaxMargin = 10,\r
+    .WdgM_SupervisedEntityRef = &WdgM_SupervisedEntity[WDGM_ALIVE_BTASK3],\r
+  },\r
+};\r
+\r
+const WdgM_WatchdogType WdgMWatchdog[] =\r
+{\r
+       {\r
+               .WdgM_WatchdogName = "STM32 Windowed Watchdog",\r
+               .WdgM_DeviceRef    = &WdgIfDevice[WDGM_TRIGGER_INSTANCE0],\r
+       },\r
+       {\r
+               .WdgM_WatchdogName = "STM32 Independant Watchdog",\r
+               .WdgM_DeviceRef    = &WdgIfDevice[WDGM_TRIGGER_INSTANCE1],\r
+       }\r
+};\r
+\r
+/** @req WDGMXXX **/\r
+const WdgM_ConfigSetType WdgMConfigSet =\r
+{\r
+    .WdgM_AliveEntityStatePtr = WdgM_Supervision,\r
+       .WdgM_InitialMode = WDGM_GPT_MODE,\r
+       .WdgM_Mode =\r
+       {\r
+               {\r
+                       .WdgM_ExpiredSupervisionCycleTol = 5,\r
+                       .WdgM_ModeId                     = WDGM_WIDE_MODE,\r
+                       .WdgM_Activation =\r
+                       {\r
+                               .WdgM_IsGPTActivated = FALSE,\r
+                               .WdgM_ActivationSchM = {.WdgM_SupervisionCycle = 0.001, .WdgM_TriggerCycle = 0.001},\r
+                               .WdgM_ActivationGPT = {0,0},\r
+                       },\r
+                       .WdgM_AliveSupervisionPtr        = WdgM_AliveSupervisionWide,\r
+                       .WdgM_Trigger                    =\r
+                       {\r
+                               {\r
+                                       .WdgM_TriggerReferenceCycle = 1,\r
+                                       .WdgM_WatchdogMode = WDGIF_SLOW_MODE,\r
+                                       .WdgM_WatchdogRef = &WdgMWatchdog[WDGM_TRIGGER_INSTANCE0],\r
+                               },\r
+                               {\r
+                                       .WdgM_TriggerReferenceCycle = 20,\r
+                                       .WdgM_WatchdogMode = WDGIF_SLOW_MODE,\r
+                                       .WdgM_WatchdogRef = &WdgMWatchdog[WDGM_TRIGGER_INSTANCE1],\r
+                               },\r
+                       },\r
+               },\r
+               {\r
+                       .WdgM_ExpiredSupervisionCycleTol = 1,\r
+                       .WdgM_ModeId                     = WDGM_NARROW_MODE,\r
+                       .WdgM_Activation =\r
+                       {\r
+                               .WdgM_IsGPTActivated = FALSE,\r
+                               .WdgM_ActivationSchM = {.WdgM_SupervisionCycle = 0.001, .WdgM_TriggerCycle = 0.001},\r
+                               .WdgM_ActivationGPT = {0,0},\r
+                       },\r
+                       .WdgM_AliveSupervisionPtr        = WdgM_AliveSupervisionNarrow,\r
+                       .WdgM_Trigger                    =\r
+                       {\r
+                               {\r
+                                       .WdgM_TriggerReferenceCycle = 1,\r
+                                       .WdgM_WatchdogMode = WDGIF_FAST_MODE,\r
+                                       .WdgM_WatchdogRef = &WdgMWatchdog[WDGM_TRIGGER_INSTANCE0],\r
+                               },\r
+                               {\r
+                                       .WdgM_TriggerReferenceCycle = 10,\r
+                                       .WdgM_WatchdogMode = WDGIF_FAST_MODE,\r
+                                       .WdgM_WatchdogRef = &WdgMWatchdog[WDGM_TRIGGER_INSTANCE1],\r
+                               },\r
+                       },\r
+               },\r
+               {\r
+                       .WdgM_ExpiredSupervisionCycleTol = 1,\r
+                       .WdgM_ModeId                     = WDGM_OFF_MODE,\r
+                       .WdgM_Activation =\r
+                       {\r
+                               .WdgM_IsGPTActivated = FALSE,\r
+                               .WdgM_ActivationSchM = {.WdgM_SupervisionCycle = 0.001, .WdgM_TriggerCycle = 0.001},\r
+                               .WdgM_ActivationGPT = {0,0},\r
+                       },\r
+                       .WdgM_AliveSupervisionPtr        = WdgM_AliveSupervisionWide,\r
+                       .WdgM_Trigger                    =\r
+                       {\r
+                               {\r
+                                       .WdgM_TriggerReferenceCycle = 1,\r
+                                       .WdgM_WatchdogMode = WDGIF_OFF_MODE,\r
+                                       .WdgM_WatchdogRef = &WdgMWatchdog[WDGM_TRIGGER_INSTANCE0],\r
+                               },\r
+                               {\r
+                                       .WdgM_TriggerReferenceCycle = 1,\r
+                                       .WdgM_WatchdogMode = WDGIF_OFF_MODE,\r
+                                       .WdgM_WatchdogRef = &WdgMWatchdog[WDGM_TRIGGER_INSTANCE1],\r
+                               },\r
+                       },\r
+          },\r
+               {\r
+                       .WdgM_ExpiredSupervisionCycleTol = 1,\r
+                       .WdgM_ModeId                     = WDGM_GPT_MODE,\r
+                       .WdgM_Activation =\r
+                       {\r
+                               .WdgM_IsGPTActivated = TRUE,\r
+                               .WdgM_ActivationSchM = {.WdgM_SupervisionCycle = 0.001, .WdgM_TriggerCycle = 0.001},\r
+                               .WdgM_ActivationGPT = {.WdgM_GptCycle = 5000, .WdgM_GptChannelRef = GPT_CHANNEL_TIM_3},\r
+                       },\r
+                       .WdgM_AliveSupervisionPtr        = WdgM_AliveSupervisionWide,\r
+                       .WdgM_Trigger                    =\r
+                       {\r
+                               {\r
+                                       .WdgM_TriggerReferenceCycle = 1,\r
+                                       .WdgM_WatchdogMode = WDGIF_SLOW_MODE,\r
+                                       .WdgM_WatchdogRef = &WdgMWatchdog[WDGM_TRIGGER_INSTANCE0],\r
+                               },\r
+                               {\r
+                                       .WdgM_TriggerReferenceCycle = 10,\r
+                                       .WdgM_WatchdogMode = WDGIF_SLOW_MODE,\r
+                                       .WdgM_WatchdogRef = &WdgMWatchdog[WDGM_TRIGGER_INSTANCE1],\r
+                               },\r
+                       },\r
+          },\r
+       }\r
+};\r
+\r
+\r
+const WdgM_GeneralType WdgMGeneral =\r
+{\r
+       .WdgM_NumberOfSupervisedEntities = WDGM_NBR_OF_ALIVE_SIGNALS,\r
+       .WdgM_NumberOfWatchdogs          = sizeof(WdgMWatchdog)/sizeof(WdgMWatchdog[0]),\r
+       //.WdgM_SupervisedEntityPtr;     = ,\r
+       .WdgM_SupervisedEntityPtr        = WdgM_SupervisedEntity,\r
+       .WdgM_Watchdog                   = WdgMWatchdog,\r
+};\r
+\r
+const WdgM_ConfigType WdgMConfig =\r
+{\r
+       .WdgM_General = &WdgMGeneral,\r
+       .WdgM_ConfigSet = &WdgMConfigSet,\r
+};\r
diff --git a/examples/wdg_node/config/stm32_mcbstm32/Wdg_Cfg.h b/examples/wdg_node/config/stm32_mcbstm32/Wdg_Cfg.h
new file mode 100644 (file)
index 0000000..f214826
--- /dev/null
@@ -0,0 +1,97 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+#ifndef WDG_CFG_H_\r
+#define WDG_CFG_H_\r
+\r
+#include "Std_Types.h"\r
+#include "WdgIf_Types.h"\r
+\r
+typedef enum\r
+{\r
+       IWDG_CK_Counter_Clock_4 = 0,\r
+       IWDG_CK_Counter_Clock_8,\r
+       IWDG_CK_Counter_Clock_16,\r
+       IWDG_CK_Counter_Clock_32,\r
+       IWDG_CK_Counter_Clock_64,\r
+       IWDG_CK_Counter_Clock_128,\r
+       IWDG_CK_Counter_Clock_256,\r
+}Wdg_IWDG_TimerBaseType;\r
+\r
+typedef struct\r
+{\r
+   Wdg_IWDG_TimerBaseType TimerBase;\r
+   uint16 ReloadValue;\r
+   uint8 ActivationBit;\r
+}Wdg_IWDG_SettingsType;\r
+\r
+typedef struct\r
+{\r
+       WdgIf_ModeType Wdg_DefaultMode;\r
+       Wdg_IWDG_SettingsType WdgSettingsFast;\r
+       Wdg_IWDG_SettingsType WdgSettingsSlow;\r
+       Wdg_IWDG_SettingsType WdgSettingsOff;\r
+}Wdg_IWDG_ModeConfigType;\r
+\r
+typedef struct\r
+{\r
+       const Wdg_GeneralType         *Wdg_General;\r
+       const Wdg_IWDG_ModeConfigType *Wdg_IWDGModeConfig;\r
+}Wdg_IWDG_ConfigType;\r
+\r
+extern const Wdg_GeneralType WdgIWDGGeneral;\r
+extern const Wdg_IWDG_ConfigType WdgIWDGConfig;\r
+\r
+typedef enum\r
+{\r
+       WDG_CK_Counter_Clock_1 = 0,\r
+       WDG_CK_Counter_Clock_2,\r
+       WDG_CK_Counter_Clock_4,\r
+       WDG_CK_Counter_Clock_8,\r
+}Wdg_WWDG_TimerBaseType;\r
+\r
+typedef struct\r
+{\r
+   Wdg_WWDG_TimerBaseType TimerBase;\r
+   uint8 WindowValue;\r
+   uint8 CounterPreset;\r
+   uint8 ActivationBit;\r
+}Wdg_WWDG_SettingsType;\r
+\r
+typedef struct\r
+{\r
+       WdgIf_ModeType Wdg_DefaultMode;\r
+       Wdg_WWDG_SettingsType WdgSettingsFast;\r
+       Wdg_WWDG_SettingsType WdgSettingsSlow;\r
+       Wdg_WWDG_SettingsType WdgSettingsOff;\r
+}Wdg_WWDG_ModeConfigType;\r
+\r
+typedef struct\r
+{\r
+       const Wdg_GeneralType         *Wdg_General;\r
+       const Wdg_WWDG_ModeConfigType *Wdg_WWDGModeConfig;\r
+}Wdg_WWDG_ConfigType;\r
+\r
+typedef struct\r
+{\r
+  const Wdg_IWDG_ConfigType *Wdg_IWDG_Config;\r
+  const Wdg_WWDG_ConfigType *Wdg_WWDG_Config;\r
+}Wdg_ConfigType;\r
+\r
+ extern const Wdg_GeneralType WdgWWDGGeneral;\r
+ extern const Wdg_WWDG_ConfigType WdgWWDGConfig;\r
+ extern const Wdg_ConfigType WdgConfig;\r
+\r
+#endif /* WDG_CFG_H_ */\r
diff --git a/examples/wdg_node/config/stm32_mcbstm32/Wdg_Lcfg.c b/examples/wdg_node/config/stm32_mcbstm32/Wdg_Lcfg.c
new file mode 100644 (file)
index 0000000..cfacee9
--- /dev/null
@@ -0,0 +1,114 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+#include "Wdg.h"\r
+\r
+const Wdg_IWDG_ModeConfigType WdgIWDGModeConfig =\r
+{\r
+       .Wdg_DefaultMode = WDGIF_OFF_MODE,\r
+       .WdgSettingsFast =\r
+       {\r
+                       .TimerBase = IWDG_CK_Counter_Clock_8,\r
+                       .ReloadValue = 0x7FF,\r
+                       .ActivationBit = 1,\r
+       },\r
+       .WdgSettingsSlow =\r
+       {\r
+                       .TimerBase = IWDG_CK_Counter_Clock_256,\r
+                       .ReloadValue = 0xFFF,\r
+                       .ActivationBit = 1,\r
+       },\r
+       .WdgSettingsOff =\r
+       {\r
+                       .TimerBase = IWDG_CK_Counter_Clock_4,\r
+                       .ReloadValue = 0x7F,\r
+                       .ActivationBit = 0,\r
+       },\r
+};\r
+\r
+const Wdg_GeneralType WdgIWDGGeneral =\r
+{\r
+       .Wdg_Index = 1,\r
+       .Wdg_TriggerLocationPtr = Wdg_IWDG_Trigger,\r
+       .Wdg_SetModeLocationPtr = Wdg_IWDG_SetMode,\r
+};\r
+\r
+\r
+const Wdg_IWDG_ConfigType WdgIWDGConfig =\r
+{\r
+  .Wdg_General = &WdgIWDGGeneral,\r
+  .Wdg_IWDGModeConfig = &WdgIWDGModeConfig,\r
+};\r
+\r
+\r
+/* The windowed watchdog is clocked from PCLK1. Max allowed frequency\r
+ * of this is 36Mhz.\r
+ *\r
+ * Max Twwdg = T_PCLK1 * 4096 * 2^TimerBase * (CounterPreset & 0x3F) + 1)=\r
+ *\r
+ * = 58.25 ms\r
+ *\r
+ *\r
+ *\r
+ * Min Twwdg = T_PCLK1 * 4096 * 2^TimerBase * (CounterPreset & 0x3F) + 1)=\r
+ *\r
+ * = 7.28 ms\r
+ * */\r
+\r
+/* TODO: Add implementation for Independent WD as well. This will make it\r
+ * possible to test a multiple WD design within the STM32.  */\r
+const Wdg_WWDG_ModeConfigType WdgWWDGModeConfig =\r
+{\r
+       .Wdg_DefaultMode = WDGIF_OFF_MODE,\r
+       .WdgSettingsFast =\r
+       {\r
+                       .TimerBase = WDG_CK_Counter_Clock_4,\r
+                       .WindowValue = 0x7F,\r
+                       .CounterPreset = 0x7F,\r
+                       .ActivationBit = 1,\r
+       },\r
+       .WdgSettingsSlow =\r
+       {\r
+                       .TimerBase = WDG_CK_Counter_Clock_8,\r
+                       .WindowValue = 0x7F,\r
+                       .CounterPreset = 0x7F,\r
+                       .ActivationBit = 1,\r
+       },\r
+       .WdgSettingsOff =\r
+       {\r
+                       .TimerBase = WDG_CK_Counter_Clock_8,\r
+                       .WindowValue = 0x7F,\r
+                       .CounterPreset = 0x7F,\r
+                       .ActivationBit = 0,\r
+       },\r
+};\r
+const Wdg_GeneralType WdgWWDGGeneral =\r
+{\r
+       .Wdg_Index = 0,\r
+       .Wdg_TriggerLocationPtr = Wdg_WWDG_Trigger,\r
+       .Wdg_SetModeLocationPtr = Wdg_WWDG_SetMode,\r
+};\r
+\r
+const Wdg_WWDG_ConfigType WdgWWDGConfig =\r
+{\r
+  .Wdg_General = &WdgWWDGGeneral,\r
+  .Wdg_WWDGModeConfig = &WdgWWDGModeConfig,\r
+};\r
+\r
+const Wdg_ConfigType WdgConfig =\r
+{\r
+       &WdgIWDGConfig,\r
+       &WdgWWDGConfig,\r
+};\r
diff --git a/examples/wdg_node/makefile b/examples/wdg_node/makefile
new file mode 100644 (file)
index 0000000..f8f62aa
--- /dev/null
@@ -0,0 +1,40 @@
+# Project files (adds all .c files in project root)\r
+PROJECT_C_FILES=$(notdir $(wildcard ../*.c))\r
+obj-y += $(PROJECT_C_FILES:%.c=%.o)\r
+\r
+VPATH += ..\r
+\r
+inc-y += $(ROOTDIR)/system/kernel/$(objdir)\r
+inc-y += $(ROOTDIR)/system/kernel/include\r
+\r
+# The more precise configuration, the higher preceedance.\r
+VPATH := ../config/$(BOARDDIR) ../config $(VPATH)\r
+inc-y := ../config/$(BOARDDIR) ../config $(inc-y)\r
+\r
+# Board object files\r
+include $(ROOTDIR)/boards/board_common.mk\r
+\r
+# linkfile\r
+ldcmdfile-y = linkscript_gcc.ldp\r
+vpath %.ldf $(ROOTDIR)/$(ARCH_PATH-y)/scripts\r
+\r
+# What I want to build\r
+build-exe-y = wdgm_node_project.elf\r
+\r
+\r
+#################### Arctic Core make system ######################\r
+# Following is an explanation of the most usable features \r
+# of the Arctic Core make system.\r
+#\r
+# obj-y : list of object files to build.\r
+# VPATH : list of directories in which to\r
+#         look for source files.\r
+# inc-y : list of directories in which to\r
+#         look for header files.\r
+# libitem-y : list of libraries to include. \r
+# build-exe-y : the name of build the output file.\r
+# ldcmdfile-y: path to linkscript, used when building "build-exe-y"\r
+#\r
+# For more information see:\r
+# http://arccore.com/wiki/Makesystem\r
+###################################################################\r
diff --git a/examples/wdg_node/wdgm_node.c b/examples/wdg_node/wdgm_node.c
new file mode 100644 (file)
index 0000000..e387cf9
--- /dev/null
@@ -0,0 +1,238 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+/*\r
+ * wdgm_node.c\r
+ *\r
+ *  Created on: 28 feb 2011\r
+ *      Author: Fredrik\r
+ */\r
+\r
+#include "Os.h"\r
+#include "Mcu.h"\r
+#include "arc.h"\r
+#include "WdgM.h"\r
+#include "Dio.h"\r
+#include "Gpt.h"\r
+\r
+#define USE_LDEBUG_PRINTF\r
+#include "debug.h"\r
+\r
+// How many errors to keep in error log.\r
+#define ERROR_LOG_SIZE 20\r
+\r
+/**\r
+ * Just an example of a basic task.\r
+ */\r
+\r
+void btask_3( void ) {\r
+       StackInfoType si;\r
+       TaskType currTask;\r
+       LDEBUG_PRINTF("[%08u] btask_3 start\n", (unsigned)GetOsTick() );\r
+\r
+       WdgM_UpdateAliveCounter (WDGM_ALIVE_BTASK3);\r
+\r
+       GetTaskID(&currTask);\r
+       Os_Arc_GetStackInfo(currTask,&si);\r
+       LDEBUG_PRINTF("btask_3: Stack usage %u%%\n",\r
+                       (unsigned)OS_STACK_USAGE(&si));\r
+\r
+       TerminateTask();\r
+}\r
+\r
+void WDTask( void ) {\r
+\r
+       /* Service the WD manager. */\r
+       WdgM_MainFunction_AliveSupervision();\r
+       WdgM_MainFunction_Trigger();\r
+\r
+       TerminateTask();\r
+}\r
+\r
+/**\r
+ * An extended task is auto-started and is also triggered by an alarm\r
+ * that sets event 2.\r
+ */\r
+\r
+void etask_1( void ) {\r
+       volatile float tryFloatingPoint = 0.0F;\r
+       StackInfoType si;\r
+       TaskType currTask;\r
+\r
+       LDEBUG_PRINTF("etask_1 start\n");\r
+       for(;;) {\r
+               WdgM_UpdateAliveCounter (WDGM_ALIVE_ETASK1);\r
+\r
+               SetEvent(TASK_ID_etask_2,EVENT_MASK_EVENT_1);\r
+               WaitEvent(EVENT_MASK_EVENT_2);\r
+               ClearEvent(EVENT_MASK_EVENT_2);\r
+\r
+               tryFloatingPoint += 1.0F;\r
+               GetTaskID(&currTask);\r
+               Os_Arc_GetStackInfo(currTask,&si);\r
+               LDEBUG_PRINTF("etask_1: Stack usage %u%% \n",\r
+                               (unsigned)OS_STACK_USAGE(&si));\r
+\r
+       }\r
+}\r
+\r
+/**\r
+ * An extended task that receives events from someone\r
+ * and activates task: btask_3.\r
+ */\r
+static Dio_LevelType level;\r
+\r
+void etask_2( void ) {\r
+    TickType wdCnt;\r
+       LDEBUG_PRINTF("etask_2 start\n");\r
+\r
+       WdgM_SetMode(WDGM_WIDE_MODE);\r
+\r
+       for(;;) {\r
+               WaitEvent(EVENT_MASK_EVENT_1);\r
+               ClearEvent(EVENT_MASK_EVENT_1);\r
+               ActivateTask(TASK_ID_btask_3);\r
+               {\r
+                       StackInfoType si;\r
+                       TaskType currTask;\r
+                       GetTaskID(&currTask);\r
+                       Os_Arc_GetStackInfo(currTask,&si);\r
+                       LDEBUG_PRINTF("etask_1: Stack usage %u%% \n",\r
+                                       (unsigned)OS_STACK_USAGE(&si));\r
+\r
+                   level ^= 1;\r
+                       Dio_WriteChannel(DIO_CHANNEL_NAME_HeartBeatLED, level);\r
+\r
+                       {\r
+                               static uint8 changeMode = 1;\r
+                               if (changeMode)\r
+                               {\r
+                                       WdgM_SetMode(WDGM_NARROW_MODE);\r
+                                       changeMode = 0;\r
+                               }\r
+                       }\r
+                       /* WdgM supervised task. */\r
+                       GetCounterValue(COUNTER_ID_WDFailureCounter, &wdCnt);\r
+                       if (wdCnt < 75)\r
+                       {\r
+                           IncrementCounter(COUNTER_ID_WDFailureCounter);\r
+                               WdgM_UpdateAliveCounter (WDGM_ALIVE_ETASK2);\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+\r
+\r
+/*\r
+ * Functions that must be supplied by the example\r
+ */\r
+\r
+void OsIdle( void ) {\r
+       for(;;);\r
+}\r
+\r
+\r
+/* Global hooks */\r
+ProtectionReturnType ProtectionHook( StatusType FatalError ) {\r
+       LDEBUG_PRINTF("## ProtectionHook\n");\r
+       return PRO_KILLAPPL;\r
+}\r
+\r
+void StartupHook( void ) {\r
+       uint32_t sys_freq = McuE_GetSystemClock();\r
+\r
+       LDEBUG_PRINTF("## StartupHook\n");\r
+\r
+       LDEBUG_PRINTF("Sys clock %u Hz\n",(unsigned)sys_freq);\r
+}\r
+\r
+void ShutdownHook( StatusType Error ) {\r
+       LDEBUG_PRINTF("## ShutdownHook\n");\r
+       while(1);\r
+}\r
+\r
+struct LogBad_s {\r
+       uint32_t param1;\r
+       uint32_t param2;\r
+       uint32_t param3;\r
+       TaskType taskId;\r
+       OsServiceIdType serviceId;\r
+       StatusType error;\r
+};\r
+\r
+void ErrorHook( StatusType Error ) {\r
+\r
+       TaskType task;\r
+       static struct LogBad_s LogBad[ERROR_LOG_SIZE];\r
+       static uint8_t ErrorCount = 0;\r
+\r
+       GetTaskID(&task);\r
+\r
+\r
+       OsServiceIdType service = OSErrorGetServiceId();\r
+\r
+       /* Grab the arguments to the functions\r
+        * This is the standard way, see 11.2 in OSEK spec\r
+        */\r
+       switch(service) {\r
+       case OSServiceId_SetRelAlarm:\r
+       {\r
+               // Read the arguments to the faulty functions...\r
+               AlarmType alarm_id = OSError_SetRelAlarm_AlarmId;\r
+               TickType increment = OSError_SetRelAlarm_Increment;\r
+               TickType cycle = OSError_SetRelAlarm_Cycle;\r
+               (void)alarm_id;\r
+               (void)increment;\r
+               (void)cycle;\r
+\r
+               // ... Handle this some way.\r
+               break;\r
+       }\r
+       /*\r
+        * The same pattern as above applies for all other OS functions.\r
+        * See Os.h for names and definitions.\r
+        */\r
+\r
+       default:\r
+               break;\r
+       }\r
+\r
+       LDEBUG_PRINTF("## ErrorHook err=%u\n",Error);\r
+\r
+       /* Log the errors in a buffer for later review */\r
+       LogBad[ErrorCount].param1 = os_error.param1;\r
+       LogBad[ErrorCount].param2 = os_error.param2;\r
+       LogBad[ErrorCount].param3 = os_error.param3;\r
+       LogBad[ErrorCount].serviceId = service;\r
+       LogBad[ErrorCount].taskId = task;\r
+       LogBad[ErrorCount].error = Error;\r
+\r
+       ErrorCount++;\r
+\r
+       // Stall if buffer is full.\r
+       while(ErrorCount >= ERROR_LOG_SIZE);\r
+}\r
+\r
+void PreTaskHook( void ) {\r
+       TaskType task;\r
+       GetTaskID(&task);\r
+//     LDEBUG_PRINTF("## PreTaskHook, taskid=%u\n",task);\r
+}\r
+\r
+void PostTaskHook( void ) {\r
+       TaskType task;\r
+       GetTaskID(&task);\r
+//     LDEBUG_PRINTF("## PostTaskHook, taskid=%u\n",task);\r
+}\r
diff --git a/examples/wdg_node/wdgm_node_stm32.arxml b/examples/wdg_node/wdgm_node_stm32.arxml
new file mode 100644 (file)
index 0000000..52f4498
--- /dev/null
@@ -0,0 +1,1014 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<AUTOSAR xmlns="http://autosar.org/3.1.4"><TOP-LEVEL-PACKAGES>\r
+    <AR-PACKAGE>\r
+      <SHORT-NAME>wdgm_node_stm32</SHORT-NAME>\r
+      <ELEMENTS>\r
+        <ECU-CONFIGURATION UUID="89230a07-67e7-4bd4-8d9e-df0ae13db81a">\r
+          <SHORT-NAME>wdgm_node_stm32</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <DOC-REVISIONS>\r
+              <DOC-REVISION/>\r
+            </DOC-REVISIONS>\r
+            <SDGS>\r
+              <SDG GID="Arccore::EcuOptions">\r
+                <SD GID="MCU">STM32_F103</SD>\r
+                <SD GID="GENDIR">/wdgm_node_project/config</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <ECU-SW-COMPOSITION-REF DEST="ECU-SW-COMPOSITION">/wdgm_node_stm32/SwComposition_wdgm_node_stm32</ECU-SW-COMPOSITION-REF>\r
+          <MODULE-REFS>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/wdgm_node_stm32/Os</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/wdgm_node_stm32/Port</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/wdgm_node_stm32/Dio</MODULE-REF>\r
+            <MODULE-REF DEST="MODULE-CONFIGURATION">/wdgm_node_stm32/Mcu</MODULE-REF>\r
+          </MODULE-REFS>\r
+        </ECU-CONFIGURATION>\r
+        <ECU-SW-COMPOSITION UUID="78904906-8b4f-46c9-8e94-40bc3b38406a">\r
+          <SHORT-NAME>SwComposition_wdgm_node_stm32</SHORT-NAME>\r
+        </ECU-SW-COMPOSITION>\r
+        <MODULE-CONFIGURATION UUID="eea1174a-2357-431d-b661-7a5f37e9bd98">\r
+          <SHORT-NAME>Os</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.7</SD>\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Os</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="9eb8b182-ead5-4730-a2fb-86299bbcbb48">\r
+              <SHORT-NAME>OsOS</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsOS</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsStackMonitoring</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsOS/OsStatus</DEFINITION-REF>\r
+                  <VALUE>EXTENDED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseGetServiceId</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseParameterAccess</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsUseResScheduler</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsTickFrequency</DEFINITION-REF>\r
+                  <VALUE>2000</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsInterruptStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsOS/OsIdleStackSize</DEFINITION-REF>\r
+                  <VALUE>512</VALUE>\r
+                </INTEGER-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsUseDebug</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugTask</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugAlarm</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugResource</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugScheduleTable</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/ArcCoreOsDebugEvent</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="b1d08a2d-a888-481e-8ff6-1d5317a6a3dd">\r
+                  <SHORT-NAME>OsHooks</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsOS/OsHooks</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsErrorHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsPostTaskHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsPreTaskHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsProtectionHook</DEFINITION-REF>\r
+                      <VALUE>false</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsShutdownHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                    <BOOLEAN-VALUE>\r
+                      <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsOS/OsHooks/OsStartupHook</DEFINITION-REF>\r
+                      <VALUE>true</VALUE>\r
+                    </BOOLEAN-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="7c72fe14-02cd-4e7c-bbfc-cdd4b9293dd4">\r
+              <SHORT-NAME>Alarm_4ms</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/wdgm_node_stm32/Os/OsTick</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="420a57db-4d62-4af2-a2f2-3cfea8169a56">\r
+                  <SHORT-NAME>OsAlarmAutostart</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart/OsAlarmAlarmTime</DEFINITION-REF>\r
+                      <VALUE>10</VALUE>\r
+                    </INTEGER-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart/OsAlarmAutostartType</DEFINITION-REF>\r
+                      <VALUE>ABSOLUTE</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart/OsAlarmCycleTime</DEFINITION-REF>\r
+                      <VALUE>50</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="c5d73d2e-ad5b-43cc-b6a4-5469bc7ce3b8">\r
+                  <SHORT-NAME>OsAlarmSetEvent</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent/OsAlarmSetEventRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/wdgm_node_stm32/Os/EVENT_2</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent/OsAlarmSetEventTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/wdgm_node_stm32/Os/etask_1</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="eb0ca011-126f-447b-ba13-4b8bb28c223c">\r
+              <SHORT-NAME>OsTick</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsCounter</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMaxAllowedValue</DEFINITION-REF>\r
+                  <VALUE>65535</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMinCycle</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterTicksPerBase</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterType</DEFINITION-REF>\r
+                  <VALUE>OS_TICK</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="51028494-a1ca-4d6e-bbf7-1260e3c066af">\r
+              <SHORT-NAME>btask_3</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>3</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>1048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="a32eecce-e3bc-433c-9d6a-aa606acfe835">\r
+              <SHORT-NAME>etask_1</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>EXTENDED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="e0c2403a-a4b7-498e-8464-5275f17fa4a8">\r
+                  <SHORT-NAME>OsTaskAutostart</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask/OsTaskAutostart</DEFINITION-REF>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="58eeb099-530b-46b1-b885-1d77f0f50438">\r
+              <SHORT-NAME>etask_2</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>2</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>EXTENDED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>2048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="dbe07b3f-c444-4ee9-8505-a72b21dbe7a7">\r
+                  <SHORT-NAME>OsTaskAutostart</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask/OsTaskAutostart</DEFINITION-REF>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="4f746f41-25a7-4aea-92e5-f302ce664b48">\r
+              <SHORT-NAME>EVENT_1</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsEvent</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsEvent/OsEventMask</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="c1679e07-893b-42a5-993c-69763eedd086">\r
+              <SHORT-NAME>EVENT_0</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsEvent</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsEvent/OsEventMask</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="82b28084-c8af-46ae-b0ba-415bec4e1fad">\r
+              <SHORT-NAME>EVENT_2</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsEvent</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsEvent/OsEventMask</DEFINITION-REF>\r
+                  <VALUE>2</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="16f600bd-14ac-45dd-8895-bdf40713e30d">\r
+              <SHORT-NAME>Alarm_WdM</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm</DEFINITION-REF>\r
+              <REFERENCE-VALUES>\r
+                <REFERENCE-VALUE>\r
+                  <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmCounterRef</DEFINITION-REF>\r
+                  <VALUE-REF DEST="CONTAINER">/wdgm_node_stm32/Os/OsTick</VALUE-REF>\r
+                </REFERENCE-VALUE>\r
+              </REFERENCE-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="e8690413-12d0-4ed4-ac61-37f179399a22">\r
+                  <SHORT-NAME>OsAlarmActivateTask</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask</DEFINITION-REF>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask/OsAlarmActivateTaskRef</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/wdgm_node_stm32/Os/WDTask</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="f2cdf144-e9d6-494c-8188-a709b34d823e">\r
+                  <SHORT-NAME>OsAlarmAutostart</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart/OsAlarmAlarmTime</DEFINITION-REF>\r
+                      <VALUE>1</VALUE>\r
+                    </INTEGER-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart/OsAlarmAutostartType</DEFINITION-REF>\r
+                      <VALUE>ABSOLUTE</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAutostart/OsAlarmCycleTime</DEFINITION-REF>\r
+                      <VALUE>1</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="0064690c-9c22-41e5-8d6b-4b4d2c858100">\r
+              <SHORT-NAME>WDTask</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsTask</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskActivation</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskPriority</DEFINITION-REF>\r
+                  <VALUE>4</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskProcessType</DEFINITION-REF>\r
+                  <VALUE>BASIC</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsTask/ArcCoreOsTaskStackSize</DEFINITION-REF>\r
+                  <VALUE>1048</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskSchedule</DEFINITION-REF>\r
+                  <VALUE>FULL</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="216b2d88-9860-4527-9150-9a2bfa973bcd">\r
+              <SHORT-NAME>WDFailureCounter</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsCounter</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMaxAllowedValue</DEFINITION-REF>\r
+                  <VALUE>65535</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterMinCycle</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterTicksPerBase</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsCounter/OsCounterType</DEFINITION-REF>\r
+                  <VALUE>SOFTWARE</VALUE>\r
+                </ENUMERATION-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="3af34507-eb57-452c-82c5-b546fd9452f2">\r
+          <SHORT-NAME>Port</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.2</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Port</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="569221ec-0a10-41ff-b296-34211660bc6a">\r
+              <SHORT-NAME>PortConfigSet</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet</DEFINITION-REF>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="b54df27d-2511-4f19-8d93-2d4f2447c42b">\r
+                  <SHORT-NAME>PortContainer_1</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer</DEFINITION-REF>\r
+                  <SUB-CONTAINERS>\r
+                    <CONTAINER UUID="51704227-b8a9-4651-b486-dd3b567fec46">\r
+                      <SHORT-NAME>B15</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinPullMode</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirection</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_2MHz_MODE</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirectionChangeable</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinHysteresisEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinOpenDrainEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcReducedDrive</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinId</DEFINITION-REF>\r
+                          <VALUE>31</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <STRING-VALUE>\r
+                          <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcPortPinName</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </STRING-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinLevelValue</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_HIGH</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinMode</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_PUSHPULL_CNF</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                    <CONTAINER UUID="8254079b-0f5f-4825-bd83-9a609421a6f6">\r
+                      <SHORT-NAME>B8</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinPullMode</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirection</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_2MHz_MODE</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirectionChangeable</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinHysteresisEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinOpenDrainEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcReducedDrive</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinId</DEFINITION-REF>\r
+                          <VALUE>24</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <STRING-VALUE>\r
+                          <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcPortPinName</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </STRING-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinLevelValue</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_LOW</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinMode</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_PUSHPULL_CNF</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                    <CONTAINER UUID="e20dd6fa-9a86-40e0-9bc6-05b0e8a0072d">\r
+                      <SHORT-NAME>B9</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinPullMode</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirection</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_2MHz_MODE</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirectionChangeable</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinHysteresisEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinOpenDrainEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcReducedDrive</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinId</DEFINITION-REF>\r
+                          <VALUE>25</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <STRING-VALUE>\r
+                          <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcPortPinName</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </STRING-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinLevelValue</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_LOW</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinMode</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_PUSHPULL_CNF</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                    <CONTAINER UUID="bdd76e30-8fb6-45be-a6eb-c4639880df0c">\r
+                      <SHORT-NAME>B10</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinPullMode</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirection</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_2MHz_MODE</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirectionChangeable</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinHysteresisEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinOpenDrainEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcReducedDrive</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinId</DEFINITION-REF>\r
+                          <VALUE>26</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <STRING-VALUE>\r
+                          <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcPortPinName</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </STRING-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinLevelValue</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_LOW</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinMode</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_PUSHPULL_CNF</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                    <CONTAINER UUID="a510ee0a-5ee8-4a25-a213-5f01fe6d0af7">\r
+                      <SHORT-NAME>B11</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinPullMode</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirection</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_2MHz_MODE</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirectionChangeable</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinHysteresisEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinOpenDrainEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcReducedDrive</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinId</DEFINITION-REF>\r
+                          <VALUE>27</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <STRING-VALUE>\r
+                          <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcPortPinName</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </STRING-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinLevelValue</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_LOW</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinMode</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_PUSHPULL_CNF</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                    <CONTAINER UUID="a629bc64-f63a-48e3-aa26-fc32cc282ace">\r
+                      <SHORT-NAME>B12</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinPullMode</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirection</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_2MHz_MODE</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirectionChangeable</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinHysteresisEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinOpenDrainEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcReducedDrive</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinId</DEFINITION-REF>\r
+                          <VALUE>28</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <STRING-VALUE>\r
+                          <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcPortPinName</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </STRING-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinLevelValue</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_LOW</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinMode</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_PUSHPULL_CNF</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                    <CONTAINER UUID="534c0a29-bf50-40b3-a4ca-31b0d81f310f">\r
+                      <SHORT-NAME>B13</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinPullMode</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirection</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_2MHz_MODE</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirectionChangeable</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinHysteresisEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinOpenDrainEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcReducedDrive</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinId</DEFINITION-REF>\r
+                          <VALUE>29</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <STRING-VALUE>\r
+                          <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcPortPinName</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </STRING-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinLevelValue</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_LOW</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinMode</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_PUSHPULL_CNF</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                    <CONTAINER UUID="0b37d04a-b9af-49a5-80be-295a41def502">\r
+                      <SHORT-NAME>B14</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinPullMode</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirection</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_2MHz_MODE</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinDirectionChangeable</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinHysteresisEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinOpenDrainEnabled</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <BOOLEAN-VALUE>\r
+                          <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcReducedDrive</DEFINITION-REF>\r
+                          <VALUE>false</VALUE>\r
+                        </BOOLEAN-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinId</DEFINITION-REF>\r
+                          <VALUE>30</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <STRING-VALUE>\r
+                          <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/ArcPortPinName</DEFINITION-REF>\r
+                          <VALUE></VALUE>\r
+                        </STRING-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinLevelValue</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_LOW</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                        <ENUMERATION-VALUE>\r
+                          <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortConfigSet/PortContainer/PortPin/PortPinMode</DEFINITION-REF>\r
+                          <VALUE>OUTPUT_PUSHPULL_CNF</VALUE>\r
+                        </ENUMERATION-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                  </SUB-CONTAINERS>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="f7a113fe-4e0f-4c13-9c60-eddd8058d49c">\r
+              <SHORT-NAME>PortGeneral</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortGeneral</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Port/PortGeneral/ArcGpioRemap</DEFINITION-REF>\r
+                  <VALUE></VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortDevErrorDetect</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortSetPinDirectionApi</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortSetPinModeApi</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortVersionInfoApi</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="73bfa297-4f1b-4455-8253-1956d206eb2e">\r
+          <SHORT-NAME>Dio</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.0</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Dio</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="f3e2efa7-378a-41dd-b798-d3aabbaf7598">\r
+              <SHORT-NAME>DioGeneral</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioGeneral</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Dio/DioGeneral/DioDevErrorDetect</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Dio/DioGeneral/DioVersionInfoApi</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="f8c73a1f-5735-4223-a36d-c24a4839c529">\r
+              <SHORT-NAME>DioPort_1</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioPort</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Dio/DioPort/DioPortId</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <STRING-VALUE>\r
+                  <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/Dio/DioPort/ArcCoreDioPhysicalPort</DEFINITION-REF>\r
+                  <VALUE>B</VALUE>\r
+                </STRING-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="48e24619-3677-4209-99b3-bab28acb542d">\r
+                  <SHORT-NAME>HeartBeatLED</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Dio/DioPort/DioChannel</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Dio/DioPort/DioChannel/DioChannelId</DEFINITION-REF>\r
+                      <VALUE>31</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+        <MODULE-CONFIGURATION UUID="7b2f91d1-e84d-4bdc-876f-8d7581a696ba">\r
+          <SHORT-NAME>Mcu</SHORT-NAME>\r
+          <ADMIN-DATA>\r
+            <SDGS>\r
+              <SDG/>\r
+              <SDG GID="Arccore::ModuleOptions">\r
+                <SD GID="GENERATE_AND_VALIDATE">true</SD>\r
+                <SD GID="ARCCORE_EDITOR_VERSION">2.0.2</SD>\r
+              </SDG>\r
+            </SDGS>\r
+          </ADMIN-DATA>\r
+          <DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Mcu</DEFINITION-REF>\r
+          <CONTAINERS>\r
+            <CONTAINER UUID="8c73f81c-807c-4144-9091-04c56e8967c3">\r
+              <SHORT-NAME>McuGeneralConfiguration</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuGeneralConfiguration</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Mcu/McuGeneralConfiguration/McuDevErrorDetect</DEFINITION-REF>\r
+                  <VALUE>false</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Mcu/McuGeneralConfiguration/McuPerformResetApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+                <BOOLEAN-VALUE>\r
+                  <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Mcu/McuGeneralConfiguration/McuVersionInfoApi</DEFINITION-REF>\r
+                  <VALUE>true</VALUE>\r
+                </BOOLEAN-VALUE>\r
+              </PARAMETER-VALUES>\r
+            </CONTAINER>\r
+            <CONTAINER UUID="28d25fa3-3c24-45d4-b204-1fdebe9baa64">\r
+              <SHORT-NAME>McuModuleConfiguration</SHORT-NAME>\r
+              <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration</DEFINITION-REF>\r
+              <PARAMETER-VALUES>\r
+                <ENUMERATION-VALUE>\r
+                  <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSrcFailureNotification</DEFINITION-REF>\r
+                  <VALUE>DISABLED</VALUE>\r
+                </ENUMERATION-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="DERIVED-INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuNumberOfMcuModes</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="DERIVED-INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuRamSectors</DEFINITION-REF>\r
+                  <VALUE>1</VALUE>\r
+                </INTEGER-VALUE>\r
+                <INTEGER-VALUE>\r
+                  <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuResetSetting</DEFINITION-REF>\r
+                  <VALUE>0</VALUE>\r
+                </INTEGER-VALUE>\r
+              </PARAMETER-VALUES>\r
+              <SUB-CONTAINERS>\r
+                <CONTAINER UUID="965c2963-e7b6-4070-8abb-0b1e79548df7">\r
+                  <SHORT-NAME>McuClockSettingConfig</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB1ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>TIM3</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB2ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>GPIOB</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB1ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>WWDG</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB1ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>TIM2</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                    <ENUMERATION-VALUE>\r
+                      <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/ArcAPB2ClocksEnable</DEFINITION-REF>\r
+                      <VALUE>AFIO</VALUE>\r
+                    </ENUMERATION-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                  <REFERENCE-VALUES>\r
+                    <REFERENCE-VALUE>\r
+                      <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuDefaultClockReference</DEFINITION-REF>\r
+                      <VALUE-REF DEST="CONTAINER">/wdgm_node_stm32/Mcu/McuModuleConfiguration/McuClockSettingConfig/Clock</VALUE-REF>\r
+                    </REFERENCE-VALUE>\r
+                  </REFERENCE-VALUES>\r
+                  <SUB-CONTAINERS>\r
+                    <CONTAINER UUID="ea2ad50a-a4a8-402a-9ee3-89014c982b14">\r
+                      <SHORT-NAME>Clock</SHORT-NAME>\r
+                      <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint</DEFINITION-REF>\r
+                      <PARAMETER-VALUES>\r
+                        <FLOAT-VALUE>\r
+                          <DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointFrequency</DEFINITION-REF>\r
+                          <VALUE>8000000.0</VALUE>\r
+                        </FLOAT-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllEprediv</DEFINITION-REF>\r
+                          <VALUE>9</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllEmfd</DEFINITION-REF>\r
+                          <VALUE>8</VALUE>\r
+                        </INTEGER-VALUE>\r
+                        <INTEGER-VALUE>\r
+                          <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllErfd</DEFINITION-REF>\r
+                          <VALUE>0</VALUE>\r
+                        </INTEGER-VALUE>\r
+                      </PARAMETER-VALUES>\r
+                    </CONTAINER>\r
+                  </SUB-CONTAINERS>\r
+                </CONTAINER>\r
+                <CONTAINER UUID="a06bc2ba-4821-4992-aee0-db6623a2f37a">\r
+                  <SHORT-NAME>McuModeSettingConf</SHORT-NAME>\r
+                  <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuModeSettingConf</DEFINITION-REF>\r
+                  <PARAMETER-VALUES>\r
+                    <INTEGER-VALUE>\r
+                      <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuModeSettingConf/McuMode</DEFINITION-REF>\r
+                      <VALUE>0</VALUE>\r
+                    </INTEGER-VALUE>\r
+                  </PARAMETER-VALUES>\r
+                </CONTAINER>\r
+              </SUB-CONTAINERS>\r
+            </CONTAINER>\r
+          </CONTAINERS>\r
+        </MODULE-CONFIGURATION>\r
+      </ELEMENTS>\r
+    </AR-PACKAGE>\r
+  </TOP-LEVEL-PACKAGES></AUTOSAR>\r
index 10e7171eecc4ee8dafd7945991fa55db0c7774d1..d9df03543e2d12677383ee4ea682cd3e1a154c6e 100644 (file)
@@ -94,15 +94,15 @@ typedef enum {
 typedef enum {\r
        CAN_OK,\r
        CAN_NOT_OK,\r
-       CAN_BUSY,\r
+       CAN_BUSY\r
 //     CAN_WAKEUP,             // Removed in 3.0\r
 } Can_ReturnType;\r
 \r
 /* Error from  CAN controller */\r
 typedef union {\r
-       volatile uint32_t R;\r
+     volatile uint32_t R;\r
      struct {\r
-         volatile uint32_t:24;\r
+        volatile uint32_t:24;\r
          volatile uint32_t BIT1ERR:1;\r
          volatile uint32_t BIT0ERR:1;\r
          volatile uint32_t ACKERR:1;\r
@@ -121,7 +121,7 @@ typedef union {
 #include "Can_Cfg.h"\r
 \r
 void Can_Init( const Can_ConfigType *Config );\r
-void Can_DeInit();\r
+void Can_DeInit(void);\r
 \r
 #if ( CAN_VERSION_INFO_API == STD_ON )\r
 #define Can_GetVersionInfo(_vi) STD_GET_VERSION_INFO(_vi,CAN)\r
index 13a51d6d7c3dd6b93a36fb4760e2a8dc7516b3ac..5c11b88fd51f9a3854ceb6a3b16950358cef2732 100644 (file)
@@ -38,7 +38,7 @@
 #define CANIF_AR_PATCH_VERSION   2\r
 \r
 #define CANIF_SW_MAJOR_VERSION   1\r
-#define CANIF_SW_MINOR_VERSION   1\r
+#define CANIF_SW_MINOR_VERSION   2\r
 #define CANIF_SW_PATCH_VERSION   0\r
 \r
 #include "Det.h"\r
@@ -102,8 +102,12 @@ CanIf_NotifStatusType CanIf_ReadRxNotifStatus(PduIdType CanRxPduId);
 Std_ReturnType CanIf_SetPduMode( uint8 Controller, CanIf_ChannelSetModeType PduModeRequest );\r
 Std_ReturnType CanIf_GetPduMode( uint8 Controller, CanIf_ChannelGetModeType *PduModePtr );\r
 \r
-#if ( CANIF_SETDYNAMICTXID_API == STD_ON )\r
+#if ( CANIF_ARC_RUNTIME_PDU_CONFIGURATION == STD_ON )
 void CanIf_SetDynamicTxId( PduIdType CanTxPduId, Can_IdType CanId );\r
+CanIf_TxPduConfigType * CanIf_FindTxPduEntry(PduIdType id);
+CanIf_RxPduConfigType * CanIf_FindRxPduEntry(PduIdType id);
+const CanIf_HrhConfigType* CanIf_Arc_GetReceiveHandler(CanIf_Arc_ChannelIdType Channel);
+const CanIf_HthConfigType* CanIf_Arc_GetTransmitHandler(CanIf_Arc_ChannelIdType Channel);
 #endif\r
 \r
 #if ( CANIF_TRANSCEIVER_API == STD_ON )\r
@@ -122,4 +126,6 @@ Std_ReturnType CanIf_CheckValidation( EcuM_WakeupSourceType WakeupSource );
 #define CanIf_GetVersionInfo(_vi) STD_GET_VERSION_INFO(_vi,CANIF)\r
 #endif\r
 \r
+uint8 CanIf_Arc_GetChannelDefaultConfIndex(CanIf_Arc_ChannelIdType Channel);
+
 #endif /*CANIF_H_*/\r
index 9115e66ec136ab9d6630ef6b70c4ce5fefe70325..30714bd3867e9dcaa6b2d08069c0dfe6228c9d0d 100644 (file)
@@ -69,7 +69,7 @@ typedef enum {
         *  SLEEP mode and can be woken up by request of the\r
         *  CAN driver or by a network event (must be supported\r
         *  by CAN hardware) */\r
-       CANIF_CS_SLEEP,\r
+       CANIF_CS_SLEEP\r
 } CanIf_ControllerModeType;\r
 \r
 /** Status of the PDU channel group. Current mode of the channel defines its\r
@@ -105,7 +105,7 @@ typedef enum {
         *  shall be set to the offline active mode\r
         *  => notifications are processed but transmit\r
         *  requests are blocked. */\r
-       CANIF_SET_TX_OFFLINE_ACTIVE,\r
+       CANIF_SET_TX_OFFLINE_ACTIVE\r
 } CanIf_ChannelSetModeType;\r
 \r
 \r
@@ -137,7 +137,7 @@ typedef enum {
        CANIF_NO_NOTIFICATION = 0,      \r
        /** The requested Rx/Tx CAN L-PDU was\r
         *  successfully transmitted or received. */\r
-       CANIF_TX_RX_NOTIFICATION,\r
+       CANIF_TX_RX_NOTIFICATION\r
        \r
 } CanIf_NotifStatusType;\r
 \r
index 3d2a328bcd5202ac69229d7367e874092e4c6a80..8b4cb92b2251dcbe45cc875246212ed511db2142 100644 (file)
@@ -14,8 +14,8 @@
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
 \r
-#ifndef CANNM_H_\r
-#define CANNM_H_\r
+#ifndef CANNM_H\r
+#define CANNM_H\r
 \r
 #include "ComStack_Types.h"\r
 #include "NmStack_Types.h"\r
 #include "CanNm_Cfg.h"\r
 \r
 /** @req CANNM018 */\r
-#define CANNM_E_NO_INIT                                                0x01 /**< API service used */\r
-#define CANNM_E_INVALID_CHANNEL                                0x02 /**< API service called with wrong channel handle */\r
+#define CANNM_E_NO_INIT                                                0x01u /**< API service used */\r
+#define CANNM_E_INVALID_CHANNEL                                0x02u /**< API service called with wrong channel handle */\r
 /** NM-Timeout Timer has abnormally expired outside of the Ready Sleep State;\r
 it may happen: (1) because of Bus-Off state, (2) if some ECU requests bus communication or node detection shortly\r
 before the NMTimeout Timer expires so that a NM message can not be transmitted in time;\r
 this race condition applies to event-triggered systems */\r
-#define CANNM_E_DEV_NETWORK_TIMEOUT                    0x11\r
-#define NM_E_NULL_POINTER                                      0x12 /**< Null pointer has been passed as an argument (Does not apply to function CanNm_Init) */\r
-\r
-\r
-#define CANNM_SERVICEID_INIT                                                           0x00\r
-#define CANNM_SERVICEID_PASSIVESTARTUP                                         0x01\r
-#define CANNM_SERVICEID_NETWORKREQUEST                                         0x02\r
-#define CANNM_SERVICEID_NETWORKRELEASE                                         0x03\r
-#define CANNM_SERVICEID_DISABLECOMMUNICATION                           0x0C\r
-#define CANNM_SERVICEID_ENABLECOMMUNICATION                                    0x0D\r
-#define CANNM_SERVICEID_SETUSERDATA                                                    0x04\r
-#define CANNM_SERVICEID_GETUSERDATA                                                    0x05\r
-#define CANNM_SERVICEID_GETNODEIDENTIFIER                                      0x06\r
-#define CANNM_SERVICEID_GETLOCALNODEIDENTIFIER                         0x07\r
-#define CANNM_SERVICEID_REPEATMESSAGEREQUEST                           0x08\r
-#define CANNM_SERVICEID_GETPDUDATA                                                     0x0A\r
-#define CANNM_SERVICEID_GETSTATE                                                       0x0B\r
-#define CANNM_SERVICEID_GETVERSIONINFO                                         0xF1\r
-#define CANNM_SERVICEID_REQUESTBUSSYNCHRONIZATION                      0xC0\r
-#define CANNM_SERVICEID_CHECKREMOTESLEEPINDICATION                     0xD0\r
-#define CANNM_SERVICEID_TXCONFIRMATION                                         0x0F\r
-#define CANNM_SERVICEID_RXINDICATION                                           0x10\r
-#define CANNM_SERVICEID_ARC_MAINFUNCTION                                       0x13\r
-\r
-#define CANNM_CBV_REPEAT_MESSAGE_REQUEST                                       (1 << 0)  /**< @req CANNM045 */\r
+#define CANNM_E_DEV_NETWORK_TIMEOUT                    0x11u\r
+#define NM_E_NULL_POINTER                                      0x12u /**< Null pointer has been passed as an argument (Does not apply to function CanNm_Init) */\r
+\r
+\r
+#define CANNM_SERVICEID_INIT                                                           0x00u\r
+#define CANNM_SERVICEID_PASSIVESTARTUP                                         0x01u\r
+#define CANNM_SERVICEID_NETWORKREQUEST                                         0x02u\r
+#define CANNM_SERVICEID_NETWORKRELEASE                                         0x03u\r
+#define CANNM_SERVICEID_DISABLECOMMUNICATION                           0x0Cu\r
+#define CANNM_SERVICEID_ENABLECOMMUNICATION                                    0x0Du\r
+#define CANNM_SERVICEID_SETUSERDATA                                                    0x04u\r
+#define CANNM_SERVICEID_GETUSERDATA                                                    0x05u\r
+#define CANNM_SERVICEID_GETNODEIDENTIFIER                                      0x06u\r
+#define CANNM_SERVICEID_GETLOCALNODEIDENTIFIER                         0x07u\r
+#define CANNM_SERVICEID_REPEATMESSAGEREQUEST                           0x08u\r
+#define CANNM_SERVICEID_GETPDUDATA                                                     0x0Au\r
+#define CANNM_SERVICEID_GETSTATE                                                       0x0Bu\r
+#define CANNM_SERVICEID_GETVERSIONINFO                                         0xF1u\r
+#define CANNM_SERVICEID_REQUESTBUSSYNCHRONIZATION                      0xC0u\r
+#define CANNM_SERVICEID_CHECKREMOTESLEEPINDICATION                     0xD0u\r
+#define CANNM_SERVICEID_TXCONFIRMATION                                         0x0Fu\r
+#define CANNM_SERVICEID_RXINDICATION                                           0x10u\r
+#define CANNM_SERVICEID_ARC_MAINFUNCTION                                       0x13u\r
+\r
+#define CANNM_CBV_REPEAT_MESSAGE_REQUEST                                       0x01u  /**< @req CANNM045 */\r
 \r
 // Functions called by NM Interface\r
 // --------------------------------\r
@@ -121,7 +121,9 @@ Nm_ReturnType CanNm_GetPduData( const NetworkHandleType nmChannelHandle, uint8 *
 Nm_ReturnType CanNm_GetState( const NetworkHandleType nmChannelHandle, Nm_StateType * const nmStatePtr, Nm_ModeType * const nmModePtr );\r
 \r
 /** This service returns the version information of this module. */\r
-void CanNm_GetVersionInfo( Std_VersionInfoType * versioninfo );\r
+#if ( CANNM_VERSION_INFO_API == STD_ON )\r
+#define CanNm_GetVersionInfo(_vi) STD_GET_VERSION_INFO(_vi,CANNM)\r
+#endif /* CANNM_VERSION_INFO_API */\r
 \r
 /** Request bus synchronization. */\r
 Nm_ReturnType CanNm_RequestBusSynchronization( const NetworkHandleType nmChannelHandle );\r
@@ -143,4 +145,4 @@ void CanNm_TxConfirmation( PduIdType canNmTxPduId );
 void CanNm_RxIndication( PduIdType canNmRxPduId, const uint8 *canSduPtr );\r
 \r
 \r
-#endif /* CANNM_H_ */\r
+#endif /* CANNM_H */\r
index 114e1cd12fe5ec9b5140074ef61e1ad5e525b6ae..4ae6db2361693c66ee3fa0e4bcd8aefd14cebb3f 100644 (file)
@@ -20,7 +20,7 @@
 typedef enum {\r
        CANNM_PDU_BYTE_0 = 0x00,\r
        CANNM_PDU_BYTE_1 = 0x01,\r
-       CANNM_PDU_OFF = 0xFF,\r
+       CANNM_PDU_OFF = 0xFF\r
 } CanNm_PduBytePositionType;\r
 \r
 /** @req CANNM202  @req CANNM203 */\r
index 52250d917a1f87357c9e786894b48a9cd45e3213..b879a3ffbcf53a2b5fe7a88ba3e7654ffba64f53 100644 (file)
@@ -20,7 +20,7 @@
 /** @req CANNM188  @req CANNM196  @req CANNM199    */\r
 #if (CANNM_DEV_ERROR_DETECT == STD_ON)\r
 #define CANNM_DET_REPORTERROR(serviceId, errorId, instanceId)                  \\r
-       Det_ReportError(MODULE_ID_CANNM, instanceId, serviceId, errorId)\r
+       Det_ReportError(MODULE_ID_CANNM, (uint8)instanceId, serviceId, errorId)\r
 \r
 #define CANNM_VALIDATE(expression, serviceId, errorId, instanceId, ...)        \\r
        if (!(expression)) {                                                                    \\r
@@ -45,7 +45,7 @@
 \r
 typedef enum {\r
        CANNM_INIT,\r
-       CANNM_UNINIT,\r
+       CANNM_UNINIT\r
 } CanNm_InitStatusType;\r
 \r
 typedef struct {\r
index 1568caf8a8e84d4a924396a322cd657d7a719dae..9a42658906846c4d47b97147c8bdcf0878d617e8 100644 (file)
@@ -56,7 +56,7 @@ typedef enum {
        CANSM_UNINITED,\r
        CANSM_NO_COMMUNICATION,\r
        CANSM_SILENT_COMMUNICATION,\r
-       CANSM_FULL_COMMUNICATION,\r
+       CANSM_FULL_COMMUNICATION\r
 } CanSM_NetworkModeStateType;\r
 \r
 /** This type shall define the states of the bus-off recovery state machine. */\r
@@ -67,8 +67,8 @@ typedef enum {
        CANSM_BOR_TXOFF_L1, /**<  Bus-off recovery level 1 state, TX disabled */\r
        CANSM_BOR_CHECK_L1, /**<  Bus-off recovery level 1 state, TX enabled again */\r
        CANSM_BOR_TXOFF_L2, /**<  Bus-off recovery level 2 state, TX disabled */\r
-       CANSM_BOR_CHECK_L2, /**<  Bus-off recovery level 2 state, TX enabled again */\r
-};\r
+       CANSM_BOR_CHECK_L2 /**<  Bus-off recovery level 2 state, TX enabled again */\r
+} CanSM_BusOffRecoveryStateType; /** @req CANSM169 */\r
 \r
 /** @req CANSM037 */\r
 \r
@@ -93,7 +93,7 @@ Std_ReturnType CanSM_GetCurrentComMode( NetworkHandleType NetworkHandle, ComM_Mo
 \r
 /** Scheduled function of the CanSM */\r
 /** @req CANSM065 */\r
-void CanSM_MainFunction();\r
+void CanSM_MainFunction(void);\r
 \r
 \r
 \r
index a9a1079ed6a062f1e664a44dfc9c1263bdd800f8..ec99ba7cf3903b1d20c2e31096ffa54564eafedf 100644 (file)
@@ -90,19 +90,19 @@ typedef enum {
  * Implemented functions\r
  ****************************/\r
 \r
-void CanTp_Init(); /** @req CANTP208 **/\r
+void CanTp_Init(void); /** @req CANTP208 **/\r
 \r
 #if ( CANTP_VERSION_INFO_API == STD_ON ) /** @req CANTP162 *//** @req CANTP163 */\r
 #define CanTp_GetVersionInfo(_vi) STD_GET_VERSION_INFO(_vi,CANTP) /** @req CANTP210 */ /* @req CANTP218 */\r
 #endif /* CANTP_VERSION_INFO_API */\r
 \r
-void CanTp_Shutdown(); /** @req CANTP211 */\r
+void CanTp_Shutdown(void); /** @req CANTP211 */\r
 \r
 Std_ReturnType CanTp_Transmit( PduIdType CanTpTxSduId, const PduInfoType * CanTpTxInfoPtr ); /** @req CANTP212 */\r
 \r
 Std_ReturnType FrTp_CancelTransmitRequest( PduIdType FrTpTxPduId, FrTp_CancelReasonType FrTpCancelReason ); /** @req CANTP246 */\r
 \r
-void CanTp_MainFunction(); /** @req CANTP213 */\r
+void CanTp_MainFunction(void); /** @req CANTP213 */\r
 \r
 \r
 #endif /* CANTP_H_ */\r
index cc59d591ce15c0544d6728d10d1343a9eb294885..e2f2c9e55f7c32e4bb1c6d4edcbd02fe960a69d4 100644 (file)
@@ -24,6 +24,8 @@
 /** @req CANTP239 */\r
 /** @req CANTP242 */\r
 \r
+//lint -save -e451 //PC-Lint Wrong interpretation, "Platform_Types.h included twice without a standard include guard."\r
+\r
 #ifndef CANTP_TYPES_H_\r
 #define CANTP_TYPES_H_\r
 \r
@@ -87,8 +89,8 @@ typedef struct {
 \r
 \r
 typedef struct {\r
-       const int CanIf_FcPduId; // The polite CanIf PDU index.\r
-       const int PduR_PduId; // The polite PduR index.\r
+       const PduIdType CanIf_FcPduId; // The polite CanIf PDU index.\r
+       const PduIdType PduR_PduId; // The polite PduR index.\r
        const CanTp_AddressingFormantType CanTpAddressingFormant;       /** @req CANTP242 */\r
        const uint8 CanTpBs; /** @req CANTP243 */ /* Sets the maximum number of messages of N-PDUs before flow control. */\r
        const uint16 CanTpNar; /** @req CANTP244 */ /* Timeout for transmission of a CAN frame (ms). */\r
@@ -110,8 +112,8 @@ typedef struct {
 } CanTp_RxNSduType; /** @req CANTP137 */\r
 \r
 typedef struct {\r
-       const int CanIf_PduId; // The polite CanIf index.\r
-       const int PduR_PduId; // The polite PduR index.\r
+       const PduIdType CanIf_PduId; // The polite CanIf index.\r
+       const PduIdType PduR_PduId; // The polite PduR index.\r
        const CanTp_AddressingFormantType CanTpAddressingMode; /** @req CANTP262 */\r
        const uint16 CanTpNas; /** @req CANTP263 */ /* N_As timeout for transmission of any CAN frame. */\r
        const uint16 CanTpNbs; /** @req CANTP264 */ /* N_Bs timeout of transmission until reception of next Flow Control. */\r
index 821033dafd2cef693d0189f3eacc4a15b8519899..d08bcf117d60f62be61a1e97c60a9ab1d26b32d4 100644 (file)
 \r
 \r
 #define COM_SW_MAJOR_VERSION   1\r
-#define COM_SW_MINOR_VERSION   0\r
+#define COM_SW_MINOR_VERSION   1\r
 #define COM_SW_PATCH_VERSION   0\r
 \r
 #include "Com_Cfg.h"\r
 #include "Com_Types.h"\r
 #include "Com_PbCfg.h"\r
+//#include "Com_Internal.h" //TODO: Remove completely?\r
 #include "Com_Com.h"\r
 #include "Com_Sched.h"\r
 \r
@@ -71,7 +72,7 @@
 \r
 \r
 // From Autosar\r
-void Com_Init(const Com_ConfigType * ConfigPtr);\r
+void Com_Init(const Com_ConfigType * config);\r
 void Com_DeInit(void);\r
 \r
 void Com_IpduGroupStart(Com_PduGroupIdType IpduGroupId, boolean Initialize);\r
index 802e98e042fef7e1765163a956991b8de980fe88..6c546a198090d986ced6d60da54cfafde6eabdf3 100644 (file)
@@ -17,8 +17,8 @@
 \r
 \r
 \r
-#ifndef COMM_H_\r
-#define COMM_H_\r
+#ifndef COMM_H\r
+#define COMM_H\r
 \r
 /** @req COMM466  @req COMM518  @req COMM692 */\r
 #include "ComStack_Types.h"\r
@@ -91,10 +91,10 @@ void ComM_MainFunction_##channel (void) { \
 \r
 \r
 /** Initializes the AUTOSAR Communication Manager and restarts the internal state machines.*/\r
-void ComM_Init(const ComM_ConfigType *);  /**< @req COMM146 */\r
+void ComM_Init(const ComM_ConfigType* Config);  /**< @req COMM146 */\r
 \r
 /** De-initializes (terminates) the AUTOSAR Communication Manager. */\r
-void ComM_DeInit();  /**< @req COMM147 */\r
+void ComM_DeInit(void);  /**< @req COMM147 */\r
 \r
 /** @req COMM370 */\r
 #if (COMM_VERSION_INFO_API == STD_ON)\r
@@ -114,8 +114,8 @@ Std_ReturnType ComM_PreventWakeUp( NetworkHandleType Channel, boolean Status );
 Std_ReturnType ComM_LimitChannelToNoComMode( NetworkHandleType Channel, boolean Status );     /**< @req COMM163 */\r
 Std_ReturnType ComM_LimitECUToNoComMode( boolean Status );                                    /**< @req COMM124 */\r
 Std_ReturnType ComM_ReadInhibitCounter( uint16* CounterValue );                               /**< @req COMM224 */\r
-Std_ReturnType ComM_ResetInhibitCounter();                                                    /**< @req COMM108 */\r
+Std_ReturnType ComM_ResetInhibitCounter(void);                                                    /**< @req COMM108 */\r
 Std_ReturnType ComM_SetECUGroupClassification( ComM_InhibitionStatusType Status );\r
 \r
 \r
-#endif /*COMM_H_*/\r
+#endif /*COMM_H*/\r
index dc057b91ffa0bfb4e5828ab337f5c4e3556f134b..663f03ad8d3234c3435daaad7946842af79f7cda 100644 (file)
@@ -28,14 +28,14 @@ typedef enum {
        COMM_BUS_TYPE_CAN,\r
        COMM_BUS_TYPE_FR,\r
        COMM_BUS_TYPE_INTERNAL,\r
-       COMM_BUS_TYPE_LIN,\r
+       COMM_BUS_TYPE_LIN\r
 } ComM_BusTypeType;\r
 \r
 typedef enum {\r
        COMM_NM_VARIANT_NONE,\r
        COMM_NM_VARIANT_LIGHT,\r
        COMM_NM_VARIANT_PASSIVE,\r
-       COMM_NM_VARIANT_FULL,\r
+       COMM_NM_VARIANT_FULL\r
 } ComM_NmVariantType;\r
 \r
 typedef struct {\r
index 8ee188765291fad0a9a847405fbd64c4905202d2..de0c25a26f0e5667d4e1471de192bd0264bd460c 100644 (file)
 \r
 \r
 \r
-#ifndef COMM_DCM_H_\r
-#define COMM_DCM_H_\r
+#ifndef COMM_DCM_H\r
+#define COMM_DCM_H\r
 \r
-void ComM_DCM_ActiveDiagnostic();\r
-void ComM_DCM_InactiveDiagnostic();\r
+void ComM_DCM_ActiveDiagnostic(void);\r
+void ComM_DCM_InactiveDiagnostic(void);\r
 \r
-#endif /*COMM_DCM_H_*/\r
+#endif /*COMM_DCM_H*/\r
index e13252b0b82970fa2fae1117da53d483b5d2d1b9..422fa5d9adc5f5972e8c6501e4cfd5732e2aef32 100644 (file)
 \r
 \r
 \r
-#ifndef COMM_ECUM_H_\r
-#define COMM_ECUM_H_\r
+#ifndef COMM_ECUM_H\r
+#define COMM_ECUM_H\r
 \r
-void ComM_EcuM_RunModeIndication( NetworkHandleType channel );\r
+void ComM_EcuM_RunModeIndication( NetworkHandleType Channel );\r
 void ComM_EcuM_WakeUpIndication( NetworkHandleType Channel );\r
 \r
-#endif /*COMM_ECUM_H_*/\r
+#endif /*COMM_ECUM_H*/\r
index 6777bc842ce90d8986efe27d5a32d4af9e34a82f..5e524f3e7cfe4b8224d5ba791f8e87d8983de92b 100644 (file)
 \r
 \r
 \r
-#ifndef COMM_TYPES_H_\r
-#define COMM_TYPES_H_\r
+#ifndef COMM_TYPES_H\r
+#define COMM_TYPES_H\r
 \r
 /** Current mode of the Communication Manager (main state of the state machine). */\r
 /** @req COMM484  @req COMM190  @req COMM248 */\r
 typedef enum {\r
        COMM_NO_COMMUNICATION = 0,\r
        COMM_SILENT_COMMUNICATION = 1,\r
-       COMM_FULL_COMMUNICATION = 2,\r
+       COMM_FULL_COMMUNICATION = 2\r
 } ComM_ModeType;\r
 \r
 /** Initialization status of ComM. */\r
 typedef enum {\r
        COMM_UNINIT,\r
-       COMM_INIT,\r
+       COMM_INIT\r
 } ComM_InitStatusType;  /**< @req COMM494 */\r
 \r
 /** Inhibition status of ComM. */\r
 typedef uint8 ComM_InhibitionStatusType;  /**< @req COMM496 */\r
 \r
-#define COMM_INHIBITION_STATUS_NONE                                    (0)\r
+#define COMM_INHIBITION_STATUS_NONE                                    (0u)\r
 /** Wake Up inhibition active */\r
-#define COMM_INHIBITION_STATUS_WAKE_UP                         (1 << 0)\r
+#define COMM_INHIBITION_STATUS_WAKE_UP                         (1u)\r
 /** Limit to \93No Communication\94 mode active */\r
-#define COMM_INHIBITION_STATUS_NO_COMMUNICATION                (1 << 1)\r
+#define COMM_INHIBITION_STATUS_NO_COMMUNICATION                (uint8)(1u << 1)\r
 \r
-#endif /*COMM_TYPES_H_*/\r
+#endif /*COMM_TYPES_H*/\r
index 84d8831f52a2b1524d98f4d38e7748c77360bc1b..c2dbdb15e9055ef1d3fb2d1b3821f7b2b689f5a1 100644 (file)
@@ -62,7 +62,7 @@ typedef enum {
        BUFREQ_OK=0,\r
        BUFREQ_NOT_OK,\r
        BUFREQ_BUSY,\r
-       BUFREQ_OVFL,\r
+       BUFREQ_OVFL\r
 } BufReq_ReturnType;\r
 \r
 // 0x00--0x1e General return types\r
index 54dff0d023b5726a2415bc5acc3c3dcbf97b2cda..9886a8e5623354c12d1e41328283366f4e30b6b7 100644 (file)
@@ -23,8 +23,8 @@
 #ifndef COM_COM_H_\r
 #define COM_COM_H_\r
 \r
-#include "Com.h"\r
-#include "PduR.h"\r
+#include <Com.h>\r
+#include <PduR.h>\r
 \r
 uint8 Com_SendSignal(Com_SignalIdType SignalId, const void *SignalDataPtr);\r
 uint8 Com_ReceiveSignal(Com_SignalIdType SignalId, void* SignalDataPtr);\r
@@ -33,7 +33,7 @@ Std_ReturnType Com_TriggerTransmit(PduIdType ComTxPduId, uint8 *SduPtr);
 \r
 void Com_TriggerIPduSend(PduIdType ComTxPduId);\r
 \r
-Std_ReturnType Com_RxIndication(PduIdType ComRxPduId, const uint8* PduInfoPtr);\r
+void Com_RxIndication(PduIdType ComRxPduId, const uint8* SduPtr); // TODO: Parameter SduPtr should be const PduInfoType* PduInfoPtr\r
 void Com_TxConfirmation(PduIdType ComTxPduId);\r
 \r
 \r
index cbea8132287d4f44379692701535642115db2d4c..ebd232bcb97c672a27a157ca5dd851a9e2329d27 100644 (file)
@@ -25,8 +25,8 @@
 \r
 #include "Com.h"\r
 \r
-void Com_MainFunctionRx();\r
-void Com_MainFunctionTx();\r
+void Com_MainFunctionRx(void);\r
+void Com_MainFunctionTx(void);\r
 \r
 // Not supported in this version.\r
 //void Com_MainFunctionRouteSignals();\r
index a19464ea08dc8ffef3bcff21e3af3bb9ed6b59c9..71fff03d2a368a0d48c6c2b802a70f925d1bb1e5 100644 (file)
@@ -36,7 +36,7 @@ typedef uint8 Com_SignalGroupIdType;
 \r
 typedef enum {\r
        IMMEDIATE,\r
-       DEFERRED,\r
+       DEFERRED\r
 } Com_IPduSignalProcessingMode;\r
 \r
 typedef enum {\r
@@ -60,14 +60,14 @@ typedef enum {
 \r
 typedef enum {\r
        PENDING,\r
-       TRIGGERED,\r
+       TRIGGERED\r
 } ComTransferProperty_type;\r
 \r
 typedef enum {\r
        DIRECT,\r
        MIXED,\r
        NONE,\r
-       PERIODIC,\r
+       PERIODIC\r
 } ComTxModeMode_type;\r
 \r
 \r
@@ -79,13 +79,13 @@ typedef enum {
        NEVER,\r
        NEW_IS_OUTSIDE,\r
        NEW_IS_WITHIN,\r
-       ONE_EVERY_N,\r
+       ONE_EVERY_N\r
 } ComFilterAlgorithm_type;\r
 \r
 typedef enum {\r
        COM_BIG_ENDIAN,\r
        COM_LITTLE_ENDIAN,\r
-       COM_OPAQUE,\r
+       COM_OPAQUE\r
 } ComSignalEndianess_type;\r
 \r
 typedef enum {\r
@@ -119,7 +119,7 @@ typedef enum {
        type == SINT32  ? sizeof(sint32) : sizeof(boolean)) \\r
 \r
 #define SignalTypeSignedness(type) \\r
-               ((type == SINT8 || type == SINT16 || type == SINT32) ? \\r
+               (( (type == SINT8) || (type == SINT16) || (type == SINT32) ) ? \\r
                                COM_SIGNALTYPE_SIGNED : COM_SIGNALTYPE_UNSIGNED)\r
 \r
 /** Filter configuration type.\r
@@ -174,7 +174,7 @@ typedef struct {
        /** Filter for this signal.\r
         * NOT SUPPORTED\r
         */\r
-       const ComFilter_type ComFilter;\r
+       //const ComFilter_type ComFilter;\r
 \r
        /* Pointer to the shadow buffer of the signal group that this group signal is contained in.\r
         *\r
@@ -238,7 +238,7 @@ typedef struct {
        /** The number of bytes if the signal has type UINT8_N;\r
         * Range 1 to 8.\r
         */\r
-       const uint8 ComSignalLength;\r
+       //const uint8 ComSignalLength;\r
 \r
        /** Defines the type of the signal. */\r
        const Com_SignalType ComSignalType;\r
@@ -265,7 +265,7 @@ typedef struct {
        /** Filter for this signal.\r
         * NOT SUPPORTED.\r
         */\r
-       const ComFilter_type ComFilter;\r
+       //const ComFilter_type ComFilter;\r
 \r
        /** Marks if this signal is a signal group.\r
         * Should be set to 1 if the signal is a signal group.\r
@@ -375,9 +375,6 @@ typedef struct {
        boolean (*ComIPduCallout)(PduIdType PduId, const uint8 *IPduData);\r
 \r
 \r
-       /** The ID of this IPDU. */\r
-       const uint8 ComIPduRxHandleId;\r
-\r
        /** The outgoing PDU id. For polite PDU id handling. */\r
        const uint8 ArcIPduOutgoingId;\r
 \r
index 822202b3a6ee7c4d46c81ea4039ee20967d333d0..7d6303f005e21c1dc52b29e847dc420c7dea610a 100644 (file)
 \r
 /* REQ:COMPILER040,049,051 */\r
 #define AUTOMATIC\r
-#define _STATIC_       static\r
+#define STATIC         static\r
 #define NULL_PTR       ((void *)0)\r
 \r
+#if defined(__GNUC__)\r
+#define CC_EXTENSION   __extension__\r
+#elif defined(__CWCC__)\r
+#define CC_EXTENSION\r
+#endif\r
+\r
+#if defined(__GNUC__)\r
+#define SECTION_BALIGN(_align )  __attribute__ ((aligned (_align)));\r
+#else\r
+#error SECTION_BALIGN not defined for compiler\r
+#endif\r
+\r
+\r
 /* REQ:COMPILER005 */\r
 /* TODO: skip the memclass for now */\r
 #define FUNC(rettype,memclass) rettype\r
index 8398918cb0f9531f3e1bbe5249a28b1896173a42..19f4d48bf18c7c7324467e39209bab00780964ff 100644 (file)
@@ -23,6 +23,7 @@
 #ifndef DCM_CBK_H_\r
 #define DCM_CBK_H_\r
 \r
+//lint -e451 //451 PC-Lint OK. SlÃ¥ av regel helt?\r
 #include "ComStack_Types.h"\r
 \r
 /*\r
index 2c02c2aee4c8eb543542d9fcc370fa662cf31c0c..08aa56817c1eaed74405ef4beabebdf951621bf9 100644 (file)
@@ -132,7 +132,7 @@ Std_ReturnType Dem_GetEventStatus(Dem_EventIdType eventId, Dem_EventStatusExtend
 Std_ReturnType Dem_GetEventFailed(Dem_EventIdType eventId, boolean *eventFailed); /** @req DEM196 */\r
 Std_ReturnType Dem_GetEventTested(Dem_EventIdType eventId, boolean *eventTested); /** @req DEM197 */\r
 Std_ReturnType Dem_GetFaultDetectionCounter(Dem_EventIdType eventId, sint8 *counter); /** @req DEM203 */\r
-Std_ReturnType Dem_SetOperationCycleState(Dem_OperationCycleIdType OperationCycleId, Dem_OperationCycleStateType CycleState); /** @req DEM194 */\r
+Std_ReturnType Dem_SetOperationCycleState(Dem_OperationCycleIdType operationCycleId, Dem_OperationCycleStateType cycleState); /** @req DEM194 */\r
 Std_ReturnType Dem_GetDTCOfEvent(Dem_EventIdType eventId, Dem_DTCKindType dtcKind, uint32* dtcOfEvent); /** @req DEM198 */\r
 \r
 \r
@@ -147,14 +147,14 @@ void Dem_ReportErrorStatus(Dem_EventIdType eventId ,uint8 eventStatus); /** @req
  */\r
 Dem_ReturnClearDTCType Dem_ClearDTC(uint32 dtc, Dem_DTCKindType dtcKind, Dem_DTCOriginType dtcOrigin); /** @req DEM241 */\r
 Dem_ReturnSetDTCFilterType Dem_SetDTCFilter(uint8 dtcStatusMask, Dem_DTCKindType dtcKind, Dem_DTCOriginType dtcOrigin, Dem_FilterWithSeverityType filterWithSeverity, Dem_DTCSeverityType dtcSeverityMask, Dem_FilterForFDCType filterForFaultDetectionCounter);  /** @req DEM208 */\r
-Dem_ReturnGetStatusOfDTCType Dem_GetStatusOfDTC(uint32 dtc, Dem_DTCKindType dtcKind, Dem_DTCOriginType dtcOrigin, Dem_EventStatusExtendedType* dtcStatus); /** @req DEM212 */\r
+Dem_ReturnGetStatusOfDTCType Dem_GetStatusOfDTC(uint32 dtc, Dem_DTCKindType dtcKind, Dem_DTCOriginType dtcOrigin, Dem_EventStatusExtendedType* status); /** @req DEM212 */\r
 Std_ReturnType Dem_GetDTCStatusAvailabilityMask(uint8 *dtcStatusMask); /** @req DEM213 */\r
 Dem_ReturnGetNumberOfFilteredDTCType Dem_GetNumberOfFilteredDtc(uint16* numberOfFilteredDTC); /** @req DEM214 */\r
 Dem_ReturnGetNextFilteredDTCType Dem_GetNextFilteredDTC(uint32* dtc, Dem_EventStatusExtendedType* dtcStatus); /** @req DEM215 */\r
 Dem_ReturnTypeOfDtcSupportedType Dem_GetTranslationType(void); /** @req DEM230 */\r
 Dem_ReturnControlDTCStorageType Dem_DisableDTCStorage(Dem_DTCGroupType dtcGroup, Dem_DTCKindType dtcKind); /** @req DEM242 */\r
 Dem_ReturnControlDTCStorageType Dem_EnableDTCStorage(Dem_DTCGroupType dtcGroup, Dem_DTCKindType dtcKind); /** @req DEM243 */\r
-Dem_ReturnGetExtendedDataRecordByDTCType Dem_GetExtendedDataRecordByDTC(uint32 dtc, Dem_DTCKindType dtcKind, Dem_DTCOriginType dtcOrigin, uint8 extendedDataNumber, uint8 *destBuffer, uint8 *bufSize); /** @req DEM239 */\r
+Dem_ReturnGetExtendedDataRecordByDTCType Dem_GetExtendedDataRecordByDTC(uint32 dtc, Dem_DTCKindType dtcKind, Dem_DTCOriginType dtcOrigin, uint8 extendedDataNumber, uint8 *destBuffer, uint16 *bufSize); /** @req DEM239 */\r
 Dem_ReturnGetSizeOfExtendedDataRecordByDTCType Dem_GetSizeOfExtendedDataRecordByDTC(uint32 dtc, Dem_DTCKindType dtcKind, Dem_DTCOriginType dtcOrigin, uint8 extendedDataNumber, uint16 *sizeOfExtendedDataRecord); /** @req DEM240 */\r
 \r
 \r
index 9681b61f47e1f1bf0eda8e6e654f6d375dfcbcf5..8b129a2de7880eaccdfe6f8a0c4cfdc301b0b936 100644 (file)
 /*\r
  * Development Error Tracer driver\r
  *\r
- * Specification: Autosar v2.0.1, Final\r
- *\r
  */\r
 \r
-#ifndef _DET_H_\r
-#define _DET_H_\r
+\r
+/*\r
+ *  General requirements\r
+ */\r
+/** @req DET004 */\r
+\r
+#ifndef DET_H\r
+#define DET_H\r
 \r
 #define DET_MODULE_ID            MODULE_ID_DET\r
 #define DET_VENDOR_ID            1\r
 \r
+/* Implementation version */\r
 #define DET_SW_MAJOR_VERSION     1\r
 #define DET_SW_MINOR_VERSION     0\r
 #define DET_SW_PATCH_VERSION     0\r
 \r
+/* AUTOSAR specification document version */\r
 #define DET_AR_MAJOR_VERSION     2\r
 #define DET_AR_MINOR_VERSION     2\r
 #define DET_AR_PATCH_VERSION     2\r
@@ -51,6 +57,8 @@
 \r
 #define DET_CALLBACK_API              0xFF\r
 \r
+#define DET_CBK_REGISTRATION_FAILED_INDEX      0xFF\r
+\r
 // Type used to store errors\r
 typedef struct\r
 {\r
@@ -61,25 +69,26 @@ typedef struct
 } Det_EntryType;\r
 \r
 #if ( DET_ENABLE_CALLBACKS == STD_ON )\r
-typedef void *(*detCbk_t)( uint16 ModuleId, uint8 InstanceId , uint8 ApiId, uint8 ErrorId);\r
+typedef void (*detCbk_t)( uint16 ModuleId, uint8 InstanceId , uint8 ApiId, uint8 ErrorId);\r
 \r
 /*\r
  * Add a callback function to the array of callback. After a call to Det_ReportError the callback\r
  * is called. This can be used in for instance unit tests to verify that correct errors are\r
  * reported when sending invalid parameters to a function.\r
  * This function returns the index of the callback in the array when registration is successful. If\r
- * not -1 is returned. The index can be used to remove a callback with the Det_RemoveCbk.\r
+ * not DET_CBK_REGISTRATION_FAILED_INDEX is returned.\r
+ * The index can be used to remove a callback with the Det_RemoveCbk.\r
  */\r
 uint8 Det_AddCbk ( detCbk_t detCbk);\r
 void Det_RemoveCbk ( uint8 detCbkIndex);\r
 #endif\r
 \r
-void Det_Init( void );\r
+void Det_Init( void ); /** @req DET008 */\r
 #if DET_DEINIT_API == STD_ON\r
 void Det_DeInit( void );\r
 #endif\r
-void Det_ReportError( uint16 ModuleId, uint8 InstanceId, uint8 ApiId, uint8 ErrorId);\r
-void Det_Start( void );\r
-#define Det_GetVersionInfo(_vi) STD_GET_VERSION_INFO(_vi,DET)\r
+void Det_ReportError( uint16 ModuleId, uint8 InstanceId, uint8 ApiId, uint8 ErrorId); /** @req DET009 */\r
+void Det_Start( void ); /** @req DET010 */\r
+#define Det_GetVersionInfo(_vi) STD_GET_VERSION_INFO(_vi,DET) /** @req DET011 */ /** @req DET012 */\r
 \r
-#endif /*_DET_H_*/\r
+#endif /*DET_H*/\r
index 824b8a2ac8affc2e1f87841520217bcac6e141de..6ef64663e9dd5b8b26b3b958d908f97dbb5bec05 100644 (file)
@@ -38,7 +38,7 @@
 #define DIO_E_PARAM_INVALID_PORT_ID            20
 #define DIO_E_PARAM_INVALID_GROUP_ID           31
 
-#if defined(CFG_HC1X)
+#if defined(CFG_HC1X) || defined(CFG_TMS570)
 typedef uint8 Dio_ChannelType;
 typedef uint8 Dio_PortType;
 
index e8929f89a2c0efded9610ba95302f5ada23101f1..aaeb3dc298f77ebb0379ae91a27a2ab27680731f 100644 (file)
@@ -24,7 +24,7 @@
 #define ECUM_H_\r
 \r
 #include "Std_Types.h"\r
-#include "Os.h"\r
+#include <Os.h>\r
 #if defined(USE_COM)\r
 #include "ComStack_Types.h"\r
 #endif\r
@@ -39,6 +39,7 @@
 #define ECUM_E_MISMATCHED_RUN_RELEASE (0x15)\r
 #define ECUM_E_STATE_PAR_OUT_OF_RANGE (0x16)\r
 #define ECUM_E_UNKNOWN_WAKEUP_SOURCE (0x17)\r
+#define ECUM_E_ARC_TIMERERROR (0x18)\r
 //@}\r
 \r
 /** @name Service id's */\r
@@ -58,6 +59,7 @@
 #define ECUM_GET_BOOTARGET_ID (0x13)\r
 #define ECUM_MAINFUNCTION_ID (0x18)\r
 #define ECUM_COMM_HASREQUESTEDRUN_ID (0x1b)\r
+#define ECUM_ARC_STARTUPTWO_ID (0x20)\r
 \r
 /** Possible states */\r
 typedef enum {\r
@@ -114,7 +116,7 @@ enum {
         *  If hardware cannot distinguish between a\r
         *  power cycle and a reset reason, then this\r
         *  shall be the default wakeup source */\r
-       ECUM_WKSOURCE_RESET = 0x02,\r
+       ECUM_WKSOURCE_RESET = 0x02\r
 };\r
 \r
 typedef uint32 EcuM_WakeupSourceType;\r
@@ -124,20 +126,20 @@ typedef enum
        ECUM_WKSTATUS_NONE = 0,        /**< No pending wakeup event was detected */\r
        ECUM_WKSTATUS_PENDING = 1,     /**< The wakeup event was detected but not yet validated */\r
        ECUM_WKSTATUS_VALIDATED = 2,   /**< The wakeup event is valid */\r
-       ECUM_WKSTATUS_EXPIRED = 3,     /**< The wakeup event has not been validated and has expired therefore */\r
+       ECUM_WKSTATUS_EXPIRED = 3     /**< The wakeup event has not been validated and has expired therefore */\r
 } EcuM_WakeupStatusType;\r
 \r
 typedef enum\r
 {\r
        ECUM_WWKACT_RUN = 0,       /**< Initialization into RUN state */\r
        ECUM_WKACT_TTII = 2,       /**< Execute time triggered increased inoperation protocol and shutdown */\r
-       ECUM_WKACT_SHUTDOWN = 3,   /**< Immediate shutdown */\r
+       ECUM_WKACT_SHUTDOWN = 3   /**< Immediate shutdown */\r
 } EcuM_WakeupReactionType;\r
 \r
 typedef enum\r
 {\r
        ECUM_BOOT_TARGET_APP = 0,          /**< The Ecu will boot into the application */\r
-       ECUM_BOOT_TARGET_BOOTLOADER = 1,   /**< The Ecu will boot into the bootloader */\r
+       ECUM_BOOT_TARGET_BOOTLOADER = 1   /**< The Ecu will boot into the bootloader */\r
 } EcuM_BootTargetType;\r
 \r
 \r
@@ -159,8 +161,8 @@ typedef enum
 #endif\r
 \r
 void EcuM_Init( void );\r
-void EcuM_StartupTwo();\r
-void EcuM_Shutdown();\r
+void EcuM_StartupTwo(void);\r
+void EcuM_Shutdown(void);\r
 \r
 Std_ReturnType EcuM_GetState(EcuM_StateType* state);\r
 \r
@@ -170,22 +172,22 @@ Std_ReturnType EcuM_ReleaseRUN(EcuM_UserType user);
 Std_ReturnType EcuM_RequestPOST_RUN(EcuM_UserType user);\r
 Std_ReturnType EcuM_ReleasePOST_RUN(EcuM_UserType user);\r
 \r
-void EcuM_KillAllRUNRequests();\r
+void EcuM_KillAllRUNRequests(void);\r
 \r
-#if defined(USE_COM)\r
+#if defined(USE_COMM)\r
 Std_ReturnType EcuM_ComM_RequestRUN(NetworkHandleType channel);\r
 Std_ReturnType EcuM_ComM_ReleaseRUN(NetworkHandleType channel);\r
 boolean EcuM_ComM_HasRequestedRUN(NetworkHandleType channel);\r
 #endif\r
 \r
-Std_ReturnType EcuM_SelectShutdownTarget(EcuM_StateType target, uint8 mode);\r
-Std_ReturnType EcuM_GetShutdownTarget(EcuM_StateType* target, uint8* mode);\r
-Std_ReturnType EcuM_GetLastShutdownTarget(EcuM_StateType* target, uint8* mode);\r
+Std_ReturnType EcuM_SelectShutdownTarget(EcuM_StateType shutdownTarget, uint8 sleepMode);\r
+Std_ReturnType EcuM_GetShutdownTarget(EcuM_StateType* shutdownTarget, uint8* sleepMode);\r
+Std_ReturnType EcuM_GetLastShutdownTarget(EcuM_StateType* shutdownTarget, uint8* sleepMode);\r
 \r
-EcuM_WakeupSourceType EcuM_GetPendingWakeupEvents();\r
+EcuM_WakeupSourceType EcuM_GetPendingWakeupEvents(void);\r
 void EcuM_ClearWakeupEvent(EcuM_WakeupSourceType sources);\r
-EcuM_WakeupSourceType EcuM_GetValidatedWakeupEvents();\r
-EcuM_WakeupSourceType EcuM_GetExpiredWakeupEvents();\r
+EcuM_WakeupSourceType EcuM_GetValidatedWakeupEvents(void);\r
+EcuM_WakeupSourceType EcuM_GetExpiredWakeupEvents(void);\r
 EcuM_WakeupStatusType EcuM_GetStatusOfWakeupSource(EcuM_WakeupSourceType sources);\r
 \r
 Std_ReturnType EcuM_SelectApplicationMode(AppModeType appMode);\r
@@ -196,8 +198,5 @@ Std_ReturnType EcuM_GetBootTarget(EcuM_BootTargetType* target);
 \r
 void EcuM_MainFunction(void);\r
 \r
-void EcuM_OnGoOffTwo( void );\r
-void EcuM_AL_SwitchOff( void );\r
-\r
 #endif /*ECUM_H_*/\r
 /** @} */\r
index 22463cbaebc076c8b20d122608dd097e12742bf8..affbc4fc948e63d425f3b7765b5a6810a595f3c5 100644 (file)
@@ -30,31 +30,31 @@ void EcuM_ValidateWakeupEvent(EcuM_WakeupSourceType sources);
 \r
 void EcuM_ErrorHook(Std_ReturnType reason);\r
 \r
-void EcuM_AL_DriverInitZero();\r
-EcuM_ConfigType* EcuM_DeterminePbConfiguration();\r
+void EcuM_AL_DriverInitZero(void);\r
+EcuM_ConfigType* EcuM_DeterminePbConfiguration(void);\r
 void EcuM_AL_DriverInitOne(const EcuM_ConfigType* ConfigPtr);\r
 void EcuM_AL_DriverInitTwo(const EcuM_ConfigType* ConfigPtr);\r
 void EcuM_AL_DriverInitThree(const EcuM_ConfigType* ConfigPtr);\r
 \r
-void EcuM_OnRTEStartup();\r
+void EcuM_OnRTEStartup(void);\r
 \r
-void EcuM_OnEnterRUN();\r
-void EcuM_OnExitRun();\r
-void EcuM_OnExitPostRun();\r
+void EcuM_OnEnterRUN(void);\r
+void EcuM_OnExitRun(void);\r
+void EcuM_OnExitPostRun(void);\r
 \r
-void EcuM_OnPrepShutdown();\r
-void EcuM_OnGoSleep();\r
-void EcuM_OnGoOffOne();\r
-void EcuM_OnGoOffTwo();\r
+void EcuM_OnPrepShutdown(void);\r
+void EcuM_OnGoSleep(void);\r
+void EcuM_OnGoOffOne(void);\r
+void EcuM_OnGoOffTwo(void);\r
 \r
 void EcuM_EnableWakeupSources(EcuM_WakeupSourceType wakeupSource);\r
 void Ecum_DisableWakeupSources(EcuM_WakeupSourceType wakeupSource);\r
 \r
-void EcuM_GenerateRamHash();\r
-uint8 EcuM_CheckRamHash();\r
+void EcuM_GenerateRamHash(void);\r
+uint8 EcuM_CheckRamHash(void);\r
 \r
-void EcuM_AL_SwitchOff();\r
-void Ecum_AL_DriverRestart();\r
+void EcuM_AL_SwitchOff(void);\r
+void Ecum_AL_DriverRestart(void);\r
 \r
 void EcuM_StartWakeupSources(EcuM_WakeupSourceType wakeupSource);\r
 void EcuM_CheckValidation(EcuM_WakeupSourceType wakeupSource);\r
@@ -63,6 +63,6 @@ void EcuM_StopWakeupSources(EcuM_WakeupSourceType wakeupSource);
 EcuM_WakeupReactionType EcuM_OnWakeupReaction(EcuM_WakeupReactionType wact);\r
 \r
 void EcuM_CheckWakeup(EcuM_WakeupSourceType wakeupSource);\r
-void EcuM_SleepActivity();\r
+void EcuM_SleepActivity(void);\r
 \r
 #endif /*ECUM_CBK_H_*/\r
index 23f2c7fe9ae77cf00fe6c49a1d0a8ee38672a20c..1531878b4985574c15cf08d193cbe5b364c3bced 100644 (file)
@@ -49,6 +49,9 @@ typedef Eep_AddressType Eep_LengthType;
 #define EEP_E_UNINIT                               0x20\r
 #define EEP_E_BUSY                                         0x21\r
 \r
+/* Production errors */\r
+// #define EEP_E_COM_FAILURE       0x30 /* Shall be located in DemIntErrId.h when its available */\r
+\r
 /* Service id's for fls functions */\r
 #define EEP_INIT_ID                                        0x00\r
 #define EEP_SETMODE_ID          0x01\r
index cb7e5b2ec6d5eb36bac1cc2d0540226922c8b135..0bcf9f616a302dc2dc5d490c46e921cdbcff84da 100644 (file)
 void Fee_MainFunction(void);   /** @req FEE097 */\r
 \r
 void Fee_Init(void);   /** @req FEE085 */\r
-void Fee_SetMode(MemIf_ModeType Mode); /** @req FEE086 */\r
-Std_ReturnType Fee_Read(uint16 BlockNumber, uint16 BlockOffset, uint8* DataBufferPtr, uint16 Length); /** @req FEE087 */\r
-Std_ReturnType Fee_Write(uint16 BlockNumber, uint8* DataBufferPtr); /** @req FEE088 */\r
+void Fee_SetMode(MemIf_ModeType mode); /** @req FEE086 */\r
+Std_ReturnType Fee_Read(uint16 blockNumber, uint16 blockOffset, uint8* dataBufferPtr, uint16 length); /** @req FEE087 */\r
+Std_ReturnType Fee_Write(uint16 blockNumber, uint8* dataBufferPtr); /** @req FEE088 */\r
 void Fee_Cancel(void); /** @req FEE089 */\r
 MemIf_StatusType Fee_GetStatus(void);  /** @req FEE090 */\r
 MemIf_JobResultType Fee_GetJobResult(void);    /** @req FEE091 */\r
-Std_ReturnType Fee_InvalidateBlock(uint16 BlockNumber);        /** @req FEE092 */\r
-Std_ReturnType Fee_EraseImmediateBlock(uint16 BlockNumber);    /** @req FEE094 */\r
+Std_ReturnType Fee_InvalidateBlock(uint16 blockNumber);        /** @req FEE092 */\r
+Std_ReturnType Fee_EraseImmediateBlock(uint16 blockNumber);    /** @req FEE094 */\r
 \r
 \r
 \r
index d0a08c6329189cb4e6f4d18b7d7c2cb3cd526e59..740bd40a20dd2cbfb6b5fe3bf459419aff5e4acc 100644 (file)
@@ -143,5 +143,6 @@ void Fls_SetMode(           Fls_ModeType Mode );
 \r
 void Fls_GetVersionInfo( Std_VersionInfoType *VersioninfoPtr );\r
 \r
+void Fls_Check( uint32 flsBaseAddress, uint32 flsTotalSize );\r
 \r
 #endif /*FLS_H_*/\r
index 5984aea65e4ecbe3844d65588979e75c2c2ce51d..bafec793c7a199a12a54e6dcf3e956acb0d0838a 100644 (file)
@@ -79,7 +79,7 @@ typedef enum
 \r
 #define GPT_SW_MAJOR_VERSION   1\r
 #define GPT_SW_MINOR_VERSION           0\r
-#define GPT_SW_PATCH_VERSION   0\r
+#define GPT_SW_PATCH_VERSION   1\r
 \r
 #define GPT_AR_MAJOR_VERSION     2\r
 #define GPT_AR_MINOR_VERSION     2\r
similarity index 69%
rename from communication/Com/Com_RunTest.h
rename to include/Gpt_ConfigTypes.h
index f1f969825057891ea03312b22dd046cbbc3b000e..33b07881dd1ba077e3509294ded0d09896541d5b 100644 (file)
  * for more details.\r
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-#ifndef COM_RUNTEST_H_\r
-#define COM_RUNTEST_H_\r
-\r
-void RTE_Notification(void);\r
-void RTE_EngineMain(void);\r
-void RTE_EngineChangeSpeed(void);\r
-void RTE_SIL2MESSAGE(void);\r
-\r
-#endif /* COM_RUNTEST_H_ */\r
+#ifndef GPT_CONFIGTYPES_H\r
+#define GPT_CONFIGTYPES_H\r
+\r
+typedef struct  {\r
+       uint32 GptChannelClkSrc;\r
+       Gpt_ChannelType GptChannelId;\r
+       Gpt_ChannelMode GptChannelMode;\r
+       void (*GptNotification)();\r
+       uint8 GptNotificationPriority;\r
+       uint32 GptChannelPrescale;\r
+       boolean GptEnableWakeup;\r
+} Gpt_ConfigType;\r
+\r
+#endif /* GPT_CONFIGTYPES_H */\r
index 829a85155625516bdc0220cafe810e0026f9376e..1beaca3b5bfc06ad65ac1ef942cbd601a04cabfe 100644 (file)
@@ -15,8 +15,8 @@
 \r
 \r
 \r
-#ifndef _MCU_EXTENSIONS_H_\r
-#define _MCU_EXTENSIONS_H_\r
+#ifndef MCU_EXTENSIONS_H\r
+#define MCU_EXTENSIONS_H\r
 \r
 #include "Std_Types.h"\r
 typedef uint32_t imask_t;\r
index 9ad31bbb9f7d355f427067ea79defc44bb9157d5..c3d4713f4ac902a624faee1260295b025d805f6d 100644 (file)
 #include "Std_Types.h"\r
 #include "MemIf_Cfg.h"\r
 \r
+#if defined(USE_FEE)\r
+#include "Fee.h"\r
+#endif\r
+\r
+#if defined(USE_EA)\r
+#include "Ea.h"\r
+#endif\r
+\r
 #if (MEMIF_VERSION_INFO_API == STD_ON)\r
 #define MemIf_GetVersionInfo(_vi) STD_GET_VERSION_INFO(_vi, MEMIF)\r
 #endif /* MEMIF_VERSION_INFO_API */\r
@@ -52,8 +60,6 @@
 \r
 #if (MEMIF_NUMBER_OF_DEVICES == 1)\r
 #if (MEMIF_DEVICE_TO_USE == FLS_DRIVER_INDEX)\r
-#include "Fee.h"\r
-\r
 #define MemIf_SetMode(_mode)   Fee_SetMode(_mode)\r
 #define MemIf_Read(_deviceIndex,_blockNumber,_blockOffset,_dataBufferPtr,_length)      Fee_Read(_blockNumber,_blockOffset,_dataBufferPtr,_length)\r
 #define MemIf_Write(_deviceIndex,_blockNumber,_dataBufferPtr)  Fee_Write(_blockNumber,_dataBufferPtr)\r
@@ -64,8 +70,6 @@
 #define MemIf_EraseImmediateBlock(_deviceIndex,_blockNumber)   Fee_EraseImmediateBlock(_blockNumber)\r
 \r
 #elif (MEMIF_DEVICE_TO_USE == EEP_DRIVER_INDEX)\r
-#include "Ea.h"\r
-\r
 #define MemIf_SetMode(_mode)   Ea_SetMode(_mode)\r
 #define MemIf_Read(_deviceIndex,_blockNumber,_blockOffset,_dataBufferPtr,_length)      Ea_Read(_blockNumber,_blockOffset,_dataBufferPtr,_length)\r
 #define MemIf_Write(_deviceIndex,_blockNumber,_dataBufferPtr)  Ea_Write(_blockNumber,_dataBufferPtr)\r
index 7aae88f835113404220d967637978a887686d87f..6dbd49080f2ad1831a8928c31239e9e6a4e58e1c 100644 (file)
@@ -56,7 +56,7 @@ typedef enum {
        MEMIF_BLOCK_INCONSISTENT,\r
        // The requested block has been marked as invalid,\r
        // the requested operation can not be performed.\r
-       MEMIF_BLOCK_INVALID\r
+       MEMIF_BLOCK_INVALID\r
        \r
 } MemIf_JobResultType; \r
 \r
@@ -67,7 +67,7 @@ typedef enum {
        MEMIF_MODE_SLOW,\r
        // The underlying memory abstraction modules and\r
        // drivers are working in fast mode.\r
-    MEMIF_MODE_FAST,\r
+    MEMIF_MODE_FAST\r
 } MemIf_ModeType;\r
 \r
 // Definition of broadcast device ID\r
index e027c8008caf90e547362f180e8bbb55ba477d4a..10afc5c7708dfc75ff468adbdc3a42414632966c 100644 (file)
  * for more details.\r
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
+/* REFERENCE\r
+ *   MemoryMapping.pdf\r
+ *\r
+ * DESCRIPTION\r
+ *\r
+ *\r
+ *
+ */\r
 \r
 \r
 \r
-\r
-\r
-\r
-\r
-/* See MemoryMapping.pdf */\r
-\r
-/* This is module include file */\r
-\r
-/* TODO:This file is crap, crap and crap.\r
- * This assumes that you can define a section for multiple variables.\r
- * GCC can't handle that..and hence cannot be used in the final product\r
- */\r
+#if defined(__GNUC__)\r
+   #define SECTION_RAMLOG      __attribute__ ((section (".ramlog")));\r
+#elif defined(__CWCC__)\r
+   #pragma section RW ".ramlog" ".ramlog"\r
+   #define SECTION_RAMLOG      __declspec(section ".ramlog")\r
+#endif\r
 \r
index 32b3efb40f0b7f53f37b310d627b027c5bbe7156..fc05ff420da2374254e53124fcfac2da9201106e 100644 (file)
@@ -24,8 +24,8 @@
 // Module Id:s from document "List of Basic Sofware Modules" Rev 1.2.1  Part of release 3.0\r
 //\r
 \r
-#ifndef _MODULES_H_\r
-#define _MODULES_H_\r
+#ifndef MODULES_H\r
+#define MODULES_H\r
 \r
 #include "Std_Types.h"\r
 \r
index d707106dd68367214b7057ea5056c103b65ae8fc..02adb67a193a6bc1e49546bf4d48edd7b19b5421 100644 (file)
@@ -147,7 +147,7 @@ void Nm_StateChangeNotification(
   * cyclic scheduling. This function is supplied for the NM coordinator functionality\r
   * (Nm020). However, specific implementation may not need it (Nm093) */\r
 /** @req NM118 */\r
-void Nm_MainFunction();\r
+void Nm_MainFunction(void);\r
 \r
 \r
 #endif /* NM_H_ */\r
index 870c2688d3f87c1c3e6e0a2d2e0d6624860ef02c..131a313a84fac699172e56b250e960d8ede5c56f 100644 (file)
@@ -21,7 +21,7 @@
 typedef enum {\r
        NM_E_OK,\r
        NM_E_NOT_OK,\r
-       NM_E_NOT_EXECUTED,\r
+       NM_E_NOT_EXECUTED\r
 } Nm_ReturnType;\r
 \r
 /** Operational modes of the network management */\r
@@ -29,7 +29,7 @@ typedef enum {
        NM_MODE_BUS_SLEEP,\r
        NM_MODE_PREPARE_BUS_SLEEP,\r
        NM_MODE_SYNCHRONIZE,\r
-       NM_MODE_NETWORK,\r
+       NM_MODE_NETWORK\r
 } Nm_ModeType;\r
 \r
 /** States of the network management state machine */\r
@@ -40,15 +40,15 @@ typedef enum {
        NM_STATE_READY_SLEEP,\r
        NM_STATE_NORMAL_OPERATION,\r
        NM_STATE_REPEAT_MESSAGE,\r
-       NM_STATE_SYNCHRONIZE,\r
+       NM_STATE_SYNCHRONIZE\r
 } Nm_StateType;\r
 \r
 /** BusNm Type */\r
 typedef enum {\r
-       NM_BUSNM_CANNM,\r
-       NM_BUSNM_FRNM,\r
-       NM_BUSNM_LINNM,\r
-       NM_BUSNM_UNDEF = 0xFF,\r
+       NM_BUSNM_CANNM  = 0,\r
+       NM_BUSNM_FRNM   = 1,\r
+       NM_BUSNM_LINNM  = 2,\r
+       NM_BUSNM_UNDEF  = 0xFF\r
 } Nm_BusNmType;\r
 \r
 \r
index 2cd269a1c4e050c8f4d6d33504fa91599aa926d3..52a935e72b3bca3bafc5e550a9d1e9309fcf86c2 100644 (file)
@@ -100,24 +100,24 @@ void NvM_Init( void );    /** @req NVM447 */
 void NvM_ReadAll( void );      /** @req NVM460 */\r
 void NvM_WriteAll( void );     /** @req NVM461 */\r
 void NvM_CancelWriteAll( void );       /** @req NVM458 */\r
-void NvM_GetErrorStatus( NvM_BlockIdType BlockId, uint8 *RequestResultPtr );   /** @req NVM451 */\r
+void NvM_GetErrorStatus( NvM_BlockIdType blockId, uint8 *requestResultPtr );   /** @req NVM451 */\r
 \r
 #if (NVM_SET_RAM_BLOCK_STATUS_API == STD_ON)\r
-void Nvm_SetRamBlockStatus( NvM_BlockIdType BlockId, boolean BlockChanged );   /** @req NVM453 */\r
+void Nvm_SetRamBlockStatus( NvM_BlockIdType blockId, boolean blockChanged );   /** @req NVM453 */\r
 #endif\r
 \r
 #if (NVM_API_CONFIG_CLASS > NVM_API_CONFIG_CLASS_1)\r
-void NvM_SetDataIndex( NvM_BlockIdType BlockId, uint8 DataIndex );     /** @req NVM448 */\r
-void NvM_GetDataIndex( NvM_BlockIdType BlockId, uint8 *DataIndexPtr ); /** @req NVM449 */\r
-void Nvm_ReadBlock( NvM_BlockIdType BlockId, uint8 *NvM_DstPtr );      /** @req NVM454 */\r
-void NvM_WriteBlock( NvM_BlockIdType BlockId, const uint8 *NvM_SrcPtr );       /** @req NVM455 */\r
-void Nvm_RestoreBlockDefaults( NvM_BlockIdType BlockId, uint8 *NvM_DstPtr );   /** @req NVM456 */\r
+void NvM_SetDataIndex( NvM_BlockIdType blockId, uint8 dataIndex );     /** @req NVM448 */\r
+void NvM_GetDataIndex( NvM_BlockIdType blockId, uint8 *dataIndexPtr ); /** @req NVM449 */\r
+void Nvm_ReadBlock( NvM_BlockIdType blockId, uint8 *dstPtr );  /** @req NVM454 */\r
+void NvM_WriteBlock( NvM_BlockIdType blockId, const uint8 *srcPtr );   /** @req NVM455 */\r
+void Nvm_RestoreBlockDefaults( NvM_BlockIdType blockId, uint8 *dstPtr );       /** @req NVM456 */\r
 #endif\r
 \r
 #if (NVM_API_CONFIG_CLASS > NVM_API_CONFIG_CLASS_2)\r
-void NvM_SetBlockProtection( NvM_BlockIdType BlockId, boolean ProtectionEnabled );     /** @req NVM450 */\r
-void NvM_EraseNvBlock( NvM_BlockIdType BlockId );      /** @req NVM457 */\r
-void NvM_InvalidateNvBlock( NvM_BlockIdType BlockId ); /** @req NVM459 */\r
+void NvM_SetBlockProtection( NvM_BlockIdType blockId, boolean protectionEnabled );     /** @req NVM450 */\r
+void NvM_EraseNvBlock( NvM_BlockIdType blockId );      /** @req NVM457 */\r
+void NvM_InvalidateNvBlock( NvM_BlockIdType blockId ); /** @req NVM459 */\r
 #endif\r
 \r
 #endif /*NVM_H_*/\r
index ef2e8768bcf8ea683bc197aadc7879b77ce3f061..001e804c447635a376be60fb852a7aead9b8892d 100644 (file)
 \r
 #include "NvM_Types.h"\r
 \r
-typedef enum {\r
-       NVM_API_CONFIG_CLASS_1,\r
-       NVM_API_CONFIG_CLASS_2,\r
-       NVM_API_CONFIG_CLASS_3\r
-} NvM_ApiConfigClassType;      /** @req NVM491 */\r
+/* NvM_ApiConfigClassType */   /** @req NVM491 */\r
+#define NVM_API_CONFIG_CLASS_1 0\r
+#define NVM_API_CONFIG_CLASS_2 1\r
+#define NVM_API_CONFIG_CLASS_3 2\r
 \r
 typedef enum {\r
        NVM_CRC16,\r
@@ -54,10 +53,12 @@ typedef struct {
        // The rest of the parameters is realized in NvM_Cfg.h\r
 } NvM_CommonType;\r
 \r
+#if 0  // Currently not used\r
 typedef struct {\r
 //     ???                     EaRef;  // TODO: Check this\r
 //     ???                     FeeRef; // TODO: Check this\r
 } NvM_TargetBlockReferenceType;\r
+#endif\r
 \r
 typedef struct {\r
        // NVRAM block global settings\r
@@ -90,7 +91,9 @@ typedef struct {
        NvM_InitBlockCallbackFunctionType       InitBlockCallback;              /** @req NVM116 */\r
 \r
        // Containers\r
+#if 0  // Currently not used\r
        NvM_TargetBlockReferenceType            TargetBlockReference;   /** @req NVM486 */\r
+#endif\r
 } NvM_BlockDescriptorType;     /** @req NVM061 */\r
 \r
 typedef struct {\r
index 3435e10cdf8bedbc95a337e5ad46aa5fde8eb37f..a5ac7c0bf5226cee03aa3f021a5b56072def211b 100644 (file)
 #include "MemMap.h"\r
 #include "Cpu.h"\r
 \r
+typedef uint8 StatusType;\r
+\r
+#define E_OS_ACCESS (StatusType)1               /**< STD OSEK */\r
+#define        E_OS_CALLEVEL (StatusType)2             /**< STD OSEK */\r
+#define        E_OS_ID (StatusType)3                   /**< STD OSEK */\r
+#define        E_OS_LIMIT (StatusType)4                /**< STD OSEK */\r
+#define        E_OS_NOFUNC (StatusType)5               /**< STD OSEK */\r
+#define        E_OS_RESOURCE (StatusType)6             /**< STD OSEK */\r
+#define        E_OS_STATE (StatusType)7                /**< STD OSEK */\r
+#define        E_OS_VALUE (StatusType)8                /**< STD OSEK */\r
+\r
+#define        E_OS_SERVICEID (StatusType)9                /**< AUTOSAR, see 7.10 */\r
+#define        E_OS_RATE (StatusType)10                    /**< AUTOSAR, see 7.10 */\r
+#define        E_OS_ILLEGAL_ADDRESS (StatusType)11         /**< AUTOSAR, see 7.10 */\r
+#define        E_OS_MISSINGEND (StatusType)12              /**< AUTOSAR, see 7.10 */\r
+#define        E_OS_DISABLEDINT (StatusType)13             /**< AUTOSAR, see 7.10 */\r
+#define        E_OS_STACKFAULT (StatusType)14              /**< AUTOSAR, see 7.10 */\r
+#define        E_OS_PROTECTION_MEMORY (StatusType)15       /**< AUTOSAR, see 7.10 */\r
+#define        E_OS_PROTECTION_TIME (StatusType)16         /**< AUTOSAR, see 7.10 */\r
+#define        E_OS_PROTECTION_LOCKED (StatusType)17       /**< AUTOSAR, see 7.10 */\r
+#define        E_OS_PROTECTION_EXCEPTION (StatusType)18    /**< AUTOSAR, see 7.10 */\r
+#define        E_OS_PROTECTION_RATE (StatusType)19          /**< AUTOSAR, see 7.10 */\r
+\r
+#define E_COM_ID 255 // TODO: var ska E_COM_ID vara?"\r
+\r
+\r
 typedef uint32_t               EventMaskType;\r
 typedef EventMaskType *        EventMaskRefType;\r
 typedef uint16_t               TaskType;\r
@@ -37,7 +63,7 @@ typedef enum {
        TASK_STATE_WAITING,\r
        TASK_STATE_READY,\r
        TASK_STATE_SUSPENDED,\r
-       TASK_STATE_RUNNING,\r
+       TASK_STATE_RUNNING\r
 } TaskStateType;\r
 \r
 #define INVALID_TASK   0xdeadU\r
@@ -46,13 +72,28 @@ typedef TaskStateType *TaskStateRefType;
 \r
 /* FIXME: OSMEMORY_IS__ , see 8.2*/\r
 \r
+#define OSMEMORY_IS_READABLE(_access)\r
+#define OSMEMORY_IS_WRITEABLE(_access)\r
+#define OSMEMORY_IS_EXECUTABLE(_access)\r
+#define OSMEMORY_IS_STACKSPACE(_access)\r
+\r
 #define OSDEFAULTAPPMODE  1\r
 \r
 #define INVALID_OSAPPLICATION (-1)\r
 \r
 /* TODO, I have no idea what this should be*/\r
+#if (OS_USE_APPLICATIONS == STD_ON)\r
 typedef sint32 ApplicationType;\r
 \r
+typedef enum {\r
+       APPLICATION_ACCESSIBLE,\r
+       APPLICATION_RESTARTING,\r
+       APPLICATION_TERMINATED\r
+} ApplicationStateType;\r
+\r
+typedef ApplicationStateType *ApplicationStateRefType;\r
+#endif\r
+\r
 /* See oil config for defines */\r
 typedef sint32 AppModeType;\r
 \r
@@ -125,6 +166,8 @@ typedef  void * TrustedFunctionParameterRefType;
 #define INVALID_ISR            ((sint16)(-1))\r
 typedef        sint16 ISRType;\r
 \r
+#define APP_NO_OWNER   (-1UL)\r
+\r
 typedef void * MemoryStartAddressType;\r
 typedef uint32 MemorySizeType;\r
 \r
@@ -141,7 +184,6 @@ StatusType GetEvent( TaskType TaskId, EventMaskRefType Mask);
 void InitOS( void );\r
 void StartOS( AppModeType Mode );\r
 \r
-ApplicationType GetApplicationID( void );\r
 ISRType GetISRID( void );\r
 StatusType GetActiveApplicationMode( AppModeType* mode);\r
 \r
@@ -219,6 +261,9 @@ static inline void ResumeOSInterrupts( void ) {
 /*\r
  * Class 2,3 and 4 API\r
  */\r
+\r
+#if (OS_USE_APPLICATIONS == STD_ON)\r
+\r
 ApplicationType GetApplicationID( void );\r
 AccessType     CheckISRMemoryAccess(   ISRType ISRID,\r
                                                                        MemoryStartAddressType Address,\r
@@ -228,8 +273,17 @@ AccessType         CheckTaskMemoryAccess(  TaskType TaskID,
                                                                        MemoryStartAddressType Address,\r
                                                                        MemorySizeType Size );\r
 \r
+ObjectAccessType CheckObjectAccess( ApplicationType ApplId,\r
+                                                                       ObjectTypeType ObjectType,\r
+                                                                       uint32_t objectId );\r
+ApplicationType CheckObjectOwnership( ObjectTypeType ObjectType,\r
+                                                                       uint32_t objectId );\r
+StatusType TerminateApplication(  ApplicationType Application, RestartType RestartOption );\r
+StatusType AllowAccess( void );\r
+StatusType GetApplicationState(   ApplicationType Application,  ApplicationStateRefType Value );\r
 StatusType     CallTrustedFunction(    TrustedFunctionIndexType FunctionIndex,\r
                                                                        TrustedFunctionParameterRefType FunctionParams );\r
+#endif\r
 \r
 StatusType     GetTaskID(              TaskRefType TaskID );\r
 StatusType     GetTaskState(   TaskType task_id, TaskStateRefType state);\r
@@ -353,8 +407,8 @@ typedef enum {
     OSServiceId_PostTaskHook,\r
     OSServiceId_StartupHook,\r
     OSServiceId_ShutdownHook,\r
-    OSServiceId_GetTaskState,\r
-} OsServiceIdType;;\r
+    OSServiceId_GetTaskState\r
+} OsServiceIdType;\r
 \r
 typedef struct OsError {\r
        OsServiceIdType serviceId;\r
index f7a17861add084c057502d1cb0c615fd627e4ea9..be0871445736d0229fbbd682d4fe6dc90edc1365 100644 (file)
@@ -20,8 +20,8 @@
 \r
 \r
 \r
-#ifndef _PDUR_H_\r
-#define _PDUR_H_\r
+#ifndef PDUR_H\r
+#define PDUR_H\r
 \r
 #define PDUR_VENDOR_ID                 1\r
 #define PDUR_AR_MAJOR_VERSION  2\r
@@ -76,11 +76,11 @@ extern PduR_StateType PduRState;
 // Define macro for state, parameter and data pointer checks.\r
 // TODO Implement data range check if needed.\r
 #define PduR_DevCheck(PduId,PduPtr,ApiId,...) \\r
-       if (PduRState == PDUR_UNINIT || PduRState == PDUR_REDUCED) { \\r
+       if ((PduRState == PDUR_UNINIT) || (PduRState == PDUR_REDUCED)) { \\r
                PDUR_DET_REPORTERROR(MODULE_ID_PDUR, PDUR_INSTANCE_ID, ApiId, PDUR_E_INVALID_REQUEST); \\r
                return __VA_ARGS__; \\r
        } \\r
-       if (PduPtr == 0 && PDUR_DEV_ERROR_DETECT) { \\r
+       if ((PduPtr == 0) && (PDUR_DEV_ERROR_DETECT)) { \\r
                PDUR_DET_REPORTERROR(MODULE_ID_PDUR, PDUR_INSTANCE_ID, ApiId, PDUR_E_DATA_PTR_INVALID); \\r
                return __VA_ARGS__; \\r
        } \\r
@@ -113,22 +113,26 @@ void PduR_ChangeParameterRequest(PduR_ParameterValueType PduParameterValue,
 //#error fail\r
 void PduR_Init(const PduR_PBConfigType* ConfigPtr);\r
 void PduR_GetVersionInfo(Std_VersionInfoType* versionInfo);\r
-uint32 PduR_GetConfigurationId();\r
+uint32 PduR_GetConfigurationId(void);\r
 \r
+void PduR_BufferInc(PduRTxBuffer_type *Buffer, uint8 **ptr);\r
 void PduR_BufferQueue(PduRTxBuffer_type *Buffer, const uint8 * SduPtr);\r
 void PduR_BufferDeQueue(PduRTxBuffer_type *Buffer, uint8 *SduPtr);\r
 void PduR_BufferFlush(PduRTxBuffer_type *Buffer);\r
 uint8 PduR_BufferIsFull(PduRTxBuffer_type *Buffer);\r
+void PduR_LoIfRxIndication(PduIdType PduId, const uint8* SduPtr);\r
+void PduR_LoIfTxConfirmation(PduIdType PduId);\r
+void PduR_LoIfTriggerTransmit(PduIdType PduId, uint8* SduPtr);\r
 \r
 /*\r
  * Macros\r
  */\r
-#define setTxConfP(R) R->PduRDestPdu.TxBufferRef->TxConfP = 1\r
-#define clearTxConfP(R) R->PduRDestPdu.TxBufferRef->TxConfP = 0\r
+#define setTxConfP(R) (R->PduRDestPdu.TxBufferRef->TxConfP = 1)\r
+#define clearTxConfP(R) (R->PduRDestPdu.TxBufferRef->TxConfP = 0)\r
 \r
 #endif\r
 \r
 extern PduR_FctPtrType PduR_StdCanFctPtrs;\r
 extern PduR_FctPtrType PduR_StdLinFctPtrs;\r
 \r
-#endif /* _PDUR_H_ */\r
+#endif /* PDUR_H */\r
index da37001ad2af01706a907ff88301cd1bd91acce7..3c3e96a057dbbcf0d2256db4d9084e410855dd46 100644 (file)
@@ -27,7 +27,7 @@
 \r
 #if (PDUR_ZERO_COST_OPERATION == STD_OFF)\r
 \r
-       void PduR_CanIfRxIndication (PduIdType CanRxPduId, const uint8 *CanSudPtr );\r
+       void PduR_CanIfRxIndication (PduIdType CanRxPduId, const uint8 *CanSduPtr );\r
        void PduR_CanIfTxConfirmation(PduIdType CanTxPduId);\r
 \r
 #else // Zero cost operation active\r
index 1b2873cb8f60ae1a715c1ce342c1e161fd0ff00b..309692a8482717a785ab1665d02228f1a1864167 100644 (file)
@@ -34,7 +34,7 @@
 \r
        #else\r
 \r
-               #define PduR_DcmTransmit(... )\r
+               #define PduR_DcmTransmit(... )          E_OK\r
 \r
        #endif\r
 \r
index 977a3bd833217e3ed9b03918da0806a1e1b747d9..515c50640bdb949199b23e5a304ccb254a55fc2d 100644 (file)
@@ -20,8 +20,8 @@
  * Type definitions for PDU Router.\r
  */\r
 \r
-#ifndef _PDUR_TYPES_H\r
-#define _PDUR_TYPES_H\r
+#ifndef PDUR_TYPES_H\r
+#define PDUR_TYPES_H\r
 \r
 #include "ComStack_Types.h"\r
 \r
@@ -47,33 +47,24 @@ typedef enum {
 } PduR_DataProvisionType;\r
 \r
 \r
-/* ################## EXTERNAL STRUCTURES ##################\r
- *\r
- * These structures will be external in final implementation\r
- */\r
-typedef struct {\r
-       const int foo;\r
-} PduR_LConfigType;\r
-\r
-\r
 \r
 \r
 /* ################ NEW DEFINITIONS ################### */\r
 typedef struct {\r
-       Std_ReturnType (*TargetIndicationFctPtr)(PduIdType, const uint8*); /**< Pointer to target function in layer above PDU router. */\r
-       Std_ReturnType (*TargetTransmitFctPtr)(PduIdType, const PduInfoType*); /**< Pointer to target function below PDU router. */\r
+       Std_ReturnType (*TargetIndicationFctPtr)(PduIdType pduId, const uint8* data); /**< Pointer to target function in layer above PDU router. */\r
+       Std_ReturnType (*TargetTransmitFctPtr)(PduIdType pduId, const PduInfoType* pduInfo); /**< Pointer to target function below PDU router. */\r
 \r
 \r
-       void (*TargetConfirmationFctPtr)(PduIdType);\r
+       void (*TargetConfirmationFctPtr)(PduIdType pduId);\r
 \r
        /**\r
         * Target function for trigger transmit requests from the interface modules, e.g. Com_TriggerTransmit. Only\r
         * needed if gateway mode is not used, that is, if .DataProvision is set to PDUR_NO_PROVISION.\r
         */\r
-       Std_ReturnType (*TargetTriggerTransmitFctPtr)(PduIdType, uint8*);\r
+       Std_ReturnType (*TargetTriggerTransmitFctPtr)(PduIdType pduId, uint8* data);\r
 \r
 \r
-       Std_ReturnType (*TargetGatewayFctPtr)(PduIdType, const PduInfoType*);\r
+       Std_ReturnType (*TargetGatewayFctPtr)(PduIdType pduId, const PduInfoType* pduInfo);\r
 \r
 } PduR_FctPtrType;\r
 \r
@@ -81,7 +72,7 @@ typedef struct {
        /*\r
         * Not part of autosar standard. Added by ArcCore.\r
         */\r
-       int BufferId;\r
+       uint16 BufferId;\r
        PduR_DataProvisionType BufferType;\r
        //uint8 SduLength;\r
        uint8 *Last;\r
index dcfbab78a21077e02c808e69208d44fb47887c7b..7c3f018919dfe17e3266c48b44b5494772565689 100644 (file)
  * General platform type definitions.\r
  */\r
 \r
-#ifndef _PLATFORM_TYPES_H_\r
-#define _PLATFORM_TYPES_H_\r
+#include <stdbool.h>\r
+\r
+#ifndef PLATFORM_TYPES_H\r
+#define PLATFORM_TYPES_H\r
 \r
 #define CPU_TYPE            CPU_TYPE_32 \r
 #define CPU_BIT_ORDER       MSB_FIRST \r
 #define CPU_BYTE_ORDER      HIGH_BYTE_FIRST\r
 \r
-#if !defined(FALSE)\r
-#define FALSE          0\r
-#define TRUE           1\r
-#endif\r
+#define FALSE          (boolean)false\r
+#define TRUE           (boolean)true\r
 \r
-typedef unsigned long       boolean;         \r
+//typedef unsigned long       boolean;\r
+typedef _Bool      boolean;\r
 typedef signed char         sint8;        \r
 typedef unsigned char       uint8;        \r
 typedef signed short        sint16;       \r
 typedef unsigned short      uint16;       \r
 typedef signed long         sint32;       \r
-typedef unsigned long       uint32;    \r
+typedef unsigned long       uint32;\r
 typedef unsigned long long  uint64;\r
 typedef unsigned long       uint8_least;  \r
 typedef unsigned long       uint16_least; \r
index 23a5538f63d348796883c1060f8dd5b83fa9c655..def82e4fac201ea6d012c4d4e3575cc62591ceb7 100644 (file)
@@ -34,8 +34,7 @@
 #include "Port_Cfg.h" /** @req PORT130 */
 
 #if (PORT_VERSION_INFO_API == STD_ON)
-void
-Port_GetVersionInfo(Std_VersionInfoType *versionInfo);
+void Port_GetVersionInfo(Std_VersionInfoType *versionInfo);
 #endif 
 
 /** @name Error Codes */
@@ -75,17 +74,16 @@ typedef uint8 Port_PinModeType;
 typedef uint32 Port_PinModeType;
 #endif
 
-void
-Port_Init(const Port_ConfigType *configType);
-#if ( PORT_PIN_DIRECTION_CHANGES_ALLOWED == STD_ON )
-void
-Port_SetPinDirection(Port_PinType pin, Port_PinDirectionType direction);
+void Port_Init(const Port_ConfigType *configType);
+
+#if ( PORT_SET_PIN_DIRECTION_API == STD_ON )
+void Port_SetPinDirection(Port_PinType pin, Port_PinDirectionType direction);
 #endif
-void
-Port_RefreshPortDirection(void);
+
+void Port_RefreshPortDirection(void);
+
 #if (PORT_SET_PIN_MODE_API == STD_ON)
-void
-Port_SetPinMode(Port_PinType Pin, Port_PinModeType Mode);
+void Port_SetPinMode(Port_PinType Pin, Port_PinModeType Mode);
 #endif
 
 #endif /*PORT_H_*/
similarity index 79%
rename from communication/Com/Com_TestData.h
rename to include/Rte_Main.h
index 3f07bc9eb0fceec5a9586843ec2d6c5245be4956..a88fed53a6e38403a7cc45725584738bdfcdac77 100644 (file)
  * for more details.\r
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
+#ifndef RTE_MAIN_H_\r
+#define RTE_MAIN_H_\r
 \r
+Std_ReturnType Rte_Start( void );\r
+Std_ReturnType Rte_Stop( void );\r
 \r
-\r
-\r
-\r
-\r
-\r
-#ifndef COM_TESTDATA_H_\r
-#define COM_TESTDATA_H_\r
-\r
-extern Com_ConfigType ComConfig_TEST;\r
-\r
-extern const PduR_PBConfigType PduRConfigData_TEST[];\r
-\r
-#endif /* COM_TESTDATA_H_ */\r
+#endif /*RTE_MAIN_H_*/\r
index fe5a70fdb32dcfeaf2a499654003f3766b517709..6019dc1c9f1a7eba0bba2eef7f06257ff469110c 100644 (file)
@@ -21,8 +21,8 @@
  *  Definitions of General types.\r
  */\r
 \r
-#ifndef _STD_TYPES_H\r
-#define _STD_TYPES_H\r
+#ifndef STD_TYPES_H\r
+#define STD_TYPES_H\r
 \r
 // Autosar include files....\r
 // TODO: we haven't really defined the autosar types yet.\r
@@ -33,6 +33,7 @@
 #include "Compiler.h"\r
 \r
 #ifndef        NULL\r
+//lint -esym(960,20.2) // PC-Lint LINT EXCEPTION\r
 #define        NULL    0\r
 #endif\r
 \r
@@ -60,72 +61,35 @@ typedef struct {
 #define STD_GET_VERSION (_major,_minor,_patch) (_major * 10000 + _minor * 100 + _patch)\r
 \r
 /** Create Std_VersionInfoType */\r
+// PC-Lint Exception MISRA rule 19.12\r
+//lint -save -esym(960,19.12)\r
 #define STD_GET_VERSION_INFO(_vi,_module) \\r
-       ((_vi)->vendorID =  _module ## _VENDOR_ID);\\r
-       ((_vi)->moduleID = _module ## _MODULE_ID);\\r
-       ((_vi)->sw_major_version = _module ## _SW_MAJOR_VERSION);\\r
-       ((_vi)->sw_minor_version =  _module ## _SW_MINOR_VERSION);\\r
-       ((_vi)->sw_patch_version =  _module ## _SW_PATCH_VERSION);\\r
-       ((_vi)->ar_major_version =  _module ## _AR_MAJOR_VERSION);\\r
-       ((_vi)->ar_minor_version =  _module ## _AR_MINOR_VERSION);\\r
-       ((_vi)->ar_patch_version =  _module ## _AR_PATCH_VERSION);\r
-\r
-\r
-// TODO: Move to OSEK implementation, See 8.2 in SWS_StandardTypes\r
-\r
-#define STATUSTYPEDEFINED\r
-typedef enum {\r
-       E_OK = 0,\r
-       E_OS_ACCESS = 1,               /**< STD OSEK */\r
-       E_OS_CALLEVEL = 2,             /**< STD OSEK */\r
-       E_OS_ID = 3,                   /**< STD OSEK */\r
-       E_OS_LIMIT = 4,                /**< STD OSEK */\r
-       E_OS_NOFUNC = 5,               /**< STD OSEK */\r
-       E_OS_RESOURCE = 6,             /**< STD OSEK */\r
-       E_OS_STATE = 7,                /**< STD OSEK */\r
-       E_OS_VALUE = 8,                /**< STD OSEK */\r
-\r
-       E_OS_SERVICEID,                /**< AUTOSAR, see 7.10 */\r
-       E_OS_RATE ,                    /**< AUTOSAR, see 7.10 */\r
-       E_OS_ILLEGAL_ADDRESS ,         /**< AUTOSAR, see 7.10 */\r
-       E_OS_MISSINGEND ,              /**< AUTOSAR, see 7.10 */\r
-       E_OS_DISABLEDINT ,             /**< AUTOSAR, see 7.10 */\r
-       E_OS_STACKFAULT ,              /**< AUTOSAR, see 7.10 */\r
-       E_OS_PROTECTION_MEMORY ,       /**< AUTOSAR, see 7.10 */\r
-       E_OS_PROTECTION_TIME ,         /**< AUTOSAR, see 7.10 */\r
-       E_OS_PROTECTION_LOCKED ,       /**< AUTOSAR, see 7.10 */\r
-       E_OS_PROTECTION_EXCEPTION ,    /**< AUTOSAR, see 7.10 */\r
-       E_OS_PROTECTION_RATE,          /**< AUTOSAR, see 7.10 */\r
-\r
-       /* COM.. TODO: move ?? */\r
-       E_COM_ID,\r
-\r
-\r
-       /** Implementation specific */\r
-       E_OS_SYS_APA,\r
-\r
-       E_NOT_OK,\r
-} StatusType;\r
-\r
-typedef uint8 Std_ReturnType;\r
+       if(_vi != NULL) {\\r
+               ((_vi)->vendorID =  _module ## _VENDOR_ID);\\r
+               ((_vi)->moduleID = _module ## _MODULE_ID);\\r
+               ((_vi)->sw_major_version = _module ## _SW_MAJOR_VERSION);\\r
+               ((_vi)->sw_minor_version =  _module ## _SW_MINOR_VERSION);\\r
+               ((_vi)->sw_patch_version =  _module ## _SW_PATCH_VERSION);\\r
+               ((_vi)->ar_major_version =  _module ## _AR_MAJOR_VERSION);\\r
+               ((_vi)->ar_minor_version =  _module ## _AR_MINOR_VERSION);\\r
+               ((_vi)->ar_patch_version =  _module ## _AR_PATCH_VERSION);\\r
+       }\r
+//lint -restore\r
 \r
 \r
-#ifndef STATUSTYPEDEFINED\r
-#define STATUSTYPEDEFINED\r
-#define E_OK                   0\r
-typedef unsigned char StatusType;\r
-#endif\r
-\r
-#define E_NOT_OK                               1\r
+typedef uint8 Std_ReturnType;\r
 \r
-#define E_NO_DTC_AVAILABLE             2\r
-#define E_SESSION_NOT_ALLOWED  4\r
-#define E_PROTOCOL_NOT_ALLOWED 5\r
-#define E_REQUEST_NOT_ACCEPTED 8\r
-#define E_REQUEST_ENV_NOK              9\r
-#define E_PENDING                              10\r
-#define E_COMPARE_KEY_FAILED   11\r
-#define E_FORCE_RCRRP                  12\r
+#define E_OK                                   (Std_ReturnType)0\r
+#define E_NOT_OK                               (Std_ReturnType)1\r
+\r
+#define E_NO_DTC_AVAILABLE             (Std_ReturnType)2\r
+#define E_SESSION_NOT_ALLOWED  (Std_ReturnType)4\r
+#define E_PROTOCOL_NOT_ALLOWED (Std_ReturnType)5\r
+#define E_REQUEST_NOT_ACCEPTED (Std_ReturnType)8\r
+#define E_REQUEST_ENV_NOK              (Std_ReturnType)9\r
+#define E_PENDING                              (Std_ReturnType)10\r
+#define E_COMPARE_KEY_FAILED   (Std_ReturnType)11\r
+#define E_FORCE_RCRRP                  (Std_ReturnType)12\r
 \r
 #define STD_HIGH               0x01\r
 #define STD_LOW                        0x00\r
similarity index 62%
rename from system/WdgM/WdgM.h
rename to include/WdgIf.h
index 9a0a63cfb90756c21fa3f4ee1c3024bd7cdac4eb..438da2c54aff95c12deba0d7e95fa4bfc4b2218f 100644 (file)
  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
  * for more details.\r
- * -------------------------------- Arctic Core ------------------------------*/\r
-\r
-\r
+ * -------------------------------- Arctic Core ------------------------------\r
+ * WdgIf.h\r
+ *\r
+ *  Created on: 22 feb 2010\r
+ *      Author: Fredrik\r
+ */\r
 \r
+#ifndef WDGIF_H_\r
+#define WDGIF_H_\r
 \r
+#include "Std_Types.h"\r
+#include "WdgIf_Cfg.h"\r
 \r
+#define WDGIF_SETMODE_ID             0x01\r
+#define WDGIF_TRIGGER_ID             0x02\r
 \r
+#define WDGIF_E_PARAM_DEVICE         0x01\r
 \r
+Std_ReturnType WdgIf_SetMode (uint8 DeviceIndex, WdgIf_ModeType Mode);\r
 \r
-#include "WdgM_Cfg.h"\r
+void WdgIf_Trigger (uint8 DeviceIndex);\r
 \r
-Std_ReturnType WdgM_UpdateAliveCounter (WdgM_SupervisedEntityIdType SEid);\r
-Std_ReturnType WdgM_ActivateAliveSupervision (WdgM_SupervisedEntityIdType SEid);\r
-Std_ReturnType WdgM_DeactivateAliveSupervision (WdgM_SupervisedEntityIdType SEid);\r
-void WdgM_Init(const WdgM_ConfigType* ConfigPtr);\r
-void WdgM_MainFunction_AliveSupervision (void);\r
-void WdgM_MainFunction_Trigger (void);\r
+#endif /* WDGIF_H_ */\r
diff --git a/include/WdgIf_Types.h b/include/WdgIf_Types.h
new file mode 100644 (file)
index 0000000..256a186
--- /dev/null
@@ -0,0 +1,41 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------\r
+ * WdgIf_Types.h\r
+ *\r
+ *  Created on: 14 maj 2010\r
+ *      Author: Fredrik\r
+ */\r
+\r
+#ifndef WDGIF_TYPES_H_\r
+#define WDGIF_TYPES_H_\r
+\r
+typedef enum\r
+{\r
+       WDGIF_FAST_MODE,\r
+       WDGIF_OFF_MODE,\r
+       WDGIF_SLOW_MODE\r
+}WdgIf_ModeType;\r
+\r
+typedef void (*Wdg_TriggerLocationPtrType)(void);\r
+typedef Std_ReturnType (*Wdg_SetModeLocationPtrType)(WdgIf_ModeType Mode);\r
+\r
+typedef struct\r
+{\r
+       const uint8 Wdg_Index;\r
+       Wdg_TriggerLocationPtrType Wdg_TriggerLocationPtr;\r
+       Wdg_SetModeLocationPtrType Wdg_SetModeLocationPtr;\r
+}Wdg_GeneralType;\r
+\r
+#endif /* WDGIF_TYPES_H_ */\r
diff --git a/include/WdgM.h b/include/WdgM.h
new file mode 100644 (file)
index 0000000..00e571b
--- /dev/null
@@ -0,0 +1,63 @@
+/* -------------------------------- Arctic Core ------------------------------
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com
+ *
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>
+ *
+ * This source code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published by the
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ * -------------------------------- Arctic Core ------------------------------*/
+
+
+
+
+
+
+#ifndef WDGM_H_
+#define WDGM_H_
+
+#include "Std_Types.h"
+#include "WdgM_Cfg.h"
+
+// API Service ID's
+#define WDGM_INIT_ID                          0x00
+#define WDGM_SETMODE_ID                       0x03
+#define WDGM_UPDATEALIVECOUNTER_ID                       0x04
+#define WDGM_ACTIVATEALIVESUPERVISION_ID      0x05
+#define WDGM_DEACTIVATEALIVESUPERVISION_ID    0x06
+#define WDGM_MAINFUNCTION_TRIGGER_ID          0x06
+#define WDGM_MAINFUNCTION_ALIVESUPERVISION_ID 0x08
+#define WDGM_GETMODE_ID                       0x0b
+#define WDGM_GETALIVESUPERVISIONSTATUS_ID     0x0c
+#define WDGM_GETGLOBALSTATUS_ID               0x0d
+
+
+/** @req WDGM004 **/
+#define WDGM_E_NO_INIT                                 0x10
+#define WDGM_E_PARAM_CONFIG                    0x11
+#define WDGM_E_PARAM_MODE                          0x12
+#define WDGM_E_PARAM_SEID                          0x13
+#define WDGM_E_NULL_POINTER                        0x14
+#define WDGM_E_DISABLE_NOT_ALLOWED          0x15
+#define WDGM_E_DEACTIVATE_NOT_ALLOWED       0x16
+//#define WDGM_E_ALIVE_SUPERVISION          DEM assigned
+//#define WDGM_E_SET_MODE                   DEM assigned
+\r
+Std_ReturnType WdgM_UpdateAliveCounter (WdgM_SupervisedEntityIdType SEid);\r
+Std_ReturnType WdgM_ActivateAliveSupervision (WdgM_SupervisedEntityIdType SEid);\r
+Std_ReturnType WdgM_DeactivateAliveSupervision (WdgM_SupervisedEntityIdType SEid);
+Std_ReturnType WdgM_GetGlobalStatus (WdgM_AliveSupervisionStatusType *Status);
+Std_ReturnType WdgM_GetAliveSupervisionStatus (WdgM_SupervisedEntityIdType SEid, WdgM_AliveSupervisionStatusType *Status);\r
+void WdgM_Init(const WdgM_ConfigType* ConfigPtr);
+void WdgM_DeInit(void);
+Std_ReturnType WdgM_SetMode(WdgM_ModeType Mode);\r
+Std_ReturnType WdgM_GetMode(WdgM_ModeType *Mode);
+void WdgM_MainFunction_AliveSupervision (void);\r
+void WdgM_MainFunction_Trigger (void);\r
+
+#endif /*WDGM_H_*/
index dd5e06609ce07aa875103b72e5dde0c0a932f588..205392e9671fe66124d18a5795600cb7db423ce8 100644 (file)
@@ -38,7 +38,7 @@ const char *Arc_StatusToString(StatusType);
 \r
 void Os_Arc_GetStackInfo( TaskType pid, StackInfoType *s );\r
 \r
-#define OS_STACK_USAGE(_x) ((((_x)->size - (uint32_t)((_x)->usage - (_x)->top))*100)/(_x)->size)\r
+#define OS_STACK_USAGE(_x) ((((_x)->size - (uint32_t)((size_t)(_x)->usage - (size_t)(_x)->top))*100)/(_x)->size)\r
 \r
 // int printf(const char *format, ...);\r
 \r
diff --git a/include/arm/arm_cm3/Adc_ConfigTypes.h b/include/arm/arm_cm3/Adc_ConfigTypes.h
new file mode 100644 (file)
index 0000000..a696a58
--- /dev/null
@@ -0,0 +1,168 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+#ifndef ADC_CONFIGTYPES_H_\r
+#define ADC_CONFIGTYPES_H_\r
+\r
+typedef uint16_t Adc_ValueGroupType;\r
+/* Group definitions. */\r
+\r
+typedef enum\r
+{\r
+  ADC_CH0,\r
+  ADC_CH1,\r
+  ADC_CH2,\r
+  ADC_CH3,\r
+  ADC_CH4,\r
+  ADC_CH5,\r
+  ADC_CH6,\r
+  ADC_CH7,\r
+  ADC_CH8,\r
+  ADC_CH9,\r
+  ADC_CH10,\r
+  ADC_CH11,\r
+  ADC_CH12,\r
+  ADC_CH13,\r
+  ADC_CH14,\r
+  ADC_CH15,\r
+  ADC_NBR_OF_CHANNELS,\r
+}Adc_ChannelType;\r
+\r
+/* Std-type, supplier defined */\r
+typedef enum\r
+{\r
+  ADC_SYSTEM_CLOCK\r
+}Adc_ClockSourceType;\r
+\r
+\r
+/* Std-type, supplier defined */\r
+typedef enum\r
+{\r
+  ADC_SYSTEM_CLOCK_DISABLED,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_1,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_2,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_4,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_6,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_8,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_10,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_12,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_14,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_16,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_18,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_20,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_22,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_24,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_26,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_28,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_30,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_32,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_34,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_36,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_38,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_40,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_42,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_44,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_46,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_48,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_50,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_52,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_54,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_56,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_58,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_60,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_62,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_64,\r
+}Adc_PrescaleType;\r
+\r
+/* Non-standard type */\r
+typedef struct\r
+{\r
+  Adc_ClockSourceType clockSource;\r
+  uint8_t             hwUnitId;\r
+  Adc_PrescaleType    adcPrescale;\r
+}Adc_HWConfigurationType;\r
+\r
+/* Std-type, supplier defined */\r
+typedef enum\r
+{\r
+  ADC_CONVERSION_TIME_2_CLOCKS,\r
+  ADC_CONVERSION_TIME_8_CLOCKS,\r
+  ADC_CONVERSION_TIME_64_CLOCKS,\r
+  ADC_CONVERSION_TIME_128_CLOCKS\r
+}Adc_ConversionTimeType;\r
+\r
+/* Channel definitions, std container */\r
+typedef struct\r
+{\r
+  Adc_ConversionTimeType adcChannelConvTime;\r
+  // NOT SUPPORTED Adc_VoltageSourceType  adcChannelRefVoltSrcLow;\r
+  // NOT SUPPORTED Adc_VoltageSourceType  adcChannelRefVoltSrcHigh;\r
+  // NOT SUPPORTED Adc_ResolutionType     adcChannelResolution;\r
+  // NOT SUPPORTED Adc_CalibrationType    adcChannelCalibrationEnable;\r
+} Adc_ChannelConfigurationType;\r
+\r
+/* Used ?? */\r
+typedef struct\r
+{\r
+  uint8                                notifictionEnable;\r
+  Adc_ValueGroupType * resultBufferPtr;\r
+  Adc_StatusType               groupStatus;\r
+} Adc_GroupStatus;\r
+\r
+\r
+/* Std-type, supplier defined */\r
+typedef enum\r
+{\r
+  ADC_CONV_MODE_DISABLED,\r
+  ADC_CONV_MODE_ONESHOT   = 1,\r
+  ADC_CONV_MODE_CONTINUOUS = 9,\r
+} Adc_GroupConvModeType;\r
+\r
+/* Implementation specific */\r
+typedef struct\r
+{\r
+  // NOT SUPPORTED  Adc_GroupAccessModeType      accessMode;\r
+  Adc_GroupConvModeType        conversionMode;\r
+  Adc_TriggerSourceType        triggerSrc;\r
+  // NOT SUPPORTED  Adc_HwTriggerSignalType      hwTriggerSignal;\r
+  // NOT SUPPORTED  Adc_HwTriggerTimerType       hwTriggerTimer;\r
+  void                         (*groupCallback)(void);\r
+  // NOT SUPPORTED  Adc_StreamBufferModeType     streamBufferMode;\r
+  // NOT SUPPORTED  Adc_StreamNumSampleType      streamNumSamples;\r
+  const Adc_ChannelType        *channelList;\r
+  Adc_ValueGroupType           *resultBuffer;\r
+  // NOT SUPPORTED  Adc_CommandType              *commandBuffer;\r
+  Adc_ChannelType              numberOfChannels;\r
+  Adc_GroupStatus              *status;\r
+  // NOT SUPPORTED  Dma_ChannelType              dmaCommandChannel;\r
+  // NOT SUPPORTED  Dma_ChannelType              dmaResultChannel;\r
+  // NOT SUPPORTED  const struct tcd_t *                  groupDMACommands;\r
+  // NOT SUPPORTED  const struct tcd_t *                  groupDMAResults;\r
+} Adc_GroupDefType;\r
+\r
+/* Non-standard type */\r
+typedef struct\r
+{\r
+  const Adc_HWConfigurationType*      hwConfigPtr;\r
+  const Adc_ChannelConfigurationType* channelConfigPtr;\r
+  const uint16_t                      nbrOfChannels;\r
+  const Adc_GroupDefType*             groupConfigPtr;\r
+  const uint16_t                      nbrOfGroups;\r
+} Adc_ConfigType;\r
+\r
+extern const Adc_ConfigType AdcConfig [];\r
+\r
+\r
+#endif /* ADC_CONFIGTYPES_H_ */\r
diff --git a/include/arm/arm_cm3/Mcu_ConfigTypes.h b/include/arm/arm_cm3/Mcu_ConfigTypes.h
new file mode 100644 (file)
index 0000000..386c506
--- /dev/null
@@ -0,0 +1,82 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+#ifndef MCU_CONFIGTYPES_H_\r
+#define MCU_CONFIGTYPES_H_\r
+\r
+#define RCC_AHBPeriph_DMA1               ((uint32_t)0x00000001)\r
+#define RCC_AHBPeriph_DMA2               ((uint32_t)0x00000002)\r
+#define RCC_AHBPeriph_SRAM               ((uint32_t)0x00000004)\r
+#define RCC_AHBPeriph_FLITF              ((uint32_t)0x00000010)\r
+#define RCC_AHBPeriph_CRC                ((uint32_t)0x00000040)\r
+\r
+#ifndef STM32F10X_CL\r
+ #define RCC_AHBPeriph_FSMC              ((uint32_t)0x00000100)\r
+ #define RCC_AHBPeriph_SDIO              ((uint32_t)0x00000400)\r
+#else\r
+ #define RCC_AHBPeriph_OTG_FS            ((uint32_t)0x00001000)\r
+ #define RCC_AHBPeriph_ETH_MAC           ((uint32_t)0x00004000)\r
+ #define RCC_AHBPeriph_ETH_MAC_Tx        ((uint32_t)0x00008000)\r
+ #define RCC_AHBPeriph_ETH_MAC_Rx        ((uint32_t)0x00010000)\r
+#endif\r
+\r
+#define RCC_APB1Periph_TIM2              ((uint32_t)0x00000001)\r
+#define RCC_APB1Periph_TIM3              ((uint32_t)0x00000002)\r
+#define RCC_APB1Periph_TIM4              ((uint32_t)0x00000004)\r
+#define RCC_APB1Periph_TIM5              ((uint32_t)0x00000008)\r
+#define RCC_APB1Periph_TIM6              ((uint32_t)0x00000010)\r
+#define RCC_APB1Periph_TIM7              ((uint32_t)0x00000020)\r
+#define RCC_APB1Periph_WWDG              ((uint32_t)0x00000800)\r
+#define RCC_APB1Periph_SPI2              ((uint32_t)0x00004000)\r
+#define RCC_APB1Periph_SPI3              ((uint32_t)0x00008000)\r
+#define RCC_APB1Periph_USART2            ((uint32_t)0x00020000)\r
+#define RCC_APB1Periph_USART3            ((uint32_t)0x00040000)\r
+#define RCC_APB1Periph_UART4             ((uint32_t)0x00080000)\r
+#define RCC_APB1Periph_UART5             ((uint32_t)0x00100000)\r
+#define RCC_APB1Periph_I2C1              ((uint32_t)0x00200000)\r
+#define RCC_APB1Periph_I2C2              ((uint32_t)0x00400000)\r
+#define RCC_APB1Periph_USB               ((uint32_t)0x00800000)\r
+#define RCC_APB1Periph_CAN1              ((uint32_t)0x02000000)\r
+#define RCC_APB1Periph_BKP               ((uint32_t)0x08000000)\r
+#define RCC_APB1Periph_PWR               ((uint32_t)0x10000000)\r
+#define RCC_APB1Periph_DAC               ((uint32_t)0x20000000)\r
+#define RCC_APB1Periph_CAN2              ((uint32_t)0x04000000)\r
+\r
+#define RCC_APB2Periph_AFIO              ((uint32_t)0x00000001)\r
+#define RCC_APB2Periph_GPIOA             ((uint32_t)0x00000004)\r
+#define RCC_APB2Periph_GPIOB             ((uint32_t)0x00000008)\r
+#define RCC_APB2Periph_GPIOC             ((uint32_t)0x00000010)\r
+#define RCC_APB2Periph_GPIOD             ((uint32_t)0x00000020)\r
+#define RCC_APB2Periph_GPIOE             ((uint32_t)0x00000040)\r
+#define RCC_APB2Periph_GPIOF             ((uint32_t)0x00000080)\r
+#define RCC_APB2Periph_GPIOG             ((uint32_t)0x00000100)\r
+#define RCC_APB2Periph_ADC1              ((uint32_t)0x00000200)\r
+#define RCC_APB2Periph_ADC2              ((uint32_t)0x00000400)\r
+#define RCC_APB2Periph_TIM1              ((uint32_t)0x00000800)\r
+#define RCC_APB2Periph_SPI1              ((uint32_t)0x00001000)\r
+#define RCC_APB2Periph_TIM8              ((uint32_t)0x00002000)\r
+#define RCC_APB2Periph_USART1            ((uint32_t)0x00004000)\r
+#define RCC_APB2Periph_ADC3              ((uint32_t)0x00008000)\r
+\r
+typedef struct {\r
+       uint32 AHBClocksEnable;\r
+       uint32 APB1ClocksEnable;\r
+       uint32 APB2ClocksEnable;\r
+} Mcu_PerClockConfigType;\r
+\r
+extern const Mcu_PerClockConfigType McuPerClockConfigData;\r
+\r
+\r
+#endif /* MCU_CONFIGTYPES_H_ */\r
diff --git a/include/arm/arm_cm3/Port_ConfigTypes.h b/include/arm/arm_cm3/Port_ConfigTypes.h
new file mode 100644 (file)
index 0000000..f5a4113
--- /dev/null
@@ -0,0 +1,98 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+#ifndef PORT_CONFIGTYPES_H_\r
+#define PORT_CONFIGTYPES_H_\r
+\r
+#define GPIO_INPUT_MODE           (0)\r
+#define GPIO_OUTPUT_10MHz_MODE    (1)\r
+#define GPIO_OUTPUT_2MHz_MODE     (2)\r
+#define GPIO_OUTPUT_50MHz_MODE    (3)\r
+\r
+/* Valid for input modes. */\r
+#define GPIO_ANALOG_INPUT_CNF     (0 << 2)\r
+#define GPIO_FLOATING_INPUT_CNF   (1 << 2)\r
+#define GPIO_INPUT_PULLUP_CNF     (2 << 2)\r
+#define GPIO_RESERVED_CNF         (3 << 2)\r
+\r
+/* Valid for output modes. */\r
+#define GPIO_OUTPUT_PUSHPULL_CNF  (0 << 2)\r
+#define GPIO_OUTPUT_OPENDRAIN_CNF (1 << 2)\r
+#define GPIO_ALT_PUSHPULL_CNF     (2 << 2)\r
+#define GPIO_ALT_OPENDRAIN_CNF    (3 << 2)\r
+\r
+#define GPIO_OUTPUT_LOW           (0)\r
+#define GPIO_OUTPUT_HIGH          (1)\r
+\r
+typedef struct\r
+{\r
+  uint8_t GpioPinCnfMode_0:4;\r
+  uint8_t GpioPinCnfMode_1:4;\r
+  uint8_t GpioPinCnfMode_2:4;\r
+  uint8_t GpioPinCnfMode_3:4;\r
+  uint8_t GpioPinCnfMode_4:4;\r
+  uint8_t GpioPinCnfMode_5:4;\r
+  uint8_t GpioPinCnfMode_6:4;\r
+  uint8_t GpioPinCnfMode_7:4;\r
+  uint8_t GpioPinCnfMode_8:4;\r
+  uint8_t GpioPinCnfMode_9:4;\r
+  uint8_t GpioPinCnfMode_10:4;\r
+  uint8_t GpioPinCnfMode_11:4;\r
+  uint8_t GpioPinCnfMode_12:4;\r
+  uint8_t GpioPinCnfMode_13:4;\r
+  uint8_t GpioPinCnfMode_14:4;\r
+  uint8_t GpioPinCnfMode_15:4;\r
+}GpioPinCnfMode_Type;\r
+\r
+typedef struct\r
+{\r
+  uint8_t GpioPinOutLevel_0:1;\r
+  uint8_t GpioPinOutLevel_1:1;\r
+  uint8_t GpioPinOutLevel_2:1;\r
+  uint8_t GpioPinOutLevel_3:1;\r
+  uint8_t GpioPinOutLevel_4:1;\r
+  uint8_t GpioPinOutLevel_5:1;\r
+  uint8_t GpioPinOutLevel_6:1;\r
+  uint8_t GpioPinOutLevel_7:1;\r
+  uint8_t GpioPinOutLevel_8:1;\r
+  uint8_t GpioPinOutLevel_9:1;\r
+  uint8_t GpioPinOutLevel_10:1;\r
+  uint8_t GpioPinOutLevel_11:1;\r
+  uint8_t GpioPinOutLevel_12:1;\r
+  uint8_t GpioPinOutLevel_13:1;\r
+  uint8_t GpioPinOutLevel_14:1;\r
+  uint8_t GpioPinOutLevel_15:1;\r
+}GpioPinOutLevel_Type;\r
+\r
+/* To be compatible with Port.h */\r
+typedef uint8_t Port_PinType;\r
+\r
+/** Top level configuration container */\r
+typedef struct\r
+{\r
+  /** Total number of pins */\r
+  uint16_t padCnt;\r
+  /** List of pin configurations */\r
+  const GpioPinCnfMode_Type *padConfig;\r
+  const GpioPinOutLevel_Type *outConfig;\r
+  /** Total number of pin default levels */\r
+\r
+  uint16_t remapCount;\r
+  const uint32_t* remaps;\r
+\r
+} Port_ConfigType;\r
+\r
+\r
+#endif /* PORT_CONFIGTYPES_H_ */\r
diff --git a/include/arm/arm_cm3/Pwm_ConfigTypes.h b/include/arm/arm_cm3/Pwm_ConfigTypes.h
new file mode 100644 (file)
index 0000000..249f835
--- /dev/null
@@ -0,0 +1,116 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+#ifndef PWM_CONFIGTYPES_H_\r
+#define PWM_CONFIGTYPES_H_\r
+typedef uint16 Pwm_PeriodType;\r
+\r
+typedef enum {\r
+  PWM_CHANNEL_11 = 0, // TIM1 Channel 1\r
+  PWM_CHANNEL_12,\r
+  PWM_CHANNEL_13,\r
+  PWM_CHANNEL_14,\r
+  PWM_CHANNEL_21,     // TIM2 Channel 1\r
+  PWM_CHANNEL_22,\r
+  PWM_CHANNEL_23,\r
+  PWM_CHANNEL_24,\r
+  PWM_CHANNEL_31,     // TIM3 Channel 1\r
+  PWM_CHANNEL_32,\r
+  PWM_CHANNEL_33,\r
+  PWM_CHANNEL_34,\r
+  PWM_CHANNEL_41,     // TIM4 Channel 1\r
+  PWM_CHANNEL_42,\r
+  PWM_CHANNEL_43,\r
+  PWM_CHANNEL_44,\r
+  PWM_TOTAL_NOF_CHANNELS,\r
+} Pwm_ChannelType;\r
+\r
+typedef enum {\r
+       PWM_CHANNEL_PRESCALER_1=0,\r
+       PWM_CHANNEL_PRESCALER_2,\r
+       PWM_CHANNEL_PRESCALER_3,\r
+       PWM_CHANNEL_PRESCALER_4,\r
+} Pwm_ChannelPrescalerType;\r
+#define DUTY_AND_PERIOD(_duty,_period) .duty = (_duty*_period)>>15, .period = _period\r
+\r
+typedef struct {\r
+       /* Number of duty ticks */\r
+       uint32_t                 duty:32;\r
+       /* Length of period, in ticks */\r
+       uint32_t                 period:32;\r
+       /* Counter */\r
+       uint32_t                 counter:32;\r
+       /* Enable freezing the channel when in debug mode */\r
+       uint32_t                 freezeEnable:1;\r
+       /* Disable output */\r
+       uint32_t                 outputDisable:1;\r
+       /* Select which bus disables the bus\r
+        * TODO: Figure out how this works, i.e. what bus does it refer to? */\r
+       uint32_t                                 outputDisableSelect:2;\r
+       /* Prescale the emios clock some more? */\r
+       Pwm_ChannelPrescalerType prescaler:2;\r
+       /* Prescale the emios clock some more? */\r
+       uint32_t                                 usePrescaler:1;\r
+       /* Whether to use DMA. Currently unsupported */\r
+       uint32_t                                 useDma:1;\r
+       uint32_t                                 reserved_2:1;\r
+       /* Input filter. Ignored in output mode. */\r
+       uint32_t                                 inputFilter:4;\r
+       /* Input filter clock source. Ignored in output mode */\r
+       uint32_t                                 filterClockSelect:1;\r
+       /* Enable interrupts/flags on this channel? Required for DMA as well. */\r
+       uint32_t                                 flagEnable:1;\r
+       uint32_t                                 reserved_3:3;\r
+       /* Trigger a match on channel A */\r
+       uint32_t                                 forceMatchA:1;\r
+       /* Triggers a match on channel B */\r
+       uint32_t                                 forceMatchB:1;\r
+       uint32_t                                 reserved_4:1;\r
+       /* We can use different buses for the counter. Use the internal counter */\r
+       uint32_t                                 busSelect:2;\r
+       /* What edges to flag on? */\r
+       uint32_t                                 edgeSelect:1;\r
+       /* Polarity of the channel */\r
+       uint32_t                                 edgePolarity:1;\r
+       /* EMIOS mode. 0x58 for buffered output PWM */\r
+       uint32_t                                 mode:7;\r
+} Pwm_ChannelRegisterType;\r
+\r
+typedef struct {\r
+       Pwm_ChannelRegisterType r;\r
+       Pwm_ChannelType channel;\r
+} Pwm_ChannelConfigurationType;\r
+\r
+\r
+\r
+// Channel configuration macro.\r
+#define PWM_CHANNEL_CONFIG(_hwchannel, _period, _duty, _prescaler, _polarity) \\r
+    {\\r
+        .channel = _hwchannel,\\r
+        .r = {\\r
+            DUTY_AND_PERIOD(_duty, _period),\\r
+            .freezeEnable = 1,\\r
+            .outputDisable = 0,\\r
+            .usePrescaler = 1,\\r
+            .prescaler = _prescaler,\\r
+            .useDma = 0,\\r
+            .flagEnable = 0, /* See PWM052 */ \\r
+            .busSelect = 3, /* Use the internal counter bus */\\r
+            .edgePolarity = _polarity,\\r
+            .mode = 0\\r
+        }\\r
+    }\r
+\r
+#endif /* PWM_CONFIGTYPES_H_ */\r
index 65136bb551f14e1bb4653614c28cfb3415b1e3b0..79aafa43178e2de72de06c62ba97217e3f2d07bc 100644 (file)
@@ -21,6 +21,7 @@
 #ifndef BIT_H_\r
 #define BIT_H_\r
 \r
+#include <stdint.h>\r
 /**\r
  * @param aPtr         Ptr to an array of unsigned chars.\r
  * @param num  The bit number to get.\r
index 67274e12a1805155d248516caf25bdec2290f1b1..0542bf815bcd30a1937488633c1b23e651fd5d09 100644 (file)
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
 \r
+// PC-Lint Exception to MISRA rule 19.12: stdio ok in debug.h.\r
+//lint -e(829)\r
+\r
 \r
 #ifndef DEBUG_H_\r
 #define DEBUG_H_\r
 \r
-\r
 /**\r
  *\r
  * NOTE!!!!\r
 #endif\r
 \r
 #if defined(USE_LDEBUG_PRINTF)\r
-#define LDEBUG_PRINTF(format,...) printf(format,## __VA_ARGS__ )\r
+#define LDEBUG_PRINTF(format,...)      printf(format,## __VA_ARGS__ )\r
+#define LDEBUG_FPUTS(_str)                     fputs((_str),stdout)\r
 #else\r
 #define LDEBUG_PRINTF(format,...)\r
+#define LDEBUG_FPUTS(_str)\r
 #endif\r
 \r
 \r
index 4d46028f5d9df0eb4c3068051d8b21605d6c7c01..7ec37b601289f2db921536af6e7cefd55a97c82f 100644 (file)
@@ -20,8 +20,8 @@
 \r
 #include "Std_Types.h"\r
 \r
-#define Irq_Save(flags)\r
-#define Irq_Restore(flags)\r
+#define Irq_Save(flags)                ((flags) = 0)           // Dummy assignment to avoid compiler warnings\r
+#define Irq_Restore(flags)     (void)(flags)\r
 \r
 #define Irq_Disable()\r
 #define Irq_Enable()\r
diff --git a/include/hc1x/Adc_ConfigTypes.h b/include/hc1x/Adc_ConfigTypes.h
new file mode 100644 (file)
index 0000000..d920133
--- /dev/null
@@ -0,0 +1,130 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+#ifndef ADC_CONFIGTYPES_H_\r
+#define ADC_CONFIGTYPES_H_\r
+\r
+\r
+typedef uint16_t Adc_ValueGroupType;\r
+\r
+\r
+typedef enum\r
+{\r
+  ADC_CH0,\r
+  ADC_CH1,\r
+  ADC_CH2,\r
+  ADC_CH3,\r
+  ADC_CH4,\r
+  ADC_CH5,\r
+  ADC_CH6,\r
+  ADC_CH7,\r
+  ADC_NOF_CHANNELS,\r
+}Adc_ChannelType;\r
+\r
+/* Std-type, supplier defined */\r
+typedef enum\r
+{\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_2,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_4,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_6,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_8,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_10,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_12,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_14,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_16,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_18,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_20,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_22,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_24,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_26,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_28,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_30,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_32,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_34,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_36,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_38,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_40,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_42,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_44,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_46,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_48,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_50,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_52,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_54,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_56,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_58,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_60,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_62,\r
+  ADC_SYSTEM_CLOCK_DIVIDE_FACTOR_64,\r
+}Adc_PrescaleType;\r
+\r
+/* Std-type, supplier defined */\r
+typedef enum\r
+{\r
+  ADC_CONVERSION_TIME_2_CLOCKS,\r
+  ADC_CONVERSION_TIME_4_CLOCKS,\r
+  ADC_CONVERSION_TIME_8_CLOCKS,\r
+  ADC_CONVERSION_TIME_16_CLOCKS\r
+}Adc_ConversionTimeType;\r
+\r
+\r
+typedef enum\r
+{\r
+       ADC_RESOLUTION_10_BIT,\r
+       ADC_RESOLUTION_8_BIT,\r
+}Adc_ResolutionType;\r
+\r
+typedef struct\r
+{\r
+  uint8                                notifictionEnable;\r
+  Adc_ValueGroupType * resultBufferPtr;\r
+  Adc_StatusType               groupStatus;\r
+} Adc_GroupStatus;\r
+\r
+\r
+/* Std-type, supplier defined */\r
+typedef enum\r
+{\r
+  ADC_CONV_MODE_DISABLED,\r
+  ADC_CONV_MODE_ONESHOT   = 1,\r
+  ADC_CONV_MODE_CONTINUOUS = 9,\r
+} Adc_GroupConvModeType;\r
+\r
+typedef struct\r
+{\r
+  Adc_GroupConvModeType        conversionMode;\r
+  Adc_TriggerSourceType        triggerSrc;\r
+  void                         (*groupCallback)(void);\r
+  const Adc_ChannelType        *channelList;\r
+  Adc_ValueGroupType           *resultBuffer;\r
+  Adc_ChannelType              numberOfChannels;\r
+  Adc_GroupStatus              *status;\r
+} Adc_GroupDefType;\r
+\r
+typedef struct\r
+{\r
+  Adc_ConversionTimeType       convTime;\r
+  Adc_ResolutionType           resolution;\r
+  Adc_PrescaleType    adcPrescale;\r
+}Adc_HWConfigurationType;\r
+\r
+typedef struct\r
+{\r
+  const Adc_HWConfigurationType*      hwConfigPtr;\r
+  const Adc_GroupDefType*             groupConfigPtr;\r
+} Adc_ConfigType;\r
+\r
+extern const Adc_ConfigType AdcConfig[];\r
+#endif /* ADC_CONFIGTYPES_H_ */\r
index ecee85bd75811f65de68f783658d9cc61e47c846..785156b1bae7f54dfe57bcd8ae3864a266eed79a 100644 (file)
 #ifndef IRQ_H_\r
 #define IRQ_H_\r
 \r
+#include <stdint.h>\r
+#include "os.h"\r
 #include "irq_types.h"\r
 #include "bit.h"\r
 \r
 typedef void ( * func_t)(void);\r
 \r
-extern uint8_t Irq_PriorityTable[];\r
-extern uint8_t Irq_IsrTypeTable[];\r
 \r
-#define ISR_TYPE_1                     0\r
-#define ISR_TYPE_2                     1\r
 \r
-typedef _Bool IsrType;\r
+#if (OS_SC2==STD_ON) || (OS_SC4==STD_ON)\r
+#define HAVE_SC2_SC4(_value) _value\r
+#else\r
+#define HAVE_SC2_SC4(_value)\r
+#endif\r
+\r
+#define IRQ_NAME(_vector)              IrqVector_ ## _vector\r
+\r
+#define IRQ_DECL_ISR2_TIMING_PROT(     \\r
+                               _name, \\r
+                               _max_all_interrupt_lock_time, \\r
+                               _exeution_budget, \\r
+                               _os_interrupt_lock_budget, \\r
+                               _time_frame, \\r
+                               _resource_lock_list )\r
+\r
+\r
+#define IRQ_DECL_ISR1(_name, _vector, _core, _prio, _entry  ) \\r
+               const OsIsrConstType Irq_VectorConst_ ## _vector = {    \\r
+               .name = _name,                                          \\r
+               .vector = (_vector),                            \\r
+               .core = (_core),                                        \\r
+               .prio = (_prio),                                        \\r
+               .entry = (_entry),                                      \\r
+               .type = ISR_TYPE_1,                                     \\r
+       }\r
+\r
+\r
+#define IRQ_DECL_ISR2(_name,_vector, _core, _prio, _entry, _resource_mask, _timing_prot) \\r
+               const OsIsrConstType Irq_VectorConst_ ## _vector = {    \\r
+               .name = _name,                                          \\r
+               .vector = (_vector),                            \\r
+               .core = (_core),                                        \\r
+               .prio = (_prio),                                        \\r
+               .entry = (_entry),                                      \\r
+               .type = ISR_TYPE_2,                                     \\r
+               .resourceMask = (_resource_mask),       \\r
+               .timingProtPtr = (_timing_prot)     \\r
+       }\r
+\r
+\r
+#define IRQ_ATTACH(_vector)    Irq_Attach(&Irq_VectorConst_ ## _vector)\r
+\r
+/* Example:\r
+ * IRQ_DECL_ISR2_RESOURCE(res2, RES_ID_2, 500000U );                           // Max 50us\r
+ * IRQ_DECL_ISR2_TIMING_PROT(timing,0,0,0,0,res2);\r
+ * IRQ_DECL_ISR2("MyIsr",10,10,MyIsr,HAVE_SC2_SC4(RES_ID_1),HAVE_SC2_SC4(timing));\r
+ *
+ */\r
+\r
+// typedef _Bool IsrType;\r
 \r
 /**\r
  * Init the interrupt controller\r
@@ -36,8 +84,6 @@ typedef _Bool IsrType;
 void Irq_Init( void );\r
 \r
 \r
-\r
-\r
 #if defined(CFG_HC1X)\r
 /**\r
  *\r
@@ -59,6 +105,11 @@ void *Irq_Entry( uint8_t irq_nr, void *stack );
  */\r
 void *Irq_Entry( void *stack_p );\r
 #endif\r
+\r
+//ISRType Irq_Attach( const OsIsrConstType *isrPtr );\r
+ISRType Irq_Attach( int vector );\r
+ISRType Irq_Attach2( const OsIsrConstType * );\r
+\r
 /**\r
  * Attach an ISR type 1 to the interrupt controller.\r
  *\r
@@ -90,18 +141,20 @@ void Irq_GenerateSoftInt( IrqType vector );
  */\r
 uint8_t Irq_GetCurrentPriority( Cpu_t cpu);\r
 \r
-\r
 /**\r
  * Set the priority in the interrupt controller for vector\r
  */\r
 void Irq_SetPriority( Cpu_t cpu,  IrqType vector, uint8_t prio );\r
 \r
+void Irq_EnableVector( int16_t vector, int priority, int core );\r
+\r
 /**\r
  *\r
  * @param vector\r
  * @param type\r
  */\r
-static inline void Irq_SetIsrType( IrqType vector, IsrType type ) {\r
+#if 0\r
+static inline void Irq_SetIsrType( IrqType vector, int8_t type ) {\r
        Irq_IsrTypeTable[vector] = type;\r
 }\r
 \r
@@ -111,9 +164,10 @@ static inline void Irq_SetIsrType( IrqType vector, IsrType type ) {
  * @return 0 - Isr1\r
  *         1 - Isr2\r
  */\r
-static inline IsrType Irq_GetIsrType( IrqType vector )  {\r
+static inline int8_t Irq_GetIsrType( IrqType vector )  {\r
        return Irq_IsrTypeTable[vector];\r
 }\r
+#endif\r
 \r
 \r
 #if 0\r
diff --git a/include/isr.h b/include/isr.h
new file mode 100644 (file)
index 0000000..22646c4
--- /dev/null
@@ -0,0 +1,159 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+#ifndef ISR_H_\r
+#define ISR_H_\r
+\r
+/*\r
+ * INCLUDE "RULES"\r
+ *  Since this types and methods defined here are used by the drivers, they should\r
+ *  include it. E.g. #include "isr.h"\r
+ *\r
+ *  This file is also used internally by the kernel\r
+ *\r
+ *\r
+ *  irq_types.h ( Vector enums )\r
+ *  irq.h       ( Interface )\r
+ *\r
+ *  Problem:\r
+ *    Os_Cfg.h needs types from isr.h\r
+ *\r
+ */\r
+\r
+/* ----------------------------[includes]------------------------------------*/\r
+/* ----------------------------[define]--------------------------------------*/\r
+\r
+#define ISR_TYPE_1                     0\r
+#define ISR_TYPE_2                     1\r
+\r
+/* ----------------------------[macro]---------------------------------------*/\r
+#define ISR_DECLARE_ISR2(_name, _entry, _unique, _vector,_priority,_app )        \\r
+         const OsIsrConstType _entry ## _unique = { \\r
+                       .vector = _vector,   \\r
+                       .type = ISR_TYPE_2, \\r
+                       .priority = _priority,      \\r
+                       .entry = _entry,      \\r
+                       .name = _name,      \\r
+                       .resourceMask = 0,  \\r
+                       .timingProtPtr = NULL, \\r
+                       .appOwner = _app,      \\r
+                 };                    \\r
+\r
+#define _ISR_INSTALL_ISR2(_name, _entry, _unique, _vector,_priority,_app )        \\r
+       do { \\r
+         const OsIsrConstType _entry ## _unique = { \\r
+                       .vector = _vector,   \\r
+                       .type = ISR_TYPE_2, \\r
+                       .priority = _priority,      \\r
+                       .entry = _entry,      \\r
+                       .name = _name,      \\r
+                       .resourceMask = 0,  \\r
+                       .timingProtPtr = NULL, \\r
+                       .appOwner = _app,      \\r
+                 };                    \\r
+         Os_IsrAdd( & _entry ## _unique);   \\r
+       } while(0);\r
+\r
+#define ISR_INSTALL_ISR2(_name,_entry, _vector,_priority,_app)        \\r
+               _ISR_INSTALL_ISR2(_name,_entry, __LINE__, _vector,_priority,_app)\r
+\r
+\r
+/* ----------------------------[typedef]-------------------------------------*/\r
+\r
+\r
+\r
+/* STD container : OsIsrResourceLock\r
+ * Class: 2 and 4\r
+ *\r
+ * OsIsrResourceLockBudget     1    Float in seconds (MAXRESOURCELOCKINGTIME)\r
+ * OsIsrResourceLockResourceRef 1    Ref to OsResource\r
+ * */\r
+\r
+typedef struct OsIsrResourceLock {\r
+       uint32_t lockBudget;\r
+       uint32_t lockResourceRef;       /* Wrong type */\r
+} OsIsrResourceLockType;\r
+\r
+\r
+/* STD container : OsIsrTimingProtection\r
+ * Class: 2 and 4\r
+ *\r
+ * OsIsrAllInterruptLockBudget  0..1 float\r
+ * OsIsrExecutionBudget                0..1 float\r
+ * OsIsrOsInterruptLockBudget  0..1 float\r
+ * OsIsrTimeFrame                              0..1 float\r
+ * OsIsrResourceLock[C]                0..*\r
+ * */\r
+\r
+typedef struct OsIsrTimingProtection {\r
+       uint32_t allInterruptLockBudget;\r
+       uint32_t executionBudget;\r
+       uint32_t osInterruptLockBudget;\r
+       uint32_t timeFrame;\r
+       uint32_t resourceLock;          /* Wrong type */\r
+} OsIsrTimingProtectionType;\r
+\r
+typedef struct {\r
+       void            *curr;  /* Current stack ptr( at swap time ) */\r
+       void            *top;   /* Top of the stack( low address )   */\r
+       uint32          size;   /* The size of the stack             */\r
+} OsIsrStackType;\r
+\r
+\r
+/* STD container : OsIsr\r
+ * Class: ALL\r
+ *\r
+ * OsIsrCategory:                              1    CATEGORY_1 or CATEGORY_2\r
+ * OsIsrResourceRef:                   0..* Reference to OsResources\r
+ * OsIsrTimingProtection[C]    0..1\r
+ * */\r
+\r
+typedef struct {\r
+       const char              *name;\r
+       uint8_t                 core;\r
+       int16_t                 vector;\r
+       int16_t                 type;\r
+       int16_t                 priority;\r
+       void                    (*entry)();\r
+       uint32_t                appOwner;\r
+       /* Mapped against OsIsrResourceRef */\r
+       uint32_t                resourceMask;\r
+#if (  OS_USE_ISR_TIMING_PROT == STD_ON )\r
+       /* Mapped against OsIsrTimingProtection[C] */\r
+       OsIsrTimingProtectionType *timingProtPtr;\r
+#else\r
+       void *timingProtPtr;\r
+#endif\r
+} OsIsrConstType;\r
+\r
+/*\r
+ *\r
+ */\r
+typedef struct {\r
+       ISRType id;\r
+       OsIsrStackType          stack;\r
+       int                                     state;\r
+       const OsIsrConstType *constPtr;\r
+} OsIsrVarType;\r
+\r
+\r
+/* ----------------------------[functions]-----------------------------------*/\r
+\r
+void Os_IsrInit( void );\r
+ISRType Os_IsrAdd( const OsIsrConstType * restrict isrPtr );\r
+const OsIsrConstType * Os_IsrGet( int16_t vector);\r
+void Os_IsrGetStackInfo( OsIsrStackType *stack );\r
+\r
+#endif /*ISR_H_*/\r
index 5a437d76f0cf5365e092dc2f5a87ae3298d3cd22..c7a9112983afa174f60791e44c7223af581c6c6a 100644 (file)
                                                                assert(#_a  #_b); \\r
                                                          }\r
 \r
-\r
-\r
-\r
 void Os_CfgValidate(void ) {\r
        OS_VALIDATE(OS_COUNTER_CNT,ARRAY_SIZE(counter_list));\r
 #if (RESOURCE_CNT!=0)\r
        OS_VALIDATE(OS_RESOURCE_CNT,ARRAY_SIZE(resource_list));\r
 #endif\r
-       OS_VALIDATE(OS_TASK_CNT ,ARRAY_SIZE(rom_pcb_list));\r
+       OS_VALIDATE(OS_TASK_CNT ,ARRAY_SIZE( Os_TaskConstList));\r
 #if (RESOURCE_CNT!=0)\r
        OS_VALIDATE(OS_ALARM_CNT,ARRAY_SIZE(alarm_list));\r
 #endif\r
@@ -65,20 +62,23 @@ trusted_func_t oil_trusted_func_list[SERVICE_CNT];
 #endif\r
 \r
 /*-----------------------------------------------------------------*/\r
-#if (  OS_SC3 == STD_ON) || (  OS_SC4==STD_ON)\r
-int Os_CfgGetApplCnt(void) {\r
-       return APPLICATION_CNT;\r
-}\r
+#if 0\r
+#if (OS_USE_APPLICATIONS == STD_ON)\r
 \r
-OsRomApplicationType *Os_CfgGetApplObj( ApplicationType application_id ) {\r
+OsRomApplicationType *Os_CfgGetApplObj( ApplicationType appId ) {\r
        return &rom_app_list[application_id];\r
 }\r
 #endif\r
+#endif\r
 \r
 /*-----------------------------------------------------------------*/\r
 \r
 OsResourceType *Os_CfgGetResource( ResourceType resource ) {\r
+#if OS_RESOURCE_CNT!=0\r
        return &resource_list[resource];\r
+#else\r
+       return NULL;\r
+#endif\r
 }\r
 \r
 /*-----------------------------------------------------------------*/\r
@@ -148,21 +148,13 @@ uint32 Os_CfgGetMessageCnt(void ) {
 \r
 /*-----------------------------------------------------------------*/\r
 \r
-#if (  OS_SC3 == STD_ON) || (  OS_SC4 == STD_ON)\r
+#if (OS_USE_APPLICATIONS == STD_ON)\r
 uint32 Os_CfgGetServiceCnt( void ) {\r
-       return SERVICE_CNT;\r
+       return OS_SERVICE_CNT;\r
 }\r
 #endif\r
 \r
 \r
-/*-----------------------------------------------------------------*/\r
-\r
-void Os_CfgGetInterruptStackInfo( OsStackType *stack ) {\r
-       stack->top = os_interrupt_stack;\r
-       stack->size = sizeof(os_interrupt_stack);\r
-}\r
-\r
-\r
 \r
 \r
 \r
index d6174483807f6976d43d3894d2a6e5b75009ab2b..0d6540521bb27805046f180985e2015d3e760cf6 100644 (file)
 \r
 \r
 // +1 here.. easy to have a reference..\r
-#define GEN_TRUSTEDFUNCTIONS_LIST trusted_func_t os_cfg_trusted_list[SERVICE_CNT];\r
+#define GEN_TRUSTEDFUNCTIONS_LIST trusted_func_t os_cfg_trusted_list[OS_SERVICE_CNT];\r
 \r
-#define GEN_APPLICATION_HEAD const OsRomApplicationType rom_app_list[] =\r
+#define GEN_APPLICATION_HEAD const OsAppConstType Os_AppConst[OS_APPLICATION_CNT]\r
 \r
-#define GEN_APPLICATON(        _id,_name,_trusted,_startuphook,_shutdownhook, \\r
-                                               _errorhook,_isr_mask,_scheduletable_mask, _alarm_mask, \\r
-                                               _counter_mask,_resource_mask,_message_mask ) \\r
+#define GEN_APPLICATION(       _id,_name, _core, _trusted,_startuphook,_shutdownhook, _errorhook, \\r
+                                                       _restart_task  ) \\r
 {                                                                                              \\r
-       .application_id = _id,                                          \\r
+       .appId = _id,                                           \\r
        .name = _name,                                                          \\r
+       .core = _core,                              \\r
        .trusted = _trusted,                                            \\r
        .StartupHook = _startuphook,                            \\r
        .ShutdownHook = _shutdownhook,                          \\r
        .ErrorHook = _errorhook,                                        \\r
-       .isr_mask = _isr_mask,                                          \\r
-       .scheduletable_mask  = _scheduletable_mask,     \\r
-       .alarm_mask  = _alarm_mask,                                     \\r
-       .counter_mask  = _counter_mask,                         \\r
-       .resource_mask  = _resource_mask,                       \\r
-       .message_mask  = _message_mask,                         \\r
+       .restartTaskId = _restart_task                          \\r
 }\r
 \r
-\r
-#define GEN_TASK_HEAD const OsRomPcbType rom_pcb_list[] =\r
+#define GEN_TASK_HEAD const OsTaskConstType  Os_TaskConstList[OS_TASK_CNT]\r
 \r
 \r
 \r
  *                  become (1<<2)|(1<<4) = 0x14 (limits resources to 32).\r
  *                  Currently used for calculating the ceiling priority.\r
  */\r
-#define GEN_ETASK( _id, _priority, _scheduling, _autostart, _resource_int_p,  _resource_mask ) \\r
+#define GEN_ETASK(     _id, _name, _priority, _scheduling, \\r
+                                       _autostart, _resource_int_p,  _resource_mask, \\r
+                                       _appl_owner, _accessing_appl_mask ) \\r
 {                                                                      \\r
-       .pid = TASK_ID_##_id,           \\r
-       .name = #_id,                                   \\r
+       .pid = TASK_ID_ ## _id,                                 \\r
+       .name = _name,                                  \\r
        .entry = _id,                           \\r
        .prio = _priority,                              \\r
        .proc_type = PROC_EXTENDED,             \\r
        .stack.size = sizeof stack_##_id,       \\r
        .stack.top = stack_##_id,               \\r
        .autostart = _autostart,                \\r
-       .resource_int_p = _resource_int_p, \\r
+       .resourceIntPtr = _resource_int_p, \\r
        .scheduling = _scheduling, \\r
        .resourceAccess = _resource_mask, \\r
        .activationLimit = 1, \\r
+       .applOwnerId = _appl_owner, \\r
+       .accessingApplMask = _accessing_appl_mask, \\r
 }\r
 \r
-#define GEN_BTASK( _id, _priority, _scheduling, _autostart, _resource_int_p,  _resource_mask, _activation_limit ) \\r
+#define GEN_BTASK(     _id, _name, _priority, _scheduling, \\r
+                                       _autostart, _resource_int_p,  _resource_mask, \\r
+                                       _activation_limit, _appl_owner, _accessing_appl_mask ) \\r
 {                                                                      \\r
-       .pid = TASK_ID_##_id,           \\r
-       .name = #_id,                                   \\r
+       .pid = TASK_ID_ ## _id,                                 \\r
+       .name = _name,                                  \\r
        .entry = _id,                           \\r
        .prio = _priority,                              \\r
        .proc_type = PROC_BASIC,                \\r
        .stack.size = sizeof stack_##_id,       \\r
        .stack.top = stack_##_id,               \\r
        .autostart = _autostart,                \\r
-       .resource_int_p = _resource_int_p, \\r
+       .resourceIntPtr = _resource_int_p, \\r
        .scheduling = _scheduling, \\r
        .resourceAccess = _resource_mask, \\r
        .activationLimit = _activation_limit, \\r
+       .applOwnerId = _appl_owner, \\r
+       .accessingApplMask = _accessing_appl_mask, \\r
+}\r
+\r
+#define GEN_ISR_HEAD const OsIsrConstType Os_IsrConstList[OS_ISR_CNT]\r
+\r
+#define GEN_ISR1( _name, _vector, _priority, _entry, _appOwner ) \\r
+{                                      \\r
+               .vector = _vector,             \\r
+               .type = ISR_TYPE_1,            \\r
+               .priority = _priority,         \\r
+               .entry = _entry,               \\r
+               .name = _name,                 \\r
+               .resourceMask = 0,             \\r
+               .appOwner = _appOwner,         \\r
+}\r
+\r
+#define GEN_ISR2( _name, _vector, _priority, _entry, _appOwner, _resourceMask ) \\r
+{                                      \\r
+               .vector = _vector,             \\r
+               .type = ISR_TYPE_1,            \\r
+               .priority = _priority,         \\r
+               .entry = _entry,               \\r
+               .name = _name,                 \\r
+               .resourceMask = _resourceMask, \\r
+               .appOwner = _appOwner,         \\r
 }\r
 \r
+\r
+#define GEN_ISR_MAP const uint8_t Os_VectorToIsr[NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS]\r
+\r
+\r
+#if 0\r
 #define GEN_ISR_2( _id, _name, _entry, _priority,  _vector ) \\r
 {                                                                      \\r
        .pid = _id,                                             \\r
        .proc_type = PROC_ISR1,         \\r
        .vector = _vector,              \\r
 }\r
+#endif\r
 \r
-//#define GEN_PCB_LIST()       uint8_t pcb_list[PCB_T_SIZE*ARRAY_SIZE(rom_pcb_list)];\r
-#define GEN_PCB_LIST() OsPcbType pcb_list[ARRAY_SIZE(rom_pcb_list)];\r
 \r
-#define GEN_RESOURCE_HEAD OsResourceType resource_list[] =\r
+//#define GEN_PCB_LIST()       uint8_t Os_TaskVarList[PCB_T_SIZE*ARRAY_SIZE( Os_TaskConstList)];\r
+#define GEN_PCB_LIST() OsTaskVarType Os_TaskVarList[ARRAY_SIZE( Os_TaskConstList)];\r
+\r
+#define GEN_RESOURCE_HEAD OsResourceType resource_list[OS_RESOURCE_CNT] =\r
 \r
 \r
 /**\r
  *    NOT USED. Set to 0\r
  */\r
 \r
-#define GEN_COUNTER_HEAD OsCounterType counter_list[] =\r
+#define GEN_COUNTER_HEAD OsCounterType counter_list[OS_COUNTER_CNT]\r
 #define GEN_COUNTER( _id, _name, _type, _unit,         \\r
                                        _maxallowedvalue,                       \\r
                                        _ticksperbase,                          \\r
                                        _mincycle,          \\r
-                                       _gpt_ch )                               \\r
+                                       _gpt_ch,                                \\r
+                                       _appl_owner, \\r
+                                       _accessing_appl_mask )  \\r
 {                                                                                              \\r
        .type = _type,                                                          \\r
        .unit = _unit,                                                          \\r
        .alarm_base.maxallowedvalue = _maxallowedvalue, \\r
        .alarm_base.tickperbase = _ticksperbase,                \\r
        .alarm_base.mincycle = _mincycle,                               \\r
+       .applOwnerId = _appl_owner, \\r
+       .accessingApplMask = _accessing_appl_mask, \\r
 }\r
-#if 0\r
-       // For now...\r
-       .driver.OsGptChannelRef = _gpt_ch\r
-#endif\r
-\r
 \r
 #define        GEN_ALARM_AUTOSTART_NAME(_id)    &(Os_AlarmAutoStart_ ## _id)\r
 \r
                        .appModeRef = _app_mode \\r
                }\r
 \r
-#define GEN_ALARM_HEAD OsAlarmType alarm_list[] =\r
+#define GEN_ALARM_HEAD OsAlarmType alarm_list[OS_ALARM_CNT]\r
 \r
 /**\r
  * _id\r
  * _X_counter_id - The counter ID if type is ALARM_ACTION_INCREMENTCOUNTER\r
  *\r
  */\r
-#define GEN_ALARM( _id, _name, _counter_id,    \\r
-                   _autostart_ref,                 \\r
-                       _action_type,                                   \\r
-                       _action_task_id,                                \\r
-                       _action_event_id,                               \\r
-                       _action_counter_id )                    \\r
+#define GEN_ALARM( _id, _name, _counter_id,            \\r
+                   _autostart_ref,                     \\r
+                       _action_type,                                           \\r
+                       _action_task_id,                                        \\r
+                       _action_event_id,                                       \\r
+                       _action_counter_id,                                     \\r
+                       _appl_owner,                                            \\r
+                       _accessing_appl_mask )                          \\r
 {                                                                                      \\r
        .name = _name,                                                  \\r
        .counter = &counter_list[_counter_id],  \\r
        .counter_id = _counter_id,                              \\r
-       .autostartPtr = _autostart_ref,            \\r
+       .autostartPtr = _autostart_ref,         \\r
        .action = {                                                             \\r
                .type = _action_type,                           \\r
                .task_id = _action_task_id,                     \\r
                .event_id = _action_event_id,           \\r
                .counter_id = _action_counter_id        \\r
        },                                                                              \\r
+       .applOwnerId = _appl_owner, \\r
+       .accessingApplMask = _accessing_appl_mask, \\r
 }\r
 \r
 /*\r
 }\r
 \r
 \r
-#if (  OS_SC3 == STD_ON) || (  OS_SC4 == STD_ON)\r
-#error OLD or NOT implemented\r
 #define GEN_HOOKS( _startup, _protection, _shutdown, _error, _pretask, _posttask ) \\r
 struct OsHooks os_conf_global_hooks = { \\r
                .StartupHook = _startup,                \\r
@@ -355,29 +389,8 @@ struct OsHooks os_conf_global_hooks = { \
                .ShutdownHook = _shutdown,              \\r
                .ErrorHook = _error,                    \\r
                .PreTaskHook = _pretask,                \\r
-               .PostTaskHook = _posttask,              \\r
-};\r
-#else\r
-#define GEN_HOOKS( _startup, _protection, _shutdown, _error, _pretask, _posttask ) \\r
-struct OsHooks os_conf_global_hooks = { \\r
-               .StartupHook = _startup,                \\r
-               .ShutdownHook = _shutdown,              \\r
-               .ErrorHook = _error,                    \\r
-               .PreTaskHook = _pretask,                \\r
-               .PostTaskHook = _posttask,              \\r
-};\r
-\r
-#endif\r
-\r
-\r
-#define GEN_IRQ_VECTOR_TABLE_HEAD      \\r
-                void * Irq_VectorTable[NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS] =\r
-\r
-#define GEN_IRQ_ISR_TYPE_TABLE_HEAD \\r
-                uint8_t Irq_IsrTypeTable[NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS]  =\r
-\r
-#define GEN_IRQ_PRIORITY_TABLE_HEAD \\r
-                uint8_t Irq_PriorityTable[NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS]  =\r
+               .PostTaskHook = _posttask               \\r
+}\r
 \r
 #define ALIGN_16(x) (((x)>>4)<<4)\r
 \r
index 7e49c99d8ad6b9b09fe28637875c51c12a817759..963db6d3fb54686eda67d70a2ce27986e969f119 100644 (file)
  * Note! Tried lots of other ways to do this but came up empty\r
  */\r
 \r
-#define get_spr(spr_nr)        \\r
+#define get_spr(spr_nr)        CC_EXTENSION \\r
 ({\\r
        uint32_t __val;\\r
        asm volatile (" mfspr %0," STRINGIFY__(spr_nr) : "=r"(__val) : );\\r
diff --git a/include/ppc/asm_book_e.h b/include/ppc/asm_book_e.h
deleted file mode 100644 (file)
index 6aa197c..0000000
+++ /dev/null
@@ -1,435 +0,0 @@
-/* -------------------------------- Arctic Core ------------------------------\r
- * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
- *\r
- * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
- *\r
- * This source code is free software; you can redistribute it and/or modify it\r
- * under the terms of the GNU General Public License version 2 as published by the\r
- * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
- *\r
- * This program is distributed in the hope that it will be useful, but\r
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
- * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
- * for more details.\r
- * -------------------------------- Arctic Core ------------------------------*/\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-#ifndef _ASM_BOOK_E_H\r
-#define _ASM_BOOK_E_H\r
-\r
-/*\r
- *\r
- *\r
- *\r
- *\r
- *\r
- *\r
- */\r
-\r
-\r
-/*\r
- * TODO: This file should be split in two. One handle the exceptions for book-e\r
- * and one for this arch stack-frame-> asm_stack_frame.h\r
- */\r
-\r
-/*\r
-\r
-  Mcu_Exceptions.S maps exceptions to the kernel through the exception_tbl.\r
-\r
-\r
-  exception_tbl: ( Mcu_Exceptions.S )\r
-    |\r
-    |                                  exc_intc_pcb_tbl ( kernel )\r
-    |-----> exception_IVORx:  ------> -------------\r
-    |-----> exception_IVORy:  -,      |     0     |  ISR2\r
-                               |      |    .. .   |<>----------> my_isr_c_routine( C )\r
-                               |      |           |\r
-                               '----> |    32x    |\r
-                                      |    324    |\r
-                                                             |    3      | -----------> my_isr_routine: (assembler)\r
-                                                                         '           '\r
-                                      '-----------'\r
-  In kernel for IVOR4:\r
-  1. Get vector through INTC_IACKR\r
-  2. Get pcb for vector\r
-     If pcb==0, goto 10\r
-  3. Get ISR type\r
-     if type==1, goto 5\r
-  4. Save some GPR regs\r
-  5. Call pcb->entry\r
-  10: done!\r
-\r
-\r
-  ,--------,\r
-  |  SP    |\r
-  |  Type  | Context\r
-  |  LR    |\r
-   .....\r
-  +--------+\r
-  |        | NVGPR's\r
-   .....\r
-  +--------+\r
-\r
-\r
-  b exception_IVOR4\r
-  {\r
-    save EF regs\r
-    get interrupt vector\r
-    if (soft int) {\r
-       ack int\r
-    }\r
-    get intc table\r
-    jump to function\r
-\r
-  }\r
-\r
-  The are two types of ISR, ISR1 and ISR2:\r
-  ISR1 - assembler routine, return with blr( Only EF exist on stack )\r
-  ISR2 - normal C-routine( can save small or big frame depending on config )\r
-\r
-\r
-  Use cases:\r
-  - InstallVector(vector, func, type )\r
-    1. InstallVector( 320+10, exception_dec, 1 );              // dec exception\r
-    2. InstallVector( 320+11, exception_fit, 2 );              // fit exception\r
-    3. InstallVector( 5, softint , 2 );                                        // soft int\r
-    4. InstallVector( 100, normal_int, 2 )                             // normal int.\r
-    5. InstallVector( 101, normal_int_2, 1 )                   // normal int.\r
-\r
-    In case 1, the user have to install a prologue/epilogues to access\r
-    it from C( i.e store small frame )\r
-*/\r
-\r
-\r
-\r
-#define SC_PATTERN             0xde\r
-#define LC_PATTERN             0xad\r
-\r
-\r
-/* Alignment for architecture, see e500-ABI */\r
-#define ARCH_ALIGN             16\r
-\r
-#if defined(USE_KERNEL)\r
-#define C_SIZE                 32\r
-#define C_SP_OFF               0\r
-// 4- backchain\r
-// 8 -padding\r
-#define C_CONTEXT_OFF  12\r
-#define C_LR_OFF               16\r
-#define C_CR_OFF               20\r
-#define C_MSR_OFF              24\r
-#else\r
-#define C_SIZE                 0\r
-#endif\r
-\r
-\r
-\r
-#if defined(CFG_SPE)\r
-//-----------------------------------------------------------------\r
-#define GPR_SIZE               8\r
-#elif defined(CFG_MPC5516)\r
-#define GPR_SIZE               4\r
-#else\r
-#error No MCU set\r
-#endif\r
-\r
-\r
-#if defined(USE_KERNEL)\r
-/* Small context */\r
-#define SC_GPRS_SIZE   ((31-14+1)*GPR_SIZE)\r
-#define SC_GPRS_OFFS   C_SIZE\r
-#define SC_SIZE                (C_SIZE + SC_GPRS_SIZE)\r
-\r
-/* Large context */\r
-#define LC_GPRS_SIZE   ((31-0+1)*GPR_SIZE)\r
-#define LC_SIZE                (C_SIZE + LC_GPRS_SIZE)\r
-#endif\r
-\r
-// GPR save and restore macros\r
-\r
-#if defined(CFG_SPE)\r
-  #define SAVE_GPR(reg,_offset,rel_reg)                evstdd  reg,(((reg)*GPR_SIZE)+_offset)(rel_reg)\r
-  #define RESTORE_GPR(reg,_offset,rel_reg)             evldd   reg,(((reg)*GPR_SIZE)+_offset)(rel_reg)\r
-#elif defined(CFG_MPC5516)\r
-  #define SAVE_GPR(reg,_offset,rel_reg)                stw             reg,(((reg)*GPR_SIZE)+_offset)(rel_reg)\r
-  #define RESTORE_GPR(reg,_offset,rel_reg)             lwz             reg,(((reg)*GPR_SIZE)+_offset)(rel_reg)\r
-#endif\r
-\r
-#define SAVE_GPR2(reg,_offset,rel_reg)                 SAVE_GPR(reg,_offset,rel_reg);SAVE_GPR(reg+1,_offset,rel_reg)\r
-#define SAVE_GPR4(reg,_offset,rel_reg)                 SAVE_GPR2(reg,_offset,rel_reg);SAVE_GPR2(reg+2,_offset,rel_reg)\r
-#define SAVE_GPR8(reg,_offset,rel_reg)                 SAVE_GPR4(reg,_offset,rel_reg);SAVE_GPR4(reg+4,_offset,rel_reg)\r
-\r
-#define RESTORE_GPR2(reg,_offset,rel_reg)              RESTORE_GPR(reg,_offset,rel_reg);RESTORE_GPR(reg+1,_offset,rel_reg)\r
-#define RESTORE_GPR4(reg,_offset,rel_reg)              RESTORE_GPR2(reg,_offset,rel_reg);RESTORE_GPR2(reg+2,_offset,rel_reg)\r
-#define RESTORE_GPR8(reg,_offset,rel_reg)              RESTORE_GPR4(reg,_offset,rel_reg);RESTORE_GPR4(reg+4,_offset,rel_reg)\r
-\r
-// Non volatile regs, 14-31( saved by function called )\r
-#define SAVE_NVGPR(rel_reg,_offset)                    SAVE_GPR2(14,_offset,rel_reg); \\r
-                                                                                       SAVE_GPR8(16,_offset,rel_reg); \\r
-                                                                                       SAVE_GPR8(24,_offset,rel_reg);\r
-\r
-#define RESTORE_NVGPR(rel_reg,_offset)         RESTORE_GPR2(14,_offset,rel_reg); \\r
-                                                                                       RESTORE_GPR8(16,_offset,rel_reg); \\r
-                                                                                       RESTORE_GPR8(24,_offset,rel_reg);\r
-\r
-#define NVGPR_SIZE                                                             (18*GPR_SIZE)\r
-\r
-// Volatile regs, r0, r5-r12, [r13] ( r3, r4 are assumed to be save else where )\r
-#define SAVE_VGPR(rel_reg,_offset)                     SAVE_GPR(0,_offset,rel_reg);SAVE_GPR8(5,_offset, rel_reg)\r
-#define RESTORE_VGPR(rel_reg,_offset)                  RESTORE_GPR(0,_offset, rel_reg);RESTORE_GPR8(5,_offset, rel_reg)\r
-#define VGPR_SIZE                                                              (14*GPR_SIZE)\r
-\r
-#define EXC_BASE_OFF                   0               //(VGPR_SIZE+NVGPR_SIZE+C_SIZE)\r
-#define EXC_OFF_FROM_BOTTOM            (VGPR_SIZE+NVGPR_SIZE+C_SIZE)\r
-\r
-\r
-/* Exception frame */\r
-#if defined(CFG_SPE)\r
-#define EXC_SIZE               80\r
-#else\r
-#define EXC_SIZE               64              /* MUST be 16 byte aligned, again eabi */\r
-#endif\r
-\r
-#define EXC_SP_OFF             (EXC_BASE_OFF+0)\r
-// 4 - backchain\r
-// 8 - padding\r
-#define EXC_SRR0_OFF   (EXC_BASE_OFF+12)\r
-#define EXC_SRR1_OFF   (EXC_BASE_OFF+16)\r
-#define EXC_LR_OFF             (EXC_BASE_OFF+20)\r
-#define EXC_CTR_OFF            (EXC_BASE_OFF+24)\r
-#define EXC_XER_OFF            (EXC_BASE_OFF+28)\r
-#define EXC_CR_OFF             (EXC_BASE_OFF+32)\r
-#define EXC_ESR_OFF            (EXC_BASE_OFF+36)\r
-#define EXC_MCSR_OFF   (EXC_BASE_OFF+40)\r
-#define EXC_DEAR_OFF   (EXC_BASE_OFF+44)\r
-#define EXC_VECTOR_OFF         (EXC_BASE_OFF+48)\r
-#if defined(CFG_SPE)\r
-#define EXC_SPEFSCR            (EXC_BASE_OFF+52)\r
-#define EXC_R3_OFF             (EXC_BASE_OFF+56)       // 8 bytes..\r
-#define EXC_R4_OFF             (EXC_BASE_OFF+64)       // 8 bytes..\r
-#define EXC_SPE_ACC            (EXC_BASE_OFF+72)       // 8 bytes\r
-#else\r
-#define EXC_R3_OFF             (EXC_BASE_OFF+52)\r
-#define EXC_R4_OFF             (EXC_BASE_OFF+56)\r
-#endif\r
-\r
-\r
-/*-------------------------------------------------------------------\r
- * Save exception frame macro\r
- *-----------------------------------------------------------------*/\r
-\r
-#define SAVE_EXC_FRAME(work,rel_reg,_offset,xsrr0_spr,xsrr1_spr)       \\r
-               mfspr   work,xsrr0_spr;                                         \\r
-               stw             work,(EXC_SRR0_OFF+_offset)(rel_reg);   \\r
-               mfspr   work,xsrr1_spr;                                         \\r
-               stw             work,(EXC_SRR1_OFF+_offset)(rel_reg);   \\r
-               mfspr   work,SPR_XER;                                   \\r
-               stw             work,(EXC_XER_OFF+_offset)(rel_reg);            \\r
-               mfspr   work,SPR_CTR;                                   \\r
-               stw             work,(EXC_CTR_OFF+_offset)(rel_reg);            \\r
-               mflr    work;                                                   \\r
-               stw             work,(EXC_LR_OFF+_offset)(rel_reg);             \\r
-               /* TODO: all exceptions dont't need all the info below... but it's simple */ \\r
-               mfspr   work,SPR_ESR;                                   \\r
-               stw             work,(EXC_ESR_OFF+_offset)(rel_reg);            \\r
-               mfspr   work,SPR_DEAR;                                  \\r
-               stw             work,(EXC_DEAR_OFF+_offset)(rel_reg);   \\r
-               mfspr   work,SPR_MCSR;                                  \\r
-               stw             work,(EXC_MCSR_OFF+_offset)(rel_reg);           \\r
-               mfcr    work;                                                   \\r
-               stw             work,(EXC_CR_OFF+_offset)(rel_reg);\r
-\r
-\r
-/*-------------------------------------------------------------------\r
- * Restore exception frame macro\r
- *-----------------------------------------------------------------*/\r
-#define RESTORE_EXC_FRAME(work,rel_reg,_offset,xsrr0_spr,xsrr1_spr)            \\r
-               lwz             work,(EXC_SRR0_OFF+_offset)(rel_reg);   \\r
-               mtspr   xsrr0_spr,work;                                                 \\r
-               lwz             work,(EXC_SRR1_OFF+_offset)(rel_reg);   \\r
-               mtspr   xsrr1_spr,work;                                                 \\r
-               lwz             work,(EXC_XER_OFF+_offset)(rel_reg);    \\r
-               mtspr   SPR_XER,work;                                                   \\r
-               lwz             work,(EXC_CTR_OFF+_offset)(rel_reg);    \\r
-               mtspr   SPR_CTR,work;                                                   \\r
-               lwz             work,(EXC_LR_OFF+_offset)(rel_reg);     \\r
-               mtlr    work;                                                                   \\r
-               lwz             work,(EXC_ESR_OFF+_offset)(rel_reg);    \\r
-               mtspr   SPR_ESR,work;                                                   \\r
-               lwz             work,(EXC_DEAR_OFF+_offset)(rel_reg);   \\r
-               mtspr   SPR_DEAR,work;                                                  \\r
-               lwz             work,(EXC_MCSR_OFF+_offset)(rel_reg);   \\r
-               mtspr   SPR_MCSR,work;                                  \\r
-               lwz             work,(EXC_CR_OFF+_offset)(rel_reg);     \\r
-               mtcr    work;                                                                   \\r
-\r
-\r
-\r
-#define EXCEPTION_CRITICAL_PROLOGUE(vector) \\r
-    addi  sp,sp,-EXC_SIZE;          \\r
-    stw   r3,EXC_R3_OFF(r1);        \\r
-    stw   r4,EXC_R4_OFF(r1);        \\r
-    li    r4,vector;                \\r
-    stw   r4,EXC_VECTOR_OFF(r1);    \\r
-    SAVE_EXC_FRAME(3,1,0,SPR_CSRR0,SPR_CSRR1)\r
-\r
-\r
-#define EXCEPTION_CRITICAL_EPILOGUE(vector) \\r
-    RESTORE_EXC_FRAME(3,1,0,SPR_CSRR0,SPR_CSRR1);         \\r
-    lwz   r3,EXC_R3_OFF(r1);        \\r
-    lwz   r4,EXC_R4_OFF(r1);        \\r
-    addi  sp,sp,EXC_SIZE;\r
-\r
-\r
-#define EXCEPTION_PROLOGUE(vector) \\r
-    addi  sp,sp,-EXC_SIZE;          \\r
-    stw   r3,EXC_R3_OFF(r1);        \\r
-    stw   r4,EXC_R4_OFF(r1);        \\r
-    li    r4,vector;                \\r
-    stw   r4,EXC_VECTOR_OFF(r1);    \\r
-    SAVE_EXC_FRAME(3,1,0,SPR_SRR0,SPR_SRR1)\r
-\r
-\r
-#define EXCEPTION_EPILOGUE()       \\r
-    RESTORE_EXC_FRAME(3,1,0,SPR_SRR0,SPR_SRR1);         \\r
-    lwz   r3,EXC_R3_OFF(r1);        \\r
-    lwz   r4,EXC_R4_OFF(r1);        \\r
-    addi  sp,sp,EXC_SIZE;\r
-\r
-\r
-#define CALL_HANDLER() CALL_HANDLER_(Irq_VectorTable)\r
-\r
-//-------------------------------------------------------------------\r
-\r
-#define CALL_HANDLER_(_table)                          \\r
-    lis    r3, _table@h;                                       \\r
-    ori    r3, r3, _table@l;                                   \\r
-    slwi  r4,r4,2;   /* times 4 */                             \\r
-    add   r3,r3,r4;                                            \\r
-    lwz   r3,0(r3);  /* get the entry */               \\r
-    cmpli 0,r3,0;                                              \\r
-    beq+  bad_int;                                     \\r
-    mtctr r3;                                                  \\r
-    mr    r3,r1; /* use stack as arg */                        \\r
-    subi  r1,r1,16; /* space for backchain */  \\r
-    bctrl;                                     \\r
-    addi  r1,r1,16\r
-\r
-//-------------------------------------------------------------------\r
-\r
-#define EXCEPTION_CSRRx(_section,_vector)   \\r
-    .global _section;                      \\r
-    .balign 16;                           \\r
-_section:;                       \\r
-     EXCEPTION_CRITICAL_PROLOGUE(_vector); \\r
-     CALL_HANDLER();                      \\r
-     EXCEPTION_CRITICAL_EPILOGUE();       \\r
-     rfci\r
-\r
-\r
-#define EXCEPTION_SRRx(_section,_vector)   \\r
-    .global _section;                      \\r
-    .balign 16;                           \\r
-_section:;                       \\r
-     EXCEPTION_PROLOGUE(_vector); \\r
-     CALL_HANDLER();                      \\r
-     EXCEPTION_EPILOGUE();       \\r
-     rfi\r
-\r
-\r
-#if defined(_ASSEMBLER_)\r
-#if defined(CFG_SPE)\r
-\r
-.macro save_work_and_more\r
-       // work on the exception frame for now..\r
-       addi            sp,sp,-(EXC_SIZE)\r
-\r
-       mtspr           SPR_SPRG0_RW_S,r3\r
-       // Enable SPE (exceptions turns it off)\r
-       mfmsr           r3\r
-    oris               r3,r3,0x0200\r
-       mtmsr           r3\r
-       isync\r
-\r
-       mfspr           r3, SPR_SPRG0_RW_S\r
-\r
-       // Save 64-bit r3 and r4\r
-       evstdd          r3,EXC_R3_OFF(r1)\r
-       evstdd          r4,EXC_R4_OFF(r1)\r
-\r
-       // SPEFSCR\r
-       mfspr           r3,SPR_SPEFSCR\r
-       clrlwi          r3,r3,24         /* Mask off non-status bits */\r
-       stw                     r3,EXC_SPEFSCR(sp)\r
-\r
-       // Save SPE acc\r
-       evsubfw         r3,r3,r3                // zero r3\r
-       evaddumiaaw r3,r3                       // Add r3 = r3 + acc -> r3 = acc\r
-       evstdd          r3,EXC_SPE_ACC(r1)\r
-\r
-       SAVE_EXC_FRAME(3,1,0,SPR_SRR0,SPR_SRR1)\r
-\r
-       // Save access through r4\r
-       mr              r4,r1\r
-       // Make place for the other stack frames.\r
-       addi    sp,sp,-(VGPR_SIZE+NVGPR_SIZE+C_SIZE)\r
-.endm\r
-\r
-.macro restore_work_and_more\r
-       // Stack is below C frame.... access EXC frame.\r
-       addi    sp,sp,(C_SIZE+NVGPR_SIZE+VGPR_SIZE)\r
-\r
-       // Store the SPE control/status reg.\r
-       lwz             r3,EXC_SPEFSCR(sp)\r
-       mtspr   SPR_CSRR0,r3\r
-\r
-       /* Load SPE acc */\r
-       evldd r3,EXC_SPE_ACC(r1)\r
-       evmra r3,r3\r
-\r
-       RESTORE_EXC_FRAME(3,1,0,SPR_SRR0,SPR_SRR1);\r
-\r
-       evldd   r3,EXC_R3_OFF(r1)\r
-       evldd   r4,EXC_R4_OFF(r1)\r
-\r
-       addi    sp,sp,EXC_SIZE\r
-\r
-.endm\r
-#else\r
-.macro save_work_and_more\r
-       addi    sp,sp,-(EXC_SIZE)\r
-\r
-       stw     r3,EXC_R3_OFF(r1)\r
-       stw     r4,EXC_R4_OFF(r1)\r
-\r
-       SAVE_EXC_FRAME(3,1,0,SPR_SRR0,SPR_SRR1)\r
-\r
-       // Save access through r4\r
-       mr              r4,r1\r
-       // Make place for the other stack frames.\r
-       addi    sp,sp,-(VGPR_SIZE+NVGPR_SIZE+C_SIZE)\r
-.endm\r
-\r
-.macro restore_work_and_more\r
-       // Work on the exception frame.\r
-       addi    sp,sp,(VGPR_SIZE+NVGPR_SIZE+C_SIZE)\r
-\r
-       RESTORE_EXC_FRAME(3,1,0,SPR_SRR0,SPR_SRR1);\r
-\r
-       lwz     r3,EXC_R3_OFF(r1);\r
-       lwz     r4,EXC_R4_OFF(r1);\r
-\r
-       addi    sp,sp,EXC_SIZE\r
-.endm\r
-#endif\r
-#endif\r
-\r
-#endif /* _ASM_BOOK_E_H */\r
-\r
index aff1014cd39d10953c13849906c5bbfe1e548305..8da0ddfbd6629fce95659aa602b5ca77ea621f6a 100644 (file)
  *\r
  */\r
 \r
-/*\r
- * -------- botton(high address )\r
- *  Context\r
- * --------\r
- *\r
- * -------- top\r
- *\r
- *  kind of frames...\r
- * -------------------------------\r
- *  C_xxxx  - common frame to both large and small context\r
- *  EXC_xxx - exception frame\r
- *  SC_xxx  - small context frame\r
- *  LC_xxx  - large context frame\r
- *\r
- *\r
- *\r
- *\r
- */\r
-\r
-\r
 #define SPR_SRR0               26\r
 #define SPR_SRR1               27\r
 \r
@@ -85,7 +65,9 @@
 #define SPR_XER                1\r
 #define SPR_CTR                9\r
 \r
+#define INTC_SSCIR7 0xFFF48027\r
 \r
+#if defined(_ASSEMBLER_)\r
 /*\r
  * Misc macros\r
  */\r
@@ -98,6 +80,7 @@
         addi    reg, reg, addr@l\r
 \r
 \r
+\r
 /* GPRS */\r
 #define sp         1\r
 #define r0      0\r
 #define r29     29\r
 #define r30     30\r
 #define r31     31\r
+#endif\r
 \r
 #endif /*PPC_ASM_H_*/\r
index ccfb623410b861ec10ee766d47f8ef86aa362321..d45c32c4aaefaeb1b06b13a0d1cf41ee5c54db5c 100644 (file)
--- a/makefile
+++ b/makefile
@@ -11,7 +11,7 @@
 #   BOARDDIR=<board dir> \r
 #       Select what board to build for \r
 #   BDIR=<dir>[,<dir>] \r
-#       Select what directories to build. The kernel if always built.\r
+#       Select what directories to build. The kernel is always built.\r
 #   CROSS_COMPILE\r
 #       Specify the compiler to use.  \r
 #   Q=[(@)/empty] \r
@@ -74,20 +74,17 @@ export objdir = obj_$(BOARDDIR)
 \r
 .PHONY: help\r
 help:\r
-       @echo "Make kernel and a simple example"\r
+       @echo "Build a simple example"\r
        @echo "  > make BOARDDIR=mpc551xsim CROSS_COMPILE=/opt/powerpc-eabi/bin/powerpc-eabi- BDIR=examples/simple all"\r
        @echo ""\r
-       @echo "Save the config (CROSS_COMPILE and BDIR)"\r
-       @echo "  > make BOARDDIR=mpc551xsim CROSS_COMPILE=/opt/powerpc-eabi/bin/powerpc-eabi- BDIR=examples/simple save"\r
-       @echo ""\r
        @echo "Clean"\r
        @echo "  > make clean"\r
        @echo ""\r
        @echo "Present config:"\r
-       @echo "  ARCH=$(ARCH)"\r
-       @echo "  ARCH_FAM=$(ARCH_FAM)"\r
-       @echo "  BOARDDIR =$(BOARDDIR)"\r
-       @echo "  CROSS_COMPILE =$(CROSS_COMPILE)"\r
+       @echo "  BDIR          = ${BDIR}"\r
+       @echo "  BOARDDIR      = $(BOARDDIR)"\r
+       @echo "  CROSS_COMPILE = $(CROSS_COMPILE)"\r
+       @echo "  CWD           = ${CWD}"\r
        @echo ""\r
        \r
 export CFG_MCU \r
@@ -134,15 +131,17 @@ test:
        @echo $(all_boards)\r
 \r
 show_build:\r
-       @echo "BUILD INFO"\r
+       @echo ""\r
+       @echo "==========[ BUILD INFO ]==========="\r
        @echo "BOARDDIR:      $(BOARDDIR) [$(origin BOARDDIR)]"\r
        @echo "BDIR:          $(BDIR) [$(origin BDIR)]"\r
        @echo "CROSS_COMPILE: $(CROSS_COMPILE) [$(origin CROSS_COMPILE)]"\r
-       @echo "cmd_cmd_goals: $(cmd_cmd_goals)"\r
+       @echo "CWD:           ${CWD}"\r
        \r
        \r
 $(dir_cmd_goals) :: show_build FORCE   \r
-       @echo ==========[ $@  ]===========\r
+       @echo ""\r
+       @echo ==========[ ${abspath $@}  ]===========\r
        @if [ ! -d $@ ]; then echo "No such directory: \"$@\" quitting"; exit 1; fi\r
        +@[ -d $@/$(objdir) ] || mkdir -p $@/$(objdir)\r
        @chmod 777 $@/$(objdir)\r
index b1144a5671371ef891278703bd4fd7645b4969f4..1d1c91b2f1db43af2d8ee2115b215dd2ef3c7f54 100644 (file)
 \r
 \r
 \r
+//lint -emacro(904,VALIDATE_RV,VALIDATE_NO_RV) //904 PC-Lint exception to MISRA 14.7 (validate macros).\r
+\r
+// Exception made as a result of that NVM_DATASET_SELECTION_BITS can be zero\r
+//lint -emacro(835, MIN_BLOCKNR) // 835 PC-lint: A zero has been given as right argument to operator '<<' or '>>'\r
+//lint -emacro(835, GET_BLOCK_INDEX_FROM_BLOCK_NUMBER) // 835 PC-lint: A zero has been given as right argument to operator '<<' or '>>'\r
+//lint -emacro(835, GET_DATASET_FROM_BLOCK_NUMBER) // 835 PC-lint: A zero has been given as right argument to operator '<<' or '>>'\r
+//lint -emacro(778, GET_DATASET_FROM_BLOCK_NUMBER) // 778 PC-lint: Constant expression evaluates to 0 in operation '-'\r
+//lint -emacro(845, GET_DATASET_FROM_BLOCK_NUMBER) // 845 PC-lint: The right argument to operator '&' is certain to be 0\r
+//lint -emacro(835, BLOCK_INDEX_AND_SET_TO_BLOCKNR) // 835 PC-lint: A zero has been given as right argument to operator '<<' or '>>'\r
 \r
 #include <string.h>\r
 #include "Fee.h"\r
@@ -62,6 +71,8 @@
 \r
 #define DET_REPORTERROR(_module,_instance,_api,_err) Det_ReportError(_module,_instance,_api,_err)\r
 \r
+#define MIN_BLOCKNR            ((uint16)((uint16)1 << NVM_DATASET_SELECTION_BITS))\r
+\r
 #else\r
 #define VALIDATE(_exp,_api,_err )\r
 #define VALIDATE_RV(_exp,_api,_err,_rv )\r
 /*\r
  * Block numbering recalculation macros
  */\r
-#define GET_BLOCK_INDEX_FROM_BLOCK_NUMBER(_blocknr)    (((_blocknr) >> NVM_DATASET_SELECTION_BITS) - 1)\r
-#define GET_DATASET_FROM_BLOCK_NUMBER(_blocknr)        ((_blocknr) & ((1 << NVM_DATASET_SELECTION_BITS) - 1))\r
-#define BLOCK_INDEX_AND_SET_TO_BLOCKNR(_blocknr, _set) ((_blocknr + 1) << NVM_DATASET_SELECTION_BITS | set)\r
+#define GET_BLOCK_INDEX_FROM_BLOCK_NUMBER(_blocknr)    (((_blocknr) >> NVM_DATASET_SELECTION_BITS) - 1u)\r
+#define GET_DATASET_FROM_BLOCK_NUMBER(_blocknr)        ((_blocknr) & ((uint16)((uint16)1u << NVM_DATASET_SELECTION_BITS) - 1u))\r
+#define BLOCK_INDEX_AND_SET_TO_BLOCKNR(_blocknr, _set) ((uint16)((_blocknr + 1u) << NVM_DATASET_SELECTION_BITS) | _set)\r
 \r
 /*\r
  * Page alignment macros
  */\r
-#define PAGE_ALIGN(_size)      ((((_size) + FEE_VIRTUAL_PAGE_SIZE - 1) / FEE_VIRTUAL_PAGE_SIZE) * FEE_VIRTUAL_PAGE_SIZE)\r
+#define PAGE_ALIGN(_size)      ((uint16)((((_size) + FEE_VIRTUAL_PAGE_SIZE - 1) / FEE_VIRTUAL_PAGE_SIZE) * FEE_VIRTUAL_PAGE_SIZE))\r
 \r
 /*\r
  * Bank properties list
@@ -159,7 +170,7 @@ typedef struct {
 \r
 #define BLOCK_CTRL_PAGE_SIZE   PAGE_ALIGN(sizeof(FlsBlockControlType))\r
 \r
-#define BLOCK_CTRL_DATA_POS_OFFSET             0\r
+#define BLOCK_CTRL_DATA_POS_OFFSET             (/*lint --e(835)*/0)            // Inform PC-Lint that I want the constant to be zero\r
 #define BLOCK_CTRL_MAGIC_POS_OFFSET            BLOCK_CTRL_DATA_PAGE_SIZE\r
 \r
 typedef union {\r
@@ -225,9 +236,6 @@ typedef enum {
   FEE_READ_REQUESTED,\r
   FEE_READ,\r
 \r
-  FEE_CANCEL_REQUESTED,\r
-  FEE_CANCEL_PENDING,\r
-\r
   FEE_INVALIDATE_REQUESTED,\r
   FEE_INVALIDATE_MARK_BANK_OLD,\r
   FEE_WRITE_INVALIDATE_HEADER_REQUESTED,\r
@@ -241,7 +249,7 @@ typedef enum {
   FEE_GARBAGE_COLLECT_DATA_WRITE,\r
   FEE_GARBAGE_COLLECT_MAGIC_WRITE_REQUESTED,\r
   FEE_GARBAGE_COLLECT_MAGIC_WRITE,\r
-  FEE_GARBAGE_COLLECT_ERASE,\r
+  FEE_GARBAGE_COLLECT_ERASE\r
 } CurrentJobStateType;\r
 \r
 typedef struct {\r
@@ -253,8 +261,8 @@ typedef struct {
        AdminFlsBlockType                       *AdminFlsBlockPtr;\r
        union {\r
                struct {\r
-                       uint16                          NrOfBanks;\r
-                       uint16                          BankNumber;\r
+                       uint                          NrOfBanks;\r
+                       uint                          BankNumber;\r
                        Fls_AddressType         BlockAdminAddress;\r
                }Startup;\r
                struct {\r
@@ -271,11 +279,10 @@ typedef struct {
                        Fls_AddressType         WriteDataAddress;\r
                }Invalidate;\r
                struct {\r
-                       uint16                          NrOfBanks;\r
-                       uint16                          BankNumber;\r
+                       uint8                           BankNumber;\r
                        Fls_AddressType         WriteAdminAddress;\r
                        Fls_AddressType         WriteDataAddress;\r
-                       sint16                          BytesLeft;\r
+                       uint16                          BytesLeft;\r
                        uint16                          DataOffset;\r
                }GarbageCollect;\r
        } Op;\r
@@ -284,6 +291,7 @@ typedef struct {
 static CurrentJobType CurrentJob = {\r
                .State = FEE_IDLE,\r
                .InStateCounter = 0\r
+               //lint -e{785}          PC-Lint (785) - rest of structure members is initialized when used.\r
 };\r
 \r
 /*\r
@@ -297,10 +305,7 @@ static CurrentJobType CurrentJob = {
  ***************************************/\r
 \r
 #if (FEE_POLLING_MODE == STD_ON)\r
-static void SetFlsJobBusy()\r
-{\r
-       /* Nothing needed here */\r
-}\r
+#define SetFlsJobBusy()                        /* Nothing needs to be done here */\r
 \r
 static boolean CheckFlsJobFinnished(void)\r
 {\r
@@ -373,7 +378,8 @@ static void StartupStartJob(void)
        if (Fls_GetStatus() == MEMIF_IDLE) {\r
                CurrentJob.State = FEE_STARTUP_READ_BANK1_STATUS;\r
                /* Read bank status of bank 1 */\r
-               if (Fls_Read(BankProp[0].End - BANK_CTRL_PAGE_SIZE, (uint8*)&AdminFls.BankStatus[0], sizeof(FlsBankStatusType)) == E_OK) {\r
+               // PC-Lint exception (MISRA 11.4) - Pointer to pointer conversion ok by AUTOSAR\r
+               if (Fls_Read(BankProp[0].End - BANK_CTRL_PAGE_SIZE, /*lint -e(926)*/(uint8*)&AdminFls.BankStatus[0], sizeof(FlsBankStatusType)) == E_OK) {\r
                        SetFlsJobBusy();\r
                } else {\r
                        AbortStartup(Fls_GetJobResult());\r
@@ -405,7 +411,8 @@ static void StartupReadBank2StatusRequested(void)
        if (Fls_GetStatus() == MEMIF_IDLE) {\r
                /* Read bank status of bank 2 */\r
                CurrentJob.State = FEE_STARTUP_READ_BANK2_STATUS;\r
-               if (Fls_Read(BankProp[1].End - BANK_CTRL_PAGE_SIZE, (uint8*)&AdminFls.BankStatus[1], sizeof(FlsBankStatusType)) == E_OK) {\r
+               // PC-Lint exception (MISRA 11.4) - Pointer to pointer conversion ok by AUTOSAR\r
+               if (Fls_Read(BankProp[1].End - BANK_CTRL_PAGE_SIZE, /*lint -e(926)*/(uint8*)&AdminFls.BankStatus[1], sizeof(FlsBankStatusType)) == E_OK) {\r
                        SetFlsJobBusy();\r
                } else {\r
                        AbortStartup(Fls_GetJobResult());\r
@@ -445,7 +452,7 @@ static void StartupReadBank2Status(void)
                if (jobResult != MEMIF_JOB_OK) {\r
                        AbortStartup(jobResult);\r
                } else {\r
-                       CurrentJob.Op.Startup.BlockAdminAddress = BankProp[CurrentJob.Op.Startup.BankNumber].End - BLOCK_CTRL_PAGE_SIZE - BANK_CTRL_PAGE_SIZE;\r
+                       CurrentJob.Op.Startup.BlockAdminAddress = BankProp[CurrentJob.Op.Startup.BankNumber].End - (BLOCK_CTRL_PAGE_SIZE + BANK_CTRL_PAGE_SIZE);\r
                        CurrentJob.State = FEE_STARTUP_READ_BLOCK_ADMIN_REQUESTED;\r
                }\r
        }\r
@@ -480,9 +487,9 @@ static void StartupReadBlockAdmin(void)
                                VALIDATE(CurrentJob.Op.Startup.NrOfBanks != 0, FEE_STARTUP_ID, FEE_FLASH_CORRUPT);\r
                                CurrentJob.Op.Startup.NrOfBanks--;\r
                                CurrentJob.Op.Startup.BankNumber = (CurrentJob.Op.Startup.BankNumber + 1) % 2;\r
-                               CurrentJob.Op.Startup.BlockAdminAddress = BankProp[CurrentJob.Op.Startup.BankNumber].End - BLOCK_CTRL_PAGE_SIZE - BANK_CTRL_PAGE_SIZE;\r
+                               CurrentJob.Op.Startup.BlockAdminAddress = BankProp[CurrentJob.Op.Startup.BankNumber].End - (BLOCK_CTRL_PAGE_SIZE + BANK_CTRL_PAGE_SIZE);\r
                        } else { /* Block not empty */\r
-                               if ((memcmp(RWBuffer.BlockCtrl.MagicPage.Byte, BlockMagicMaster, BLOCK_MAGIC_LEN) == 0) &&\r
+                               if ((memcmp(RWBuffer.BlockCtrl.MagicPage.Magic, BlockMagicMaster, BLOCK_MAGIC_LEN) == 0) &&\r
                                                ((RWBuffer.BlockCtrl.DataPage.Data.Status == BLOCK_STATUS_INUSE) || (RWBuffer.BlockCtrl.DataPage.Data.Status == BLOCK_STATUS_INVALIDATED))) {\r
                                        /* This is a valid admin block */\r
                                        uint16 blockIndex;\r
@@ -512,7 +519,7 @@ static void StartupReadBlockAdmin(void)
                                /* If current bank is marked as old we need to switch to a new bank */\r
                                if (AdminFls.BankStatus[AdminFls.BankNumber] == BANK_STATUS_OLD) {\r
                                        AdminFls.BankNumber = (AdminFls.BankNumber + 1) % 2;\r
-                                       AdminFls.NewBlockAdminAddress = BankProp[AdminFls.BankNumber].End - BLOCK_CTRL_PAGE_SIZE - BANK_CTRL_PAGE_SIZE;\r
+                                       AdminFls.NewBlockAdminAddress = BankProp[AdminFls.BankNumber].End - (BLOCK_CTRL_PAGE_SIZE + BANK_CTRL_PAGE_SIZE);\r
                                        AdminFls.NewBlockDataAddress = BankProp[AdminFls.BankNumber].Start;\r
                                }\r
                                /* We are done! */\r
@@ -641,9 +648,9 @@ static void WriteMarkBankOldState(void)
                        AdminFls.BankStatus[AdminFls.BankNumber] = BANK_STATUS_OLD;\r
 \r
                        /* Change of bank */\r
-                       AdminFls.BankNumber ^= 0x1;\r
+                       AdminFls.BankNumber ^= 0x1u;\r
                        AdminFls.NewBlockDataAddress = BankProp[AdminFls.BankNumber].Start;\r
-                       AdminFls.NewBlockAdminAddress = BankProp[AdminFls.BankNumber].End - BLOCK_CTRL_PAGE_SIZE - BANK_CTRL_PAGE_SIZE;\r
+                       AdminFls.NewBlockAdminAddress = BankProp[AdminFls.BankNumber].End - (BLOCK_CTRL_PAGE_SIZE + BANK_CTRL_PAGE_SIZE);\r
 \r
                        CurrentJob.Op.Write.WriteDataAddress = AdminFls.NewBlockDataAddress;\r
                        CurrentJob.Op.Write.WriteAdminAddress = AdminFls.NewBlockAdminAddress;\r
@@ -723,7 +730,7 @@ static void WriteMagicRequested(void)
        if (Fls_GetStatus() == MEMIF_IDLE) {\r
                CurrentJob.State = FEE_WRITE_MAGIC;\r
                memset(RWBuffer.BlockCtrl.MagicPage.Byte, 0xff, BLOCK_CTRL_MAGIC_PAGE_SIZE);\r
-               memcpy(RWBuffer.BlockCtrl.MagicPage.Byte, BlockMagicMaster, BLOCK_MAGIC_LEN);\r
+               memcpy(RWBuffer.BlockCtrl.MagicPage.Magic, BlockMagicMaster, BLOCK_MAGIC_LEN);\r
                if (Fls_Write(CurrentJob.Op.Write.WriteAdminAddress + BLOCK_CTRL_MAGIC_POS_OFFSET, RWBuffer.BlockCtrl.MagicPage.Byte, BLOCK_CTRL_MAGIC_PAGE_SIZE) == E_OK) {\r
                        SetFlsJobBusy();\r
                } else {\r
@@ -773,55 +780,55 @@ static void CheckIfGarbageCollectionNeeded(void)
  */\r
 static void GarbageCollectStartJob(void)\r
 {\r
-       uint16 blockIndex,set;\r
+       uint16 blockIndex;\r
+       uint16 set;\r
        boolean found = FALSE;\r
-       uint8 sourceBank, destBank;\r
+       uint8 sourceBank;\r
 \r
        if (Fls_GetStatus() == MEMIF_IDLE) {\r
-               if (AdminFls.BankStatus[0] == BANK_STATUS_OLD) {\r
-                       sourceBank = 0;\r
-                       destBank = 1;\r
-               } else if (AdminFls.BankStatus[1] == BANK_STATUS_OLD) {\r
-                       sourceBank = 1;\r
-                       destBank = 0;\r
-               } else {\r
-                       CurrentJob.State = FEE_IDLE;\r
-                       return;\r
-               }\r
+               if ((AdminFls.BankStatus[0] == BANK_STATUS_OLD) || (AdminFls.BankStatus[1] == BANK_STATUS_OLD)) {\r
+                       if (AdminFls.BankStatus[0] == BANK_STATUS_OLD) {\r
+                               sourceBank = 0;\r
+                       } else {\r
+                               sourceBank = 1;\r
+                       }\r
 \r
-               for (blockIndex = 0; (blockIndex < FEE_NUM_OF_BLOCKS) && !found; blockIndex++) {\r
-                       for (set = 0; (set < FEE_MAX_NUM_SETS) && !found; set++) {\r
-                               if (AdminFls.BlockDescrTbl[blockIndex][set].Status != BLOCK_STATUS_EMPTY) {\r
-                                       if ((AdminFls.BlockDescrTbl[blockIndex][set].BlockAdminAddress >= BankProp[sourceBank].Start) && (AdminFls.BlockDescrTbl[blockIndex][set].BlockAdminAddress < (BankProp[sourceBank].End))) {\r
-                                               CurrentJob.AdminFlsBlockPtr = &AdminFls.BlockDescrTbl[blockIndex][set];\r
-                                               CurrentJob.BlockConfigPtr = &Fee_Config.BlockConfig[blockIndex];\r
-                                               CurrentJob.BlockNumber = BLOCK_INDEX_AND_SET_TO_BLOCKNR(blockIndex, set);\r
-                                               if (AdminFls.BlockDescrTbl[blockIndex][set].Status == BLOCK_STATUS_INVALIDATED) {\r
-                                                       CurrentJob.Length = 0;\r
-                                               } else {\r
-                                                       CurrentJob.Length = PAGE_ALIGN(CurrentJob.BlockConfigPtr->BlockSize);\r
+                       for (blockIndex = 0; (blockIndex < FEE_NUM_OF_BLOCKS) && (!found); blockIndex++) {\r
+                               for (set = 0; (set < FEE_MAX_NUM_SETS) && (!found); set++) {\r
+                                       if (AdminFls.BlockDescrTbl[blockIndex][set].Status != BLOCK_STATUS_EMPTY) {\r
+                                               if ((AdminFls.BlockDescrTbl[blockIndex][set].BlockAdminAddress >= BankProp[sourceBank].Start) && (AdminFls.BlockDescrTbl[blockIndex][set].BlockAdminAddress < (BankProp[sourceBank].End))) {\r
+                                                       CurrentJob.AdminFlsBlockPtr = &AdminFls.BlockDescrTbl[blockIndex][set];\r
+                                                       CurrentJob.BlockConfigPtr = &Fee_Config.BlockConfig[blockIndex];\r
+                                                       CurrentJob.BlockNumber = BLOCK_INDEX_AND_SET_TO_BLOCKNR(blockIndex, set);\r
+                                                       if (AdminFls.BlockDescrTbl[blockIndex][set].Status == BLOCK_STATUS_INVALIDATED) {\r
+                                                               CurrentJob.Length = 0;\r
+                                                       } else {\r
+                                                               CurrentJob.Length = PAGE_ALIGN(CurrentJob.BlockConfigPtr->BlockSize);\r
+                                                       }\r
+\r
+                                                       found = TRUE;\r
                                                }\r
-\r
-                                               found = TRUE;\r
                                        }\r
                                }\r
                        }\r
-               }\r
 \r
-               if (found) {\r
-                       CurrentJob.Op.GarbageCollect.WriteDataAddress = AdminFls.NewBlockDataAddress;\r
-                       CurrentJob.Op.GarbageCollect.WriteAdminAddress = AdminFls.NewBlockAdminAddress;\r
+                       if (found) {\r
+                               CurrentJob.Op.GarbageCollect.WriteDataAddress = AdminFls.NewBlockDataAddress;\r
+                               CurrentJob.Op.GarbageCollect.WriteAdminAddress = AdminFls.NewBlockAdminAddress;\r
 \r
-                       CurrentJob.State = FEE_GARBAGE_COLLECT_HEADER_WRITE;\r
-                       BlockHeaderDataWrite();\r
-               } else {\r
-                       if (Fls_Erase(BankProp[sourceBank].Start, BankProp[sourceBank].End - BankProp[sourceBank].Start) == E_OK) {\r
-                               SetFlsJobBusy();\r
+                               CurrentJob.State = FEE_GARBAGE_COLLECT_HEADER_WRITE;\r
+                               BlockHeaderDataWrite();\r
                        } else {\r
-                               AbortJob(Fls_GetJobResult());\r
+                               if (Fls_Erase(BankProp[sourceBank].Start, BankProp[sourceBank].End - BankProp[sourceBank].Start) == E_OK) {\r
+                                       SetFlsJobBusy();\r
+                               } else {\r
+                                       AbortJob(Fls_GetJobResult());\r
+                               }\r
+                               CurrentJob.Op.GarbageCollect.BankNumber = sourceBank;\r
+                               CurrentJob.State = FEE_GARBAGE_COLLECT_ERASE;\r
                        }\r
-                       CurrentJob.Op.GarbageCollect.BankNumber = sourceBank;\r
-                       CurrentJob.State = FEE_GARBAGE_COLLECT_ERASE;\r
+               } else {\r
+                       CurrentJob.State = FEE_IDLE;\r
                }\r
        }\r
 }\r
@@ -914,13 +921,13 @@ static void GarbageCollectWriteData(void)
 {\r
        if (CheckFlsJobFinnished()) {\r
                if (Fls_GetJobResult() == MEMIF_JOB_OK) {\r
-                       CurrentJob.Op.GarbageCollect.DataOffset += RWBUFFER_SIZE;\r
-                       CurrentJob.Op.GarbageCollect.BytesLeft -= RWBUFFER_SIZE;\r
-                       if (CurrentJob.Op.GarbageCollect.BytesLeft <= 0) {\r
+                       if (CurrentJob.Op.GarbageCollect.BytesLeft <= RWBUFFER_SIZE) {\r
                                /* Yes, we are finished */\r
                                CurrentJob.State = FEE_GARBAGE_COLLECT_MAGIC_WRITE_REQUESTED;\r
                        } else {\r
                                /* More data to move */\r
+                               CurrentJob.Op.GarbageCollect.DataOffset += RWBUFFER_SIZE;\r
+                               CurrentJob.Op.GarbageCollect.BytesLeft -= RWBUFFER_SIZE;\r
                                CurrentJob.State = FEE_GARBAGE_COLLECT_DATA_READ_REQUESTED;\r
                        }\r
                } else {\r
@@ -938,7 +945,7 @@ static void GarbageCollectWriteMagicRequested(void)
        if (Fls_GetStatus() == MEMIF_IDLE) {\r
                CurrentJob.State = FEE_GARBAGE_COLLECT_MAGIC_WRITE;\r
                memset(RWBuffer.BlockCtrl.MagicPage.Byte, 0xff, BLOCK_CTRL_MAGIC_PAGE_SIZE);\r
-               memcpy(RWBuffer.BlockCtrl.MagicPage.Byte, BlockMagicMaster, BLOCK_MAGIC_LEN);\r
+               memcpy(RWBuffer.BlockCtrl.MagicPage.Magic, BlockMagicMaster, BLOCK_MAGIC_LEN);\r
                if (Fls_Write(CurrentJob.Op.GarbageCollect.WriteAdminAddress + BLOCK_CTRL_MAGIC_POS_OFFSET, RWBuffer.BlockCtrl.MagicPage.Byte, BLOCK_CTRL_MAGIC_PAGE_SIZE) == E_OK) {\r
                        SetFlsJobBusy();\r
                } else {\r
@@ -992,7 +999,8 @@ static void BlockHeaderInvalidWrite(void)
        RWBuffer.BlockCtrl.DataPage.Data.BlockNo = CurrentJob.BlockNumber;\r
        RWBuffer.BlockCtrl.DataPage.Data.BlockDataAddress = AdminFls.NewBlockDataAddress;\r
        RWBuffer.BlockCtrl.DataPage.Data.BlockDataLength = 0;\r
-       memcpy(RWBuffer.BlockCtrl.MagicPage.Byte, BlockMagicMaster, BLOCK_MAGIC_LEN);\r
+       memset(RWBuffer.BlockCtrl.MagicPage.Byte, 0xff, BLOCK_CTRL_MAGIC_PAGE_SIZE);\r
+       memcpy(RWBuffer.BlockCtrl.MagicPage.Magic, BlockMagicMaster, BLOCK_MAGIC_LEN);\r
 \r
        if (Fls_Write(CurrentJob.Op.Invalidate.WriteAdminAddress + BLOCK_CTRL_DATA_POS_OFFSET, RWBuffer.Byte, BLOCK_CTRL_PAGE_SIZE) == E_OK) {\r
                SetFlsJobBusy();\r
@@ -1038,9 +1046,9 @@ static void InvalidateMarkBankOld(void)
                        AdminFls.BankStatus[AdminFls.BankNumber] = BANK_STATUS_OLD;\r
 \r
                        // Change of bank\r
-                       AdminFls.BankNumber ^= 0x1;\r
+                       AdminFls.BankNumber ^= 0x1u;\r
                        AdminFls.NewBlockDataAddress = BankProp[AdminFls.BankNumber].Start;\r
-                       AdminFls.NewBlockAdminAddress = BankProp[AdminFls.BankNumber].End - BLOCK_CTRL_PAGE_SIZE - BANK_CTRL_PAGE_SIZE;\r
+                       AdminFls.NewBlockAdminAddress = BankProp[AdminFls.BankNumber].End - (BLOCK_CTRL_PAGE_SIZE + BANK_CTRL_PAGE_SIZE);\r
 \r
                        CurrentJob.Op.Invalidate.WriteDataAddress = AdminFls.NewBlockDataAddress;\r
                        CurrentJob.Op.Invalidate.WriteAdminAddress = AdminFls.NewBlockAdminAddress;\r
@@ -1108,7 +1116,7 @@ void Fee_Init(void)
 \r
        AdminFls.BankNumber = 0;\r
        AdminFls.NewBlockDataAddress = BankProp[AdminFls.BankNumber].Start;\r
-       AdminFls.NewBlockAdminAddress = BankProp[AdminFls.BankNumber].End - BLOCK_CTRL_PAGE_SIZE - BANK_CTRL_PAGE_SIZE;\r
+       AdminFls.NewBlockAdminAddress = BankProp[AdminFls.BankNumber].End - (BLOCK_CTRL_PAGE_SIZE + BANK_CTRL_PAGE_SIZE);\r
 \r
        for (i = 0; i < NUM_OF_BANKS; i++) {\r
                AdminFls.BankStatus[i] = BANK_STATUS_NEW;\r
@@ -1133,6 +1141,7 @@ void Fee_SetMode(MemIf_ModeType mode)
 #if ( FLS_SET_MODE_API == STD_ON )\r
        Fls_SetMode(mode);\r
 #else\r
+       //lint --e{715} PC-Lint (715) - variable "mode" not used in this case\r
        DET_REPORTERROR(MODULE_ID_FEE, 0, FEE_SET_MODE_ID, FEE_E_NOT_SUPPORTED);\r
 #endif\r
 }\r
@@ -1149,7 +1158,7 @@ Std_ReturnType Fee_Read(uint16 blockNumber, uint16 blockOffset, uint8* dataBuffe
        VALIDATE_RV(ModuleStatus != MEMIF_UNINIT, FEE_READ_ID, FEE_E_UNINIT, E_NOT_OK);\r
        VALIDATE_RV(ModuleStatus == MEMIF_IDLE, FEE_READ_ID, FEE_E_BUSY, E_NOT_OK);\r
 \r
-       VALIDATE_RV(blockNumber >= (1 << NVM_DATASET_SELECTION_BITS), FEE_READ_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
+       VALIDATE_RV(blockNumber >= MIN_BLOCKNR, FEE_READ_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
        blockIndex = GET_BLOCK_INDEX_FROM_BLOCK_NUMBER(blockNumber);\r
        VALIDATE_RV(blockIndex < FEE_NUM_OF_BLOCKS, FEE_READ_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
        VALIDATE_RV(dataBufferPtr != NULL, FEE_READ_ID, FEE_E_INVALID_DATA_PTR, E_NOT_OK);\r
@@ -1188,7 +1197,7 @@ Std_ReturnType Fee_Write(uint16 blockNumber, uint8* dataBufferPtr)
        VALIDATE_RV(ModuleStatus != MEMIF_UNINIT, FEE_WRITE_ID, FEE_E_UNINIT, E_NOT_OK);\r
        VALIDATE_RV(ModuleStatus == MEMIF_IDLE, FEE_WRITE_ID, FEE_E_BUSY, E_NOT_OK);\r
 \r
-       VALIDATE_RV(blockNumber >= (1 << NVM_DATASET_SELECTION_BITS), FEE_WRITE_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
+       VALIDATE_RV(blockNumber >= MIN_BLOCKNR, FEE_WRITE_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
        blockIndex = GET_BLOCK_INDEX_FROM_BLOCK_NUMBER(blockNumber);\r
        VALIDATE_RV(blockIndex < FEE_NUM_OF_BLOCKS, FEE_WRITE_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
        VALIDATE_RV(dataBufferPtr != NULL, FEE_WRITE_ID, FEE_E_INVALID_DATA_PTR, E_NOT_OK);\r
@@ -1254,7 +1263,7 @@ Std_ReturnType Fee_InvalidateBlock(uint16 blockNumber)
        VALIDATE_RV(ModuleStatus != MEMIF_UNINIT, FEE_INVALIDATE_BLOCK_ID, FEE_E_UNINIT, E_NOT_OK);\r
        VALIDATE_RV(ModuleStatus == MEMIF_IDLE, FEE_INVALIDATE_BLOCK_ID, FEE_E_BUSY, E_NOT_OK);\r
 \r
-       VALIDATE_RV(blockNumber >= (1 << NVM_DATASET_SELECTION_BITS), FEE_INVALIDATE_BLOCK_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
+       VALIDATE_RV(blockNumber >= MIN_BLOCKNR, FEE_INVALIDATE_BLOCK_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
        blockIndex = GET_BLOCK_INDEX_FROM_BLOCK_NUMBER(blockNumber);\r
        VALIDATE_RV(blockIndex < FEE_NUM_OF_BLOCKS, FEE_INVALIDATE_BLOCK_ID, FEE_E_INVALID_BLOCK_NO, E_NOT_OK);\r
 \r
@@ -1280,8 +1289,11 @@ Std_ReturnType Fee_InvalidateBlock(uint16 blockNumber)
  */\r
 Std_ReturnType Fee_EraseImmediateBlock(uint16 blockNumber)\r
 {\r
+       //lint --e{715} PC-Lint (715) - function is not implemented and thus variable "blockNumber" is not used yet\r
+\r
        DET_REPORTERROR(MODULE_ID_FEE, 0, FEE_ERASE_IMMEDIATE_ID, FEE_E_NOT_IMPLEMENTED_YET);\r
 \r
+\r
        return E_NOT_OK;\r
 }\r
 \r
index b01543f7daa43b718aa9942a07dcb70d6c80ae72..6f18b99a9936b5341d296b63da111b57bb53c764 100644 (file)
  * and shall not be used.
  */\r
 \r
+//lint -esym(522,CalcCrc) // 522 PC-Lint exception for empty functions\r
+//lint -emacro(904,VALIDATE_RV,VALIDATE_NO_RV) //904 PC-Lint exception to MISRA 14.7 (validate macros).\r
+\r
+// Exception made as a result of that NVM_DATASET_SELECTION_BITS can be zero\r
+//lint -emacro(835, BLOCK_BASE_AND_SET_TO_BLOCKNR) // 835 PC-lint: A zero has been given as right argument to operator '<<' or '>>'\r
+\r
+\r
 \r
 #include "NvM.h"\r
+#include "NvM_Cbk.h"\r
 #include "Rte.h" // ???\r
 #if defined(USE_DEM)\r
 #include "Dem.h"\r
           Det_ReportError(MODULE_ID_NVM, 0, _api, _err); \\r
         }\r
 \r
+/*\r
 #define VALIDATE_RV(_exp,_api,_err,_rv ) \\r
         if( !(_exp) ) { \\r
           Det_ReportError(MODULE_ID_NVM, 0, _api, _err); \\r
           return _rv; \\r
         }\r
+*/\r
 \r
 #define VALIDATE_NO_RV(_exp,_api,_err ) \\r
-  if( !(_exp) ) { \\r
+        if( !(_exp) ) { \\r
           Det_ReportError(MODULE_ID_NVM, 0, _api, _err); \\r
           return; \\r
         }\r
@@ -72,6 +82,9 @@
 #define DET_REPORTERROR(_module,_instance,_api,_err)\r
 #endif\r
 \r
+#define BLOCK_BASE_AND_SET_TO_BLOCKNR(_blockbase, _set)        ((uint16)(_blockbase << NVM_DATASET_SELECTION_BITS) | _set)\r
+\r
+\r
 // State variable\r
 typedef enum {\r
   NVM_UNINITIALIZED = 0,\r
@@ -84,11 +97,6 @@ typedef enum {
   NVM_WRITE_ALL_PENDING\r
 } NvmStateType;\r
 \r
-typedef enum {\r
-       MEMIF_STATE_IDLE,\r
-       MEMIF_STATE_PENDING\r
-} MemIfStateType;\r
-\r
 typedef enum {\r
        BLOCK_STATE_IDLE,\r
        BLOCK_STATE_RECALC_CRC,\r
@@ -97,12 +105,12 @@ typedef enum {
        BLOCK_STATE_POSTCALC_CRC_DONE,\r
 \r
        BLOCK_STATE_LOAD_FROM_NV,\r
-       BLOCK_STATE_LOAD_FROM_NV_DONE,\r
-       BLOCK_STATE_LOAD_FROM_NV_REDUNDANT,\r
-       BLOCK_STATE_LOAD_FROM_ROM,\r
+//     BLOCK_STATE_LOAD_FROM_NV_DONE,\r
+//     BLOCK_STATE_LOAD_FROM_NV_REDUNDANT,\r
+//     BLOCK_STATE_LOAD_FROM_ROM,\r
 \r
-       BLOCK_STATE_WRITE_TO_NV,\r
-       BLOCK_STATE_WRITE_TO_NV_DONE,\r
+       BLOCK_STATE_WRITE_TO_NV\r
+//     BLOCK_STATE_WRITE_TO_NV_DONE\r
 } BlockStateType;\r
 \r
 \r
@@ -224,7 +232,7 @@ static void ReadBlock(const NvM_BlockDescriptorType *blockDescriptor, Administra
                SetMemifJobBusy();\r
                MemIfJobAdmin.BlockAdmin = adminBlock;\r
                MemIfJobAdmin.BlockDescriptor = blockDescriptor;\r
-               returnCode = MemIf_Read(blockDescriptor->NvramDeviceId, (blockDescriptor->NvBlockBaseNumber << NVM_DATASET_SELECTION_BITS) | setNumber, blockOffset, destAddress, blockDescriptor->NvBlockLength);\r
+               returnCode = MemIf_Read(blockDescriptor->NvramDeviceId, BLOCK_BASE_AND_SET_TO_BLOCKNR(blockDescriptor->NvBlockBaseNumber, setNumber), blockOffset, destAddress, blockDescriptor->NvBlockLength);\r
                if (returnCode != E_OK) {\r
                        AbortMemIfJob(MEMIF_JOB_FAILED);\r
                }\r
@@ -254,10 +262,10 @@ static void ReadAllInit(void)
        AdminMultiReq.NextBlockIndex = 0;\r
 \r
        for (i = 0; i < NVM_NUM_OF_NVRAM_BLOCKS; i++) {\r
-               if (BlockDescriptorList->SelectBlockForReadall\r
+               if ((BlockDescriptorList->SelectBlockForReadall)\r
 #if (NVM_SET_RAM_BLOCK_STATUS_API == STD_ON)                                           /** @req NVM345 */\r
-                               && (!AdminBlockTable->BlockValid                // TODO: Check if this is to be done like this\r
-                               || !AdminBlockTable->BlockChanged)              // TODO: Check if this is to be done like this\r
+                               && ((!AdminBlockTable->BlockValid)                      // TODO: Check if this is to be done like this\r
+                               || (!AdminBlockTable->BlockChanged))            // TODO: Check if this is to be done like this\r
 #endif\r
                                ) {\r
                        VALIDATE_NO_RV(BlockDescriptorList->RamBlockDataAddress != NULL, NVM_READ_ALL_ID, NVM_E_WRONG_CONFIG);\r
@@ -350,7 +358,7 @@ static void ReadAllCheckReadResult(void)
                        }\r
 \r
                        if (MemIfJobAdmin.BlockDescriptor->SingleBlockCallback != NULL) {\r
-                               MemIfJobAdmin.BlockDescriptor->SingleBlockCallback(NVM_SERVICE_ID, MemIfJobAdmin.BlockAdmin->ErrorStatus); /** @req NVM281 */\r
+                               (void)MemIfJobAdmin.BlockDescriptor->SingleBlockCallback(NVM_SERVICE_ID, MemIfJobAdmin.BlockAdmin->ErrorStatus); /** @req NVM281 */\r
                        }\r
                }\r
        } else {\r
@@ -389,7 +397,7 @@ static void ReadAllCheckReadResult(void)
                }\r
 \r
                if (MemIfJobAdmin.BlockDescriptor->SingleBlockCallback != NULL) {\r
-                       MemIfJobAdmin.BlockDescriptor->SingleBlockCallback(NVM_SERVICE_ID, MemIfJobAdmin.BlockAdmin->ErrorStatus); /** @req NVM281 */\r
+                       (void)MemIfJobAdmin.BlockDescriptor->SingleBlockCallback(NVM_SERVICE_ID, MemIfJobAdmin.BlockAdmin->ErrorStatus); /** @req NVM281 */\r
                }\r
        }\r
        nvmState = NVM_READ_ALL_PROCESSING;\r
@@ -407,7 +415,7 @@ static void WriteBlock(const NvM_BlockDescriptorType *blockDescriptor, Administr
                SetMemifJobBusy();\r
                MemIfJobAdmin.BlockAdmin = adminBlock;\r
                MemIfJobAdmin.BlockDescriptor = blockDescriptor;\r
-               returnCode = MemIf_Write(blockDescriptor->NvramDeviceId, (blockDescriptor->NvBlockBaseNumber << NVM_DATASET_SELECTION_BITS) | setNumber, sourceAddress);\r
+               returnCode = MemIf_Write(blockDescriptor->NvramDeviceId, BLOCK_BASE_AND_SET_TO_BLOCKNR(blockDescriptor->NvBlockBaseNumber, setNumber), sourceAddress);\r
                if (returnCode != E_OK) {\r
                        AbortMemIfJob(MEMIF_JOB_FAILED);\r
                }\r
@@ -434,10 +442,10 @@ static void WriteAllInit(void)
        for (i = 0; i < NVM_NUM_OF_NVRAM_BLOCKS; i++) {\r
                if ((BlockDescriptorList->RamBlockDataAddress != NULL)\r
 #if (NVM_SET_RAM_BLOCK_STATUS_API == STD_ON)                                           /** @req NVM344 */\r
-                               && AdminBlockTable->BlockValid                                          /** @req NVM682 */\r
-                               && AdminBlockTable->BlockChanged                                        /** @req NVM682 */\r
+                               && (AdminBlockTable->BlockValid)                                        /** @req NVM682 */\r
+                               && (AdminBlockTable->BlockChanged)                                      /** @req NVM682 */\r
 #endif\r
-                               && !AdminBlockTable->BlockWriteProtected){                      /** @req NVM432 *//** @req NVM433 */\r
+                               && (!AdminBlockTable->BlockWriteProtected)){                    /** @req NVM432 *//** @req NVM433 */\r
                        if (BlockDescriptorList->BlockUseCrc) {\r
                                AdminBlockTable->BlockState = BLOCK_STATE_RECALC_CRC;   /** @req NVM253 */\r
                        } else {\r
@@ -522,7 +530,7 @@ static void WriteAllCheckWriteResult(void)
                MemIfJobAdmin.BlockAdmin->ErrorStatus = NVM_REQ_OK;\r
 \r
                if (MemIfJobAdmin.BlockDescriptor->SingleBlockCallback != NULL) {\r
-                       MemIfJobAdmin.BlockDescriptor->SingleBlockCallback(NVM_SERVICE_ID, MemIfJobAdmin.BlockAdmin->ErrorStatus);\r
+                       (void)MemIfJobAdmin.BlockDescriptor->SingleBlockCallback(NVM_SERVICE_ID, MemIfJobAdmin.BlockAdmin->ErrorStatus);\r
                }\r
        } else {\r
                MemIfJobAdmin.BlockAdmin->NumberOfWriteFailed++;\r
@@ -539,7 +547,7 @@ static void WriteAllCheckWriteResult(void)
 #endif\r
 \r
                        if (MemIfJobAdmin.BlockDescriptor->SingleBlockCallback != NULL) {\r
-                               MemIfJobAdmin.BlockDescriptor->SingleBlockCallback(NVM_SERVICE_ID, MemIfJobAdmin.BlockAdmin->ErrorStatus);\r
+                               (void)MemIfJobAdmin.BlockDescriptor->SingleBlockCallback(NVM_SERVICE_ID, MemIfJobAdmin.BlockAdmin->ErrorStatus);\r
                        }\r
                }\r
        }\r
diff --git a/scripts/cc_cw.mk b/scripts/cc_cw.mk
new file mode 100644 (file)
index 0000000..a74cc0d
--- /dev/null
@@ -0,0 +1,159 @@
+\r
+\r
+HOST := $(shell uname)\r
+export prefix\r
+\r
+# If we are using codesourcery and cygwin..\r
+ifneq ($(findstring CYGWIN,$(UNAME)),)\r
+cygpath:= $(shell cygpath -m $(shell which cygpath))\r
+export CYGPATH=$(cygpath)\r
+endif\r
+\r
+# CW and paths...\r
+# Bin:   PowerPC_EABI_Tools/Command_Line_Tools/mwXXXXXX\r
+# libs:  PowerPC_EABI_Support/Runtime/Lib/Runtime.XXXX\r
+#        PowerPC_EABI_Support/MSL/MSL_C/PPC_EABI/Lib\r
+\r
+CW_COMPILE=/c/devtools/cw_55xx\r
+CW_BIN=$(CW_COMPILE)/PowerPC_EABI_Tools/Command_Line_Tools\r
+CW_LIB=$(CW_COMPILE)/PowerPC_EABI_Support/Runtime/Lib\r
+\r
+\r
+# ---------------------------------------------------------------------------\r
+# Compiler\r
+# CCFLAGS - compile flags\r
+\r
+CC     =       $(CW_BIN)/mwcceppc.exe\r
+#cflags-$(CFG_OPT_RELEASE) += -O3\r
+#cflags-$(CFG_OPT_DEBUG) += make  -O0\r
+\r
+#cflags-y              += -c \r
+cflags-y               += -dialect=c99\r
+cflags-y               += -gccext=on\r
+cflags-y               += -gdwarf-2\r
+cflags-y               += -gccinc\r
+\r
+# Generate dependencies\r
+cflags-y               += -gccdepends -MMD\r
+\r
+# Warnings\r
+cflags-y          += -W=most\r
+\r
+# Conformance\r
+cflags-y          += -abi=eabi\r
+cflags-$(CFG_VLE) += -ppc_asm_to_vle  # Convert ppc to vle ppc\r
+cflags-y          += -abi=eabi\r
+cflags-y          += -proc=5565\r
+cflags-y          += -fp=soft\r
+cflags-y          += -use_isel=on\r
+cflags-y          += -sdata=0xFFFF -sdata2=16\r
+\r
+#cflags-y          += -fno-strict-aliasing\r
+#cflags-y          += -fno-builtin\r
+\r
+# Get machine cflags\r
+#cflags-y              += $(cflags-$(ARCH))\r
+\r
+CFLAGS = $(cflags-y) $(cflags-yy)\r
+\r
+CCOUT          = -o $@ \r
+\r
+# ---------------------------------------------------------------------------\r
+# Preprocessor\r
+\r
+CPP    =       $(CC) -E\r
+\r
+CPP_ASM_FLAGS += -ppopt noline -dialect c\r
+\r
+comma = ,\r
+empty = \r
+space = $(empty) $(empty)\r
+\r
+\r
+\r
+cw_lib_path += -L$(CW_COMPILE)/PowerPC_EABI_Support/Runtime/Lib\r
+cw_lib_path += -L$(CW_COMPILE)/PowerPC_EABI_Support/MSL/MSL_C/PPC_EABI/Lib\r
+cc_inc_path += $(CW_COMPILE)/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include\r
+cc_inc_path += $(CW_COMPILE)/PowerPC_EABI_Support/MSL/MSL_C/PPC_EABI/Include\r
+inc-y += $(cc_inc_path)\r
+libpath-y += $(cw_lib_path)\r
+\r
+\r
+# libnames .bare - No operating system\r
+#          .E    - e500, e200\r
+#          UC    - Noooooo\r
+#          S     - software float\r
+# nothing really matches.......\r
+lib-$(CFG_VLE) += -lRuntime.PPCEABI.VS.a   # is this VLE?\r
+lib-$(CFG_VLE) += -lMSL_C.PPCEABI.bare.SZ.VS.a\r
+ifneq ($(CFG_VLE),y)\r
+lib-y += -lRuntime.PPCEABI.S.a \r
+lib-y += -lMSL_C.PPCEABI.bare.SZ.S.a\r
+endif\r
+\r
+C_TO_ASM = -P\r
+\r
+# ---------------------------------------------------------------------------\r
+# Linker\r
+#\r
+# LDFLAGS              - linker flags\r
+# LDOUT                - How to Generate linker output file\r
+# LDMAPFILE     - How to generate mapfile \r
+# ldcmdfile-y  - link cmd file\r
+# libpath-y            - lib paths\r
+# libitem-y            - the libs with path\r
+# lib-y                        - the libs, without path\r
+\r
+\r
+LD = $(CW_BIN)/mwldeppc.exe\r
+\r
+LDSCRIPT = -lcf\r
+\r
+# To make "rom" images (make LOAD() work)\r
+ldflags-y += -romaddr 0x0 \r
+ldflags-y += -rambuffer 0x0\r
+#ldflags-y += -nodefaults\r
+ldflags-y += -gdwarf-2\r
+ldflags-y += -m _start\r
+TE = elf\r
+ldflags-y += -map $(subst .$(TE),.map, $@)\r
+\r
+LDFLAGS += $(ldflags-y) \r
+LDOUT          = -o $@\r
+\r
+LD_FILE = -lcf\r
+\r
+libitem-y += $(libitem-yy)\r
+\r
+# ---------------------------------------------------------------------------\r
+# Assembler\r
+#\r
+# ASFLAGS              - assembler flags\r
+# ASOUT                - how to generate output file\r
+\r
+AS     =       $(CW_BIN)/mwasmeppc.exe\r
+\r
+asflags-y += -gnu_mode\r
+asflags-y += -proc e500 -gdwarf-2\r
+asflags-$(CFG_VLE) += -vle\r
+ASFLAGS += $(asflags-y)\r
+ASOUT = -o $@\r
+\r
+# ---------------------------------------------------------------------------\r
+# Dumper\r
+\r
+#DDUMP          = $(Q)$(COMPILER_ROOT)/$(cross_machine-y)-objcopy\r
+#DDUMP_FLAGS    = -O srec\r
+#OBJCOPY               = $(CROSS_COMPILE)objcopy\r
+\r
+# ---------------------------------------------------------------------------\r
+# Archiver\r
+#\r
+# AROUT                - archiver flags\r
+\r
+#AR    =       $(CROSS_COMPILE)ar\r
+#AROUT         = $@\r
+\r
+\r
+\r
+\r
index 09670f5434843cf85dd05518ffc23dac346a9a0a..977561dc0484c4c979746cbccddfd8a2ead5e72f 100644 (file)
@@ -1,5 +1,11 @@
 \r
 \r
+# Arch specific settings\r
+ifneq ($(ARCH),)\r
+ include $(ROOTDIR)/$(ARCH_PATH-y)/scripts/gcc.mk\r
+endif\r
+\r
+\r
 HOST := $(shell uname)\r
 export prefix\r
 \r
@@ -33,7 +39,7 @@ cflags-y              += -MMD
 \r
 # Warnings\r
 cflags-y          += -Wall\r
-cflags-y          += -Winline  # warn if inline failed\r
+#cflags-y          += -Winline # warn if inline failed\r
 #cflags-y          += -pedantic\r
 \r
 # Conformance\r
@@ -51,6 +57,7 @@ CCOUT                 = -o $@
 # Preprocessor\r
 \r
 CPP    =       $(CC) -E\r
+CPP_ASM_FLAGS = -x assembler-with-cpp \r
 \r
 comma = ,\r
 empty = \r
@@ -61,6 +68,9 @@ space = $(empty) $(empty)
 # lib/gcc/<machine>/<version>/<multilib>\r
 # Libs related to the library (libc.a,libm.a,etc) are under:\r
 # <machine>/lib/<multilib>\r
+# \r
+# Can't remember why haven't I just used gcc to link instead of ld? (it should \r
+# figure out the things below by itself)\r
 \r
 # It seems some versions of make want "\=" and some "="\r
 # "=" - msys cpmake on windows 7 \r
@@ -87,11 +97,18 @@ libpath-y += -L$(gcc_lib_path)
 \r
 LD = $(CROSS_COMPILE)ld\r
 \r
+\r
+LD_FILE = -T\r
+\r
 LDOUT          = -o $@\r
 TE = elf\r
-LDMAPFILE = -M > $(subst .$(TE),.map, $@)\r
+LDFLAGS += -Map $(subst .$(TE),.map, $@)\r
 \r
 libitem-y += $(libitem-yy)\r
+\r
+LD_START_GRP = --start-group\r
+LD_END_GRP = --end-group\r
+\r
 #LDFLAGS += --gc-section\r
 \r
 # ---------------------------------------------------------------------------\r
old mode 100644 (file)
new mode 100755 (executable)
diff --git a/scripts/gcc_map_memory.awk b/scripts/gcc_map_memory.awk
new file mode 100644 (file)
index 0000000..cb8ff95
--- /dev/null
@@ -0,0 +1,32 @@
+\r
+BEGIN {\r
+       kilobyte = 1024\r
+       \r
+       print "  >> Image size: (decimal)"\r
+}\r
+\r
+/^\.text/ {\r
+       text += $3; \r
+       rom+=$3 \r
+};\r
+\r
+/^\.data/ {\r
+       data += $3;\r
+       rom+=$3; \r
+       ram+=$3\r
+};\r
+\r
+/^\.bss/ {\r
+       bss += $3; \r
+       ram+=$3\r
+};\r
+\r
+END { \r
+\r
+       printf "%-10s %10s %10.1f %s\n", "  text:", text " B", text/kilobyte, "kB";\r
+       printf "%-10s %10s %10.1f %s\n", "  data:", data " B", data/kilobyte, "kB";\r
+       printf "%-10s %10s %10.1f %s\n", "  bss:", bss " B", bss/kilobyte, "kB";        \r
+       printf "%-10s %10s %10.1f %s\n", "  ROM:", rom " B", rom/kilobyte, "kB";\r
+       printf "%-10s %10s %10.1f %s\n", "  RAM:", ram " B", ram/kilobyte, "kB";\r
+       \r
+}
\ No newline at end of file
index f4ce815ec992f4518b90b9e7032ef506f259ef94..b0cb0db4ebd58e49cb0e2af2139e47e462e8d958 100644 (file)
@@ -11,10 +11,17 @@ lnt\co-gcc.lnt
 \r
 \r
 // EIJAS STUFF:\r
+-u //unit-checkout since not checking the test-files. Supresses the inter-module\r
+       //messages 526,552,628,714.720,755-759,765,768-769,948,974,1526-1527,1711,1714-1715,1755\r
+\r
 -zero //always return exit code 0 (avoiding makefile interruption)\r
 \r
-//Reset which files are viewed library-files to only treat <> as such\r
-+libclass(angle)\r
+// SET WARNING LEVEL:\r
+-w3 //-wlib(0)// 1:only errors, 2: +warnings 3: + infos\r
+\r
+//Reset which files are viewed library-files to only treat the ones in msys library as such\r
++libclass()\r
++libdir(*/msys/include*)\r
 \r
 //+os(lintOutput.TMP) //append output to file\r
 //+oe(lintErrorOutput.TMP)//append error output to file\r
@@ -26,8 +33,7 @@ lnt\co-gcc.lnt
 -format=%f:%l:%c:\s%t:\s%n\sPC-lint:\s%m\r
 \r
 \r
-// SET WARNING LEVEL:\r
--w3 //-wlib(0)// 1:only errors, 2: +warnings 3: + infos\r
+\r
 \r
 \r
 -A(C99)//use C99 standard\r
@@ -35,7 +41,7 @@ lnt\co-gcc.lnt
 +fie // Use to view enums as ints (tar bort tex PC641)\r
 \r
 \r
-// RULES TO TURN OFF\r
+// RULES TO TURN OFF (diskussed and confirmed)\r
 //-efile(755,*.h)\r
 -e755 //e switch off for header files\r
 -e756 //e switch off for header files\r
@@ -49,6 +55,18 @@ lnt\co-gcc.lnt
 -esym(961, 19.7) //Advisory Rule that should be switched off\r
 -esym(961, 19.13)//Advisory Rule that should be switched off\r
 \r
+\r
+-esym(960, 10.1) //implicit conversion...\r
+-esym(960,18.4) // Unions shall not be used.\r
+-e621 //Complains about identifiers names longer than _ characters. Length set by -idlen(). [1.4, 5.1] OK in autosar.\r
+\r
+-e766 //Header file not used in module...\r
+\r
+// Rules ok to remove by autosar:\r
+// [1.4, 5.1](621), 8.10, 12.10, 11.1-11.5, 14.3(960).\r
+-esym(960,14.3)\r
+\r
+\r
 // RULES MAYBE TO TURN OFF\r
 //-e534 //only turned of for OS, printf? kolla hur vanlig...\r
 //-e757\r
@@ -61,6 +79,20 @@ lnt\co-gcc.lnt
 \r
 // RULES TO DISCUSS IF TO SWITCH OFF OR NOT\r
 -esym(961,12.6)//Advisory Rule (Boolean expression required for operator...)\r
+-esym(961,12.13)//Advisory Rule (++, -- not with other operators...)\r
+-esym(961,12.1)\r
+\r
+-e830 //location cited in prior message\r
+-e831 //reference cited in prior message\r
+\r
+-e788 // PC-Lint message: Enum constant 'Symbol' not used within defaulted switch\r
+\r
+-esym(960, 16.9) // Function identifier used without '&'\r
+\r
+\r
+// RULES TO TURN OFF FOR OLD MODULES, but think of them when having new modules\r
+-esym(960,17.4) // To many messages to be possible to handle locally!\r
+\r
 \r
 // ERRORS SWITCHED OFF TEMPORARLY\r
 //-e525\r
@@ -70,7 +102,6 @@ lnt\co-gcc.lnt
 //-e714 //Symbol not referenced\r
 //-e715 //Symbol not referenced\r
 \r
-//-e830 //location cited in prior message\r
-//-e831 //reference cited in prior message\r
-\r
 //-esym(960, 12.5) //Non-primary expression used with logical operator.\r
+\r
+//-e785 // Too few initializers for aggregate ...\r
index 52c43cbdc036e6280cf08e9d28d28484aa2fcb03..ddbfac7e530d9eb2aa3f32ce1ce60c42faeb6f71 100644 (file)
@@ -1,19 +1,30 @@
 \r
-CFG_ARCH_$(ARCH):=y\r
-\r
-RELDIR := $(subst $(TOPDIR)/,,$(CURDIR))\r
-\r
-# Create the target name... \r
-target := $(subst /,_,$(SUBDIR))\r
 \r
-#goal=$(subst /cygdrive/c/,c:/,$(abspath $@))\r
-#goal=$(abspath $@)\r
-goal=$@\r
+###############################################################################\r
+# BUILD SETTINGS                                                              #\r
+###############################################################################\r
 \r
-#===== MODULE CONFIGURATION =====\r
+# Board settings\r
 include $(ROOTDIR)/boards/$(BOARDDIR)/build_config.mk\r
+\r
+# Project settings\r
 -include ../build_config.mk\r
 \r
+# Perform build system version check\r
+include $(ROOTDIR)/scripts/version_check.mk\r
+\r
+\r
+\r
+###############################################################################\r
+# MODULE CONFIGURATION                                                        #\r
+###############################################################################\r
+\r
+# Some useful vars\r
+CFG_ARCH_$(ARCH):=y\r
+RELDIR := $(subst $(TOPDIR)/,,$(CURDIR))\r
+target := $(subst /,_,$(SUBDIR))\r
+goal=$@\r
+\r
 define MOD_AVAIL_template\r
        MOD_$(1)=y\r
 endef\r
@@ -46,7 +57,11 @@ ifneq ($(not_avail),)
 $(error Trying to build a module that is not available: $(not_avail))\r
 endif\r
 \r
-#===== COMPILER CONFIG =====\r
+\r
+\r
+###############################################################################\r
+# TOOLS CONFIGURATION                                                         #\r
+###############################################################################\r
 \r
 # set debug optimization level as default\r
 ifeq ($(SELECT_OPT),)\r
@@ -57,12 +72,11 @@ $(eval CFG_$(SELECT_OPT)=y)
 \r
 ARCH_PATH-y = arch/$(ARCH_FAM)/$(ARCH)\r
 \r
-# Include compiler generic and arch specific\r
+# Include compiler settings\r
 COMPILER?=gcc\r
-ifneq ($(ARCH),)\r
-include $(ROOTDIR)/$(ARCH_PATH-y)/scripts/gcc.mk\r
-endif\r
 include $(ROOTDIR)/scripts/cc_$(COMPILER).mk\r
+\r
+# Include pclint or splint settings\r
 ifneq ($(PCLINT),)\r
 include $(ROOTDIR)/scripts/cc_pclint.mk\r
 endif\r
@@ -72,11 +86,21 @@ endif
 \r
 \r
 \r
-# Get object files\r
+###############################################################################\r
+# PROJECT MAKEFILE                                                            #\r
+###############################################################################\r
+\r
+# Include project makefile\r
 include ../makefile\r
 \r
+# All module object files (guarded for backwards compatability)\r
+ifndef _BOARD_COMMON_MK\r
+include $(ROOTDIR)/boards/board_common.mk\r
+endif\r
+\r
+\r
+##### For backwards compatability with older project makefiles:\r
 \r
-##### For backwards compatability with older project makefiles\r
 # Remove dependency on libkernel\r
 deprecated-libs += $(ROOTDIR)/libs/libkernel_$(ARCH_MCU).a\r
 deprecated-libs-included = $(filter $(deprecated-libs),$(libitem-y))\r
@@ -97,10 +121,55 @@ endif
 \r
 #####\r
 \r
+inc-y += ../include\r
 inc-y += $(ROOTDIR)/include\r
 inc-y += $(ROOTDIR)/include/$(ARCH_FAM)\r
+inc-y += $(ROOTDIR)/include/$(ARCH_FAM)/$(ARCH)\r
+  \r
+VPATH += $(ROOTDIR)/$(SUBDIR)/src\r
+VPATH += $(ROOTDIR)/$(SUBDIR)\r
+\r
+\r
+\r
+###############################################################################\r
+# LINT                                                                        #\r
+###############################################################################\r
+\r
+LINT_EXCLUDE_PATHS := $(abspath $(LINT_EXCLUDE_PATHS))\r
+$(info $(LINT_EXCLUDE_PATHS))\r
+\r
+LINT_BAD_EXCLUDE_PATHS := $(filter %/,$(LINT_EXCLUDE_PATHS))\r
+ifneq ($(LINT_BAD_EXCLUDE_PATHS),)\r
+$(warning LINT_EXCLUDE_PATHS entries must not end in '/'. Ignoring $(LINT_BAD_EXCLUDE_PATHS))\r
+endif\r
+\r
+LINT_NICE_EXCLUDE_PATHS := $(filter-out %/,$(LINT_EXCLUDE_PATHS))\r
+LINT_NICE_EXCLUDE_PATHS := $(foreach path,$(LINT_NICE_EXCLUDE_PATHS),$(path)/)\r
+\r
+ifneq ($(PCLINT),)\r
+define run_pclint\r
+$(if \r
+$(filter $(dir $(abspath $<)),$(LINT_NICE_EXCLUDE_PATHS)),\r
+$(info $(abspath $<):0:0: Info: Not running lint check on $(abspath $<)),\r
+$(Q)$(PCLINT) $(lint_extra) $(addprefix $(lintinc_ext),$(inc-y)) $(addprefix $(lintdef_ext),$(def-y)) $(abspath $<))\r
+endef\r
+endif\r
+\r
+ifneq ($(SPLINT),)\r
+define run_splint\r
+$(if \r
+$(filter $(dir $(abspath $<)),$(LINT_NICE_EXCLUDE_PATHS)),\r
+$(info $(abspath $<):0:0: Info: Not running lint check on $(abspath $<)),\r
+$(Q)$(SPLINT) $(splint_extra) $(addprefix $(lintinc_ext),$(inc-y)) $(addprefix $(lintdef_ext),$(def-y)) $(abspath $<))\r
+endef\r
+endif\r
+\r
 \r
 \r
+###############################################################################\r
+# TOP-LEVEL TARGETS                                                           #\r
+###############################################################################\r
+\r
 .PHONY clean: \r
 clean: FORCE\r
        @-rm -f *.o *.d *.h *.elf *.a *.ldp\r
@@ -116,47 +185,33 @@ FORCE:
 $(ROOTDIR)/binaries:\r
        @mkdir -p $@\r
 \r
-# build- targets are "end" target that the included makefile want's to build\r
 .PHONY all:\r
 all: $(build-exe-y) $(build-hex-y) $(build-lib-y) $(build-bin-y) $(ROOTDIR)/binaries\r
        @cp -v $(build-lib-y) $(build-exe-y) $(build-hex-y) $(build-bin-y) $(ROOTDIR)/binaries\r
 \r
 \r
-# Determine what kind of filetype to build from  \r
-VPATH += $(ROOTDIR)/$(SUBDIR)/src\r
-VPATH += $(ROOTDIR)/$(SUBDIR)\r
+.SUFFIXES:\r
 \r
-inc-y += ../include\r
 \r
-.SUFFIXES:\r
 \r
+###############################################################################\r
+# TARGETS                                                                     #\r
+###############################################################################\r
+       \r
 # Simple depencendy stuff\r
 -include $(subst .o,.d,$(obj-y))\r
 # Some dependency for xxx_offset.c/h also\r
 -include $(subst .h,.d,$(dep-y))\r
 \r
-ifneq ($(PCLINT),)\r
-define run_pclint\r
-$(Q)$(PCLINT) $(lint_extra) $(addprefix $(lintinc_ext),$(inc-y)) $(addprefix $(lintdef_ext),$(def-y)) $(abspath $<)\r
-endef\r
-endif\r
-\r
-ifneq ($(SPLINT),)\r
-define run_splint\r
-$(Q)$(SPLINT) $(splint_extra) $(addprefix $(lintinc_ext),$(inc-y)) $(addprefix $(lintdef_ext),$(def-y)) $(abspath $<)\r
-endef\r
-endif\r
-\r
-\r
 # Compile\r
 %.o: %.c\r
        @echo "  >> CC $(notdir $<)"\r
-       $(Q)$(CC) -c $(CFLAGS) -o $(goal) $(addprefix -I ,$(inc-y)) $(addprefix -D,$(def-y)) $(abspath $<)\r
+       $(Q)$(CC) -c $(CFLAGS) -o $(goal) $(addprefix -I,$(inc-y)) $(addprefix -D,$(def-y)) $(abspath $<)\r
+# run lint if enabled\r
        $(run_pclint)\r
        $(run_splint)\r
 \r
 # Assembler\r
-\r
 %.o: %.s\r
        @echo "  >> AS $(notdir $<)  $(ASFLAGS)"\r
        $(Q)$(AS) $(ASFLAGS) -o $(goal) $<\r
@@ -166,66 +221,63 @@ endif
 \r
 %.s: %.sx\r
        @echo "  >> CPP $(notdir $<)"\r
-       $(Q)$(CPP) -x assembler-with-cpp -E -o $@ $(addprefix -I ,$(inc-y)) $(addprefix -D,$(def-y)) $<\r
-\r
+       $(Q)$(CPP) $(CPP_ASM_FLAGS) -o $@ $(addprefix -I,$(inc-y)) $(addprefix -D,$(def-y)) $<\r
 \r
 # Board linker files are in the board directory \r
 inc-y += $(ROOTDIR)/boards/$(BOARDDIR)\r
 \r
 # Preprocess linker files..\r
-%.ldp: %.ldf\r
+%.ldp %.lcf: %.ldf\r
        @echo "  >> CPP $<"\r
-       $(Q)$(CPP) -E -P -x assembler-with-cpp -o $@ $(addprefix -I ,$(inc-y)) $(addprefix -D,$(def-y)) $<\r
+       $(Q)$(CPP) -E -P $(CPP_ASM_FLAGS) -o $@ $(addprefix -I,$(inc-y)) $(addprefix -D,$(def-y)) $<\r
 \r
-#      @cat $@ \r
-       \r
 .PHONY $(ROOTDIR)/libs:\r
 $(ROOTDIR)/libs:\r
        $(Q)mkdir -p $@\r
 \r
 dep-y += $(ROOTDIR)/libs\r
        \r
-# lib  \r
+# lib output\r
 $(build-lib-y): $(dep-y) $(obj-y)\r
        @echo "  >> AR $@"   \r
        $(Q)$(AR) -r -o $@ $(obj-y) 2> /dev/null\r
 \r
+# hex output\r
 $(build-hex-y): $(build-exe-y)\r
        @echo "  >> OBJCOPY $@"   \r
        $(Q)$(CROSS_COMPILE)objcopy -O ihex $< $@\r
        \r
+# bin output\r
 $(build-bin-y): $(build-exe-y)\r
        @echo "  >> OBJCOPY $@"   \r
        $(Q)$(CROSS_COMPILE)objcopy -O binary $< $@     \r
 \r
 # Linker\r
-# Could use readelf -S instead of parsing the *.map file.\r
 $(build-exe-y): $(dep-y) $(obj-y) $(sim-y) $(libitem-y) $(ldcmdfile-y)\r
        @echo "  >> LD $@"\r
 ifeq ($(CROSS_COMPILE),)\r
        $(Q)$(CC) $(LDFLAGS) -o $@ $(libpath-y) $(obj-y) $(lib-y) $(libitem-y)  \r
-else   \r
-       $(Q)$(LD) $(LDFLAGS) -T $(ldcmdfile-y) -o $@ $(libpath-y) --start-group $(obj-y) $(lib-y) $(libitem-y) --end-group $(LDMAPFILE)\r
-ifdef CFG_HC1X\r
-       @$(CROSS_COMPILE)objdump -h $@ | gawk -f $(ROOTDIR)/scripts/hc1x_memory.awk\r
 else\r
-       @echo "Image size: (decimal)"\r
-       @gawk --non-decimal-data        '/^\.text/ { print "  text:"  $$3+0 " bytes"; rom+=$$3 };\\r
-                                                               /^\.data/ { print "  data:"  $$3+0 " bytes"; rom+=$$3; ram+=$$3}; \\r
-                                                               /^\.bss/ { print "  bss :"  $$3+0 " bytes"; ram+=$$3}; \\r
-                                                               END { print "  ROM: ~" rom " bytes"; print "  RAM: ~" ram " bytes"}' $(subst .elf,.map,$@)\r
-ifeq ($(BUILD_LOAD_MODULE),y)\r
+       $(Q)$(LD) $(LDFLAGS) $(LD_FILE) $(ldcmdfile-y) -o $@ $(libpath-y) $(LD_START_GRP) $(obj-y) $(lib-y) $(libitem-y) $(LD_END_GRP) $(LDMAPFILE)\r
+ ifdef CFG_MC912DG128A\r
+    # Print memory layout\r
+       @$(CROSS_COMPILE)objdump -h $@ | gawk -f $(ROOTDIR)/scripts/hc1x_memory.awk\r
+ else\r
+  ifeq ($(COMPILER),gcc)       \r
+    # Print memory layout\r
+       @echo ""\r
+       @gawk --non-decimal-data -f $(ROOTDIR)/scripts/gcc_map_memory.awk $(subst .elf,.map,$@)\r
+  endif # ($(COMPILER),gcc)\r
+   \r
+  ifeq ($(BUILD_LOAD_MODULE),y)\r
        @$(CROSS_COMPILE)objcopy -O srec $@ $@.raw.s19\r
        srec_cat $@.raw.s19 --crop 0x8008000 0x803fffc --fill 0x00 0x8008000 0x803fffc --l-e-crc32 0x803fffc -o $@.lm.s19\r
-endif\r
-endif\r
-endif\r
+  endif #($(BUILD_LOAD_MODULE),y)\r
+   \r
+ endif #CFG_MC912DG128A\r
+\r
+endif #($(CROSS_COMPILE),)\r
        @echo\r
        @echo "  >>>>>>>  DONE  <<<<<<<<<"\r
        @echo\r
        \r
-       \r
-$(size-exe-y): $(build-exe-y)\r
-       $(Q)$(OBJDUMP) -h $<\r
-       @echo TODO: Parse the file....\r
-\r
diff --git a/scripts/version_check.mk b/scripts/version_check.mk
new file mode 100644 (file)
index 0000000..097dc28
--- /dev/null
@@ -0,0 +1,39 @@
+\r
+\r
+# Verification that the build settings are sound\r
+\r
+CORE_BUILD_SYSTEM_VERSION_MAJOR = 1\r
+CORE_BUILD_SYSTEM_VERSION_MINOR = 0\r
+CORE_BUILD_SYSTEM_VERSION_PATCH = 0\r
+\r
+# Only check if specified \r
+# (remove when we want to start checking always)\r
+ifneq ($(REQUIRED_BUILD_SYSTEM_VERSION),)\r
+\r
+REQUIRED_BUILD_SYSTEM_VERSION:=$(subst ., ,$(REQUIRED_BUILD_SYSTEM_VERSION))\r
+REQUIRED_BUILD_SYSTEM_VERSION_MAJOR=$(word 1,$(REQUIRED_BUILD_SYSTEM_VERSION))\r
+REQUIRED_BUILD_SYSTEM_VERSION_MINOR=$(word 2,$(REQUIRED_BUILD_SYSTEM_VERSION))\r
+REQUIRED_BUILD_SYSTEM_VERSION_PATCH=$(word 3,$(REQUIRED_BUILD_SYSTEM_VERSION))\r
+\r
+ifneq ($(CORE_BUILD_SYSTEM_VERSION_MAJOR),$(REQUIRED_BUILD_SYSTEM_VERSION_MAJOR))\r
+ERROR_BUILD_SYSTEM_VERSION = y\r
+endif\r
+ifneq ($(CORE_BUILD_SYSTEM_VERSION_MINOR),$(REQUIRED_BUILD_SYSTEM_VERSION_MINOR))\r
+ERROR_BUILD_SYSTEM_VERSION = y\r
+endif\r
+ifeq (y,$(ERROR_BUILD_SYSTEM_VERSION))\r
+$(error Build system version mismatch. Core has $(CORE_BUILD_SYSTEM_VERSION_MAJOR).$(CORE_BUILD_SYSTEM_VERSION_MINOR), Project requires $(REQUIRED_BUILD_SYSTEM_VERSION_MAJOR).$(REQUIRED_BUILD_SYSTEM_VERSION_MINOR))\r
+endif\r
+\r
+else # Only check if specified\r
+$(info >>>> Build system version check not performed.)\r
+\r
+endif # Only check if specified\r
+\r
+define assert_exist\r
+$(if $(value $(1)),,\r
+$(error [Build system] Missing variable: $(1)))\r
+endef\r
+\r
+#$(call assert_exist,BOARDDIR)\r
+#$(call assert_exist,CROSS_COMPILE)\r
index f3d6ed18e1ccf72fb890e1e0763d9f242dd382b2..1f5b03d1fdfb370bcf5214d54b3ae09c77049aca 100644 (file)
  * for more details.\r
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
+//lint -emacro(904,VALIDATE,VALIDATE_RV,VALIDATE_NO_RV) //904 PC-Lint exception to MISRA 14.7 (validate macros).\r
+\r
 #include "EcuM.h"\r
 #include "Modules.h"\r
-#include "string.h"\r
-#include "Os.h"\r
+#include <string.h>\r
+#include <Os.h>\r
 #include "EcuM_Internals.h"\r
 #include "EcuM_Cbk.h"\r
 #include "Mcu.h"\r
 #include "Det.h"\r
-#include "irq.h"\r
+//#include "isr.h"\r
 #if defined(USE_NVM)\r
 #include "Nvm.h"\r
 #endif\r
+#if defined(USE_RTE)\r
+#include "Rte_Main.h"\r
+#endif\r
 \r
-EcuM_GobalType internal_data;\r
+EcuM_GlobalType internal_data;\r
 \r
 void EcuM_Init( void )\r
 {\r
+       Std_ReturnType status;\r
        internal_data.current_state = ECUM_STATE_STARTUP_ONE;\r
 \r
        // Initialize drivers that are needed to determine PostBuild configuration\r
@@ -39,13 +45,12 @@ void EcuM_Init( void )
        InitOS();\r
 \r
        // Enable interrupts\r
-       Irq_Init();\r
+       Os_IsrInit();\r
 \r
        // Determine PostBuild configuration\r
        internal_data.config = EcuM_DeterminePbConfiguration();\r
 \r
-       // Check consistency of PB configuration\r
-       // TODO\r
+       // TODO: Check consistency of PB configuration\r
 \r
        // Initialize drivers needed before the OS-starts\r
        EcuM_AL_DriverInitOne(internal_data.config);\r
@@ -53,26 +58,37 @@ void EcuM_Init( void )
        // Determine the reset/wakeup reason\r
        // TODO Mcu_ResetType type = Mcu_GetResetReason();\r
 \r
+       // Moved this here because EcuM_SelectShutdownTarget needs us to be initilized.\r
+       internal_data.initiated = TRUE;\r
+\r
        // Set default shutdown target\r
-       internal_data.shutdown_target = internal_data.config->EcuMDefaultShutdownTarget;\r
-       internal_data.shutdown_mode = internal_data.config->EcuMDefaultShutdownMode;\r
+       status = EcuM_SelectShutdownTarget(internal_data.config->EcuMDefaultShutdownTarget,internal_data.config->EcuMDefaultSleepMode);/** @req EcuM2181 */\r
+       if(status!=E_OK){\r
+               //TODO: Report error.\r
+       }\r
+\r
 \r
        // Set default application mode\r
-       internal_data.app_mode = internal_data.config->EcuMDefaultAppMode;\r
+       status =  EcuM_SelectApplicationMode(internal_data.config->EcuMDefaultAppMode);\r
+       if(status!=E_OK){\r
+               //TODO: Report error.\r
+       }\r
+\r
 #if defined(USE_COMM)\r
        internal_data.run_comm_requests = 0;\r
 #endif\r
        internal_data.run_requests = 0;\r
        internal_data.postrun_requests = 0;\r
 \r
-       internal_data.initiated = TRUE;\r
-\r
        // Start this baby up\r
-       StartOS(internal_data.app_mode);\r
+       AppModeType appMode;\r
+       EcuM_GetApplicationMode(&appMode);\r
+       StartOS(appMode); /** @req EcuM2141 */\r
 }\r
 \r
-void EcuM_StartupTwo()\r
+void EcuM_StartupTwo(void)\r
 {\r
+       //TODO:  Validate that we are in state STARTUP_ONE.\r
 #if defined(USE_NVM)\r
        extern CounterType Os_Arc_OsTickCounter;\r
        TickType tickTimerStart, tickTimer, tickTimerElapsed;\r
@@ -92,7 +108,7 @@ void EcuM_StartupTwo()
        // Start timer to wait for NVM job to complete\r
        tickTimerStatus = GetCounterValue(Os_Arc_OsTickCounter , &tickTimerStart);\r
        if (tickTimerStatus != E_OK) {\r
-               // TODO: Generate error?\r
+               Det_ReportError(MODULE_ID_ECUM, 0, ECUM_ARC_STARTUPTWO_ID, ECUM_E_ARC_TIMERERROR);\r
        }\r
 #endif\r
 \r
@@ -109,16 +125,15 @@ void EcuM_StartupTwo()
                tickTimer = tickTimerStart;     // Save this because the GetElapsedCounterValue() will destroy it.\r
                tickTimerStatus =  GetElapsedCounterValue(Os_Arc_OsTickCounter, &tickTimer, &tickTimerElapsed);\r
                if (tickTimerStatus != E_OK) {\r
-                       // TODO: Generate error?\r
+                       Det_ReportError(MODULE_ID_ECUM, 0, ECUM_ARC_STARTUPTWO_ID, ECUM_E_ARC_TIMERERROR);\r
                }\r
        } while( (readAllResult == NVM_REQ_PENDING) && (tickTimerElapsed < internal_data.config->EcuMNvramReadAllTimeout) );\r
-#endif\r
 \r
        // Initialize drivers that need NVRAM data\r
        EcuM_AL_DriverInitThree(internal_data.config);\r
+#endif\r
 \r
-       // Indicate mode change to RTE\r
-       // TODO\r
+       // TODO: Indicate mode change to RTE\r
 \r
        // If coming from startup sequence, enter Run mode\r
 //     if (internal_data.current_state == ECUM_STATE_STARTUP_TWO)\r
@@ -127,7 +142,7 @@ void EcuM_StartupTwo()
 }\r
 \r
 // Typically called from OS shutdown hook\r
-void EcuM_Shutdown()\r
+void EcuM_Shutdown(void)\r
 {\r
        internal_data.current_state = ECUM_STATE_GO_OFF_TWO;\r
 \r
@@ -143,13 +158,17 @@ void EcuM_Shutdown()
 #if (MCU_PERFORM_RESET_API == STD_ON)\r
                Mcu_PerformReset();\r
 #else\r
-               for(;;);\r
+               for(;;)\r
+                {\r
+                  ;\r
+                }\r
 #endif\r
        }\r
 }\r
 \r
 Std_ReturnType EcuM_GetState(EcuM_StateType* state)\r
 {\r
+       VALIDATE_RV(internal_data.initiated, ECUM_GETSTATE_ID, ECUM_E_NOT_INITIATED, E_NOT_OK);\r
        VALIDATE_RV(state != NULL, ECUM_GETSTATE_ID, ECUM_E_NULL_POINTER, E_NOT_OK);\r
 \r
        *state = internal_data.current_state;\r
@@ -161,9 +180,9 @@ Std_ReturnType EcuM_SelectApplicationMode(AppModeType appMode)
 {\r
        VALIDATE_RV(internal_data.initiated, ECUM_SELECTAPPMODE_ID, ECUM_E_NOT_INITIATED, E_NOT_OK);\r
 \r
-       // TODO Save this application mode for next startup\r
+       internal_data.app_mode = appMode;\r
 \r
-       return E_NOT_OK;\r
+       return E_OK;\r
 }\r
 \r
 Std_ReturnType EcuM_GetApplicationMode(AppModeType* appMode)\r
@@ -181,6 +200,7 @@ Std_ReturnType EcuM_SelectBootTarget(EcuM_BootTargetType target)
        VALIDATE_RV(internal_data.initiated, ECUM_SELECT_BOOTARGET_ID, ECUM_E_NOT_INITIATED, E_NOT_OK);\r
 \r
        // TODO Do something great here\r
+       (void) target;\r
 \r
        return E_NOT_OK;\r
 }\r
@@ -191,29 +211,32 @@ Std_ReturnType EcuM_GetBootTarget(EcuM_BootTargetType* target)
        VALIDATE_RV(target != NULL, ECUM_GET_BOOTARGET_ID, ECUM_E_NULL_POINTER, E_NOT_OK);\r
 \r
        // TODO Return selected boot target here\r
+       (void) target;\r
 \r
        return E_NOT_OK;\r
 }\r
 \r
 \r
-Std_ReturnType EcuM_SelectShutdownTarget(EcuM_StateType target, uint8 mode)\r
+Std_ReturnType EcuM_SelectShutdownTarget(EcuM_StateType shutdownTarget, uint8 sleepMode)\r
 {\r
        VALIDATE_RV(internal_data.initiated, ECUM_SELECTSHUTDOWNTARGET_ID, ECUM_E_NOT_INITIATED, E_NOT_OK);\r
-       VALIDATE_RV((target == ECUM_STATE_OFF) || (target == ECUM_STATE_RESET) || (target == ECUM_STATE_SLEEP), ECUM_SELECTSHUTDOWNTARGET_ID, ECUM_E_INVALID_PAR, E_NOT_OK);\r
+       VALIDATE_RV((shutdownTarget == ECUM_STATE_OFF) || (shutdownTarget == ECUM_STATE_RESET) || (shutdownTarget == ECUM_STATE_SLEEP), ECUM_SELECTSHUTDOWNTARGET_ID, ECUM_E_INVALID_PAR, E_NOT_OK);\r
 \r
-       internal_data.shutdown_target = target;\r
-       internal_data.shutdown_mode = mode;\r
+       internal_data.shutdown_target = shutdownTarget;\r
+       internal_data.sleep_mode = sleepMode;\r
 \r
        return E_OK;\r
 }\r
 \r
 \r
-Std_ReturnType EcuM_GetShutdownTarget(EcuM_StateType *shutdownTarget, uint8 *sleepMode)\r
+Std_ReturnType EcuM_GetShutdownTarget(EcuM_StateType* shutdownTarget, uint8* sleepMode) /** @req EcuM2824 */\r
 {\r
        VALIDATE_RV(internal_data.initiated, ECUM_GETSHUTDOWNTARGET_ID, ECUM_E_NOT_INITIATED, E_NOT_OK);\r
+       VALIDATE_RV(shutdownTarget != NULL, ECUM_GETSHUTDOWNTARGET_ID, ECUM_E_NULL_POINTER, E_NOT_OK);\r
+       VALIDATE_RV(sleepMode != NULL, ECUM_GETSHUTDOWNTARGET_ID, ECUM_E_NULL_POINTER, E_NOT_OK);\r
 \r
        *shutdownTarget = internal_data.shutdown_target;\r
-       *sleepMode = internal_data.shutdown_mode;\r
+       *sleepMode = internal_data.sleep_mode;\r
 \r
        return E_OK;\r
 }\r
@@ -240,32 +263,32 @@ Std_ReturnType EcuM_ReleaseRUN(EcuM_UserType user)
 }\r
 \r
 #if defined(USE_COMM)\r
-Std_ReturnType EcuM_ComM_RequestRUN(NetworkHandleType user)\r
+Std_ReturnType EcuM_ComM_RequestRUN(NetworkHandleType channel)\r
 {\r
        VALIDATE_RV(internal_data.initiated, ECUM_COMM_REQUESTRUN_ID, ECUM_E_NOT_INITIATED, E_NOT_OK);\r
-       VALIDATE_RV(user < 32, ECUM_COMM_REQUESTRUN_ID, ECUM_E_INVALID_PAR, E_NOT_OK);\r
+       VALIDATE_RV(channel < 32, ECUM_COMM_REQUESTRUN_ID, ECUM_E_INVALID_PAR, E_NOT_OK);\r
 \r
-       internal_data.run_comm_requests |= (uint32)1 << user;\r
+       internal_data.run_comm_requests |= (uint32)1 << channel;\r
 \r
        return E_OK;\r
 }\r
 \r
-Std_ReturnType EcuM_ComM_ReleaseRUN(NetworkHandleType user)\r
+Std_ReturnType EcuM_ComM_ReleaseRUN(NetworkHandleType channel)\r
 {\r
        VALIDATE_RV(internal_data.initiated, ECUM_COMM_RELEASERUN_ID, ECUM_E_NOT_INITIATED, E_NOT_OK);\r
-       VALIDATE_RV(user < 32, ECUM_COMM_RELEASERUN_ID, ECUM_E_INVALID_PAR, E_NOT_OK);\r
+       VALIDATE_RV(channel < 32, ECUM_COMM_RELEASERUN_ID, ECUM_E_INVALID_PAR, E_NOT_OK);\r
 \r
-       internal_data.run_comm_requests &= ~((uint32)1 << user);\r
+       internal_data.run_comm_requests &= ~((uint32)1 << channel);\r
 \r
        return E_OK;\r
 }\r
 \r
-boolean EcuM_ComM_HasRequestedRUN(NetworkHandleType user)\r
+boolean EcuM_ComM_HasRequestedRUN(NetworkHandleType channel)\r
 {\r
-       VALIDATE_RV(internal_data.initiated, ECUM_COMM_HASREQUESTEDRUN_ID, ECUM_E_NOT_INITIATED, E_NOT_OK);\r
-       VALIDATE_RV(user < 32, ECUM_COMM_HASREQUESTEDRUN_ID, ECUM_E_INVALID_PAR, E_NOT_OK);\r
+       VALIDATE_RV(internal_data.initiated, ECUM_COMM_HASREQUESTEDRUN_ID, ECUM_E_NOT_INITIATED, FALSE);\r
+       VALIDATE_RV(channel < 32, ECUM_COMM_HASREQUESTEDRUN_ID, ECUM_E_INVALID_PAR, FALSE);\r
 \r
-       return (internal_data.run_comm_requests &((uint32)1 << user)) != 0;\r
+       return (internal_data.run_comm_requests &((uint32)1 << channel)) != 0;\r
 }\r
 #endif\r
 \r
index 853a96d734348e2ee1aded246da2b319b7caebf0..a12feef060d839e24420df072e6c52333252a363 100644 (file)
@@ -59,7 +59,7 @@ typedef struct
        boolean initiated;\r
        EcuM_ConfigType* config;\r
        EcuM_StateType shutdown_target;\r
-       uint8 shutdown_mode;\r
+       uint8 sleep_mode;\r
        AppModeType app_mode;\r
        EcuM_StateType current_state;\r
 #if defined(USE_COMM)\r
@@ -67,9 +67,9 @@ typedef struct
 #endif\r
        uint32 run_requests;\r
        uint32 postrun_requests;\r
-} EcuM_GobalType;\r
+} EcuM_GlobalType;\r
 \r
-extern EcuM_GobalType internal_data;\r
+extern EcuM_GlobalType internal_data;\r
 \r
 void EcuM_enter_run_mode(void);\r
 \r
index 69c005a701129d9640516680ac1ea4fb8e218a22..e3283a529ca49f35104df3e2183d75f1a7576b89 100644 (file)
  * for more details.\r
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
-\r
-\r
-\r
-\r
-\r
-\r
+//lint -emacro(904,VALIDATE,VALIDATE_RV,VALIDATE_NO_RV) //904 PC-Lint exception to MISRA 14.7 (validate macros).\r
 \r
 #include "EcuM.h"\r
 #include "EcuM_Cbk.h"\r
 static uint32 internal_data_run_state_timeout = 0;\r
 #if defined(USE_NVM)\r
 static uint32 internal_data_go_off_one_state_timeout = 0;\r
+static NvM_RequestResultType writeAllResult;\r
 #endif\r
 \r
 \r
-void EcuM_enter_run_mode(void)\r
-{\r
+void EcuM_enter_run_mode(void){\r
        internal_data.current_state = ECUM_STATE_APP_RUN;\r
-       EcuM_OnEnterRUN();\r
-       internal_data_run_state_timeout = internal_data.config->EcuMRunMinimumDuration / ECUM_MAIN_FUNCTION_PERIOD;\r
+       EcuM_OnEnterRUN(); /** @req EcuM2308 */\r
+       //TODO: Call ComM_EcuM_RunModeIndication(NetworkHandleType Channel) for all channels that have requested run.\r
+       internal_data_run_state_timeout = internal_data.config->EcuMRunMinimumDuration / ECUM_MAIN_FUNCTION_PERIOD; /** @req EcuM2310 */\r
 }\r
 \r
-static inline void enter_post_run_mode(void)\r
-{\r
-       internal_data.current_state = ECUM_STATE_APP_POST_RUN;\r
-}\r
 \r
-static inline void enter_prep_shutdown_mode(void)\r
-{\r
-       internal_data.current_state = ECUM_STATE_PREP_SHUTDOWN;\r
-       EcuM_OnPrepShutdown();\r
-}\r
+//--------- Local functions ------------------------------------------------------------------------------------------------\r
 \r
-static inline void enter_go_sleep_mode(void)\r
-{\r
+static inline void enter_go_sleep_mode(void){\r
        internal_data.current_state = ECUM_STATE_GO_SLEEP;\r
-       void EcuM_OnGoSleep();\r
+       EcuM_OnGoSleep();\r
 }\r
 \r
-static inline void enter_go_off_one_mode(void)\r
-{\r
+static inline void enter_go_off_one_mode(void){\r
        internal_data.current_state = ECUM_STATE_GO_OFF_ONE;\r
        EcuM_OnGoOffOne();\r
 \r
@@ -78,9 +64,9 @@ static inline void enter_go_off_one_mode(void)
 #endif\r
 }\r
 \r
-static inline boolean hasRunRequests(void)\r
-{\r
-       boolean result = internal_data.run_requests;\r
+\r
+static inline boolean hasRunRequests(void){\r
+       uint32 result = internal_data.run_requests;\r
 \r
 #if defined(USE_COMM)\r
        result |= internal_data.run_comm_requests;\r
@@ -89,85 +75,102 @@ static inline boolean hasRunRequests(void)
        return (result != 0);\r
 }\r
 \r
-static inline boolean hasPostRunRequests(void)\r
-{\r
+static inline boolean hasPostRunRequests(void){\r
        return (internal_data.postrun_requests != 0);\r
 }\r
 \r
-void EcuM_MainFunction(void)\r
-{\r
-#if defined(USE_NVM)\r
-static NvM_RequestResultType writeAllResult;\r
-#endif\r
 \r
-VALIDATE_NO_RV(internal_data.initiated, ECUM_MAINFUNCTION_ID, ECUM_E_NOT_INITIATED);\r
 \r
-       if (internal_data.current_state == ECUM_STATE_APP_RUN)\r
-       {\r
-               if (internal_data_run_state_timeout)\r
-                       internal_data_run_state_timeout--;\r
+static inline void in_state_appRun(void){\r
+       if (internal_data_run_state_timeout){\r
+               internal_data_run_state_timeout--;\r
+       }\r
 \r
-               if (!hasRunRequests() && (internal_data_run_state_timeout == 0))\r
-               {\r
-                       EcuM_OnExitRun();       // ECUM_2865\r
-                       enter_post_run_mode();\r
-                       return;\r
-               }\r
+       if ((!hasRunRequests()) && (internal_data_run_state_timeout == 0)){\r
+               EcuM_OnExitRun();       /** @req EcuM2865 */\r
+               internal_data.current_state = ECUM_STATE_APP_POST_RUN;/** @req EcuM2865 */\r
        }\r
+}\r
 \r
-       if (internal_data.current_state == ECUM_STATE_APP_POST_RUN)\r
-       {\r
-               if (hasRunRequests())\r
-               {\r
-                       EcuM_enter_run_mode(); // ECUM_2866\r
-                       return;\r
-               }\r
 \r
-               if (!hasPostRunRequests())\r
-               {\r
-                       EcuM_OnExitPostRun(); // ECUM_2761\r
-                       enter_prep_shutdown_mode();\r
-                       return;\r
-               }\r
+static inline void in_state_appPostRun(void){\r
+       if (hasRunRequests()){\r
+               internal_data.current_state = ECUM_STATE_APP_RUN;/** @req EcuM2866 */ /** @req EcuM2308 */\r
+               EcuM_OnEnterRUN(); /** @req EcuM2308 */\r
+               //TODO: Call ComM_EcuM_RunModeIndication(NetworkHandleType Channel) for all channels that have requested run.\r
+               internal_data_run_state_timeout = internal_data.config->EcuMRunMinimumDuration / ECUM_MAIN_FUNCTION_PERIOD; /** @req EcuM2310 */\r
+\r
+       } else if (!hasPostRunRequests()){\r
+               EcuM_OnExitPostRun(); /** @req EcuM2761 */\r
+               internal_data.current_state = ECUM_STATE_PREP_SHUTDOWN;/** @req EcuM2761 */\r
+\r
+               EcuM_OnPrepShutdown();\r
+       } else {\r
+               // TODO: Do something?\r
        }\r
+}\r
 \r
-       if (internal_data.current_state == ECUM_STATE_PREP_SHUTDOWN)\r
-       {\r
+static inline void in_state_prepShutdown(void){\r
 #if defined(USE_DEM)\r
-               // DEM shutdown\r
-               Dem_Shutdown();\r
+       // DEM shutdown\r
+       Dem_Shutdown();\r
 #endif\r
 \r
-               // Switch shutdown mode\r
-               if ((internal_data.shutdown_target == ECUM_STATE_OFF) || (internal_data.shutdown_target == ECUM_STATE_RESET)) {\r
+       // Switch shutdown mode\r
+       switch(internal_data.shutdown_target){\r
+               //If in state Off or Reset go into Go_Off_One:\r
+               case ECUM_STATE_OFF:\r
+               case ECUM_STATE_RESET:\r
                        enter_go_off_one_mode();\r
-               }\r
-\r
-               if (internal_data.shutdown_target == ECUM_STATE_SLEEP) {\r
+                       break;\r
+               case ECUM_STATE_SLEEP:\r
                        enter_go_sleep_mode();\r
-               }\r
+                       break;\r
+               default:\r
+                       //TODO: Report error.\r
+                       break;\r
        }\r
+}\r
 \r
-       if (internal_data.current_state == ECUM_STATE_GO_OFF_ONE)\r
-       {\r
+static inline void in_state_goOffOne(void){\r
 #if defined(USE_NVM)\r
-               if (internal_data_go_off_one_state_timeout)\r
+               if (internal_data_go_off_one_state_timeout){\r
                        internal_data_go_off_one_state_timeout--;\r
-\r
+               }\r
                // Wait for the NVM job (NvmWriteAll) to terminate\r
                NvM_GetErrorStatus(0, &writeAllResult);\r
-               if ((writeAllResult != NVM_REQ_PENDING) || (internal_data_go_off_one_state_timeout == 0))\r
-               {\r
+               if ((writeAllResult != NVM_REQ_PENDING) || (internal_data_go_off_one_state_timeout == 0)){\r
                        ShutdownOS(E_OK);\r
                }\r
 #else\r
                ShutdownOS(E_OK);\r
 #endif\r
-       }\r
+}\r
 \r
-       if (internal_data.current_state == ECUM_STATE_GO_SLEEP)\r
-       {\r
-               // TODO: Fill out\r
-       }\r
 \r
+//----- MAIN -----------------------------------------------------------------------------------------------------------------\r
+void EcuM_MainFunction(void){\r
+       VALIDATE_NO_RV(internal_data.initiated, ECUM_MAINFUNCTION_ID, ECUM_E_NOT_INITIATED);\r
+\r
+       switch(internal_data.current_state){\r
+\r
+               case ECUM_STATE_APP_RUN:\r
+                       in_state_appRun();\r
+                       break;\r
+               case ECUM_STATE_APP_POST_RUN:\r
+                       in_state_appPostRun();\r
+                       break;\r
+               case ECUM_STATE_PREP_SHUTDOWN:\r
+                       in_state_prepShutdown();\r
+                       break;\r
+               case ECUM_STATE_GO_OFF_ONE:\r
+                       in_state_goOffOne();\r
+                       break;\r
+               case ECUM_STATE_GO_SLEEP:\r
+                       // TODO: Fill out\r
+                       break;\r
+               default:\r
+                       //TODO: Report error.\r
+                       break;\r
+       }\r
 }\r
diff --git a/system/WdgIf/WdgIf.c b/system/WdgIf/WdgIf.c
new file mode 100644 (file)
index 0000000..017fe82
--- /dev/null
@@ -0,0 +1,53 @@
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------\r
+ * WdgIf.c\r
+ *\r
+ *  Created on: 22 feb 2010\r
+ *      Author: Fredrik\r
+ */\r
+\r
+// 904 PC-Lint MISRA 14.7: OK. Allow VALIDATE_ENTITY_ID, VALIDATE and VALIDATE_NO_RETURNVAL to return value.\r
+//lint -emacro(904,VALIDATE,VALIDATE_NO_RETURNVAL)\r
+\r
+#include "WdgIf.h"\r
+#include "Det.h"\r
+\r
+#define VALIDATE(_expr, _api, _errorcode) \\r
+       if(!_expr) {    \\r
+               Det_ReportError(MODULE_ID_WDGIF,0,_api,_errorcode ); \\r
+               ret = E_NOT_OK; \\r
+               return ret;     \\r
+               }\r
+\r
+#define VALIDATE_NO_RETURNVAL(_expr, _api, _errorcode) \\r
+       if(!_expr) {    \\r
+               Det_ReportError(MODULE_ID_WDGIF,0,_api,_errorcode ); \\r
+               return; \\r
+               }\r
+\r
+\r
+Std_ReturnType WdgIf_SetMode (uint8 DeviceIndex, WdgIf_ModeType Mode)\r
+{\r
+       Std_ReturnType ret = E_NOT_OK;\r
+       VALIDATE((WdgIfConfig.WdgIf_General->WdgIf_NumberOfDevices > DeviceIndex), WDGIF_SETMODE_ID, WDGIF_E_PARAM_DEVICE);\r
+\r
+       return WdgIfConfig.WdgIf_Device[DeviceIndex].WdgRef->Wdg_SetModeLocationPtr(Mode);\r
+}\r
+\r
+void WdgIf_Trigger (uint8 DeviceIndex)\r
+{\r
+       VALIDATE_NO_RETURNVAL((WdgIfConfig.WdgIf_General->WdgIf_NumberOfDevices > DeviceIndex), WDGIF_TRIGGER_ID, WDGIF_E_PARAM_DEVICE);\r
+       WdgIfConfig.WdgIf_Device[DeviceIndex].WdgRef->Wdg_TriggerLocationPtr();\r
+}\r
index 8e2f654c29d7473cf1d719276cc3e7930767ed1e..65cd352409328c1306fc35304718e49ebf7614c6 100644 (file)
-/* -------------------------------- Arctic Core ------------------------------\r
- * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
- *\r
- * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
- *\r
- * This source code is free software; you can redistribute it and/or modify it\r
- * under the terms of the GNU General Public License version 2 as published by the\r
- * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
- *\r
- * This program is distributed in the hope that it will be useful, but\r
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
- * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
- * for more details.\r
- * -------------------------------- Arctic Core ------------------------------*/\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-#include "WdgM.h"\r
-#include "Mcu.h"\r
-\r
-const WdgM_ConfigType *wdgMConfigPtr;\r
-static WdgM_SupervisedStatusType WdgM_GlobalSupervisionStatus = WDBG_ALIVE_OK;\r
-\r
+/* -------------------------------- Arctic Core ------------------------------
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com
+ *
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>
+ *
+ * This source code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published by the
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ * -------------------------------- Arctic Core ------------------------------*/
+
+
+// 904 PC-Lint MISRA 14.7: OK. Allow VALIDATE_ENTITY_ID, VALIDATE and VALIDATE_NO_RETURNVAL to return value.
+//lint -emacro(904,VALIDATE_ENTITY_ID,VALIDATE,VALIDATE_NO_RETURNVAL)
+
+#include "WdgM.h"
+#include "WdgIf.h"\r
+#include "Det.h"
+
+#define VALIDATE_ENTITY_ID(_SEId, _api) \
+       if(_SEId >= WDGM_NBR_OF_ALIVE_SIGNALS) {        \
+               Det_ReportError(MODULE_ID_WDGM,0,_api,WDGM_E_PARAM_SEID ); \
+               ret = E_NOT_OK; \
+               return ret;     \
+               }\r
+
+#define VALIDATE(_expr, _api, _errorcode) \
+       if(!_expr) {    \
+               Det_ReportError(MODULE_ID_WDGM,0,_api,_errorcode ); \
+               ret = E_NOT_OK; \
+               return ret;     \
+               }
+
+#define VALIDATE_NO_RETURNVAL(_expr, _api, _errorcode) \
+       if(!_expr) {    \
+               Det_ReportError(MODULE_ID_WDGM,0,_api,_errorcode ); \
+               return; \
+               }
+struct
+{
+       const WdgM_ConfigType           *WdgM_ConfigPtr;
+       WdgM_AliveSupervisionStatusType WdgM_GlobalSupervisionStatus;
+       WdgM_SupervisionCounterType     WdgM_ExpiredSupervisionCycles;
+       WdgM_TriggerCounterType         WdgMTriggerCounter;
+       WdgM_ModeType                   WdgMActiveMode;
+       boolean                                                 WdgMModeConfigured;
+}wdgMInternalState;\r
+
+
+/* Helper macros */
+#define GET_ENTITY_STATE_PTR(_SEId)       (&(wdgMInternalState.WdgM_ConfigPtr->WdgM_ConfigSet->WdgM_AliveEntityStatePtr)[_SEId])
+
+/* Function prototypes. */
+static boolean WdgM_IsAlive(void);
+static void wdgm_Check_AliveSupervision (void);
+static void wdgm_Trigger (void);
+void WdgM_Cbk_GptNotification (void);
+
+
 Std_ReturnType WdgM_UpdateAliveCounter (WdgM_SupervisedEntityIdType SEid)\r
-{\r
-  Wdgm_SupervisionType *supervisionPtr = &(wdgMConfigPtr->Wdgm_SupervisionPtr)[SEid];\r
-\r
-  if (supervisionPtr->ActivationStatus == WDBG_SUPERVISION_ENABLED)\r
+{
+  Std_ReturnType ret = E_NOT_OK;
+  /** @req WDGM027 **/
+  VALIDATE_ENTITY_ID(SEid, WDGM_UPDATEALIVECOUNTER_ID);\r
+  /** @req WDGM028 **/
+  VALIDATE((wdgMInternalState.WdgM_ConfigPtr != 0), WDGM_UPDATEALIVECOUNTER_ID, WDGM_E_NO_INIT);
+  WdgM_AliveEntityStateType *entityStatePtr = GET_ENTITY_STATE_PTR(SEid);\r
+
+  /** @req WDGM083 **/
+  /** @req WDGM114 **/
+  if (entityStatePtr->SupervisionStatus < WDGM_ALIVE_EXPIRED)
   {\r
-    supervisionPtr->AliveCounter++;\r
+         entityStatePtr->AliveCounter++;
+         ret = E_OK;
   }\r
-  return (E_OK);\r
+  return (ret);\r
 }\r
-\r
+
+/** @req WDGM053 **/
+/** @req WDGM059 **/\r
+/** @req WDGM156 **/
 Std_ReturnType WdgM_ActivateAliveSupervision (WdgM_SupervisedEntityIdType SEid)\r
 {\r
-  Wdgm_SupervisionType *supervisionPtr = &(wdgMConfigPtr->Wdgm_SupervisionPtr)[SEid];\r
-\r
-  supervisionPtr->ActivationStatus = WDBG_SUPERVISION_ENABLED;\r
-\r
-  return (E_OK);\r
+  Std_ReturnType ret = E_NOT_OK;
+  /** @req WDGM055 **/
+  VALIDATE_ENTITY_ID(SEid, WDGM_ACTIVATEALIVESUPERVISION_ID);
+  /** @req WDGM056 **/
+  VALIDATE((wdgMInternalState.WdgM_ConfigPtr != 0), WDGM_ACTIVATEALIVESUPERVISION_ID, WDGM_E_NO_INIT);
+  WdgM_AliveEntityStateType *entityStatePtr = GET_ENTITY_STATE_PTR(SEid);
+
+  if ((WDGM_ALIVE_EXPIRED > entityStatePtr->SupervisionStatus) ||
+      (WDGM_ALIVE_DEACTIVATED == entityStatePtr->SupervisionStatus))\r
+  {
+         entityStatePtr->SupervisionStatus = WDGM_ALIVE_OK;
+         ret = E_OK;
+  }\r
+  return (ret);\r
 }\r
-\r
+
+/** @req WDGM079 **/
+/** @req WDGM157 **/\r
 Std_ReturnType WdgM_DeactivateAliveSupervision (WdgM_SupervisedEntityIdType SEid)\r
-{\r
-  Wdgm_SupervisionType *supervisionPtr = &(wdgMConfigPtr->Wdgm_SupervisionPtr)[SEid];\r
-\r
-  supervisionPtr->ActivationStatus = WDBG_SUPERVISION_DISABLED;\r
-  return (E_OK);\r
+{
+  Std_ReturnType ret = E_NOT_OK;\r
+  /** @req WDGM057 **/
+  VALIDATE_ENTITY_ID(SEid, WDGM_DEACTIVATEALIVESUPERVISION_ID);
+  /** @req WDGM058 **/
+  VALIDATE((wdgMInternalState.WdgM_ConfigPtr != 0), WDGM_DEACTIVATEALIVESUPERVISION_ID, WDGM_E_NO_INIT);
+  WdgM_AliveEntityStateType *entityStatePtr = GET_ENTITY_STATE_PTR(SEid);
+  const WdgM_SupervisedEntityType *supervisedEntityPtr = wdgMInternalState.WdgM_ConfigPtr->WdgM_General->WdgM_SupervisedEntityPtr;
+
+  /** @req WDGM082 **/
+  /** @req WDGM174 **/
+  /** @req WDGM108 **/
+  VALIDATE((supervisedEntityPtr->WdgM_DeactivationAccessEnabled != 0), WDGM_DEACTIVATEALIVESUPERVISION_ID, WDGM_E_DEACTIVATE_NOT_ALLOWED);
+
+  /** @req WDGM114 **/
+  if (WDGM_ALIVE_EXPIRED > entityStatePtr->SupervisionStatus)
+  {\r
+         entityStatePtr->SupervisionStatus = WDGM_ALIVE_DEACTIVATED;
+         ret = E_OK;
+  }
+
+  return (ret);\r
+}
+
+/** @req WDGM169 **/
+Std_ReturnType WdgM_GetAliveSupervisionStatus (WdgM_SupervisedEntityIdType SEid, WdgM_AliveSupervisionStatusType *Status)
+{
+       Std_ReturnType ret;
+       /** @req WDGM172 **/
+       VALIDATE_ENTITY_ID(SEid, WDGM_GETALIVESUPERVISIONSTATUS_ID);
+       /** @req WDGM173 **/
+       VALIDATE((wdgMInternalState.WdgM_ConfigPtr != 0), WDGM_GETALIVESUPERVISIONSTATUS_ID, WDGM_E_NO_INIT);
+       VALIDATE((Status != 0), WDGM_GETALIVESUPERVISIONSTATUS_ID, WDGM_E_NULL_POINTER);
+       WdgM_AliveEntityStateType *entityStatePtr = GET_ENTITY_STATE_PTR(SEid);
+       *Status = entityStatePtr->SupervisionStatus;
+       ret = E_OK;
+       return ret;
+}
+
+/** @req WDGM175 **/
+Std_ReturnType WdgM_GetGlobalStatus (WdgM_AliveSupervisionStatusType *Status)
+{
+       Std_ReturnType ret = E_NOT_OK;
+       /** @req WDGM176 **/
+       VALIDATE((wdgMInternalState.WdgM_ConfigPtr != 0), WDGM_GETGLOBALSTATUS_ID, WDGM_E_NO_INIT);
+       *Status = wdgMInternalState.WdgM_GlobalSupervisionStatus;
+       ret = E_OK;
+       return ret;
+}
+
+/** @req WDGM154 **/
+Std_ReturnType WdgM_SetMode(WdgM_ModeType Mode)
+{
+  Std_ReturnType ret = E_NOT_OK;
+  /** @req WDGM021 **/
+  VALIDATE((wdgMInternalState.WdgM_ConfigPtr != 0), WDGM_SETMODE_ID, WDGM_E_NO_INIT);
+  /** @req WDGM020 **/
+  VALIDATE(((Mode >= 0) && (Mode < WDGM_NBR_OF_MODES)), WDGM_SETMODE_ID, WDGM_E_PARAM_MODE);
+
+#if WDGM_OFF_MODE_ENABLED == STD_OFF
+  const WdgM_ModeConfigType * modeConfigPtr = &wdgMInternalState.WdgM_ConfigPtr->WdgM_ConfigSet->WdgM_Mode[Mode];
+  const WdgM_ModeConfigType * oldModeConfigPtr = &wdgMInternalState.WdgM_ConfigPtr->WdgM_ConfigSet->WdgM_Mode[wdgMInternalState.WdgMActiveMode];
+    /** @req WDGM031 **/
+  VALIDATE((modeConfigPtr->WdgM_Trigger->WdgM_WatchdogMode != WDGIF_OFF_MODE),WDGM_SETMODE_ID, WDGM_E_DISABLE_NOT_ALLOWED);
+#endif
+
+  WdgIf_ModeType mode;
+  uint8 deviceIndex;
+  uint8 i;
+
+  /** @req WDGM145 **/
+  if (wdgMInternalState.WdgM_GlobalSupervisionStatus == WDGM_ALIVE_OK)
+  {
+         /* Compare activation type between new and old mode. */
+         if (oldModeConfigPtr->WdgM_Activation.WdgM_IsGPTActivated != modeConfigPtr->WdgM_Activation.WdgM_IsGPTActivated)
+         {
+                 /** @req WDGM188 **/
+                 if (modeConfigPtr->WdgM_Activation.WdgM_IsGPTActivated)
+                 {
+                         const WdgM_ActivationGPTType * gptConfigPtr = &modeConfigPtr->WdgM_Activation.WdgM_ActivationGPT;
+                         /* New mode is activated from GPT callback. Start GPT. */
+                         Gpt_StartTimer(gptConfigPtr->WdgM_GptChannelRef, gptConfigPtr->WdgM_GptCycle);
+                         Gpt_EnableNotification(gptConfigPtr->WdgM_GptChannelRef);
+                 }
+                 /** @req WDGM187 **/
+                 else
+                 {
+                         /* Only if a mode already have been configured. */
+                         if (wdgMInternalState.WdgMModeConfigured)
+                         {
+                                 /* Old mode was GPT driven, but not new mode. Disable GPT. */
+                                 const WdgM_ActivationGPTType * oldGptConfigPtr = &oldModeConfigPtr->WdgM_Activation.WdgM_ActivationGPT;
+                                 Gpt_DisableNotification(oldGptConfigPtr->WdgM_GptChannelRef);
+                                 Gpt_StopTimer(oldGptConfigPtr->WdgM_GptChannelRef);
+                         }
+                         else
+                         {
+                                 /* Do nothing since no mode have been configured. */
+                         }
+                 }
+         }
+         else
+         {
+                 /* No activation change needed. */
+         }
+         /* Write new mode to internal state. */
+         wdgMInternalState.WdgMActiveMode = Mode;
+
+         /* Pass mode to all watchdog instances. */
+         for (i = 0; i < wdgMInternalState.WdgM_ConfigPtr->WdgM_General->WdgM_NumberOfWatchdogs;i++)
+         {
+                 mode = wdgMInternalState.WdgM_ConfigPtr->WdgM_ConfigSet->WdgM_Mode[Mode].WdgM_Trigger[i].WdgM_WatchdogMode;
+                 deviceIndex = wdgMInternalState.WdgM_ConfigPtr->WdgM_ConfigSet->WdgM_Mode[Mode].WdgM_Trigger[i].WdgM_WatchdogRef->WdgM_DeviceRef->WdgIf_DeviceIndex;
+                 /** @req WDGM139 **/
+                 if (E_NOT_OK == WdgIf_SetMode (deviceIndex, mode))
+                 {
+                         wdgMInternalState.WdgM_GlobalSupervisionStatus = WDGM_ALIVE_STOPPED;
+                 }
+         }
+         ret = E_OK;
+  }
+  wdgMInternalState.WdgMModeConfigured = TRUE;
+  return (ret);
 }\r
-\r
+
+/** @req WDGM168 **/
+Std_ReturnType WdgM_GetMode(WdgM_ModeType *Mode)
+{
+       Std_ReturnType ret = E_NOT_OK;
+       /** @req WDGM170 **/
+       VALIDATE((wdgMInternalState.WdgM_ConfigPtr != 0), WDGM_GETMODE_ID, WDGM_E_NO_INIT);
+       VALIDATE((Mode != 0), WDGM_GETMODE_ID, WDGM_E_NULL_POINTER);
+
+       *Mode = wdgMInternalState.WdgMActiveMode;
+       ret = E_OK;
+       return ret;
+}
+
+/** @req WDGM151 **/\r
 void WdgM_Init(const WdgM_ConfigType *ConfigPtr)\r
 {\r
   WdgM_SupervisedEntityIdType SEid;\r
-  Wdgm_SupervisionType *supervisionPtr;\r
-  WdgM_SupervisedEntityType* supervisedEntityPtr;\r
-\r
-  for (SEid = 0; SEid < WDBG_NBR_OF_ALIVE_SIGNALS; SEid++)\r
+  WdgM_AliveEntityStateType *entityStatePtr;
+  WdgM_ModeType initialMode;
+  const WdgM_ModeConfigType *modeConfigPtr;\r
+
+  /** @req WDGM010 **/
+  VALIDATE_NO_RETURNVAL((ConfigPtr != 0),WDGM_INIT_ID, WDGM_E_PARAM_CONFIG);
+  wdgMInternalState.WdgM_ConfigPtr = ConfigPtr;
+  initialMode = wdgMInternalState.WdgM_ConfigPtr->WdgM_ConfigSet->WdgM_InitialMode;
+  modeConfigPtr = &wdgMInternalState.WdgM_ConfigPtr->WdgM_ConfigSet->WdgM_Mode[initialMode];
+
+#if WDGM_OFF_MODE_ENABLED == STD_OFF
+  /** @req WDGM030 **/
+  VALIDATE_NO_RETURNVAL((modeConfigPtr->WdgM_Trigger->WdgM_WatchdogMode != WDGIF_OFF_MODE),WDGM_INIT_ID, WDGM_E_DISABLE_NOT_ALLOWED);
+#endif
+
+  /** @req WDGM018 **/\r
+  for (SEid = 0; SEid < WDGM_NBR_OF_ALIVE_SIGNALS; SEid++)\r
   {\r
-    supervisionPtr = &(ConfigPtr->Wdgm_SupervisionPtr)[SEid];\r
-    supervisedEntityPtr = (WdgM_SupervisedEntityType*)&(ConfigPtr->WdgM_SupervisedEntityPtr)[SEid];\r
-    supervisionPtr->ActivationStatus = supervisedEntityPtr->WdgM_ActivationStatus;\r
-  }\r
-  wdgMConfigPtr = ConfigPtr;\r
-\r
-}\r
-\r
-void WdgM_MainFunction_AliveSupervision (void)\r
-{\r
+       entityStatePtr = GET_ENTITY_STATE_PTR(SEid);\r
+       if (wdgMInternalState.WdgM_ConfigPtr->WdgM_ConfigSet->WdgM_Mode[initialMode].WdgM_AliveSupervisionPtr[SEid].WdgM_ActivationActivated)
+       {
+               entityStatePtr->SupervisionStatus = WDGM_ALIVE_OK;
+       }
+       else
+       {
+               entityStatePtr->SupervisionStatus = WDGM_ALIVE_DEACTIVATED;
+       }
+       entityStatePtr->AliveCounter         = 0;
+    entityStatePtr->SupervisionCycle     = 0;
+    entityStatePtr->NbrOfFailedRefCycles = 0;
+  }
+
+  /* Start initial mode. Raise error if initial mode was not entered properly. */
+  VALIDATE_NO_RETURNVAL((WdgM_SetMode(initialMode) != E_OK),WDGM_INIT_ID, WDGM_E_PARAM_CONFIG);
+
+  wdgMInternalState.WdgM_GlobalSupervisionStatus = WDGM_ALIVE_OK;
+  wdgMInternalState.WdgMActiveMode = initialMode;
+  wdgMInternalState.WdgM_ExpiredSupervisionCycles = 0;
+  wdgMInternalState.WdgMTriggerCounter = 0;
+  wdgMInternalState.WdgMModeConfigured = FALSE;
+}
+
+/* Non standard API for test purpose.  */
+void WdgM_DeInit( void)
+{
+       wdgMInternalState.WdgM_GlobalSupervisionStatus = 0;
+       wdgMInternalState.WdgM_ConfigPtr = 0;
+}
+
+static void wdgm_Check_AliveSupervision (void)
+{
   WdgM_SupervisedEntityIdType SEid;\r
-  Wdgm_SupervisionType *supervisionPtr;\r
-  const WdgM_SupervisedEntityType *entityPtr;\r
-  WdgM_SupervisionCounterType aliveCalc, nSC, nAl, eai;\r
-  WdgM_SupervisedStatusType maxLocal = WDBG_ALIVE_OK;\r
-  static WdgM_SupervisionCounterType expiredSupervisionCycles = 0;\r
-\r
-  for (SEid = 0; SEid < WDBG_NBR_OF_ALIVE_SIGNALS; SEid++)\r
+  WdgM_AliveEntityStateType *entityStatePtr;
+  const WdgM_AliveSupervisionType *entityPtr;\r
+  WdgM_SupervisionCounterType aliveCalc, nSC, nAl, f;\r
+  WdgM_AliveSupervisionStatusType maxLocal = WDGM_ALIVE_OK;\r
+
+  for (SEid = 0; SEid < wdgMInternalState.WdgM_ConfigPtr->WdgM_General->WdgM_NumberOfSupervisedEntities; SEid++)\r
   {\r
-    supervisionPtr = &(wdgMConfigPtr->Wdgm_SupervisionPtr)[SEid];\r
-    entityPtr      = &(wdgMConfigPtr->WdgM_SupervisedEntityPtr)[SEid];\r
-\r
-    if (WDBG_SUPERVISION_ENABLED == supervisionPtr->ActivationStatus)\r
-    {\r
-      supervisionPtr->SupervisionCycle++;\r
+       entityStatePtr = GET_ENTITY_STATE_PTR(SEid);\r
+    entityPtr      = &(wdgMInternalState.WdgM_ConfigPtr->WdgM_ConfigSet->WdgM_Mode[wdgMInternalState.WdgMActiveMode].WdgM_AliveSupervisionPtr)[SEid];\r
+
+    /** @req WDGM083 **/\r
+    if (WDGM_ALIVE_DEACTIVATED != entityStatePtr->SupervisionStatus)\r
+    {
+       entityStatePtr->SupervisionCycle++;\r
+      /** @req WDGM090 **/
       /* Only perform supervision on the reference cycle. */\r
-      if (supervisionPtr->SupervisionCycle == entityPtr->WdgM_SupervisionReferenceCycle)\r
-      {\r
+      if (entityStatePtr->SupervisionCycle == entityPtr->WdgM_SupervisionReferenceCycle)\r
+      {
         /* Alive algorithm. *\r
-         * n (Al) - n(SC) + EAI == 0 */\r
-        if (entityPtr->WdgM_ExpectedAliveIndications > entityPtr->WdgM_SupervisionReferenceCycle)\r
-        {\r
-          /* Scenario A */\r
-          eai = -entityPtr->WdgM_ExpectedAliveIndications + 1;\r
-\r
-        }\r
-        else\r
-        {\r
-          /* Scenario B */\r
-          eai = entityPtr->WdgM_SupervisionReferenceCycle - 1;\r
-        }\r
-        nSC = supervisionPtr->SupervisionCycle;\r
-        nAl = supervisionPtr->AliveCounter;\r
-        aliveCalc = nAl - nSC + eai;\r
-\r
+         * n (Al) - n(SC) + f(SRC,EAI) == 0; f(SRC,EAI) = SRC - EAI
+         * This algorithm is from revision 4.0 of the WdgM specification.
+         * Revision 3.1 does not seem to work.. */\r
+        nSC = entityStatePtr->SupervisionCycle;\r
+        nAl = entityStatePtr->AliveCounter;
+        f = entityPtr->WdgM_SupervisionReferenceCycle - entityPtr->WdgM_ExpectedAliveIndications;\r
+        aliveCalc = nAl + f - nSC;
+
+        /** @req WDGM091 **/
         if ((aliveCalc <= entityPtr->WdgM_MaxMargin) &&\r
             (aliveCalc >= -entityPtr->WdgM_MinMargin))\r
         {\r
-          /* Entity alive OK. */\r
-          supervisionPtr->SupervisionStatus = WDBG_ALIVE_OK;\r
+          /* Entity alive OK. */
+          /** @req WDGM113 **/
+          if (entityStatePtr->SupervisionStatus <= WDGM_ALIVE_FAILED)
+          {\r
+                 entityStatePtr->SupervisionStatus = WDGM_ALIVE_OK;
+          }\r
         }\r
         else\r
-        {\r
+        {
+          /** @req WDGM024 **/\r
           /* Entity alive NOK. */\r
-          supervisionPtr->SupervisionStatus = WDBG_ALIVE_FAILED;\r
-          if (WDBG_ALIVE_FAILED > maxLocal)\r
+          entityStatePtr->SupervisionStatus = WDGM_ALIVE_FAILED;\r
+          if (WDGM_ALIVE_FAILED > maxLocal)\r
           {\r
-            maxLocal = WDBG_ALIVE_FAILED;\r
+            maxLocal = WDGM_ALIVE_FAILED;\r
           }\r
         }\r
-\r
-        if (WDBG_ALIVE_FAILED == supervisionPtr->SupervisionStatus)\r
-        {\r
-          if (supervisionPtr->NbrOfFailedRefCycles > entityPtr->WdgM_FailedSupervisionReferenceCycleTolerance)\r
+
+        /** @req WDGM097 **/
+        if (WDGM_ALIVE_FAILED == entityStatePtr->SupervisionStatus)\r
+        {
+          /** @req WDGM125 **/
+          /** @req WDGM130 **/\r
+          if (++entityStatePtr->NbrOfFailedRefCycles >= entityPtr->WdgM_FailedSupervisionReferenceCycleTolerance)\r
           {\r
-            supervisionPtr->SupervisionStatus = WDBG_ALIVE_EXPIRED;\r
-            if (WDBG_ALIVE_EXPIRED > maxLocal)\r
+               entityStatePtr->SupervisionStatus = WDGM_ALIVE_EXPIRED;\r
+            if (WDGM_ALIVE_EXPIRED > maxLocal)\r
             {\r
-              maxLocal = WDBG_ALIVE_EXPIRED;\r
+              maxLocal = WDGM_ALIVE_EXPIRED;\r
             }\r
           }\r
-          else\r
-          {\r
-            supervisionPtr->NbrOfFailedRefCycles++;\r
-          }\r
         }\r
 \r
         /* Reset counters. */\r
-        supervisionPtr->SupervisionCycle = 0;\r
-        supervisionPtr->AliveCounter = 0;\r
+        entityStatePtr->SupervisionCycle = 0;\r
+        entityStatePtr->AliveCounter = 0;\r
+      }
+      else
+      {
+         /* No update, but we need to keep maximum status updated. */
+         if (entityStatePtr->SupervisionStatus > maxLocal)
+         {
+                 maxLocal = entityStatePtr->SupervisionStatus;
+         }
       }\r
     }\r
   }\r
-\r
-  /* Try to heal global status. */\r
-  if (WDBG_ALIVE_EXPIRED != WdgM_GlobalSupervisionStatus)\r
-  {\r
-    WdgM_GlobalSupervisionStatus = maxLocal;\r
-  }\r
-  else\r
-  {\r
-    WdgM_GlobalSupervisionStatus = WDBG_ALIVE_EXPIRED;\r
-  }\r
-\r
-  if (WDBG_ALIVE_EXPIRED == WdgM_GlobalSupervisionStatus)\r
-  {\r
-    expiredSupervisionCycles++;\r
-  }\r
-\r
-  if (expiredSupervisionCycles >= wdgMConfigPtr->WdgM_ExpiredSupervisionCycleTolerance)\r
-  {\r
-    WdgM_GlobalSupervisionStatus = WDBG_ALIVE_STOPPED;\r
-  }\r
+
+  /** @req WDGM075 **/
+  /** @req WDGM076 **/
+  /** @req WDGM077 **/
+  /** @req WDGM100 **/
+  /** @req WDGM101 **/\r
+  /** @req WDGM117 **/
+  /* Handle the global status. */
+  switch (wdgMInternalState.WdgM_GlobalSupervisionStatus)
+  {
+    case WDGM_ALIVE_OK:
+    case WDGM_ALIVE_FAILED:
+      if (WDGM_ALIVE_FAILED == maxLocal)
+        {
+          wdgMInternalState.WdgM_ExpiredSupervisionCycles = 1;
+          if (wdgMInternalState.WdgM_ExpiredSupervisionCycles >
+    wdgMInternalState.WdgM_ConfigPtr->WdgM_ConfigSet->WdgM_Mode[wdgMInternalState.WdgMActiveMode].WdgM_ExpiredSupervisionCycleTol)
+            {
+              wdgMInternalState.WdgM_GlobalSupervisionStatus = WDGM_ALIVE_STOPPED;
+            }
+          else
+            {
+              wdgMInternalState.WdgM_GlobalSupervisionStatus = WDGM_ALIVE_FAILED;
+            }
+        }
+      else if (WDGM_ALIVE_EXPIRED == maxLocal)
+        {
+          wdgMInternalState.WdgM_ExpiredSupervisionCycles = 1;
+          if (wdgMInternalState.WdgM_ExpiredSupervisionCycles >
+          wdgMInternalState.WdgM_ConfigPtr->WdgM_ConfigSet->WdgM_Mode[wdgMInternalState.WdgMActiveMode].WdgM_ExpiredSupervisionCycleTol)
+            {
+              wdgMInternalState.WdgM_GlobalSupervisionStatus = WDGM_ALIVE_STOPPED;
+            }
+          else
+            {
+              wdgMInternalState.WdgM_GlobalSupervisionStatus = WDGM_ALIVE_EXPIRED;
+            }
+        }
+      else if (WDGM_ALIVE_OK == maxLocal)
+        {
+          wdgMInternalState.WdgM_ExpiredSupervisionCycles = 0;
+          wdgMInternalState.WdgM_GlobalSupervisionStatus = WDGM_ALIVE_OK;
+        }
+      else
+        {
+          /* No more exits from state. Do nothing. */
+        }
+      break;
+    case WDGM_ALIVE_EXPIRED:
+      if (++wdgMInternalState.WdgM_ExpiredSupervisionCycles >
+      wdgMInternalState.WdgM_ConfigPtr->WdgM_ConfigSet->WdgM_Mode[wdgMInternalState.WdgMActiveMode].WdgM_ExpiredSupervisionCycleTol)
+        {
+          wdgMInternalState.WdgM_GlobalSupervisionStatus = WDGM_ALIVE_STOPPED;
+        }
+      break;
+    case WDGM_ALIVE_DEACTIVATED:
+    case WDGM_ALIVE_STOPPED:
+      break;
+    }\r
 }\r
-\r
-boolean WdgM_IsAlive(void)\r
-{\r
-\r
-  if ( WDBG_ALIVE_STOPPED > WdgM_GlobalSupervisionStatus )\r
-  {\r
-    return (TRUE);\r
-  }\r
-  else\r
-  {\r
-    return (FALSE);\r
-  }\r
+
+/** @req WDGM060 **/
+/** @req WDGM061 **/
+/** @req WDGM063 **/
+/** @req WDGM099 **/
+/** @req WDGM159 **/
+void WdgM_MainFunction_AliveSupervision (void)
+{
+       VALIDATE_NO_RETURNVAL((wdgMInternalState.WdgM_ConfigPtr != 0), WDGM_MAINFUNCTION_ALIVESUPERVISION_ID, WDGM_E_NO_INIT);
+
+       const WdgM_ModeConfigType * modeConfigPtr = &wdgMInternalState.WdgM_ConfigPtr->WdgM_ConfigSet->WdgM_Mode[wdgMInternalState.WdgMActiveMode];
+
+       /** @req WDGM189 **/
+       if (!modeConfigPtr->WdgM_Activation.WdgM_IsGPTActivated)
+       {
+               wdgm_Check_AliveSupervision();
+       }
+}
+
+static boolean WdgM_IsAlive(void)
+{
+    boolean res;
+       /** @req WDGM119 **/
+       /** @req WDGM120 **/
+       /** @req WDGM121 **/
+       /** @req WDGM122 **/
+       if (WDGM_ALIVE_STOPPED > wdgMInternalState.WdgM_GlobalSupervisionStatus)
+       {
+               res = TRUE;
+       }
+       else
+       {
+               res = FALSE;
+       }
+       return res;
 }\r
-\r
-void WdgM_MainFunction_Trigger (void)\r
+
+/** @req WDGM002 **/
+/** @req WDGM065 **/\r
+static void wdgm_Trigger (void)
 {\r
+  uint8 i;
+
+  /* Update trigger counter. */
+  wdgMInternalState.WdgMTriggerCounter++;
+
+  /** @req WDGM041 **/
+  /** @req WDGM051 **/
   if ( WdgM_IsAlive() )\r
-  {\r
-    KickWatchdog();\r
+  {
+         /* Loop through all managed watchdogs. */
+       for (i = 0; i < wdgMInternalState.WdgM_ConfigPtr->WdgM_General->WdgM_NumberOfWatchdogs;i++)
+       {
+           /** @req WDGM040 **/
+               /** @req WDGM103 **/
+               /** @req WDGM109 **/
+               /* Time to trig this particular watchdog instance? */
+          if (0 == (wdgMInternalState.WdgMTriggerCounter %
+                            wdgMInternalState.WdgM_ConfigPtr->WdgM_ConfigSet->WdgM_Mode[wdgMInternalState.WdgMActiveMode].WdgM_Trigger[i].WdgM_TriggerReferenceCycle))
+          {
+                /** @req WDGM066 **/
+            WdgIf_Trigger(wdgMInternalState.WdgM_ConfigPtr->WdgM_General->WdgM_Watchdog[i].WdgM_DeviceRef->WdgIf_DeviceIndex);
+          }
+       }\r
   }\r
 }\r
-\r
+
+/** @req WDGM160 **/
+void WdgM_MainFunction_Trigger (void)
+{
+       /** @req WDGM068 **/
+       VALIDATE_NO_RETURNVAL((wdgMInternalState.WdgM_ConfigPtr != 0), WDGM_MAINFUNCTION_TRIGGER_ID, WDGM_E_NO_INIT);
+       const WdgM_ModeConfigType * modeConfigPtr = &wdgMInternalState.WdgM_ConfigPtr->WdgM_ConfigSet->WdgM_Mode[wdgMInternalState.WdgMActiveMode];
+
+       /** @req WDGM189 **/
+       if (!modeConfigPtr->WdgM_Activation.WdgM_IsGPTActivated)
+       {
+               wdgm_Trigger();
+       }
+}
+
+void WdgM_Cbk_GptNotification (void)
+{
+       VALIDATE_NO_RETURNVAL((wdgMInternalState.WdgM_ConfigPtr != 0), WDGM_MAINFUNCTION_TRIGGER_ID, WDGM_E_NO_INIT);
+       const WdgM_ModeConfigType * modeConfigPtr = &wdgMInternalState.WdgM_ConfigPtr->WdgM_ConfigSet->WdgM_Mode[wdgMInternalState.WdgMActiveMode];
+
+       /** @req WDGM190 **/
+       if (modeConfigPtr->WdgM_Activation.WdgM_IsGPTActivated)
+       {
+               wdgm_Check_AliveSupervision();
+               wdgm_Trigger();
+       }
+}
 \r
diff --git a/system/WdgM/WdgM_cfg.h b/system/WdgM/WdgM_cfg.h
deleted file mode 100644 (file)
index 8e597c6..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/* -------------------------------- Arctic Core ------------------------------\r
- * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
- *\r
- * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
- *\r
- * This source code is free software; you can redistribute it and/or modify it\r
- * under the terms of the GNU General Public License version 2 as published by the\r
- * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
- *\r
- * This program is distributed in the hope that it will be useful, but\r
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
- * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
- * for more details.\r
- * -------------------------------- Arctic Core ------------------------------*/\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-#ifndef WDGM_CFG_H_\r
-#define WDGM_CFG_H_\r
-\r
-#include "Std_Types.h"\r
-#include "WdgM_Lcfg.h"\r
-\r
-typedef enum\r
-{\r
-  WDBG_ALIVE_OK,\r
-  WDBG_ALIVE_FAILED,\r
-  WDBG_ALIVE_EXPIRED,\r
-  WDBG_ALIVE_STOPPED,\r
-  WDBG_ALIVE_DEACTIVATED,\r
-}WdgM_SupervisedStatusType;\r
-\r
-typedef enum\r
-{\r
-  WDBG_SUPERVISION_DISABLED,\r
-  WDBG_SUPERVISION_ENABLED\r
-}WdgM_ActivationStatusType;\r
-\r
-typedef int16_t WdgM_SupervisionCounterType ;\r
-\r
-typedef struct\r
-{\r
-  WdgM_SupervisionCounterType AliveCounter;\r
-  WdgM_SupervisionCounterType SupervisionCycle;\r
-  WdgM_SupervisedStatusType SupervisionStatus;\r
-  WdgM_SupervisionCounterType NbrOfFailedRefCycles;\r
-  WdgM_ActivationStatusType ActivationStatus;\r
-}Wdgm_SupervisionType;\r
-\r
-typedef struct\r
-{\r
-  const WdgM_SupervisedEntityIdType WdgM_SupervisedEntityID;\r
-  const WdgM_ActivationStatusType WdgM_ActivationStatus;\r
-  const WdgM_SupervisionCounterType WdgM_ExpectedAliveIndications;\r
-  const WdgM_SupervisionCounterType WdgM_SupervisionReferenceCycle;\r
-  const WdgM_SupervisionCounterType WdgM_FailedSupervisionReferenceCycleTolerance;\r
-  const WdgM_SupervisionCounterType WdgM_MinMargin;\r
-  const WdgM_SupervisionCounterType WdgM_MaxMargin;\r
-}WdgM_SupervisedEntityType;\r
-\r
-typedef struct\r
-{\r
-  uint16 WdgM_SupervisionCycle;\r
-  uint16 WdgM_NumberOfSupervisedEntities;\r
-  uint16 WdgM_ExpiredSupervisionCycleTolerance;\r
-  const WdgM_SupervisedEntityType *WdgM_SupervisedEntityPtr;\r
-  Wdgm_SupervisionType *Wdgm_SupervisionPtr;\r
-}WdgM_ConfigType;\r
-\r
-extern const WdgM_ConfigType WdgMAliveSupervision;\r
-\r
-#endif /* WDGM_CFG_H_ */\r
index e2cd7e7f75e905fe4187deb7b45c32724dbb0808..44877c40a0f894848a19d39c424dcd12a4ff99d1 100644 (file)
@@ -312,7 +312,7 @@ void Os_AlarmAutostart(void) {
                if (alarmPtr->autostartPtr != NULL) {\r
                        const OsAlarmAutostartType *autoPtr = alarmPtr->autostartPtr;\r
 \r
-                       if (os_sys.appMode & autoPtr->appModeRef) {\r
+                       if (Os_Sys.appMode & autoPtr->appModeRef) {\r
                                if (autoPtr->autostartType == ALARM_AUTOSTART_ABSOLUTE) {\r
                                        SetAbsAlarm(j, autoPtr->alarmTime, autoPtr->cycleTime);\r
                                } else {\r
index c0de676c2c8e09f0a52668bcdea7e3b050ccf8eb..0c63b5c2282761ba633d420987a95ac559f8e446 100644 (file)
  * for more details.\r
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
+/* ----------------------------[includes]------------------------------------*/\r
+\r
 #include <stdlib.h>\r
+#include <stdint.h>\r
 #include "Os.h"\r
 \r
 #include "internal.h"\r
 #include "arc.h"\r
 #include "arch.h"\r
 \r
+/* ----------------------------[private define]------------------------------*/\r
+/* ----------------------------[private macro]-------------------------------*/\r
+#define APPL_ID_TO_MASK(_x)   (1<<(_x))\r
+\r
+/* ----------------------------[private typedef]-----------------------------*/\r
+/* ----------------------------[private function prototypes]-----------------*/\r
+/* ----------------------------[private variables]---------------------------*/\r
+#if OS_APPLICATION_CNT!=0\r
+OsAppVarType Os_AppVar[OS_APPLICATION_CNT];\r
+#endif\r
+\r
+/* ----------------------------[private functions]---------------------------*/\r
+/* ----------------------------[public functions]----------------------------*/\r
+\r
+\r
+/* @req OS547\r
+ *   Availability of AllowAccess(): Available in Scalability Classes 3 and 4.\r
+ * @req OS536\r
+ *    Availability of TerminateApplication(): Available in Scalability Classes 3 and 4.\r
+ * @req OS520\r
+ *    Availability  of  CheckObjectOwnership():Available  in  Scalability  Classes 3 and 4.\r
+ *\r
+ */\r
+\r
+\r
+#if    (OS_USE_APPLICATIONS == STD_ON)\r
+\r
+/**\r
+ * This service determines the currently running OS-Application (a unique\r
+ * identifier has to be allocated to each application).\r
+ *
+ * @return <identifier of running OS-Application> or INVALID_OSAPPLICATION
+ */\r
+\r
+ApplicationType GetApplicationID( void ) {\r
+       return Os_Sys.currApplId;\r
+}\r
+\r
+\r
+/**\r
+ * A (trusted or non-trusted) OS-Application uses this service to call a trusted\r
+ * function\r
+ *
+ * @param FunctionIndex                Index of the function to be called.
+ * @param FunctionParams    Pointer to the parameters for the function -\r
+ *                                                     specified by the FunctionIndex - to be called.\r
+ *                                                     If no parameters are provided, a NULL pointer has\r
+ *                                                     to be passed.
+ * @return
+ */\r
+StatusType     CallTrustedFunction(    TrustedFunctionIndexType FunctionIndex,\r
+                                                                       TrustedFunctionParameterRefType FunctionParams ) {\r
+\r
+\r
+       return E_OK;\r
+}\r
+\r
+\r
+\r
+/**\r
+ * This service checks if a memory region is write/read/execute accessible\r
+ * and also returns information if the memory region is part of the stack\r
+ * space.\r
+ *
+ * @param ISRID                ISR reference
+ * @param Address   Start of memory area
+ * @param Size      Size of memory area
+ * @return
+ */\r
+AccessType CheckISRMemoryAccess( ISRType isrId,\r
+                                                               MemoryStartAddressType address,\r
+                                                               MemorySizeType size )\r
+{\r
+       ptrdiff_t addr = (ptrdiff_t)address;\r
+       (void)addr;\r
+       (void)size;\r
+\r
+       if( isrId > OS_TASK_CNT ) {\r
+               return 0;\r
+       }\r
+       return 0;\r
+}\r
+/**\r
+ * This service checks if a memory region is write/read/execute accessible\r
+ * and also returns information if the memory region is part of the stack\r
+ * space.\r
+ *\r
+ * Check returned accesstype with:\r
+ *   OSMEMORY_IS_READABLE(<AccessType>)\r
+ *   OSMEMORY_IS_WRITEABLE(<AccessType>)\r
+ *   OSMEMORY_IS_EXECUTABLE(<AccessType>)\r
+ *   OSMEMORY_IS_STACKSPACE(<AccessType>)\r
+ *\r
+ * TODO: Not really sure what this function is actually good for? Add a use-case!\r
+ *
+ * @param TaskID   Task reference
+ * @param Address  Start of memory area
+ * @param Size     Size of memory area
+ * @return
+ */\r
+AccessType CheckTaskMemoryAccess(      TaskType taskId,\r
+                                                                       MemoryStartAddressType address,\r
+                                                                       MemorySizeType size )\r
+{\r
+       ptrdiff_t addr = (ptrdiff_t)address;\r
+       (void)addr;\r
+       (void)size;\r
+\r
+       /* @req OS270:\r
+        * if the Task reference <TaskID> in a call of CheckTaskMemoryAccess() is\r
+        * not valid, CheckTaskMemoryAccess() shall yield no access rights.\r
+        */\r
+       if( taskId > OS_TASK_CNT ) {\r
+               return 0;\r
+       }\r
+\r
+       /* TODO: Add body :) */\r
+       return 0;\r
+}\r
+\r
+\r
+/**\r
+ * This service determines if the OS-Applications, given by ApplID,\r
+ * is allowed to use the IDs of a Task, ISR, Resource, Counter,\r
+ * Alarm or Schedule Table in API calls.\r
+ *\r
+ * @param ApplID      OS-Application identifier
+ * @param ObjectType  Type of the following parameter
+ * @param object      The object to be examined
+ * @return ACCESS if the ApplID has access to the object\r
+ * NO_ACCESS otherwise
+ */\r
+ObjectAccessType CheckObjectAccess( ApplicationType ApplId,\r
+                                                                       ObjectTypeType ObjectType,\r
+                                                                       uint32_t objectId )\r
+{\r
+       uint32 appMask = APPL_ID_TO_MASK(ApplId);\r
+       ObjectAccessType orv;\r
+       _Bool rv = 0;\r
+\r
+\r
+       /* @req OS423\r
+        * If in a call of CheckObjectAccess() the object to  be examined\r
+        * is not avalid object OR <ApplID> is invalid OR <ObjectType> is\r
+        * invalid THEN CheckObjectAccess() shall return NO_ACCESS.\r
+        */\r
+       if( ApplId > OS_APPLICATION_CNT ) {\r
+               return NO_ACCESS;\r
+       }\r
+\r
+       /* @req OS272\r
+        * If the OS-Application <ApplID> in a call of CheckObjectAccess() has no\r
+        * access to the queried object, CheckObjectAccess() shall return NO_ACCESS.\r
+        *\r
+        * TODO: Could be that OS450 comes into play here....and then this is wrong.\r
+        */\r
+       if( Os_AppVar[ApplId].state != APPLICATION_ACCESSIBLE ) {\r
+               return NO_ACCESS;\r
+       }\r
+\r
+       /* TODO: check id */\r
+       switch( ObjectType ) {\r
+       case OBJECT_ALARM:\r
+               rv =  ((OsAlarmType *)objectId)->accessingApplMask & (appMask);\r
+               break;\r
+       case OBJECT_COUNTER:\r
+               rv =  ((OsCounterType *)objectId)->accessingApplMask & (appMask);\r
+               break;\r
+       case OBJECT_ISR:\r
+               /* TODO: Add more things here for missing objects */\r
+               break;\r
+       case OBJECT_MESSAGE:\r
+       case OBJECT_RESOURCE:\r
+       case OBJECT_SCHEDULETABLE:\r
+               break;\r
+       case OBJECT_TASK:\r
+               rv = ((OsCounterType *)objectId)->accessingApplMask & (appMask);\r
+               break;\r
+       default:\r
+               /* @req OS423 */\r
+               rv = NO_ACCESS;\r
+               break;\r
+       }\r
 \r
+       orv = rv ? ACCESS : NO_ACCESS;\r
+\r
+       return orv;\r
+}\r
+\r
+/**\r
+ * This service determines to which OS-Application a given Task, ISR, Resource,\r
+ * Counter, Alarm or Schedule Table belongs\r
+ *
+ * @param ObjectType Type of the following parameter
+ * @param object     The object to be examined\r
+ * @return The OS-Application to which the object ObjectType belongs or\r
+ * INVALID_OSAPPLICATION if the object does not exists
+ */\r
+ApplicationType CheckObjectOwnership( ObjectTypeType ObjectType,\r
+                                                                       uint32_t objectId )\r
+{\r
+       ApplicationType rv = INVALID_OSAPPLICATION;\r
+\r
+       switch( ObjectType ) {\r
+       case OBJECT_ALARM:\r
+               break;\r
+       case OBJECT_COUNTER:\r
+               break;\r
+       case OBJECT_ISR:\r
+               break;\r
+       case OBJECT_MESSAGE:\r
+               break;\r
+       case OBJECT_RESOURCE:\r
+               break;\r
+       case OBJECT_SCHEDULETABLE:\r
+               break;\r
+       case OBJECT_TASK:\r
+               if( objectId < OS_TASK_CNT ) {\r
+                       rv = Os_TaskGetApplicationOwner((TaskType)objectId);\r
+               }\r
+               break;\r
+       default:\r
+               break;\r
+       }\r
+\r
+       return rv;\r
+}\r
+\r
+\r
+/**\r
+ * This service terminates the OS-Application to which the calling Task/Category 2\r
+ * ISR/application specific error hook belongs.\r
+ *
+ * @param      Application - The identifier of the OS-Application to be terminated.\r
+ *                     If the caller belongs to <Application> the call results in a\r
+ *                     self termination.\r
+ *\r
+ * @param      RestartOption - Either RESTART for doing a restart of the\r
+ *                     OS-Application or NO_RESTART if OS-Application shall not be restarted.\r
+ *
+ * @return  E_OK: No errors\r
+ *                     E_OS_ID: <Application> was not valid\r
+ *                     E_OS_VALUE: <RestartOption> was neither RESTART nor NO_RESTART\r
+ *                     E_OS_ACCESS: The caller does not have the right to terminate <Application>\r
+ *                     E_OS_STATE: The state of <Application> does not allow terminating <Application>
+ */\r
+StatusType TerminateApplication(  ApplicationType applId, RestartType restartOption ) {\r
+       (void)applId;\r
+       (void)restartOption;\r
+       return E_OK;\r
+}\r
+\r
+\r
+/**\r
+ * This service sets the own state of an OS-Application from\r
+ * APPLICATION_RESTARTING to APPLICATION_ACCESSIBLE.\r
+ *
+ * @return  E_OK : No errors\r
+ *                     E_OS_STATE : The OS-Application of the caller is in the wrong\r
+state
+ */\r
+StatusType AllowAccess( void ) {\r
+       ApplicationType applId = Os_Sys.currApplId;\r
+\r
+       /* @req OS497 */\r
+       if( Os_AppVar[applId].state != APPLICATION_RESTARTING ) {\r
+               return E_OS_STATE;\r
+       }\r
+\r
+       /* @req OS498 */\r
+       Os_AppVar[applId].state = APPLICATION_ACCESSIBLE;\r
+       return E_OK;\r
+}\r
+\r
+/**\r
+ * This service returns the current state of an OS-Application.\r
+ * SC: SC3 and SC4\r
+ *
+ * @param ApplId               The OS-Application from which the state is requested
+ * @param Value                The current state of the application
+ * @return  E_OK: No errors, E_OS_ID: <Application> is not valid
+ */\r
+StatusType GetApplicationState(   ApplicationType applId,  ApplicationStateRefType value ) {\r
+\r
+       if(applId > OS_APPLICATION_CNT ) {\r
+               return E_OS_ID;\r
+       }\r
+\r
+       *value = Os_AppVar[applId].state;\r
+\r
+       return E_OK;\r
+}\r
+\r
+\r
+/**\r
+ * TODO: Move somewhere else
+ * @param mode
+ * @return
+ */\r
 StatusType GetActiveApplicationMode( AppModeType* mode) {\r
-        *mode = os_sys.appMode;\r
+        *mode = Os_Sys.appMode;\r
         return E_OK;\r
 }\r
+\r
+\r
+/**\r
+ *
+ */\r
+void Os_ApplStart( void ) {\r
+       uint16_t i;\r
+\r
+       /* Call startuphooks for all applications */\r
+       for(i=0;i<OS_APPLICATION_CNT;i++) {\r
+\r
+               Os_AppVar[i].state = APPLICATION_ACCESSIBLE;\r
+\r
+               if( Os_AppConst[i].StartupHook != NULL ) {\r
+                       Os_AppConst[i].StartupHook();\r
+               }\r
+       }\r
+}\r
+\r
+uint8_t Os_ApplGetCore( ApplicationType appl )\r
+{\r
+       return Os_AppConst[appl].core;\r
+}\r
+\r
+\r
+#endif\r
index e7ad155bd2cb05e4848b94ba877b8d103b1eeb75..6168c9c4b7765b3de8e873c01a3c1540c34690a2 100644 (file)
 #include <stddef.h>\r
 #include "internal.h"\r
 \r
+#if defined(__GNUC__)\r
 #define DECLARE(sym,val) \\r
        __asm("#define\t" #sym "\t%0" : : "n" ((val)))\r
 \r
 void  asm_foo(void) {\r
-       DECLARE(PCB_STACK_CURR_P,       offsetof(OsPcbType, stack));\r
-       DECLARE(PCB_ENTRY_P,            offsetof(OsPcbType, entry));\r
-       DECLARE(SYS_CURR_PCB_P,         offsetof(sys_t, curr_pcb));\r
-       DECLARE(SYS_INT_NEST_CNT, offsetof(sys_t, int_nest_cnt));\r
-       DECLARE(SYS_INT_STACK, offsetof(sys_t, int_stack));\r
+#elif defined(__CWCC__)\r
+#define DECLARE(_var,_offset) \\r
+    __declspec(section ".apa") char _var[100+ (_offset)]\r
+#pragma section ".apa" ".apa"\r
+#endif\r
+DECLARE(PCB_STACK_CURR_P,      offsetof(OsTaskVarType, stack));\r
+       DECLARE(PCB_CONST_P,            offsetof(OsTaskVarType, constPtr));\r
+//     DECLARE(PCB_ENTRY_P,            offsetof(OsTaskVarType, entry));\r
+       DECLARE(SYS_CURR_PCB_P,         offsetof(Os_SysType, currTaskPtr));\r
+       DECLARE(SYS_INT_NEST_CNT, offsetof(Os_SysType, intNestCnt));\r
+       DECLARE(SYS_INT_STACK, offsetof(Os_SysType, intStack));\r
+#if defined(__GNUC__)\r
 }\r
-\r
-\r
+#endif\r
 \r
index b882281d50fb2f8da65d2e7ce6dc5dfdb176a19c..a1fa0ecbe881ea30bdb04a9f840cf78ba0d52b39 100644 (file)
@@ -24,6 +24,8 @@
  *\r
  */\r
 \r
+#include "Os.h"\r
+\r
 void apa(void *);\r
 \r
 void interrupt(void) __attribute__((__interrupt__));\r
@@ -36,6 +38,7 @@ void interrupt( void ) {
 \r
 void func1( int a ) {\r
 \r
+\r
 }\r
 \r
 int func3( int a ) {\r
diff --git a/system/kernel/com_internal.c b/system/kernel/com_internal.c
deleted file mode 100644 (file)
index b3aef28..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/* -------------------------------- Arctic Core ------------------------------\r
- * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
- *\r
- * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
- *\r
- * This source code is free software; you can redistribute it and/or modify it\r
- * under the terms of the GNU General Public License version 2 as published by the\r
- * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
- *\r
- * This program is distributed in the hope that it will be useful, but\r
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
- * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
- * for more details.\r
- * -------------------------------- Arctic Core ------------------------------*/\r
-\r
-#include "Os.h"\r
-#include "internal.h"\r
-\r
-/* Queued message\r
- *   The messages are put in a queue. Copied to the destination...\r
- *\r
- * Unqueued message\r
- *   Latest message in queue. Put the message in a container ref by message_id.\r
- *   It's just a copy. The message can be read by "anyone" and as many times as you\r
- *   would like\r
- *\r
- * Add new functions ??\r
- *   SendMessageNoCopy( ) .. must have GetMsgApa().. this gets to be a resource lock... hmm\r
- *\r
- *\r
- *\r
- */\r
-\r
-StatusType SendMessage( MessageType message_id, ApplicationDataRef dataRef ) {\r
-\r
-\r
-       OsMessageType *msg;\r
-\r
-       // Is the message valid ?\r
-       if( message_id > Os_CfgGetMessageCnt() ) {\r
-               // TODO: Add error hook here\r
-               return E_COM_ID;\r
-       }\r
-\r
-       if( msg->property != SEND_STATIC_INTERNAL ) {\r
-               // TODO: Add error hook here\r
-               return E_COM_ID;\r
-       }\r
-\r
-       // Copy the data to interal buffers\r
-       msg = Os_CfgGetMessage(message_id);\r
-\r
-       // copy data\r
-       memcpy(msg->data,dataRef,msg->data_size);\r
-\r
-\r
-#if 0\r
-       // Is it a queue message?\r
-       switch( msg->notification ) {\r
-       case MESSAGE_NOTIFICATION_ACTION_ACTIVATETASK:\r
-               // TODO: Is this activatetask ???\r
-               break;\r
-       case MESSAGE_NOTIFICATION_ACTION_SETEVENT:\r
-               // TODO:\r
-               break;\r
-       case MESSAGE_NOTIFICATION_ACTION_NONE:\r
-               break;\r
-       default:\r
-               assert(0);\r
-               break;\r
-       }\r
-#endif\r
-\r
-       return E_OK;\r
-}\r
-\r
-StatusType ReceiveMessage( MessageType message_id, ApplicationDataRef dataRef ) {\r
-       OsMessageType *msg;\r
-       // Check if valid\r
-\r
-       // Copy from container to dataRef\r
-       msg = Os_CfgGetMessage(message_id);\r
-       memcpy(dataRef,msg->data,msg->data_size);\r
-\r
-       return E_OK;\r
-}\r
-\r
-\r
-\r
index 21b18fbca5ac486fffbce091cf19afc07b9c96e6..eeeb6b31c10e9aecaa78995c7a7b88f595bed7ec 100644 (file)
@@ -112,7 +112,7 @@ StatusType GetCounterValue( CounterType counter_id , TickRefType tick_ref)
        if( cPtr->type == COUNTER_TYPE_HARD ) {\r
                if( cPtr->driver == NULL ) {\r
                        /* It's OSINTERNAL */\r
-                       *tick_ref = os_sys.tick;\r
+                       *tick_ref = Os_Sys.tick;\r
                } else {\r
 #if 0\r
                /* We support only GPT for now */\r
@@ -195,7 +195,7 @@ void OsTick( void ) {
                OsPcbType *pcbPtr;\r
 #endif\r
 \r
-               os_sys.tick++;\r
+               Os_Sys.tick++;\r
 \r
                cPtr->val = Os_CounterAdd( cPtr->val, Os_CounterGetMaxValue(cPtr), 1 );\r
 \r
@@ -221,7 +221,7 @@ void OsTick( void ) {
 }\r
 \r
 TickType GetOsTick( void ) {\r
-       return get_os_tick();\r
+       return Os_Sys.tick;\r
 }\r
 \r
 \r
index d4a849faa574e75a3a217e09f78add267a86a616..670f204d91826be16b07716481b6af65d3b45cba 100644 (file)
 \r
 StatusType WaitEvent( EventMaskType Mask ) {\r
 \r
-       OsPcbType *curr_pcb = get_curr_pcb();\r
+       OsTaskVarType *curr_pcb = get_curr_pcb();\r
        StatusType rv = E_OK;\r
 \r
        OS_DEBUG(D_EVENT,"# WaitEvent %s\n",Os_TaskGetCurrent()->name);\r
 \r
-       if( os_sys.int_nest_cnt != 0 ) {\r
+       if( Os_Sys.intNestCnt != 0 ) {\r
                rv =  E_OS_CALLEVEL;\r
                goto err;\r
        }\r
 \r
-       if (curr_pcb->proc_type != PROC_EXTENDED) {\r
+       if (curr_pcb->constPtr->proc_type != PROC_EXTENDED) {\r
                rv = E_OS_ACCESS;\r
                goto err;\r
        }\r
 \r
-       if ( Os_TaskOccupiesResources(curr_pcb) ||\r
-                !Os_SchedulerResourceIsFree() ) {\r
+       if ( Os_TaskOccupiesResources(curr_pcb) ) {\r
                rv = E_OS_RESOURCE;\r
                goto err;\r
        }\r
@@ -71,8 +70,13 @@ StatusType WaitEvent( EventMaskType Mask ) {
 \r
                curr_pcb->ev_wait = Mask;\r
 \r
-               Os_Dispatch(OP_WAIT_EVENT);\r
-               assert( curr_pcb->state & ST_RUNNING );\r
+               if ( Os_SchedulerResourceIsFree() ) {\r
+                       // Os_TaskMakeWaiting(currTaskPtr);\r
+                       Os_Dispatch(OP_WAIT_EVENT);\r
+                       assert( curr_pcb->state & ST_RUNNING );\r
+               } else {\r
+                       Os_TaskMakeWaiting(curr_pcb);\r
+               }\r
        }\r
 \r
        Irq_Enable();\r
@@ -97,8 +101,8 @@ StatusType WaitEvent( EventMaskType Mask ) {
 \r
 StatusType SetEvent( TaskType TaskID, EventMaskType Mask ) {\r
        StatusType rv = E_OK;\r
-       OsPcbType *dest_pcb;\r
-       OsPcbType *currPcbPtr;\r
+       OsTaskVarType *destPcbPtr;\r
+       OsTaskVarType *currPcbPtr;\r
        uint32_t flags;\r
 \r
        OS_DEBUG(D_EVENT,"# SetEvent %s\n",Os_TaskGetCurrent()->name);\r
@@ -108,15 +112,25 @@ StatusType SetEvent( TaskType TaskID, EventMaskType Mask ) {
                goto err;\r
        }\r
 \r
-       dest_pcb = os_get_pcb(TaskID);\r
+       destPcbPtr = Os_TaskGet(TaskID);\r
+\r
+#if    (OS_USE_APPLICATIONS == STD_ON)\r
+       if( destPcbPtr->constPtr->applOwnerId != Os_Sys.currApplId ) {\r
+               /* We are activating a task in another application */\r
+               if( Os_AppVar[Os_Sys.currApplId].state != APPLICATION_ACCESSIBLE ) {\r
+                       rv=E_OS_ACCESS;\r
+                       goto err;\r
+               }\r
+       }\r
+#endif\r
 \r
 #if (OS_STATUS_EXTENDED == STD_ON )\r
-       if( dest_pcb->proc_type != PROC_EXTENDED ) {\r
+       if( destPcbPtr->constPtr->proc_type != PROC_EXTENDED ) {\r
                rv = E_OS_ACCESS;\r
                goto err;\r
        }\r
 \r
-       if( (dest_pcb->state & ST_SUSPENDED ) ) {\r
+       if( (destPcbPtr->state & ST_SUSPENDED ) ) {\r
                rv = E_OS_STATE;\r
                goto err;\r
        }\r
@@ -135,27 +149,27 @@ StatusType SetEvent( TaskType TaskID, EventMaskType Mask ) {
         * defined, see chapter 9.2)\r
         * ... */\r
 \r
-       dest_pcb->ev_set |= Mask;\r
-\r
-       if( (Mask & dest_pcb->ev_wait)\r
-#if defined(USE_KERNEL_EXTRA)\r
-                       /* Don't dispatch if target task is sleeping */\r
-                       && !(dest_pcb->state & ST_SLEEPING)\r
-#endif\r
-\r
-       ) {\r
-               assert(dest_pcb->state & ST_WAITING );\r
-\r
-               Os_TaskMakeReady(dest_pcb);\r
-\r
-               currPcbPtr = Os_TaskGetCurrent();\r
-               /* Checking "4.6.2  Non preemptive scheduling" it does not dispatch if NON  */\r
-               if( (os_sys.int_nest_cnt == 0) &&\r
-                       (currPcbPtr->scheduling == FULL) &&\r
-                       (dest_pcb->prio > currPcbPtr->prio) &&\r
-                       (Os_SchedulerResourceIsFree()) )\r
-               {\r
-                       Os_Dispatch(OP_SET_EVENT);\r
+       destPcbPtr->ev_set |= Mask;\r
+\r
+       if( (Mask & destPcbPtr->ev_wait) ) {\r
+               /* We have an event match */\r
+               if( destPcbPtr->state & ST_WAITING) {\r
+                       Os_TaskMakeReady(destPcbPtr);\r
+\r
+                       currPcbPtr = Os_TaskGetCurrent();\r
+                       /* Checking "4.6.2  Non preemptive scheduling" it does not dispatch if NON  */\r
+                       if( (Os_Sys.intNestCnt == 0) &&\r
+                               (currPcbPtr->constPtr->scheduling == FULL) &&\r
+                               (destPcbPtr->activePriority > currPcbPtr->activePriority) &&\r
+                               (Os_SchedulerResourceIsFree()) )\r
+                       {\r
+                               Os_Dispatch(OP_SET_EVENT);\r
+                       }\r
+\r
+               }  else if(destPcbPtr->state & (ST_READY|ST_RUNNING|ST_SLEEPING) ) {\r
+                       /* Hmm, we do nothing */\r
+               } else {\r
+                       assert( 0 );\r
                }\r
        }\r
 \r
@@ -179,7 +193,7 @@ StatusType SetEvent( TaskType TaskID, EventMaskType Mask ) {
  */\r
 StatusType GetEvent( TaskType TaskId, EventMaskRefType Mask) {\r
 \r
-       OsPcbType *dest_pcb;\r
+       OsTaskVarType *destPcbPtr;\r
        StatusType rv = E_OK;\r
 \r
        if( TaskId  >= OS_TASK_CNT ) {\r
@@ -187,12 +201,12 @@ StatusType GetEvent( TaskType TaskId, EventMaskRefType Mask) {
                goto err;\r
        }\r
 \r
-       dest_pcb = os_get_pcb(TaskId);\r
+       destPcbPtr = Os_TaskGet(TaskId);\r
 \r
-       VALIDATE_W_RV(dest_pcb->proc_type != PROC_EXTENDED,E_OS_ACCESS);\r
-       VALIDATE_W_RV(dest_pcb->state & ST_SUSPENDED,E_OS_STATE);\r
+       VALIDATE_W_RV(destPcbPtr->constPtr->proc_type != PROC_EXTENDED,E_OS_ACCESS);\r
+       VALIDATE_W_RV(destPcbPtr->state & ST_SUSPENDED,E_OS_STATE);\r
 \r
-       *Mask = dest_pcb->ev_set;\r
+       *Mask = destPcbPtr->ev_set;\r
 \r
        if (0) goto err;\r
 \r
@@ -210,16 +224,16 @@ StatusType GetEvent( TaskType TaskId, EventMaskRefType Mask) {
  */\r
 StatusType ClearEvent( EventMaskType Mask) {\r
     StatusType rv = E_OK;\r
-       OsPcbType *pcb;\r
+       OsTaskVarType *pcb;\r
 \r
-       if( os_sys.int_nest_cnt != 0 ) {\r
+       if( Os_Sys.intNestCnt != 0 ) {\r
                rv =  E_OS_CALLEVEL;\r
                goto err;\r
        }\r
 \r
        pcb = get_curr_pcb();\r
 \r
-       if (pcb->proc_type != PROC_EXTENDED) {\r
+       if (pcb->constPtr->proc_type != PROC_EXTENDED) {\r
                rv = E_OS_ACCESS;\r
                goto err;\r
        }\r
index 4d206d93c4c1d8a3eb8648fb22033bce68baf1dd..5a652251e35bf7731d3172c287be52932e2e3865 100644 (file)
@@ -42,7 +42,7 @@ typedef enum alarm_action_type_e {
        ALARM_ACTION_ACTIVATETASK=0,\r
        ALARM_ACTION_SETEVENT,\r
        ALARM_ACTION_ALARMCALLBACK,             /* Only class 1 */\r
-       ALARM_ACTION_INCREMENTCOUNTER/* SWS OS302 */\r
+       ALARM_ACTION_INCREMENTCOUNTER/* SWS OS302 */\r
 } alarm_action_type_t;\r
 \r
 \r
@@ -64,7 +64,7 @@ enum OsAlarmAutostartTypeType {
        // Start with SetAbsAlarm()\r
        ALARM_AUTOSTART_ABSOLUTE,\r
        // Start with SetRelAlarm()\r
-       ALARM_AUTOSTART_RELATIVE,\r
+       ALARM_AUTOSTART_RELATIVE\r
 };\r
 \r
 \r
@@ -82,7 +82,7 @@ typedef struct OsAlarmAutostart {
 } OsAlarmAutostartType;\r
 \r
 /* STD container : OsAlarm\r
- * OsAlarmAccessionApplication: 0..* Ref to OS application\r
+ * OsAlarmAccessingApplication: 0..* Ref to OS application\r
  * OsAlamCounterRef:            1    Ref to counter\r
  * OsAlarmAction[C]             1    Action when alarm expires\r
  * OsAlarmAutostart[C]          0..1 Autostart\r
@@ -92,6 +92,11 @@ typedef struct OsAlarm {
        /* Reference to counter */\r
        struct OsCounter *counter;\r
 \r
+#if    (OS_USE_APPLICATIONS == STD_ON)\r
+       ApplicationType applOwnerId;\r
+       uint32 accessingApplMask;\r
+#endif\r
+\r
        CounterType counter_id;\r
        /* cycle, 0 = no cycle */\r
        uint32 alarmtime;\r
@@ -122,5 +127,6 @@ typedef struct OsAlarm {
 \r
 \r
 void Os_AlarmCheck(OsCounterType *c_p);\r
+void Os_AlarmAutostart(void);\r
 \r
 #endif /*ALARM_I_H_*/\r
index 0ec52e06fbde64482f703876ad37a4b6562cfdd4..c644e9f5525a665b27cfe4881e2d98f4de3d705c 100644 (file)
@@ -2,7 +2,57 @@
 #ifndef APPLICATION_H_\r
 #define APPLICATION_H_\r
 \r
-#if ( OS_SC3 == STD_ON) || ( OS_SC4 == STD_ON )\r
+/*\r
+ * IMPLEMENTATION NOTES:\r
+ *\r
+ *  OS448:  The  Operating  System  module  shall  prevent  access  of\r
+ *  OS-Applications, trusted or non-trusted, to objects not belonging\r
+ *  to this OS-Application, except access rights for such objects are\r
+ *  explicitly granted by configuration.\r
+ *\r
+ *  OS509:  If  a  service  call  is  made  on  an  Operating  System\r
+ *  object  that  is  owned  by another OS-Application without state\r
+ *  APPLICATION_ACCESSIBLE, then the Operating System module shall return E_OS_ACCESS.\r
+ *\r
+ *  OS056: If an OS-object identifier is the parameter of an Operating System module\92s\r
+ *  system service, and no sufficient access rights have been assigned to this OS-object\r
+ *  at  configuration  time  (Parameter  Os[...]AccessingApplication)  to  the  calling\r
+ *  Task/Category  2  ISR,  the  Operating  System  module\92s  system  service  shall  return\r
+ *  E_OS_ACCESS.\r
+ *\r
+ *  OS311: If OsScalabilityClass is SC3 or SC4 AND a Task OR Category 2 ISR OR\r
+ *  Resources OR Counters OR Alarms OR Schedule tables does not belong to exactly\r
+ *  one OS-Application the consistency check shall issue an error.\r
+ *\r
+ *  Page 52:\r
+ *  It is assumed that the Operating System module itself is trusted.\r
+ *\r
+ *  Sooo, that gives us:\r
+ *  1. For each\r
+ *\r
+ *\r
+ *  1. App1, NT\r
+ *     Task11\r
+ *  2. App2, NT\r
+ *     Task21\r
+ *  3. App3, T\r
+ *     Task31\r
+ *  4. App4, T\r
+ *     Task41\r
+ *\r
+ *  * App2->App1: ActivateTask(Task11)\r
+ *    This is OK as long as Task11 have granted access to it during configuration\r
+ *  * App4->App3: ActivateTask(Task31)\r
+ *    This is OK as long as Task31 have granted access to it during configuration\r
+ *  * App1->App4: ActivateTask(Task41)\r
+ *    It's not really clear if the OS automagically exports all services..\r
+ *    But this could also be CallTrustedFunction(ServiceId_AcivateTask,???)\r
+ *
+ */\r
+\r
+\r
+\r
+#if (OS_USE_APPLICATIONS == STD_ON)\r
 \r
 /* STD container : OsApplicationHooks\r
  * class: 3,4\r
@@ -36,44 +86,45 @@ typedef struct OsAppHooks {
  *       management issue, not an access issue.\r
  * */\r
 \r
-typedef struct OsApplication {\r
+typedef struct OsAppVar {\r
        /* 0 - Non-trusted application\r
         * 1 - Trusted application */\r
        _Bool trusted;\r
 \r
        /* NOTE! Refs here is memory management issue */\r
 \r
-       /* The application hooks */\r
-       OsAppHooksType hooks;\r
+       /* The current state of the application */\r
+       ApplicationStateType state;\r
 \r
        /* Trusted functions */\r
        /* .... */\r
-} OsApplicationType;\r
+} OsAppVarType;\r
 \r
 \r
 /* NON standard type.\r
  * Used for ROM based parameters.... TODO\r
  */\r
-typedef struct OsRomApplication {\r
-       uint32  application_id;\r
+typedef struct OsApplication {\r
+       uint32  appId;\r
        char    name[16];\r
-       uint8   trusted;\r
+       _Bool   trusted;\r
+       uint8_t core;\r
 \r
-       /* hooks */\r
+       /* hooks, the names are StartupHook_<name>(), etc. */\r
        void (*StartupHook)( void );\r
-       void (*ShutdownHook)( Std_ReturnType Error );\r
-       void (*ErrorHook)( Std_ReturnType Error );\r
+       void (*ShutdownHook)( StatusType Error );\r
+       void (*ErrorHook)( StatusType Error );\r
+\r
+       int     restartTaskId;\r
+} OsAppConstType;\r
 \r
-       uint32 isr_mask;\r
-       uint32 scheduletable_mask;\r
-       uint32 alarm_mask;\r
-       uint32 counter_mask;\r
-       uint32 resource_mask;\r
-       uint32 message_mask;\r
+#if OS_APPLICATION_CNT!=0\r
+extern OsAppVarType Os_AppVar[OS_APPLICATION_CNT];\r
+#endif\r
 \r
-} OsRomApplicationType;\r
+uint8_t Os_ApplGetCore( ApplicationType appl );\r
 \r
-#endif /*  ( OS_SC1 == STD_ON ) || ( OS_SC4 == STD_ON ) */\r
+#endif /*  (OS_USE_APPLICATIONS == STD_ON) */\r
 \r
 \r
 #endif /* APPLICATION_H_ */\r
index fc27f15e56d59f26723e5c9a02aa610b0ea910eb..ae602753363a03bc656e7f32bca9264a0dc0401d 100644 (file)
@@ -67,7 +67,7 @@ void Os_ArchSwapContextTo(void *old,void *new);
  *\r
  * @param pcb Ptr to pcb\r
  */\r
-void Os_ArchSetupContext( OsPcbType *pcb );\r
+void Os_ArchSetupContext( OsTaskVarType *pcb );\r
 \r
 /**\r
  * Get current stack pointer\r
@@ -117,7 +117,7 @@ void Os_ArchReboot( int type );
  */\r
 unsigned int Os_ArchGetScSize( void );\r
 \r
-void Os_ArchSetTaskEntry(OsPcbType *pcbPtr );\r
+void Os_ArchSetTaskEntry(OsTaskVarType *pcbPtr );\r
 \r
 \r
 #endif /*ARCH_H_*/\r
diff --git a/system/kernel/include/com_internal.h b/system/kernel/include/com_internal.h
deleted file mode 100644 (file)
index bafaa6a..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-\r
-#ifndef COM_INTERNAL_H_\r
-#define COM_INTERNAL_H_\r
-\r
-\r
-/*-----------------------------------------------------------------*/\r
-\r
-/*\r
- * The only information about the COM that is valid is\r
- * in the COM specification ..SWS_COM.pdf.\r
- *\r
- * The most important requirements are COM010 and COM013\r
- *\r
- * Com_Init()\r
- * Com_DeInit()\r
- *\r
- * No error hooks..\r
- * No. GetMessageStatus()\r
- * No. SendZeroMessage()\r
- * No. SendDynamicMessage(), RecieveDynamicMessage()\r
- * Yes. SendMessage()\r
- *\r
- * */\r
-\r
-typedef enum OsMessageProperty {\r
-       // ???\r
-       SEND_STATIC_INTERNAL,\r
-       // messages are not consumed during read\r
-       RECEIVE_UNQUEUED_INTERNAL,\r
-       // We have an internal queue\r
-       RECEIVE_QUEUE_INTERNAL,\r
-} OsMessagePropertyType;\r
-\r
-\r
-\r
-typedef enum OsMessageNotificationAction {\r
-       MESSAGE_NOTIFICATION_ACTION_NONE=0,\r
-       MESSAGE_NOTIFICATION_ACTION_ACTIVATETASK,\r
-       MESSAGE_NOTIFICATION_ACTION_SETEVENT,\r
-} OsMessageNotificationActionType;\r
-\r
-typedef struct OsMessageNotification {\r
-       OsMessageNotificationActionType type;\r
-       TaskType                task_id;\r
-       EventMaskType   event_id;\r
-} OsMessageNotificationType;\r
-\r
-\r
-typedef struct OsMessage {\r
-       OsMessagePropertyType           property;               // send/recieve...\r
-       OsMessageNotificationType       notification;\r
-       int                                             q_size;                 // 0-Not queued\r
-\r
-       // TODO: This is not a good solution but it will have to do for now\r
-       void *data;\r
-       int data_size;\r
-} OsMessageType;\r
-\r
-\r
-#endif /* COM_INTERNAL_H_ */\r
index d8d23ed9d10b52c59c3ba977476077a30292db8e..465d93063d81f5b893fec02f5e517746fb72d7ad 100644 (file)
@@ -46,7 +46,10 @@ typedef struct OsCounter {
        // The counter value ( if software counter )\r
        uint32_t val;\r
        // Application mask, SWS OS317\r
-       uint32_t app_mask;\r
+#if (OS_USE_APPLICATIONS == STD_ON)\r
+       ApplicationType applOwnerId;\r
+       uint32 accessingApplMask;\r
+#endif\r
        //  hmm, strange to call it alarm base.... but see spec.\r
        AlarmBaseType alarm_base;\r
        /* Used only if we configure a GPT timer as os timer */\r
index 09d0b3e597b64a09a72ad1527def544c06e4725e..fc44b5f13cb187f645d424a156e369428773763a 100644 (file)
 #define EXT_CONFIG_H_\r
 \r
 /* Created in Os_CfgConfig */\r
-struct OsPcb;\r
+struct OsTaskVar;\r
 struct OsAlarm;\r
 struct OsCounter;\r
 struct OsSchTbl;\r
 struct OsResource;\r
 struct OsMessage;\r
-#if ( OS_SC1 == STD_ON ) || ( OS_SC4 == STD_ON )\r
+#if    (OS_USE_APPLICATIONS == STD_ON)\r
 struct OsRomApplication;\r
 #endif\r
 \r
-#if ( OS_SC1 == STD_ON ) || ( OS_SC4 == STD_ON )\r
-int Os_CfgGetApplCnt(void);\r
+#if    (OS_USE_APPLICATIONS == STD_ON)\r
+extern const OsAppConstType Os_AppConst[OS_APPLICATION_CNT];\r
+\r
 struct OsRomApplication *Os_CfgGetApplObj( ApplicationType application_id );\r
 #endif\r
-int Os_CfgGetTaskCnt(void);\r
 void *Os_CfgGetIdleProcStack(void);\r
-int Os_CfgGetResourceCnt(void);\r
 StatusType Os_CfgGetAlarmBase(AlarmType alarm_id, AlarmBaseRefType info);\r
-uint32 Os_CfgGetAlarmCnt(void);\r
 struct OsAlarm *Os_CfgGetAlarmObj( AlarmType alarm_id );\r
 struct OsCounter *Os_CfgGetCounter(CounterType);\r
-uint32 Os_CfgGetCounterCnt(void );\r
-uint32 Os_CfgGetSchedCnt( void );\r
 struct OsSchTbl *Os_CfgGetSched( ScheduleTableType sched_id );\r
-uint32 Os_CfgGetServiceCnt( void ) ;\r
 struct OsResource *Os_CfgGetResource( ResourceType resource );\r
-\r
 struct OsMessage *Os_CfgGetMessage(MessageType message_id);\r
-uint32 Os_CfgGetMessageCnt(void );\r
 void Os_CfgValidate( void );\r
 \r
 #endif /*EXT_CONFIG_H_*/\r
index 36ff57db7da53c20a909b2465a3388be2e662a4f..33e0d1cc4a0eb5187fd8fa9da273b0ece35d8aa6 100644 (file)
  *\r
  * Os.h\r
  *  |\r
- *  |--- Os_Cfg.h\r
- *  |\r
  *  |--- Std_Types.h\r
  *  |    |--- Platform_Types.h (std?)\r
  *  |    |--- Compiler.h       (std?)\r
  *  |\r
+ *  |--- Os_Cfg.h\r
+ *  |\r
  *  |--- MemMap.h\r
  *\r
  *\r
  */\r
 \r
 #define ERRORHOOK(x) \\r
-       if( os_sys.hooks->ErrorHook != NULL  ) { \\r
-               os_sys.hooks->ErrorHook(x); \\r
+       if( Os_Sys.hooks->ErrorHook != NULL  ) { \\r
+               Os_Sys.hooks->ErrorHook(x); \\r
        }\r
 \r
+#if    (OS_USE_APPLICATIONS == STD_ON)\r
+#define PROTECTIONHOOK(_x) \\r
+       do { \\r
+               if( Os_Sys.hooks->ProtectionHook != NULL ) { \\r
+                       Os_Sys.hooks->ProtectionHook(_x); \\r
+               } \\r
+    } while(0)\r
+\r
+#endif\r
+\r
 \r
 #define PRETASKHOOK() \\r
-       assert( os_sys.curr_pcb->state & ST_RUNNING ); \\r
-       assert( os_sys.curr_pcb->flags == SYS_FLAG_HOOK_STATE_EXPECTING_PRE );  \\r
-       os_sys.curr_pcb->flags = SYS_FLAG_HOOK_STATE_EXPECTING_POST;   \\r
-       if( os_sys.hooks->PreTaskHook != NULL ) { \\r
-               os_sys.hooks->PreTaskHook(); \\r
+       assert( Os_Sys.currTaskPtr->state & ST_RUNNING ); \\r
+       assert( Os_Sys.currTaskPtr->flags == SYS_FLAG_HOOK_STATE_EXPECTING_PRE );  \\r
+       Os_Sys.currTaskPtr->flags = SYS_FLAG_HOOK_STATE_EXPECTING_POST;   \\r
+       if( Os_Sys.hooks->PreTaskHook != NULL ) { \\r
+               Os_Sys.hooks->PreTaskHook(); \\r
        }\r
 \r
 #define POSTTASKHOOK() \\r
-       assert( os_sys.curr_pcb->state & ST_RUNNING ); \\r
-       assert( os_sys.curr_pcb->flags == SYS_FLAG_HOOK_STATE_EXPECTING_POST );  \\r
-       os_sys.curr_pcb->flags = SYS_FLAG_HOOK_STATE_EXPECTING_PRE;   \\r
-       if( os_sys.hooks->PostTaskHook != NULL ) {      \\r
-               os_sys.hooks->PostTaskHook();                   \\r
+       assert( Os_Sys.currTaskPtr->state & ST_RUNNING ); \\r
+       assert( Os_Sys.currTaskPtr->flags == SYS_FLAG_HOOK_STATE_EXPECTING_POST );  \\r
+       Os_Sys.currTaskPtr->flags = SYS_FLAG_HOOK_STATE_EXPECTING_PRE;   \\r
+       if( Os_Sys.hooks->PostTaskHook != NULL ) {      \\r
+               Os_Sys.hooks->PostTaskHook();                   \\r
        }\r
 \r
 /*\r
  * PCB manipulating functions\r
  */\r
 \r
+#if 0\r
 static inline OsTaskidType get_curr_pid( void ) {\r
-       return os_sys.curr_pcb->pid;\r
+       return Os_Sys.currTaskPtr->pid;\r
 }\r
+#endif\r
 \r
-static inline OsPcbType *get_curr_pcb( void ) {\r
-       return os_sys.curr_pcb;\r
+static inline OsTaskVarType *get_curr_pcb( void ) {\r
+       return Os_Sys.currTaskPtr;\r
 }\r
 \r
-static inline void set_curr_pcb( OsPcbType *pcb ) {\r
-       os_sys.curr_pcb = pcb;\r
+static inline void set_curr_pcb( OsTaskVarType *pcb ) {\r
+       Os_Sys.currTaskPtr = pcb;\r
 }\r
-\r
-static inline _Bool is_idle_task( OsPcbType *pcb ){\r
+#if 0\r
+static inline _Bool is_idle_task( OsTaskVarType *pcb ){\r
        return (pcb->pid == 0);\r
 }\r
 \r
+\r
 static inline OsTaskidType get_curr_prio( void ){\r
-       return os_sys.curr_pcb->prio;\r
+       return Os_Sys.currTaskPtr->prio;\r
 }\r
 \r
-static inline TickType get_os_tick( void ) {\r
-       return os_sys.tick;\r
-}\r
 \r
-#if ( OS_SC3 == STD_ON ) || ( OS_SC4 == STD_ON )\r
-static inline OsApplicationType *get_curr_application( void ) {\r
-       return get_curr_pcb()->application;\r
+static inline TickType get_os_tick( void ) {\r
+       return Os_Sys.tick;\r
 }\r
 \r
-static inline uint32_t get_curr_application_id( void ) {\r
-       return get_curr_pcb()->application->application_id;\r
-}\r
-#endif\r
 \r
 static inline struct OsResource *os_get_resource_int_p( void ) {\r
-       return get_curr_pcb()->resource_int_p;\r
+       return get_curr_pcb()->resourceIntPtr;\r
 }\r
+#endif\r
 \r
 /*\r
  * Misc\r
  */\r
 \r
 static inline uint32_t os_task_nr_to_mask( uint32_t nr ) {\r
-       return (1<<nr);\r
+       return ((uint32_t) 1 << nr); // 701 PC-lint [10.5]: OK om skriver 1u... fÃ¥r dÃ¥ istället: 960 PC-lint [10.5]: BÃ¥da ok om skriver 1ul eller castar till uint32_t\r
 }\r
 \r
 // task_i.c\r
-OsPcbType *Os_TaskGetTop( void );\r
-OsPcbType *os_find_task( TaskType tid );\r
+OsTaskVarType *Os_TaskGetTop( void );\r
+OsTaskVarType *Os_TaskGet( TaskType tid );\r
 \r
 // resource.c\r
 void Os_ResourceGetInternal(void );\r
 void Os_ResourceReleaseInternal( void );\r
-void Os_ResourceAlloc( OsResourceType *rPtr, OsPcbType *pcbPtr);\r
-void Os_ResourceFree( OsResourceType *rPtr , OsPcbType *pcbPtr);\r
+void Os_ResourceAlloc( OsResourceType *rPtr, OsTaskVarType *pcbPtr);\r
+void Os_ResourceFree( OsResourceType *rPtr , OsTaskVarType *pcbPtr);\r
 \r
 void Os_ResourceInit( void );\r
 \r
 \r
-static inline void Os_ResourceFreeAll( OsPcbType *pcbPtr ) {\r
+/* Application */\r
+#if    (OS_USE_APPLICATIONS == STD_ON)\r
+void Os_ApplStart( void );\r
+#endif\r
+\r
+static inline void Os_ResourceFreeAll( OsTaskVarType *pcbPtr ) {\r
        OsResourceType *rPtr;\r
 \r
        /* Pop the queue */\r
-       TAILQ_FOREACH(rPtr, &pcbPtr->resource_head, listEntry ) {\r
+       TAILQ_FOREACH(rPtr, &pcbPtr->resourceHead, listEntry ) {\r
                Os_ResourceFree(rPtr,pcbPtr);\r
        }\r
 }\r
 \r
-#if 0\r
-/**\r
- *\r
- * @return 1 - if any resources were found.\r
- */\r
-static inline _Bool Os_ResourceCheckAndRelease( OsPcbType *pcb )  {\r
-       _Bool rv = 0;\r
-       if( !TAILQ_EMPTY(&pcb->resource_head) ) {\r
-               OsResourceType *rPtr;\r
-\r
-               TAILQ_FOREACH(rPtr, &pcb->resource_head, listEntry ) {\r
-                       ReleaseResource(rPtr->nr);\r
-                       /* Requirements are a little fuzzy here, no explicit\r
-                        * requirement for this.\r
-                        *\r
-                        * For OSEK this is a req.\r
-                        */\r
-                       ERRORHOOK(E_OS_RESOURCE);\r
-                       rv = 1;\r
-               }\r
-       }\r
-       return rv;\r
+static inline _Bool Os_TaskOccupiesResources( OsTaskVarType *pcb ) {\r
+       return !(TAILQ_EMPTY(&pcb->resourceHead));\r
 }\r
-#endif\r
 \r
-static inline _Bool Os_TaskOccupiesResources( OsPcbType *pcb ) {\r
-       return !(TAILQ_EMPTY(&pcb->resource_head));\r
-}\r
-\r
-/*\r
-static inline void Os_GetSchedulerResource() {\r
-       os_sys.scheduler_lock = 1;\r
-}\r
-\r
-static inline void Os_ReleaseSchedulerResource() {\r
-       os_sys.scheduler_lock = 0;\r
-}\r
-*/\r
-/*\r
-static inline _Bool Os_SchedulerResourceIsOccupied() {\r
-#if 0\r
-       return (os_sys.resScheduler.owner != NO_TASK_OWNER );\r
-#else\r
-       return (os_sys.scheduler_lock == 1);\r
-#endif\r
-}\r
-*/\r
 #define NO_TASK_OWNER  (TaskType)(~0)\r
 \r
 static inline _Bool Os_SchedulerResourceIsFree() {\r
 #if 1\r
-       return (os_sys.resScheduler.owner == NO_TASK_OWNER );\r
+       return (Os_Sys.resScheduler.owner == NO_TASK_OWNER );\r
 #else\r
-       return (os_sys.scheduler_lock == 0);\r
+       return (Os_Sys.scheduler_lock == 0);\r
 #endif\r
 }\r
 \r
 // Create.c\r
-OsPcbType * os_alloc_new_pcb( void );\r
+OsTaskVarType * os_alloc_new_pcb( void );\r
 \r
 void os_dispatch(void);\r
 \r
@@ -285,12 +253,12 @@ void Os_Isr_cm3( void *isr_p );
 void TailChaining(void *stack);\r
 #endif\r
 \r
-void *Os_Isr( void *stack, void *pcb_p );\r
+void *Os_Isr( void *stack, int16_t vector);\r
 void Os_Dispatch( uint32_t op );\r
 \r
 #define STACK_PATTERN  0x42\r
 \r
-static inline void *Os_StackGetUsage( OsPcbType *pcb ) {\r
+static inline void *Os_StackGetUsage( OsTaskVarType *pcb ) {\r
 \r
        uint8_t *p = pcb->stack.curr;\r
        uint8_t *end = pcb->stack.top;\r
@@ -301,12 +269,12 @@ static inline void *Os_StackGetUsage( OsPcbType *pcb ) {
        return (void *)end;\r
 }\r
 \r
-static inline void Os_StackSetEndmark( OsPcbType *pcbPtr ) {\r
+static inline void Os_StackSetEndmark( OsTaskVarType *pcbPtr ) {\r
        uint8_t *end = pcbPtr->stack.top;\r
        *end = STACK_PATTERN;\r
 }\r
 \r
-static inline _Bool Os_StackIsEndmarkOk( OsPcbType *pcbPtr ) {\r
+static inline _Bool Os_StackIsEndmarkOk( OsTaskVarType *pcbPtr ) {\r
        _Bool rv;\r
        uint8_t *end = pcbPtr->stack.top;\r
        rv =  ( *end == STACK_PATTERN);\r
@@ -319,14 +287,15 @@ static inline _Bool Os_StackIsEndmarkOk( OsPcbType *pcbPtr ) {
        return rv;\r
 }\r
 \r
-static inline void Os_StackPerformCheck( OsPcbType *pcbPtr ) {\r
+static inline void Os_StackPerformCheck( OsTaskVarType *pcbPtr ) {\r
 #if (OS_STACK_MONITORING == 1)\r
                if( !Os_StackIsEndmarkOk(pcbPtr) ) {\r
-#if (  OS_SC1 == 1) || (  OS_SC2 == 1)\r
+#if (OS_SC1 == STD_ON) || (OS_SC2 == STD_ON)\r
                        /** @req OS068 */\r
                        ShutdownOS(E_OS_STACKFAULT);\r
-#else\r
-#error SC3 or SC4 not supported. Protection hook should be called here\r
+#elif (OS_SC3 == STD_ON) || (OS_SC4 == STD_ON)\r
+                       /** @req OS396 */\r
+                       PROTECTIONHOOK(E_OS_STACKFAULT);\r
 #endif\r
                }\r
 #endif\r
@@ -334,7 +303,7 @@ static inline void Os_StackPerformCheck( OsPcbType *pcbPtr ) {
 \r
 \r
 int Os_CfgGetTaskCnt(void);\r
-void Os_ContextReInit( OsPcbType *pcbPtr );\r
+void Os_ContextReInit( OsTaskVarType *pcbPtr );\r
 \r
 \r
 static inline _Bool Os_IrqAnyDisabled( void ) {\r
index 788cd0ec05af1aaddc0fd0223e8843d97e477d33..b1e9b624d40e923286409ef8ac56a3a3960084b7 100644 (file)
@@ -148,8 +148,8 @@ typedef struct OsResource {
 \r
        // What application may access this resource. A resource may only be\r
        // accessed by one application\r
-#if ( OS_SC3 == STD_ON ) || ( OS_SC4 == STD_ON )\r
-       uint32 application_owner_id;\r
+#if defined(SC3) || defined(SC4)\r
+       uint32 accessingApplMask;\r
 #endif\r
        // What tasks may access this resource. A resource may be be shared\r
        // several tasks.\r
@@ -168,7 +168,7 @@ typedef struct OsResource {
 \r
 typedef enum {\r
        LOCK_TYPE_RESOURCE,\r
-       LOCK_TYPE_INTERRUPT,\r
+       LOCK_TYPE_INTERRUPT\r
 } OsLocktypeType;\r
 \r
 typedef struct OsLockingtime {\r
@@ -204,6 +204,8 @@ typedef struct OsTimingProtection {
 #include "application.h"\r
 #include "pcb.h"\r
 #include "sys.h"\r
+#include "isr.h"\r
+//#include "isr.h"\r
 \r
 /*-----------------------------------------------------------------*/\r
 \r
index 1b766846448167a3cf319408b20073cf0ad3d55e..872a33f1926e60d2d1f0bd3012285efdd62553f1 100644 (file)
@@ -16,7 +16,7 @@
 #define PCB_H\r
 \r
 struct OsApplication;\r
-struct OsRomPcb;\r
+struct OsTaskConst;\r
 \r
 #define PID_IDLE                       0\r
 #define PRIO_IDLE                      0\r
@@ -28,6 +28,9 @@ struct OsRomPcb;
 #define ST_NOT_STARTED         (1<<4)\r
 #define ST_SLEEPING            (1<<5)\r
 \r
+#define ST_ISR_RUNNING                 1\r
+#define ST_ISR_NOT_RUNNING             2\r
+\r
 typedef uint16_t state_t;\r
 \r
 /* from Os.h types */\r
@@ -42,32 +45,6 @@ typedef sint8 OsPriorityType;
 #define TASK_NAME_SIZE         16\r
 \r
 \r
-/* STD container : OsIsr\r
- * Class: ALL\r
- *\r
- * OsIsrCategory:                              1    CATEGORY_1 or CATEGORY_2\r
- * OsIsrResourceRef:                   0..1 Reference to OsResource\r
- * OsIsrTimingProtection[C]    0..1\r
- * */\r
-\r
-/* STD container : OsIsrResourceLock\r
- * Class: 2 and 4\r
- *\r
- * OsIsrResourceLockBudget     1    Float in seconds (MAXRESOURCELOCKINGTIME)\r
- * OsIsrResourceLockResourceRef 1    Ref to OsResource\r
- * */\r
-\r
-/* STD container : OsIsrTimingProtection\r
- * Class: 2 and 4\r
- *\r
- * OsIsrAllInterruptLockBudget  0..1 float\r
- * OsIsrExecutionBudget                0..1 float\r
- * OsIsrOsInterruptLockBudget  0..1 float\r
- * OsIsrTimeFrame                              0..1 float\r
- * OsIsrResourceLock[C]                0..1\r
- * */\r
-\r
-\r
 \r
 /* STD container : OsHooks\r
  * OsErrorHooks:                       1\r
@@ -79,7 +56,7 @@ typedef sint8 OsPriorityType;
  * */\r
 \r
 typedef struct OsHooks {\r
-#if (  OS_SC2 == STD_ON ) || ( OS_SC3 == STD_ON ) || ( OS_SC4 == STD_ON )\r
+#if    (OS_USE_APPLICATIONS == STD_ON)\r
        ProtectionHookType      ProtectionHook;\r
 #endif\r
        StartupHookType         StartupHook;\r
@@ -103,9 +80,11 @@ typedef uint8_t proc_type_t;
 #define PROC_BASIC             0x1\r
 #define PROC_EXTENDED  0x3\r
 \r
+#if 0\r
 #define PROC_ISR               0x4\r
 #define PROC_ISR1              0x4\r
 #define PROC_ISR2              0xc\r
+#endif\r
 \r
 \r
 typedef struct {\r
@@ -119,57 +98,66 @@ typedef struct {
 #define SYS_FLAG_HOOK_STATE_EXPECTING_POST   1\r
 \r
 /* We do ISR and TASK the same struct for now */\r
-typedef struct OsPcb {\r
-       OsTaskidType    pid;                                    // TASK\r
-       OsPriorityType  prio;\r
-#if ( OS_SC1 == STD_ON ) || ( OS_SC4 == STD_ON )\r
-       ApplicationType application_id;\r
-       uint32                  app_mask;\r
-#endif\r
-       void                    (*entry)();\r
-       proc_type_t     proc_type;\r
-       uint8                   autostart:1;                    // TASK\r
+typedef struct OsTaskVar {\r
        OsStackType             stack;                                  // TASK\r
 \r
-       int                             vector;                                 // ISR\r
-       char                    name[TASK_NAME_SIZE];\r
 #if ( OS_SC2 == STD_ON ) || ( OS_SC4 == STD_ON )\r
        OsTimingProtectionType  *timing_protection;\r
 #endif\r
 \r
        state_t                 state;                                  // TASK\r
-       OsEventType     ev_wait;                                // TASK\r
-       OsEventType     ev_set;                                 // TASK\r
+\r
+       /* Events the task wait for ( what events WaitEvent() was called with) */\r
+       OsEventType     ev_wait;\r
+       /* Events that are set by SetEvent() on the task */\r
+       OsEventType     ev_set;\r
+       /* The events the task may react on */\r
+       OsEventType     ev_react;\r
 \r
        uint32_t                flags;\r
 \r
+       /* Priority of the task, this can be different depening on if the\r
+        * task hold resources. Related to priority inversion */\r
+       OsPriorityType  activePriority;\r
+#if 0\r
+       void                    (*entry)();\r
+\r
+       char                    name[TASK_NAME_SIZE];\r
+\r
+       OsTaskidType    pid;                                    // TASK\r
+       OsPriorityType  prio;\r
+\r
+       proc_type_t     proc_type;\r
+       int                     autostart;                              // TASK\r
+\r
        enum OsTaskSchedule     scheduling;     // TASK\r
        /* belongs to this application */\r
        struct OsApplication    *application;\r
-\r
        /* OsTaskActivation\r
         * The limit from OsTaskActivation. This is 1 for extended tasks */\r
        uint8_t activationLimit;\r
-       // The number of queued activation of a task\r
-       int8_t activations;\r
 \r
        // A task can hold only one internal resource and only i f\r
        // OsTaskSchedule == FULL\r
-       OsResourceType *resource_int_p;         // TASK\r
+       OsResourceType *resourceIntPtr;         // TASK\r
 \r
     // OsTaskResourceRef\r
        // What resources this task have access to\r
        // Typically (1<<RES_xxx) | (1<<RES_yyy)\r
        uint32_t resourceAccess;\r
 \r
+#endif\r
+\r
+       // The number of queued activation of a task\r
+       int8_t activations;\r
 \r
        // What resource that are currently held by this task\r
        // Typically (1<<RES_xxx) | (1<<RES_yyy)\r
        uint32_t resourceMaskTaken;\r
 \r
-       TAILQ_HEAD(head,OsResource) resource_head; // TASK\r
+       TAILQ_HEAD(head,OsResource) resourceHead; // TASK\r
 \r
-       const struct OsRomPcb *pcb_rom_p;\r
+       const struct OsTaskConst *constPtr;\r
 \r
        /* TODO: Arch specific regs .. make space for them later...*/\r
        uint32_t        regs[16];                               // TASK\r
@@ -178,14 +166,29 @@ typedef struct OsPcb {
        int32_t            timerDec;\r
 #endif\r
        /* List of PCB's */\r
-       TAILQ_ENTRY(OsPcb) pcb_list;            // TASK\r
+//     TAILQ_ENTRY(OsTaskVar) pcb_list;                // TASK\r
        /* ready list */\r
-       TAILQ_ENTRY(OsPcb) ready_list;          // TASK\r
-} OsPcbType;\r
+       TAILQ_ENTRY(OsTaskVar) ready_list;              // TASK\r
+} OsTaskVarType;\r
+\r
+/*-----------------------------------------------------------------*/\r
+\r
 \r
 /*-----------------------------------------------------------------*/\r
 \r
-typedef struct OsRomPcb {\r
+/* STD container : OsTask\r
+ * OsTaskActivation:               1\r
+ * OsTaskPriority:                         1\r
+ * OsTaskSchedule:                         1\r
+ * OsTaskAccessingApplication: 0..*\r
+ * OsTaskEventRef:                             0..*\r
+ * OsTaskResourceRef:                  0..*\r
+ * OsTaskAutoStart[C]                  0..1\r
+ * OsTaskTimingProtection[C]   0..1\r
+ * */\r
+\r
+\r
+typedef struct OsTaskConst {\r
        OsTaskidType    pid;\r
        OsPriorityType  prio;\r
        uint32                  app_mask;\r
@@ -193,18 +196,25 @@ typedef struct OsRomPcb {
        proc_type_t     proc_type;\r
        uint8                   autostart;\r
        OsStackType     stack;\r
-       int                             vector;                                 // ISR\r
-       ApplicationType application_id;\r
+       int                             vector;                 // ISR\r
+\r
+#if    (OS_USE_APPLICATIONS == STD_ON)\r
+       /* Application that owns this task */\r
+       ApplicationType applOwnerId;\r
+       /* Applications that may access task when state is APPLICATION_ACCESSIBLE */\r
+       uint32                  accessingApplMask;\r
+#endif\r
+\r
        char                    name[16];\r
        enum OsTaskSchedule scheduling;\r
        uint32_t                resourceAccess;\r
        // pointer to internal resource\r
        // NULL if none\r
-       OsResourceType  *resource_int_p;\r
+       OsResourceType  *resourceIntPtr;\r
        OsTimingProtectionType  *timing_protection;\r
        uint8_t          activationLimit;\r
 //     lockingtime_obj_t\r
-} OsRomPcbType;\r
+} OsTaskConstType;\r
 \r
 #endif\r
 \r
index 3d5aa1be91e035990e8f3f58a465de817fd9b131..5a8d08b1c7c3b91575c04849c2c7bdf41ad7fdae 100644 (file)
@@ -46,7 +46,7 @@ enum OsScheduleTableAutostartType {
        // Start with StartScheduleTableRel()\r
        SCHTBL_AUTOSTART_RELATIVE,\r
        // Start with StartScheduleTableSyncon()\r
-       SCHTBL_AUTOSTART_SYNCHRONE,\r
+       SCHTBL_AUTOSTART_SYNCHRONE\r
 };\r
 \r
 \r
@@ -150,6 +150,10 @@ typedef struct OsSchTbl {
        /** @req OS413 */\r
        _Bool repeating;\r
 \r
+#if defined(SC3) || defined(SC4)\r
+       uint32 accessingApplMask;\r
+#endif\r
+\r
        // pointer to this tables counter\r
        // OsScheduleTableCounterRef\r
        /** @req OS409 */\r
@@ -161,7 +165,7 @@ typedef struct OsSchTbl {
        /* NULL if NONE, and non-NULL if EXPLICIT and IMPLICIT */\r
        struct OsScheduleTableSync *sync;\r
 \r
-#if (OS_SC3 == STD_ON ) || (OS_SC4 == STD_ON )\r
+#if    (OS_USE_APPLICATIONS == STD_ON)\r
        uint32 app_mask;\r
 #endif\r
 \r
index 9b72c5ccdbe0e0affbe144b6e8974df49fba0d5c..65a24db9b629320b4357b42e6ecf1ddd8083cb1b 100644 (file)
@@ -25,24 +25,29 @@ typedef enum  {
        OP_TERMINATE_TASK = 8,\r
        OP_SCHEDULE = 16,\r
        OP_CHAIN_TASK = 32,\r
-       OP_RELEASE_RESOURCE = 64,\r
+       OP_RELEASE_RESOURCE = 64\r
        OP_SLEEP = 128,\r
+\r
 } OpType ;\r
 \r
-typedef struct sys_s {\r
+/*\r
+ * Global system structure\r
+ */\r
+typedef struct Os_Sys {\r
 //     OsApplicationType *curr_application;\r
        /* Current running task*/\r
-       OsPcbType *curr_pcb;\r
+       OsTaskVarType *currTaskPtr;\r
+\r
        /* List of all tasks */\r
-       OsPcbType *pcb_list;\r
+       OsTaskVarType *pcb_list;\r
 \r
-       OsPcbType *chainedPcbPtr;\r
+       OsTaskVarType *chainedPcbPtr;\r
        /* Interrupt nested count */\r
-       uint32 int_nest_cnt;\r
+       uint32 intNestCnt;\r
        /* The current operation */\r
        uint8_t op;\r
        /* Ptr to the interrupt stack */\r
-       void *int_stack;\r
+       void *intStack;\r
        // The os tick\r
        TickType tick;\r
        // 1-The scheduler is locked (by GetResource() or something else)\r
@@ -59,35 +64,42 @@ typedef struct sys_s {
        /* Current Application mode */\r
        AppModeType appMode;\r
 \r
-//     uint32_t flags;\r
+#if    (OS_USE_APPLICATIONS == STD_ON)\r
+       ApplicationStateType currApplState;\r
+       ApplicationType currApplId;\r
+#endif\r
 \r
        uint32_t task_cnt;\r
 \r
+       uint32_t isrCnt;\r
 #if defined(USE_KERNEL_EXTRA)\r
-       /* List of PCB's to be put in ready list when timeout */\r
+\r
+/* List of PCB's to be put in ready list when timeout */\r
        TAILQ_HEAD(,OsPcb) timerHead;           // TASK\r
 #endif\r
 \r
        /* List of all pcb's,\r
         * Only needed for non-static configuration of the kernel\r
         */\r
-       TAILQ_HEAD(,OsPcb) pcb_head;\r
+//     TAILQ_HEAD(,OsTaskVar) pcb_head;\r
        /* Ready queue */\r
-       TAILQ_HEAD(,OsPcb) ready_head;\r
+       TAILQ_HEAD(,OsTaskVar) ready_head;\r
+\r
+//     TAILQ_HEAD(,OsIsrVar) isrHead;\r
 \r
        /* Occording to OSEK 8.3 RES_SCHEDULER is accessible to all tasks */\r
        OsResourceType resScheduler;\r
-} sys_t;\r
+} Os_SysType;\r
 \r
-extern sys_t os_sys;\r
+extern Os_SysType Os_Sys;\r
 \r
-static inline OsPcbType *Os_TaskGetCurrent(  void ) {\r
-       return os_sys.curr_pcb;\r
+static inline OsTaskVarType *Os_TaskGetCurrent(  void ) {\r
+       return Os_Sys.currTaskPtr;\r
 }\r
 \r
 #if 0\r
 static uint32_t OSErrorGetServiceId( void ) {\r
-       return os_sys.serviceId;\r
+       return Os_Sys.serviceId;\r
 }\r
 #endif\r
 \r
index b1c2ff3d5d737f891247ca449b98530365c34961..3f684e35a8ebb3f33eda1ce69424d64c6d244e0a 100644 (file)
 #include "Ramlog.h"\r
 \r
 static inline void os_pcb_print_rq( void ) {\r
-       OsPcbType *i_pcb;\r
+       OsTaskVarType *i_pcb;\r
        int cnt = 0;\r
 \r
-       TAILQ_FOREACH(i_pcb,&os_sys.ready_head,ready_list) {\r
+       TAILQ_FOREACH(i_pcb,&Os_Sys.ready_head,ready_list) {\r
                //printf("%02d: %02d %s\n",cnt,i_pcb->state,i_pcb->name);\r
                cnt++;\r
 //             assert( i_pcb->state == ST_READY );\r
@@ -34,7 +34,7 @@ static inline void os_pcb_print_rq( void ) {
 }\r
 \r
 // schedule()\r
-static inline void Os_TaskRunningToReady( OsPcbType *pcb ) {\r
+static inline void Os_TaskRunningToReady( OsTaskVarType *pcb ) {\r
        assert(pcb->state == ST_RUNNING );\r
        pcb->state = ST_READY;\r
 }\r
@@ -42,30 +42,30 @@ static inline void Os_TaskRunningToReady( OsPcbType *pcb ) {
 \r
 // ActivateTask(pid)\r
 // SetEvent(pid)\r
-static inline void Os_TaskMakeReady( OsPcbType *pcb ) {\r
+static inline void Os_TaskMakeReady( OsTaskVarType *pcb ) {\r
        if( !( pcb->state & ( ST_READY | ST_RUNNING )) ) {\r
                pcb->state = ST_READY;\r
-               TAILQ_INSERT_TAIL(& os_sys.ready_head,pcb,ready_list);\r
+               TAILQ_INSERT_TAIL(& Os_Sys.ready_head,pcb,ready_list);\r
                OS_DEBUG(D_TASK,"Added %s to ready list\n",pcb->name);\r
        }\r
 }\r
 \r
 // WaitEvent\r
-static inline void Os_TaskMakeWaiting( OsPcbType *pcb )\r
+static inline void Os_TaskMakeWaiting( OsTaskVarType *pcb )\r
 {\r
        assert( pcb->state & (ST_READY|ST_RUNNING) );\r
 \r
        pcb->state = ST_WAITING;\r
-       TAILQ_REMOVE(&os_sys.ready_head,pcb,ready_list);\r
+       TAILQ_REMOVE(&Os_Sys.ready_head,pcb,ready_list);\r
        OS_DEBUG(D_TASK,"Removed %s from ready list\n",pcb->name);\r
 }\r
 \r
 // Terminate task\r
-static inline void Os_TaskMakeSuspended( OsPcbType *pcb )\r
+static inline void Os_TaskMakeSuspended( OsTaskVarType *pcb )\r
        {\r
        assert( pcb->state & (ST_READY|ST_RUNNING) );\r
        pcb->state = ST_SUSPENDED;\r
-       TAILQ_REMOVE(&os_sys.ready_head,pcb,ready_list);\r
+       TAILQ_REMOVE(&Os_Sys.ready_head,pcb,ready_list);\r
        OS_DEBUG(D_TASK,"Removed %s from ready list\n",pcb->name);\r
 }\r
 \r
@@ -75,49 +75,60 @@ static inline void Os_TaskMakeSuspended( OsPcbType *pcb )
  *\r
  * @params pcb Ptr to pcb\r
  */\r
-static inline void Os_TaskMakeRunning( OsPcbType *pcb ) {\r
+static inline void Os_TaskMakeRunning( OsTaskVarType *pcb ) {\r
        pcb->state = ST_RUNNING;\r
 }\r
 \r
-_Bool os_pcb_pid_valid( OsPcbType *restrict pcb );\r
+_Bool os_pcb_pid_valid( OsTaskVarType *restrict pcb );\r
 void Os_TaskStartExtended( void );\r
 void Os_TaskStartBasic( void );\r
-void Os_ContextInit( OsPcbType *pcb );\r
-OsPcbType *Os_TaskGetTop( void );\r
+void Os_TaskContextInit( OsTaskVarType *pcb );\r
+OsTaskVarType *Os_TaskGetTop( void );\r
 \r
 // Added by Mattias in order to avoid compiler warning\r
-TaskType Os_AddTask( OsPcbType *pcb );\r
+TaskType Os_AddTask( OsTaskVarType *pcb );\r
 \r
 #if 0 // Not used any more\r
-OsPcbType  *os_find_higher_priority_task( OsPriorityType prio );\r
+OsTaskVarType  *os_find_higher_priority_task( OsPriorityType prio );\r
 #endif\r
 \r
 \r
 \r
 \r
-extern OsPcbType pcb_list[];\r
-extern const OsRomPcbType rom_pcb_list[];\r
+extern OsTaskVarType Os_TaskVarList[OS_TASK_CNT];\r
+extern OsTaskConstType Os_TaskConstList[OS_TASK_CNT];\r
 \r
-static inline OsPcbType * os_get_pcb( OsTaskidType pid ) {\r
-       return &pcb_list[pid];\r
+static inline OsTaskVarType * Os_TaskGet( TaskType pid ) {\r
+       return &Os_TaskVarList[pid];\r
 }\r
 \r
-static inline const OsRomPcbType * os_get_rom_pcb( OsTaskidType pid ) {\r
-       return &rom_pcb_list[pid];\r
+static inline ApplicationType Os_TaskGetApplicationOwner( TaskType id ) {\r
+       return Os_TaskGet(id)->constPtr->applOwnerId;\r
 }\r
 \r
-static inline OsPriorityType os_pcb_set_prio( OsPcbType *pcb, OsPriorityType new_prio ) {\r
+\r
+#if 0\r
+extern const OsTaskConstType  Os_TaskConstList[];\r
+static inline const OsTaskConstType * os_get_rom_pcb( OsTaskidType pid ) {\r
+       return & Os_TaskConstList[pid];\r
+}\r
+#endif\r
+\r
+\r
+#if 0\r
+static inline OsPriorityType os_pcb_set_prio( OsTaskVarType *pcb, OsPriorityType new_prio ) {\r
        OsPriorityType  old_prio;\r
        old_prio = pcb->prio;\r
        pcb->prio = new_prio;\r
        //printf("set_prio of %s to %d from %d\n",pcb->name,new_prio,pcb->prio);\r
        return old_prio;\r
 }\r
+#endif\r
 \r
 #define os_pcb_get_state(pcb) ((pcb)->state)\r
 \r
-void Os_TaskSwapContext(OsPcbType *old_pcb, OsPcbType *new_pcb );\r
-void Os_TaskSwapContextTo(OsPcbType *old_pcb, OsPcbType *new_pcb );\r
+void Os_TaskSwapContext(OsTaskVarType *old_pcb, OsTaskVarType *new_pcb );\r
+void Os_TaskSwapContextTo(OsTaskVarType *old_pcb, OsTaskVarType *new_pcb );\r
 \r
 \r
 #endif /*TASK_I_H_*/\r
index 647302904b2bcc2ce1ee0d9500841b3341f72320..5854578ff9be3d7abccd9ad487b6ed3430a03b47 100644 (file)
@@ -13,7 +13,7 @@
  * for more details.
  * -------------------------------- Arctic Core ------------------------------*/
 
-
+/* ----------------------------[includes]------------------------------------*/
 #include <stdlib.h>
 #include <string.h>
 #include "Os.h"
 #include "debug.h"
 #include "arch.h"
 
-extern void Os_CfgGetInterruptStackInfo( OsStackType *stack );
-extern uint32_t McuE_GetSystemClock( void );
-extern OsTickType OsTickFreq;
-
-sys_t os_sys;
+/* ----------------------------[private define]------------------------------*/
+/* ----------------------------[private macro]-------------------------------*/
+/* ----------------------------[private typedef]-----------------------------*/
+/* ----------------------------[private function prototypes]-----------------*/
+/* ----------------------------[private variables]---------------------------*/
+Os_SysType Os_Sys;
 
 Os_IntCounterType Os_IntDisableAllCnt;
 Os_IntCounterType Os_IntSuspendAllCnt;
 Os_IntCounterType Os_IntSuspendOsCnt;
 
+/* ----------------------------[private functions]---------------------------*/
+/* ----------------------------[public functions]----------------------------*/
+
+extern uint32_t McuE_GetSystemClock( void );
+extern OsTickType OsTickFreq;
+
 
 /**
  * Copy rom pcb data(r_pcb) to ram data
@@ -40,12 +47,17 @@ Os_IntCounterType Os_IntSuspendOsCnt;
  * @param      r_pcb   rom data
  */
 
-static void os_pcb_rom_copy( OsPcbType *pcb, const OsRomPcbType *r_pcb ) {
+static void copyPcbParts( OsTaskVarType *pcb, const OsTaskConstType *r_pcb ) {
+
+       /* Copy VAR stuff first */
+
+
+
 
 #if 0 //?????
        // Check to that the memory is ok
        {
-               int cnt = sizeof(OsPcbType);
+               int cnt = sizeof(OsTaskVarType);
                for(int i=0;i<cnt;i++) {
                        if( *((unsigned char *)pcb) != 0 ) {
                                while(1);
@@ -54,25 +66,26 @@ static void os_pcb_rom_copy( OsPcbType *pcb, const OsRomPcbType *r_pcb ) {
        }
 #endif
 
-//     memset(pcb,sizeof(OsPcbType),0);
-       pcb->pid = r_pcb->pid;
-       pcb->prio = r_pcb->prio;
-#if ( OS_SC3 == STD_ON ) || ( OS_SC4 == STD_ON )
-       pcb->application = Os_CfgGetApplObj(r_pcb->application_id);
+//     memset(pcb,sizeof(OsTaskVarType),0);
+//     pcb->pid = r_pcb->pid;
+       assert(r_pcb->prio<=OS_TASK_PRIORITY_MAX);
+       pcb->activePriority = r_pcb->prio;
+#if    (OS_USE_APPLICATIONS == STD_ON)
+//     pcb->accessingApp = Os_CfgGetApplObj(r_pcb->application_id);
 #endif
-       pcb->entry = r_pcb->entry;
-       pcb->proc_type = r_pcb->proc_type;
-       pcb->autostart =  r_pcb->autostart;
+//     pcb->entry = r_pcb->entry;
+//     pcb->proc_type = r_pcb->proc_type;
+//     pcb->autostart =  r_pcb->autostart;
        pcb->stack= r_pcb->stack;
-       pcb->pcb_rom_p = r_pcb;
-       pcb->resource_int_p = r_pcb->resource_int_p;
-       pcb->scheduling = r_pcb->scheduling;
-       pcb->resourceAccess = r_pcb->resourceAccess;
-       pcb->activationLimit = r_pcb->activationLimit;
+       pcb->constPtr = r_pcb;
+//     pcb->resourceIntPtr = r_pcb->resourceIntPtr;
+//     pcb->scheduling = r_pcb->scheduling;
+//     pcb->resourceAccess = r_pcb->resourceAccess;
+//     pcb->activationLimit = r_pcb->activationLimit;
 //     pcb->app = &app_list[r_pcb->app];
 //     pcb->app_mask = app_mask[r_pcb->app];
-       strncpy(pcb->name,r_pcb->name,16);
-       pcb->name[15] = '\0';
+//     strncpy(pcb->name,r_pcb->name,16);
+//     pcb->name[15] = '\0';
 }
 
 static _Bool init_os_called = 0;
@@ -84,30 +97,30 @@ static _Bool init_os_called = 0;
 
 void InitOS( void ) {
        int i;
-       OsPcbType *tmp_pcb;
-       OsStackType int_stack;
+       OsTaskVarType *tmpPcbPtr;
+       OsIsrStackType intStack;
 
        init_os_called = 1;
 
        DEBUG(DEBUG_LOW,"os_init");
 
        /* Clear sys */
-       memset(&os_sys,0,sizeof(sys_t));
+       memset(&Os_Sys,0,sizeof(Os_SysType));
 
        Os_ArchInit();
 
        // Assign pcb list and init ready queue
-       os_sys.pcb_list = pcb_list;
-       TAILQ_INIT(& os_sys.ready_head);
-       TAILQ_INIT(& os_sys.pcb_head);
+       Os_Sys.pcb_list = Os_TaskVarList;
+       TAILQ_INIT(& Os_Sys.ready_head);
+//     TAILQ_INIT(& Os_Sys.pcb_head);
 #if defined(USE_KERNEL_EXTRA)
        TAILQ_INIT(& os_sys.timerHead);
 #endif
 
        // Calc interrupt stack
-       Os_CfgGetInterruptStackInfo(&int_stack);
+       Os_IsrGetStackInfo(&intStack);
        // TODO: 16 is arch dependent
-       os_sys.int_stack = int_stack.top + int_stack.size - 16;
+       Os_Sys.intStack = (void *)((size_t)intStack.top + (size_t)intStack.size - 16);
 
        // Init counter.. with alarms and schedule tables
 #if OS_COUNTER_CNT!=0
@@ -122,20 +135,25 @@ void InitOS( void ) {
        // TODO: we should really hash on priority here to get speed, but I don't care for the moment
        // TODO: Isn't this just EXTENED tasks ???
        for( i=0; i < OS_TASK_CNT; i++) {
-               tmp_pcb = os_get_pcb(i);
+               tmpPcbPtr = Os_TaskGet(i);
 
-               assert(tmp_pcb->prio<=OS_TASK_PRIORITY_MAX);
+               copyPcbParts(tmpPcbPtr,&Os_TaskConstList[i]);
 
-               os_pcb_rom_copy(tmp_pcb,os_get_rom_pcb(i));
-               if( !(tmp_pcb->proc_type & PROC_ISR) ) {
-                       Os_ContextInit(tmp_pcb);
+#if 1
+               Os_TaskContextInit(tmpPcbPtr);
+#else
+               if( !(tmpPcbPtr->constPtr->proc_type & PROC_ISR) ) {
+                       Os_TaskContextInit(tmpPcbPtr);
                }
+#endif
 
-               TAILQ_INIT(&tmp_pcb->resource_head);
+               TAILQ_INIT(&tmpPcbPtr->resourceHead);
 
-               Os_AddTask(tmp_pcb);
+#if 0
+               Os_AddTask(tmpPcbPtr);
+#endif
 
-               DEBUG(DEBUG_LOW,"pid:%d name:%s prio:%d\n",tmp_pcb->pid,tmp_pcb->name,tmp_pcb->prio);
+               DEBUG(DEBUG_LOW,"pid:%d name:%s prio:%d\n",tmpPcbPtr->pid,tmpPcbPtr->name,tmpPcbPtr->prio);
        }
 
        Os_ResourceInit();
@@ -144,7 +162,8 @@ void InitOS( void ) {
 }
 
 static void os_start( void ) {
-       OsPcbType *tmp_pcb;
+       uint16_t i;
+       OsTaskVarType *tmpPcbPtr = NULL;
 
        // We will be setting up interrupts,
        // but we don't want them to fire just yet
@@ -155,11 +174,18 @@ static void os_start( void ) {
        /* TODO: fix ugly */
        /* Call the startup hook */
        extern struct OsHooks os_conf_global_hooks;
-       os_sys.hooks = &os_conf_global_hooks;
-       if( os_sys.hooks->StartupHook!=NULL ) {
-               os_sys.hooks->StartupHook();
+       Os_Sys.hooks = &os_conf_global_hooks;
+       if( Os_Sys.hooks->StartupHook!=NULL ) {
+               Os_Sys.hooks->StartupHook();
        }
 
+
+#if    (OS_USE_APPLICATIONS == STD_ON)
+       /* Start applications */
+       Os_ApplStart();
+#endif
+
+
        /* Alarm autostart */
 #if OS_ALARM_CNT!=0
        Os_AlarmAutostart();
@@ -178,31 +204,46 @@ static void os_start( void ) {
 
        /* Find highest Autostart task */
        {
-               OsPcbType *iterPcbPtr;
+               OsTaskVarType *iterPcbPtr;
                OsPriorityType topPrio = -1;
 
-               TAILQ_FOREACH(iterPcbPtr,& os_sys.pcb_head,pcb_list) {
-                       if(     iterPcbPtr->autostart ) {
-                               if( iterPcbPtr->prio > topPrio ) {
-                                       tmp_pcb = iterPcbPtr;
-                                       topPrio = iterPcbPtr->prio;
+               for(i=0;i<OS_TASK_CNT;i++) {
+                       iterPcbPtr = Os_TaskGet(i);
+                       if(     iterPcbPtr->constPtr->autostart ) {
+                               if( iterPcbPtr->activePriority > topPrio ) {
+                                       tmpPcbPtr = iterPcbPtr;
+                                       topPrio = iterPcbPtr->activePriority;
+                               }
+                       }
+               }
+#if 0
+               TAILQ_FOREACH(iterPcbPtr,& Os_Sys.pcb_head,pcb_list) {
+                       if(     iterPcbPtr->constPtr->autostart ) {
+                               if( iterPcbPtr->activePriority > topPrio ) {
+                                       tmpPcbPtr = iterPcbPtr;
+                                       topPrio = iterPcbPtr->activePriority;
                                }
                        }
                }
+#endif
        }
 
        // Swap in prio proc.
        {
-               // FIXME: Do this in a more structured way.. setting os_sys.curr_pcb manually is not the way to go..
-               os_sys.curr_pcb = tmp_pcb;
+               // FIXME: Do this in a more structured way.. setting Os_Sys.currTaskPtr manually is not the way to go..
+               Os_Sys.currTaskPtr = tmpPcbPtr;
+#if    (OS_USE_APPLICATIONS == STD_ON)
+               /* Set current application */
+               Os_Sys.currApplId = tmpPcbPtr->constPtr->applOwnerId;
+#endif
 
                // register this auto-start activation
-               assert(tmp_pcb->activations < tmp_pcb->activationLimit);
-               tmp_pcb->activations++;
+               assert(tmpPcbPtr->activations < tmpPcbPtr->constPtr->activationLimit);
+               tmpPcbPtr->activations++;
 
                // NOTE! We don't go for os_swap_context() here..
                // first arg(NULL) is dummy only
-               Os_TaskSwapContextTo(NULL,tmp_pcb);
+               Os_TaskSwapContextTo(NULL,tmpPcbPtr);
                // We should not return here
                assert(0);
        }
@@ -246,7 +287,7 @@ void StartOS(AppModeType Mode) {
                noooo();
        }
 
-       os_sys.appMode = Mode;
+       Os_Sys.appMode = Mode;
 
        Os_CfgValidate();
 
@@ -265,8 +306,8 @@ void StartOS(AppModeType Mode) {
 /** @req OS071 */
 void ShutdownOS( StatusType Error ) {
 
-       if( os_sys.hooks->ShutdownHook != NULL ) {
-               os_sys.hooks->ShutdownHook(Error);
+       if( Os_Sys.hooks->ShutdownHook != NULL ) {
+               Os_Sys.hooks->ShutdownHook(Error);
        }
 
        Irq_Disable();
index e43e6cc9b9478bcb1659250990253776b04a8501..c18420e2369455bef45dbcd3d735ad65a2b3ccef 100644 (file)
  * for more details.
  * -------------------------------- Arctic Core ------------------------------*/
 
+
 #include <sys/types.h>
 #include <stdint.h>
 #include <string.h>
+#include "Compiler.h"
 #include "internal.h"
+#include "isr.h"
 #include "irq.h"
-#if 0
+//#include "irq_config.h"
 
 
-#include <stdint.h>
-#include <stdlib.h>
-#include <assert.h>
-#include <sys/queue.h>
-#include <string.h>
-#include "internal.h"
+extern const uint8_t Os_VectorToIsr[NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS];
+extern const OsIsrConstType Os_IsrConstList[OS_ISR_CNT];
 
+#if OS_ISR_MAX_CNT!=0
+OsIsrVarType Os_IsrVarList[OS_ISR_MAX_CNT];
 #endif
 
+SECTION_BALIGN(0x10) uint8_t Os_IsrStack[OS_INTERRUPT_STACK_SIZE];
 
 // TODO: remove. Make soft links or whatever
 #if defined(CFG_ARM_CM3)
@@ -42,53 +44,101 @@ extern caddr_t *sbrk(int);
 
 #define os_alloc(_x)   sbrk(_x)
 
-OsPcbType * os_alloc_new_pcb( void ) {
-       void *h = os_alloc(sizeof(OsPcbType));
-       memset(h,0,sizeof(OsPcbType));
+OsTaskVarType * os_alloc_new_pcb( void ) {
+       void *h = os_alloc(sizeof(OsTaskVarType));
+       memset(h,0,sizeof(OsTaskVarType));
        assert(h!=NULL);
        return h;
 }
 
-#if 0
-typedef void (*Os_IsrEntryType)(void);
 
+//extern TaskType Os_AddTask( OsTaskVarType *pcb );
+
+//static uint8 stackTop = 0x42;
 
-typedef Os_IsrInfo_s {
-       Os_IsrEntryType entry;
-       uint32_t vector;
-       uint8_t priority;
-} Os_IsrInfoType;
-#endif
 
 
-extern TaskType Os_AddTask( OsPcbType *pcb );
+void Os_IsrInit( void ) {
+
+       Irq_Init();
+
+       /* Attach the interrupts */
+       for (int i = 0; i < sizeof(Os_IsrConstList) / sizeof(OsIsrConstType); i++) {
+               Os_IsrAdd(&Os_IsrConstList[i]);
+       }
+}
 
-static uint8 stackTop = 0x42;
 
 /**
- * Creates an ISR dynamically
- * @param entry
- * @param prio
- * @param name
+ * Adds an ISR to a list of Isr's. The ISRType (id) is returned
+ * for the "created" ISR.
  *
- * @return The PID of the ISR created
+ * @param isrPtr Pointer to const data holding ISR information.
+ * @return
  */
-TaskType Os_Arc_CreateIsr( void (*entry)(void ), uint8_t prio, const char *name )
-{
-       OsPcbType *pcb = os_alloc_new_pcb();
-       strncpy(pcb->name,name,TASK_NAME_SIZE);
-       pcb->vector = -1;
-       pcb->prio = prio;
-       /* TODO: map to interrupt controller priority */
-       assert(prio<=OS_TASK_PRIORITY_MAX);
-       pcb->proc_type  = PROC_ISR2;
-       pcb->state = ST_SUSPENDED;
-       pcb->entry = entry;
-       pcb->stack.top = &stackTop;
-
-       return Os_AddTask(pcb);
+ISRType Os_IsrAdd( const OsIsrConstType * restrict isrPtr ) {
+       ISRType id;
+
+       id = Os_Sys.isrCnt++;
+       /* We have no VAR entires for ISR1 */
+       if( isrPtr->type == ISR_TYPE_2) {
+               Os_IsrVarList[id].constPtr = isrPtr;
+       }
+
+       Irq_EnableVector( isrPtr->vector, isrPtr->priority, Os_ApplGetCore(isrPtr->appOwner )  );
+
+       return id;
+}
+
+const OsIsrConstType * Os_IsrGet( int16_t vector) {
+       return &Os_IsrConstList[Os_VectorToIsr[vector]];
+}
+
+#if 0
+void Os_IsrDisable( ISRType isr) {
+
 }
 
+void Os_IsrEnable( ISRType isr) {
+
+}
+#endif
+
+
+/*
+ * Resources:
+ *   Irq_VectorTable[]
+ *   Irq_IsrTypeTable[]
+ *   Irq_PriorityTable[]
+ *
+ *   exception table
+ *   interrupt table
+ *
+ * Usual HW resources.
+ * - prio in HW (ppc and arm (even cortex m4))
+ *
+ *
+ * TOOL GENERATES ALL
+ *   Irq_VectorTable   CONST
+ *   Irq_IsrTypeTable  CONST
+ *   Irq_PriorityTable CONST  Can probably be a table with ISR_MAX number
+ *                            of for a CPU with prio registers.  For masking
+ *                            CPUs it's better to keep an array to that indexing
+ *                            can be used.
+ *
+ *   The problem with this approach is that the tool needs to know everything.
+ *
+ * TOOL GENERATES PART
+ *   Irq_VectorTable   VAR     Since we must add vectors later
+ *   Irq_IsrTypeTable  VAR     Since we must add vectors later
+ *   Irq_PriorityTable VAR
+ *
+ *   We move the
+ *
+ */
+
+
+
 /**
  * Before we have proper editor for ISR2 use this function to add resources
  * to an ISR2
@@ -106,7 +156,7 @@ extern void Irq_EOI2( void );
 
 void TailChaining(void *stack)
 {
-       struct OsPcb *pPtr = NULL;
+       struct OsTaskVar *pPtr = NULL;
 
        POSTTASKHOOK();
 
@@ -119,16 +169,16 @@ void TailChaining(void *stack)
        Os_StackPerformCheck(pPtr);
 
        /* We interrupted a task */
-       OsPcbType *new_pcb  = Os_TaskGetTop();
+       OsTaskVarType *new_pcb  = Os_TaskGetTop();
 
        Os_StackPerformCheck(new_pcb);
 
-       if(     (new_pcb == os_sys.curr_pcb) ||
-                       (os_sys.curr_pcb->scheduling == NON) ||
+       if(     (new_pcb == Os_Sys.currTaskPtr) ||
+                       (Os_Sys.currTaskPtr->scheduling == NON) ||
                        !Os_SchedulerResourceIsFree() )
        {
                /* Just bring the preempted task back to running */
-               Os_TaskSwapContextTo(NULL,os_sys.curr_pcb);
+               Os_TaskSwapContextTo(NULL,Os_Sys.currTaskPtr);
        } else {
                OS_DEBUG(D_TASK,"Found candidate %s\n",new_pcb->name);
                Os_TaskSwapContextTo(NULL,new_pcb);
@@ -137,12 +187,12 @@ void TailChaining(void *stack)
 
 void Os_Isr_cm3( void *isr_p ) {
 
-       struct OsPcb *isrPtr;
+       struct OsTaskVar *isrPtr;
 
-       os_sys.int_nest_cnt++;
+       Os_Sys.intNestCnt++;
 
        /* Grab the ISR "pcb" */
-       isrPtr = (struct OsPcb *)isr_p;
+       isrPtr = (struct OsTaskVar *)isr_p;
        isrPtr->state = ST_RUNNING;
 
        if( isrPtr->proc_type & ( PROC_EXTENDED | PROC_BASIC ) ) {
@@ -171,57 +221,60 @@ void Os_Isr_cm3( void *isr_p ) {
 
        Irq_EOI();
 
-       --os_sys.int_nest_cnt;
+       --Os_Sys.intNestCnt;
 
        /* Scheduling is done in PendSV handler for ARM CM3 */
        *((uint32_t volatile *)0xE000ED04) = 0x10000000; // PendSV
 }
 #endif
 
+/*-----------------------------------------------------------------*/
+
+void Os_IsrGetStackInfo( OsIsrStackType *stack ) {
+       stack->top = Os_IsrStack;
+       stack->size = sizeof(Os_IsrStack);
+}
+
+
 /**
  * Handle ISR type 2 interrupts from interrupt controller.
  *
- * @param stack Ptr to the current stack
- * @param vector The vector that took the interrupt
+ * @param stack Pointer to the current stack
+ * @param vector
  */
-void *Os_Isr( void *stack, void *isr_p ) {
-       struct OsPcb *isrPtr;
-       struct OsPcb *pPtr = NULL;
+void *Os_Isr( void *stack, int16_t vector ) {
+       uint8_t isrId = Os_VectorToIsr[vector];
+       OsTaskVarType *taskPtr = NULL;
 
        /* Check if we interrupted a task or ISR */
-       if( os_sys.int_nest_cnt == 0 ) {
+       if( Os_Sys.intNestCnt == 0 ) {
                /* We interrupted a task */
                POSTTASKHOOK();
 
                /* Save info for preempted pcb */
-               pPtr = get_curr_pcb();
-               pPtr->stack.curr = stack;
-               pPtr->state = ST_READY;
-               OS_DEBUG(D_TASK,"Preempted %s\n",pPtr->name);
+               taskPtr = get_curr_pcb();
+               taskPtr->stack.curr = stack;
+               taskPtr->state = ST_READY;
+               OS_DEBUG(D_TASK,"Preempted %s\n",taskPtr->name);
 
-               Os_StackPerformCheck(pPtr);
+               Os_StackPerformCheck(taskPtr);
        } else {
                /* We interrupted an ISR */
        }
 
-       os_sys.int_nest_cnt++;
+       Os_Sys.intNestCnt++;
 
        /* Grab the ISR "pcb" */
-       isrPtr = (struct OsPcb *)isr_p;
-       isrPtr->state = ST_RUNNING;
-
-       if( isrPtr->proc_type & ( PROC_EXTENDED | PROC_BASIC ) ) {
-               assert(0);
-       }
+       Os_IsrVarList[isrId].state = ST_ISR_RUNNING;
 
        Irq_SOI();
 
-#if !defined(CFG_HCS12D)
+#if defined(CFG_HCS12D)
+       Os_IsrConstList[isrId].entry();
+#else
        Irq_Enable();
-       isrPtr->entry();
+       Os_IsrConstList[isrId].entry();
        Irq_Disable();
-#else
-       isrPtr->entry();
 #endif
 
        /* Check so that ISR2 haven't disabled the interrupts */
@@ -233,33 +286,33 @@ void *Os_Isr( void *stack, void *isr_p ) {
 
        /* Check so that the ISR2 have called ReleaseResource() for each GetResource() */
        /** @req OS369 */
-       if( Os_TaskOccupiesResources(isrPtr) ) {
-               Os_ResourceFreeAll(isrPtr);
+       if( Os_TaskOccupiesResources(taskPtr) ) {
+               Os_ResourceFreeAll(taskPtr);
                ERRORHOOK(E_OS_RESOURCE);
        }
 
-       isrPtr->state = ST_SUSPENDED;
+       Os_IsrVarList[isrId].state = ST_ISR_NOT_RUNNING;
 
        Irq_EOI();
 
-       --os_sys.int_nest_cnt;
+       --Os_Sys.intNestCnt;
 
 #if defined(CFG_ARM_CM3)
                /* Scheduling is done in PendSV handler for ARM CM3 */
                *((uint32_t volatile *)0xE000ED04) = 0x10000000; // PendSV
 #else
        // We have preempted a task
-       if( (os_sys.int_nest_cnt == 0) ) {
-               OsPcbType *new_pcb  = Os_TaskGetTop();
+       if( (Os_Sys.intNestCnt == 0) ) {
+               OsTaskVarType *new_pcb  = Os_TaskGetTop();
 
                Os_StackPerformCheck(new_pcb);
 
-               if(     (new_pcb == os_sys.curr_pcb) ||
-                               (os_sys.curr_pcb->scheduling == NON) ||
+               if(     (new_pcb == Os_Sys.currTaskPtr) ||
+                               (Os_Sys.currTaskPtr->constPtr->scheduling == NON) ||
                                !Os_SchedulerResourceIsFree() )
                {
                        /* Just bring the preempted task back to running */
-                       os_sys.curr_pcb->state = ST_RUNNING;
+                       Os_Sys.currTaskPtr->state = ST_RUNNING;
                        PRETASKHOOK();
                } else {
                        OS_DEBUG(D_TASK,"Found candidate %s\n",new_pcb->name);
index 43c273e9ba8868ac363df93788c13acb201f0544..ff625b69da7ecc91c2cd6acaa06945427874ffb4 100644 (file)
 \r
 #include <stddef.h>\r
 \r
-#define DECLARE(sym,val) \\r
-       __asm("#define " #sym " %0" : : "i" ((val)))\r
-\r
 #include "Os.h"\r
 #include "kernel.h"\r
 #include "pcb.h"\r
 //#include "app_i.h"\r
 #include "sys.h"\r
+#include "application.h"\r
 \r
 \r
+#if defined(__GNUC__)\r
+\r
+#define DECLARE(sym,val) \\r
+       __asm("#define " #sym " %0" : : "i" ((val)))\r
 \r
 void  oil_foo(void) {\r
 \r
-       DECLARE(PCB_T_SIZE,                     sizeof(OsPcbType));\r
-#if ( OS_SC3 == STD_ON ) || ( OS_SC4 == STD_ON )\r
-       DECLARE(APP_T_SIZE,                     sizeof(OsApplicationType));\r
+/* PCB */\r
+\r
+#elif defined(__CWCC__)\r
+#define DECLARE(_var,_offset) \\r
+    __declspec(section ".apa") char _var[100+(_offset)]\r
+#pragma section ".apa" ".apa"\r
+#endif\r
+\r
+\r
+       DECLARE(PCB_T_SIZE,                     sizeof(OsTaskVarType));\r
+#if    (OS_USE_APPLICATIONS == STD_ON)\r
+//     DECLARE(APP_T_SIZE,                     sizeof(OsApplicationType));\r
+\r
 #endif\r
-       DECLARE(PCB_STACK_CURR_P,       offsetof(OsPcbType, stack));\r
-       DECLARE(PCB_ENTRY_P,            offsetof(OsPcbType, entry));\r
-       DECLARE(SYS_CURR_PCB_P,         offsetof(sys_t, curr_pcb));\r
-       DECLARE(SYS_INT_NEST_CNT,       offsetof(sys_t, int_nest_cnt));\r
-       DECLARE(SYS_INT_STACK,          offsetof(sys_t, int_stack));\r
+       DECLARE(PCB_STACK_CURR_P,       offsetof(OsTaskVarType, stack));\r
+       DECLARE(PCB_ENTRY_P,            offsetof(OsTaskVarType, entry));\r
+       DECLARE(SYS_CURR_PCB_P,         offsetof(Os_SysType, currTaskPtr));\r
+       DECLARE(SYS_INT_NEST_CNT,       offsetof(Os_SysType, intNestCnt));\r
+       DECLARE(SYS_INT_STACK,          offsetof(Os_SysType, intStack));\r
+#if defined(__GNUC__)\r
 }\r
+#endif\r
 \r
index ba866fc97d79883c57cd0b1fb241e3518c5b0201..d428b01a94cb14c609d630bdd52b00d4d9aa279e 100644 (file)
@@ -36,25 +36,38 @@ obj-$(USE_KERNEL_EXTRA) += sleep.o
 obj-y += irq.o\r
 \r
 # We are compiling the kernel\r
+dep-$(CFG_PPC) += arch_offset.h\r
 dep-y += asm_offset.h\r
-dep-y += kernel_offset.h\r
+#dep-y += kernel_offset.h\r
 dep-$(CFG_ARM_CM3) += arch_offset.h\r
 \r
 \r
+ifeq ($(COMPILER),gcc)\r
 # ARM assembler generates "define STACK_APA $12". The extra '$' we want to go.\r
 # Assembler offsets\r
 %_offset.h: %_offset.c\r
        @echo "  >> generating $@ from $<"\r
-       $(Q)$(CC) -S $(CFLAGS) -o $(@:.h=.s) $(addprefix -I ,$(inc-y)) $(addprefix -D,$(def-y)) $<\r
+       $(Q)$(CC) -S $(CFLAGS) -o $(@:.h=.s) $(addprefix -I,$(inc-y)) $(addprefix -D,$(def-y)) $<\r
        $(Q)gawk '/.*define/ { print $$1 " " $$2 " " gensub("#","","g",$$3) }' $(@:.h=.s)  > $@\r
 \r
 # Assembler offsets\r
 asm_offset.h: asm_offset.c\r
        @echo "  >> asm offset gen $<"\r
-       $(Q)$(CC) -S $(CFLAGS) -o $(<:.c=.s) $(addprefix -I ,$(inc-y)) $(addprefix -D,$(def-y)) $<      \r
+       $(Q)$(CC) -S $(CFLAGS) -o $(<:.c=.s) $(addprefix -I,$(inc-y)) $(addprefix -D,$(def-y)) $<       \r
        @$(SED) -n "/#define/p" $(<:.c=.s) > $@\r
        @rm     $(<:.c=.s)\r
-       \r
+endif\r
+\r
+ifeq ($(COMPILER),cw)\r
+# The "\r" in the awk is a little strang...sed and awk if that does not work \r
+#  sed -e '/.apa/!d' -e '/OBJ/!d' -e 's/\[//' 123.tmp | gawk '{ print "#define " $9 " " $4 }'\r
+\r
+%_offset.h: %_offset.c\r
+       @echo "  >> generating $@ from $<"\r
+       $(Q)$(CC) -dis $(CFLAGS) $(addprefix -I,$(inc-y)) $(addprefix -D,$(def-y)) $< > 123.tmp\r
+       gawk '$$9 ~/.apa/ && $$0 ~/OBJ/ { gsub(/\r/,""); printf("#define %s %d\n",$$10,$$5-100) }' 123.tmp > $@\r
+endif\r
+\r
 #VPATH += ..\r
 VPATH += $(ROOTDIR)/system/kernel\r
 VPATH += $(ROOTDIR)/arch/$(ARCH_FAM)/$(ARCH)/kernel\r
index 9e3db4af9c15b8793e4d912b1311452ab2a2cac9..996e4bd553862c211e2d370b21937ebecebf39c6 100644 (file)
 \r
 #include "Os.h"\r
 \r
-\r
-/* See 8.4.4 */\r
-AccessType CheckISRMemoryAccess( ISRType ISRID,\r
-                                                               MemoryStartAddressType Address,\r
-                                                               MemorySizeType Size )\r
-{\r
-       // get hold of application memory space\r
-\r
-\r
-}\r
-\r
-AccessType CheckTaskMemoryAccess(      TaskType TaskID,\r
-                                                                       MemoryStartAddressType Address,\r
-                                                                       MemorySizeType Size )\r
-{\r
-\r
-\r
-}\r
-\r
-/* Object access\r
- *\r
- *\r
- * resource\r
- *\r
- *\r
- */\r
-\r
-\r
-\r
-\r
-/* This is probably macros */\r
-ObjectAccessType CheckObjectAccess( ApplicationType ApplID,\r
-                                                                       ObjectTypeType ObjectType,\r
-                                                                       void *object )\r
-{\r
-       uint32 app_mask = (1<<ApplID);\r
-       uint32 rv;\r
-\r
-       /* TODO: check id */\r
-       switch( ObjectType ) {\r
-       case OBJECT_ALARM:\r
-               rv =  ((OsAlarmType *)object)->app_mask & (app_mask);\r
-               break;\r
-       case OBJECT_COUNTER:\r
-               rv =  ((OsCounterType *)object)->app_mask & (app_mask);\r
-               break;\r
-       case OBJECT_ISR:\r
-               break;\r
-       case OBJECT_MESSAGE:\r
-       case OBJECT_RESOURCE:\r
-       case OBJECT_SCHEDULETABLE:\r
-               break;\r
-       case OBJECT_TASK:\r
-               rv = ((OsCounterType *)object)->app_mask & (app_mask);\r
-               break;\r
-       default:\r
-               break;\r
-       }\r
-\r
-\r
-\r
-\r
-       return ACCESS;\r
-}\r
-\r
-/* return application id for object */\r
-ApplicationType CheckObjectOwnership( ObjectTypeType ObjectType,\r
-                                                                       void *object )\r
-{\r
-       switch( ObjectType ) {\r
-       case OBJECT_ALARM:\r
-       case OBJECT_COUNTER:\r
-       case OBJECT_ISR:\r
-       case OBJECT_MESSAGE:\r
-       case OBJECT_RESOURCE:\r
-       case OBJECT_SCHEDULETABLE:\r
-       case OBJECT_TASK:\r
-       default:\r
-               break;\r
-       }\r
-\r
-       return (-1);\r
-}\r
index 7f60111a910a1e0504f43e3bfec055e742c513aa..fafe026694454dec33d34b82c4f8ad884aced074 100644 (file)
@@ -21,7 +21,7 @@
 \r
 int Os_ArcTest_GetTaskActivationLimit( TaskType TaskId ) {\r
 \r
-       return os_get_pcb(TaskId)->activationLimit;\r
+       return Os_TaskGet(TaskId)->constPtr->activationLimit;\r
 }\r
 \r
 /**\r
@@ -32,7 +32,7 @@ int Os_ArcTest_GetTaskActivationLimit( TaskType TaskId ) {
 \r
 void Os_ArcTest_SetIrqNestLevel( int level ) {\r
 \r
-       os_sys.int_nest_cnt = level;\r
+       Os_Sys.intNestCnt = level;\r
 \r
        return;\r
 }\r
index d99e431bcef9505869458931d983c26b244e3224..d784bc6d94ab390b119eab8bb319c7352d96f4db 100644 (file)
@@ -62,7 +62,7 @@ TODO:
 \r
   task.rsrcAccessMask & (1 << RES_SCHEDULER)\r
 \r
- *
+ *\r
  */\r
 \r
 /* INFO\r
@@ -106,31 +106,31 @@ TODO:
 #define valid_internal_id() (rPtr->nr < OS_RESOURCE_CNT) //&& (rPtr->type == RESOURCE_TYPE_INTERNAL) )\r
 \r
 \r
-void Os_ResourceAlloc( OsResourceType *rPtr, OsPcbType *pcbPtr) {\r
+void Os_ResourceAlloc( OsResourceType *rPtr, OsTaskVarType *pcbPtr) {\r
        /* Save old task prio in resource and set new task prio */\r
-       rPtr->owner = pcbPtr->pid;\r
-       rPtr->old_task_prio = pcbPtr->prio;\r
-       pcbPtr->prio = rPtr->ceiling_priority;\r
+       rPtr->owner = pcbPtr->constPtr->pid;\r
+       rPtr->old_task_prio = pcbPtr->activePriority;\r
+       pcbPtr->activePriority = rPtr->ceiling_priority;\r
 \r
        if( rPtr->type != RESOURCE_TYPE_INTERNAL ) {\r
-               TAILQ_INSERT_TAIL(&pcbPtr->resource_head, rPtr, listEntry);\r
+               TAILQ_INSERT_TAIL(&pcbPtr->resourceHead, rPtr, listEntry);\r
        }\r
 }\r
 \r
-void Os_ResourceFree( OsResourceType *rPtr , OsPcbType *pcbPtr) {\r
-       assert( rPtr->owner == pcbPtr->pid );\r
+void Os_ResourceFree( OsResourceType *rPtr , OsTaskVarType *pcbPtr) {\r
+       assert( rPtr->owner == pcbPtr->constPtr->pid );\r
        rPtr->owner = NO_TASK_OWNER;\r
-       pcbPtr->prio = rPtr->old_task_prio;\r
+       pcbPtr->activePriority = rPtr->old_task_prio;\r
 \r
        if( rPtr->type != RESOURCE_TYPE_INTERNAL ) {\r
                /* The list can't be empty here */\r
-               assert( !TAILQ_EMPTY(&pcbPtr->resource_head) );\r
+               assert( !TAILQ_EMPTY(&pcbPtr->resourceHead) );\r
 \r
                /* The list should be popped in LIFO order */\r
-               assert( TAILQ_LAST(&pcbPtr->resource_head, head) == rPtr );\r
+               assert( TAILQ_LAST(&pcbPtr->resourceHead, head) == rPtr );\r
 \r
                /* Remove the entry */\r
-               TAILQ_REMOVE(&pcbPtr->resource_head, rPtr, listEntry);\r
+               TAILQ_REMOVE(&pcbPtr->resourceHead, rPtr, listEntry);\r
        }\r
 }\r
 \r
@@ -162,7 +162,7 @@ void Os_ResourceFree( OsResourceType *rPtr , OsPcbType *pcbPtr) {
 \r
 StatusType GetResource( ResourceType ResID ) {\r
        StatusType rv = E_OK;\r
-       OsPcbType *pcbPtr = Os_TaskGetCurrent();\r
+       OsTaskVarType *pcbPtr = Os_TaskGetCurrent();\r
        OsResourceType *rPtr;\r
        uint32_t flags;\r
 \r
@@ -170,10 +170,10 @@ StatusType GetResource( ResourceType ResID ) {
 \r
        if( ResID == RES_SCHEDULER ) {\r
 \r
-               rPtr = &os_sys.resScheduler;\r
+               rPtr = &Os_Sys.resScheduler;\r
        } else {\r
                /* Check we can access it */\r
-               if( (pcbPtr->resourceAccess & (1<< ResID)) == 0 ) {\r
+               if( (pcbPtr->constPtr->resourceAccess & (1<< ResID)) == 0 ) {\r
                        rv = E_OS_ID;\r
                        goto err;\r
                }\r
@@ -183,7 +183,7 @@ StatusType GetResource( ResourceType ResID ) {
 \r
        /* Check for invalid configuration */\r
        if( (rPtr->owner != NO_TASK_OWNER) ||\r
-               (pcbPtr->prio > rPtr->ceiling_priority) )\r
+               (pcbPtr->activePriority > rPtr->ceiling_priority) )\r
        {\r
                rv = E_OS_ACCESS;\r
                Irq_Restore(flags);\r
@@ -214,16 +214,16 @@ StatusType GetResource( ResourceType ResID ) {
 \r
 StatusType ReleaseResource( ResourceType ResID) {\r
        StatusType rv = E_OK;\r
-       OsPcbType *pcbPtr = Os_TaskGetCurrent();\r
+       OsTaskVarType *pcbPtr = Os_TaskGetCurrent();\r
        OsResourceType *rPtr;\r
        uint32_t flags;\r
 \r
        Irq_Save(flags);\r
        if( ResID == RES_SCHEDULER ) {\r
-               rPtr = &os_sys.resScheduler;\r
+               rPtr = &Os_Sys.resScheduler;\r
        } else {\r
                /* Check we can access it */\r
-               if( (pcbPtr->resourceAccess & (1<< ResID)) == 0 ) {\r
+               if( (pcbPtr->constPtr->resourceAccess & (1<< ResID)) == 0 ) {\r
                        rv = E_OS_ID;\r
                        goto err;\r
                }\r
@@ -238,7 +238,7 @@ StatusType ReleaseResource( ResourceType ResID) {
                goto err;\r
        }\r
 \r
-       if( (pcbPtr->prio < rPtr->ceiling_priority))\r
+       if( (pcbPtr->activePriority < rPtr->ceiling_priority))\r
        {\r
                rv = E_OS_ACCESS;\r
                Irq_Restore(flags);\r
@@ -248,14 +248,14 @@ StatusType ReleaseResource( ResourceType ResID) {
        Os_ResourceFree(rPtr,pcbPtr);\r
 \r
        /* do a rescheduling (in some cases) (see OSEK OS 4.6.1) */\r
-       if ( (pcbPtr->scheduling == FULL) &&\r
-                (os_sys.int_nest_cnt == 0) &&\r
+       if ( (pcbPtr->constPtr->scheduling == FULL) &&\r
+                (Os_Sys.intNestCnt == 0) &&\r
                 (Os_SchedulerResourceIsFree()) ) {\r
 \r
-               OsPcbType* top_pcb = Os_TaskGetTop();\r
+               OsTaskVarType* top_pcb = Os_TaskGetTop();\r
 \r
                /* only dispatch if some other ready task has higher prio */\r
-               if (top_pcb->prio > Os_TaskGetCurrent()->prio) {\r
+               if (top_pcb->activePriority > Os_TaskGetCurrent()->activePriority) {\r
                        Os_Dispatch(OP_RELEASE_RESOURCE);\r
                }\r
        }\r
@@ -266,8 +266,8 @@ StatusType ReleaseResource( ResourceType ResID) {
 \r
 \r
 void Os_ResourceGetInternal( void ) {\r
-       OsPcbType *pcbPtr = Os_TaskGetCurrent();\r
-       OsResourceType *rt = pcbPtr->resource_int_p;\r
+       OsTaskVarType *pcbPtr = Os_TaskGetCurrent();\r
+       OsResourceType *rt = pcbPtr->constPtr->resourceIntPtr;\r
 \r
        if( rt != NULL ) {\r
                OS_DEBUG(D_RESOURCE,"Get IR proc:%s prio:%u old_task_prio:%u\n",\r
@@ -279,8 +279,8 @@ void Os_ResourceGetInternal( void ) {
 }\r
 \r
 void Os_ResourceReleaseInternal( void ) {\r
-       OsPcbType *pcbPtr = Os_TaskGetCurrent();\r
-       OsResourceType *rt = pcbPtr->resource_int_p;\r
+       OsTaskVarType *pcbPtr = Os_TaskGetCurrent();\r
+       OsResourceType *rt = pcbPtr->constPtr->resourceIntPtr;\r
 \r
        if(  rt != NULL ) {\r
                OS_DEBUG(D_RESOURCE,"Rel IR proc:%s prio:%u old_task_prio:%u\n",\r
@@ -299,17 +299,17 @@ void Os_ResourceReleaseInternal( void ) {
  * @return\r
  */\r
 void Os_ResourceInit( void ) {\r
-       //TAILQ_INIT(&pcb_p->resource_head);\r
-       OsPcbType *pcb_p;\r
+       //TAILQ_INIT(&pcb_p->resourceHead);\r
+       OsTaskVarType *pcb_p;\r
        OsResourceType *rsrc_p;\r
        int topPrio;\r
 \r
 \r
        /* For now, assign the scheduler resource here */\r
-       os_sys.resScheduler.ceiling_priority = OS_RES_SCHEDULER_PRIO;\r
-       strcpy(os_sys.resScheduler.id,"RES_SCHEDULER");\r
-       os_sys.resScheduler.nr = RES_SCHEDULER;\r
-       os_sys.resScheduler.owner = NO_TASK_OWNER;\r
+       Os_Sys.resScheduler.ceiling_priority = OS_RES_SCHEDULER_PRIO;\r
+       strcpy(Os_Sys.resScheduler.id,"RES_SCHEDULER");\r
+       Os_Sys.resScheduler.nr = RES_SCHEDULER;\r
+       Os_Sys.resScheduler.owner = NO_TASK_OWNER;\r
 \r
        /* Calculate ceiling priority\r
         * We make this as simple as possible. The ceiling priority\r
@@ -324,15 +324,15 @@ void Os_ResourceInit( void ) {
 \r
                for( int pi = 0; pi < OS_TASK_CNT; pi++) {\r
 \r
-                       pcb_p = os_get_pcb(pi);\r
+                       pcb_p = Os_TaskGet(pi);\r
 \r
 \r
-                       if(pcb_p->resourceAccess & (1<<i) ) {\r
-                               topPrio = MAX(topPrio,pcb_p->prio);\r
+                       if(pcb_p->constPtr->resourceAccess & (1<<i) ) {\r
+                               topPrio = MAX(topPrio,pcb_p->constPtr->prio);\r
                        }\r
 \r
                        /* Generator fix, add RES_SCHEDULER */\r
-                       pcb_p->resourceAccess |= (1 << RES_SCHEDULER) ;\r
+//                     pcb_p->constPtr->resourceAccess |= (1 << RES_SCHEDULER) ;\r
                }\r
                rsrc_p->ceiling_priority = topPrio;\r
        }\r
index f1223779c6db9ad2188f064fdc905692a52872f1..541a954d0c8d404f5572a8b6f3c5079245529842 100644 (file)
@@ -582,7 +582,7 @@ void Os_SchTblAutostart( void ) {
                        const struct OsSchTblAutostart *autoPtr = sPtr->autostartPtr;\r
 \r
                        /* Check appmode */\r
-                       if( os_sys.appMode & autoPtr->appMode ) {\r
+                       if( Os_Sys.appMode & autoPtr->appMode ) {\r
 \r
                                /* Start the schedule table */\r
                                switch(autoPtr->type) {\r
index 3aa7bc7835354e34ce7b5e9d0fbcad4f74de5bdf..ffe9644f7220c2d8ea4f91a3364c55d304460149 100644 (file)
@@ -13,6 +13,8 @@
  * for more details.\r
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
+/* ----------------------------[includes]------------------------------------*/\r
+\r
 #include <stdlib.h>\r
 #include "Os.h"\r
 \r
 #include "arc.h"\r
 #include "arch.h"\r
 \r
+/* ----------------------------[private define]------------------------------*/\r
+/* ----------------------------[private macro]-------------------------------*/\r
+/* ----------------------------[private typedef]-----------------------------*/\r
+/* ----------------------------[private function prototypes]-----------------*/\r
+/* ----------------------------[private variables]---------------------------*/\r
+#if OS_TASK_CNT!=0\r
+OsTaskVarType Os_TaskVarList[OS_TASK_CNT];\r
+#endif\r
+\r
+/* ----------------------------[private functions]---------------------------*/\r
+/* ----------------------------[public functions]----------------------------*/\r
+\r
+\r
+\r
 /** @req OS067 */\r
 \r
-_Bool os_pcb_pid_valid( OsPcbType *restrict pcb ) {\r
-       return ( pcb->pid > OS_TASK_CNT ) ? 0 : 1;\r
+_Bool os_pcb_pid_valid( OsTaskVarType *restrict pcb ) {\r
+       return ( pcb->constPtr->pid > OS_TASK_CNT ) ? 0 : 1;\r
 }\r
 /**\r
  * Start an extended task.\r
@@ -35,7 +51,7 @@ _Bool os_pcb_pid_valid( OsPcbType *restrict pcb ) {
  */\r
 void Os_TaskStartExtended( void ) {\r
 \r
-       OsPcbType *pcb;\r
+       OsTaskVarType *pcb;\r
 \r
        pcb = Os_TaskGetCurrent();\r
 #if 0\r
@@ -83,7 +99,7 @@ void Os_TaskStartExtended( void ) {
 \r
 void Os_TaskStartBasic( void ) {\r
 \r
-       OsPcbType *pcb;\r
+       OsTaskVarType *pcb;\r
 \r
        pcb = Os_TaskGetCurrent();\r
 #if 0\r
@@ -114,7 +130,7 @@ void Os_TaskStartBasic( void ) {
 }\r
 \r
 \r
-static void Os_StackSetup( OsPcbType *pcbPtr ) {\r
+static void Os_StackSetup( OsTaskVarType *pcbPtr ) {\r
        uint8_t *bottom;\r
 \r
        /* Find bottom of the stack so that we can place the\r
@@ -140,7 +156,7 @@ static void Os_StackSetup( OsPcbType *pcbPtr ) {
  *\r
  * @param pcbPtr Pointer to the pcb to fill with pattern\r
  */\r
-static void Os_StackFill(OsPcbType *pcbPtr) {\r
+static void Os_StackFill(OsTaskVarType *pcbPtr) {\r
        uint8_t *p = pcbPtr->stack.curr;\r
 \r
        assert(pcbPtr->stack.curr > pcbPtr->stack.top);\r
@@ -156,7 +172,7 @@ static void Os_StackFill(OsPcbType *pcbPtr) {
  *\r
  * @param pcbPtr\r
  */\r
-static void Os_TaskSetEntry(OsPcbType *pcbPtr ) {\r
+static void Os_TaskSetEntry(OsTaskVarType *pcbPtr ) {\r
 \r
 }\r
 #endif\r
@@ -169,9 +185,9 @@ static void Os_TaskSetEntry(OsPcbType *pcbPtr ) {
  *\r
  * @param pcb Ptr to the pcb to setup context for.\r
  */\r
-void Os_ContextInit( OsPcbType *pcb ) {\r
+void Os_TaskContextInit( OsTaskVarType *pcb ) {\r
 \r
-       if( pcb->autostart ) {\r
+       if( pcb->constPtr->autostart ) {\r
                Os_TaskMakeReady(pcb);\r
        } else {\r
                pcb->state = ST_SUSPENDED;\r
@@ -188,46 +204,50 @@ void Os_ContextInit( OsPcbType *pcb ) {
  *\r
  * @param pcb\r
  */\r
-void Os_ContextReInit( OsPcbType *pcbPtr ) {\r
+void Os_ContextReInit( OsTaskVarType *pcbPtr ) {\r
        Os_StackSetup(pcbPtr);\r
 }\r
 \r
+#if 0\r
 /**\r
  * Search for a specific task in the pcb list.\r
  *\r
  * @param tid The task id to search for\r
  * @return Ptr to the found pcb or NULL\r
  */\r
-OsPcbType *os_find_task( TaskType tid ) {\r
-       OsPcbType *i_pcb;\r
-\r
-       /* TODO: Implement this as an array */\r
-       TAILQ_FOREACH(i_pcb,& os_sys.pcb_head,pcb_list) {\r
-               if(i_pcb->pid == tid ) {\r
+OsTaskVarType *Os_TaskGet( TaskType tid ) {\r
+       OsTaskVarType *i_pcb;\r
+       TAILQ_FOREACH(i_pcb,& Os_Sys.pcb_head,pcb_list) {\r
+               if(i_pcb->constPtr->pid == tid ) {\r
                        return i_pcb;\r
                }\r
        }\r
+\r
        assert(0);\r
        return NULL;\r
 }\r
+#endif\r
 \r
+#if 0\r
 /**\r
  * Adds a pcb to the list of pcb's\r
  * @param pcb\r
  */\r
-TaskType Os_AddTask( OsPcbType *pcb ) {\r
+TaskType Os_AddTask( OsTaskVarType *pcb ) {\r
        long msr;\r
 \r
        Irq_Save(msr);  // Save irq status and disable interrupts\r
 \r
-       pcb->pid = os_sys.task_cnt;\r
+       pcb->pid = Os_Sys.task_cnt;\r
        // Add to list of PCB's\r
-       TAILQ_INSERT_TAIL(& os_sys.pcb_head,pcb,pcb_list);\r
-       os_sys.task_cnt++;\r
+       TAILQ_INSERT_TAIL(& Os_Sys.pcb_head,pcb,pcb_list);\r
+       Os_Sys.task_cnt++;\r
+       Os_Sys.isrCnt++;\r
 \r
        Irq_Restore(msr);  // Restore interrupts\r
        return pcb->pid;\r
 }\r
+#endif\r
 \r
 \r
 #define PRIO_ILLEGAL   -100\r
@@ -240,23 +260,23 @@ TaskType Os_AddTask( OsPcbType *pcb ) {
  * @return\r
  */\r
 \r
-OsPcbType *Os_TaskGetTop( void ){\r
-       OsPcbType *i_pcb;\r
-       OsPcbType *top_prio_pcb = NULL;\r
+OsTaskVarType *Os_TaskGetTop( void ){\r
+       OsTaskVarType *i_pcb;\r
+       OsTaskVarType *top_prio_pcb = NULL;\r
        OsPriorityType top_prio = PRIO_ILLEGAL;\r
 \r
 //     OS_DEBUG(D_TASK,"os_find_top_prio_proc\n");\r
 \r
-       TAILQ_FOREACH(i_pcb,& os_sys.ready_head,ready_list) {\r
+       TAILQ_FOREACH(i_pcb,& Os_Sys.ready_head,ready_list) {\r
                // all ready task are canidates\r
                if( i_pcb->state & (ST_READY|ST_RUNNING)) {\r
                        if( top_prio != PRIO_ILLEGAL ) {\r
-                               if( i_pcb->prio > top_prio ) {\r
-                                       top_prio = i_pcb->prio;\r
+                               if( i_pcb->activePriority > top_prio ) {\r
+                                       top_prio = i_pcb->activePriority;\r
                                        top_prio_pcb = i_pcb;\r
                                }\r
                        } else {\r
-                               top_prio = i_pcb->prio;\r
+                               top_prio = i_pcb->activePriority;\r
                                top_prio_pcb = i_pcb;\r
                        }\r
                } else {\r
@@ -296,7 +316,7 @@ OsPcbType *Os_TaskGetTop( void ){
  *    + No need to remove the running process from ready queue\r
  */\r
 \r
-OsPcbType *Os_FindTopPrioTask( void ) {\r
+OsTaskVarType *Os_FindTopPrioTask( void ) {\r
 \r
 \r
        return NULL;\r
@@ -315,10 +335,10 @@ OsPcbType *Os_FindTopPrioTask( void ) {
  *\r
  */\r
 void Os_Dispatch( uint32_t op ) {\r
-       OsPcbType *pcbPtr;\r
-       OsPcbType *currPcbPtr = Os_TaskGetCurrent();\r
+       OsTaskVarType *pcbPtr;\r
+       OsTaskVarType *currPcbPtr = Os_TaskGetCurrent();\r
 \r
-       assert(os_sys.int_nest_cnt == 0);\r
+       assert(Os_Sys.intNestCnt == 0);\r
        assert(Os_SchedulerResourceIsFree());\r
 \r
        /* When calling post hook we must still be in ST_RUNNING */\r
@@ -335,7 +355,7 @@ void Os_Dispatch( uint32_t op ) {
        } else if( op & OP_ACTIVATE_TASK ) {\r
                Os_TaskMakeReady(currPcbPtr);\r
        } else if( op & OP_CHAIN_TASK ) {\r
-               assert( os_sys.chainedPcbPtr != NULL );\r
+               assert( Os_Sys.chainedPcbPtr != NULL );\r
 \r
                /*  #  from chain  top\r
                 * ----------------------------------------------------------\r
@@ -348,7 +368,7 @@ void Os_Dispatch( uint32_t op ) {
                 *\r
                 *  - Chained task is always READY when coming from ChainTask()\r
                 */\r
-               if( currPcbPtr != os_sys.chainedPcbPtr ) {\r
+               if( currPcbPtr != Os_Sys.chainedPcbPtr ) {\r
                        /* #3 and #4 */\r
                        --currPcbPtr->activations;\r
                        if( currPcbPtr->activations <= 0 ) {\r
@@ -359,7 +379,7 @@ void Os_Dispatch( uint32_t op ) {
                        }\r
                        /* Chained task is already in READY */\r
                }\r
-               os_sys.chainedPcbPtr = NULL;\r
+               Os_Sys.chainedPcbPtr = NULL;\r
 \r
        } else if( op & OP_TERMINATE_TASK ) {\r
                /*@req OSEK TerminateTask\r
@@ -384,7 +404,7 @@ void Os_Dispatch( uint32_t op ) {
        /* Swap if we found any process or are forced (multiple activations)*/\r
        if( pcbPtr != currPcbPtr ) {\r
 \r
-               if( (op & OP_CHAIN_TASK) && ( currPcbPtr == os_sys.chainedPcbPtr ) ) {\r
+               if( (op & OP_CHAIN_TASK) && ( currPcbPtr == Os_Sys.chainedPcbPtr ) ) {\r
                        /* #2 */\r
                        Os_TaskRunningToReady(currPcbPtr);\r
                }\r
@@ -397,24 +417,21 @@ void Os_Dispatch( uint32_t op ) {
 \r
 #if (OS_STACK_MONITORING == 1)\r
                if( !Os_StackIsEndmarkOk(currPcbPtr) ) {\r
-#if (  OS_SC1 == 1) || (  OS_SC2 == 1)\r
+#if (  OS_SC1 == STD_ON) || (  OS_SC2 == STD_ON )\r
                        /** @req OS068 */\r
                        ShutdownOS(E_OS_STACKFAULT);\r
 #else\r
-#error SC3 or SC4 not supported. Protection hook should be called here\r
+                       /** @req OS396\r
+                        * If a stack fault is detected by stack monitoring AND the configured scalability\r
+                        * class is 3 or 4, the Operating System module shall call the ProtectionHook() with\r
+                        * the status E_OS_STACKFAULT.\r
+                        * */\r
+                       PROTECTIONHOOK(E_OS_STACKFAULT);\r
 #endif\r
                }\r
 #endif\r
                OS_DEBUG(D_TASK,"Swapping to: %s\n",pcbPtr->name);\r
                Os_TaskSwapContext(currPcbPtr,pcbPtr);\r
-\r
-               /* ActivateTask, SetEvent, Schedule, .. */\r
-//             pcbPtr = Os_TaskGetCurrent();\r
-//             Os_TaskMakeRunning(pcbPtr);\r
-//             PRETASKHOOK();\r
-\r
-//             Os_ResourceGetInternal();\r
-\r
        } else {\r
                OS_DEBUG(D_TASK,"Continuing task %s\n",pcbPtr->name);\r
                /* Setup the stack again, and just call the basic task */\r
@@ -449,8 +466,11 @@ void Os_Dispatch( uint32_t op ) {
  *  Do we need virtual memory??\r
  */\r
 \r
-void Os_TaskSwapContext(OsPcbType *old_pcb, OsPcbType *new_pcb ) {\r
+void Os_TaskSwapContext(OsTaskVarType *old_pcb, OsTaskVarType *new_pcb ) {\r
        set_curr_pcb(new_pcb);\r
+#if    (OS_USE_APPLICATIONS == STD_ON)\r
+       Os_Sys.currApplId = new_pcb->constPtr->applOwnerId;\r
+#endif\r
        Os_ResourceGetInternal();\r
        Os_TaskMakeRunning(new_pcb);\r
        /* TODO: The pretask hook is not called with the right stack\r
@@ -459,8 +479,11 @@ void Os_TaskSwapContext(OsPcbType *old_pcb, OsPcbType *new_pcb ) {
        Os_ArchSwapContext(old_pcb,new_pcb);\r
 }\r
 \r
-void Os_TaskSwapContextTo(OsPcbType *old_pcb, OsPcbType *new_pcb ) {\r
+void Os_TaskSwapContextTo(OsTaskVarType *old_pcb, OsTaskVarType *new_pcb ) {\r
        set_curr_pcb(new_pcb);\r
+#if    (OS_USE_APPLICATIONS == STD_ON)\r
+       Os_Sys.currApplId = new_pcb->constPtr->applOwnerId;\r
+#endif\r
        Os_ResourceGetInternal();\r
        Os_TaskMakeRunning(new_pcb);\r
        PRETASKHOOK();\r
@@ -470,7 +493,7 @@ void Os_TaskSwapContextTo(OsPcbType *old_pcb, OsPcbType *new_pcb ) {
 \r
 \r
 void Os_Arc_GetStackInfo( TaskType task, StackInfoType *s) {\r
-       OsPcbType *pcb  = os_get_pcb(task);\r
+       OsTaskVarType *pcb      = Os_TaskGet(task);\r
 \r
        s->curr         = Os_ArchGetStackPtr();\r
        s->top          = pcb->stack.top;\r
@@ -501,7 +524,7 @@ StatusType GetTaskState(TaskType TaskId, TaskStateRefType State) {
 \r
        TASK_CHECK_ID(TaskId);\r
 \r
-       curr_state = os_pcb_get_state(os_get_pcb(TaskId));\r
+       curr_state = os_pcb_get_state(Os_TaskGet(TaskId));\r
 \r
        // TODO: Lazy impl. for now */\r
        switch(curr_state) {\r
@@ -531,12 +554,12 @@ StatusType GetTaskID( TaskRefType TaskID ) {
 \r
        /* Test specification say return CALLEVEL if in ISR\r
         * but impl. spec says otherwise */\r
-       if( os_sys.int_nest_cnt == 0 ) {\r
-               if( os_sys.curr_pcb->state & ST_RUNNING ) {\r
-                       *TaskID = os_sys.curr_pcb->pid;\r
+       if( Os_Sys.intNestCnt == 0 ) {\r
+               if( Os_Sys.currTaskPtr->state & ST_RUNNING ) {\r
+                       *TaskID = Os_Sys.currTaskPtr->constPtr->pid;\r
                } else {\r
                        /* This is not a real error since this could\r
-                        * be the case when called from ErrorHook */
+                        * be the case when called from ErrorHook */\r
                }\r
        }\r
 \r
@@ -544,19 +567,27 @@ StatusType GetTaskID( TaskRefType TaskID ) {
 }\r
 \r
 \r
+/**\r
+ * This service returns the identifier of the currently executing ISR\r
+ *\r
+ * If its caller is not a category 2 ISR (or Hook routines called\r
+ * inside a category 2 ISR), GetISRID() shall return INVALID_ISR.\r
+ *\r
+ * @return\r
+ */\r
 ISRType GetISRID( void ) {\r
 \r
        /** @req OS264 */\r
-       if(os_sys.int_nest_cnt == 0 ) {\r
+       if(Os_Sys.intNestCnt == 0 ) {\r
                return INVALID_ISR;\r
        }\r
 \r
        /** @req OS263 */\r
-       return (ISRType)Os_TaskGetCurrent()->pid;\r
+       return (ISRType)Os_TaskGetCurrent()->constPtr->pid;\r
 }\r
 \r
-static inline void Os_Arc_SetCleanContext( OsPcbType *pcb ) {\r
-       if (pcb->proc_type == PROC_EXTENDED) {\r
+static inline void Os_Arc_SetCleanContext( OsTaskVarType *pcb ) {\r
+       if (pcb->constPtr->proc_type == PROC_EXTENDED) {\r
                /** @req OSEK ActivateTask Cleanup events\r
                 * OSEK,ActivateTask, When an extended task is transferred from suspended\r
                 * state into ready state all its events are cleared.*/\r
@@ -594,7 +625,7 @@ static inline void Os_Arc_SetCleanContext( OsPcbType *pcb ) {
 \r
 StatusType ActivateTask( TaskType TaskID ) {\r
        long msr;\r
-       OsPcbType *pcb = os_get_pcb(TaskID);\r
+       OsTaskVarType *pcb = Os_TaskGet(TaskID);\r
        StatusType rv = E_OK;\r
 \r
        OS_DEBUG(D_TASK,"# ActivateTask %s\n",pcb->name);\r
@@ -605,6 +636,22 @@ StatusType ActivateTask( TaskType TaskID ) {
 #endif\r
 \r
        Irq_Save(msr);\r
+\r
+#if    (OS_USE_APPLICATIONS == STD_ON)\r
+       /* @req OS504/ActivateTask\r
+        * The Operating System module shall deny access to Operating System\r
+        * objects from other OS-Applications to an OS-Application which is not in state\r
+     * APPLICATION_ACCESSIBLE.\r
+     * */\r
+       if( pcb->constPtr->applOwnerId != Os_Sys.currApplId ) {\r
+               /* We are activating a task in another application */\r
+               if( Os_AppVar[Os_Sys.currApplId].state != APPLICATION_ACCESSIBLE ) {\r
+                       rv=E_OS_ACCESS;\r
+                       goto err;\r
+               }\r
+       }\r
+#endif\r
+\r
        /* @req OS093 ActivateTask */\r
        if( Os_IrqAnyDisabled() ) {\r
                /* Standard */\r
@@ -615,7 +662,7 @@ StatusType ActivateTask( TaskType TaskID ) {
        pcb->activations++;\r
        if( os_pcb_get_state(pcb) != ST_SUSPENDED ) {\r
                /** @req OSEK_? Too many task activations */\r
-               if( pcb->activations >= (pcb->activationLimit + 1) ) {\r
+               if( pcb->activations >= (pcb->constPtr->activationLimit + 1) ) {\r
                        /* Standard */\r
                        rv=E_OS_LIMIT;\r
                        Irq_Restore(msr);\r
@@ -630,9 +677,9 @@ StatusType ActivateTask( TaskType TaskID ) {
        }\r
 \r
        /* Preempt only if we are preemptable and target has higher prio than us */\r
-       if(     (Os_TaskGetCurrent()->scheduling == FULL) &&\r
-               (os_sys.int_nest_cnt == 0) &&\r
-               (pcb->prio > Os_TaskGetCurrent()->prio) &&\r
+       if(     (Os_TaskGetCurrent()->constPtr->scheduling == FULL) &&\r
+               (Os_Sys.intNestCnt == 0) &&\r
+               (pcb->activePriority > Os_TaskGetCurrent()->activePriority) &&\r
                (Os_SchedulerResourceIsFree()))\r
        {\r
                Os_Dispatch(OP_ACTIVATE_TASK);\r
@@ -673,16 +720,16 @@ StatusType ActivateTask( TaskType TaskID ) {
  */\r
 \r
 StatusType TerminateTask( void ) {\r
-       OsPcbType *curr_pcb = Os_TaskGetCurrent();\r
+       OsTaskVarType *curr_pcb = Os_TaskGetCurrent();\r
        StatusType rv = E_OK;\r
        uint32_t flags;\r
 \r
-       OS_DEBUG(D_TASK,"# TerminateTask %s\n",curr_pcb->name);\r
+       OS_DEBUG(D_TASK,"# TerminateTask %s\n",currTaskPtr->name);\r
 \r
 #if (OS_STATUS_EXTENDED == STD_ON )\r
 \r
 \r
-       if( os_sys.int_nest_cnt != 0 ) {\r
+       if( Os_Sys.intNestCnt != 0 ) {\r
                rv =  E_OS_CALLEVEL;\r
                goto err;\r
        }\r
@@ -712,19 +759,19 @@ StatusType TerminateTask( void ) {
 }\r
 \r
 StatusType ChainTask( TaskType TaskId ) {\r
-       OsPcbType *curr_pcb = Os_TaskGetCurrent();\r
+       OsTaskVarType *curr_pcb = Os_TaskGetCurrent();\r
        StatusType rv = E_OK;\r
        uint32_t flags;\r
-       OsPcbType *pcb = os_get_pcb(TaskId);\r
+       OsTaskVarType *pcb = Os_TaskGet(TaskId);\r
 \r
 \r
-       OS_DEBUG(D_TASK,"# ChainTask %s\n",curr_pcb->name);\r
+       OS_DEBUG(D_TASK,"# ChainTask %s\n",currTaskPtr->name);\r
 \r
 #if (OS_STATUS_EXTENDED == STD_ON )\r
        /* extended */\r
        TASK_CHECK_ID(TaskId);\r
 \r
-       if( os_sys.int_nest_cnt != 0 ) {\r
+       if( Os_Sys.intNestCnt != 0 ) {\r
                /* extended */\r
                rv = E_OS_CALLEVEL;\r
                goto err;\r
@@ -755,7 +802,7 @@ StatusType ChainTask( TaskType TaskId ) {
 //     if( os_pcb_get_state(pcb) != ST_SUSPENDED ) {\r
        if (curr_pcb != pcb) {\r
                /** @req OSEK_? Too many task activations */\r
-               if( (pcb->activations + 1) >  pcb->activationLimit ) {\r
+               if( (pcb->activations + 1) >  pcb->constPtr->activationLimit ) {\r
                        /* standard */\r
                        rv = E_OS_LIMIT;\r
                        Irq_Restore(flags);\r
@@ -772,7 +819,7 @@ StatusType ChainTask( TaskType TaskId ) {
 \r
        }\r
 \r
-       os_sys.chainedPcbPtr = pcb;\r
+       Os_Sys.chainedPcbPtr = pcb;\r
 \r
        Os_Dispatch(OP_CHAIN_TASK);\r
 \r
@@ -796,12 +843,12 @@ StatusType ChainTask( TaskType TaskId ) {
 StatusType Schedule( void ) {\r
        StatusType rv = E_OK;\r
        uint32_t flags;\r
-       OsPcbType *curr_pcb = get_curr_pcb();\r
+       OsTaskVarType *curr_pcb = get_curr_pcb();\r
 \r
        OS_DEBUG(D_TASK,"# Schedule %s\n",Os_TaskGetCurrent()->name);\r
 \r
        /* Check that we are not calling from interrupt context */\r
-       if( os_sys.int_nest_cnt != 0 ) {\r
+       if( Os_Sys.intNestCnt != 0 ) {\r
                rv =  E_OS_CALLEVEL;\r
                goto err;\r
        }\r
@@ -819,14 +866,14 @@ StatusType Schedule( void ) {
         * FULL - Assigned internal resource OR\r
         *        No assigned internal resource.\r
         * */\r
-       if( Os_TaskGetCurrent()->scheduling != NON ) {\r
+       if( Os_TaskGetCurrent()->constPtr->scheduling != NON ) {\r
                return E_OK;\r
        }\r
 \r
        Irq_Save(flags);\r
-       OsPcbType* top_pcb = Os_TaskGetTop();\r
+       OsTaskVarType* top_pcb = Os_TaskGetTop();\r
        /* only dispatch if some other ready task has higher prio */\r
-       if (top_pcb->prio > Os_TaskGetCurrent()->prio) {\r
+       if (top_pcb->activePriority > Os_TaskGetCurrent()->activePriority) {\r
                Os_Dispatch(OP_SCHEDULE);\r
        }\r
 \r
similarity index 88%
rename from tools/t32/autosar.men
rename to tools/t32/arccore.men
index 881117540e4f8ceaa588f16f87cb55d356d62021..007b6da82b22597b9bda9b09cb7ee88ec2671705 100644 (file)
@@ -119,7 +119,7 @@ ggg ggg gg  g g
 add\r
 menu\r
 (\r
-  popup "Autosar"\r
+  popup "ArcCore"\r
   (\r
     popup "&Breakpoint"\r
     (\r
index 4390b6becb8c4584c3561b82cf30d15b33cf9784..0decbc057247a5869fa4c69465cd64b413c0979b 100644 (file)
@@ -144,7 +144,7 @@ P_PATH: EDIT "&cfg_project_path_g" ""
        DEFBUTTON "Cancel" "jumpto win_close"\r
         CLOSE "jumpto win_close"\r
 )\r
-\r
+  dialog.set CPU "&cfg_cpu_g"\r
   stop\r
 save_close:\r
   &cfg_cpu_g=dialog.string(CPU)\r
index da3ed60909fdbbe45b61221e8995334b87b8ae97..8d75ede07daa093aff816e0a5a8243555df3da31 100644 (file)
Binary files a/tools/t32/mpc55xx_sim.dll and b/tools/t32/mpc55xx_sim.dll differ
index 8ed0938dce755f049d2163bfbcaffbaf8822de5e..cfb9170dff9c04b12565dac09a49ad9fe683d315 100644 (file)
@@ -7,9 +7,8 @@
  // arg 2-blaj\r
  // arg 3-debug : 0 \r
  \r
- sim.load mpc55xx_sim.dll 20000 0 1\r
- ;sim.load C:\projects\t32sim\Debug\mpc55xx_sim.dll 20000 0 0\r
-; sim.load &dll 0xfff84000 0\r
+ sim.load mpc55xx_sim.dll 20000 0 0\r
+// sim.load C:\projects\workspace\t32_sim\Release\mpc55xx_sim.dll 20000 0 1\r
 \r
 enddo\r
 \r
@@ -42,3 +41,5 @@ enddo
 \r
 \r
 \r
+\r
+\r
index 29c090267d3e31f869eb691a1a822e0bbe21eb41..b8b6412889962cc0fe7bd87c795199bcde98950c 100644 (file)
@@ -71,16 +71,15 @@ IF !SIMULATOR()
 setup.var %SYMBOL.on %HEX.on %decimal.on %index.on %string.on\r
 setup.tabsize 2.\r
 \r
-menu.rp autosar.men\r
+menu.rp arccore.men\r
 \r
 winpos 0% 70% 50% 30%\r
 area\r
 \r
 area.select\r
-print "## Welcome to Arc-Core simulator environment for T32   ##"\r
+print "## Welcome to ArcCore simulator environment for T32   ##"\r
 print ""\r
 \r
-\r
 enddo\r
 \r
 \r