📄 3gtestrun.c
字号:
} else return(SUCCEED); } if (VIATEL == modDec) { if (SendAndRev("ATI\r", buffer) == ERROR) { return(ERROR); } if (strstr(buffer, "VIATELECOM") == NULL) { printf("3G module detect failed!\n"); // return error return(ERROR); } return(SUCCEED); }
if (SendAndRev(commandStr, buffer) == ERROR)
{
return(ERROR);
}
if (strstr(buffer, "OK") == NULL)
{
printf("3G module detect failed!\n"); // return error
return(ERROR);
}
return(SUCCEED);
}
/*****************************************
Function: TestSimCard
Description: test sim card
Parameter: No
Return:
SUCCEED: test succeed
ERROR: test failed
Remark:
******************************************/
int TestSimCard(int modDec)
{
unsigned char buffer[BUFFER_LEN]; // buffer for read
unsigned char commandStr[]="AT+CPIN?\r";
if( DATANG == modDec) { printf("AT+CREG=1\n"); if (DtSendAndRev("AT+CREG=1\r", buffer) == ERROR)
{
return(ERROR);
} usleep(DELAY_MS_TIME); printf("AT+CFUN=1\n"); if (DtSendAndRev("AT+CFUN=1\r", buffer) == ERROR)
{
return(ERROR);
} if (strstr(buffer, "OK") == NULL) { return(ERROR); } if (DtSendAndRev(commandStr, buffer) == ERROR)
{
return(ERROR);
} if (strstr(buffer, "OK") != NULL && strstr(buffer, "READY") != NULL) {
printf("SIM card test OK!\n"); // return error
return(SUCCEED);
} if (strstr(buffer, "ERROR: 10") != NULL) {
printf("SIM card not inserted!\n"); // return error
return(SIM_NOT_IN);
} return(ERROR); }
if (SendAndRev(commandStr, buffer) == ERROR)
{
return(ERROR);
}
if (OPTION == modDec) {
if ((strstr(buffer, "ERROR") != NULL) && (strstr(buffer, "SIM not inserted") != NULL))
{
printf("SIM card not inserted!\n"); // return error
return(SIM_NOT_IN);
}
} else if (WEWINS == modDec) { if (strstr(buffer, "ERROR: 10") != NULL) { printf("SIM card not inserted!\n"); // return error
return(SIM_NOT_IN); } } if ((strstr(buffer, "OK") != NULL) && (strstr(buffer, "SIM PIN") != NULL))
{
printf("SIM card has PIN!\n"); // return error
return(SIM_PUK);
}
if ( (strstr(buffer, "OK") != NULL) && ((strstr(buffer, "READY") != NULL) || (strstr(buffer, "Ready") != NULL)) )
{
printf("SIM card test OK!\n"); // return error
return(SUCCEED);
}
return(ERROR);
}
int FetchServiceName(unsigned char *rev, unsigned char *SevName)
{
unsigned char *pchar = NULL;
int i = 0;
pchar = strstr(rev, "\"");
if (pchar == NULL) { printf("register hasn't finished\n"); return ERROR; } pchar++;
while( (*pchar != '\0')&&(*pchar != '\"') )
{
SevName[i++] = *pchar++;
}
SevName[i] = '\0'; return SUCCEED;
}
/*****************************************
Function: TestRegister
Description: test network register
Parameter: No
Return:
SUCCEED: test succeed
ERROR: test failed
REG_FAIL: test failed
Remark:
******************************************/
int TestRegister(int modDec, unsigned char *rev)
{
unsigned char buffer[BUFFER_LEN]; // buffer for read
unsigned char commandStr[]="AT+COPS?\r";
if (VIATEL == modDec) { if (SendAndRev("AT+CREG?", buffer) == ERROR) return(ERROR); if (buffer == NULL) return(ERROR); else { char *subStr; if ((subStr = strstr(buffer, "+CREG: ")) == NULL) return(ERROR); else { if ( *(subStr+9) == '1' || *(subStr+9) == '5') { strcpy(rev, "REG SUCCEED"); return(SUCCEED); } else return(REG_FAIL); } } } if (DATANG == modDec) { if (DtSendAndRev(commandStr, buffer) == ERROR)
{
return(ERROR);
} if (strstr(buffer, "OK") != NULL) {
return FetchServiceName(buffer, rev);
} if (strstr(buffer, "ERROR: 10") != NULL) {
printf("SIM card not insert or has PIN!\n");
return(REG_FAIL);
} return(ERROR); }
if (SendAndRev(commandStr, buffer) == ERROR)
{
return(ERROR);
}
if (OPTION == modDec) {
if (strstr(buffer, "OK") != NULL)
{
if (strstr(buffer, "Limited Service") != NULL)
{
printf("SIM card not insert or has PIN!\n");
return(REG_FAIL);
}
else
{
return FetchServiceName(buffer, rev);
}
} } else if (WEWINS == modDec) { if (strstr(buffer, "OK") != NULL) { return FetchServiceName(buffer, rev); } else { printf("SIM card reg failed!\n");
return(REG_FAIL); } }
return(ERROR);
}
/*****************************************
Function: DetectDevice
Description: auto detect 3G device
Parameter: No
Return:
SUCCEED: succeed
ERROR: failed
Remark:
******************************************/int DetectDevice(){ int i, ret; char otherDevice[100]; char rev[100]; if (DtOpenCom(port_call) == SUCCEED) { // 3G module detect
ret = ModuleDetect(DATANG); ShowResult(1, ret, "DTMobile");
if (SUCCEED != ret) { return ERROR; }
return DATANG;
} if (OpenCom(OP_DEVICE_NAME) == SUCCEED) { // 3G module detect
ret = ModuleDetect(OPTION);
ShowResult(1, ret, "Option N.V.");
if (SUCCEED != ret) return ERROR; return OPTION; } if (OpenCom(VI_DEVICE_NAME) == SUCCEED) { // 3G module detect ret = ModuleDetect(VIATEL); ShowResult(1, ret, "Via Telecom"); if (SUCCEED != ret) return ERROR; return VIATEL; } for(i = 0; ;i++) { close(gComFp); //close device file sprintf(otherDevice, "/dev/ttyACM%d", i); if (OpenCom(otherDevice) != SUCCEED) { return NOT_FOUND; } else { if (ReadCom(rev, 100) != SUCCEED) // read from device
{ // 3G module detect
ret = ModuleDetect(WEWINS);
ShowResult(1, ret, "WEWINS");
if (SUCCEED != ret) return ERROR;
return WEWINS;
} } }}
/*****************************************
Function: ThreeGTest
Description: 3G device test
Parameter: No
Return:
SUCCEED: test succeed
ERROR: test failed
Remark:
******************************************/
void *Test3G(void *data)
{
int ret; // for return int devDec;
unsigned char buffer[BUFFER_LEN]; // buffer for service name
devDec = DetectDevice();
if (devDec == OPTION || devDec == WEWINS || devDec == DATANG || devDec == VIATEL) // open 3G device
{
// test sim card
ret = TestSimCard(devDec);
ShowResult(2, ret, NULL);
if (SUCCEED != ret) goto END;
// test network register
ret = TestRegister(devDec, buffer);
ShowResult(3, ret, buffer);
}
else // open failed
{
ret = ERROR;
ShowResult(1, ret, NULL);
}
END: dtmux_port_close(port_call); //dtmux_exit();
close(gComFp); //close device file
data = (void *)&ret;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -