
#include "csim.h"
#include <stdio.h>

FACILITY f;	
EVENT   ev_1, ev_2;
MBOX    mb_1;

void sim()	 
{
    create("sim");    
    printf("t=%2.2f  sim: 1111 \n",simtime());
    f = facility("facility");
    ev_1 = event("ev-1");
    ev_2 = event("ev-1");
    mb_1 = mailbox("mb-1");
    printf("t=%2.2f  sim: 2222 \n",simtime());  
    processAAA();  		
    printf("t=%2.2f  sim: 3333 \n",simtime());  
    processBBB();
    printf("t=%2.2f  sim: 4444 \n",simtime());
    hold(5.0);
    printf("t=%2.2f  sim: 5555 \n",simtime());
    set(ev_1);
    printf("t=%2.2f  sim: 6666 \n",simtime());
    hold(10.0);
    printf("t=%2.2f  sim: ENDS.... \n",simtime());
}

processAAA()			
{
    long msg;
    
    printf("t=%2.2f  AAA: 1111 \n",simtime());
    create("AAA");				
    set_priority(10);
    printf("t=%2.2f  AAA: 2222 \n",simtime());
    use(f, 4.0);
    printf("t=%2.2f  AAA: 3333 \n",simtime());
    wait(ev_1);
    printf("t=%2.2f  AAA: 4444 \n",simtime());
    set(ev_2);
    receive(mb_1, &msg);
    printf("t=%2.2f  AAA: received msg = %ld\n",simtime(), msg);
}

processBBB()			
{
    long msg;
    
    printf("t=%2.2f  BBB: 1111 \n",simtime());
    create("t=%2.2f  BBBB");
    set_priority(5);
    printf("t=%2.2f  BBB: 2222 \n",simtime());			
    use(f, 2.0);
    printf("t=%2.2f  BBB: 3333 \n",simtime());
    wait(ev_2);
    printf("t=%2.2f  BBB: 4444 \n",simtime());
    msg=101;
    send(mb_1, msg);
    printf("t=%2.2f  BBB: 5555 \n",simtime());
}

