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

📄 set_a_sys.c

📁 本程序是使用CDMA450模块开发的一个无线公话完整程序
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 "debug_out.h"
#include "selectwnd.h"
#include "Message.h"
#include "translate.h"
extern int Waiting(int a);

#define  COMPILE_OK  0
#define  COMPILING	 1

#if COMPILING
#define D112SET
#define BASEAREASET
#define ENRECIEVESET

//#define  MAX_CFG_ITEM    3
enum Sys_set_t
{
//	S_area_set_id,
	S_D112_set_id,
	S_checkArea_set_id,
	S_baseArea_set_id,
	S_baseNum_set_id,

	S_en_Recieve_set_id,
	S_en_MoneyCnt_set_id,
	
	MAX_CFG_ITEM
};


const static char *cfgName[] = {
//		"区号设置",
		"紧急呼叫号码",//最多十个(4位)//112
		"限制区域功能",//(默认禁止)
		"基站区号",//最多3个
		"基站编号",//最多30个

		"允许接听电话",//默认允许
		"计费设置",
	
};

//====================
	//strcpy (&gDevicePara.sysdata.D112[0][0],"112");
	//gDevicePara.sysdata.D112[10][5];//紧急呼叫号码10个
	//默认112

	//gDevicePara.sysdata.checkArea;//默认禁止
	//gDevicePara.sysdata.baseArea[3][8];//基站区号3个
	//gDevicePara.sysdata.baseNum[30][8];//基站编码30个
	//gDevicePara.sysdata.en_RecieveCAll = TRUE;//默认允许

#if 1
typedef struct {
	window_t	wnd;
	listbox_t	lbox;
	char		*item[20+10];
	int			num;
	int			sel;
} sel_window_tt;
static sel_window_tt	*sgSelectWnd;

#define MAX_Dis_En_able 2
const static char *YNcfgName[] = {
		"禁用",
		"启用",//TRUE
		
	
};

static int sOnDrawMainItem(listbox_t *lb, rect *rc, int num)
{char drstr[10];
	if (num >= sgSelectWnd->num)
		return -1;

	memset(drstr, 0, 10);
	MoveTo(rc->Xmin + 1, rc->Ymax);
	sprintf(drstr, "%d.", (num+1));
	DrawString((BYTE*)drstr);
	
	MoveTo(rc->Xmin + 1+(strlen(drstr))*6, rc->Ymax);
//	MoveTo(rc->Xmin + 1, rc->Ymax);
	DrawString((BYTE*)sgSelectWnd->item[num]);
	return 0;
}

static int sselMainProc(XMSG *msg)
{
	switch (msg->message) {
	case MSG_KEYDOWN:
		switch (msg->param1) {
		case KEY_UP:
		case KEY_DOWN:
			XListBoxKeyHandle(&sgSelectWnd->lbox, msg->param1);
			break;
		//case KEY_MENU://yu add 1
		case KEY_OK:
			sgSelectWnd->sel = XListBoxGetSelect(&sgSelectWnd->lbox);
			XPostQuitMessage(&sgSelectWnd->wnd);
			break;
		case KEY_CANCEL:
			sgSelectWnd->sel = -1;
			XPostQuitMessage(&sgSelectWnd->wnd);
			break;
		}
		break;
		default:
			XDefaultWindowProc(msg);
			break;
	}
	return 0;
}

//yu int XSelectWindow(const char *item[], int num, int defsel)
static int sXSelectWindow( char *item[], int num, int defsel,int saveBack)
{
	rect		area;
	XMSG		msg;
	int			ret;
	
	sgSelectWnd = (sel_window_tt*)malloc(sizeof(sel_window_tt));
	if (NULL == sgSelectWnd)
		return -1;

	memcpy(sgSelectWnd->item, item, num*sizeof(char*));
	sgSelectWnd->num = num;
	SetRect(&area, 0, LCD_ICONEND+1, LCD_WIDTH-1, LCD_HEIGHT-1);
//yu test 	XCreateWindow(NULL, &gSelectWnd->wnd, &area, NULL, selMainProc, FALSE);
	XCreateWindow(NULL, &sgSelectWnd->wnd, &area, NULL, sselMainProc, saveBack);
	
	XCreateListBox(&sgSelectWnd->wnd.comp, \
					&sgSelectWnd->lbox, &area, \
					num, HZ_MAIN, sOnDrawMainItem);
	sgSelectWnd->sel = XListBoxSetCurrent(&sgSelectWnd->lbox, defsel);
	
	XShowComponent(&sgSelectWnd->wnd.comp);
	
	v_WriteLcdBuff();
	
	sgSelectWnd->sel = -2;
	while (XGetMessage(&msg) != -1)
		XDispatchMessage(&msg);
	
	XDestroyWindow(&sgSelectWnd->wnd);
	
	ret = sgSelectWnd->sel;
	
	free(sgSelectWnd);
	sgSelectWnd = NULL;
	return ret;
}



#endif


#ifdef D112SET
static void setD112Number(int id)
{
	int		ret;
	rect	area;
	char	number[16];
	
	memset(number, 0, 16);
	strncpy(number, gDevicePara.sysdata.D112[id], 5);
		SetRect(&area, 10, 12, 102, LCD_HEIGHT-14);//yuSetRect(&area, 10, LCD_ICONEND+2, LCD_WIDTH-10, LCD_HEIGHT-17);
	ret = InputLine(&area, TranslateChar("输入号码"), (BYTE*)number, 4, INPUT_DIGITAL | INPUT_FIXED  );
	if (ret < 0)
		return;

	strncpy(gDevicePara.sysdata.D112[id], number, 5);
	Para_Store(&gDevicePara);
	XTipWndShow(TranslateChar("设置成功"),1);
	
}
#define MAX_D112 10
static void v_D112_set_id(void)
{
//rect area;
char *Numberbf[MAX_D112]; 
int kk;
int		selMenu, id = 1;

	selMenu = 0;
	while (id) {
		//id = cfgMainWnd(selMenu);// yu 显示所有菜单
		for (kk=0;kk<MAX_D112;kk++)
			{
			Numberbf[kk]=&gDevicePara.sysdata.D112[kk][0];
			}
		
//		id = XSelectWindow(&gDevicePara.sysdata.D112, 10, selMenu,TRUE);
		id = sXSelectWindow((char**)Numberbf,MAX_D112, selMenu,TRUE);
		if (id < 0)
			break;
		selMenu = id;
		if((id>=0)&&(id<MAX_D112))
			{
			setD112Number(id);
			id = 1;
			}
		else
			id = 0;
		}
}

#if 1
extern setDialNumber(char * number);
int Select112Number(void)
{
//rect area;
char *Numberbf[MAX_D112]; 
int kk;
int		selMenu, id = 1;
int ret=0;

	selMenu = 0;
	while (id) {
		//id = cfgMainWnd(selMenu);// yu 显示所有菜单
		for (kk=0;kk<MAX_D112;kk++)
			{
			Numberbf[kk]=&gDevicePara.sysdata.D112[kk][0];
			}
		
//		id = XSelectWindow(&gDevicePara.sysdata.D112, 10, selMenu,TRUE);
		id = sXSelectWindow((char**)Numberbf,MAX_D112, selMenu,TRUE);
		if (id < 0)
			break;
		selMenu = id;
		if((id>=0)&&(id<MAX_D112))
			{
			setDialNumber(gDevicePara.sysdata.D112[id]);
			ret=1;
			id=0;
			}
		else
			{
			ret=0;
			id = 0;
			}
		}
	return ret;
}
#endif
#endif


#ifdef BASEAREASET
static void v_checkArea_set_id(void)
{
int		selMenu, id = 1;

	selMenu = gDevicePara.sysdata.checkArea;
	while (id) {
		id = XSelectWindow((char**)YNcfgName, MAX_Dis_En_able, selMenu);//,TRUE)
		if (id < 0)
			break;
		selMenu = id;
		if((id>=0)&&(id<MAX_Dis_En_able))
			{
			gDevicePara.sysdata.checkArea=id;
			Para_Store(&gDevicePara);

			XTipWndShow(TranslateChar("设置成功"),1);
			
			id = 0;
			}
		else
			id = 0;
		}
}
#if 1
static void setDBaseID(int id)
{
	int		ret;
	rect	area;
	char	number[16];
	
	memset(number, 0, 16);
	strncpy(number, gDevicePara.sysdata.baseArea[id],8);
		SetRect(&area, 10, 12, 102, LCD_HEIGHT-14);//yuSetRect(&area, 10, LCD_ICONEND+2, LCD_WIDTH-10, LCD_HEIGHT-17);
	ret = InputLine(&area, TranslateChar("输入号码"), (BYTE*)number, 4, INPUT_DIGITAL | INPUT_FIXED  );
	if (ret < 0)
		return;

	strncpy(gDevicePara.sysdata.baseArea[id], number, 8);
	Para_Store(&gDevicePara);
	XTipWndShow(TranslateChar("设置成功"),1);
	
}

#define MAXBASE_AREA_ID 3
static void v_baseArea_set_id(void)
{
//rect area;
char *Numberbf[MAXBASE_AREA_ID]; 
int kk;
int		selMenu, id = 1;

	selMenu = 0;
	while (id) {
		//id = cfgMainWnd(selMenu);// yu 显示所有菜单
		for (kk=0;kk<MAXBASE_AREA_ID;kk++)
			Numberbf[kk]=&gDevicePara.sysdata.baseArea[kk][0];
		
//		id = XSelectWindow(&gDevicePara.sysdata.D112, 10, selMenu,TRUE);
		id = sXSelectWindow((char**)Numberbf, MAXBASE_AREA_ID, selMenu,TRUE);
		if (id < 0)
			break;
		selMenu = id;
		if((id>=0)&&(id<MAXBASE_AREA_ID))
			{
			setDBaseID(id);
			id = 1;
			}
		else
			id = 0;
		}
}
#endif
#if 1
void static setDBaseNUmID(int id )
{
	int		ret;
	rect	area;
	char	number[16];
	
	memset(number, 0, 16);
	strncpy(number, gDevicePara.sysdata.baseNum[id],8);
		SetRect(&area, 10, 12, 102, LCD_HEIGHT-14);//yuSetRect(&area, 10, LCD_ICONEND+2, LCD_WIDTH-10, LCD_HEIGHT-17);
	ret = InputLine(&area, TranslateChar("输入号码"), (BYTE*)number, 4, INPUT_DIGITAL | INPUT_FIXED  );
	if (ret < 0)
		return;

	strncpy(gDevicePara.sysdata.baseNum[id], number, 8);
	Para_Store(&gDevicePara);
	XTipWndShow(TranslateChar("设置成功"),1);
}
#define MAXBASE_Num_ID 30
static void v_baseNum_set_id(void)
{
//rect area;
char *Numberbf[MAXBASE_Num_ID]; 
int kk;
int		selMenu, id = 1;

	selMenu = 0;
	while (id) {
		//id = cfgMainWnd(selMenu);// yu 显示所有菜单
		for (kk=0;kk<MAXBASE_Num_ID;kk++)
			Numberbf[kk]=&gDevicePara.sysdata.baseNum[kk][0];
		
//		id = XSelectWindow(&gDevicePara.sysdata.D112, 10, selMenu,TRUE);
		id = sXSelectWindow((char**)Numberbf, MAXBASE_Num_ID, selMenu,TRUE);
		if (id < 0)
			break;
		selMenu = id;
		if((id>=0)&&(id<MAXBASE_Num_ID))
			{
			setDBaseNUmID(id);
			id = 1;
			}
		else
			id = 0;
		}
}
#endif
#endif

#ifdef ENRECIEVESET

static void v_en_Recieve_set_id(void)
{
int		selMenu, id = 1;

	selMenu = gDevicePara.sysdata.en_RecieveCAll;
	while (id) {
		id = XSelectWindow((char**)YNcfgName, MAX_Dis_En_able, selMenu);//,TRUE)
		if (id < 0)
			break;
		selMenu = id;
		if((id>=0)&&(id<MAX_Dis_En_able))
			{
			gDevicePara.sysdata.en_RecieveCAll=id;
			Para_Store(&gDevicePara);

			XTipWndShow(TranslateChar("设置成功"),1);
			id = 0;
			}
		else
			id = 0;
		}
}

#endif
#if 1
static void v_en_MoneyCnt_set_id(void)
{
int		selMenu, id = 1;

	selMenu = gDevicePara.sysdata.en_MoneyCnt;
	while (id) {
		id = XSelectWindow((char**)YNcfgName, MAX_Dis_En_able, selMenu);//,TRUE)
		if (id < 0)
			break;
		selMenu = id;
		if((id>=0)&&(id<MAX_Dis_En_able))
			{
			gDevicePara.sysdata.en_MoneyCnt=id;
			Para_Store(&gDevicePara);

			XTipWndShow(TranslateChar("设置成功"),1);
			id = 0;
			}
		else
			id = 0;
		}
}
#endif

void manage_set(void)
{

int		selMenu, id = 1;

selMenu = 0;
while (id) {
	//id = cfgMainWnd(selMenu);// yu 显示所有菜单
	id = XSelectWindow((char**)cfgName, MAX_CFG_ITEM, selMenu);//,TRUE
	if (id < 0)
		break;
	selMenu = id;
	switch (id) {
		case S_D112_set_id:
			v_D112_set_id();
		id = 1;
		break;
		case S_checkArea_set_id:
			v_checkArea_set_id();
		id = 1;
		break;
		case S_baseArea_set_id:
			v_baseArea_set_id();
		id = 1;
		break;
		case S_baseNum_set_id:
			v_baseNum_set_id();
		id = 1;
		break;


		case S_en_Recieve_set_id:
			v_en_Recieve_set_id();
		id = 1;
		break;
	
		case S_en_MoneyCnt_set_id:
			 v_en_MoneyCnt_set_id();
		id = 1;
		break;

		
	default:
		id = 0;
		break;
	}
}
}
#endif 

#define FACTORY_SET 1
#ifdef  FACTORY_SET 
	//gDevicePara.factoryData.Serve_ID [8];
	//gDevicePara.factoryData.Sim_LOCK;//默认禁止
	//gDevicePara.factoryData.Auto_PIN=TRUE;//默认启用
	//gDevicePara.factoryData.Language;
	//gDevicePara.factoryData.Logo[LOGOMAX];
const static char *f_cfgName[] = {
		"指定运营商",
		"SIMLOCK",
		"AUTOPIN",
		"语言设置",
		"运营商LOGO",
		"开机LOGO",
};
enum Fac_set_t
{
	F_SERVE_ID,
	F_SIMLOCK,
	F_AUTOPIN,
	F_LANGUAGE,
	F_LOGO,
	F_BMPLOGO,
	
	MAX_CFG_ITEM_F
};


static void fv_SERVE_ID()
{
rect area;
char Numberbf[24]; 
		strcpy(Numberbf,gDevicePara.factoryData.Serve_ID);
		debug_print_str(DM_RUNINFO, (info_buffer, "输入运营商ID: %s", Numberbf));
		
		//读取记录
		SetRect(&area, 10, 12, 102, LCD_HEIGHT-14);
		if (0 > InputLine(&area, TranslateChar("输入运营商ID"),(BYTE*)Numberbf, 6, INPUT_DIGITAL | INPUT_FIXED))
		{return;
		}
		
		//-----------
		strncpy(gDevicePara.factoryData.Serve_ID,Numberbf,6);

⌨️ 快捷键说明

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