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

📄 h323.cpp

📁 基于h323协议的软phone
💻 CPP
📖 第 1 页 / 共 3 页
字号:
/************************************************************************
 *
 *    Version %I%
 *
 *       Copyright (C) 2002 By BEP Corporation.
 * This Document Contains Proprietary Information Of BEP Corporation.
 * No Distribution Is Granted Except With Written Permission From
 * BEP Corporation.
 *************************************************************************/
/*
 **
 ** MODULE: h323.c
 **
 ** PURPOSE:
 **
 ** LIMITATIONS:
 **
 ** DATE CREATED: 09-27-2004
 **
 ** AUTHOR(S): aoto created
 **
 ** MODIFICATIONS:
 **     userId                  Date            Description
 **
 ** QA Status:
 **      status                   Date             Owner
 **
 */
#include "stdafx.h"
#include "myphone.h"
#include "myphoneDlg.h"

#include "h323.h"

s_state_machine* get_h323()
{
    s_state_machine* pSM = (s_state_machine* )malloc(sizeof(s_state_machine));
    pSM->iSize = 10;
    pSM->iState = ST_H323_ON_HOOK_STATE;
    pSM->pState = (s_state* )malloc(sizeof(s_state)*pSM->iSize);

    pSM->pState[ST_H323_ON_HOOK_STATE].iSize = 11;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck = (s_event_ack*)malloc(sizeof(s_event_ack)*
        11);

    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 0].iEvent =
        local_off_hook_event;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 0].iState =
        ST_H323_WAIT_FIRST_DIGIT_STATE;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 0].funcAck =
        &h323_on_hook_state_local_off_hook_event;

    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 1].iEvent =
        receive_query_availability_event;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 1].iState =
        ST_H323_RINGING_STATE;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 1].funcAck =
        &h323_on_hook_state_receive_query_availability_event;

    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 2].iEvent = to_ringing_state;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 2].iState =
        ST_H323_RINGING_STATE;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 2].funcAck =
        &h323_on_hook_state_to_ringing_state;

    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 3].iEvent = callout_key_event;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 3].iState =
        ST_H323_ON_HOOK_STATE;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 3].funcAck =
        &h323_on_hook_state_callout_key_event;

    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 4].iEvent = long_digit_event;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 4].iState =
        ST_H323_ON_HOOK_STATE;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 4].funcAck =
        &h323_on_hook_state_long_digit_event;

    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 5].iEvent =
        local_on_hook_event;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 5].iState =
        ST_H323_ON_HOOK_STATE;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 5].funcAck =
        &h323_on_hook_state_local_on_hook_event;

    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 6].iEvent =
        receive_terminate_event;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 6].iState =
        ST_H323_ON_HOOK_STATE;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 6].funcAck =
        &h323_on_hook_state_receive_terminate_event;

    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 7].iEvent = timeout_event;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 7].iState =
        ST_H323_ON_HOOK_STATE;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 7].funcAck =
        &h323_on_hook_state_timeout_event;

    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 8].iEvent =
        to_wait_for_connect_state;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 8].iState =
        ST_H323_WAIT_FOR_CONNECT_STATE;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 8].funcAck =
        &h323_on_hook_state_to_wait_for_connect_state;

    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 9].iEvent =
        to_query_availability_state;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 9].iState =
        ST_H323_QUERY_AVAILABILITY_STATE;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 9].funcAck =
        &h323_on_hook_state_to_query_availability_state;

    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 10].iEvent =
        to_dead_end_state;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 10].iState =
        ST_H323_DEAD_END_STATE;
    pSM->pState[ST_H323_ON_HOOK_STATE].pEventAck[ 10].funcAck =
        &h323_on_hook_state_to_dead_end_state;

    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].iSize = 13;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck = (s_event_ack* )malloc(sizeof(
        s_event_ack)* 13);

    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 0].iEvent =
        receive_query_availability_event;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 0].iState =
        ST_H323_WAIT_FIRST_DIGIT_STATE;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 0].funcAck =
        &h323_wait_first_digit_state_receive_query_availability_event;

    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 1].iEvent =
        receive_terminate_event;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 1].iState =
        ST_H323_WAIT_FIRST_DIGIT_STATE;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 1].funcAck =
        &h323_wait_first_digit_state_receive_terminate_event;

    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 2].iEvent =
        digit_event;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 2].iState =
        ST_H323_WAIT_FIRST_DIGIT_STATE;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 2].funcAck =
        &h323_wait_first_digit_state_digit_event;

    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 3].iEvent =
        timeout_event;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 3].iState =
        ST_H323_WAIT_FIRST_DIGIT_STATE;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 3].funcAck =
        &h323_wait_first_digit_state_timeout_event;

    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 4].iEvent =
        callout_key_event;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 4].iState =
        ST_H323_WAIT_FIRST_DIGIT_STATE;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 4].funcAck =
        &h323_wait_first_digit_state_callout_key_event;

    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 5].iEvent =
        cancel_key_event;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 5].iState =
        ST_H323_WAIT_FIRST_DIGIT_STATE;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 5].funcAck =
        &h323_wait_first_digit_state_cancel_key_event;

    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 6].iEvent =
        speed_dial_key_event;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 6].iState =
        ST_H323_WAIT_FIRST_DIGIT_STATE;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 6].funcAck =
        &h323_wait_first_digit_state_speed_dial_key_event;

    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 7].iEvent =
        local_on_hook_event;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 7].iState =
        ST_H323_ON_HOOK_STATE;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 7].funcAck =
        &h323_wait_first_digit_state_local_on_hook_event;

    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 8].iEvent =
        to_dead_end_state;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 8].iState =
        ST_H323_DEAD_END_STATE;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 8].funcAck =
        &h323_wait_first_digit_state_to_dead_end_state;

    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 9].iEvent =
        to_collect_digits_state;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 9].iState =
        ST_H323_COLLECT_DIGITS_STATE;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 9].funcAck =
        &h323_wait_first_digit_state_to_collect_digits_state;

    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 10].iEvent =
        to_collect_transfer_digits_state;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 10].iState =
        ST_H323_COLLECT_TRANSFER_DIGITS_STATE;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 10].funcAck =
        &h323_wait_first_digit_state_to_collect_transfer_digits_state;

    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 11].iEvent =
        to_bidir_voice_state;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 11].iState =
        ST_H323_BIDIR_VOICE_STATE;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 11].funcAck =
        &h323_wait_first_digit_state_to_bidir_voice_state;

    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 12].iEvent =
        to_query_availability_state;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 12].iState =
        ST_H323_QUERY_AVAILABILITY_STATE;
    pSM->pState[ST_H323_WAIT_FIRST_DIGIT_STATE].pEventAck[ 12].funcAck =
        &h323_wait_first_digit_state_to_query_availability_state;

    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].iSize = 13;
    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck = (s_event_ack*)malloc(sizeof(
        s_event_ack)* 13);

    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 0].iEvent =
        digit_event;
    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 0].iState =
        ST_H323_COLLECT_DIGITS_STATE;
    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 0].funcAck =
        &h323_collect_digits_state_digit_event;

    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 1].iEvent =
        receive_query_availability_event;
    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 1].iState =
        ST_H323_COLLECT_DIGITS_STATE;
    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 1].funcAck =
        &h323_collect_digits_state_receive_query_availability_event;

    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 2].iEvent =
        receive_terminate_event;
    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 2].iState =
        ST_H323_COLLECT_DIGITS_STATE;
    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 2].funcAck =
        &h323_collect_digits_state_receive_terminate_event;

    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 3].iEvent =
        cancel_key_event;
    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 3].iState =
        ST_H323_COLLECT_DIGITS_STATE;
    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 3].funcAck =
        &h323_collect_digits_state_cancel_key_event;

    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 4].iEvent =
        long_digit_event;
    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 4].iState =
        ST_H323_COLLECT_DIGITS_STATE;
    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 4].funcAck =
        &h323_collect_digits_state_long_digit_event;

    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 5].iEvent =
        timeout_event;
    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 5].iState =
        ST_H323_COLLECT_DIGITS_STATE;
    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 5].funcAck =
        &h323_collect_digits_state_timeout_event;

    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 6].iEvent =
        callout_key_event;
    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 6].iState =
        ST_H323_QUERY_AVAILABILITY_STATE;
    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 6].funcAck =
        &h323_collect_digits_state_callout_key_event;

    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 7].iEvent =
        to_query_availability_state;
    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 7].iState =
        ST_H323_QUERY_AVAILABILITY_STATE;
    pSM->pState[ST_H323_COLLECT_DIGITS_STATE].pEventAck[ 7].funcAck =
        &h323_collect_digits_state_to_query_availability_state;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -