Choco OS  V.0.16.9.0
Join to the chocolate world
oc_object.h
Go to the documentation of this file.
1 
28 #ifndef SYSTEM_LIBRARIES_INC_OC_OBJECT_H_
29 #define SYSTEM_LIBRARIES_INC_OC_OBJECT_H_
30 
31 #include <oc_1word.h>
32 #include <stdbool.h>
33 #include <stdint.h>
34 #include <oc_assert.h>
35 
41 #define _________________________________________MACROS_SECTION_____________________________________________________________________________
42 
45 //==========================================================================================================================================
62 //==========================================================================================================================================
63 #define oC_OBJECTS_REGISTRATIONS_LIST(ADD_OBJECT) \
64  ADD_OBJECT(Thread) \
65  ADD_OBJECT(Mutex) \
66  ADD_OBJECT(Semaphore) \
67  ADD_OBJECT(Event) \
68  ADD_OBJECT(Signal) \
69  ADD_OBJECT(List) \
70  ADD_OBJECT(TimerContext) \
71  ADD_OBJECT(Process) \
72  ADD_OBJECT(User) \
73  ADD_OBJECT(Stream) \
74  ADD_OBJECT(UartContext) \
75  ADD_OBJECT(DevFsFile) \
76  ADD_OBJECT(DevFsDir) \
77  ADD_OBJECT(RamFsContext) \
78  ADD_OBJECT(RamFsFile) \
79  ADD_OBJECT(RamFsDir) \
80  ADD_OBJECT(LedContext) \
81  ADD_OBJECT(PwmContext) \
82  ADD_OBJECT(LcdTftContext) \
83  ADD_OBJECT(FmcContext) \
84  ADD_OBJECT(FlashFsFile) \
85  ADD_OBJECT(FlashFsDir) \
86  ADD_OBJECT(Screen) \
87  ADD_OBJECT(ETHContext) \
88  ADD_OBJECT(Netif) \
89  ADD_OBJECT(Queue) \
90  ADD_OBJECT(TcpConnection) \
91  ADD_OBJECT(TcpServer) \
92  ADD_OBJECT(TelnetConnectionContext) \
93  ADD_OBJECT(TelnetServiceContext) \
94  ADD_OBJECT(Service) \
95 
96 //==========================================================================================================================================
100 //==========================================================================================================================================
101 #define oC_ObjectId_(Name) oC_1WORD_FROM_2(oC_ObjectId_ , Name)
102 
103 #undef _________________________________________MACROS_SECTION_____________________________________________________________________________
104 
111 #define _________________________________________TYPES_SECTION______________________________________________________________________________
112 
115 //==========================================================================================================================================
121 //==========================================================================================================================================
122 typedef enum
123 {
124 #define DEFINE_OBJECT_ID(Name) oC_ObjectId_(Name) ,
126 #undef DEFINE_OBJECT_ID
127  oC_ObjectId_NumberOfElements ,
129  oC_ObjectId_MagicNumberMask = 0xFFFFFF00 ,
130 } oC_ObjectId_t;
131 
132 
133 
134 //==========================================================================================================================================
140 //==========================================================================================================================================
141 typedef uint32_t oC_ObjectControl_t;
142 
143 #undef _________________________________________TYPES_SECTION______________________________________________________________________________
144 
151 #define _________________________________________STATIC_INLINE_SECTION______________________________________________________________________
152 
155 //==========================================================================================================================================
167 //==========================================================================================================================================
168 static inline oC_ObjectControl_t oC_CountObjectControl( void * ObjectPointer , oC_ObjectId_t ObjectId )
169 {
170  return (((uint32_t)ObjectPointer) & oC_ObjectId_MagicNumberMask ) | ObjectId;
171 }
172 
173 //==========================================================================================================================================
183 //==========================================================================================================================================
184 static inline oC_ObjectId_t oC_GetObjectId(oC_ObjectControl_t ObjectControl)
185 {
186  return ObjectControl & oC_ObjectId_Mask;
187 }
188 
189 //==========================================================================================================================================
202 //==========================================================================================================================================
203 static inline bool oC_CheckObjectControl( void * ObjectPointer , oC_ObjectId_t ObjectId , oC_ObjectControl_t ObjectControl )
204 {
205  return oC_CountObjectControl(ObjectPointer,ObjectId) == ObjectControl;
206 }
207 
208 #undef _________________________________________STATIC_INLINE_SECTION______________________________________________________________________
209 
211 #endif /* SYSTEM_LIBRARIES_INC_OC_OBJECT_H_ */
Contains macros for creating one word from more words in macros.
static oC_ObjectId_t oC_GetObjectId(oC_ObjectControl_t ObjectControl)
returns id of object
Definition: oc_object.h:184
uint32_t oC_ObjectControl_t
stores object control value
Definition: oc_object.h:141
static oC_ObjectControl_t oC_CountObjectControl(void *ObjectPointer, oC_ObjectId_t ObjectId)
counts object control for object
Definition: oc_object.h:168
static bool oC_CheckObjectControl(void *ObjectPointer, oC_ObjectId_t ObjectId, oC_ObjectControl_t ObjectControl)
checks if object control is correct
Definition: oc_object.h:203
FILE__DESCRIPTION
oC_ObjectId_Mask
Definition: oc_object.h:128
oC_ObjectId_t
stores id of object
Definition: oc_object.h:122
#define oC_OBJECTS_REGISTRATIONS_LIST(ADD_OBJECT)
list of object registrations
Definition: oc_object.h:63