Ctest2 Code:


/* task time in COMATOS C
 The goal is to use a small RTOS to run the following tasks.
 Task descriptions:
 task 0: sends message and starts timer
 task 1: recv message reads timer
 
 */
 #include <stdio.h>
 #include "comatos8515.c"  
   #define begin {
   #define end } 
//task repetition times
   #define t0 10 
//initial task state variables
   #define Task0State 0
   #define Task1State 0 
//Comatos constants
   #define NODebug 0 
   #define OSTimeOut 100
   #define NoMessage 0xff 
   #define NoTime 0
   #define Task0Message 0b00000001 
   #define BaudRate 51
//Task 0 executes on a time base
   //Sends a messnage to Task 1 and records the time 
   //required to get from task 1 back into task 0
   int Task0(void) 
   begin 
   char ping[]="ping";
   char SwTime[10];
   int SwitchTime; 
   TCCR1B = 0;
   OSSendMess(1,1);
   OSUARTTransmitBytes(ping,4); 
   SwitchTime = TCNT1;
   sprintf(SwTime,"%-i\r\n",SwitchTime);
   OSUARTTransmitBytes(SwTime,8); 
   TCCR1B = 1;
   TCNT1 = 0;
   return 0;
   end
//Task 1 executes on a message receive
   //and records the time 
   //required to get from task 0 back into task 1
   int Task1(void) 
   begin 
   char pong[]="pong"; 
   char SwTime[10];
   int SwitchTime; 
   TCCR1B = 0; 
   SwitchTime = TCNT1;
   sprintf(SwTime,"%-i\r\n",SwitchTime);
   OSUARTTransmitBytes(pong,4);
   OSUARTTransmitBytes(SwTime,8);
   TCCR1B = 1;
   TCNT1 = 0;
   return 0;
   end
//Now define tasks and start the OS 
   void main(void)
   begin
   OSInit(OSTimeOut, NODebug);
   OSInitUART(BaudRate); 
   putsf("Starting...\r\n");
   OSCreateTask(Task0, t0, NoMessage, 0);
   OSCreateTask(Task1, NoTime, Task0Message, 0); 
   OSStart(); //never returns
   end