AutosarOS
CfgGenMacros.h
Go to the documentation of this file.
1 
14 /* Undefine already existing defines for generation */
15 #ifdef OS_STACK_MONITORING
16 #undef OS_STACK_MONITORING
17 #endif
18 #ifdef OS_CONFIG_TASK_BEGIN
19 #undef OS_CONFIG_TASK_BEGIN
20 #endif
21 #ifdef OS_CONFIG_TASK_DEF
22 #undef OS_CONFIG_TASK_DEF
23 #endif
24 #ifdef OS_CONFIG_TASK_END
25 #undef OS_CONFIG_TASK_END
26 #endif
27 #ifdef OS_CONFIG_INT_BEGIN
28 #undef OS_CONFIG_INT_BEGIN
29 #endif
30 #ifdef OS_CONFIG_INT_DEF
31 #undef OS_CONFIG_INT_DEF
32 #endif
33 #ifdef OS_CONFIG_INT_END
34 #undef OS_CONFIG_INT_END
35 #endif
36 #ifdef OS_CONFIG_RESOURCE_BEGIN
37 #undef OS_CONFIG_RESOURCE_BEGIN
38 #endif
39 #ifdef OS_CONFIG_RESOURCE_DEF
40 #undef OS_CONFIG_RESOURCE_DEF
41 #endif
42 #ifdef OS_CONFIG_RESOURCE_END
43 #undef OS_CONFIG_RESOURCE_END
44 #endif
45 #ifdef OS_CONFIG_INTERNAL_RESOURCE_BEGIN
46 #undef OS_CONFIG_INTERNAL_RESOURCE_BEGIN
47 #endif
48 #ifdef OS_CONFIG_INTERNAL_RESOURCE_DEF
49 #undef OS_CONFIG_INTERNAL_RESOURCE_DEF
50 #endif
51 #ifdef OS_CONFIG_INTERNAL_RESOURCE_END
52 #undef OS_CONFIG_INTERNAL_RESOURCE_END
53 #endif
54 #ifdef OS_CONFIG_COUNTER_BEGIN
55 #undef OS_CONFIG_COUNTER_BEGIN
56 #endif
57 #ifdef OS_CONFIG_COUNTER_DEF
58 #undef OS_CONFIG_COUNTER_DEF
59 #endif
60 #ifdef OS_CONFIG_COUNTER_END
61 #undef OS_CONFIG_COUNTER_END
62 #endif
63 #ifdef OS_CONFIG_ALARM_BEGIN
64 #undef OS_CONFIG_ALARM_BEGIN
65 #endif
66 #ifdef OS_CONFIG_ALARM_DEF
67 #undef OS_CONFIG_ALARM_DEF
68 #endif
69 #ifdef OS_CONFIG_ALARM_END
70 #undef OS_CONFIG_ALARM_END
71 #endif
72 #ifdef OS_CONFIG_ALARM_CALLBACK
73 #undef OS_CONFIG_ALARM_CALLBACK
74 #endif
75 #ifdef OS_CONFIG_SCHEDULE_TABLE_BEGIN
76 #undef OS_CONFIG_SCHEDULE_TABLE_BEGIN
77 #endif
78 #ifdef OS_CONFIG_SCHEDULE_TABLE_DEF_BEGIN
79 #undef OS_CONFIG_SCHEDULE_TABLE_DEF_BEGIN
80 #endif
81 #ifdef OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINTS_BEGIN
82 #undef OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINTS_BEGIN
83 #endif
84 #ifdef OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINT_DEF_BEGIN
85 #undef OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINT_DEF_BEGIN
86 #endif
87 #ifdef OS_CONFIG_SCHEDULE_TABLE_TASK_ACTIONS_BEGIN
88 #undef OS_CONFIG_SCHEDULE_TABLE_TASK_ACTIONS_BEGIN
89 #endif
90 #ifdef OS_CONFIG_SCHEDULE_TABLE_TASK_ACTION_DEF
91 #undef OS_CONFIG_SCHEDULE_TABLE_TASK_ACTION_DEF
92 #endif
93 #ifdef OS_CONFIG_SCHEDULE_TABLE_TASK_ACTIONS_END
94 #undef OS_CONFIG_SCHEDULE_TABLE_TASK_ACTIONS_END
95 #endif
96 #ifdef OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTIONS_BEGIN
97 #undef OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTIONS_BEGIN
98 #endif
99 #ifdef OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTION_DEF
100 #undef OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTION_DEF
101 #endif
102 #ifdef OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTIONS_END
103 #undef OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTIONS_END
104 #endif
105 #ifdef OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINT_DEF_END
106 #undef OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINT_DEF_END
107 #endif
108 #ifdef OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINTS_END
109 #undef OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINTS_END
110 #endif
111 #ifdef OS_CONFIG_SCHEDULE_TABLE_DEF_END
112 #undef OS_CONFIG_SCHEDULE_TABLE_DEF_END
113 #endif
114 #ifdef OS_CONFIG_SCHEDULE_TABLE_END
115 #undef OS_CONFIG_SCHEDULE_TABLE_END
116 #endif
117 #ifdef OS_CONFIG_SYSTEM_STACK
118 #undef OS_CONFIG_SYSTEM_STACK
119 #endif
120 
121 /* Generate documentation */
122 #ifdef __DOXYGEN__
123 
129 #define OS_CONFIG_HOOK_STARTUP
130 
136 #define OS_CONFIG_HOOK_SHUTDOWN
137 
144 #define OS_CONFIG_HOOK_PRE_TASK
145 
152 #define OS_CONFIG_HOOK_POST_TASK
153 
164 #define OS_CONFIG_HOOK_ERROR
165 
172 #define OS_CONFIG_HOOK_PROTECTION
173 
180 #define OS_CONFIG_EXTENDED
181 
195 #define OS_CONFIG_MAX_ERROR_PARAM
196 
223 #define OS_CONFIG_STACK_MONITORING
224 
232 #define OS_CONFIG_SYSTEM_STACK(Size)
233 
237 #define OS_CONFIG_TASK_BEGIN
238 
257 #define OS_CONFIG_TASK_DEF(Name, Prio, StackSize, NumberOfActivations, Autostart, TaskType, TaskSchedule, Res, Events)
258 
262 #define OS_CONFIG_TASK_END
263 
267 #define TASK_COUNT
268 
272 #define OS_CONFIG_INT_BEGIN
273 
290 #define OS_CONFIG_INT_DEF(Name, Prio)
291 
295 #define OS_CONFIG_INT_END
296 
300 #define OS_CONFIG_RESOURCE_BEGIN
301 
308 #define OS_CONFIG_RESOURCE_DEF(Name, Prio)
309 
313 #define OS_CONFIG_RESOURCE_END
314 
318 #define RESOURCE_COUNT
319 
323 #define OS_CONFIG_INTERNAL_RESOURCE_BEGIN
324 
331 #define OS_CONFIG_INTERNAL_RESOURCE_DEF(Name, Prio)
332 
336 #define OS_CONFIG_INTERNAL_RESOURCE_END
337 
341 #define OS_CONFIG_COUNTER_BEGIN
342 
353 #define OS_CONFIG_COUNTER_DEF(Name, MaxAllowedValue, MinCycle, TicksPerBase, Type, SecondsPerTick)
354 
358 #define OS_CONFIG_COUNTER_END
359 
363 #define COUNTER_COUNT
364 
368 #define OS_CONFIG_ALARM_BEGIN
369 
392 #define OS_CONFIG_ALARM_DEF(Name, Base, AutoStart, Event, Type, Action, Expiration, Cycle)
393 
397 #define OS_CONFIG_ALARM_END
398 
402 #define ALARM_COUNT
403 
412 #define OS_CONFIG_ALARM_CALLBACK(Name)
413 
417 #define OS_CONFIG_SCHEDULE_TABLE_BEGIN
418 
428 #define OS_CONFIG_SCHEDULE_TABLE_DEF_BEGIN(Name, Counter, AutoStart, Cyclic, FinalDelay)
429 
443 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINTS_BEGIN(NumExpiryPoints)
444 
458 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINT_DEF_BEGIN(Offset, NumTaskActions, NumEventActions)
459 
468 #define OS_CONFIG_SCHEDULE_TABLE_TASK_ACTIONS_BEGIN
469 
478 #define OS_CONFIG_SCHEDULE_TABLE_TASK_ACTION_DEF(Task)
479 
486 #define OS_CONFIG_SCHEDULE_TABLE_TASK_ACTIONS_END
487 
496 #define OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTIONS_BEGIN
497 
504 #define OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTION_DEF(Task, Event)
505 
512 #define OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTIONS_END
513 
520 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINT_DEF_END
521 
528 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINTS_END
529 
536 #define OS_CONFIG_SCHEDULE_TABLE_DEF_END
537 
541 #define OS_CONFIG_SCHEDULE_TABLE_END
542 
543 #endif /* __DOXYGEN__ */
544 
545 
546 /* Generate enumerations based on config */
547 #ifdef OS_CONFIG_GEN_ENUM
548 
549 #define OS_CONFIG_SYSTEM_STACK(Size)
550 
551 #define OS_CONFIG_TASK_BEGIN enum tasks_e {
552 #define OS_CONFIG_TASK_DEF(Name, Prio, StackSize, NumberOfActivations, \
553  Autostart, TaskType, TaskSchedule, Res, Events) Name,
554 #define OS_CONFIG_TASK_END INVALID_TASK};
555 
556 #define TASK_COUNT INVALID_TASK
557 
558 #define OS_CONFIG_INT_BEGIN
559 #define OS_CONFIG_INT_DEF(Name, Prio)
560 #define OS_CONFIG_INT_END
561 
562 #define OS_CONFIG_RESOURCE_BEGIN enum resources_e {
563 #define OS_CONFIG_RESOURCE_DEF(Name, Prio) Name,
564 #define OS_CONFIG_RESOURCE_END INVALID_RESOURCE};
565 
566 #define RESOURCE_COUNT INVALID_RESOURCE
567 
568 #define OS_CONFIG_INTERNAL_RESOURCE_BEGIN
569 #define OS_CONFIG_INTERNAL_RESOURCE_DEF(Name, Prio)
570 #define OS_CONFIG_INTERNAL_RESOURCE_END
571 
572 #define OS_CONFIG_COUNTER_BEGIN enum counters_e { \
573  SYSTEM_COUNTER,
574 #define OS_CONFIG_COUNTER_DEF(Name, MaxAllowedValue, MinCycle, \
575  TicksPerBase, Type, SecondsPerTick) Name,
576 #define OS_CONFIG_COUNTER_END INVALID_COUNTER};
577 
578 #define COUNTER_COUNT INVALID_COUNTER
579 
580 #define OS_CONFIG_ALARM_BEGIN enum alarm_e {
581 #define OS_CONFIG_ALARM_DEF(Name, Base, AutoStart, Event, Type, \
582  Action, Expiration, Cycle) Name,
583 #define OS_CONFIG_ALARM_END INVALID_ALARM};
584 
585 #define ALARM_COUNT INVALID_ALARM
586 
587 #define OS_CONFIG_ALARM_CALLBACK(Name)
588 
589 #define OS_CONFIG_SCHEDULE_TABLE_BEGIN enum scheduleTables_e {
590 #define OS_CONFIG_SCHEDULE_TABLE_DEF_BEGIN(Name, Counter, AutoStart, \
591  Cyclic, FinalDelay) Name,
592 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINTS_BEGIN(NumExpiryPoints)
593 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINT_DEF_BEGIN(Offset, NumTaskActions, \
594  NumEventActions)
595 #define OS_CONFIG_SCHEDULE_TABLE_TASK_ACTIONS_BEGIN
596 #define OS_CONFIG_SCHEDULE_TABLE_TASK_ACTION_DEF(Task)
597 #define OS_CONFIG_SCHEDULE_TABLE_TASK_ACTIONS_END
598 #define OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTIONS_BEGIN
599 #define OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTION_DEF(Task, Event)
600 #define OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTIONS_END
601 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINT_DEF_END
602 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINTS_END
603 #define OS_CONFIG_SCHEDULE_TABLE_DEF_END
604 #define OS_CONFIG_SCHEDULE_TABLE_END INVALID_SCHEDULETABLE};
605 
606 #define SCHEDULETABLE_COUNT INVALID_SCHEDULETABLE
607 
608 #endif /* OS_CONFIG_GEN_ENUM */
609 
610 /* Generate function declarations based on config */
611 #ifdef OS_CONFIG_GEN_FUNC_DECL
612 
613 #define OS_CONFIG_SYSTEM_STACK(Size)
614 
615 #define OS_CONFIG_TASK_BEGIN
616 #define OS_CONFIG_TASK_DEF(Name, Prio, StackSize, NumberOfActivations, \
617  Autostart, TaskType, TaskSchedule, Res, Events) TASK(Name);
618 #define OS_CONFIG_TASK_END
619 
620 #define OS_CONFIG_INT_BEGIN
621 #define OS_CONFIG_INT_DEF(Name, Prio) extern void Func ## Name(void);
622 #define OS_CONFIG_INT_END
623 
624 #define OS_CONFIG_RESOURCE_BEGIN
625 #define OS_CONFIG_RESOURCE_DEF(Name, Prio)
626 #define OS_CONFIG_RESOURCE_END
627 
628 #define OS_CONFIG_INTERNAL_RESOURCE_BEGIN
629 #define OS_CONFIG_INTERNAL_RESOURCE_DEF(Name, Prio)
630 #define OS_CONFIG_INTERNAL_RESOURCE_END
631 
632 #define OS_CONFIG_COUNTER_BEGIN
633 #define OS_CONFIG_COUNTER_DEF(Name, MaxAllowedValue, MinCycle, \
634  TicksPerBase, Type, SecondsPerTick)
635 #define OS_CONFIG_COUNTER_END
636 
637 #define OS_CONFIG_ALARM_BEGIN
638 #define OS_CONFIG_ALARM_DEF(Name, Base, AutoStart, Event, Type, \
639  Action, Expiration, Cycle)
640 #define OS_CONFIG_ALARM_END
641 
642 #define OS_CONFIG_ALARM_CALLBACK(Name) extern void Name(void);
643 
644 #define OS_CONFIG_SCHEDULE_TABLE_BEGIN
645 #define OS_CONFIG_SCHEDULE_TABLE_DEF_BEGIN(Name, Counter, AutoStart, \
646  Cyclic, FinalDelay)
647 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINTS_BEGIN(NumExpiryPoints)
648 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINT_DEF_BEGIN(Offset, NumTaskActions, \
649  NumEventActions)
650 #define OS_CONFIG_SCHEDULE_TABLE_TASK_ACTIONS_BEGIN
651 #define OS_CONFIG_SCHEDULE_TABLE_TASK_ACTION_DEF(Task)
652 #define OS_CONFIG_SCHEDULE_TABLE_TASK_ACTIONS_END
653 #define OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTIONS_BEGIN
654 #define OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTION_DEF(Task, Event)
655 #define OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTIONS_END
656 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINT_DEF_END
657 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINTS_END
658 #define OS_CONFIG_SCHEDULE_TABLE_DEF_END
659 #define OS_CONFIG_SCHEDULE_TABLE_END
660 
661 #endif /* OS_CONFIG_GEN_FUNC_DECL */
662 
663 /* Generate functions based on config */
664 #ifdef OS_CONFIG_GEN_FUNC
665 
666 #define OS_CONFIG_SYSTEM_STACK(Size)
667 
668 #define OS_CONFIG_TASK_BEGIN
669 #define OS_CONFIG_TASK_DEF(Name, Prio, StackSize, NumberOfActivations, \
670  Autostart, TaskType, TaskSchedule, Res, Events)
671 #define OS_CONFIG_TASK_END
672 
673 #define OS_CONFIG_INT_BEGIN
674 #define OS_CONFIG_INT_DEF(Name, Prio) ISR(Name, ISR_NAKED) { \
675  save_context(); \
676  OS_SystemStack[0] = 0xBE; \
677  SP = (uint16_t) OS_SystemStackPtr; \
678  isISR = true; \
679  isCat2ISR = Prio; \
680  if (currentTask == INVALID_TASK || Prio == 0 \
681  || Prio > TCB_Cfg[currentTask]->curPrio) \
682  Func ## Name(); \
683  if (OS_SystemStack[0] != 0xBE) \
684  OS_ProtectionHookInternal(E_OS_STACKFAULT); \
685  isISR = false; \
686  isCat2ISR = 0; \
687  restore_context(); \
688  asm volatile("reti"); \
689  }
690 #define OS_CONFIG_INT_END
691 
692 #define OS_CONFIG_RESOURCE_BEGIN
693 #define OS_CONFIG_RESOURCE_DEF(Name, Prio)
694 #define OS_CONFIG_RESOURCE_END
695 
696 #define OS_CONFIG_INTERNAL_RESOURCE_BEGIN
697 #define OS_CONFIG_INTERNAL_RESOURCE_DEF(Name, Prio)
698 #define OS_CONFIG_INTERNAL_RESOURCE_END
699 
700 #define OS_CONFIG_COUNTER_BEGIN
701 #define OS_CONFIG_COUNTER_DEF(Name, MaxAllowedValue, MinCycle, \
702  TicksPerBase, Type, SecondsPerTick)
703 #define OS_CONFIG_COUNTER_END
704 
705 #define OS_CONFIG_ALARM_BEGIN
706 #define OS_CONFIG_ALARM_DEF(Name, Base, AutoStart, Event, Type, \
707  Action, Expiration, Cycle)
708 #define OS_CONFIG_ALARM_END
709 
710 #define OS_CONFIG_ALARM_CALLBACK(Name)
711 
712 #define OS_CONFIG_SCHEDULE_TABLE_BEGIN
713 #define OS_CONFIG_SCHEDULE_TABLE_DEF_BEGIN(Name, Counter, AutoStart, \
714  Cyclic, FinalDelay)
715 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINTS_BEGIN(NumExpiryPoints)
716 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINT_DEF_BEGIN(Offset, NumTaskActions, \
717  NumEventActions)
718 #define OS_CONFIG_SCHEDULE_TABLE_TASK_ACTIONS_BEGIN
719 #define OS_CONFIG_SCHEDULE_TABLE_TASK_ACTION_DEF(Task)
720 #define OS_CONFIG_SCHEDULE_TABLE_TASK_ACTIONS_END
721 #define OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTIONS_BEGIN
722 #define OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTION_DEF(Task, Event)
723 #define OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTIONS_END
724 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINT_DEF_END
725 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINTS_END
726 #define OS_CONFIG_SCHEDULE_TABLE_DEF_END
727 #define OS_CONFIG_SCHEDULE_TABLE_END
728 
729 #endif /* OS_CONFIG_GEN_FUNC */
730 
731 /* Generate data structures based on config */
732 #ifdef OS_CONFIG_GEN_DATA_STRUCT
733 
734 #if defined (OS_CONFIG_STACK_MONITORING) && OS_CONFIG_STACK_MONITORING >= 2
735 #define OS_STACK_MONITORING_MARKER_SIZE 1
736 #else /* defined (OS_CONFIG_STACK_MONITORING) && OS_CONFIG_STACK_MONITORING >= 2 */
737 #define OS_STACK_MONITORING_MARKER_SIZE 0
738 #endif /* defined (OS_CONFIG_STACK_MONITORING) && OS_CONFIG_STACK_MONITORING >= 2 */
739 
740 #define OS_CONFIG_SYSTEM_STACK(Size) uint8_t OS_SystemStack[Size + 1]; \
741  uint8_t* const OS_SystemStackPtr = OS_SystemStack + sizeof(OS_SystemStack) - 1;
742 
743 #define OS_CONFIG_TASK_BEGIN
744 #define OS_CONFIG_TASK_DEF(Name, Prio, StackSize, NumberOfActivations, \
745  Autostart, TaskType, TaskSchedule, Res, Events) uint8_t Task##Name##_stack[StackSize + OS_STACK_MONITORING_MARKER_SIZE]; \
746  volatile struct task_s Task##Name##_s = { \
747  .stack = ((uint8_t* const) &Task##Name##_stack) + OS_STACK_MONITORING_MARKER_SIZE, \
748  .stackSize = StackSize, \
749  .prio = Prio, \
750  .numberOfActivations = NumberOfActivations, \
751  .autostart = Autostart, \
752  .taskType = TaskType, \
753  .taskSchedule = TaskSchedule, \
754  .taskFxn = PTASK(Name), \
755  .context = Task##Name##_stack + StackSize - 1 + OS_STACK_MONITORING_MARKER_SIZE, \
756  .curPrio = Prio, \
757  .curState = SUSPENDED, \
758  .resourceQueue = NULL, \
759  .internalResource = &IntResource##Res##_s, \
760  .events = Events, \
761  };
762 #define OS_CONFIG_TASK_END
763 
764 #define OS_CONFIG_INT_BEGIN
765 #define OS_CONFIG_INT_DEF(Name, Prio)
766 #define OS_CONFIG_INT_END
767 
768 #define OS_CONFIG_RESOURCE_BEGIN
769 #define OS_CONFIG_RESOURCE_DEF(Name, Prio) volatile struct resource_s Resource##Name##_s = { \
770  .prio = Prio, \
771  .assigned = false, \
772  .next = NULL \
773  };
774 #define OS_CONFIG_RESOURCE_END
775 
776 #define OS_CONFIG_INTERNAL_RESOURCE_BEGIN volatile struct internalResource_s IntResourceNULL_s;
777 #define OS_CONFIG_INTERNAL_RESOURCE_DEF(Name, Prio) volatile struct internalResource_s IntResource##Name##_s = { \
778  .prio = Prio, \
779  .assigned = false \
780  };
781 #define OS_CONFIG_INTERNAL_RESOURCE_END
782 
783 #define OS_CONFIG_COUNTER_BEGIN volatile struct counter_s CounterSYSTEM_COUNTER_s = { \
784  .maxallowedvalue = UINT32_MAX, \
785  .mincycle = 1, \
786  .ticksperbase = 57, \
787  .type = HARDWARE, \
788  .secondspertick = 0.017778, \
789  .value = 0 \
790  };
791 #define OS_CONFIG_COUNTER_DEF(Name, MaxAllowedValue, MinCycle, \
792  TicksPerBase, Type, SecondsPerTick) volatile struct counter_s Counter##Name##_s = { \
793  .maxallowedvalue = MaxAllowedValue, \
794  .mincycle = MinCycle, \
795  .ticksperbase = TicksPerBase, \
796  .type = Type, \
797  .secondspertick = SecondsPerTick, \
798  .value = 0 \
799  };
800 #define OS_CONFIG_COUNTER_END
801 
802 #define OS_CONFIG_ALARM_BEGIN
803 #define OS_CONFIG_ALARM_DEF(Name, Base, AutoStart, Event, Type, \
804  Action, Expiration, Cycle) volatile struct alarm_s Alarm##Name##_s = { \
805  .alarmBase = &Counter##Base##_s, \
806  .event = Event, \
807  .actionType = Type, \
808  .action.action = (void*) Action, \
809  .running = AutoStart, \
810  .expiration = Expiration, \
811  .cycle = Cycle \
812  };
813 #define OS_CONFIG_ALARM_END
814 
815 #define OS_CONFIG_ALARM_CALLBACK(Name)
816 
817 #define OS_CONFIG_SCHEDULE_TABLE_BEGIN
818 #define OS_CONFIG_SCHEDULE_TABLE_DEF_BEGIN(Name, Counter, AutoStart, \
819  Cyclic, FinalDelay) struct scheduleTable_s ScheduleTable##Name##_s = { \
820  .counter = Counter, \
821  .autoStart = AutoStart, \
822  .cyclic = Cyclic, \
823  .finalDelay = FinalDelay, \
824  .currentState = SCHEDULETABLE_STOPPED, \
825  .next = INVALID_SCHEDULETABLE,
826 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINTS_BEGIN(NumExpiryPoints) .numExpiryPoints = NumExpiryPoints, \
827  .expiryPointList = (struct scheduleTableExpiryPoint_s[]) {
828 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINT_DEF_BEGIN(Offset, NumTaskActions, \
829  NumEventActions) { .offset = Offset, \
830  .numTaskActions = NumTaskActions, \
831  .numEventActions = NumEventActions,
832 #define OS_CONFIG_SCHEDULE_TABLE_TASK_ACTIONS_BEGIN .taskActionList = (struct scheduleTableExpiryActionTask_s[]) {
833 #define OS_CONFIG_SCHEDULE_TABLE_TASK_ACTION_DEF(Task) { .task = Task },
834 #define OS_CONFIG_SCHEDULE_TABLE_TASK_ACTIONS_END },
835 #define OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTIONS_BEGIN .eventActionList = (struct scheduleTableExpiryActionEvent_s[]) {
836 #define OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTION_DEF(Task, Event) { .task = Task, .event = Event },
837 #define OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTIONS_END },
838 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINT_DEF_END },
839 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINTS_END },
840 #define OS_CONFIG_SCHEDULE_TABLE_DEF_END };
841 #define OS_CONFIG_SCHEDULE_TABLE_END
842 
843 #endif /* OS_CONFIG_GEN_DATA_STRUCT */
844 
845 /* Generate OS Task Control Block */
846 #ifdef OS_CONFIG_GEN_TCB
847 
848 #define OS_CONFIG_SYSTEM_STACK(Size)
849 
850 #define OS_CONFIG_TASK_BEGIN volatile struct task_s* TCB_Cfg[TASK_COUNT] = {
851 #define OS_CONFIG_TASK_DEF(Name, Prio, StackSize, NumberOfActivations, \
852  Autostart, TaskType, TaskSchedule, Res, Events) &Task##Name##_s,
853 #define OS_CONFIG_TASK_END };
854 
855 #define OS_CONFIG_INT_BEGIN
856 #define OS_CONFIG_INT_DEF(Name, Prio)
857 #define OS_CONFIG_INT_END
858 
859 #define OS_CONFIG_RESOURCE_BEGIN volatile struct resource_s* Res_Cfg[RESOURCE_COUNT] = {
860 #define OS_CONFIG_RESOURCE_DEF(Name, Prio) &Resource##Name##_s,
861 #define OS_CONFIG_RESOURCE_END };
862 
863 #define OS_CONFIG_INTERNAL_RESOURCE_BEGIN
864 #define OS_CONFIG_INTERNAL_RESOURCE_DEF(Name, Prio)
865 #define OS_CONFIG_INTERNAL_RESOURCE_END
866 
867 #define OS_CONFIG_COUNTER_BEGIN volatile struct counter_s* Counter_Cfg[COUNTER_COUNT] = { \
868  &CounterSYSTEM_COUNTER_s,
869 #define OS_CONFIG_COUNTER_DEF(Name, MaxAllowedValue, MinCycle, \
870  TicksPerBase, Type, SecondsPerTick) &Counter##Name##_s,
871 #define OS_CONFIG_COUNTER_END };
872 
873 #define OS_CONFIG_ALARM_BEGIN volatile struct alarm_s* Alarm_Cfg[ALARM_COUNT] = {
874 #define OS_CONFIG_ALARM_DEF(Name, Base, AutoStart, Event, Type, \
875  Action, Expiration, Cycle) &Alarm##Name##_s,
876 #define OS_CONFIG_ALARM_END };
877 
878 #define OS_CONFIG_ALARM_CALLBACK(Name)
879 
880 #define OS_CONFIG_SCHEDULE_TABLE_BEGIN struct scheduleTable_s* ScheduleTable_Cfg[SCHEDULETABLE_COUNT] = {
881 #define OS_CONFIG_SCHEDULE_TABLE_DEF_BEGIN(Name, Counter, AutoStart, \
882  Cyclic, FinalDelay) &ScheduleTable##Name##_s,
883 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINTS_BEGIN(NumExpiryPoints)
884 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINT_DEF_BEGIN(Offset, NumTaskActions, \
885  NumEventActions)
886 #define OS_CONFIG_SCHEDULE_TABLE_TASK_ACTIONS_BEGIN
887 #define OS_CONFIG_SCHEDULE_TABLE_TASK_ACTION_DEF(Task)
888 #define OS_CONFIG_SCHEDULE_TABLE_TASK_ACTIONS_END
889 #define OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTIONS_BEGIN
890 #define OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTION_DEF(Task, Event)
891 #define OS_CONFIG_SCHEDULE_TABLE_EVENT_ACTIONS_END
892 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINT_DEF_END
893 #define OS_CONFIG_SCHEDULE_TABLE_EXPIRY_POINTS_END
894 #define OS_CONFIG_SCHEDULE_TABLE_DEF_END
895 #define OS_CONFIG_SCHEDULE_TABLE_END };
896 
897 #endif /* OS_CONFIG_GEN_TCB */
898 
899 
900 /* Undefine current generation defines */
901 #ifdef OS_CONFIG_GEN_ENUM
902 #undef OS_CONFIG_GEN_ENUM
903 #endif
904 #ifdef OS_CONFIG_GEN_FUNC_DECL
905 #undef OS_CONFIG_GEN_FUNC_DECL
906 #endif
907 #ifdef OS_CONFIG_GEN_DATA_STRUCT
908 #undef OS_CONFIG_GEN_DATA_STRUCT
909 #endif
910 #ifdef OS_CONFIG_GEN_TCB
911 #undef OS_CONFIG_GEN_TCB
912 #endif