144,14 → 144,24 |
/* Check if the frame grabber is ready */ |
volatile int ready_to_grab = 1; |
|
void grab_command(void *arg) { |
|
SYS_FLAGS f; |
|
f = kern_fsave(); |
|
int on = 1; |
VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCCAPTURE,(unsigned long)&on); |
|
kern_frestore(f); |
|
} |
|
/* Elaboration task, it is called when the frame |
grabber buffer is ready */ |
TASK elaborate_task(void *arg) { |
|
struct video_buffer *fbuf = (struct video_buffer *)(arg); |
#ifdef MAX_SPEED |
int on; |
#endif |
|
while(1) { |
|
165,8 → 175,7 |
ready_to_grab = 1; |
|
#ifdef MAX_SPEED |
on = 1; |
VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCCAPTURE,(unsigned long)&on); |
grab_command(NULL); |
#endif |
|
task_testcancel(); |
181,20 → 190,13 |
/* Send the grab command */ |
TASK grab_task(void *arg) { |
|
int on; |
|
while(1) { |
|
if (ready_to_grab) { |
|
task_nopreempt(); |
|
/* Grab */ |
on = 1; |
VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCCAPTURE,(unsigned long)&on); |
grab_command(NULL); |
|
task_preempt(); |
|
//cprintf("G"); |
|
ready_to_grab = 0; |
251,14 → 253,11 |
{ |
|
HARD_TASK_MODEL gt; |
HARD_TASK_MODEL et; |
SOFT_TASK_MODEL et; |
PID grab_task_pid,elaborate_task_pid; |
|
struct video_buffer fbuf; |
int channel = 0; |
#ifdef MAX_SPEED |
int on; |
#endif |
|
if (argc < 2) { |
sys_shutdown_message("ERROR: Enter the input channel [ex> %s 0]\n",argv[0]); |
267,12 → 266,12 |
|
channel = atoi(argv[1]); |
|
hard_task_default_model(et); |
hard_task_def_mit(et,FG_PERIOD); |
hard_task_def_arg(et,(void *)(&fbuf)); |
hard_task_def_wcet(et,FG_WCET); |
hard_task_def_aperiodic(et); |
hard_task_def_ctrl_jet(et); |
soft_task_default_model(et); |
soft_task_def_period(et,FG_PERIOD); |
soft_task_def_arg(et,(void *)(&fbuf)); |
soft_task_def_met(et,FG_WCET); |
soft_task_def_aperiodic(et); |
soft_task_def_ctrl_jet(et); |
|
hard_task_default_model(gt); |
hard_task_def_mit(gt,FG_PERIOD); |
316,8 → 315,7 |
task_activate(grab_task_pid); |
#else |
/* Grab */ |
on = 1; |
VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCCAPTURE,(unsigned long)&on); |
grab_command(NULL); |
#endif |
|
while(keyb_getch(BLOCK) != ESC); |