
wakeup_t wait_event(wakeup_t (
∗
wakeup)(wakeup_t), wakeup_t data)
Use this function to wait for a specific event. The function pointed at by
wakeup
is called, with
data
as a parameter, until it returns a non-zero result. At this point,
wait_event()
will return.
It's not hard to use
wait_event()
, but it's certainly not obvious. It helps to look at some of the examples that come with legOS. The following is a rewrite of the previous example that uses
wait_event()
instead of a
while
loop:
#include "conio.h"
#include "direct-button.h"
#include "unistd.h"
#include "sys/tm.h"
pid_t pid;
int display_task(int argc, char
∗∗
argv) {
while(1) {
cputs("Hello");
lcd_refresh();
sleep(1);
cputs("nurse");
lcd_refresh();
Page 202
sleep(1);
}
return 0;
}
wakeup_t button_press_wakeup(wakeup_t data) {
return PRESSED(button_state(),data);
}
int stop_task(int argc, char
∗∗
argv) {
msleep(200);
wait_event(&button_press_wakeup, BUTTON_RUN);
kill(pid);
return 0;
}
int main() {
pid = execi(&display_task, 0, NULL, 0, DEFAULT_STACK_SIZE);
execi(&stop_task, 0, NULL, 0, DEFAULT_STACK_SIZE);
tm_start();
return 0;
}
All that happened in this code was that the
while
loop from the previous example was replaced with a call to
wait_event
. The given function,
button_press_wakeup()
, does the dirty
work of checking the state of the button.
Memory (stdlib.h)
Summary of Contents for MINDSTORMS Robots
Page 22: ...Page 18 The back tread wheels are anchored to the shafts with the 16t gears ...
Page 23: ...Page 19 Page 20 Next start building support for the drive motors ...
Page 26: ...Page 23 The touch sensors are attached only by the shaft that runs through them ...
Page 41: ...Page 41 ...
Page 43: ...Next build the support for the light sensor ...
Page 80: ...Page 85 Make sure the bump on the long pin is up against the 4u beam ...
Page 82: ......
Page 84: ...Page 89 ...
Page 85: ...Step 14 is similar to Step 11 take a deep breath and go slowly ...
Page 87: ...Page 91 ...
Page 88: ...Page 92 Make sure that the two sides are at the same angle They should mirror each other ...
Page 89: ...Page 93 Page 94 ...
Page 90: ...Structural Support Page 95 ...
Page 91: ...Idler Wheel Page 96 ...
Page 92: ...Page 97 Drive Motor ...
Page 93: ...While you re putting the motor in hold on to the worm gear so it doesn t slip off Page 98 ...
Page 94: ...Grabber Arm Motor ...
Page 95: ...Page 99 ...
Page 96: ...Page 100 RCX Attach the RCX on both sides as shown Page 101 ...
Page 158: ......
Page 159: ...Page 175 The 16t gears are nestled inside the tread wheels ...
Page 160: ...Page 176 ...
Page 161: ...Page 177 Attach the motors to output A and output C as shown Page 178 ...