📄 autodial.c
字号:
/****************************************************************
** *
** FILE : AutoDial.C *
** COPYRIGHT : (c) 2001 .Xiamen Yaxon NetWork CO.LTD *
** *
** *
** By : CCH 2002.1.15 *
****************************************************************/
#include "includes.h"
#include "bsp.h"
#include "tools.h"
#include "message.h"
#include "timetask.h"
#include "phonedrv.h"
#include "autodial.h"
#include "zprint.h"
/*
********************************************************************************
* DEFINE CONFIG PARAMETERS
********************************************************************************
*/
#define MAX_TEST 3
#define PERIOD_WAIT SECOND, 15
/*
********************************************************************************
* DEFINE STATUS
********************************************************************************
*/
#define FREE_ 0
#define DIALING_ 1
/*
********************************************************************************
* DEFINE AUTODIAL_STRUCT
********************************************************************************
*/
typedef struct {
INT8U status;
INT8U tellen;
INT8U tel[SYS_TELLEN];
INT8U ct_test;
INT8U channel;
TMR_TSK *waittmr;
} AUTODIAL_STRUCT;
/*
********************************************************************************
* DEFINE MODULE PARAMETERS
********************************************************************************
*/
static AUTODIAL_STRUCT AutoDialer;
void StopAutoDial(void)
{
AutoDialer.status = FREE_;
StopTmr(AutoDialer.waittmr);
}
BOOLEAN StartAutoDial(INT8U channel, INT8U tellen, INT8U *tel, INT8U waittime)
{
if (tellen > sizeof(AutoDialer.tel) || tellen == 0) return FALSE;
memcpy(AutoDialer.tel, tel, tellen);
AutoDialer.tellen = tellen;
AutoDialer.channel = channel;
AutoDialer.ct_test = 0;
StartTmr(AutoDialer.waittmr, SECOND, waittime);
HangupPhone(PHONE_COM,0);
return TRUE;
}
static void DialerHooker(INT8U status)
{
if (status == PHONE_TALKING)
StopAutoDial();
else if (status == PHONE_FREE)
AutoDialer.status = FREE_;
}
static void WaitTmrProc(void)
{
StartTmr(AutoDialer.waittmr, PERIOD_WAIT);
if (RingupPhone(PHONE_COM, AutoDialer.channel, AutoDialer.tel, AutoDialer.tellen, DialerHooker) == PHONE_ACCEPT) {
AutoDialer.ct_test++;
AutoDialer.status = DIALING_;
} else if (AutoDialer.status == DIALING_) {
HangupPhone(PHONE_COM,0);
}
if (AutoDialer.ct_test >= MAX_TEST) StopAutoDial();
}
void InitAutoDial(void)
{
AutoDialer.status = FREE_;
AutoDialer.waittmr = CreateTimer(WaitTmrProc, 0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -