aboutsummaryrefslogtreecommitdiffstats
path: root/os/various/cpp_wrappers/ch.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'os/various/cpp_wrappers/ch.cpp')
-rw-r--r--os/various/cpp_wrappers/ch.cpp148
1 files changed, 67 insertions, 81 deletions
diff --git a/os/various/cpp_wrappers/ch.cpp b/os/various/cpp_wrappers/ch.cpp
index d7b54bfb3..500db278d 100644
--- a/os/various/cpp_wrappers/ch.cpp
+++ b/os/various/cpp_wrappers/ch.cpp
@@ -45,22 +45,22 @@ namespace chibios_rt {
void System::lockFromIsr(void) {
- chSysLockFromIsr();
+ chSysLockFromISR();
}
void System::unlockFromIsr(void) {
- chSysUnlockFromIsr();
+ chSysUnlockFromISR();
}
systime_t System::getTime(void) {
- return chTimeNow();
+ return chVTGetSystemTimeX();
}
bool System::isTimeWithin(systime_t start, systime_t end) {
- return (bool)chTimeIsWithin(start, end);
+ return chVTIsSystemTimeWithinX(start, end);
}
/*------------------------------------------------------------------------*
@@ -97,7 +97,7 @@ namespace chibios_rt {
bool Timer::isArmedI(void) {
- return (bool)chVTIsArmedI(&timer_ref);
+ return chVTIsArmedI(&timer_ref);
}
/*------------------------------------------------------------------------*
@@ -106,7 +106,7 @@ namespace chibios_rt {
void ThreadReference::stop(void) {
- chDbgPanic("invoked unimplemented method stop()");
+ chSysHalt("invoked unimplemented method stop()");
}
msg_t ThreadReference::suspend(void) {
@@ -115,11 +115,10 @@ namespace chibios_rt {
chSysLock();
chDbgAssert(thread_ref != NULL,
- "ThreadReference, #1",
"already referenced");
- thread_ref = chThdSelf();
- chSchGoSleepS(THD_STATE_SUSPENDED);
+ thread_ref = chThdGetSelfX();
+ chSchGoSleepS(CH_STATE_SUSPENDED);
msg = thread_ref->p_u.rdymsg;
chSysUnlock();
@@ -129,24 +128,22 @@ namespace chibios_rt {
msg_t ThreadReference::suspendS(void) {
chDbgAssert(thread_ref == NULL,
- "ThreadReference, #2",
"already referenced");
- thread_ref = chThdSelf();
- chSchGoSleepS(THD_STATE_SUSPENDED);
+ thread_ref = chThdGetSelfX();
+ chSchGoSleepS(CH_STATE_SUSPENDED);
return thread_ref->p_u.rdymsg;
}
void ThreadReference::resume(msg_t msg) {
- chSysLock()
+ chSysLock();
chDbgAssert(thread_ref != NULL,
- "ThreadReference, #3",
"not referenced");
if (thread_ref) {
- Thread *tp = thread_ref;
+ thread_t *tp = thread_ref;
thread_ref = NULL;
chSchWakeupS(tp, msg);
}
@@ -157,11 +154,10 @@ namespace chibios_rt {
void ThreadReference::resumeI(msg_t msg) {
chDbgAssert(thread_ref != NULL,
- "ThreadReference, #4",
"not referenced");
if (thread_ref) {
- Thread *tp = thread_ref;
+ thread_t *tp = thread_ref;
thread_ref = NULL;
tp->p_msg = msg;
chSchReadyI(tp);
@@ -171,30 +167,27 @@ namespace chibios_rt {
void ThreadReference::requestTerminate(void) {
chDbgAssert(thread_ref != NULL,
- "ThreadReference, #5",
"not referenced");
chThdTerminate(thread_ref);
}
-#if CH_USE_WAITEXIT
+#if CH_CFG_USE_WAITEXIT
msg_t ThreadReference::wait(void) {
chDbgAssert(thread_ref != NULL,
- "ThreadReference, #6",
"not referenced");
msg_t msg = chThdWait(thread_ref);
thread_ref = NULL;
return msg;
}
-#endif /* CH_USE_WAITEXIT */
+#endif /* CH_CFG_USE_WAITEXIT */
-#if CH_USE_MESSAGES
+#if CH_CFG_USE_MESSAGES
msg_t ThreadReference::sendMessage(msg_t msg) {
chDbgAssert(thread_ref != NULL,
- "ThreadReference, #7",
"not referenced");
return chMsgSend(thread_ref, msg);
@@ -203,16 +196,14 @@ namespace chibios_rt {
bool ThreadReference::isPendingMessage(void) {
chDbgAssert(thread_ref != NULL,
- "ThreadReference, #7",
"not referenced");
- return (bool)chMsgIsPendingI(thread_ref);
+ return chMsgIsPendingI(thread_ref);
}
msg_t ThreadReference::getMessage(void) {
chDbgAssert(thread_ref != NULL,
- "ThreadReference, #8",
"not referenced");
return chMsgGet(thread_ref);
@@ -221,18 +212,16 @@ namespace chibios_rt {
void ThreadReference::releaseMessage(msg_t msg) {
chDbgAssert(thread_ref != NULL,
- "ThreadReference, #9",
"not referenced");
chMsgRelease(thread_ref, msg);
}
-#endif /* CH_USE_MESSAGES */
+#endif /* CH_CFG_USE_MESSAGES */
-#if CH_USE_EVENTS
+#if CH_CFG_USE_EVENTS
void ThreadReference::signalEvents(eventmask_t mask) {
chDbgAssert(thread_ref != NULL,
- "ThreadReference, #10",
"not referenced");
chEvtSignal(thread_ref, mask);
@@ -241,15 +230,14 @@ namespace chibios_rt {
void ThreadReference::signalEventsI(eventmask_t mask) {
chDbgAssert(thread_ref != NULL,
- "ThreadReference, #11",
"not referenced");
chEvtSignalI(thread_ref, mask);
}
-#endif /* CH_USE_EVENTS */
+#endif /* CH_CFG_USE_EVENTS */
-#if CH_USE_DYNAMIC
-#endif /* CH_USE_DYNAMIC */
+#if CH_CFG_USE_DYNAMIC
+#endif /* CH_CFG_USE_DYNAMIC */
/*------------------------------------------------------------------------*
* chibios_rt::BaseThread *
@@ -297,7 +285,7 @@ namespace chibios_rt {
bool BaseThread::shouldTerminate(void) {
- return (bool)chThdShouldTerminate();
+ return chThdShouldTerminateX();
}
void BaseThread::sleep(systime_t interval){
@@ -315,15 +303,15 @@ namespace chibios_rt {
chThdYield();
}
-#if CH_USE_MESSAGES
+#if CH_CFG_USE_MESSAGES
ThreadReference BaseThread::waitMessage(void) {
ThreadReference tr(chMsgWait());
return tr;
}
-#endif /* CH_USE_MESSAGES */
+#endif /* CH_CFG_USE_MESSAGES */
-#if CH_USE_EVENTS
+#if CH_CFG_USE_EVENTS
eventmask_t BaseThread::getAndClearEvents(eventmask_t mask) {
return chEvtGetAndClearEvents(mask);
@@ -349,7 +337,7 @@ namespace chibios_rt {
return chEvtWaitAll(ewmask);
}
-#if CH_USE_EVENTS_TIMEOUT
+#if CH_CFG_USE_EVENTS_TIMEOUT
eventmask_t BaseThread::waitOneEventTimeout(eventmask_t ewmask,
systime_t time) {
@@ -367,39 +355,39 @@ namespace chibios_rt {
return chEvtWaitAllTimeout(ewmask, time);
}
-#endif /* CH_USE_EVENTS_TIMEOUT */
+#endif /* CH_CFG_USE_EVENTS_TIMEOUT */
void BaseThread::dispatchEvents(const evhandler_t handlers[],
eventmask_t mask) {
chEvtDispatch(handlers, mask);
}
-#endif /* CH_USE_EVENTS */
+#endif /* CH_CFG_USE_EVENTS */
-#if CH_USE_MUTEXES
- void BaseThread::unlockMutex(void) {
+#if CH_CFG_USE_MUTEXES
+ void BaseThread::unlockMutex(Mutex *mp) {
- chMtxUnlock();
+ chMtxUnlock(&mp->mutex);
}
- void BaseThread::unlockMutexS(void) {
+ void BaseThread::unlockMutexS(Mutex *mp) {
- chMtxUnlockS();
+ chMtxUnlockS(&mp->mutex);
}
void BaseThread::unlockAllMutexes(void) {
chMtxUnlockAll();
}
-#endif /* CH_USE_MUTEXES */
+#endif /* CH_CFG_USE_MUTEXES */
-#if CH_USE_SEMAPHORES
+#if CH_CFG_USE_SEMAPHORES
/*------------------------------------------------------------------------*
* chibios_rt::CounterSemaphore *
*------------------------------------------------------------------------*/
CounterSemaphore::CounterSemaphore(cnt_t n) {
- chSemInit(&sem, n);
+ chSemObjectInit(&sem, n);
}
void CounterSemaphore::reset(cnt_t n) {
@@ -452,20 +440,18 @@ namespace chibios_rt {
return chSemGetCounterI(&sem);
}
-#if CH_USE_SEMSW
msg_t CounterSemaphore::signalWait(CounterSemaphore *ssem,
CounterSemaphore *wsem) {
return chSemSignalWait(&ssem->sem, &wsem->sem);
}
-#endif /* CH_USE_SEMSW */
/*------------------------------------------------------------------------*
* chibios_rt::BinarySemaphore *
*------------------------------------------------------------------------*/
BinarySemaphore::BinarySemaphore(bool taken) {
- chBSemInit(&bsem, (bool_t)taken);
+ chBSemObjectInit(&bsem, taken);
}
msg_t BinarySemaphore::wait(void) {
@@ -490,12 +476,12 @@ namespace chibios_rt {
void BinarySemaphore::reset(bool taken) {
- chBSemReset(&bsem, (bool_t)taken);
+ chBSemReset(&bsem, taken);
}
void BinarySemaphore::resetI(bool taken) {
- chBSemResetI(&bsem, (bool_t)taken);
+ chBSemResetI(&bsem, taken);
}
void BinarySemaphore::signal(void) {
@@ -512,15 +498,15 @@ namespace chibios_rt {
return (bool)chBSemGetStateI(&bsem);
}
-#endif /* CH_USE_SEMAPHORES */
+#endif /* CH_CFG_USE_SEMAPHORES */
-#if CH_USE_MUTEXES
+#if CH_CFG_USE_MUTEXES
/*------------------------------------------------------------------------*
* chibios_rt::Mutex *
*------------------------------------------------------------------------*/
Mutex::Mutex(void) {
- chMtxInit(&mutex);
+ chMtxObjectInit(&mutex);
}
bool Mutex::tryLock(void) {
@@ -543,13 +529,13 @@ namespace chibios_rt {
chMtxLockS(&mutex);
}
-#if CH_USE_CONDVARS
+#if CH_CFG_USE_CONDVARS
/*------------------------------------------------------------------------*
* chibios_rt::CondVar *
*------------------------------------------------------------------------*/
CondVar::CondVar(void) {
- chCondInit(&condvar);
+ chCondObjectInit(&condvar);
}
void CondVar::signal(void) {
@@ -582,25 +568,25 @@ namespace chibios_rt {
return chCondWaitS(&condvar);
}
-#if CH_USE_CONDVARS_TIMEOUT
+#if CH_CFG_USE_CONDVARS_TIMEOUT
msg_t CondVar::waitTimeout(systime_t time) {
return chCondWaitTimeout(&condvar, time);
}
-#endif /* CH_USE_CONDVARS_TIMEOUT */
-#endif /* CH_USE_CONDVARS */
-#endif /* CH_USE_MUTEXES */
+#endif /* CH_CFG_USE_CONDVARS_TIMEOUT */
+#endif /* CH_CFG_USE_CONDVARS */
+#endif /* CH_CFG_USE_MUTEXES */
-#if CH_USE_EVENTS
+#if CH_CFG_USE_EVENTS
/*------------------------------------------------------------------------*
* chibios_rt::EvtListener *
*------------------------------------------------------------------------*/
- flagsmask_t EvtListener::getAndClearFlags(void) {
+ eventflags_t EvtListener::getAndClearFlags(void) {
return chEvtGetAndClearFlags(&ev_listener);
}
- flagsmask_t EvtListener::getAndClearFlagsI(void) {
+ eventflags_t EvtListener::getAndClearFlagsI(void) {
return chEvtGetAndClearFlagsI(&ev_listener);
}
@@ -610,7 +596,7 @@ namespace chibios_rt {
*------------------------------------------------------------------------*/
EvtSource::EvtSource(void) {
- chEvtInit(&ev_source);
+ chEvtObjectInit(&ev_source);
}
void EvtSource::registerOne(chibios_rt::EvtListener *elp,
@@ -630,24 +616,24 @@ namespace chibios_rt {
chEvtUnregister(&ev_source, &elp->ev_listener);
}
- void EvtSource::broadcastFlags(flagsmask_t flags) {
+ void EvtSource::broadcastFlags(eventflags_t flags) {
chEvtBroadcastFlags(&ev_source, flags);
}
- void EvtSource::broadcastFlagsI(flagsmask_t flags) {
+ void EvtSource::broadcastFlagsI(eventflags_t flags) {
chEvtBroadcastFlagsI(&ev_source, flags);
}
-#endif /* CH_USE_EVENTS */
+#endif /* CH_CFG_USE_EVENTS */
-#if CH_USE_QUEUES
+#if CH_CFG_USE_QUEUES
/*------------------------------------------------------------------------*
* chibios_rt::InQueue *
*------------------------------------------------------------------------*/
InQueue::InQueue(uint8_t *bp, size_t size, qnotify_t infy, void *link) {
- chIQInit(&iq, bp, size, infy, link);
+ chIQObjectInit(&iq, bp, size, infy, link);
}
size_t InQueue::getFullI(void) {
@@ -700,7 +686,7 @@ namespace chibios_rt {
*------------------------------------------------------------------------*/
OutQueue::OutQueue(uint8_t *bp, size_t size, qnotify_t onfy, void *link) {
- chOQInit(&oq, bp, size, onfy, link);
+ chOQObjectInit(&oq, bp, size, onfy, link);
}
size_t OutQueue::getFullI(void) {
@@ -748,15 +734,15 @@ namespace chibios_rt {
return chOQWriteTimeout(&oq, bp, n, time);
}
-#endif /* CH_USE_QUEUES */
+#endif /* CH_CFG_USE_QUEUES */
-#if CH_USE_MAILBOXES
+#if CH_CFG_USE_MAILBOXES
/*------------------------------------------------------------------------*
* chibios_rt::Mailbox *
*------------------------------------------------------------------------*/
Mailbox::Mailbox(msg_t *buf, cnt_t n) {
- chMBInit(&mb, buf, n);
+ chMBObjectInit(&mb, buf, n);
}
void Mailbox::reset(void) {
@@ -818,20 +804,20 @@ namespace chibios_rt {
return chMBGetUsedCountI(&mb);
}
-#endif /* CH_USE_MAILBOXES */
+#endif /* CH_CFG_USE_MAILBOXES */
-#if CH_USE_MEMPOOLS
+#if CH_CFG_USE_MEMPOOLS
/*------------------------------------------------------------------------*
* chibios_rt::MemoryPool *
*------------------------------------------------------------------------*/
MemoryPool::MemoryPool(size_t size, memgetfunc_t provider) {
- chPoolInit(&pool, size, provider);
+ chPoolObjectInit(&pool, size, provider);
}
MemoryPool::MemoryPool(size_t size, memgetfunc_t provider, void* p, size_t n) {
- chPoolInit(&pool, size, provider);
+ chPoolObjectInit(&pool, size, provider);
chPoolLoadArray(&pool, p, n);
}
@@ -860,7 +846,7 @@ namespace chibios_rt {
chPoolFreeI(&pool, objp);
}
-#endif /* CH_USE_MEMPOOLS */
+#endif /* CH_CFG_USE_MEMPOOLS */
}
/** @} */