📄 ntwkdevice.cpp
字号:
{ S_DEVCONNECT2, A_ADDPARTY, S_ADDPARTY, A_CLOSEPARTY },
// case 1: DevConnect, AddParty, SetPartyAttribute
//---------------------------------------------------------------------
// case 2: Add party, SetPartyAttribute, DevConnect
//---------------------------------------------------------------------
// Add party
{ S_ADDPARTY, A_EXIT, S_ADDPARTY_EXIT, A_NONE },
{ S_ADDPARTY, A_SETPARTYATTR, S_SETPARTYATTR, A_REMOVEPARTY },
{ S_ADDPARTY, A_REMOVEPARTY, S_REMOVEPARTY, A_CLOSEPARTY },
{ S_ADDPARTY_EXIT, A_REMOVEPARTY, S_REMOVEPARTY, A_CLOSEPARTY },
// Set party attribute
{ S_SETPARTYATTR, A_EXIT, S_SETPARTYATTR_EXIT, A_NONE },
// case 2
{ S_SETPARTYATTR, A_DEVCONNECT, S_DEVCONNECT1, A_CLOSEPARTY },
// case 1
{ S_SETPARTYATTR, A_RELAXCNF, S_RELAXCNF, A_NONE },
{ S_SETPARTYATTR, A_REMOVEPARTY, S_REMOVEPARTY, A_CLOSEPARTY },
{ S_SETPARTYATTR_EXIT, A_REMOVEPARTY,S_REMOVEPARTY, A_CLOSEPARTY },
// Dev connect
{ S_DEVCONNECT1, A_EXIT, S_DEVCONNECT1_EXIT, A_NONE },
{ S_DEVCONNECT1, A_MOVE, S_DEVCONNECT2, A_NONE },
{ S_DEVCONNECT1, A_MOVE_DEVCONNECT2_EXIT, S_DEVCONNECT2_EXIT, A_NONE },
{ S_DEVCONNECT1_EXIT,A_MOVE, S_DEVCONNECT2_EXIT, A_NONE },
{ S_DEVCONNECT2, A_EXIT, S_DEVCONNECT2_EXIT, A_NONE },
{ S_DEVCONNECT2, A_DEVDISCONNECTNTWK, S_DEVDISCONNECTNTWK, A_REMOVEPARTY },
{ S_DEVCONNECT2, A_RELAXCNF, S_RELAXCNF, A_NONE },
{ S_DEVCONNECT2, A_REMOVEPARTY, S_REMOVEPARTY, A_CLOSEPARTY },
{ S_DEVCONNECT2_EXIT, A_DEVDISCONNECTNTWK, S_DEVDISCONNECTNTWK, A_REMOVEPARTY },
{ S_DEVCONNECT2_EXIT, A_REMOVEPARTY, S_REMOVEPARTY, A_CLOSEPARTY },
//---------------------------------------------------------------------
// In conference
{ S_RELAXCNF, A_DEVDISCONNECTNTWK, S_DEVDISCONNECTNTWK, A_DEVDISCONNECTCNF},
{ S_RELAXCNF, A_DEVDISCONNECTCNF, S_DEVDISCONNECTCNF, A_REMOVEPARTY },
{ S_RELAXCNF, A_REMOVEPARTY, S_REMOVEPARTY, A_CLOSEPARTY },
{ S_RELAXCNF, A_MODIFYCALL, S_RELAXCNF, A_NONE },
{ S_DEVDISCONNECTNTWK, A_DEVDISCONNECTCNF, S_DEVDISCONNECTCNF, A_REMOVEPARTY },
{ S_DEVDISCONNECTNTWK, A_REMOVEPARTY, S_REMOVEPARTY, A_CLOSEPARTY },
{ S_DEVDISCONNECTCNF, A_REMOVEPARTY, S_REMOVEPARTY, A_CLOSEPARTY },
// Drop & release
{ S_DROP, A_RELEASE, S_RELEASE, A_FATAL },
{ S_RELEASE, A_RELAX, S_RELAX, A_CLOSE },
// State machine error (missing case to handle specified action)
{ S_ANY, A_ERROR, S_SAME, A_CLOSE },
// 'Any state' actions:
{ S_ANY, A_CLOSE, S_FINAL, A_GIVEUP },
{ S_ANY, A_FATAL, S_FINAL, A_GIVEUP },
{ S_ANY, A_GIVEUP, S_FINAL, A_NONE },
{ S_ANY, A_NONE, S_SAME, A_NONE },
{ S_ANY, A_MOVE_UNBLOCKED, S_WAIT_UNBLOCKED, A_NONE },
{ S_ANY, A_RESET, S_RESET, A_FATAL },
{ S_ANY, A_DROP, S_DROP, A_FATAL },
// this is close + drop
{ S_ANY, A_CLOSEPARTY, S_DROP, A_FATAL },
{ S_ANY, A_STOP_DX, S_STOP_DX, A_DROP },
// Not part of state machine, indicates last line
{ S_END, 0, 0, 0 }
}; // End of ntwk_action_stru[]
//--------------------------------------------
// The state machine definition
//--------------------------------------------
static EVENT_STRU ntwk_event_stru[] = {
// Example:
// { S_ANSWER, GCEV_ANSWERED, A_PLAYGREET },
// In state S_ANSWER, GCEV_ANSWERED is received.
// Then proceed with action A_PLAYGREET)
//
// current_state event action
// After Open
{ S_OPEN, GCEV_OPENEX, A_MOVE_UNBLOCKED },
{ S_OPEN, GCEV_OPENEX_FAIL, A_CLOSE },
{ S_OPEN, GCEV_UNBLOCKED, A_MOVE_OPENEX },
{ S_OPEN, GCEV_BLOCKED, A_NONE },
{ S_OPEN, USREV_EXIT_REQUEST, A_EXIT },
{ S_OPEN, USREV_TIMEOUT, A_CLOSE },
{ S_OPEN_EXIT, GCEV_OPENEX, A_CLOSE, },
{ S_OPEN_EXIT, GCEV_OPENEX_FAIL, A_CLOSE, },
{ S_OPEN_EXIT, USREV_TIMEOUT, A_CLOSE, },
{ S_OPEN_EXIT, GCEV_BLOCKED, A_NONE, },
{ S_WAIT_UNBLOCKED, USREV_EXIT_REQUEST, A_CLOSE, },
{ S_WAIT_UNBLOCKED, GCEV_BLOCKED, A_NONE, },
{ S_WAIT_UNBLOCKED, GCEV_UNBLOCKED, A_RESET },
{ S_WAIT_UNBLOCKED, USREV_TIMEOUT, A_CLOSE },
{ S_WAIT_OPENEX, GCEV_OPENEX, A_RESET },
{ S_WAIT_OPENEX, GCEV_OPENEX_FAIL, A_CLOSE },
{ S_WAIT_OPENEX, USREV_EXIT_REQUEST, A_EXIT },
{ S_WAIT_OPENEX, GCEV_BLOCKED, A_MOVE_OPEN },
// After ResetLineDev
{ S_RESET, GCEV_BLOCKED, A_MOVE_UNBLOCKED },
{ S_RESET, USREV_EXIT_REQUEST, A_EXIT },
{ S_RESET, GCEV_TASKFAIL, A_CLOSE },
{ S_RESET, USREV_TIMEOUT, A_CLOSE },
{ S_RESET, GCEV_RESETLINEDEV, A_RELAX },
{ S_RESET_EXIT, GCEV_TASKFAIL, A_CLOSE },
{ S_RESET_EXIT, USREV_TIMEOUT, A_CLOSE },
{ S_RESET_EXIT, GCEV_RESETLINEDEV, A_CLOSE },
// Incoming call
/*
// This is for accept only
{ S_RELAX, GCEV_OFFERED, A_ANSWER },
// end this is for accept only
*/
// Accept and Answer
{ S_RELAX, GCEV_OFFERED, A_ACCEPT },
{ S_ACCEPT, GCEV_BLOCKED, A_EXIT },
{ S_ACCEPT, USREV_EXIT_REQUEST, A_DROP },
{ S_ACCEPT, GCEV_DISCONNECTED, A_DROP },
{ S_ACCEPT, GCEV_TASKFAIL, A_RESET },
{ S_ACCEPT, USREV_TIMEOUT, A_RESET },
{ S_ACCEPT, GCEV_ACCEPT, A_ANSWER },
{ S_ACCEPT, USREV_SKIP_ACCEPT, A_ANSWER },
{ S_ACCEPT_EXIT, GCEV_TASKFAIL, A_DROP },
{ S_ACCEPT_EXIT, USREV_TIMEOUT, A_DROP },
{ S_ACCEPT_EXIT, GCEV_ANSWERED, A_DROP },
// end Accept and answer
{ S_RELAX, USREV_EXIT_REQUEST, A_CLOSE },
{ S_ANSWER, GCEV_BLOCKED, A_EXIT },
{ S_ANSWER, USREV_EXIT_REQUEST, A_DROP },
{ S_ANSWER, GCEV_DISCONNECTED, A_DROP },
{ S_ANSWER, GCEV_TASKFAIL, A_RESET },
{ S_ANSWER, USREV_TIMEOUT, A_RESET },
{ S_ANSWER, GCEV_ANSWERED, A_ROUTE },
{ S_ANSWER_EXIT, GCEV_TASKFAIL, A_DROP },
{ S_ANSWER_EXIT, USREV_TIMEOUT, A_DROP },
{ S_ANSWER_EXIT, GCEV_ANSWERED, A_DROP },
// Route
{ S_ROUTE, GCEV_BLOCKED, A_EXIT },
{ S_ROUTE, USREV_EXIT_REQUEST, A_EXIT },
{ S_ROUTE, GCEV_DISCONNECTED, A_EXIT },
{ S_ROUTE, USREV_TIMEOUT, A_DROP },
{ S_ROUTE, IPMEV_ERROR, A_DROP },
{ S_ROUTE, GCEV_TASKFAIL, A_DROP },
{ S_ROUTE, GCEV_LISTEN, A_CHECK_DNIS },
{ S_ROUTE, IPMEV_LISTEN, A_CHECK_DNIS },
{ S_ROUTE, USREV_IPML_LISTEN, A_CHECK_DNIS },
{ S_ROUTE_EXIT, GCEV_TASKFAIL, A_DROP },
{ S_ROUTE_EXIT, USREV_TIMEOUT, A_DROP },
{ S_ROUTE_EXIT, GCEV_LISTEN, A_DROP },
{ S_ROUTE_EXIT, IPMEV_LISTEN, A_DROP },
{ S_ROUTE_EXIT, USREV_IPML_LISTEN, A_DROP },
{ S_ROUTE_EXIT, IPMEV_ERROR, A_DROP },
// Check dnis
// check pass code
{ S_CHECK_DNIS, GCEV_BLOCKED, A_DROP },
{ S_CHECK_DNIS, USREV_EXIT_REQUEST, A_DROP },
{ S_CHECK_DNIS, GCEV_DISCONNECTED, A_DROP },
{ S_CHECK_DNIS, USREV_CHECK_FAIL, A_PLAYGREET },
{ S_CHECK_DNIS, USREV_CHECK_PASS, A_OPENPARTY },
// Play greeting
{ S_PLAYGREET, GCEV_BLOCKED, A_STOP_DX },
{ S_PLAYGREET, USREV_EXIT_REQUEST, A_STOP_DX },
{ S_PLAYGREET, GCEV_DISCONNECTED, A_STOP_DX },
{ S_PLAYGREET, TDX_ERROR, A_DROP },
{ S_PLAYGREET, USREV_TIMEOUT, A_DROP },
{ S_PLAYGREET, TDX_PLAY, A_GETDIGITS },
{ S_PLAYBYE, GCEV_BLOCKED, A_STOP_DX },
{ S_PLAYBYE, USREV_EXIT_REQUEST, A_STOP_DX },
{ S_PLAYBYE, GCEV_DISCONNECTED, A_STOP_DX },
{ S_PLAYBYE, TDX_ERROR, A_DROP },
{ S_PLAYBYE, USREV_TIMEOUT, A_DROP },
{ S_PLAYBYE, TDX_PLAY, A_DROP },
// Stop play/getdigits
{ S_STOP_DX, GCEV_BLOCKED, A_STOP_DX },
{ S_STOP_DX, USREV_EXIT_REQUEST, A_STOP_DX },
{ S_STOP_DX, GCEV_DISCONNECTED, A_STOP_DX },
{ S_STOP_DX, TDX_ERROR, A_DROP },
{ S_STOP_DX, USREV_TIMEOUT, A_DROP },
{ S_STOP_DX, TDX_PLAY, A_DROP },
{ S_STOP_DX, TDX_GETDIG, A_DROP },
// get digits
{ S_GETDIGITS, GCEV_BLOCKED, A_STOP_DX },
{ S_GETDIGITS, USREV_EXIT_REQUEST, A_STOP_DX },
{ S_GETDIGITS, GCEV_DISCONNECTED, A_STOP_DX },
{ S_GETDIGITS, TDX_ERROR, A_DROP },
{ S_GETDIGITS, USREV_TIMEOUT, A_DROP },
{ S_GETDIGITS, TDX_GETDIG, A_CHECK_CNF },
// check pass code
{ S_CHECK_CNF, GCEV_BLOCKED, A_DROP },
{ S_CHECK_CNF, USREV_EXIT_REQUEST, A_DROP },
{ S_CHECK_CNF, GCEV_DISCONNECTED, A_DROP },
{ S_CHECK_CNF, USREV_CHECK_FAIL, A_PLAYBYE },
{ S_CHECK_CNF, USREV_CHECK_RETRY, A_PLAYINVALID },
{ S_CHECK_CNF, USREV_CHECK_PASS, A_UNLISTEN },
{ S_UNLISTEN, GCEV_BLOCKED, A_DROP },
{ S_UNLISTEN, USREV_EXIT_REQUEST, A_DROP },
{ S_UNLISTEN, GCEV_DISCONNECTED, A_DROP },
{ S_UNLISTEN, GCEV_UNLISTEN, A_OPENPARTY },
{ S_UNLISTEN, IPMEV_UNLISTEN, A_OPENPARTY },
// Conference
// open party
{ S_OPENPARTY, GCEV_BLOCKED, A_EXIT },
{ S_OPENPARTY, USREV_EXIT_REQUEST, A_EXIT },
{ S_OPENPARTY, GCEV_DISCONNECTED, A_EXIT },
{ S_OPENPARTY, CNFEV_OPEN_PARTY_FAIL, A_CLOSEPARTY },
{ S_OPENPARTY, USREV_TIMEOUT, A_CLOSEPARTY },
// case 2: first add party
// { S_OPENPARTY, CNFEV_OPEN_PARTY, A_ADDPARTY },
// case 1 first dev connect
{ S_OPENPARTY, CNFEV_OPEN_PARTY, A_DEVCONNECT },
{ S_OPENPARTY_EXIT, CNFEV_OPEN_PARTY_FAIL, A_CLOSEPARTY },
{ S_OPENPARTY_EXIT, USREV_TIMEOUT, A_CLOSEPARTY },
{ S_OPENPARTY_EXIT, CNFEV_OPEN_PARTY, A_CLOSEPARTY },
// ----------------- DevConnect, AddParty, SetAttribute
// Dev connect
{ S_DEVCONNECT1, GCEV_BLOCKED, A_EXIT },
{ S_DEVCONNECT1, USREV_EXIT_REQUEST, A_EXIT },
{ S_DEVCONNECT1, GCEV_DISCONNECTED, A_EXIT },
{ S_DEVCONNECT1, DMEV_CONNECT_FAIL, A_MOVE_DEVCONNECT2_EXIT },
{ S_DEVCONNECT1, USREV_TIMEOUT, A_MOVE_DEVCONNECT2_EXIT },
{ S_DEVCONNECT1, DMEV_CONNECT, A_MOVE },
{ S_DEVCONNECT1_EXIT, DMEV_CONNECT, A_NONE },
{ S_DEVCONNECT1_EXIT, DMEV_CONNECT_FAIL, A_MOVE },
{ S_DEVCONNECT1_EXIT, USREV_TIMEOUT, A_MOVE },
// Dev connect
{ S_DEVCONNECT2, GCEV_BLOCKED, A_EXIT },
{ S_DEVCONNECT2, USREV_EXIT_REQUEST, A_EXIT },
{ S_DEVCONNECT2, GCEV_DISCONNECTED, A_EXIT },
{ S_DEVCONNECT2, DMEV_CONNECT_FAIL, A_DEVDISCONNECTNTWK },
{ S_DEVCONNECT2, USREV_TIMEOUT, A_DEVDISCONNECTNTWK },
// case 2
// { S_DEVCONNECT2, DMEV_CONNECT, A_RELAXCNF },
// case 1
{ S_DEVCONNECT2, DMEV_CONNECT, A_ADDPARTY },
{ S_DEVCONNECT2_EXIT, DMEV_CONNECT, A_DEVDISCONNECTNTWK },
{ S_DEVCONNECT2_EXIT, DMEV_CONNECT_FAIL, A_DEVDISCONNECTNTWK },
{ S_DEVCONNECT2_EXIT, USREV_TIMEOUT, A_DEVDISCONNECTNTWK },
{ S_ADDPARTY, GCEV_BLOCKED, A_EXIT },
{ S_ADDPARTY, USREV_EXIT_REQUEST, A_EXIT },
{ S_ADDPARTY, GCEV_DISCONNECTED, A_EXIT },
{ S_ADDPARTY, CNFEV_ADD_PARTY_FAIL, A_CLOSEPARTY },
{ S_ADDPARTY, USREV_TIMEOUT, A_CLOSEPARTY },
{ S_ADDPARTY, CNFEV_ADD_PARTY, A_SETPARTYATTR },
{ S_ADDPARTY_EXIT, CNFEV_ADD_PARTY_FAIL, A_CLOSEPARTY },
{ S_ADDPARTY_EXIT, USREV_TIMEOUT, A_CLOSEPARTY },
{ S_ADDPARTY_EXIT, CNFEV_ADD_PARTY, A_REMOVEPARTY },
// set party attribute
{ S_SETPARTYATTR, GCEV_BLOCKED, A_EXIT },
{ S_SETPARTYATTR, USREV_EXIT_REQUEST, A_EXIT },
{ S_SETPARTYATTR, GCEV_DISCONNECTED, A_EXIT },
{ S_SETPARTYATTR, CNFEV_SET_ATTRIBUTE_FAIL, A_CLOSEPARTY },
{ S_SETPARTYATTR, USREV_TIMEOUT, A_CLOSEPARTY },
{ S_SETPARTYATTR, CNFEV_SET_ATTRIBUTE, A_RELAXCNF },
{ S_SETPARTYATTR_EXIT, CNFEV_SET_ATTRIBUTE_FAIL, A_CLOSEPARTY },
{ S_SETPARTYATTR_EXIT, USREV_TIMEOUT, A_CLOSEPARTY },
{ S_SETPARTYATTR_EXIT, CNFEV_SET_ATTRIBUTE, A_CLOSEPARTY },
/*
// ----------------- ADD, SetAttribute, DevConnect
// Add party
{ S_ADDPARTY, GCEV_BLOCKED, A_EXIT },
{ S_ADDPARTY, USREV_EXIT_REQUEST, A_EXIT },
{ S_ADDPARTY, GCEV_DISCONNECTED, A_EXIT },
{ S_ADDPARTY, CNFEV_ADD_PARTY_FAIL, A_CLOSEPARTY },
{ S_ADDPARTY, USREV_TIMEOUT, A_CLOSEPARTY },
{ S_ADDPARTY, CNFEV_ADD_PARTY, A_SETPARTYATTR },
{ S_ADDPARTY_EXIT, CNFEV_ADD_PARTY_FAIL, A_CLOSEPARTY },
{ S_ADDPARTY_EXIT, USREV_TIMEOUT, A_CLOSEPARTY },
{ S_ADDPARTY_EXIT, CNFEV_ADD_PARTY, A_REMOVEPARTY },
// set party attribute
{ S_SETPARTYATTR, GCEV_BLOCKED, A_EXIT },
{ S_SETPARTYATTR, USREV_EXIT_REQUEST, A_EXIT },
{ S_SETPARTYATTR, GCEV_DISCONNECTED, A_EXIT },
{ S_SETPARTYATTR, CNFEV_SET_ATTRIBUTE_FAIL, A_CLOSEPARTY },
{ S_SETPARTYATTR, USREV_TIMEOUT, A_CLOSEPARTY },
{ S_SETPARTYATTR, CNFEV_SET_ATTRIBUTE, A_DEVCONNECT },
{ S_SETPARTYATTR_EXIT, CNFEV_SET_ATTRIBUTE_FAIL, A_CLOSEPARTY },
{ S_SETPARTYATTR_EXIT, USREV_TIMEOUT, A_CLOSEPARTY },
{ S_SETPARTYATTR_EXIT, CNFEV_SET_ATTRIBUTE, A_CLOSEPARTY },
// Dev connect
{ S_DEVCONNECT1, GCEV_BLOCKED, A_EXIT },
{ S_DEVCONNECT1, USREV_EXIT_REQUEST, A_EXIT },
{ S_DEVCONNECT1, GCEV_DISCONNECTED, A_EXIT },
{ S_DEVCONNECT1, DMEV_CONNECT_FAIL, A_MOVE_DEVCONNECT2_EXIT },
{ S_DEVCONNECT1, USREV_TIMEOUT, A_MOVE_DEVCONNECT2_EXIT },
{ S_DEVCONNECT1, DMEV_CONNECT, A_MOVE },
{ S_DEVCONNECT1_EXIT, DMEV_CONNECT, A_NONE },
{ S_DEVCONNECT1_EXIT, DMEV_CONNECT_FAIL, A_MOVE },
{ S_DEVCONNECT1_EXIT, USREV_TIMEOUT, A_MOVE },
// Dev connect
{ S_DEVCONNECT2, GCEV_BLOCKED, A_EXIT },
{ S_DEVCONNECT2, USREV_EXIT_REQUEST, A_EXIT },
{ S_DEVCONNECT2, GCEV_DISCONNECTED, A_EXIT },
{ S_DEVCONNECT2, DMEV_CONNECT_FAIL, A_DEVDISCONNECTNTWK },
{ S_DEVCONNECT2, USREV_TIMEOUT, A_DEVDISCONNECTNTWK },
{ S_DEVCONNECT2, DMEV_CONNECT, A_RELAXCNF },
{ S_DEVCONNECT2_EXIT, DMEV_CONNECT, A_DEVDISCONNECTNTWK },
{ S_DEVCONNECT2_EXIT, DMEV_CONNECT_FAIL, A_DEVDISCONNECTNTWK },
{ S_DEVCONNECT2_EXIT, USREV_TIMEOUT, A_DEVDISCONNECTNTWK },
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -