如何通信并行(或嵌套)状态机

时间:2019-12-13 09:11:13

标签: c++ qt state-machine fsm

让我们假设我具有用于连接类的状态机(例如USB设备),它具有3种状态:uninit, disconnected, connected。在构造函数中,我尝试初始化驱动程序等。因此,它有可能永远停留在uninit上。上位类描述设备,因此它具有3种状态:disconnected, connected, init。仅当连接类处于连接状态时,才能完成从disconnectedconnected的转换。我应该如何验证它呢? 我在设备类(半伪代码)中有处理方法:

void device::process(event) {
   case CONNECTED:
   onConnected(event);
   case DISCONNECTED:
   onDisconnected(event);
   case INIT:
   onInit(event);
}

我断开连接的情况看起来像

void onDisconnected(event) {
    case CONNECT:
    connect();
    case DISCONNECT:
    ignore();
}

因此,在函数connect()中,我应该尝试将Connection类(及其状态机)设置为CONNECTED状态,获取结果(是否成功?)并处理Device状态。我不明白应该如何进行这种通信(在设备和连接类/ fsm之间)。

0 个答案:

没有答案