📄 setgprs.c
字号:
/****************************************************************
** *
** FILE : SetGPRS.C *
** COPYRIGHT : (c) 2001 .Xiamen Yaxon NetWork CO.LTD *
** *
** *
** By : CCH 2002.1.15 *
****************************************************************/
#include "includes.h"
#include "version.h"
#include "public.h"
#include "tools.h"
#include "editor.h"
#include "prompt.h"
#include "itemmenu.h"
#include "gprsdrv.h"
#include "setgprs.h"
typedef unsigned long ip_addr;
char * parse_ipad(ip_addr *, unsigned *, char *);
#if EN_HANDSET > 0
/*
********************************************************************************
* DEFINE CoNFIG PARAMETERS
********************************************************************************
*/
#define SIZE_RECVBUF 30
/*
********************************************************************************
* DEFINE MODULE VARIANTS
********************************************************************************
*/
static INT8U RecvBuf[SIZE_RECVBUF];
static EDITOR_STRUCT EditorEntry;
static void ACK_SetPort(void)
{
INT8U len;
len = GetEditorData(RecvBuf);
ExitEditor();
if (len > 0) {
ActivateStringPrompt("设置成功!");
memcpy(GprsIP.ippara[0].tcp_port, RecvBuf, len);
GprsIP.ippara[0].tcp_port[len] = '\0';
StorePubPara(GPRSIP_);
}
}
static void SetPort(void)
{
memset(&EditorEntry, 0, sizeof(EditorEntry));
EditorEntry.Mode = EDT_DIGITAL | EDT_CURSOR;
EditorEntry.MinLen = 0;
EditorEntry.MaxLen = sizeof(GprsIP.ippara[0].tcp_port) - 1;
EditorEntry.LabelPtr = "端口号: ";
EditorEntry.AckProc = ACK_SetPort;
if (PubParaValid(GPRSIP_)) {
EditorEntry.InitLen = strlen(GprsIP.ippara[0].tcp_port);
EditorEntry.InitPtr = (INT8U *)GprsIP.ippara[0].tcp_port;
}
CreateEditor(&EditorEntry);
}
static BOOLEAN CheckIPValid(INT8U len)
{
unsigned snbits;
ip_addr ipaddr;
if (parse_ipad(&ipaddr, &snbits, (char *)RecvBuf) != 0) return FALSE;
if (SearchDigitalString(RecvBuf, len, '.', 1) == 0xffff) return FALSE;
if (SearchDigitalString(RecvBuf, len, '.', 2) == 0xffff) return FALSE;
if (SearchDigitalString(RecvBuf, len, '.', 3) == 0xffff) return FALSE;
if (SearchDigitalString(RecvBuf, len, '\0', 1) == 0xffff) return FALSE;
return TRUE;
}
static void ACK_SetIP(void)
{
INT8U len;
len = GetEditorData(RecvBuf);
if (len > 0) {
RecvBuf[len++] = '\0';
if (!CheckIPValid(len)) {
ActivateStringPrompt("IP地址有误!");
} else {
ExitEditor();
ActivateStringPrompt("设置成功!");
memcpy(GprsIP.ippara[0].tcp_ip, RecvBuf, len);
StorePubPara(GPRSIP_);
}
} else {
ExitEditor();
}
}
static BOOLEAN FilterProc(INT8U *ch)
{
if (*ch < '0' || *ch > '9') {
*ch = '.';
return TRUE;
} else {
return FALSE;
}
}
static void SetIP(void)
{
memset(&EditorEntry, 0, sizeof(EditorEntry));
EditorEntry.Mode = EDT_CURSOR | EDT_DIGITAL | EDT_PULS;
EditorEntry.MinLen = 0;
EditorEntry.MaxLen = sizeof(GprsIP.ippara[0].tcp_ip) - 1;
EditorEntry.LabelPtr = "IP地址: ";
EditorEntry.AckProc = ACK_SetIP;
EditorEntry.FilterProc = FilterProc;
if (PubParaValid(GPRSIP_)) {
EditorEntry.InitLen = strlen(GprsIP.ippara[0].tcp_ip);
EditorEntry.InitPtr = (INT8U *)GprsIP.ippara[0].tcp_ip;
}
CreateEditor(&EditorEntry);
}
static void ACK_SetAPN(void)
{
INT8U len;
len = GetEditorData(RecvBuf);
ExitEditor();
if (len > 0) {
ActivateStringPrompt("设置成功!");
memcpy(GprsIP.ippara[0].apn, RecvBuf, len);
GprsIP.ippara[0].apn[len] = '\0';
StorePubPara(GPRSIP_);
}
}
static void SetAPN(void)
{
memset(&EditorEntry, 0, sizeof(EditorEntry));
EditorEntry.Mode = EDT_CURSOR;
EditorEntry.MinLen = 0;
EditorEntry.MaxLen = sizeof(GprsIP.ippara[0].apn) - 1;
EditorEntry.LabelPtr = "APN: ";
EditorEntry.AckProc = ACK_SetAPN;
if (PubParaValid(GPRSIP_)) {
EditorEntry.InitLen = strlen(GprsIP.ippara[0].apn);
EditorEntry.InitPtr = (INT8U *)GprsIP.ippara[0].apn;
}
CreateEditor(&EditorEntry);
}
static void ACK_SetTel(void)
{
INT8U len;
len = GetEditorData(RecvBuf);
ExitEditor();
if (len > 0) {
ActivateStringPrompt("设置成功!");
MyTel.len = len;
memcpy(MyTel.tel, RecvBuf, len);
StorePubPara(MYTEL_);
}
}
static void SetTel(void)
{
memset(&EditorEntry, 0, sizeof(EditorEntry));
EditorEntry.Mode = EDT_DIGITAL | EDT_CURSOR;
EditorEntry.MinLen = 0;
EditorEntry.MaxLen = sizeof(MyTel.tel);
EditorEntry.LabelPtr = "本机号码: ";
EditorEntry.AckProc = ACK_SetTel;
if (PubParaValid(MYTEL_)) {
EditorEntry.InitLen = MyTel.len;
EditorEntry.InitPtr = MyTel.tel;
}
CreateEditor(&EditorEntry);
}
static void Activate(void)
{
BOOLEAN success;
success = TRUE;
if (!PubParaValid(GPRSIP_) || !PubParaValid(MYTEL_)) {
success = FALSE;
} else {
if (MyTel.len == 0) success = FALSE;
if (strlen(GprsIP.ippara[0].apn) == 0) success = FALSE;
if (strlen(GprsIP.ippara[0].tcp_ip) == 0) success = FALSE;
if (strlen(GprsIP.ippara[0].tcp_port) == 0) success = FALSE;
}
if (success) {
ActivateStringPrompt("激活成功!");
GprsIP.ippara[0].isvalid = TRUE;
VirStorePubPara(GPRSIP_);
OnlineMode.gprsonline = 0x01;
VirStorePubPara(ONLINEMODE_);
StoreAllPubPara();
DeactivateGPRS();
ActivateGPRS(CHA_TCP);
} else {
ActivateStringPrompt("参数不全\n激活失败!");
}
}
static ITEMMENU_STRUCT MENU_PORT = {ITEM_FCN, "端口号", SetPort, 0, 0};
static ITEMMENU_STRUCT MENU_IP = {ITEM_FCN, "IP地址", SetIP, 0, 0};
static ITEMMENU_STRUCT MENU_APN = {ITEM_FCN, "APN", SetAPN, 0, 0};
static ITEMMENU_STRUCT MENU_TEL = {ITEM_FCN, "本机号码", SetTel, 0, 0};
static ITEMMENU_STRUCT MENU_ACTIVATE = {ITEM_FCN, "激活GPRS", Activate, 0, 0};
static ITEMMENU_STRUCT *MENU_SET_CHILD[] = {&MENU_TEL, &MENU_APN, &MENU_IP, &MENU_PORT, &MENU_ACTIVATE};
static ITEMMENU_STRUCT MENU_SET = {ITEM_LMENU, 0, 0, 5, MENU_SET_CHILD};
static void ACK_InputPassword(void)
{
INT8U len;
len = GetEditorData(RecvBuf);
ExitEditor();
if (len > 0) {
if (ACmpString(TRUE, RecvBuf, (INT8U *)StrPassword, len, strlen(StrPassword)) == STR_EQUAL) {
ActivateItemMenu(&MENU_SET);
} else {
ActivateStringPrompt("对不起\n密码有误");
}
}
}
static void InputPassword(void)
{
memset(&EditorEntry, 0, sizeof(EditorEntry));
EditorEntry.Mode = EDT_PASSWORD | EDT_DIGITAL;
EditorEntry.MinLen = 0;
EditorEntry.MaxLen = strlen(StrPassword);
EditorEntry.LabelPtr = "请输密码: ";
EditorEntry.AckProc = ACK_InputPassword;
CreateEditor(&EditorEntry);
}
ITEMMENU_STRUCT MENU_SETGPRS = {ITEM_FCN, " 设置\n GPRS参数", InputPassword, 0, 0};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -