Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
12 years, 5 months ago.
Wait for signal in main thread?
Hello,
as I understand main() is already a running thread. So it must be possible to use Thread::signal_wait(0x1) and send this signal from another running thread?
It only works the other way round for me - because it gives an error if I write: main.signal_set(0x1);
Thanks,
Michael
1 Answer
12 years, 2 months ago.
Possibly this is what you are trying to achieve. I can't see how to do it with the signal_set and signal_wait methods. Incedently, does anyone know what the signal (0x1) is? Can other signal values be used and if so are they separate or can you use a mask to set, or more likely, wait on different signals simultaneously? I can't find any real documentation on how these should be used.
Cheers David.
main.cpp
#include "mbed.h"
#include "rtos.h"
DigitalOut led(LED1);
osThreadId mainThreadID;
void signal_thread(void const *argument) {
while (true) {
Thread::wait(1000);
osSignalSet(mainThreadID, 0x1);
}
}
int main (void) {
mainThreadID = osThreadGetId();
Thread thread(signal_thread);
while (true) {
// Signal flags that are reported as event are automatically cleared.
osSignalWait(0x1, osWaitForever);
led = !led;
}
}