]> rtime.felk.cvut.cz Git - arc.git/blob - include/os_config_funcs.h
Initial commit.
[arc.git] / include / os_config_funcs.h
1 /* -------------------------------- Arctic Core ------------------------------
2  * Arctic Core - the open source AUTOSAR platform http://arccore.com
3  *
4  * Copyright (C) 2009  ArcCore AB <contact@arccore.com>
5  *
6  * This source code is free software; you can redistribute it and/or modify it
7  * under the terms of the GNU General Public License version 2 as published by the
8  * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.
9  *
10  * This program is distributed in the hope that it will be useful, but
11  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
13  * for more details.
14  * -------------------------------- Arctic Core ------------------------------*/
15
16
17
18
19
20
21
22
23 \r
24 /*\r
25  * This file only be use with the Os_Cfg.c file and os_config_macros.h\r
26  */\r
27 #include "kernel.h"\r
28 #include "Os_Cfg.h"\r
29 \r
30 // COUNTER, RESOURCE, TSAK, must be at least 1\r
31 #define COUNTER_CNT                             ARRAY_SIZE(counter_list)\r
32 #define RESOURCE_CNT                    ARRAY_SIZE(resource_list)\r
33 #define TASK_CNT                                ARRAY_SIZE(rom_pcb_list)\r
34 \r
35 #if defined(ALARM_USE)\r
36 #define ALARM_CNT                               ARRAY_SIZE(alarm_list)\r
37 #else\r
38 #define ALARM_CNT                               0\r
39 #endif\r
40 \r
41 #if defined(SCHEDULETABLE_USE)\r
42 #define SCHEDULETABLE_CNT               ARRAY_SIZE(sched_list)\r
43 #else\r
44 #define SCHEDULETABLE_CNT               0\r
45 #endif\r
46 \r
47 #if defined(MESSAGE_CNT)\r
48 #undef MESSAGE_CNT\r
49 #define MESSAGE_CNT                             ARRAY_SIZE(message_list)\r
50 #else\r
51 #define MESSAGE_CNT                             0\r
52 #endif\r
53 \r
54 #if defined(EVENT_CNT)\r
55 #undef EVENT_CNT\r
56 #define EVENT_CNT                               ARRAY_SIZE(event_list)\r
57 #else\r
58 #define EVENT_CNT                               0\r
59 #endif\r
60 \r
61 #if defined(SERVICE_CNT)\r
62 #undef SERVICE_CNT\r
63 #define SERVICE_CNT                             ARRAY_SIZE(os_cfg_trusted_list)\r
64 #else\r
65 #define SERVICE_CNT                             0\r
66 #endif\r
67 \r
68 os_error_t os_error;\r
69 \r
70 //-------------------------------------------------------------------\r
71 \r
72 \r
73 /*\r
74  * Accessor functions for os_config.c\r
75  */\r
76 \r
77 #if 0\r
78 #if SERVICE_CNT!=0\r
79 trusted_func_t oil_trusted_func_list[SERVICE_CNT];\r
80 #endif\r
81 #endif\r
82 \r
83 /*-----------------------------------------------------------------*/\r
84 int Oil_GetApplCnt(void) {\r
85         return APPLICATION_CNT;\r
86 }\r
87 \r
88 rom_app_t *Oil_GetApplObj( ApplicationType application_id ) {\r
89         return &rom_app_list[application_id];\r
90 }\r
91 \r
92 /*-----------------------------------------------------------------*/\r
93 int Oil_GetTaskCnt(void) {\r
94         return TASK_CNT;\r
95 }\r
96 /*-----------------------------------------------------------------*/\r
97 \r
98 resource_obj_t *Oil_GetResource( ResourceType resource ) {\r
99         return &resource_list[resource];\r
100 }\r
101 \r
102 int Oil_GetResourceCnt() {\r
103         return RESOURCE_CNT;\r
104 }\r
105 \r
106 /*-----------------------------------------------------------------*/\r
107 \r
108 counter_obj_t *Oil_GetCounter(CounterType count_id) {\r
109         return &counter_list[count_id];\r
110 }\r
111 \r
112 uint32 Oil_GetCounterCnt(void ) {\r
113         return COUNTER_CNT;\r
114 //      return sizeof(counter_list)/sizeof(counter_obj_t);\r
115 }\r
116 /*-----------------------------------------------------------------*/\r
117 \r
118 uint32 Oil_GetSchedCnt(  void ) {\r
119         return SCHEDULETABLE_CNT;\r
120 }\r
121 \r
122 sched_table_t *Oil_GetSched( ScheduleTableType sched_id ) {\r
123 #if defined(SCHEDULETABLE_USE)\r
124         if(sched_id < SCHEDULETABLE_CNT) {\r
125                 return &sched_list[sched_id];\r
126         } else {\r
127                 return NULL;\r
128         }\r
129 #else\r
130         return NULL;\r
131 #endif\r
132 }\r
133 \r
134 /*-----------------------------------------------------------------*/\r
135 \r
136 uint32 Oil_GetAlarmCnt(void) {\r
137         return ALARM_CNT;\r
138 }\r
139 \r
140 alarm_obj_t *Oil_GetAlarmObj( AlarmType alarm_id ) {\r
141 #if defined(ALARM_USE)\r
142         if( alarm_id < ALARM_CNT) {\r
143           return &alarm_list[alarm_id];\r
144         } else {\r
145                 return NULL;\r
146         }\r
147 #else\r
148         return NULL;\r
149 #endif\r
150 }\r
151 \r
152 StatusType Oil_GetAlarmBase(AlarmType alarm_id, AlarmBaseRefType info) {\r
153 \r
154         StatusType rv = E_OK;\r
155 \r
156         if( alarm_id >= Oil_GetAlarmCnt() ) {\r
157                 rv = E_OS_ID;\r
158         }\r
159 #if defined(ALARM_USE)\r
160         *info = alarm_list[alarm_id].counter->alarm_base;\r
161 #endif\r
162         return rv;\r
163 }\r
164 \r
165 \r
166 /*-----------------------------------------------------------------*/\r
167 \r
168 message_obj_t *Oil_GetMessage(MessageType message_id) {\r
169 #if MESSAGE_CNT!=0\r
170         return &message_list[message_id];\r
171 #else\r
172         return NULL;\r
173 #endif\r
174 }\r
175 \r
176 uint32 Oil_GetMessageCnt(void ) {\r
177         return MESSAGE_CNT;\r
178 }\r
179 \r
180 /*-----------------------------------------------------------------*/\r
181 \r
182 uint32 Oil_GetServiceCnt( void ) {\r
183         return SERVICE_CNT;\r
184 }\r
185 \r
186 \r
187 /*-----------------------------------------------------------------*/\r
188 \r
189 void Oil_GetInterruptStackInfo( stack_t *stack ) {\r
190         stack->top = os_interrupt_stack;\r
191         stack->size = sizeof(os_interrupt_stack);\r
192 }\r
193 \r
194 \r
195 \r
196 \r
197 \r