#include <stdio.h>
#include <conio.h>
#include <rtkernel.h>

#define MAIN_PRIORITY 3

void TaskA(void)
{
   int i;

   printf("<task A> is waiting message\n");
   do {
     RTKReceive(&i, sizeof(int));
     printf("\n<task A> has received a %i \n", i);
   } while(True);
}

void TaskB(void)
{
   int i;

   printf("<task B> is waiting message\n");
   do {
     RTKReceive(&i, sizeof(int));
     printf("\n<task B> has received a %i \n", i);
   } while(True);
}

void main(void)
{
   int i;
   TaskHandle HandleA, HandleB;

   clrscr();
   RTKernelInit(MAIN_PRIORITY);
   HandleA = RTKCreateTask(TaskA, MAIN_PRIORITY+1, 1024, "Task A");
   HandleB = RTKCreateTask(TaskB, MAIN_PRIORITY+1, 1024, "Task B");
   do {
      printf("\n* main * Please enter a number [Exit=1]: ");
      scanf("%i", &i);
      if(i==2)  {
	printf("* main * SEND %d to Task B.\n",i);
	RTKSend(HandleB, &i);    // send data to task B
	printf("* main * after SEND %d to Task B.\n",i);
      }
      else  {
	printf("* main * SEND %d to other Task A.\n",i);
	RTKSend(HandleA, &i);    // send data to task A
        printf("* main * after SEND %d to Task A.\n",i);
      }
   } while ( i!= 1);
   printf("\n* main * - Finish -\n");
}

