int memory = 96;
int scan_time;
int recover_time;
int no_recover_time=0;
int ip1_time;
int ip2_time;
int print_ip_time;
int totalMB;
const int n=8; //n specify the number of concurrent pages
urgent chan start_scanner;
urgent chan start_scan_ip;
urgent chan start_ip1;
urgent chan start_ip2;
urgent chan start_print_ip;
urgent chan start_up;
urgent chan start_down;
broadcast chan end_scanner;
broadcast chan end_scan_ip;
broadcast chan end_ip1;
broadcast chan end_ip2;
broadcast chan end_print_ip;
broadcast chan end_up;
broadcast chan end_down;
chan printing_claimed[n];
chan usb_transfer_claimed[n];
urgent chan printing_finished[n];
urgent chan usb_transfer_finished[n];
clock time;
void setScannerTime()
{
scan_time = 6;
recover_time = 1;
}
int getIp1Time()
{
return 3;
}
void setIp1Time()
{
ip1_time = 3;
}
void setIp2Time()
{
ip2_time = 3;
}
void setPrintTime()
{
print_ip_time = 4;
}
RESOURCEurgent chan &start_resource,broadcast chan &end_resource, int &execution_time, int &recover_timeclock x;
RECOVERINGRUNNINGIDLEUSB_BUSclock x_up, x_down;
//int MB_up=12, MB_down=12;
int MB_up, MB_down;
const int high_speed=3;
//divide function for rounding up in case of not null remainder
int divide(int a, int b)
{
if ((a % b) == 0)
{return a/b; }
{return (a/b) + 1;}
}
DOWNUP_AND_DOWNUPINITAGENT_AUTOMATONchan &resource_claimed,urgent chan &resource_released, urgent chan &start_resource, broadcast chan &end_resourceUSE_CASE_DIRECT_COPYint i, int dataToBeTransfered, int memory_ip2, int memory_usb,int arrivalTimeclock x;DONEUSE_CASE_SIMPLE_PRINTint dataToBeTransfered,int memory_printer, int arrivalTimeclock x;DONEUSE_CASE_SCAN_TO_EMAILint i, int dataToBeTransfered, int memory_ip2, int memory_usb, int arrivalTimeclock x;DONEUSE_CASE_SCAN_TO_STOREint dataToBeTransfered, int memory_usb, int arrivalTimeclock x;DONEUSE_CASE_PRINT_FROM_CONTROLLERint i, int dataToBeTransfered, int memory_printer,int arrivalTimeclock x;DONEUSE_CASE_PROCESS_FROM_STOREint i, int dataToBeTransfered, int memory_ip2, int memory_usb, int arrivalTimeclock x;DONESCANNER=RESOURCE(start_scanner, end_scanner, scan_time, recover_time);
SCAN_IP=RESOURCE(start_scan_ip, end_scan_ip, scan_time, no_recover_time);
IP1=RESOURCE(start_ip1, end_ip1, ip1_time, no_recover_time);
IP2=RESOURCE(start_ip2, end_ip2, ip2_time, no_recover_time);
PRINTER=RESOURCE(start_print_ip, end_print_ip, print_ip_time, no_recover_time);
PA5=AGENT_AUTOMATON(printing_claimed[5], printing_finished[5], start_print_ip, end_print_ip);
PA6=AGENT_AUTOMATON(printing_claimed[6], printing_finished[6], start_print_ip, end_print_ip);
UBA2=AGENT_AUTOMATON(usb_transfer_claimed[2], usb_transfer_finished[2], start_up, end_up);
UBA7=AGENT_AUTOMATON(usb_transfer_claimed[7],usb_transfer_finished[7], start_up, end_up);
UBA4=AGENT_AUTOMATON(usb_transfer_claimed[4],usb_transfer_finished[4], start_up, end_up);
UBA1=AGENT_AUTOMATON(usb_transfer_claimed[1],usb_transfer_finished[1], start_up, end_up);
A2=USE_CASE_SCAN_TO_EMAIL(2, 12, 36, 12, 1);
A3=USE_CASE_SCAN_TO_STORE(12, 36, 1);
A5=USE_CASE_PRINT_FROM_CONTROLLER(5, 12, 12, 1);
A6=USE_CASE_PRINT_FROM_CONTROLLER(6, 12, 12, 0);
A7=USE_CASE_PROCESS_FROM_STORE(7, 12, 12, 12, 0);
A4=USE_CASE_PROCESS_FROM_STORE(4, 12, 12, 12, 3);
A1=USE_CASE_PROCESS_FROM_STORE(1, 12, 12, 12, 2);
system UBA1, UBA2, UBA4, UBA7, PA5, PA6, SCANNER, SCAN_IP, IP1, IP2, PRINTER, A1, A2, A3, A4, A5, A6, A7, USB_BUS;