\r
#Ecu\r
#obj-y += EcuM_$(BOARDDIR).o\r
-obj-y += EcuM.o\r
-obj-y += EcuM_Cfg.o\r
-obj-y += EcuM_Callout_template.o\r
-inc-y += $(ROOTDIR)/system/EcuM\r
-vpath-y += $(ROOTDIR)/system/EcuM\r
+obj-$(USE_ECUM) += EcuM.o\r
+obj-$(USE_ECUM) += EcuM_Cfg.o\r
+obj-$(USE_ECUM) += EcuM_Callout_template.o\r
+inc-$(USE_ECUM) += $(ROOTDIR)/system/EcuM\r
+vpath-$(USE_ECUM) += $(ROOTDIR)/system/EcuM\r
\r
# Gpt\r
obj-$(USE_GPT) += Gpt.o\r
obj-$(USE_ADC) += Adc_Cfg.o\r
\r
# Include the kernel\r
+ifneq ($(USE_KERNEL),)\r
include $(ROOTDIR)/system/kernel/makefile\r
+endif\r
\r
# Spi\r
obj-$(USE_SPI) += Spi.o\r
obj-$(USE_PWM) += Pwm_Cfg.o\r
\r
# Misc\r
-obj-y += Det.o\r
+obj-$(USE_DET) += Det.o\r
\r
# Lin\r
obj-$(USE_LIN) += Lin_PBcfg.o\r
vpath-$(USE_DCM) += $(ROOTDIR)/diagnostic/Dcm\r
\r
\r
-\r
-#tests\r
-#obj-y += RunTests.o\r
-#obj-$(USE_CAN) += can_test.o\r
-#obj-$(USE_DIO) += dio_test.o\r
-#obj-$(USE_PORT) += port_test.o\r
-#obj-$(USE_CANIF) += canif_test.o\r
-#obj-$(USE_FLS) += fls_test.o\r
-#obj-y += mahi_test.o\r
-#obj-$(USE_GPT) += gpt_test.o\r
-#obj-$(USE_SPI) += spi_test.o\r
-#obj-$(USE_EEP) += eep_test.o\r
-#obj-y += det_test.o\r
-#obj-$(USE_MCU) += mcu_test.o\r
-#obj-$(USE_FLS_SST25XX) += xfls_test.o\r
-#obj-y += lin_test.o\r
-#obj-$(USE_PDUR) += pdur_test.o\r
-#obj-$(USE_COM) += com_test.o\r
-\r
-#inc-$(USE_TESTS) += $(ROOTDIR)/embunit/embUnit\r
-#inc-$(USE_TESTS) += $(ROOTDIR)/embunit/textui\r
-#inc-$(USE_TESTS) += $(ROOTDIR)/embunit\r
-\r
-#libitem-$(USE_TESTS) += $(ROOTDIR)/embunit/embUnit/obj_$(ARCH)/libembunit.a\r
-#libitem-$(USE_TESTS) += $(ROOTDIR)/embunit/textui/obj_$(ARCH)/libtextui.a\r
-\r
-\r
-\r
# Common\r
-obj-y += xtoa.o\r
-obj-y += arc.o\r
+obj-$(USE_COMMON) += xtoa.o\r
+obj-$(USE_COMMON) += arc.o\r
#obj-y += malloc.o\r
obj-$(USE_RAMLOG) += ramlog.o\r
\r
\r
VPATH += $(ROOTDIR)/common\r
\r
-obj-y += newlib_port.o\r
+obj-$(USE_NEWLIB) += newlib_port.o\r
obj-y += $(obj-y-y)\r
\r
vpath-y += $(ROOTDIR)/$(ARCH_PATH-y)/kernel\r
-
-# ARCH defines
-ARCH=arm_cm3
-ARCH_FAM=arm
-ARCH_MCU=arm_cm3
-
-# CFG (y/n) macros
-CFG=ARM ARM_CM3 BRD_ET_STM32_STAMP STM32_CL
-
-# What buildable modules does this board have,
-# default or private
-MOD_AVAIL=KERNEL MCU PWM ADC ARM_ITM_TERM DEM DCM IOHWAB
-#T32_TERM SIMPLE_PRINTF RAMLOG
-#
-
-# Needed by us
-MOD_USE=KERNEL MCU
-
-# Use little heap
-def-y += HEAPSIZE=4000
-def-y += STM32F10X_CL
-
+\r
+# ARCH defines\r
+ARCH=arm_cm3\r
+ARCH_FAM=arm\r
+ARCH_MCU=arm_cm3\r
+\r
+# CFG (y/n) macros\r
+CFG=ARM ARM_CM3 BRD_ET_STM32_STAMP STM32_CL\r
+\r
+# What buildable modules does this board have, \r
+# default or private\r
+MOD_AVAIL=KERNEL MCU ECUM PWM ADC SIMPLE_PRINTF ARM_ITM_TERM RAMLOG DEM IOHWAB\r
+MOD_AVAIL+=COMMON\r
+#T32_TERM SIMPLE_PRINTF RAMLOG\r
+#\r
+\r
+# Needed by us\r
+MOD_USE=KERNEL MCU\r
+\r
+# Use little heap\r
+def-y += HEAPSIZE=4000\r
+def-y += STM32F10X_CL\r
+\r
# What buildable modules does this board have,
# default or private (These become MOD_XXX=y )
-MOD_AVAIL=KERNEL MCU GPT
+MOD_AVAIL=KERNEL MCU ECUM T32_TERM WINIDEA_TERM SIMPLE_PRINTF GPT RAMLOG
# Needed by us (These become USE_XXX=y and def-y += USE_XXX )
MOD_USE=KERNEL MCU
+# Extra defines
+def-y += HEAPSIZE=400
--- /dev/null
+
+# ARCH defines
+#ARCH=mpc55xx
+#ARCH_FAM=ppc
+#ARCH_MCU=mpc5516
+
+# CFG (y/n) macros
+CFG= BRD_LINUX
+
+# What buildable modules does this board have,
+# default or private
+MOD_AVAIL+=COM
+
+# Needed by us
+MOD_USE=
-
-# ARCH defines
-ARCH=mpc55xx
-ARCH_FAM=ppc
-ARCH_MCU=mpc5516
-
-# CFG (y/n) macros
-CFG=PPC BOOKE E200Z1 MPC55XX MPC5516 BRD_MPC5516IT
-
-# What buildable modules does this board have,
-# default or private
-MOD_AVAIL+=KERNEL MCU GPT LIN CAN CANIF CANTP PORT DIO WDG WDGM PWM COM ADC DMA DEM DCM PDUR IOHWAB
-
-# Needed by us
-MOD_USE=KERNEL MCU
+\r
+# ARCH defines\r
+ARCH=mpc55xx\r
+ARCH_FAM=ppc\r
+ARCH_MCU=mpc5516\r
+\r
+# CFG (y/n) macros\r
+CFG=PPC BOOKE E200Z1 MPC55XX MPC5516 BRD_MPC5516IT\r
+\r
+# What buildable modules does this board have, \r
+# default or private\r
+MOD_AVAIL+=KERNEL RAMLOG MCU ECUM GPT LIN CAN CANIF CANTP PORT DIO WDG WDGM PWM COM ADC DMA DEM DCM PDUR IOHWAB\r
+\r
+# Needed by us\r
+MOD_USE=KERNEL MCU\r
-
-# ARCH defines
-ARCH=mpc55xx
-ARCH_FAM=ppc
-ARCH_MCU=mpc5516
-
-# CFG (y/n) macros
-CFG=PPC BOOKE E200Z1 MPC55XX MPC5516 BRD_MPC551XSIM SIMULATOR
-
-# What buildable modules does this board have,
-# default or private
-MOD_AVAIL=KERNEL MCU GPT LIN CAN WDG WDGM DEM DCM IOHWAB
-
-# Needed by us
-MOD_USE=KERNEL MCU
+\r
+# ARCH defines\r
+ARCH=mpc55xx\r
+ARCH_FAM=ppc\r
+ARCH_MCU=mpc5516\r
+\r
+# CFG (y/n) macros\r
+CFG=PPC BOOKE E200Z1 MPC55XX MPC5516 BRD_MPC551XSIM SIMULATOR\r
+\r
+# What buildable modules does this board have, \r
+# default or private\r
+MOD_AVAIL=KERNEL RAMLOG MCU ECUM GPT LIN CAN WDG WDGM DEM DCM IOHWAB\r
+MOD_AVAIL+=COMMON NEWLIB DET\r
+\r
+# Needed by us\r
+#MOD_USE=KERNEL MCU COMMON NEWLIB DET\r
-
-# ARCH defines
-ARCH=mpc55xx
-ARCH_FAM=ppc
-ARCH_MCU=mpc5554
-
-# CFG (y/n) macros
-CFG=PPC BOOKE SPE E200Z6 MPC55XX MPC5554 BRD_MPC5554SIM SIMULATOR
-
-# What buildable modules does this board have,
-# default or private
-MOD_AVAIL+=KERNEL MCU GPT LIN CAN COM WDG WDGM DEM DCM IOHWAB
-
-# Needed by kernel
-MOD_USE+=KERNEL MCU
+\r
+# ARCH defines\r
+ARCH=mpc55xx\r
+ARCH_FAM=ppc\r
+ARCH_MCU=mpc5554\r
+\r
+# CFG (y/n) macros\r
+CFG=PPC BOOKE SPE E200Z6 MPC55XX MPC5554 BRD_MPC5554SIM SIMULATOR\r
+\r
+# What buildable modules does this board have, \r
+# default or private\r
+MOD_AVAIL+=KERNEL RAMLOG MCU ECUM GPT LIN CAN COM WDG WDGM T32_TERM WINIDEA_TERM SIMPLE_PRINTF DEM DCM IOHWAB\r
+\r
+# Needed by kernel\r
+MOD_USE+=KERNEL MCU\r
-
-# ARCH defines
-ARCH=mpc55xx
-ARCH_FAM=ppc
-ARCH_MCU=mpc5567
-
-# CFG (y/n) macros
-CFG=PPC BOOKE E200Z6 MPC55XX MPC5567 BRD_MPC5567QRTECH SPE
-
-# What buildable modules does this board have,
-# default or private
-MOD_AVAIL=KERNEL MCU WDG WDGM PORT DIO WDG WDGM PWM CAN CANIF COM ADC DMA DEM DCM CANTP PDUR IOHWAB
-
-# Needed by us
-MOD_USE=KERNEL MCU
-
-
+\r
+# ARCH defines\r
+ARCH=mpc55xx\r
+ARCH_FAM=ppc\r
+ARCH_MCU=mpc5567\r
+\r
+# CFG (y/n) macros\r
+CFG=PPC BOOKE E200Z6 MPC55XX MPC5567 BRD_MPC5567QRTECH SPE\r
+\r
+# What buildable modules does this board have, \r
+# default or private\r
+MOD_AVAIL=KERNEL RAMLOG MCU ECUM WDG WDGM PORT DIO WDG WDGM T32_TERM WINIDEA_TERM PWM CAN CANIF COM ADC DMA SIMPLE_PRINTF DEM PDUR IOHWAB\r
+\r
+# Needed by us\r
+MOD_USE=KERNEL MCU\r
+\r
+\r
# What buildable modules does this board have,
# default or private
-MOD_AVAIL=KERNEL RAMLOG MCU WDG WDGM PORT DIO WDG WDGM PWM CAN CANIF COM ADC DMA
+MOD_AVAIL=KERNEL RAMLOG MCU ECUM WDG WDGM PORT DIO WDG WDGM T32_TERM WINIDEA_TERM PWM CAN CANIF COM ADC DMA SIMPLE_PRINTF
# Needed by us
MOD_USE=KERNEL MCU
\r
# What buildable modules does this board have, \r
# default or private\r
-MOD_AVAIL=KERNEL MCU PWM ADC DIO PORT FLS CAN COM CAN CANIF SIMPLE_PRINTF ARM_ITM_TERM RAMLOG DEM IOHWAB\r
+MOD_AVAIL=KERNEL MCU ECUM PWM ADC SIMPLE_PRINTF ARM_ITM_TERM RAMLOG DEM IOHWAB\r
\r
#\r
# Modules needed by us\r
\r
# What buildable modules does this board have, \r
# default or private\r
-MOD_AVAIL=KERNEL MCU PWM ADC DIO PORT FLS CAN COM CAN CANIF SIMPLE_PRINTF ARM_ITM_TERM RAMLOG DEM IOHWAB\r
+MOD_AVAIL=KERNEL MCU ECUM PWM ADC DIO PORT FLS CAN COM CAN CANIF SIMPLE_PRINTF ARM_ITM_TERM RAMLOG DEM IOHWAB\r
\r
#\r
# Modules needed by us\r
\r
-MOD_USE+=KERNEL MCU PORT PWM\r
-\r
-SELECT_CONSOLE = RAMLOG\r
-SELECT_OS_CONSOLE = RAMLOG\r
+MOD_USE+=KERNEL MCU ECUM NEWLIB COMMON DET PORT PWM WINIDEA_TERM SIMPLE_PRINTF RAMLOG\r
--include ../config/*.mk\r
--include ../config/$(BOARDDIR)/*.mk\r
\r
-MOD_USE+=KERNEL MCU\r
-\r
-SELECT_CONSOLE = RAMLOG\r
-SELECT_OS_CONSOLE = RAMLOG\r
+MOD_USE+=KERNEL MCU ECUM NEWLIB COMMON DET PORT COM CAN CANIF WINIDEA_TERM PWM SIMPLE_PRINTF RAMLOG\r
\r
-MOD_USE+=KERNEL MCU\r
+MOD_USE+=KERNEL MCU ECUM NEWLIB COMMON DET T32_TERM RAMLOG SIMPLE_PRINTF RAMLOG\r
\r
-SELECT_CONSOLE = RAMLOG\r
-SELECT_OS_CONSOLE = RAMLOG\r
-\r
-def-y += CFG_RAMLOG_SIZE=1024\r
def-y += HEAPSIZE=1400
\ No newline at end of file
MOD_USE+=KERNEL MCU ADC DMA \r
\r
SELECT_CONSOLE = RAMLOG\r
-SELECT_OS_CONSOLE = RAMLOG\r
+SELECT_OS_CONSOLE = RAMLOG
\ No newline at end of file
OSServiceId_GetTaskState,\r
} OsServiceIdType;;\r
\r
-typedef struct os_error_s {\r
+typedef struct OsError {\r
OsServiceIdType serviceId;\r
uint32_t param1;\r
uint32_t param2;\r
uint32_t param3;\r
-} os_error_t;\r
+} OsErrorType;\r
\r
-extern os_error_t os_error;\r
+extern OsErrorType os_error;\r
\r
// TODO: Add the service id to all OS service methods.\r
static inline OsServiceIdType OSErrorGetServiceId(void) {\r
return os_error.serviceId;\r
}\r
\r
-extern os_error_t os_error;\r
+extern OsErrorType os_error;\r
\r
#define OSError_ActivateTask_TaskID ((TaskType) os_error.param1)\r
#define OSError_ChainTask_TaskID ((TaskType) os_error.param1)\r
#endif
}
\r
-os_error_t os_error;\r
+OsErrorType os_error;\r
\r
//-------------------------------------------------------------------\r
\r
\r
# Check for CROSS_COMPILE\r
ifneq ($(cmd_cmd_goals),)\r
-ifndef CROSS_COMPILE\r
- $(error CROSS_COMPILE not defined)\r
-endif\r
+#ifndef CROSS_COMPILE\r
+# $(error CROSS_COMPILE not defined)\r
+#endif\r
\r
# Check that the board actually exist\r
ifdef BOARDDIR\r
@find . -type f -name *.a | xargs rm -rf\r
echo Done!\r
\r
+config: $(dir_cmd_goals) \r
+ \r
clean: $(dir_cmd_goals)\r
@echo "Clean:"\r
@echo " Removing objectfiles and libs for ARCH=$(ARCH)"\r
@echo " >> OBJCOPY $@" \r
$(Q)$(CROSS_COMPILE)objcopy -O ihex $< $@\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_MC912DG128A\r
@$(CROSS_COMPILE)objdump -h $@ | gawk -f $(ROOTDIR)/scripts/hc1x_memory.awk\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
+endif\r
endif\r
@echo " >>>>>>> DONE <<<<<<<<<"\r
\r
-\r
+ \r
$(size-exe-y): $(build-exe-y)\r
$(Q)$(OBJDUMP) -h $<\r
@echo TODO: Parse the file....\r
\r
OS_STD_END_3(OSServiceId_SetRelAlarm,AlarmId, Increment, Cycle);\r
}\r
+
+/**
+ * The system service occupies the alarm <AlarmID> element.
+ * When <start> ticks are reached, the task assigned to the alarm
+ *
+ * If the absolute value <start> is very close to the current counter
+ * value, the alarm may expire, and the task may become ready or
+ * the alarm-callback may be called before the system service
+ * returns to the user.
+ * If the absolute value <start> already was reached before the
+ * system call, the alarm shall only expire when the absolute value
+ * <start> is reached again, i.e. after the next overrun of the
+ * counter.
+ *
+ * If <cycle> is unequal zero, the alarm element is logged on again
+ * immediately after expiry with the relative value <cycle>.
+ *
+ * The alarm <AlarmID> shall not already be in use.
+ * To change values of alarms already in use the alarm shall be
+ * cancelled first.
+ *
+ * If the alarm is already in use, this call will be ignored and the
+ * error E_OS_STATE is returned.
+ *
+ * Allowed on task level and in ISR, but not in hook routines.
+ *
+ * @param AlarmId
+ * @param Start
+ * @param Cycle
+ * @return
+ */
\r
StatusType SetAbsAlarm(AlarmType AlarmId, TickType Start, TickType Cycle) {\r
\r
\r
Irq_Save(flags);\r
if( aPtr->active == 1 ) {\r
- rv = E_OS_STATE;\r
+ rv = E_OS_STATE;
+ Irq_Restore(flags);\r
goto err;\r
}\r
\r
* Initialize alarms and schedule-tables for the counters
*/
void Os_CounterInit( void ) {
- OsCounterType *counter;
- OsAlarmType *alarm_obj;
- OsSchTblType *sched_obj;
- /* Create a list from the counter to the alarms */
- for(int i=0; i < Os_CfgGetCounterCnt() ; i++) {
- counter = Os_CfgGetCounter(i);
- // Alarms
- SLIST_INIT(&counter->alarm_head);
- for(int j=0; j < Os_CfgGetAlarmCnt(); j++ ) {
- alarm_obj = Os_CfgGetAlarmObj(j);
- // Add the alarms
- SLIST_INSERT_HEAD(&counter->alarm_head,alarm_obj, alarm_list);
- }
- // Schedule tables
- SLIST_INIT(&counter->sched_head);
- for(int j=0; j < Os_CfgGetSchedCnt(); j++ ) {
- sched_obj = Os_CfgGetSched(j);
- // Add the alarms
- SLIST_INSERT_HEAD(&counter->sched_head,
- sched_obj,
- sched_list);
- }
+ OsCounterType *cPtr;
+ OsAlarmType *aPtr;
+ OsSchTblType *sPtr;
+
+ /* Add the alarms to counters */
+ for(int i=0; i < Os_CfgGetAlarmCnt(); i++ ) {
+ aPtr = Os_CfgGetAlarmObj(i);
+ cPtr = aPtr->counter;
+ SLIST_INSERT_HEAD(&cPtr->alarm_head,aPtr, alarm_list);
+ }
+ /* Add the schedule tables to counters */
+ for(int i=0; i < Os_CfgGetSchedCnt(); i++ ) {
+ sPtr = Os_CfgGetSched(i);
+ cPtr = sPtr->counter;
+ SLIST_INSERT_HEAD(&cPtr->sched_head, sPtr, sched_list);
}
}
\r
\r
OS_STD_END_2(OSServiceId_SetEvent,TaskID, Mask);\r
}\r
-\r
+
+
+/**
+ * This service returns the current state of all event bits of the task
+ * <TaskID>, not the events that the task is waiting for.
+ * The service may be called from interrupt service routines, task
+ * level and some hook routines (see Figure 12-1).
+ * The current status of the event mask of task <TaskID> is copied
+ * to <Event>.
+ *
+ * @param TaskId Task whose event mask is to be returned.
+ * @param Mask Reference to the memory of the return data.
+ * @return
+ */\r
StatusType GetEvent( TaskType TaskId, EventMaskRefType Mask) {\r
\r
OsPcbType *dest_pcb;\r
OS_STD_END_2(OSServiceId_GetEvent,TaskId, Mask);\r
}\r
\r
-\r
+
+/**
+ * The events of the extended task calling ClearEvent are cleared
+ * according to the event mask <Mask>.
+ *
+ *
+ * @param Mask
+ * @return
+ */\r
StatusType ClearEvent( EventMaskType Mask) {\r
StatusType rv = E_OK;\r
OsPcbType *pcb;
/** @req OS408 */
for(iter=0; iter < SA_LIST_CNT(&sTblPtr->expirePointList) ; iter++) {
delta = SA_LIST_GET(&sTblPtr->expirePointList,iter)->offset - delta;
- assert( delta >= minCycle );
+ /* initial offset may be zero (OS443) */
+ if(iter!=0) {
+ assert( delta >= minCycle );
+ }
assert( delta <= maxValue );
}
\r
# Figure out the most of the modules to use.\r
OPTIMAL_USE = T32_TERM SIMPLE_PRINTF RAMLOG\r
-MOD_USE+=KERNEL MCU $(filter $(OPTIMAL_USE),$(MOD_AVAIL))\r
+MOD_USE+=KERNEL MCU COMMON NEWLIB DET ECUM $(filter $(OPTIMAL_USE),$(MOD_AVAIL))\r
$(warning $(MOD_USE)) \r
#MOD_USE+=KERNEL MCU T32_TERM SIMPLE_PRINTF RAMLOG\r
\r
*
*
* Generated by Arctic Studio (http://arccore.com)
-* on Wed May 05 23:09:13 CEST 2010
+* on Tue Jun 08 08:30:59 CEST 2010
*/
\r
*
*
* Generated by Arctic Studio (http://arccore.com)
-* on Wed May 05 23:09:13 CEST 2010
+* on Tue Jun 08 08:30:59 CEST 2010
*/
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
* -------------------------------- Arctic Core ------------------------------*/
-\r
+/*
+ * Contains mostly macros for the test-system. Most macro's have the same
+ * name as in embUnit, to make it easier to use.
+ *
+ */
+
#ifndef OS_TEST_H_\r
#define OS_TEST_H_\r
\r
#include "test_framework.h"
#include "debug.h"\r
\r
-typedef void (*test_func_t)( void );\r
+typedef void (*test_func_t)( void );
\r
+
+#define TEST_INIT() printf("Test init\n");\r
#define TEST_FAIL(_text) test_fail((_text), __FILE__, __LINE__, __FUNCTION__ )\r
-#define TEST_OK() test_ok();\r
+#define TEST_OK() test_ok();
#define TEST_ASSERT(_cond) if(!(_cond)) { TEST_FAIL(#_cond); }
+/* Start to run a test */
#define TEST_RUN() printf("Running test %d\n",test_nr);
+/* Indicate that a test is done */
+//#define TEST_DONE()
+#define TEST_START(_str,_nr) testStart(_str,_nr)
+#define TEST_NEXT(_str,_next_nr) testEnd(); testStart(_str,_next_nr);
\r
\r
extern int test_suite;\r
--- /dev/null
+/*
+* Configuration of module Os (Os_Cfg.c)
+*
+* Created by:
+* Configured for (MCU): MPC551x
+*
+* Module editor vendor: ArcCore
+* Module editor version: 2.0.7
+*
+*
+* Generated by Arctic Studio (http://arccore.com)
+* on Tue Jun 08 20:51:20 CEST 2010
+*/
+
+ \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 = 1000;\r
+\r
+\r
+// ############################### DEBUG OUTPUT #############################\r
+uint32 os_dbg_mask = D_RESOURCE |D_SCHTBL |D_EVENT |D_TASK |D_ALARM;\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
+ 1,\r
+ 0),\r
+ GEN_COUNTER( COUNTER_ID_soft_1,\r
+ "soft_1",\r
+ COUNTER_TYPE_SOFT,\r
+ COUNTER_UNIT_NANO,\r
+ 65535,\r
+ 1,\r
+ 1,\r
+ 0),\r
+ GEN_COUNTER( COUNTER_ID_soft_2,\r
+ "soft_2",\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
+\r
+GEN_ALARM_HEAD {\r
+ GEN_ALARM( ALARM_ID_c_soft_1_inc_counter_2,\r
+ "c_soft_1_inc_cou",\r
+ COUNTER_ID_soft_1,\r
+ NULL,\r
+ ALARM_ACTION_INCREMENTCOUNTER,\r
+ NULL,\r
+ NULL,\r
+ COUNTER_ID_soft_2 ),\r
+ GEN_ALARM( ALARM_ID_c_soft_1_setevent_etask_m,\r
+ "c_soft_1_seteven",\r
+ COUNTER_ID_soft_1,\r
+ NULL,\r
+ ALARM_ACTION_SETEVENT,\r
+ TASK_ID_etask_sup_m,\r
+ EVENT_MASK_notif,\r
+ NULL ),\r
+ GEN_ALARM( ALARM_ID_c_sys_1_setevent_etask_m,\r
+ "c_sys_1_setevent",\r
+ COUNTER_ID_OsTick,\r
+ NULL,\r
+ ALARM_ACTION_SETEVENT,\r
+ TASK_ID_etask_sup_m,\r
+ EVENT_MASK_notif,\r
+ NULL ),\r
+ GEN_ALARM( ALARM_ID_c_sys_activate_btask_h,\r
+ "c_sys_activate_b",\r
+ COUNTER_ID_OsTick,\r
+ NULL,\r
+ ALARM_ACTION_ACTIVATETASK,\r
+ TASK_ID_btask_sup_h,\r
+ NULL,\r
+ NULL ),\r
+};\r
+\r
+// ################################ RESOURCES ###############################\r
+GEN_RESOURCE_HEAD {\r
+ GEN_RESOURCE(\r
+ RES_ID_int_1,\r
+ RESOURCE_TYPE_INTERNAL,\r
+ 0\r
+ ),\r
+ GEN_RESOURCE(\r
+ RES_ID_std_prio_3,\r
+ RESOURCE_TYPE_STANDARD,\r
+ 0\r
+ ),\r
+ GEN_RESOURCE(\r
+ RES_ID_std_prio_4,\r
+ RESOURCE_TYPE_STANDARD,\r
+ 0\r
+ ),\r
+ GEN_RESOURCE(\r
+ RES_ID_std_prio_5,\r
+ RESOURCE_TYPE_STANDARD,\r
+ 0\r
+ ),\r
+};\r
+\r
+// ############################## STACKS (TASKS) ############################\r
+DECLARE_STACK(OsIdle,OS_OSIDLE_STACK_SIZE);\r
+DECLARE_STACK(btask_sup_h,2048);\r
+DECLARE_STACK(btask_sup_l,2048);\r
+DECLARE_STACK(btask_sup_m,2048);\r
+DECLARE_STACK(etask_master,2048);\r
+DECLARE_STACK(etask_sup_h,2048);\r
+DECLARE_STACK(etask_sup_l,2048);\r
+DECLARE_STACK(etask_sup_m,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
+ btask_sup_h,\r
+ 6,\r
+ FULL,\r
+ FALSE,\r
+ NULL,\r
+ RES_MASK_std_prio_3 | RES_MASK_std_prio_4 | RES_MASK_std_prio_5 | 0,\r
+ 1\r
+ ),\r
+ \r
+ GEN_BTASK(\r
+ btask_sup_l,\r
+ 2,\r
+ FULL,\r
+ FALSE,\r
+ NULL,\r
+ RES_MASK_std_prio_3 | RES_MASK_std_prio_4 | RES_MASK_std_prio_5 | 0,\r
+ 1\r
+ ),\r
+ \r
+ GEN_BTASK(\r
+ btask_sup_m,\r
+ 4,\r
+ FULL,\r
+ FALSE,\r
+ NULL,\r
+ RES_MASK_std_prio_3 | RES_MASK_std_prio_4 | RES_MASK_std_prio_5 | 0,\r
+ 1\r
+ ),\r
+ \r
+ GEN_ETASK(\r
+ etask_master,\r
+ 1,\r
+ FULL,\r
+ TRUE,\r
+ NULL,\r
+ 0\r
+ ),\r
+ \r
+ \r
+ GEN_ETASK(\r
+ etask_sup_h,\r
+ 6,\r
+ FULL,\r
+ FALSE,\r
+ NULL,\r
+ RES_MASK_std_prio_3 | RES_MASK_std_prio_4 | RES_MASK_std_prio_5 | 0\r
+ ),\r
+ \r
+ \r
+ GEN_ETASK(\r
+ etask_sup_l,\r
+ 2,\r
+ FULL,\r
+ FALSE,\r
+ NULL,\r
+ RES_MASK_std_prio_3 | RES_MASK_std_prio_4 | RES_MASK_std_prio_5 | 0\r
+ ),\r
+ \r
+ \r
+ GEN_ETASK(\r
+ etask_sup_m,\r
+ 4,\r
+ FULL,\r
+ FALSE,\r
+ NULL,\r
+ RES_MASK_std_prio_3 | RES_MASK_std_prio_4 | RES_MASK_std_prio_5 | 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 data 0\r
+\r
+GEN_SCHTBL_TASK_LIST_HEAD( 0, 5 ) { \r
+ \r
+ TASK_ID_etask_sup_m,\r
+ \r
+};\r
+\r
+\r
+\r
+\r
+GEN_SCHTBL_EVENT_LIST_HEAD( 0, 7 ) {\r
+ \r
+ { \r
+ EVENT_MASK_notif, \r
+ TASK_ID_etask_sup_m \r
+ },\r
+ \r
+};\r
+\r
+\r
+GEN_SCHTBL_TASK_LIST_HEAD( 0, 11 ) { \r
+ \r
+ TASK_ID_etask_sup_m,\r
+ \r
+};\r
+\r
+GEN_SCHTBL_EVENT_LIST_HEAD( 0, 11 ) {\r
+ \r
+ { \r
+ EVENT_MASK_notif, \r
+ TASK_ID_etask_sup_m \r
+ },\r
+ \r
+};\r
+\r
+\r
+GEN_SCHTBL_EXPIRY_POINT_HEAD( 0 ) {\r
+ GEN_SCHTBL_EXPIRY_POINT_W_TASK(0, 5),
+ GEN_SCHTBL_EXPIRY_POINT_W_EVENT(0, 7),
+ GEN_SCHTBL_EXPIRY_POINT_W_TASK_EVENT(0, 11),
+ \r
+};\r
+\r
+\r
+// Table data 1\r
+\r
+GEN_SCHTBL_TASK_LIST_HEAD( 1, 2 ) { \r
+ \r
+ TASK_ID_etask_sup_m,\r
+ \r
+};\r
+\r
+\r
+\r
+GEN_SCHTBL_EXPIRY_POINT_HEAD( 1 ) {\r
+ GEN_SCHTBL_EXPIRY_POINT_W_TASK(1, 2),
+ \r
+};\r
+\r
+\r
+// Table heads\r
+GEN_SCHTBL_HEAD {\r
+ GEN_SCHEDULETABLE(\r
+ 0,\r
+ "0",\r
+ COUNTER_ID_soft_1,\r
+ SINGLE_SHOT,\r
+ 15,\r
+ NULL\r
+ ),\r
+ GEN_SCHEDULETABLE(\r
+ 1,\r
+ "1",\r
+ COUNTER_ID_soft_1,\r
+ SINGLE_SHOT,\r
+ 5,\r
+ NULL\r
+ ),\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
--- /dev/null
+/*
+* Configuration of module Os (Os_Cfg.h)
+*
+* Created by:
+* Configured for (MCU): MPC551x
+*
+* Module editor vendor: ArcCore
+* Module editor version: 2.0.7
+*
+*
+* Generated by Arctic Studio (http://arccore.com)
+* on Tue Jun 08 20:51:20 CEST 2010
+*/
+
+
+#if (OS_SW_MAJOR_VERSION != 2)
+#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_c_soft_1_inc_counter_2 0\r
+#define ALARM_ID_c_soft_1_setevent_etask_m 1\r
+#define ALARM_ID_c_sys_1_setevent_etask_m 2\r
+#define ALARM_ID_c_sys_activate_btask_h 3\r
+\r
+// Counter Id's\r
+#define COUNTER_ID_OsTick 0\r
+#define COUNTER_ID_soft_1 1\r
+#define COUNTER_ID_soft_2 2\r
+\r
+// Counter macros\r
+#define OSMAXALLOWEDVALUE_OsTick 65535\r
+#define OSMAXALLOWEDVALUE_soft_1 65535\r
+#define OSMAXALLOWEDVALUE_soft_2 65535\r
+\r
+\r
+// Event masks\r
+#define EVENT_MASK_kill 32768\r
+#define EVENT_MASK_notif 1\r
+\r
+// Isr Id's\r
+\r
+// Resource Id's\r
+#define RES_ID_int_1 0\r
+#define RES_ID_std_prio_3 1\r
+#define RES_ID_std_prio_4 2\r
+#define RES_ID_std_prio_5 3\r
+\r
+// Linked resource id's\r
+\r
+// Resource masks\r
+#define RES_MASK_int_1 (1 << 0)\r
+#define RES_MASK_std_prio_3 (1 << 1)\r
+#define RES_MASK_std_prio_4 (1 << 2)\r
+#define RES_MASK_std_prio_5 (1 << 3)\r
+\r
+// Task Id's\r
+#define TASK_ID_OsIdle 0\r
+#define TASK_ID_btask_sup_h 1\r
+#define TASK_ID_btask_sup_l 2\r
+#define TASK_ID_btask_sup_m 3\r
+#define TASK_ID_etask_master 4\r
+#define TASK_ID_etask_sup_h 5\r
+#define TASK_ID_etask_sup_l 6\r
+#define TASK_ID_etask_sup_m 7\r
+\r
+// Task entry points\r
+void OsIdle( void );\r
+void btask_sup_h( void );\r
+void btask_sup_l( void );\r
+void btask_sup_m( void );\r
+void etask_master( void );\r
+void etask_sup_h( void );\r
+void etask_sup_l( void );\r
+void etask_sup_m( void );\r
+\r
+// Schedule table id's\r
+#define SCHTBL_ID_0 0\r
+#define SCHTBL_ID_1 1\r
+\r
+// Stack size\r
+#define OS_INTERRUPT_STACK_SIZE 2048\r
+#define OS_OSIDLE_STACK_SIZE 512\r
+\r
+#define OS_ALARM_CNT 4 \r
+#define OS_TASK_CNT 8\r
+#define OS_SCHTBL_CNT 2\r
+#define OS_COUNTER_CNT 3\r
+#define OS_EVENTS_CNT 2\r
+#define OS_ISRS_CNT 0\r
+#define OS_RESOURCE_CNT 4\r
+#define OS_LINKED_RESOURCE_CNT 0\r
+\r
+#define CFG_OS_DEBUG STD_ON\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
--- /dev/null
+\r
+# Figure out the most of the modules to use.\r
+OPTIMAL_USE = T32_TERM SIMPLE_PRINTF RAMLOG\r
+MOD_USE+=KERNEL MCU COMMON NEWLIB DET ECUM $(filter $(OPTIMAL_USE),$(MOD_AVAIL))\r
+$(warning $(MOD_USE)) \r
+#MOD_USE+=KERNEL MCU T32_TERM SIMPLE_PRINTF RAMLOG\r
+\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<AUTOSAR xmlns="http://autosar.org/3.1.2"><TOP-LEVEL-PACKAGES>\r
+ <AR-PACKAGE UUID="822fb2e1-4171-4ec3-812a-b58265eb646e">\r
+ <SHORT-NAME>testsystem</SHORT-NAME>\r
+ <CATEGORY>EcuConfiguration</CATEGORY>\r
+ <ADMIN-DATA>\r
+ <DOC-REVISIONS>\r
+ <DOC-REVISION>\r
+ <ISSUED-BY/>\r
+ </DOC-REVISION>\r
+ </DOC-REVISIONS>\r
+ </ADMIN-DATA>\r
+ <ELEMENTS>\r
+ <ECU-CONFIGURATION UUID="adececfa-6614-4f2a-bc3b-0de7440970a7">\r
+ <SHORT-NAME>config_01</SHORT-NAME>\r
+ <ADMIN-DATA>\r
+ <DOC-REVISIONS>\r
+ <DOC-REVISION>\r
+ <REVISION-LABEL>Rev</REVISION-LABEL>\r
+ </DOC-REVISION>\r
+ </DOC-REVISIONS>\r
+ <SDGS>\r
+ <SDG GID="Arccore::EcuOptions">\r
+ <SD GID="MCU">MPC551x</SD>\r
+ <SD GID="GENDIR">/arc/system/kernel/testsystem/config</SD>\r
+ </SDG>\r
+ </SDGS>\r
+ </ADMIN-DATA>\r
+ <MODULE-REFS>\r
+ <MODULE-REF DEST="MODULE-CONFIGURATION">/testsystem/Os</MODULE-REF>\r
+ </MODULE-REFS>\r
+ </ECU-CONFIGURATION>\r
+ <MODULE-CONFIGURATION UUID="9810a6d9-2cc9-4b23-a969-e4662fdc4a40">\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.4</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="c28c1e41-ab85-44af-8c08-8bfe14a614d8">\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/ArcCoreOsDebugResource</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
+ <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/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
+ </PARAMETER-VALUES>\r
+ <SUB-CONTAINERS>\r
+ <CONTAINER UUID="225d4007-aaa5-4862-9c24-1c00c1418e51">\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="18ffb863-c03b-485d-9d2f-6f3516d63901">\r
+ <SHORT-NAME>int_1</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsResource</DEFINITION-REF>\r
+ <PARAMETER-VALUES>\r
+ <ENUMERATION-VALUE>\r
+ <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsResource/OsResourceProperty</DEFINITION-REF>\r
+ <VALUE>INTERNAL</VALUE>\r
+ </ENUMERATION-VALUE>\r
+ </PARAMETER-VALUES>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="86681234-fe16-4039-82aa-b7d47e2e38ae">\r
+ <SHORT-NAME>etask_master</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="5f49198a-5604-45b0-b4ea-e5a711e5416f">\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="1f1560f5-2306-4238-a7a4-50d5bdc6a359">\r
+ <SHORT-NAME>etask_sup_l</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
+ <REFERENCE-VALUES>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_3</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_4</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_5</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="c5691264-811a-4714-8c56-37affb1ba27c">\r
+ <SHORT-NAME>etask_sup_m</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>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
+ <REFERENCE-VALUES>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_3</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_4</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_5</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="6d2cdf4d-467d-43a0-a7b6-5f23a73fbf12">\r
+ <SHORT-NAME>etask_sup_h</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>6</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
+ <REFERENCE-VALUES>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_3</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_4</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_5</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="f3adef46-f5f6-4707-af6e-a771ffec9385">\r
+ <SHORT-NAME>btask_sup_l</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
+ <REFERENCE-VALUES>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_3</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_4</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_5</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="8d1d4b20-17b3-4b75-947f-8f844ad34a13">\r
+ <SHORT-NAME>btask_sup_m</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>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
+ <REFERENCE-VALUES>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_3</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_4</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_5</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="7a61a623-77b7-49e9-896f-375ca12b1441">\r
+ <SHORT-NAME>btask_sup_h</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>6</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
+ <REFERENCE-VALUES>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_3</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_4</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsTask/OsTaskResourceRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/std_prio_5</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="a05049bd-092b-4199-9de0-b0770a57c029">\r
+ <SHORT-NAME>std_prio_3</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsResource</DEFINITION-REF>\r
+ <PARAMETER-VALUES>\r
+ <ENUMERATION-VALUE>\r
+ <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsResource/OsResourceProperty</DEFINITION-REF>\r
+ <VALUE>STANDARD</VALUE>\r
+ </ENUMERATION-VALUE>\r
+ </PARAMETER-VALUES>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="a9b777b9-66df-48ee-9cc2-9d91e70d769b">\r
+ <SHORT-NAME>std_prio_4</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsResource</DEFINITION-REF>\r
+ <PARAMETER-VALUES>\r
+ <ENUMERATION-VALUE>\r
+ <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsResource/OsResourceProperty</DEFINITION-REF>\r
+ <VALUE>STANDARD</VALUE>\r
+ </ENUMERATION-VALUE>\r
+ </PARAMETER-VALUES>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="e0499b83-ea54-4b70-8023-a1c0912d3496">\r
+ <SHORT-NAME>std_prio_5</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsResource</DEFINITION-REF>\r
+ <PARAMETER-VALUES>\r
+ <ENUMERATION-VALUE>\r
+ <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsResource/OsResourceProperty</DEFINITION-REF>\r
+ <VALUE>STANDARD</VALUE>\r
+ </ENUMERATION-VALUE>\r
+ </PARAMETER-VALUES>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="535d1101-3931-4273-81af-00627d240a77">\r
+ <SHORT-NAME>notif</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="19e4f863-4f93-4692-ade2-6e2451d7c194">\r
+ <SHORT-NAME>kill</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>32768</VALUE>\r
+ </INTEGER-VALUE>\r
+ </PARAMETER-VALUES>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="637fd8fb-42a3-4c05-9183-885a432a8b25">\r
+ <SHORT-NAME>0</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable</DEFINITION-REF>\r
+ <PARAMETER-VALUES>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableDuration</DEFINITION-REF>\r
+ <VALUE>15</VALUE>\r
+ </INTEGER-VALUE>\r
+ <BOOLEAN-VALUE>\r
+ <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableRepeating</DEFINITION-REF>\r
+ <VALUE>false</VALUE>\r
+ </BOOLEAN-VALUE>\r
+ </PARAMETER-VALUES>\r
+ <REFERENCE-VALUES>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableCounterRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/soft_1</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ <SUB-CONTAINERS>\r
+ <CONTAINER UUID="91fe76c0-a4f8-41cd-bd0c-2a54607e170c">\r
+ <SHORT-NAME>ExpiryPoint</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint</DEFINITION-REF>\r
+ <PARAMETER-VALUES>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTblExpPointOffset</DEFINITION-REF>\r
+ <VALUE>5</VALUE>\r
+ </INTEGER-VALUE>\r
+ </PARAMETER-VALUES>\r
+ <SUB-CONTAINERS>\r
+ <CONTAINER UUID="29ae18ef-642a-49b0-89e8-f084c8be0184">\r
+ <SHORT-NAME>TaskActivation1</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableTaskActivation</DEFINITION-REF>\r
+ <REFERENCE-VALUES>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableTaskActivation/OsScheduleTableActivateTaskRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/etask_sup_m</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ </SUB-CONTAINERS>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="1eeb83cf-6e40-4459-b43b-519938cfeacf">\r
+ <SHORT-NAME>ExpiryPoint1</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint</DEFINITION-REF>\r
+ <PARAMETER-VALUES>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTblExpPointOffset</DEFINITION-REF>\r
+ <VALUE>7</VALUE>\r
+ </INTEGER-VALUE>\r
+ </PARAMETER-VALUES>\r
+ <SUB-CONTAINERS>\r
+ <CONTAINER UUID="3eee4e25-4387-4890-99ec-971b1f818ff7">\r
+ <SHORT-NAME>EventSetting1</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting</DEFINITION-REF>\r
+ <REFERENCE-VALUES>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting/OsScheduleTableSetEventRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/notif</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting/OsScheduleTableSetEventTaskRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/etask_sup_m</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ </SUB-CONTAINERS>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="ba969f84-2712-4a6a-9545-af7170e843f1">\r
+ <SHORT-NAME>ExpiryPoint2</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint</DEFINITION-REF>\r
+ <PARAMETER-VALUES>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTblExpPointOffset</DEFINITION-REF>\r
+ <VALUE>11</VALUE>\r
+ </INTEGER-VALUE>\r
+ </PARAMETER-VALUES>\r
+ <SUB-CONTAINERS>\r
+ <CONTAINER UUID="a86f8b0e-fe35-4b43-b574-fdfbd1f6cf4f">\r
+ <SHORT-NAME>EventSetting1</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting</DEFINITION-REF>\r
+ <REFERENCE-VALUES>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting/OsScheduleTableSetEventRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/notif</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting/OsScheduleTableSetEventTaskRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/etask_sup_m</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="e37a1042-45ed-46f8-ae6d-83230d160aea">\r
+ <SHORT-NAME>TaskActivation1</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableTaskActivation</DEFINITION-REF>\r
+ <REFERENCE-VALUES>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableTaskActivation/OsScheduleTableActivateTaskRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/etask_sup_m</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ </SUB-CONTAINERS>\r
+ </CONTAINER>\r
+ </SUB-CONTAINERS>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="6746f7ae-bbee-45d9-bc71-3268c81fb344">\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="72ed3e36-bb2e-420e-a74e-094b97f07fd8">\r
+ <SHORT-NAME>soft_1</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>SOFTWARE</VALUE>\r
+ </ENUMERATION-VALUE>\r
+ </PARAMETER-VALUES>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="2d133eeb-5148-444e-9b31-237b57e098b4">\r
+ <SHORT-NAME>1</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable</DEFINITION-REF>\r
+ <PARAMETER-VALUES>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableDuration</DEFINITION-REF>\r
+ <VALUE>5</VALUE>\r
+ </INTEGER-VALUE>\r
+ <BOOLEAN-VALUE>\r
+ <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableRepeating</DEFINITION-REF>\r
+ <VALUE>false</VALUE>\r
+ </BOOLEAN-VALUE>\r
+ </PARAMETER-VALUES>\r
+ <REFERENCE-VALUES>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableCounterRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/soft_1</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ <SUB-CONTAINERS>\r
+ <CONTAINER UUID="460781a7-a783-492c-8e2a-589e5d6fedbb">\r
+ <SHORT-NAME>ExpiryPoint</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint</DEFINITION-REF>\r
+ <PARAMETER-VALUES>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTblExpPointOffset</DEFINITION-REF>\r
+ <VALUE>2</VALUE>\r
+ </INTEGER-VALUE>\r
+ </PARAMETER-VALUES>\r
+ <SUB-CONTAINERS>\r
+ <CONTAINER UUID="72ad160e-bf1e-4442-a8f0-a65a7ec8f816">\r
+ <SHORT-NAME>TaskActivation1</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableTaskActivation</DEFINITION-REF>\r
+ <REFERENCE-VALUES>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableTaskActivation/OsScheduleTableActivateTaskRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/etask_sup_m</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ </SUB-CONTAINERS>\r
+ </CONTAINER>\r
+ </SUB-CONTAINERS>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="dede2d6e-0f82-4652-86b6-78c1360c1592">\r
+ <SHORT-NAME>c_sys_activate_btask_h</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">/testsystem/Os/OsTick</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ <SUB-CONTAINERS>\r
+ <CONTAINER UUID="97c6029d-cef4-4bb1-bab0-f882479de012">\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">/testsystem/Os/btask_sup_h</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ </SUB-CONTAINERS>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="17540841-1b7d-4421-be1a-2f116364deba">\r
+ <SHORT-NAME>c_sys_1_setevent_etask_m</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">/testsystem/Os/OsTick</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ <SUB-CONTAINERS>\r
+ <CONTAINER UUID="7ebab0c9-e8c1-4371-b439-a901d6122efc">\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">/testsystem/Os/notif</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">/testsystem/Os/etask_sup_m</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ </SUB-CONTAINERS>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="f6022231-7387-4d18-9833-be28dce71f30">\r
+ <SHORT-NAME>c_soft_1_setevent_etask_m</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">/testsystem/Os/soft_1</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ <SUB-CONTAINERS>\r
+ <CONTAINER UUID="f832f963-085b-45f1-a4a5-507e10cef798">\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">/testsystem/Os/notif</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">/testsystem/Os/etask_sup_m</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ </SUB-CONTAINERS>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="85e281ff-fa24-4ade-867b-4126a3bc99e2">\r
+ <SHORT-NAME>c_soft_1_inc_counter_2</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">/testsystem/Os/soft_1</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ <SUB-CONTAINERS>\r
+ <CONTAINER UUID="b5cc2bdd-1f43-414d-bea7-d7cb4d559d3b">\r
+ <SHORT-NAME>OsAlarmIncrementCounter</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmIncrementCounter</DEFINITION-REF>\r
+ <REFERENCE-VALUES>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsAlarm/OsAlarmAction/OsAlarmIncrementCounter/OsAlarmIncrementCounterRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/testsystem/Os/soft_2</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ </SUB-CONTAINERS>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="f510c7bd-12d7-475b-88cf-387b50e955c9">\r
+ <SHORT-NAME>soft_2</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>SOFTWARE</VALUE>\r
+ </ENUMERATION-VALUE>\r
+ </PARAMETER-VALUES>\r
+ </CONTAINER>\r
+ </CONTAINERS>\r
+ </MODULE-CONFIGURATION>\r
+ </ELEMENTS>\r
+ </AR-PACKAGE>\r
+ </TOP-LEVEL-PACKAGES></AUTOSAR>\r
--- /dev/null
+\r
+# included from rules.mk\r
+\r
+# =======================================================================\r
+# APPLICATION\r
+\r
+obj-y += test_master.o\r
+obj-y += test_01_task.o\r
+obj-y += test_02_resource.o\r
+obj-y += test_03_alarm.o\r
+obj-y += test_04_stable.o\r
+obj-y += test_05_const.o\r
+obj-y += test_06_event.o\r
+\r
+obj-y += test_framework.o\r
+obj-y += Os_Cfg.o\r
+\r
+# Not supported yet...\r
+#obj-$(CFG_ARM_CM3) += test_sup_irq.o\r
+\r
+# Grab the board the board files.\r
+include $(ROOTDIR)/boards/board_common.mk\r
+\r
+# What modules do we use\r
+MOD_USE+=KERNEL MCU\r
+\r
+MOD_USE+=T32_TERM\r
+#MOD_USE+=PROTECTIONHOOK STARTUPHOOK SHUTDOWNHOOK ERRORHOOK 1\r
+#MOD_USE+=PRETASKHOOK POSTTASKHOOK\r
+CFG+=CONSOLE_T32\r
+CFG+=CONSOLE_WINIDEA\r
+\r
+\r
+# TODO: Fix this....\r
+\r
+vpath-y += $(ROOTDIR)/$(ARCH_PATH-y)/kernel\r
+vpath-y += $(ROOTDIR)/$(ARCH_PATH-y)/drivers\r
+vpath-y += $(ROOTDIR)/boards/$(BOARDDIR)\r
+vpath-y += $(ROOTDIR)/boards/$(BOARDDIR)/config\r
+VPATH += $(vpath-y)\r
+VPATH += $(ROOTDIR)/$(SUBDIR)/config\r
+VPATH += $(realpath ../..)\r
+\r
+# libs needed by us \r
+libitem-y += $(ROOTDIR)/libs/libkernel_$(ARCH_MCU).a\r
+\r
+#linkfile\r
+ldcmdfile-y = $(ROOTDIR)/$(ARCH_PATH-y)/scripts/linkscript_gcc.ldf\r
+#ldcmdfile-y = $(ROOTDIR)/$(ARCH_PATH-y)/scripts/linkscript_gcc.ldf\r
+\r
+inc-y += ..\r
+inc-y += ../..\r
+inc-y += $(ROOTDIR)/system/kernel/$(objdir)\r
+inc-y += $(ROOTDIR)/system/kernel/include\r
+inc-y += $(ROOTDIR)/$(ARCH_PATH-y)\r
+inc-y += $(ROOTDIR)/drivers/include\r
+inc-y += $(ROOTDIR)/boards/$(BOARDDIR)/config\r
+inc-y += $(ROOTDIR)/$(ARCH_PATH-y)/drivers\r
+inc-y += ../config\r
+\r
+# What I want to build\r
+build-exe-y = $(target).elf\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
--- /dev/null
+/* -------------------------------- 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
+ * Tests tasks:\r
+ *\r
+ * OSEK\r
+ * - ActivateTask E_OS_ID, E_OS_LIMIT\r
+ * - TerminateTask E_OS_RESOURCE, E_OS_CALLEVEL\r
+ * - ChainTask E_OS_ID, E_OS_LIMIT, E_OS_RESOURCE, E_OS_CALLLEVEL\r
+ * - Schedule E_OS_CALLEVEL, E_OS_RESOURCE\r
+ * - GetTaskID\r
+ * - GetTaskState E_OS_ID\r
+ *\r
+ *\r
+ * Limitations:\r
+ * - No way to detect if in ISR1 or hooks\r
+ * - NON tasks are not tested.\r
+ * - ActivateTask() with own taskid?\r
+ */\r
+\r
+#include "Os.h"\r
+#include "os_test.h"\r
+#include "arc.h"\r
+\r
+int btaskRunCnt = 0;\r
+\r
+static int status_100 = 0;\r
+\r
+void isr_l(void ) {\r
+ StatusType rv;\r
+ switch(test_nr) {\r
+ case 11:\r
+ rv = TerminateTask();\r
+ TEST_ASSERT(rv=E_OS_CALLEVEL);\r
+ break;\r
+ case 12:\r
+ break;\r
+ case 13:\r
+ break;\r
+ default:\r
+ while(1);\r
+ }\r
+}\r
+\r
+void etask_sup_l_01(void) {\r
+ _Bool done = 0;\r
+ StatusType rv;\r
+\r
+ while (!done) {\r
+ TEST_RUN();\r
+\r
+ switch (test_nr) {\r
+ case 1:\r
+ /*@req E_OS_ID ActivateTask */\r
+ rv = ActivateTask(TASK_ID_ILL);\r
+ TEST_ASSERT(rv == E_OS_ID);\r
+ test_nr = 2;\r
+ break;\r
+ case 2:\r
+ /*@req E_OS_LIMIT ActivateTask\r
+ * Test the activation limit and check that activated task is run\r
+ * the activation limit times */\r
+\r
+ /* Activate higher prio task to do the test */\r
+ rv = ActivateTask(TASK_ID_btask_sup_h);\r
+ TEST_ASSERT(rv == E_OK);\r
+\r
+ /* Was it run activation times? */\r
+ TEST_ASSERT(btaskRunCnt == Os_ArcTest_GetTaskActivationLimit(TASK_ID_btask_sup_m));\r
+ test_nr = 10;\r
+ break;\r
+ case 10:\r
+ /*@req E_OS_RESOURCE TerminateTask\r
+ * Terminate a task that still holds resources\r
+ * This is done in the TASK_ID_btask_sup_m task..\r
+ */\r
+ rv = ActivateTask(TASK_ID_btask_sup_m);\r
+ TEST_ASSERT(rv == E_OK);\r
+ test_nr++;\r
+ break;\r
+ case 11:\r
+ /*@req E_OS_CALLEVEL TerminateTask */\r
+ Os_ArcTest_SetIrqNestLevel(1);\r
+ isr_l();\r
+ Os_ArcTest_SetIrqNestLevel(0);\r
+ test_nr=20;\r
+ break;\r
+\r
+ case 20:\r
+ /*@req E_OS_ID ChainTask */\r
+ rv = ChainTask(TASK_ID_ILL);\r
+ TEST_ASSERT(rv == E_OS_ID);\r
+ test_nr = 100;\r
+ case 21:\r
+ /*@req E_OS_LIMIT ChainTask */\r
+ case 22:\r
+ /*@req E_OS_RESOURCE ChainTask */\r
+ case 23:\r
+ /*@req E_OS_CALLLEVEL ChainTask */\r
+ break;\r
+\r
+ case 30:\r
+ /*@req E_OS_CALLEVEL Schedule */\r
+ case 31:\r
+ /*@req E_OS_RESOURCE Schedule */\r
+ break;\r
+\r
+ case 100:\r
+ /* Check that tasks as run in priority order and that the oldest task\r
+ * of the same priority should be scheduled first.\r
+ * 1. esup_l: Activate(sup_m)\r
+ * 2. bsup_m: Activate(sup_l) (should not be taken)\r
+ * 3. bsup_m: Activate(sup_h) (taken)\r
+ * 4. bsup_h: Terminate()\r
+ * (We should now have bsup_m, esup_l, bsup_l )\r
+ * 5. bsup_m: Terminate()\r
+ * 6. esup_l : Terminate()\r
+ * 7. bsup_l : Activate(esup_l) (found by dispatcher)\r
+ * 8. esup_l: Back again!!!!\r
+ *\r
+ * */\r
+ if(status_100==6) {\r
+ test_nr=101;\r
+ break;\r
+ }\r
+ btaskRunCnt = 0;\r
+ rv = ActivateTask(TASK_ID_btask_sup_m);\r
+ TEST_ASSERT(status_100=3);\r
+ status_100=4;\r
+ TerminateTask(); // Step 6.\r
+\r
+ // Should never get here since we have restarded ourselves.\r
+ assert(0);\r
+ break;\r
+ case 101:\r
+ /* End Testing of this module */\r
+ TerminateTask();\r
+ break;\r
+ default:\r
+ while(1);\r
+ }\r
+ }\r
+}\r
+\r
+void btask_sup_l_01( void ) {\r
+ switch(test_nr){\r
+ case 100:\r
+ btaskRunCnt++;\r
+ /* Make it go up again */\r
+ TEST_ASSERT(status_100=4);\r
+ status_100=5;\r
+ ActivateTask(TASK_ID_etask_sup_l); // Step 7.\r
+ TEST_ASSERT(status_100=5);\r
+ status_100=6;\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+\r
+}\r
+\r
+void btask_sup_m_01( void ) {\r
+ int rv;\r
+ switch(test_nr){\r
+ case 2:\r
+ btaskRunCnt++;\r
+ TerminateTask();\r
+ break;\r
+ case 10:\r
+ rv = GetResource(RES_ID_std_prio_3);\r
+ TEST_ASSERT(rv == E_OK);\r
+\r
+ rv = TerminateTask();\r
+ TEST_ASSERT(rv==E_OS_RESOURCE);\r
+\r
+ rv = ReleaseResource(RES_ID_std_prio_3);\r
+ TEST_ASSERT(rv==E_OK);\r
+ TerminateTask();\r
+ break;\r
+ case 100:\r
+ /* We got here from etask_l, so it should be oldest */\r
+ rv = ActivateTask(TASK_ID_btask_sup_l);\r
+ TEST_ASSERT(rv==E_OK);\r
+ TEST_ASSERT(status_100==0);\r
+ status_100=1;\r
+ rv = ActivateTask(TASK_ID_btask_sup_h);\r
+ TEST_ASSERT(rv==E_OK);\r
+ TEST_ASSERT(status_100==2);\r
+ status_100=3;\r
+ break;\r
+ default:\r
+ while(1);\r
+ }\r
+\r
+}\r
+\r
+void btask_sup_h_01(void) {\r
+ StatusType rv;\r
+ int limit;\r
+\r
+ switch (test_nr) {\r
+ case 2:\r
+ /* Activate a basic task to many times */\r
+ limit = Os_ArcTest_GetTaskActivationLimit(TASK_ID_btask_sup_m);\r
+ for (int i = 0; i < limit; i++) {\r
+ rv = ActivateTask(TASK_ID_btask_sup_m);\r
+ TEST_ASSERT(rv == E_OK);\r
+ }\r
+ rv = ActivateTask(TASK_ID_btask_sup_m);\r
+ TEST_ASSERT(rv == E_OS_LIMIT);\r
+ /* Let the us terminate and count the number of times the tasks\r
+ * was actually activated\r
+ *\r
+ * TODO:@req Since the etask and btask have the same priority, who gets scheduled?\r
+ * Oldest is scheduled first..\r
+ * */\r
+ break;\r
+ case 100:\r
+ TEST_ASSERT(status_100==1);\r
+ status_100=2;\r
+ break;\r
+ default:\r
+ while(1);\r
+\r
+ }\r
+}\r
+\r
+DECLARE_TEST_ETASK(01, etask_sup_l_01, NULL, NULL );\r
+DECLARE_TEST_BTASK(01, btask_sup_l_01, btask_sup_m_01, btask_sup_h_01);\r
+\r
--- /dev/null
+/* -------------------------------- 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
+ * Tests:\r
+ *\r
+ * OSEK:\r
+ * - GetResource E_OS_ID, E_OS_ACCESS\r
+ * - ReleaseResource E_OS_ID, E_OS_ACCESS, E_OS_NOFUNC\r
+ *\r
+ * More tests here:\r
+ * - GetResource(RES_SCHEDULER)\r
+ * - Check the ceiling protocol\r
+ * - Linked resources\r
+ * - Nested allocation of the same resource is forbidden.\r
+ *\r
+ *\r
+ * Limitations:\r
+ * - Internal resources.\r
+ */\r
+\r
+#include "Os.h"\r
+#include "os_test.h"\r
+#include "arc.h"\r
+#include "irq.h"\r
+\r
+\r
+static int isr2RunCnt = 0;\r
+static int taskRunCnt = 0;\r
+\r
+static void isr2( void ) {\r
+ isr2RunCnt++;\r
+ ActivateTask(TASK_ID_btask_sup_m);\r
+#if 0\r
+ {\r
+ TaskType task;\r
+ GetTaskID(&task);\r
+ printf("ISR2: %d\n",task);\r
+ }\r
+#endif\r
+}\r
+\r
+static void isr1( void ) {\r
+\r
+}\r
+\r
+void etask_sup_l_02(void) {\r
+ _Bool done = 0;\r
+ StatusType rv;\r
+ TaskType isrTask;\r
+ TaskType task;\r
+\r
+ while (!done) {\r
+ TEST_RUN();\r
+ switch (test_nr) {\r
+ case 1:\r
+ rv = GetResource(RES_ID_std_prio_3);\r
+ TEST_ASSERT(rv == E_OK);\r
+ rv = ReleaseResource(RES_ID_std_prio_3);\r
+ TEST_ASSERT(rv == E_OK);\r
+ test_nr++;\r
+ break;\r
+ case 2:\r
+ /* Get the same resource twice */\r
+ rv = GetResource(RES_ID_std_prio_3);\r
+ TEST_ASSERT(rv == E_OK);\r
+ rv = GetResource(RES_ID_std_prio_3);\r
+ TEST_ASSERT(rv == E_OS_ACCESS);\r
+ test_nr = 10;\r
+ break;\r
+ case 10:\r
+ /* Test RES_SCHEDULER.\r
+ * Since GetResource(RES_SCHEDULER) only locks the\r
+ * scheduler (interrupts are still working) we the interrupt\r
+ * task should trigger a higher prio task, but that should\r
+ * not be swapped in.\r
+ */\r
+\r
+ /* Create an ISR2 */\r
+ isrTask = Os_Arc_CreateIsr( isr2, 4/*prio*/,"soft_0");\r
+ Irq_AttachIsr2(isrTask,NULL,INTC_SSCIR0_CLR0);\r
+ /* Create an ISR1 */\r
+ Irq_AttachIsr1(isr1,NULL,INTC_SSCIR0_CLR1,6);\r
+\r
+ GetTaskID(&task);\r
+ TEST_ASSERT( task == TASK_ID_etask_sup_l );\r
+ /* Lock the scheduler */\r
+ rv = GetResource(RES_SCHEDULER);\r
+ Irq_GenerateSoftInt( INTC_SSCIR0_CLR0 );\r
+\r
+ GetTaskID(&task);\r
+\r
+ TEST_ASSERT( task == TASK_ID_etask_sup_l );\r
+\r
+ /* TODO: Should we re-schedule here? */\r
+ rv = ReleaseResource(RES_SCHEDULER);\r
+ // TODO: ReleaseResource should re-schedule\r
+\r
+ TEST_ASSERT( task == TASK_ID_etask_sup_l );\r
+\r
+// TEST_ASSERT( taskRunCnt == 1 );\r
+ // TODO:\r
+\r
+ test_nr = 100;\r
+ break;\r
+ case 100:\r
+ TerminateTask();\r
+ break;\r
+ }\r
+ }\r
+}\r
+\r
+void btask_sup_l_02(void) {\r
+}\r
+\r
+void btask_sup_m_02(void) {\r
+ TaskType task;\r
+ GetTaskID(&task);\r
+\r
+ taskRunCnt++;\r
+ TEST_ASSERT( task == TASK_ID_btask_sup_m );\r
+}\r
+\r
+\r
+DECLARE_TEST_ETASK(02, etask_sup_l_02, NULL, NULL );\r
+DECLARE_TEST_BTASK(02, btask_sup_l_02, btask_sup_m_02, NULL );\r
--- /dev/null
+/* -------------------------------- 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
+ * Tests:\r
+ *\r
+ * OSEK\r
+ * - GetAlarmBase E_OS_ID\r
+ * - GetAlarm E_OS_ID, E_OS_NOFUNC\r
+ * - SetRelAlarm E_OS_ID, E_OS_STATE, E_OS_VALUE\r
+ * - SetAbsAlarm E_OS_ID, E_OS_STATE, E_OS_VALUE\r
+ * - CancelAlarm E_OS_ID, E_OS_NOFUNC\r
+ *\r
+ * Autosar\r
+ * - IncrementCounter E_OS_ID\r
+ * - GetCounterValue E_OS_ID\r
+ * - GetElapsedCounterValue E_OS_ID, E_OS_VALUE\r
+ *\r
+ * More tests here:\r
+ *\r
+ * Limitations:\r
+ */\r
+\r
+\r
+#include "Os.h"\r
+#include "os_test.h"\r
+#include "arc.h"\r
+\r
+\r
+void etask_sup_l_03(void) {\r
+ _Bool done = 0;\r
+ StatusType rv;\r
+ AlarmBaseType alarmBase;\r
+ TickType tick;\r
+ TickType tickElapsed;\r
+\r
+ int i;\r
+\r
+ rv = ActivateTask(TASK_ID_etask_sup_m);\r
+ assert( rv == E_OK );\r
+\r
+ while (!done) {\r
+ TEST_RUN();\r
+ switch (test_nr) {\r
+ /*--------------------------------------------------------------------\r
+ * API tests\r
+ *--------------------------------------------------------------------\r
+ */
+ case 1:\r
+ /* GetAlarmBase E_OS_ID */\r
+ rv = GetAlarmBase(ALARM_ID_c_sys_activate_btask_h, &alarmBase);\r
+ TEST_ASSERT(rv == E_OK);\r
+ rv = GetAlarmBase(ALARM_ID_ILL, &alarmBase);\r
+ TEST_ASSERT(rv == E_OS_ID);\r
+ test_nr++;\r
+ break;\r
+ case 2:\r
+ /* GetAlarm E_OS_ID and E_OS_NO_FUNC */\r
+ rv = GetAlarm(ALARM_ID_c_sys_activate_btask_h,&tick);\r
+ TEST_ASSERT(rv == E_OS_NOFUNC);\r
+ rv = GetAlarm(ALARM_ID_ILL,&tick);\r
+ TEST_ASSERT(rv == E_OS_ID);\r
+ test_nr++;\r
+ break;\r
+ case 3:\r
+ /* SetRelAlarm E_OS_ID, E_OS_STATE, E_OS_VALUE */\r
+ rv = SetRelAlarm(ALARM_ID_ILL,1,10);\r
+ TEST_ASSERT(rv == E_OS_ID);\r
+ rv = SetRelAlarm(ALARM_ID_c_soft_1_setevent_etask_m,0,10);\r
+ TEST_ASSERT(rv == E_OS_VALUE);\r
+ rv = SetRelAlarm(ALARM_ID_c_soft_1_setevent_etask_m,1,10);\r
+ TEST_ASSERT(rv == E_OK);\r
+ rv = SetRelAlarm(ALARM_ID_c_soft_1_setevent_etask_m,1,10);\r
+ TEST_ASSERT(rv == E_OS_STATE);\r
+ rv = CancelAlarm(ALARM_ID_c_soft_1_setevent_etask_m);\r
+ TEST_ASSERT(rv == E_OK);\r
+ test_nr++;\r
+ break;\r
+ case 4:\r
+ /* SetAbsAlarm E_OS_ID, E_OS_STATE, E_OS_VALUE */\r
+ rv = SetAbsAlarm(ALARM_ID_ILL,1,10);\r
+ TEST_ASSERT(rv == E_OS_ID);\r
+ rv = SetAbsAlarm(ALARM_ID_c_soft_1_setevent_etask_m,\r
+ OSMAXALLOWEDVALUE_soft_1 + 1, 10);\r
+ TEST_ASSERT(rv == E_OS_VALUE);\r
+ rv = SetAbsAlarm(ALARM_ID_c_soft_1_setevent_etask_m,1,10);\r
+ TEST_ASSERT(rv == E_OK);\r
+ rv = SetAbsAlarm(ALARM_ID_c_soft_1_setevent_etask_m,1,10);\r
+ TEST_ASSERT(rv == E_OS_STATE);\r
+ rv = CancelAlarm(ALARM_ID_c_soft_1_setevent_etask_m);\r
+ TEST_ASSERT(rv == E_OK);\r
+ test_nr++;\r
+ break;\r
+ case 5:\r
+ /* CancelAlarm E_OS_ID, E_OS_NOFUNC */\r
+ rv = CancelAlarm(ALARM_ID_ILL);\r
+ TEST_ASSERT(rv == E_OS_ID);\r
+ rv = CancelAlarm(ALARM_ID_c_soft_1_setevent_etask_m);\r
+ TEST_ASSERT(rv == E_OS_NOFUNC);\r
+ test_nr++;\r
+ break;\r
+ case 6:\r
+ /* IncrementCounter E_OS_ID */\r
+ rv = IncrementCounter(COUNTER_ID_ILL);\r
+ TEST_ASSERT(rv == E_OS_ID);\r
+ test_nr++;\r
+ break;\r
+ case 7:\r
+ /* GetCounterValue E_OS_ID */\r
+ rv = GetCounterValue(COUNTER_ID_ILL,&tick);\r
+ TEST_ASSERT(rv == E_OS_ID);\r
+ test_nr++;\r
+ break;\r
+ case 8:\r
+ /* GetElapsedCounterValue E_OS_ID, E_OS_VALUE */\r
+ rv = GetElapsedCounterValue(COUNTER_ID_ILL,&tick,&tick);\r
+ TEST_ASSERT(rv == E_OS_ID);\r
+ test_nr = 10;\r
+ break;\r
+\r
+ /*--------------------------------------------------------------------\r
+ * Functional tests, Counters\r
+ *--------------------------------------------------------------------\r
+ * IncrementCounter\r
+ * GetCounterValue\r
+ * GetElapsedCounterValue\r
+ */\r
+ case 10:\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ TEST_ASSERT(rv == E_OK);\r
+ rv = GetCounterValue(COUNTER_ID_soft_1,&tick);\r
+ TEST_ASSERT(rv == E_OK);\r
+ TEST_ASSERT(tick == 1);\r
+ rv = GetElapsedCounterValue( COUNTER_ID_soft_1,\r
+ &tick,\r
+ &tickElapsed);\r
+ TEST_ASSERT(tick == 1);\r
+ TEST_ASSERT(tickElapsed == 0);\r
+\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ TEST_ASSERT(rv == E_OK);\r
+ rv = GetElapsedCounterValue( COUNTER_ID_soft_1,\r
+ &tick,\r
+ &tickElapsed);\r
+ TEST_ASSERT(tick == 2);\r
+ TEST_ASSERT(tickElapsed == 1);\r
+\r
+ /* Test max value */\r
+ for( i=0; i< OSMAXALLOWEDVALUE_soft_1 - 2; i++ ) {\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ TEST_ASSERT(rv == E_OK);\r
+ }\r
+\r
+ rv = GetCounterValue(COUNTER_ID_soft_1,&tick);\r
+ TEST_ASSERT(tick == OSMAXALLOWEDVALUE_soft_1);\r
+\r
+ tick = 0;\r
+ rv = GetElapsedCounterValue( COUNTER_ID_soft_1,\r
+ &tick,\r
+ &tickElapsed);\r
+\r
+ TEST_ASSERT(tick == OSMAXALLOWEDVALUE_soft_1 );\r
+ TEST_ASSERT(tickElapsed == OSMAXALLOWEDVALUE_soft_1);\r
+\r
+ /* Check that wrapping calculation works */\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = GetElapsedCounterValue( COUNTER_ID_soft_1,\r
+ &tick,\r
+ &tickElapsed);\r
+\r
+ TEST_ASSERT(tick == 1);\r
+ TEST_ASSERT(tickElapsed == 2);\r
+\r
+ test_nr++;\r
+ break;\r
+\r
+ /*--------------------------------------------------------------------\r
+ * Functional tests, Alarm\r
+ *--------------------------------------------------------------------\r
+ * GetAlarmBase\r
+ * GetAlarm\r
+ * SetRelAlarm\r
+ * SetAbsAlarm\r
+ * CancelAlarm\r
+ */\r
+\r
+ case 11:\r
+ rv = GetAlarmBase(ALARM_ID_c_soft_1_setevent_etask_m, &alarmBase);\r
+ TEST_ASSERT(alarmBase.maxallowedvalue == OSMAXALLOWEDVALUE_soft_1 );\r
+ /* TODO: Fix this in the editor */\r
+ TEST_ASSERT(alarmBase.mincycle == 1 );\r
+ TEST_ASSERT(alarmBase.tickperbase == 1 );\r
+ test_nr++;\r
+ break;\r
+\r
+ case 12:\r
+ /* Test single-shot alarm */\r
+ rv = SetRelAlarm(ALARM_ID_c_soft_1_setevent_etask_m,2,0);\r
+ TEST_ASSERT( rv == E_OK );\r
+ rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+ TEST_ASSERT( rv == E_OK );\r
+ TEST_ASSERT(tick == 2 );\r
+\r
+ IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+ TEST_ASSERT( rv == E_OK );\r
+ TEST_ASSERT(tick == 1 );\r
+\r
+ IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+ TEST_ASSERT( rv == E_OS_NOFUNC );\r
+ test_nr++;\r
+ break;\r
+ case 13:\r
+ /* Test cyclic alarm */\r
+ rv = SetRelAlarm(ALARM_ID_c_soft_1_setevent_etask_m,2,5);\r
+ TEST_ASSERT( rv == E_OK );\r
+ rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+ TEST_ASSERT( rv == E_OK );\r
+ TEST_ASSERT(tick == 2 );\r
+\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+ TEST_ASSERT( rv == E_OK );\r
+ TEST_ASSERT(tick == 1 );\r
+\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+ TEST_ASSERT( rv == E_OK );\r
+ TEST_ASSERT(tick == 5 );\r
+\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+ TEST_ASSERT(tick == 4 );\r
+\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+ TEST_ASSERT(tick == 1 );\r
+\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ TEST_ASSERT( rv == E_OK );\r
+ rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+ TEST_ASSERT( rv == E_OK );\r
+ TEST_ASSERT(tick == 5 );\r
+\r
+ rv = CancelAlarm(ALARM_ID_c_soft_1_setevent_etask_m);\r
+ TEST_ASSERT( rv == E_OK );\r
+ test_nr++;\r
+ break;\r
+ case 14:\r
+ /*\r
+ * SetAbsAlarm\r
+ */\r
+\r
+ /* Start from 0 */\r
+ rv = GetCounterValue(COUNTER_ID_soft_1,&tick);\r
+ for(i=0;i<OSMAXALLOWEDVALUE_soft_1 - tick + 1 ;i++) {\r
+ IncrementCounter(COUNTER_ID_soft_1);\r
+ }\r
+\r
+ rv = GetCounterValue(COUNTER_ID_soft_1,&tick);\r
+ TEST_ASSERT(tick == 0);\r
+\r
+ /* Test single-shot alarm */\r
+ rv = SetAbsAlarm(ALARM_ID_c_soft_1_setevent_etask_m,2,0);\r
+ TEST_ASSERT( rv == E_OK );\r
+ rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+ TEST_ASSERT( rv == E_OK );\r
+ TEST_ASSERT(tick == 2 );\r
+\r
+ IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+ TEST_ASSERT( rv == E_OK );\r
+ TEST_ASSERT(tick == 1 );\r
+\r
+ IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+ TEST_ASSERT( rv == E_OS_NOFUNC );\r
+ test_nr++;\r
+ break;\r
+ case 15:\r
+\r
+ /* Start from 1 */\r
+ rv = GetCounterValue(COUNTER_ID_soft_1,&tick);\r
+ for(i=0;i<OSMAXALLOWEDVALUE_soft_1 - tick + 1 ;i++) {\r
+ IncrementCounter(COUNTER_ID_soft_1);\r
+ }\r
+ IncrementCounter(COUNTER_ID_soft_1);\r
+\r
+ /* Test cyclic alarm */\r
+ rv = SetAbsAlarm(ALARM_ID_c_soft_1_setevent_etask_m,3,5);\r
+ TEST_ASSERT( rv == E_OK );\r
+ rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+ TEST_ASSERT( rv == E_OK );\r
+ TEST_ASSERT(tick == 2 );\r
+\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+ TEST_ASSERT( rv == E_OK );\r
+ TEST_ASSERT(tick == 1 );\r
+\r
+ /* Trigger the alarm */\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+ TEST_ASSERT( rv == E_OK );\r
+ /* The abs alarm is now a relative alarm cith cycle */\r
+ TEST_ASSERT(tick == 5 );\r
+\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+ TEST_ASSERT(tick == 4 );\r
+\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+ TEST_ASSERT(tick == 1 );\r
+\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ TEST_ASSERT( rv == E_OK );\r
+ rv = GetAlarm(ALARM_ID_c_soft_1_setevent_etask_m,&tick);\r
+ TEST_ASSERT( rv == E_OK );\r
+ TEST_ASSERT(tick == 5 );\r
+\r
+ rv = CancelAlarm(ALARM_ID_c_soft_1_setevent_etask_m);\r
+ TEST_ASSERT( rv == E_OK );\r
+ test_nr++;\r
+ break;\r
+ case 16:\r
+ test_nr = 100;\r
+ break;\r
+ case 100:\r
+ SetEvent(TASK_ID_etask_sup_m, EVENT_MASK_KILL);\r
+ TerminateTask();\r
+ break;\r
+ }\r
+ }\r
+}\r
+\r
+void etask_sup_m_03(void) {\r
+\r
+ for(;;) {\r
+\r
+ WaitEvent(EVENT_MASK_NOTIF | EVENT_MASK_KILL );\r
+ switch (test_nr) {\r
+ case 12:\r
+ case 13:\r
+ case 14:\r
+ case 15:\r
+ ClearEvent(EVENT_MASK_NOTIF);\r
+ break;\r
+ case 100:\r
+ TerminateTask();\r
+ break;\r
+ default:\r
+ assert(0);\r
+ }\r
+ }\r
+\r
+}\r
+\r
+void btask_sup_l_03(void) {\r
+}\r
+\r
+\r
+DECLARE_TEST_ETASK(03, etask_sup_l_03, etask_sup_m_03, NULL );\r
+DECLARE_TEST_BTASK(03, btask_sup_l_03, NULL, NULL );\r
--- /dev/null
+/* -------------------------------- 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
+ * From Autosar 3.1\r
+ *\r
+ * Tests:\r
+ * - StartScheduleTableRel E_OS_ID, E_OS_VALUE, E_OS_STATE\r
+ * - StartScheduleTableAbs E_OS_ID, E_OS_VALUE, E_OS_STATE\r
+ * - StopScheduleTable E_OS_ID, E_OS_NO_FUNC\r
+ * - NextScheduleTable E_OS_ID, E_OS_NO_FUNC, E_OS_STATE\r
+ * - GetScheduleTableStatus E_OS_ID,\r
+ *\r
+ * Class 2 and 4\r
+ * - StartScheduleTableSynchrone E_OS_ID, E_OS_STATE\r
+ * - SyncScheduleTable E_OS_ID, E_OS_VALUE, E_OS_STATE\r
+ * - SetScheduleTableAsync E_OS_ID,\r
+ *\r
+ * More tests here:\r
+ *\r
+ * Limitations:\r
+ */\r
+\r
+#include "Os.h"\r
+#include "os_test.h"\r
+#include "arc.h"\r
+\r
+\r
+static int subTest = 0;\r
+\r
+void etask_sup_l_04(void) {\r
+ _Bool done = 0;\r
+ StatusType rv;\r
+ ScheduleTableStatusType status;\r
+\r
+ while (!done) {\r
+ TEST_RUN();\r
+ switch (test_nr) {\r
+ case 1:\r
+ /* StartScheduleTableRel E_OS_ID, E_OS_VALUE, E_OS_STATE */\r
+ rv = StartScheduleTableRel(SCHTBL_ID_ILL,1);\r
+ TEST_ASSERT(rv==E_OS_ID);\r
+ rv = StartScheduleTableRel(SCHTBL_ID_0,0);\r
+ TEST_ASSERT(rv==E_OS_VALUE);\r
+ rv = StartScheduleTableRel(SCHTBL_ID_0,1);\r
+ TEST_ASSERT(rv==E_OK);\r
+ rv = StartScheduleTableRel(SCHTBL_ID_0,1);\r
+ TEST_ASSERT(rv==E_OS_STATE);\r
+ rv = StopScheduleTable(SCHTBL_ID_0);\r
+ test_nr++;\r
+ break;\r
+ case 2:\r
+ /* StartScheduleTableAbs E_OS_ID, E_OS_VALUE, E_OS_STATE */\r
+ rv = StartScheduleTableAbs(SCHTBL_ID_ILL,1);\r
+ TEST_ASSERT(rv==E_OS_ID);\r
+#if 0\r
+ /* TODO:Must supply an offset bigger than OsCounterMaxAllowedValue */\r
+ StartScheduleTableAbs(SCHTBL_ID_0,0);\r
+ TEST_ASSERT(rv==E_OS_VALUE);\r
+#endif\r
+ rv = StartScheduleTableAbs(SCHTBL_ID_0,1);\r
+ TEST_ASSERT(rv==E_OK);\r
+ rv = StartScheduleTableAbs(SCHTBL_ID_0,1);\r
+ TEST_ASSERT(rv==E_OS_STATE);\r
+ rv = StopScheduleTable(SCHTBL_ID_0);\r
+ test_nr++;\r
+ break;\r
+ case 3:\r
+ /* StopScheduleTable E_OS_ID, E_OS_NO_FUNC */\r
+ rv = StopScheduleTable(SCHTBL_ID_ILL);\r
+ TEST_ASSERT(rv==E_OS_ID);\r
+ rv = StopScheduleTable(SCHTBL_ID_0);\r
+ TEST_ASSERT(rv==E_OS_NOFUNC);\r
+ test_nr++;\r
+ break;\r
+ case 4:\r
+ /* NextScheduleTable E_OS_ID, E_OS_NO_FUNC, E_OS_STATE */\r
+ rv = NextScheduleTable(SCHTBL_ID_ILL, SCHTBL_ID_ILL);\r
+ TEST_ASSERT(rv==E_OS_ID);\r
+ rv = NextScheduleTable(SCHTBL_ID_ILL, SCHTBL_ID_0);\r
+ TEST_ASSERT(rv==E_OS_ID);\r
+ rv = NextScheduleTable(SCHTBL_ID_0, SCHTBL_ID_ILL);\r
+ TEST_ASSERT(rv==E_OS_ID);\r
+\r
+ rv = NextScheduleTable(SCHTBL_ID_0,SCHTBL_ID_0);\r
+ TEST_ASSERT(rv==E_OS_NOFUNC);\r
+\r
+ rv = StartScheduleTableRel(SCHTBL_ID_0,1);\r
+ rv = StartScheduleTableRel(SCHTBL_ID_1,1);\r
+ rv = NextScheduleTable(SCHTBL_ID_0,SCHTBL_ID_1);\r
+ TEST_ASSERT(rv==E_OS_STATE);\r
+\r
+ /* Cleanup */\r
+ rv = StopScheduleTable(SCHTBL_ID_0);\r
+ TEST_ASSERT(rv==E_OK);\r
+ rv = StopScheduleTable(SCHTBL_ID_1);\r
+ TEST_ASSERT(rv==E_OK);\r
+ test_nr = 10;\r
+ break;\r
+ /*--------------------------------------------------------------------\r
+ * Functional tests, ScheduleTables\r
+ *--------------------------------------------------------------------\r
+ * - StartScheduleTableRel\r
+ * - StartScheduleTableAbs\r
+ * - StopScheduleTable\r
+ * - NextScheduleTable\r
+ * - GetScheduleTableStatus\r
+ */\r
+ case 10:\r
+ subTest = 0;\r
+ rv = ActivateTask(TASK_ID_etask_sup_m);\r
+ TEST_ASSERT( rv == E_OK );\r
+\r
+ rv = GetScheduleTableStatus(SCHTBL_ID_0,&status);\r
+ TEST_ASSERT(rv==E_OK);\r
+ TEST_ASSERT( status == SCHEDULETABLE_STOPPED );\r
+ rv = StartScheduleTableRel(SCHTBL_ID_0,2);\r
+ TEST_ASSERT(rv==E_OK);\r
+\r
+ rv = GetScheduleTableStatus(SCHTBL_ID_0,&status);\r
+ TEST_ASSERT(rv==E_OK);\r
+ TEST_ASSERT( status == SCHEDULETABLE_RUNNING );\r
+\r
+ /* 2+ 5 */\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ subTest = 5;\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+\r
+ /* 2 more for next*/\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ subTest = 7;\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+\r
+ /* 4 more for next*/\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ subTest = 11;\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = GetScheduleTableStatus(SCHTBL_ID_0,&status);\r
+ TEST_ASSERT(rv==E_OK);\r
+ TEST_ASSERT( status == SCHEDULETABLE_RUNNING );\r
+\r
+ /* and the final offset */\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = GetScheduleTableStatus(SCHTBL_ID_0,&status);\r
+ TEST_ASSERT(rv==E_OK);\r
+ TEST_ASSERT( status == SCHEDULETABLE_STOPPED );\r
+\r
+ /* First offset, again. */\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+\r
+ /* TODO: More here */\r
+\r
+ test_nr = 100;\r
+ break;\r
+\r
+\r
+#if 0 /* Working single shot case */\r
+ case 10:\r
+ subTest = 0;\r
+ rv = ActivateTask(TASK_ID_etask_sup_m);\r
+ TEST_ASSERT( rv == E_OK );\r
+\r
+ rv = GetScheduleTableStatus(SCHTBL_ID_0,&status);\r
+ TEST_ASSERT(rv==E_OK);\r
+ TEST_ASSERT( status == SCHEDULETABLE_STOPPED );\r
+ rv = StartScheduleTableRel(SCHTBL_ID_0,2);\r
+ TEST_ASSERT(rv==E_OK);\r
+\r
+ rv = GetScheduleTableStatus(SCHTBL_ID_0,&status);\r
+ TEST_ASSERT(rv==E_OK);\r
+ TEST_ASSERT( status == SCHEDULETABLE_RUNNING );\r
+\r
+ /* 2+ 5 */\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ subTest = 5;\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+\r
+ /* 2 more for next*/\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ subTest = 7;\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+\r
+ /* 4 more for next*/\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ subTest = 11;\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = GetScheduleTableStatus(SCHTBL_ID_0,&status);\r
+ TEST_ASSERT(rv==E_OK);\r
+ TEST_ASSERT( status == SCHEDULETABLE_RUNNING );\r
+\r
+ /* and the final offset */\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = IncrementCounter(COUNTER_ID_soft_1);\r
+ rv = GetScheduleTableStatus(SCHTBL_ID_0,&status);\r
+ TEST_ASSERT(rv==E_OK);\r
+ TEST_ASSERT( status == SCHEDULETABLE_STOPPED );\r
+ test_nr = 100;\r
+\r
+ break;\r
+#endif\r
+\r
+\r
+ case 100:\r
+ rv = SetEvent(TASK_ID_etask_sup_m, EVENT_MASK_KILL);\r
+ TEST_ASSERT( rv == E_OK );\r
+ TerminateTask();\r
+ break;\r
+ }\r
+ }\r
+}\r
+\r
+void etask_sup_m_04(void) {\r
+\r
+ TaskType currTask;\r
+ EventMaskType eventMask;\r
+ GetTaskID(&currTask);\r
+ StatusType rv;\r
+\r
+ for(;;) {\r
+ WaitEvent(EVENT_MASK_NOTIF | EVENT_MASK_KILL );\r
+ switch(test_nr) {\r
+ case 10:\r
+ switch(subTest) {\r
+ case 7:\r
+ case 11:\r
+ printf("etask\n");\r
+ rv = GetEvent(currTask,&eventMask);\r
+ TEST_ASSERT( rv == E_OK );\r
+ TEST_ASSERT(eventMask == EVENT_MASK_NOTIF );\r
+ ClearEvent(EVENT_MASK_NOTIF);\r
+ break;\r
+\r
+ default:\r
+ TEST_ASSERT(0);\r
+ break;\r
+\r
+ }\r
+ break;\r
+ case 100:\r
+ rv = TerminateTask();\r
+ TEST_ASSERT( rv == E_OK );\r
+ break;\r
+\r
+ default:\r
+ TEST_ASSERT(0);\r
+ break;\r
+ }\r
+ }\r
+}\r
+\r
+\r
+void btask_sup_l_04(void) {\r
+\r
+\r
+\r
+}\r
+\r
+void btask_sup_m_04(void) {\r
+\r
+ switch(test_nr) {\r
+ case 10:\r
+ switch(subTest) {\r
+ case 5:\r
+ case 11:\r
+ printf("btask\n");\r
+ break;\r
+\r
+ default:\r
+ TEST_ASSERT(0);\r
+ break;\r
+ }\r
+\r
+ break;\r
+ }\r
+\r
+}\r
+\r
+\r
+DECLARE_TEST_ETASK(04, etask_sup_l_04, etask_sup_m_04, NULL );\r
+DECLARE_TEST_BTASK(04, btask_sup_l_04, btask_sup_m_04, NULL );\r
+\r
+\r
--- /dev/null
+/* -------------------------------- 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
+ * Tests:\r
+ *\r
+ * OSEK constants\r
+ * - OSMAXALLOWEDVALUE_x\r
+ * - OSTICKSPERBASE_x\r
+ * - OSMINCYCLE_x\r
+ * - OSMAXALLOWEDVALUE\r
+ * - OSTICKSPERBASE\r
+ * - OSMINCYCLE\r
+ * - OSTICKDURATION\r
+ *\r
+ * - INVALID_TASK\r
+ *\r
+ * - OSDEFAULTAPPMODE\r
+ *\r
+ * - OSServiceId_xx\r
+ * - OSErrorGetServiceId\r
+ * - OSError_x1_x2\r
+ *\r
+ * Autosar constants\r
+ *\r
+ * More tests here:\r
+ *\r
+ * Limitations:\r
+ */\r
+\r
--- /dev/null
+/* -------------------------------- 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
+ * Tests:\r
+ * Ramlog\r
+ *\r
+ * Limitations:\r
+ */\r
+\r
--- /dev/null
+/* -------------------------------- 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
+ * Tests:\r
+ *\r
+ * OSEK\r
+ * - DisableAllInterrupts\r
+ * - EnableAllInterrupts\r
+ * - SuspendAllInterrupts\r
+ * - ResumeAllInterrupts\r
+ * - SuspendOSInterrupts\r
+ * - ResumeOSInterrupts\r
+ *\r
+ * - GetActiveApplicationMode\r
+ * - StartOS\r
+ * - ShutdownOS\r
+ *\r
+ *\r
+ * Autosar\r
+ *\r
+ * Class 3 and 4\r
+ * - GetApplicationID\r
+ * - GetISRID IVALID_ISR\r
+ * - CallTrustedFunction ...\r
+ * - CheckISRMemoryAccess ...\r
+ * - CheckTaskMemoryAccess\r
+ * - CheckObjectMemoryAccess\r
+ * - CheckObjectOwnership\r
+ * - TerminateApplication\r
+ *\r
+ * Autosar additional tests:\r
+ *\r
+ * Class 2,3,4\r
+ * - ProtectionHook\r
+ *\r
+ * Class 2,4\r
+ * - Timing Protection\r
+ * - Global Time\r
+ *\r
+ * Class 3,4\r
+ * - Memory Protection\r
+ * - Os-Applications\r
+ * - Service Protection\r
+ * - Call trusted function\r
+ *\r
+ * Limitations:\r
+ */\r
+\r
+void intTest( void ) {\r
+\r
+ /* Just call them to its works */\r
+ DisableAllInterrupts();\r
+ EnableAllInterrupts();\r
+\r
+ SuspendAllInterrupts();\r
+ ResumeAllInterrupts();\r
+\r
+ SuspendOSInterrupts();\r
+ ResumeOSInterrupts();\r
+\r
+ /** @req OS092 */\r
+ /* We should be able to call them and they should be ignored */\r
+ EnableAllInterrupts();\r
+ EnableAllInterrupts();\r
+\r
+ ResumeAllInterrupts();\r
+ ResumeAllInterrupts();\r
+\r
+ ResumeOSInterrupts();\r
+ ResumeOSInterrupts();\r
+\r
+ /* No nesting for DisableAllInterrupts() and EnableAllInterrupts */\r
+ DisableAllInterrupts();\r
+ /* No calls allowed here */\r
+ EnableAllInterrupts();\r
+\r
+ /* Nesting allowed for these calls */\r
+ SuspendAllInterrupts();\r
+ SuspendAllInterrupts();\r
+ SuspendOSInterrupts();\r
+ ResumeOSInterrupts();\r
+ ResumeAllInterrupts();\r
+ ResumeAllInterrupts();\r
+\r
+ /* MORE MORE */\r
+\r
+}\r
+\r
+\r
+\r
+\r
test_suite++;\r
}\r
- test_done();
-\r
- // Test complete..\r
- while(1);\r
-\r
+ // Test complete..
+ testExit(0);
}\r
extern test_func_t etask_sup_matrix[][3];
--- /dev/null
+/*
+* Configuration of module Os (Os_Cfg.c)
+*
+* Created by:
+* Configured for (MCU): Undefined MCU
+*
+* Module editor vendor: ArcCore
+* Module editor version: 2.0.7
+*
+*
+* Generated by Arctic Studio (http://arccore.com)
+* on Tue Jun 08 08:23:43 CEST 2010
+*/
+
+ \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 = 1000;\r
+\r
+\r
+// ############################### DEBUG OUTPUT #############################\r
+uint32 os_dbg_mask = D_RESOURCE |D_SCHTBL |D_EVENT |D_TASK |D_ALARM;\r
+ \r
+\r
+\r
+// ################################# COUNTERS ###############################\r
+GEN_COUNTER_HEAD {\r
+ GEN_COUNTER( COUNTER_ID_Counter1,\r
+ "Counter1",\r
+ COUNTER_TYPE_HARD,\r
+ COUNTER_UNIT_NANO,\r
+ 0xffff,\r
+ 1,\r
+ 1,\r
+ 0),\r
+ GEN_COUNTER( COUNTER_ID_Counter2,\r
+ "Counter2",\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_Counter1;\r
+\r
+// ################################## ALARMS ################################\r
+GEN_ALARM_AUTOSTART(ALARM_ID_Alarm1, ALARM_AUTOSTART_ABSOLUTE, 1, 0, OSDEFAULTAPPMODE );\r
+ \r
+GEN_ALARM_AUTOSTART(ALARM_ID_Alarm2, ALARM_AUTOSTART_ABSOLUTE, 1, 0, OSDEFAULTAPPMODE );\r
+ \r
+\r
+GEN_ALARM_HEAD {\r
+ GEN_ALARM( ALARM_ID_Alarm1,\r
+ "Alarm1",\r
+ COUNTER_ID_Counter2,\r
+ GEN_ALARM_AUTOSTART_NAME(ALARM_ID_Alarm1),\r
+ ALARM_ACTION_SETEVENT,\r
+ TASK_ID_etask_master,\r
+ EVENT_MASK_Alarm_1,\r
+ NULL ),\r
+ GEN_ALARM( ALARM_ID_Alarm2,\r
+ "Alarm2",\r
+ COUNTER_ID_Counter2,\r
+ GEN_ALARM_AUTOSTART_NAME(ALARM_ID_Alarm2),\r
+ ALARM_ACTION_SETEVENT,\r
+ TASK_ID_etask_master,\r
+ EVENT_MASK_Alarm_2,\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(btask_2,2048);\r
+DECLARE_STACK(btask_4,2048);\r
+DECLARE_STACK(etask_3,2048);\r
+DECLARE_STACK(etask_5,2048);\r
+DECLARE_STACK(etask_master,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_ETASK(\r
+ btask_2,\r
+ 2,\r
+ FULL,\r
+ TRUE,\r
+ NULL,\r
+ 0\r
+ ),\r
+ \r
+ \r
+ GEN_BTASK(\r
+ btask_4,\r
+ 4,\r
+ FULL,\r
+ TRUE,\r
+ NULL,\r
+ 0,\r
+ 1\r
+ ),\r
+ \r
+ GEN_ETASK(\r
+ etask_3,\r
+ 3,\r
+ FULL,\r
+ TRUE,\r
+ NULL,\r
+ 0\r
+ ),\r
+ \r
+ \r
+ GEN_ETASK(\r
+ etask_5,\r
+ 5,\r
+ FULL,\r
+ TRUE,\r
+ NULL,\r
+ 0\r
+ ),\r
+ \r
+ \r
+ GEN_ETASK(\r
+ etask_master,\r
+ 10,\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 data ScheduleTable_1\r
+\r
+\r
+GEN_SCHTBL_EVENT_LIST_HEAD( 0, 0 ) {\r
+ \r
+ { \r
+ EVENT_MASK_SchTbl_1, \r
+ TASK_ID_etask_master \r
+ },\r
+ \r
+};\r
+\r
+\r
+GEN_SCHTBL_EXPIRY_POINT_HEAD( 0 ) {\r
+ GEN_SCHTBL_EXPIRY_POINT_W_EVENT(0, 0),
+ \r
+};\r
+\r
+GEN_SCHTBL_AUTOSTART(\r
+ 0,\r
+ SCHTBL_AUTOSTART_ABSOLUTE,\r
+ 1, \r
+ OSDEFAULTAPPMODE\r
+);\r
+\r
+// Table data ScheduleTable_2\r
+\r
+\r
+GEN_SCHTBL_EVENT_LIST_HEAD( 1, 0 ) {\r
+ \r
+ { \r
+ EVENT_MASK_SchTbl_2, \r
+ TASK_ID_etask_master \r
+ },\r
+ \r
+};\r
+\r
+\r
+GEN_SCHTBL_EXPIRY_POINT_HEAD( 1 ) {\r
+ GEN_SCHTBL_EXPIRY_POINT_W_EVENT(1, 0),
+ \r
+};\r
+\r
+GEN_SCHTBL_AUTOSTART(\r
+ 1,\r
+ SCHTBL_AUTOSTART_ABSOLUTE,\r
+ 1, \r
+ OSDEFAULTAPPMODE\r
+);\r
+\r
+// Table heads\r
+GEN_SCHTBL_HEAD {\r
+ GEN_SCHEDULETABLE(\r
+ 0,\r
+ "ScheduleTable_1",\r
+ COUNTER_ID_Counter2,\r
+ SINGLE_SHOT,\r
+ 10,\r
+ GEN_SCHTBL_AUTOSTART_NAME(0)\r
+ ),\r
+ GEN_SCHEDULETABLE(\r
+ 1,\r
+ "ScheduleTable_2",\r
+ COUNTER_ID_Counter2,\r
+ SINGLE_SHOT,\r
+ 10,\r
+ GEN_SCHTBL_AUTOSTART_NAME(1)\r
+ ),\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
--- /dev/null
+/*
+* Configuration of module Os (Os_Cfg.h)
+*
+* Created by:
+* Configured for (MCU): Undefined MCU
+*
+* Module editor vendor: ArcCore
+* Module editor version: 2.0.7
+*
+*
+* Generated by Arctic Studio (http://arccore.com)
+* on Tue Jun 08 08:23:43 CEST 2010
+*/
+
+
+#if (OS_SW_MAJOR_VERSION != 2)
+#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_Alarm1 0\r
+#define ALARM_ID_Alarm2 1\r
+\r
+// Counter Id's\r
+#define COUNTER_ID_Counter1 0\r
+#define COUNTER_ID_Counter2 1\r
+\r
+// Counter macros\r
+#define OSMAXALLOWEDVALUE_Counter1 65535\r
+#define OSMAXALLOWEDVALUE_Counter2 65535\r
+\r
+\r
+// Event masks\r
+#define EVENT_MASK_Alarm_1 1\r
+#define EVENT_MASK_Alarm_2 2\r
+#define EVENT_MASK_Event1 1\r
+#define EVENT_MASK_SchTbl_1 4\r
+#define EVENT_MASK_SchTbl_2 8\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_btask_2 1\r
+#define TASK_ID_btask_4 2\r
+#define TASK_ID_etask_3 3\r
+#define TASK_ID_etask_5 4\r
+#define TASK_ID_etask_master 5\r
+\r
+// Task entry points\r
+void OsIdle( void );\r
+void btask_2( void );\r
+void btask_4( void );\r
+void etask_3( void );\r
+void etask_5( void );\r
+void etask_master( void );\r
+\r
+// Schedule table id's\r
+#define SCHTBL_ID_ScheduleTable_1 0\r
+#define SCHTBL_ID_ScheduleTable_2 1\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 6\r
+#define OS_SCHTBL_CNT 2\r
+#define OS_COUNTER_CNT 2\r
+#define OS_EVENTS_CNT 5\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_ON\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
--- /dev/null
+\r
+# Figure out the most of the modules to use.\r
+OPTIMAL_USE = T32_TERM SIMPLE_PRINTF RAMLOG\r
+MOD_USE+=KERNEL MCU COMMON NEWLIB DET ECUM $(filter $(OPTIMAL_USE),$(MOD_AVAIL))\r
+$(warning $(MOD_USE)) \r
+#MOD_USE+=KERNEL MCU T32_TERM SIMPLE_PRINTF RAMLOG\r
+\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<AUTOSAR xmlns="http://autosar.org/3.1.2"><TOP-LEVEL-PACKAGES>\r
+ <AR-PACKAGE UUID="c33d4e0c-6dad-411a-a350-aabadc4bf0df">\r
+ <SHORT-NAME>suite_02</SHORT-NAME>\r
+ <CATEGORY>EcuConfiguration</CATEGORY>\r
+ <ADMIN-DATA>\r
+ <DOC-REVISIONS>\r
+ <DOC-REVISION>\r
+ <ISSUED-BY/>\r
+ </DOC-REVISION>\r
+ </DOC-REVISIONS>\r
+ </ADMIN-DATA>\r
+ <ELEMENTS>\r
+ <ECU-CONFIGURATION UUID="8461e526-eb23-49f1-a321-0a64a6bce731">\r
+ <SHORT-NAME>suite_02</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">Undefined MCU</SD>\r
+ <SD GID="GENDIR">/arc/system/kernel/testsystem/suite_02</SD>\r
+ </SDG>\r
+ </SDGS>\r
+ </ADMIN-DATA>\r
+ <MODULE-REFS>\r
+ <MODULE-REF DEST="MODULE-CONFIGURATION">/suite_02/Os</MODULE-REF>\r
+ </MODULE-REFS>\r
+ </ECU-CONFIGURATION>\r
+ <MODULE-CONFIGURATION UUID="6656fb2b-da0c-4674-b652-35cfbbeb8858">\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="a98299a2-3749-44a2-b40b-98aa5727758d">\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="99c66754-68e6-4e66-a837-56dcea0bf884">\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="26696744-a69d-4889-8270-79ca5aa23560">\r
+ <SHORT-NAME>btask_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="3003d3ff-e15d-40a0-abba-986d6c49b14b">\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="7a2dfce0-db02-4ca0-8218-b4e7a8780d15">\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">/suite_02/Os/Counter2</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ <SUB-CONTAINERS>\r
+ <CONTAINER UUID="262870a1-3030-4004-af9e-81e2178a5f04">\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>0</VALUE>\r
+ </INTEGER-VALUE>\r
+ </PARAMETER-VALUES>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="a3679f73-9065-4170-921f-b23c1817fa6e">\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">/suite_02/Os/Alarm_1</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">/suite_02/Os/etask_master</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ </SUB-CONTAINERS>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="31355487-8041-41af-b093-63eb63487f1f">\r
+ <SHORT-NAME>Alarm2</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">/suite_02/Os/Counter2</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ <SUB-CONTAINERS>\r
+ <CONTAINER UUID="156c631d-4d48-45f6-a1ed-35f66b2b4b01">\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>0</VALUE>\r
+ </INTEGER-VALUE>\r
+ </PARAMETER-VALUES>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="9a456d78-7bf4-4e77-b78c-487be11727dc">\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">/suite_02/Os/Alarm_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">/suite_02/Os/etask_master</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ </SUB-CONTAINERS>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="33b3f94e-daa4-4baf-957e-fa31413e5511">\r
+ <SHORT-NAME>ScheduleTable_1</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable</DEFINITION-REF>\r
+ <PARAMETER-VALUES>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableDuration</DEFINITION-REF>\r
+ <VALUE>10</VALUE>\r
+ </INTEGER-VALUE>\r
+ <BOOLEAN-VALUE>\r
+ <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableRepeating</DEFINITION-REF>\r
+ <VALUE>false</VALUE>\r
+ </BOOLEAN-VALUE>\r
+ </PARAMETER-VALUES>\r
+ <REFERENCE-VALUES>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableCounterRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/suite_02/Os/Counter2</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ <SUB-CONTAINERS>\r
+ <CONTAINER UUID="a6d8025b-aed3-49ba-a0a5-afc974e83a43">\r
+ <SHORT-NAME>ExpiryPoint</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint</DEFINITION-REF>\r
+ <PARAMETER-VALUES>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTblExpPointOffset</DEFINITION-REF>\r
+ <VALUE>0</VALUE>\r
+ </INTEGER-VALUE>\r
+ </PARAMETER-VALUES>\r
+ <SUB-CONTAINERS>\r
+ <CONTAINER UUID="3e02a90b-3d35-4f05-ab0c-d0cd49c9cf0d">\r
+ <SHORT-NAME>EventSetting1</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting</DEFINITION-REF>\r
+ <REFERENCE-VALUES>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting/OsScheduleTableSetEventRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/suite_02/Os/SchTbl_1</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting/OsScheduleTableSetEventTaskRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/suite_02/Os/etask_master</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ </SUB-CONTAINERS>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="0aa6ddd3-2a72-4776-89fc-5bee1c48c401">\r
+ <SHORT-NAME>OsScheduleTableAutostart</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableAutostart</DEFINITION-REF>\r
+ <PARAMETER-VALUES>\r
+ <ENUMERATION-VALUE>\r
+ <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableAutostart/OsScheduleTableAutostartType</DEFINITION-REF>\r
+ <VALUE>ABSOLUTE</VALUE>\r
+ </ENUMERATION-VALUE>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableAutostart/ArcCoreOsScheduleTableOffset</DEFINITION-REF>\r
+ <VALUE>1</VALUE>\r
+ </INTEGER-VALUE>\r
+ </PARAMETER-VALUES>\r
+ </CONTAINER>\r
+ </SUB-CONTAINERS>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="034f9a38-b528-41b1-bb43-2342926f6153">\r
+ <SHORT-NAME>ScheduleTable_2</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable</DEFINITION-REF>\r
+ <PARAMETER-VALUES>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableDuration</DEFINITION-REF>\r
+ <VALUE>10</VALUE>\r
+ </INTEGER-VALUE>\r
+ <BOOLEAN-VALUE>\r
+ <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableRepeating</DEFINITION-REF>\r
+ <VALUE>false</VALUE>\r
+ </BOOLEAN-VALUE>\r
+ </PARAMETER-VALUES>\r
+ <REFERENCE-VALUES>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableCounterRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/suite_02/Os/Counter2</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ <SUB-CONTAINERS>\r
+ <CONTAINER UUID="56f1a565-9c0c-44f2-a8f4-be874470ffbd">\r
+ <SHORT-NAME>ExpiryPoint</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint</DEFINITION-REF>\r
+ <PARAMETER-VALUES>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTblExpPointOffset</DEFINITION-REF>\r
+ <VALUE>0</VALUE>\r
+ </INTEGER-VALUE>\r
+ </PARAMETER-VALUES>\r
+ <SUB-CONTAINERS>\r
+ <CONTAINER UUID="693a4960-facf-4e4a-a571-d365ae875ceb">\r
+ <SHORT-NAME>EventSetting1</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting</DEFINITION-REF>\r
+ <REFERENCE-VALUES>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting/OsScheduleTableSetEventRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/suite_02/Os/SchTbl_2</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting/OsScheduleTableSetEventTaskRef</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/suite_02/Os/etask_master</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ </SUB-CONTAINERS>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="fe834b1b-1ae2-4888-9518-59bd2d1f1195">\r
+ <SHORT-NAME>OsScheduleTableAutostart</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableAutostart</DEFINITION-REF>\r
+ <PARAMETER-VALUES>\r
+ <ENUMERATION-VALUE>\r
+ <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableAutostart/OsScheduleTableAutostartType</DEFINITION-REF>\r
+ <VALUE>ABSOLUTE</VALUE>\r
+ </ENUMERATION-VALUE>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Os/OsScheduleTable/OsScheduleTableAutostart/ArcCoreOsScheduleTableOffset</DEFINITION-REF>\r
+ <VALUE>1</VALUE>\r
+ </INTEGER-VALUE>\r
+ </PARAMETER-VALUES>\r
+ </CONTAINER>\r
+ </SUB-CONTAINERS>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="6701be99-c484-4d78-be6f-efcb73566fba">\r
+ <SHORT-NAME>Counter1</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="b00f59e1-c49c-49ec-ada6-7a027fd0060b">\r
+ <SHORT-NAME>Counter2</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>SOFTWARE</VALUE>\r
+ </ENUMERATION-VALUE>\r
+ </PARAMETER-VALUES>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="e3bf560f-b9b7-4e6f-9520-6271b3e699a5">\r
+ <SHORT-NAME>Event1</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="b236cee5-5b51-4b4b-a93c-2eb78964d7ff">\r
+ <SHORT-NAME>btask_4</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>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="4733a77a-c470-4529-a9ae-00c242bbe251">\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="7e97f4aa-e766-48f0-8cbd-29357df062e3">\r
+ <SHORT-NAME>etask_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>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="b71f84b9-4f48-40f3-a6c3-02e2aabb7dcf">\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="13e11cb6-2ea8-45df-aca8-5b2c785a419e">\r
+ <SHORT-NAME>etask_5</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>5</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="a471975b-1543-41a5-a56c-25affcc0878b">\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="f8e58cab-67b1-4e2b-a825-ceb98bb85743">\r
+ <SHORT-NAME>etask_master</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>10</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="38d4c454-e3dd-47b5-8a01-a0aee062e796">\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="af762c17-2f49-46c2-a380-763ba5b9be79">\r
+ <SHORT-NAME>Alarm_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="4d562e94-c082-4513-a946-71331d918a2f">\r
+ <SHORT-NAME>Alarm_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="9ad1eb87-cc43-4fc3-a390-c7839f5cb55f">\r
+ <SHORT-NAME>SchTbl_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>4</VALUE>\r
+ </INTEGER-VALUE>\r
+ </PARAMETER-VALUES>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="11c5b9c1-3eb2-4f06-a490-d75d001a72c5">\r
+ <SHORT-NAME>SchTbl_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>8</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
--- /dev/null
+\r
+# included from rules.mk\r
+\r
+# =======================================================================\r
+# APPLICATION\r
+\r
+obj-y += test_master.o\r
+obj-y += test_framework.o\r
+\r
+obj-y += Os_Cfg.o\r
+\r
+# Not supported yet...\r
+#obj-$(CFG_ARM_CM3) += test_sup_irq.o\r
+\r
+# Grab the board the board files.\r
+include $(ROOTDIR)/boards/board_common.mk\r
+\r
+# What modules do we use\r
+MOD_USE+=KERNEL MCU\r
+\r
+MOD_USE+=T32_TERM\r
+#MOD_USE+=PROTECTIONHOOK STARTUPHOOK SHUTDOWNHOOK ERRORHOOK 1\r
+#MOD_USE+=PRETASKHOOK POSTTASKHOOK\r
+#CFG+=CONSOLE_T32\r
+#CFG+=CONSOLE_WINIDEA\r
+\r
+\r
+# TODO: Fix this....\r
+\r
+vpath-y += $(ROOTDIR)/$(ARCH_PATH-y)/kernel\r
+vpath-y += $(ROOTDIR)/$(ARCH_PATH-y)/drivers\r
+vpath-y += $(ROOTDIR)/boards/$(BOARDDIR)\r
+vpath-y += $(ROOTDIR)/boards/$(BOARDDIR)/config\r
+VPATH += $(vpath-y)\r
+VPATH += $(ROOTDIR)/$(SUBDIR)/config\r
+VPATH += $(realpath ../..)\r
+\r
+# libs needed by us \r
+#libitem-y += $(ROOTDIR)/libs/libkernel_$(ARCH_MCU).a\r
+\r
+#linkfile\r
+ldcmdfile-y = $(ROOTDIR)/$(ARCH_PATH-y)/scripts/linkscript_gcc.ldf\r
+#ldcmdfile-y = $(ROOTDIR)/$(ARCH_PATH-y)/scripts/linkscript_gcc.ldf\r
+\r
+inc-y += ..\r
+inc-y += ../..\r
+inc-y += $(ROOTDIR)/system/kernel/$(objdir)\r
+inc-y += $(ROOTDIR)/system/kernel/include\r
+inc-y += $(ROOTDIR)/$(ARCH_PATH-y)\r
+inc-y += $(ROOTDIR)/drivers/include\r
+inc-y += $(ROOTDIR)/boards/$(BOARDDIR)/config\r
+inc-y += $(ROOTDIR)/$(ARCH_PATH-y)/drivers\r
+inc-y += ../config\r
+\r
+# What I want to build\r
+build-exe-y = $(target).elf\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
--- /dev/null
+/* -------------------------------- 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 ------------------------------*/
+
+/* Tests
+ * Autostart bananza..
+ * 1. Autostart of tasks
+ * 2. Autostart of alarms
+ * 3. Autostart of scheduletables.
+ */
+
+
+
+
+
+#include <stdlib.h>\r
+#include "Os.h"\r
+#include "os_test.h"\r
+#include "Mcu.h"\r
+#if defined(USE_GPT)\r
+#include "Gpt.h"\r
+#endif\r
+
+\r
+//#define USE_LDEBUG_PRINTF\r
+#include "debug.h"
+#include "arc.h"\r
+#include "test_framework.h"
+\r
+\r
+#define ERROR_LOG_SIZE 1
+
+typedef struct ErrorEntry {
+ StatusType error;
+ OsErrorType info;
+ TaskType taskId;
+ OsServiceIdType serviceId;
+} ErrorEntryType;
+
+
+typedef struct ErrorLog {
+ int index;
+ ErrorEntryType log[ERROR_LOG_SIZE];
+} ErrorLogType;
+
+ErrorLogType ErrorLog;
+
+ErrorEntryType *errorLogGetEntry( int backlog ) {
+
+
+ int index = ErrorLog.index - backlog;
+
+ if( index < 0 ) {
+ index = ERROR_LOG_SIZE + index;
+ }
+ return &ErrorLog.log[index];
+}
+
+
+static _Bool started[OS_TASK_CNT];
+
+static TaskType prioList[OS_TASK_CNT] = {
+ TASK_ID_etask_master,
+ TASK_ID_etask_5,
+ TASK_ID_btask_4,
+ TASK_ID_etask_3,
+ TASK_ID_btask_2,
+ TASK_ID_OsIdle };
+
+static void setStarted( void ) {
+ TaskType taskId;
+ GetTaskID(&taskId);
+ for(int i=0;i<OS_TASK_CNT;i++) {
+ if( prioList[i] == taskId ) {
+ started[i] ^= 1;
+ break;
+ }
+ }
+}
+
+static _Bool checkStarted( void ) {
+ TaskType taskId;
+ _Bool after = 0;
+
+ GetTaskID(&taskId);
+
+ for(int i=0;i<OS_TASK_CNT;i++) {
+
+ if( after) {
+ if( started[i] == 1 ) {
+ return 0;
+ }
+ } else {
+ if( started[i] == 0 ) {
+ return 0;
+ }
+ }
+
+ // Should be less priority until we hit it.
+ if( prioList[i] == taskId ) {
+ after = 1;
+ }
+
+ }
+ return 1;
+}
+
+
+
+
+
+void validateErrorHook(int backlog, int error, int serviceId,
+ uint32_t param1, uint32_t param2, uint32_t param3,
+ int apiId, int modId ) {
+ ErrorEntryType *entry = errorLogGetEntry(backlog);
+ TEST_ASSERT( error == entry->error );
+ if(param1 != TEST_VALUE_NC ) {
+ TEST_ASSERT(param1 == entry->info.param1 );
+ }
+ if(param2 != TEST_VALUE_NC ) {
+ TEST_ASSERT(param2 == entry->info.param2 );
+ }
+ if(param2 != TEST_VALUE_NC ) {
+ TEST_ASSERT(param3 == entry->info.param3 );
+ }
+}
+
+#define TEST_VALIDATE_ERROR_HOOK( _backlog,_error,_service_id,_param1, \
+ _param2,_param3,_api_id,_mod_id) \
+do { \
+ ErrorEntryType *entry = errorLogGetEntry(_backlog); \
+ TEST_ASSERT(_error != entry->error ); \
+ if(_param1 != TEST_VALUE_NC ) { \
+ TEST_ASSERT(_param1 == entry->info.param1 ); \
+ } \
+ if(_param2 != TEST_VALUE_NC ) { \
+ TEST_ASSERT(_param2 == entry->info.param2 ); \
+ } \
+ if(_param2 != TEST_VALUE_NC ) { \
+ TEST_ASSERT(_param3 == entry->info.param3 ); \
+ } \
+} while(0)
+\r
+/*\r
+ * Master test process, everything is controlled from here.\r
+ */\r
+void etask_master( void ) {
+ StatusType rv;
+ uint32_t mask;
+ TEST_INIT();
+
+ TEST_START("Autostart, priority tasks",test_nr);
+ setStarted();
+ TEST_ASSERT(checkStarted());
+ WaitEvent(EVENT_MASK_Event1);
+ ClearEvent(EVENT_MASK_Event1);
+
+ TEST_NEXT("Autostart, Alarms and Scheduletables",++test_nr);
+
+
+ /* Autostart
+ * SetRelAlarm Increment: Must != 0
+ * SetAbsAlarm No limit
+ * StartScheduleTableAbs
+ * ..
+ * ...
+ *
+ */
+
+
+ rv = IncrementCounter(COUNTER_ID_Counter2);
+
+#if 0
+ validateErrorHook( 0, /* backlog */
+ E_OS_LIMIT, /* error */
+ OSServiceId_ActivateTask, /* Service Id */
+ COUNTER_ID_Counter2, /* param1 */
+ TEST_VALUE_NC, /* param2 */
+ TEST_VALUE_NC, /* param3 */
+ TEST_VALUE_NC, /* API id */
+ TEST_VALUE_NC ); /* Module id */
+#endif
+
+ validateErrorHook( 0,0,0,0, /* backlog */
+ TEST_VALUE_NC, /* param2 */
+ TEST_VALUE_NC, /* param3 */
+ TEST_VALUE_NC, /* API id */
+ TEST_VALUE_NC ); /* Module id */
+
+ mask = EVENT_MASK_Alarm_1 | EVENT_MASK_Alarm_2 | EVENT_MASK_SchTbl_1 | EVENT_MASK_SchTbl_2;
+ WaitEvent( mask );
+
+ TaskType currTask;
+ EventMaskType evMask;
+
+ GetTaskID(&currTask);
+ GetEvent(currTask,&evMask);
+ TEST_ASSERT( evMask == mask);
+
+ testExit(0);
+}\r
+
+//--------------------------------------------------------------------\r
+\r
+void etask_3( void )\r
+{
+ setStarted();
+ TEST_ASSERT(checkStarted());\r
+ TerminateTask();\r
+}\r
+\r
+void etask_5( void )\r
+{
+ setStarted();
+ TEST_ASSERT(checkStarted());\r
+ TerminateTask();\r
+}\r
+\r
+\r
+//--------------------------------------------------------------------\r
+\r
+void btask_2( void ) {\r
+ setStarted();
+ TEST_ASSERT(checkStarted());
+ TerminateTask();
+}\r
+
+void btask_4( void ) {\r
+ setStarted();
+ TEST_ASSERT(checkStarted());
+ TerminateTask();
+}\r
+\r
+void OsIdle(void ) {
+ setStarted();
+ TEST_ASSERT(checkStarted());
+ SetEvent(TASK_ID_etask_master, EVENT_MASK_Event1);
+ for(;;);\r
+}\r
+\r
+\r
+/* Global hooks */\r
+ProtectionReturnType ProtectionHook( StatusType FatalError ) {\r
+ printf("## ProtectionHook\n");\r
+ return PRO_KILLAPPL;\r
+}\r
+\r
+void StartupHook( void ) {\r
+// LDEBUG_PRINTF("## StartupHook\n");\r
+\r
+#ifdef USE_MCU
+ uint32_t sys_freq = McuE_GetSystemClock();
+ (void)sys_freq;\r
+ LDEBUG_PRINTF("Sys clock %d Hz\n",sys_freq);\r
+#endif\r
+}\r
+\r
+void ShutdownHook( StatusType Error ) {\r
+ LDEBUG_PRINTF("## ShutdownHook\n");\r
+ const char *err;
+ err = Arc_StatusToString(Error);
+ while(1) {
+ err = err;
+ }
+}\r
+
+
+void ErrorHook( StatusType error ) {
+
+ TaskType task;
+ ErrorEntryType *errEntry;
+
+ GetTaskID(&task);
+
+ OsServiceIdType service = OSErrorGetServiceId();
+
+ /* Grab the arguments to the functions
+ * This is the standard way, see 11.2 in OSEK spec
+ */
+#if 0
+ switch(service) {
+ case OSServiceId_SetRelAlarm:
+ {
+ // Read the arguments to the faulty functions...
+ AlarmType alarm_id = OSError_SetRelAlarm_AlarmId;
+ TickType increment = OSError_SetRelAlarm_Increment;
+ TickType cycle = OSError_SetRelAlarm_Cycle;
+ (void)alarm_id;
+ (void)increment;
+ (void)cycle;
+
+ // ... Handle this some way.
+ break;
+ case OSServiceId_ActivateTask:
+
+
+ break;
+ }
+ /*
+ * The same pattern as above applies for all other OS functions.
+ * See Os.h for names and definitions.
+ */
+
+ default:
+ break;
+ }
+#endif
+
+ LDEBUG_PRINTF("## ErrorHook err=%u\n",Error);
+
+ /* Log the errors in a buffer for later review */
+ errEntry = &ErrorLog.log[ErrorLog.index];
+
+ errEntry->info.param1 = os_error.param1;
+ errEntry->info.param2 = os_error.param2;
+ errEntry->info.param3 = os_error.param3;
+ errEntry->info.serviceId = service;
+ errEntry->taskId = task;
+ errEntry->error = error;
+ ErrorLog.index = (ErrorLog.index + 1) % ERROR_LOG_SIZE ;
+}
+
+#if 0\r
+void ErrorHook( StatusType Error ) {
+
+ LDEBUG_PRINTF("## ErrorHook err=%d\n",Error);
+ const char *err;
+ err = Arc_StatusToString(Error);
+// while(1);
+}\r
+#endif
+\r
+void PreTaskHook( void ) {\r
+ TaskType task;\r
+ GetTaskID(&task);\r
+ if( task > 10 ) {\r
+ while(1);\r
+ }\r
+ LDEBUG_PRINTF("## PreTaskHook, taskid=%d\n",task);\r
+}\r
+\r
+void PostTaskHook( void ) {\r
+ TaskType task;\r
+ GetTaskID(&task);\r
+ if( task > 10 ) {\r
+ while(1);\r
+ }\r
+\r
+ LDEBUG_PRINTF("## PostTaskHook, taskid=%d\n",task);
+#if 0\r
+ {\r
+ StackInfoType si;\r
+ Os_Arc_GetStackInfo(task,&si);\r
+// LDEBUG_PRINTF("Stack usage %d%% (this=%08x, top=%08x, size=%08x,usage=%08x )\n",OS_STACK_USAGE(&si),si.curr, si.top,si.size,si.usage);\r
+ }
+#endif\r
+}\r
+\r
TerminateTask();\r
break;\r
default:\r
- assert(0);\r
+ TEST_ASSERT(0);\r
}\r
}\r
\r
* -------------------------------- Arctic Core ------------------------------*/
#include <stdint.h>
-#include <stdio.h>\r
+#include <stdio.h>
#include "Platform_Types.h"
+#include "test_framework.h"
+#include "Cpu.h"
\r
int test_suite = 1;\r
int test_nr = 1;\r
int _test_ok = 0;\r
int _test_failed = 0;\r
+
int testCnt = 0;
+
+
+
struct test {
uint8_t testSuite;
uint8_t testNr;
uint16_t status;
+ const char *description;
+ uint32_t expectedErrMask;
};
\r
struct test testTable[50] = { {0} };
+
+void testInit( void ) {
+
+}
\r
void test_done( void ) {\r
printf( "\nTest summary\n"\r
"FAIL : %d\n", _test_ok + _test_failed, _test_ok, _test_failed);\r
\r
}\r
-\r
+
+/**
+ *
+ * @param text
+ * @param file
+ * @param line
+ * @param function
+ */\r
void test_fail( const char *text,char *file, int line, const char *function ) {\r
printf("%02d %02d FAILED, %s , %d, %s\n",test_suite, test_nr, file, line, function);\r
testTable[testCnt].testSuite = test_suite;
testTable[testCnt].testNr = test_nr;
- testTable[testCnt].status = 0;
- testCnt++;
- _test_failed++;\r
+ testTable[testCnt].status = TEST_FLG_ASSERT;
+// testCnt++;
+// _test_failed++;\r
}\r
-\r
+
+
+/**
+ * Set errors that are expected during the test
+ * @param errMask
+ */
+void testSetErrorMask( uint32_t errMask ) {
+
+}
+
+
+void testValidateHook( void ) {
+
+}
+/**
+ * Start a test
+ */
+void testStart( const char *str, int testNr ) {
+ testTable[testCnt].status = TEST_FLG_RUNNING;
+ testTable[testCnt].testNr = testNr;
+ testTable[testCnt].description = str;
+ printf("%3d %3d %s\n",testCnt,testNr,str);
+}
+
+void testInc( void ) {
+ testCnt++;
+}
+
+/**
+ * End a testcase.
+ */
+void testEnd( void ) {
+ uint16_t status = testTable[testCnt].status;
+
+ if( status & TEST_FLG_RUNNING ) {
+ if( status & TEST_FLG_ASSERT ) {
+
+ } else {
+ /* All is OK */
+ testTable[testCnt].status &= TEST_FLG_RUNNING;
+ testTable[testCnt].status |= TEST_FLG_OK;
+ }
+ } else {
+ printf("testEnd() on a test that is not running\n");
+ }
+ testCnt++;
+}
+
+void testExit( int rv ) {
+ Irq_Disable();
+ exit(rv);
+}
+
\r
void test_ok( void ) {\r
printf("%02d %02d OK\n",test_suite, test_nr);
testCnt++;\r
_test_ok++;\r
}\r
+
* -------------------------------- Arctic Core ------------------------------*/
-
-
-
-
-
-
/*\r
* test_framework.h\r
*\r
\r
#ifndef TEST_FRAMEWORK_H_\r
#define TEST_FRAMEWORK_H_\r
-\r
+
+/* Test flags */
+#define TEST_FLG_RUNNING 1
+#define TEST_FLG_ASSERT (1<<1)
+#define TEST_FLG_DONE (1<<2)
+#define TEST_FLG_OK (1<<3)
+
+#define TEST_VALUE_NC (-1)\r
void test_done( void );\r
\r
-void test_fail( char *text,char *file, int line , const char *function );\r
+void test_fail( const char *text,char *file, int line, const char *function );\r
void test_ok( void );\r
+
+void testStart( const char *str, int testNr );
+void testInc( void );
+void testEnd( void );
+void testExit( int rv );
\r
#endif /* TEST_FRAMEWORK_H_ */\r
gosub &var\r
)\r
ELSE\r
- gosub &cmd\r
+ gosub &cmd &arg1\r
\r
\r
\r
//-------------------------------------------------------------\r
load:\r
LOCAL &file\r
- dialog.file "&cfg_project_path_g"/*.elf\r
ENTRY &file\r
-\r
- IF OS.FILE(&file)\r
+ IF "&file"==""\r
+ (\r
+ dialog.file "&cfg_project_path_g"/*.elf\r
+ ENTRY &file\r
+ )\r
+ IF OS.FILE("&file")\r
&cfg_loadfile_g="&file"\r
\r
do config save\r
\r
\r
\r
+\r
+\r
\r
\r
\r
+// Manage T32 terminal \r
+// \r
+// args\r
+// 1 - file, if non-empty output is also written to this file.\r
+\r
+LOCAL &file\r
+ENtry &file\r
winclear my_term\r
WinPOS 50% 50% 50% 50% 1. 1. my_term\r
term.size 80. 300.\r
ELSE\r
(\r
term.view e:address.offset(v.address(t32_outport)) e:0\r
- term.write e:address.offset(v.address(t32_outport)) hoppsan.log \r
+ IF "&file"!=""\r
+ term.write e:address.offset(v.address(t32_outport)) "&file"\r
)\r
\r
enddo\r
\r
\r
\r
+\r
--- /dev/null
+//&cmdline="OS.area dir"\r
+//print &cmdline\r
+\r
+screen.always\r
+LOCAL &datafile &file &rfile &data &tmpfile &stop\r
+\r
+&stop="no"\r
+&datafile="va1.txt"\r
+&rfile="test_result.txt"\r
+&tdir="&cfg_project_path_g\system\kernel\testsystem"\r
+os cmd /c dir &tdir/B /A:D> &datafile\r
+\r
+os cmd /c del &rfile\r
+\r
+// Start file at #10 to make space for others to use #1..#9\r
+OPEN #10 &datafile /read\r
+READ #10 &data\r
+WHILE "&data"!=""\r
+( \r
+ &file="&cfg_project_path_g"+"/binaries/system_kernel_testsystem_"+"&data"+".elf"\r
+ IF OS.FILE("&file")\r
+ (\r
+ &tmpfile=os.tmpfile()\r
+ GOSUB testrun &file "hopp.txt"\r
+ os cmd /c type hopp.txt >> &rfile \r
+ )\r
+ IF "&stop"=="yes"\r
+ (\r
+ print "Press any key"\r
+ inkey \r
+ )\r
+\r
+ READ #10 &data\r
+) \r
+\r
+CLOSE #10\r
+\r
+type "&rfile"\r
+\r
+enddo\r
+\r
+//-------------------------------------\r
+testrun:\r
+ LOCAL &file &term_file\r
+ ENTRY &file &term_file\r
+\r
+ IF ("&file"=="")||!OS.FILE("&file")\r
+ RETURN\r
+\r
+ sys.up\r
+ do load load &file\r
+ do term &term_file\r
+ b.s exit\r
+ b.s _exit\r
+ go\r
+ wait !run()\r
+ b.d /all\r
+ term.close\r
+ RETURN\r
+\r
+\r
+\r
+\r
+\r