📄 cal_estate.c
字号:
/******************************************************************
** File name: "CAL_ESTATE.C"
** Version: 1.0
** Author: Gong Shu_chao
** date: 2008-3-25
** Revision:
** Date:
** Description: Basing on the MCU and DSP SYSTEM,the program indicates the tranfer of the
** telephone communication with the semiduplex function.
** Note: correspond to vc
******************************************************************/
#include "CAL_ESTATE.h"
#include <stdlib.h>
#include <stdio.h>
CAL_ESTATE( void )
{
switch ( g_state ) //handle outer events according to the current state
/***********************calling party *****************************/
{
case initial_sta :
switch ( g_event )
{
case pick_up_event :
g_state=sending_bel_sta;
break;
case called_bell_event :
g_state=called_bel_sta;
break;
}
case sending_bel_sta :
switch ( g_event )
{
case stop_bel_event :
displaynum_1(); //stop to the ring,write the number to ram and display the first number.
g_state= coun_sta ;
break;
case bel_timeover_event : //no key pressed and the timer of the state is timeover
g_state= busy_bel_sta ;
break;
case hang_up_event :
g_state=initial_sta;
break;
}
case coun_sta :
switch ( g_event )
{
case num_event :
coun_number ( ); //and to judge the call_number whether is right or not,give a "call_event"
g_state=calling_sta;
break;
case hang_up_event :
g_state=initial_sta;
break;
case coun_timeover_event ://the timer of the state is timeover
g_state= busy_bel_sta ;
break;
}
case calling_sta :
switch ( g_event )
{
case ans_event :
rebell( ) ;
g_state= rebell_sta ;
break;
case channel_busy_event :
g_state= busy_bel_sta ;
break;
case mul_calls_event :
g_state= busy_bel_sta ;
break;
case no_ans_event :
g_state= busy_bel_sta ;
break;
case hang_up_event :
g_state= initial_sta ;
break;
}
case busy_bel_sta :
switch ( g_event )
{
case hang_up_event :
g_state= initial_sta ;
break;
case busy_timeover_event :
g_state= initial_sta ;
break;
}
case rebell_sta :
switch ( g_event )
{
case called_picking_event :
clc_ring();
g_state= talking_through_sta ;
break;
case rebell_timeover_event :
g_state= busy_bel_sta ;
break;
case hang_up_event :
g_state= initial_sta ;
break;
}
case called_bel_sta : //the called party
switch ( g_event )
{
case picking_event :
g_state= talking_through_sta ;
break;
case ring_timeover_event :
g_state= initial_sta ;
break;
case calling_hangup_event :
g_state= initial_sta ;
break;
}
//the three common states
case talking_through_sta:
switch ( g_event )
{
case ppt_event : //add1
g_state=speaking_substa;//add2
break;
case unppt_event ://add3
g_state=listening_substa;//add4
break;
case fir_hang_event :
g_state=fir_hang_govern_sta;
break;
case secon_hang_event:
g_state=secon_hang_govern_sta;
break;
case talking_timeover_event:
g_state=secon_hang_govern_sta;
break;
}
case fir_hang_govern_sta :
switch ( g_event )
{
case release_event : //add5
g_state= busy_bel_sta ;
break;
}
case secon_hang_govern_sta:
switch ( g_event )
{
case fir_affirm_event:
g_state= initial_sta ;
break;
case no_affirm_event:
g_state= initial_sta ;
break;
}
break;
}
return ture ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -