dol: initial dol commit
[jump.git] / dol / src / dol / visitor / hdsd / scd / fsm / scd_sts_done.cpp
1 #include "fsm/scd_sts_done.h"
2
3 #include "scd_logging.h"
4 #include "scd_exception.h"
5 #include "scd_cont_man_slave.h"
6 #include "scd_cont_man.h"
7
8
9 void scd_sts_done::recv_time_req()
10 {
11     if (_sim.get_poller().wait(SCD_CONT_DELAY))
12     {
13         // had activity on sockets => we might be receiving data
14         scd_command* cmd = new scd_command(SCD_CM_CONTROL, SCD_CM_TIME_NACK);
15         _fsm.send_command(cmd);
16     }
17     else
18     {
19         scd_command* cmd = new scd_command(SCD_CM_CONTROL, SCD_CM_TIME_ACK);
20         _fsm.send_command(cmd);
21         _fsm.save_state();
22         _fsm.set_state(_st_time_ack);
23     }
24 }
25
26
27 void scd_sts_done::recv_term_req()
28 {
29     if (_sim.get_poller().wait(SCD_CONT_DELAY))
30     {
31         // had activity on sockets => we might be receiving data
32         scd_command* cmd = new scd_command(SCD_CM_CONTROL, SCD_CM_TERM_NACK);
33         _fsm.send_command(cmd);
34     }
35     else
36     {
37         scd_command* cmd = new scd_command(SCD_CM_CONTROL, SCD_CM_TERM_ACK);
38         _fsm.send_command(cmd);
39         _fsm.save_state();
40         _fsm.set_state(_st_term_ack);
41     }
42 }
43
44
45 void scd_sts_done::set_idle(const sc_core::sc_time& time)
46 {
47     scd_command* cmd = new scd_command(SCD_CM_CONTROL, SCD_CM_IDLE, time);
48     _fsm.send_command(cmd);
49     _fsm.set_state(_st_idle);
50 }
51
52
53 void scd_sts_done::set_busy()
54 {
55     scd_command* cmd = new scd_command(SCD_CM_CONTROL, SCD_CM_BUSY);
56     _fsm.send_command(cmd);
57     _fsm.set_state(_st_busy);
58 }