#include <snot.h>
/*
* simple master slave semaphore kick
* task t1 waits on a semaphore sem1(wait) and togle LED. No time out (forever)
*
* t2 waits on a semaphore sem2. 
* sem2 is never signalled so t2 times out after 10 ticks
* t2 then for every 25th loop do a signal to sem1
* Equal priority for the two tasks
*
* Jens
*/
 
struct k_t *pt1,*pt2,*pt3,
  *sem1,*sem2,*sem3;
char s1[200];
char s2[200];
 
volatile int akick=0,anokick=0;

void doBlink(void) {
static char flag = 0;
   flag = !flag;
   digitalWrite(13,flag);
}

void t1(void)
{
   while (1) {
      k_wait(sem1,0);
      doBlink();
    }
}

void t2(void)
{
  int i=0,j;
  char r;
   while (1) {
     k_wait(sem2,10);
     i++;
     if (i==25) {
       i=0;
       k_signal(sem1);
     }
   }
}

void setup()
{
  Serial.begin(9600);
  pinMode(13,OUTPUT);
  k_init(4,4,4);
  pt1=k_crt_task(t1,11,s1,200); 
  pt2=k_crt_task(t2,11,s2,200);
  sem1 = k_crt_sem(1,100);
  sem2 = k_crt_sem(1,100);
  k_start(1);
}

void loop()
{
}


