package Communication.CSMA; module station(bool ?transreq, ?busy, ?cd, int ?station_counter, bool !cycle_begin, !cycle_end, !counter_reset) { bool trans_done, new_transmit; loop { trans_done = false; sender_wait: await(transreq); abort { loop { abort { cycle_begin = true; counter_reset = true; sender_transmit: await(808 == station_counter); cycle_end = true; trans_done = true; } when (cd | busy); new_transmit = false; sender_retry: await (!cd); weak abort { counter_reset = true; sender_nond_wait: await(52 == station_counter); ||| sender_whises_trans: pause; new_transmit = true; } when(new_transmit); } }when (trans_done); } }