⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ntwkdevice.cpp

📁 Conferencing code using Dialogic hardware
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    { 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 + -