diff options
author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2013-01-02 10:11:02 +0000 |
---|---|---|
committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2013-01-02 10:11:02 +0000 |
commit | 64e7fd5a530201190720c8b25535998c9ebf8e84 (patch) | |
tree | e8f87cb0381aa3c4623eed6e19102b62435f4b99 /os/various/cpp_wrappers/ch.cpp | |
parent | f26d653e462a84bfa73387b66f5e651d5849695f (diff) | |
download | ChibiOS-64e7fd5a530201190720c8b25535998c9ebf8e84.tar.gz ChibiOS-64e7fd5a530201190720c8b25535998c9ebf8e84.tar.bz2 ChibiOS-64e7fd5a530201190720c8b25535998c9ebf8e84.zip |
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5012 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/various/cpp_wrappers/ch.cpp')
-rw-r--r-- | os/various/cpp_wrappers/ch.cpp | 148 |
1 files changed, 89 insertions, 59 deletions
diff --git a/os/various/cpp_wrappers/ch.cpp b/os/various/cpp_wrappers/ch.cpp index 84678349c..99f7440c9 100644 --- a/os/various/cpp_wrappers/ch.cpp +++ b/os/various/cpp_wrappers/ch.cpp @@ -167,6 +167,18 @@ namespace chibios_rt { }
#endif /* CH_USE_MESSAGES */
+#if CH_USE_EVENTS
+ void ThreadReference::signalEvents(eventmask_t mask) {
+
+ chEvtSignal(thread_ref, mask);
+ }
+
+ void ThreadReference::signalEventsI(eventmask_t mask) {
+
+ chEvtSignalI(thread_ref, mask);
+ }
+#endif /* CH_USE_EVENTS */
+
#if CH_USE_DYNAMIC
#endif /* CH_USE_DYNAMIC */
@@ -182,9 +194,9 @@ namespace chibios_rt { return ((BaseThread *)arg)->Main();
}
- void BaseThread::exit(msg_t msg) {
+ void BaseThread::setName(const char *tname) {
- chThdExit(msg);
+ chRegSetThreadName(tname);
}
tprio_t BaseThread::setPriority(tprio_t newprio) {
@@ -192,6 +204,11 @@ namespace chibios_rt { return chThdSetPriority(newprio);
}
+ void BaseThread::exit(msg_t msg) {
+
+ chThdExit(msg);
+ }
+
bool BaseThread::shouldTerminate(void) {
return (bool)chThdShouldTerminate();
@@ -219,6 +236,53 @@ namespace chibios_rt { }
#endif /* CH_USE_MESSAGES */
+#if CH_USE_EVENTS
+ eventmask_t BaseThread::getAndClearEvents(eventmask_t mask) {
+
+ return chEvtGetAndClearEvents(mask);
+ }
+
+ eventmask_t BaseThread::addEvents(eventmask_t mask) {
+
+ return chEvtAddEvents(mask);
+ }
+
+ eventmask_t BaseThread::waitOneEvent(eventmask_t ewmask) {
+
+ return chEvtWaitOne(ewmask);
+ }
+
+ eventmask_t BaseThread::waitAnyEvent(eventmask_t ewmask) {
+
+ return chEvtWaitAny(ewmask);
+ }
+
+ eventmask_t BaseThread::waitAllEvents(eventmask_t ewmask) {
+
+ return chEvtWaitAll(ewmask);
+ }
+
+#if CH_USE_EVENTS_TIMEOUT
+ eventmask_t BaseThread::waitOneEventTimeout(eventmask_t ewmask,
+ systime_t time) {
+
+ return chEvtWaitOneTimeout(ewmask, time);
+ }
+
+ eventmask_t BaseThread::waitAnyEventTimeout(eventmask_t ewmask,
+ systime_t time) {
+
+ return chEvtWaitAnyTimeout(ewmask, time);
+ }
+
+ eventmask_t BaseThread::waitAllEventsTimeout(eventmask_t ewmask,
+ systime_t time) {
+
+ return chEvtWaitAllTimeout(ewmask, time);
+ }
+#endif /* CH_USE_EVENTS_TIMEOUT */
+#endif /* CH_USE_EVENTS */
+
#if CH_USE_SEMAPHORES
/*------------------------------------------------------------------------*
* chibios_rt::Semaphore *
@@ -320,89 +384,55 @@ namespace chibios_rt { #if CH_USE_EVENTS
/*------------------------------------------------------------------------*
- * chibios_rt::Event *
+ * chibios_rt::EventListener *
*------------------------------------------------------------------------*/
- Event::Event(void) {
-
- chEvtInit(&event);
- }
-
- void Event::registerOne(EventListener *elp, eventid_t eid) {
-
- chEvtRegister(&event,elp, eid);
- }
-
- void Event::registerMask(EventListener *elp, eventmask_t emask) {
+ flagsmask_t EventListener::getAndClearFlags(void) {
- chEvtRegisterMask(&event,elp, emask);
+ return chEvtGetAndClearFlags(&ev_listener);
}
- void Event::unregister(EventListener *elp) {
+ /*------------------------------------------------------------------------*
+ * chibios_rt::EventSource *
+ *------------------------------------------------------------------------*/
+ EventSource::EventSource(void) {
- chEvtUnregister(&event, elp);
+ ev_source.es_next = (::EventListener *)(void *)&ev_source;
}
- void Event::broadcastFlags(flagsmask_t flags) {
+ void EventSource::registerOne(chibios_rt::EventListener *elp,
+ eventid_t eid) {
- chEvtBroadcastFlags(&event, flags);
+ chEvtRegister(&ev_source, &elp->ev_listener, eid);
}
- void Event::broadcastFlagsI(flagsmask_t flags) {
+ void EventSource::registerMask(chibios_rt::EventListener *elp,
+ eventmask_t emask) {
- chEvtBroadcastFlagsI(&event, flags);
+ chEvtRegisterMask(&ev_source, &elp->ev_listener, emask);
}
- flagsmask_t Event::getAndClearFlags(EventListener *elp) {
+ void EventSource::unregister(chibios_rt::EventListener *elp) {
- return chEvtGetAndClearFlags(elp);
+ chEvtUnregister(&ev_source, &elp->ev_listener);
}
- eventmask_t Event::getAndClearEvents(eventmask_t mask) {
+ void EventSource::broadcastFlags(flagsmask_t flags) {
- return chEvtGetAndClearEvents(mask);
+ chEvtBroadcastFlags(&ev_source, flags);
}
- eventmask_t Event::addEvents(eventmask_t mask) {
+ void EventSource::broadcastFlagsI(flagsmask_t flags) {
- return chEvtAddEvents(mask);
+ chEvtBroadcastFlagsI(&ev_source, flags);
}
+ /*------------------------------------------------------------------------*
+ * chibios_rt::Event *
+ *------------------------------------------------------------------------*/
void Event::dispatch(const evhandler_t handlers[], eventmask_t mask) {
chEvtDispatch(handlers, mask);
}
-
- eventmask_t Event::waitOne(eventmask_t ewmask) {
-
- return chEvtWaitOne(ewmask);
- }
-
- eventmask_t Event::waitAny(eventmask_t ewmask) {
-
- return chEvtWaitAny(ewmask);
- }
-
- eventmask_t Event::waitAll(eventmask_t ewmask) {
-
- return chEvtWaitAll(ewmask);
- }
-
-#if CH_USE_EVENTS_TIMEOUT
- eventmask_t Event::waitOneTimeout(eventmask_t ewmask, systime_t time) {
-
- return chEvtWaitOneTimeout(ewmask, time);
- }
-
- eventmask_t Event::waitAnyTimeout(eventmask_t ewmask, systime_t time) {
-
- return chEvtWaitAnyTimeout(ewmask, time);
- }
-
- eventmask_t Event::waitAllTimeout(eventmask_t ewmask, systime_t time) {
-
- return chEvtWaitAllTimeout(ewmask, time);
- }
-#endif /* CH_USE_EVENTS_TIMEOUT */
#endif /* CH_USE_EVENTS */
}
|