📄 set_safe.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 "para_def.h"
#include "paramanage.h"
#include "windows.h"
#include "translate.h"
#include "Message.h"
#include "debug_out.h"
#define COMPILE_OK 1
#define COMPILING 0
void Waiting(int);
#if COMPILE_OK
#define MAX_CFG_ITEM 3 // 5
const static char *cfgName[] = {
"关闭PIN码保护",//已经翻译
"开启PIN码保护",
"修改PIN码",
//"修改话机密码",
//"开启密码保护",
//"关闭密码保护",
};
typedef struct {
window_t wnd;
listbox_t lbox;
int sel;
} cfg_param_t;
cfg_param_t *gCfgParamWnd;
static int OnDrawMainItem(listbox_t *lb, rect *rc, int num)
{
if (num >= MAX_CFG_ITEM)
return -1;
MoveTo(rc->Xmin + 2, rc->Ymax);
if (num == 4) {
if (gDevicePara.dev.openGuard != 0)
num = 5;
}
DrawString((BYTE*)TranslateChar(cfgName[num]));
return 0;
}
static int cfgMainProc(XMSG *msg)
{
switch (msg->message) {
case MSG_KEYDOWN:
switch (msg->param1) {
case KEY_UP:
case KEY_DOWN:
XListBoxKeyHandle(&gCfgParamWnd->lbox, msg->param1);
v_WriteLcdBuff();
break;
//case KEY_MENU://yu add 1
case KEY_OK:
gCfgParamWnd->sel = XListBoxGetSelect(&gCfgParamWnd->lbox);
XPostQuitMessage(&gCfgParamWnd->wnd);
break;
case KEY_CANCEL:
gCfgParamWnd->sel = -1;
XPostQuitMessage(&gCfgParamWnd->wnd);
break;
}
break;
default:
XDefaultWindowProc(msg);
break;
}
return 0;
}
static int cfgMainWnd(int defsel)
{
rect area;
XMSG msg;
int ret;
gCfgParamWnd = (cfg_param_t*)malloc(sizeof(cfg_param_t));
if (NULL == gCfgParamWnd)
return -1;
SetRect(&area, 0, LCD_ICONEND+1, LCD_WIDTH-1, LCD_HEIGHT-1);
XCreateWindow(NULL, &gCfgParamWnd->wnd, &area, NULL, cfgMainProc, FALSE);
XCreateListBox(&gCfgParamWnd->wnd.comp, \
&gCfgParamWnd->lbox, &area, \
MAX_CFG_ITEM, HZ_MAIN, OnDrawMainItem);
XListBoxSetCurrent(&gCfgParamWnd->lbox, defsel);
XShowComponent(&gCfgParamWnd->wnd.comp);
v_WriteLcdBuff();
gCfgParamWnd->sel = -2;
while (XGetMessage(&msg) != -1)
XDispatchMessage(&msg);
XDestroyWindow(&gCfgParamWnd->wnd);
ret = gCfgParamWnd->sel;
free(gCfgParamWnd);
gCfgParamWnd = NULL;
return ret;
}
/*--------------------------------------*/
#endif
static void showCmdResult(int id)
{
if (id == 0)
XTipWndShow(TranslateChar("操作成功"),1);
else
XTipWndShow(TranslateChar("操作失败"),1);
}
static void configPinStatus(int id)
{
int ret;
rect area;
char pin[8];
memset(pin, 0, 8);
SetRect(&area, 10, LCD_ICONEND+2, LCD_WIDTH-10, LCD_HEIGHT-17);
ret = InputLine(&area, TranslateChar("输入PIN码"), (BYTE*)pin, 4, INPUT_DIGITAL | INPUT_FIXED | INPUT_PWD);
if (ret < 0)
return;
ret = AT_SetPinStatus(pin, id);
showCmdResult(ret);
}
static void changePinCode(void)
{
int ret;
rect area;
char oldpin[8], newpin[8],newpin2[8];
memset(oldpin, 0, 8);
memset(newpin, 0, 8);
memset(newpin2, 0, 8);
SetRect(&area, 10, LCD_ICONEND+2, LCD_WIDTH-10, LCD_HEIGHT-17);
ret = InputLine(&area, TranslateChar("旧的PIN码"), (BYTE*)oldpin, 4, INPUT_DIGITAL | INPUT_FIXED | INPUT_PWD);
if (ret < 0)
return;
ret = InputLine(&area, TranslateChar("新的PIN码"), (BYTE*)newpin, 4, INPUT_DIGITAL | INPUT_FIXED | INPUT_PWD);
if (ret < 0)
return;
ret = InputLine(&area, TranslateChar("再次输入"), (BYTE*)newpin2, 4, INPUT_DIGITAL | INPUT_FIXED | INPUT_PWD);
if (ret < 0)
return;
if(0 != strcmp(newpin,newpin2))
{
XTipWndShow(TranslateChar("密码不一致"),1);
return ;
}
ret = AT_ChangePwd(oldpin, newpin);
showCmdResult(ret);
}
int checkPassword(void)
{
int ret;
rect area;
char oldpwd[8];
memset(oldpwd, 0, 8);
// debug_out_str(DM_RUNINFO, "\ngDevicePara.dev.devicePwd=");
// debug_out_str(DM_RUNINFO, gDevicePara.dev.devicePwd);
SetRect(&area, 10, LCD_ICONEND+2, LCD_WIDTH-10, LCD_HEIGHT-17);
ret = InputLine(&area, TranslateChar("请输入密码"), (BYTE*)oldpwd, 6, INPUT_DIGITAL | INPUT_FIXED | INPUT_PWD);
if (ret < 0)
return -1;
// debug_out_str(DM_RUNINFO, "\noldpwd=");
// debug_out_str(DM_RUNINFO, oldpwd);
if (strcmp(oldpwd, gDevicePara.dev.devicePwd) != 0) {
XTipWndShow(TranslateChar("密码错误"),1);
return -1;
}
return 0;
}
int setNewPassword(char *pwd)
{
int ret;
rect area;
char newpwd[8], cfmpwd[8];
memset(newpwd, 0, 8);
memset(cfmpwd, 0, 8);
SetRect(&area, 10, LCD_ICONEND+2, LCD_WIDTH-10, LCD_HEIGHT-17);
redo:
ret = InputLine(&area, TranslateChar("输入新密码"), (BYTE*)newpwd, 6, INPUT_DIGITAL | INPUT_FIXED | INPUT_PWD);
if (ret < 0)
return -1;
if (*newpwd == 0)
goto redo;
ret = InputLine(&area, TranslateChar("再次输入"), (BYTE*)cfmpwd, 6, INPUT_DIGITAL | INPUT_FIXED | INPUT_PWD);
if (ret < 0)
return -1;
if (strcmp(newpwd, cfmpwd) != 0) {
XTipWndShow(TranslateChar("密码不一致"),1);
return -1;
}
strcpy(pwd, newpwd);
return 0;
}
int Safe_Config(void *argv)
{
int selMenu,id = 1;
selMenu=0;
while (id) {
id = cfgMainWnd(selMenu);
if (id < 0)
break;
selMenu = id;
if(id<3)
{
if((1==gDevicePara.factoryData.Sim_LOCK)||(1==gDevicePara.factoryData.Auto_PIN))
id=100;
}
switch (id) {
//------------
case 0:
case 1:
configPinStatus(id);
// v_WriteLcdBuff();
id=1;
break;
case 2:
changePinCode();
// v_WriteLcdBuff();
id=1;
break;
//------------
/* case 3:
changeDevPwd();
id=1;
break;
case 4:
passwordActive();
id=1;
break;
*/
case 100:
XTipWndShow(TranslateChar("禁止操作"),1);
id=1;
break;
default:
id = 0;
break;
}
id = 1;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -