📄 set_a_calltransfer.c
字号:
#ifdef _MNT_
#include <assert.h>
#else
#define assert(x)
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "datatype.h"
#include "mmalloc.h"
#include "at.h"
#include "METAWNDO1.H"
#include "paramanage.h"
#include "windows.h"
#include "translate.h"
#include "debug_out.h"
#include "selectwnd.h"
#include "Message.h"
extern int Waiting(int a);
#define COMPILE_OK 0
#define COMPILING 1
static char *SETDISPLAYCHAR[]={
"连接中...",//0
"设置成功",// 1
"设置失败",// 2
"设置成功",// 3//取消成功
"设置失败",// 4//取消失败
"查询出错",// 5
"已经取消",// 6
"已经登记",// 7
};
//=================================
#if COMPILING
#define MAX_CFG_ITEM_001 3
const static char *cfgName_001[] = {
"禁用",
"启用",
"查询状态",
};
//========================================
#define CALLTRANSFER 1
#if CALLTRANSFER
//#define CALLTRANSFER_0 1
//#define CALLTRANSFER_1 1
//#define CALLTRANSFER_2 1
#define CALLTRANSFER_3 1
#define CALLTRANSFER_4 1
/*
*enshow =1 ;显示
*
*/
static int _delete_all_Transfer()
{
int cond;
int sum;
sum=0;
for(cond=2;cond>=0;cond--)
{
sum+=AT_DelCallforward(cond);
}
if(sum==0)
return 0;
else
return -1;
}
static int TransferCheck(int cond,CALLF_PARAM *CALLforward_St,int enshow)
{//发送查询命令
char prstr[30];
int status;
status=AT_ChkCallforward(cond,CALLforward_St);
if(0==status)
{//
if(strlen(CALLforward_St->number)>0&&CALLforward_St->status==1)
{
if(CALLforward_St->type==145)
{
strcpy(prstr, "+");
strcat(prstr,CALLforward_St->number);
strcpy(CALLforward_St->number,&prstr[3]);
}
else
{
strcpy(prstr,CALLforward_St->number);
}
if(enshow)XMessageBox(TranslateChar("转移到"),prstr,ID_OK);
}
else if(CALLforward_St->status==0)
{
if(enshow)XMessageBox(NULL,TranslateChar("没有转移"),ID_OK);
}
}
return status;
}
static int en_Call_transfer(int cond,char *transferDialt)
{
rect area;
int state=0;
static int inttime=20;
CALLF_PARAM pParam;
//-----------输入号码
//SetRect(&area, 10, 15, 100, LCD_HEIGHT-10);
SetRect(&area, 10, 12, 102, LCD_HEIGHT-14);
if (0 > InputLine(&area, TranslateChar("输入号码"), (BYTE*)transferDialt, NUMBER_LEN-1, INPUT_DIGITAL | INPUT_FIXED))
return -1;
//-----------开始登记
XTipWndShow(TranslateChar(SETDISPLAYCHAR[0]),1);// "连接中...",//0
//AT_DelCallforward(0);//只取消转移所有//_delete_all_Transfer();//先取消所有
memset(&pParam,0,sizeof(CALLF_PARAM));
pParam.status=0xFF;
pParam.classx=0xFF;
state=AT_RegCallforward(cond,transferDialt,inttime,&pParam);
if(0 == state)
{
debug_print_str(DM_RUNINFO, (info_buffer, "pParam: %d,%d", pParam.status,pParam.classx));
// 不成功+CCFC:0,0,
if(pParam.classx==0)//该模块回恢复参数的第二个
{
XTipWndShow(TranslateChar(SETDISPLAYCHAR[2]),1);//"设置失败"
return -1;
}
else
{
XTipWndShow(TranslateChar(SETDISPLAYCHAR[1]),1);//"设置成功"
return 0;
}
}
else
{
XTipWndShow(TranslateChar(SETDISPLAYCHAR[2]),1);//"设置失败"
return -1;
}
}
static int _Talk_Call_transfer(int cond)
{
char transferDial[NUMBER_LEN];
CALLF_PARAM CALLforward_St;
int selMenu, id = 1;
//rect area;
int state=0;
memset(&CALLforward_St, 0, sizeof(CALLF_PARAM));
memset(transferDial, 0, NUMBER_LEN);
selMenu = CALLforward_St.status;
while (id) {//MAX_CFG_ITEM_001
id = XSelectWindow((char**)cfgName_001, 2, selMenu);//,FALSE);
if (id < 0)
break;
selMenu = id;
//XTipWndShow(TranslateChar(SETDISPLAYCHAR[0]),1);//连接中
switch (id) {
case 0://取消
if(0==AT_DelCallforward(cond))
{
XTipWndShow(TranslateChar(SETDISPLAYCHAR[1]),1);//"设置成功"
id = 0;
}
else
{
XTipWndShow(TranslateChar(SETDISPLAYCHAR[2]),1);//"设置失败"
id = 1;
}
break;
case 1://设置
if(0==en_Call_transfer(cond,transferDial))
id = 0;//ok
else
id = 1;//error
break;
case 2://查询
state=TransferCheck(cond,&CALLforward_St,1);//需要等待
id = 1;
break;
default:
id = 0;
break;
}
}
return 0;
}
//=====
//--------1
#define MAX_CFG_ITEM 3// 4
const static char *cfgName[] = {
"无条件转移",
"忙时转移",
"无应答转移",
"关闭所有转移",
};
void Talk_Call_transfer(void)
{
CALLF_PARAM CALLforwardSt;
int selMenu, id = 1;
memset(&CALLforwardSt, 0, sizeof(CALLF_PARAM));
selMenu = 0;
while (id) {
//id = cfgMainWnd(selMenu);// yu 显示所有菜单
id = XSelectWindow((char**)cfgName, MAX_CFG_ITEM, selMenu);//,FALSE);
if (id < 0)
break;
selMenu = id;
switch (id) {
case 0:
_Talk_Call_transfer(CALL_FORWARD_UNCONDITION);//_Talk_Call_ALLtransfer();
id = 1;
break;
case 1:
_Talk_Call_transfer(CALL_FORWARD_BUSY);//_Talk_Call_Busytransfer(&CALLforwardSt);
id = 1;
break;
case 2:
_Talk_Call_transfer(CALL_FORWARD_NOREPLY);//_Talk_Call_noResponsionTransfer(&CALLforwardSt);
id = 1;
break;
case 3://关闭所有
XTipWndShow(TranslateChar(SETDISPLAYCHAR[0]),1);//连接中
if(0==_delete_all_Transfer())
XTipWndShow(TranslateChar(SETDISPLAYCHAR[3]),1);//"取消成功"
else
XTipWndShow(TranslateChar(SETDISPLAYCHAR[4]),1);//"取消失败"
id = 1;
break;
default:
id = 0;
break;
}
}
}
#endif
//=================================================
#if 1
//---
#define MAX_CFG_ITEM_002 2
const static char *cfgName_002[] = {
"禁用",
"启用",
};
static void Callastrict_in(void)
{ int selMenu, id = 1;
selMenu = gDevicePara.Callastrict.in;
while (id) {
id = XSelectWindow((char**)cfgName_002, MAX_CFG_ITEM_002, selMenu);//,FALSE);
if (id < 0)
break;
selMenu = id;
if((0==id)||(1==id))
{
gDevicePara.Callastrict.in=id;
Para_Store(&gDevicePara);
if(0==id)
XTipWndShow(TranslateChar(SETDISPLAYCHAR[3]),1);
else
XTipWndShow(TranslateChar(SETDISPLAYCHAR[1]),1);
id=0;
}
}
}
static void Callastrict_out(void)
{ int selMenu, id = 1;
selMenu = gDevicePara.Callastrict.out;
while (id) {
id = XSelectWindow((char**)cfgName_002, MAX_CFG_ITEM_002, selMenu);//,FALSE);
if (id < 0)
break;
selMenu = id;
if((0==id)||(1==id))
{
gDevicePara.Callastrict.out=id;
Para_Store(&gDevicePara);
if(0==id)
XTipWndShow(TranslateChar(SETDISPLAYCHAR[3]),1);
else
XTipWndShow(TranslateChar(SETDISPLAYCHAR[1]),1);
id=0;
}
}
}
#if 1
static int SetIDD_head(void)
{
rect area;
char IDDstr_temp[5];
strcpy(IDDstr_temp,gDevicePara.Callastrict.IDD_head);
SetRect(&area, 10, 12, 102, LCD_HEIGHT-14);
if (0 > InputLine(&area, TranslateChar("输入号码"), (BYTE*)IDDstr_temp, 5-1, INPUT_DIGITAL | INPUT_FIXED))
return -1;
strcpy(gDevicePara.Callastrict.IDD_head,IDDstr_temp);
gDevicePara.Callastrict.IDD_out=1;
Para_Store(&gDevicePara);
XTipWndShow(TranslateChar(SETDISPLAYCHAR[1]),1);
return 0;
}
static void Callastrict_IDD_OFF_On(void)
{ int selMenu, id = 1;
selMenu = gDevicePara.Callastrict.IDD_out;
while (id) {
id = XSelectWindow((char**)cfgName_002, MAX_CFG_ITEM_002, selMenu);//,FALSE);
if (id < 0)
break;
selMenu = id;
switch(id)
{ case 0:
gDevicePara.Callastrict.IDD_out=0;
Para_Store(&gDevicePara);
XTipWndShow(TranslateChar(SETDISPLAYCHAR[3]),1);
id=0;
break;
case 1:
if(0>SetIDD_head())
id=1;
else
id=0;
break;
}
id=0;
}
}
#endif
#define MAX_CFG_ITEM_CallBarring 3
const static char *cfgName_CallBarring[] = {
"限制所有呼出",
"限拨国际长途",
"限制所有呼入",
//"取消所有限制",
};
//--------2
void Talk_Call_Barring(void)
{
int selMenu, id = 1;
selMenu = 0;
while (id) {
id = XSelectWindow((char**)cfgName_CallBarring, MAX_CFG_ITEM_CallBarring, selMenu);//,FALSE);
if (id < 0)
break;
selMenu = id;
switch (id) {
case 0:
Callastrict_out();
id = 1;
break;
case 1:
Callastrict_IDD_OFF_On();
//Callastrict_IDD();
id = 1;
break;
case 2:
Callastrict_in();
id = 1;
break;
//case 3:
//_Talk_Call_delAllBarring();
//id = 1;
//break;
default:
id = 0;
break;
}
}
}
#endif
#if 1
int SetAudioMessageNum(void)
{
rect area;
char str_temp[16];
strcpy(str_temp,gDevicePara.sysdata.AudioMessage);
SetRect(&area, 10, 12, 102, LCD_HEIGHT-14);
if (0 > InputLine(&area, TranslateChar("语音信箱"), (BYTE*)str_temp, 16-1, INPUT_DIGITAL | INPUT_FIXED))
return -1;
strcpy(gDevicePara.sysdata.AudioMessage,str_temp);
Para_Store(&gDevicePara);
XTipWndShow(TranslateChar(SETDISPLAYCHAR[1]),1);
return 0;
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -