📄 share.cpp
字号:
/*--------------------------------------------------------------* * Name: share.cpp * * Desc: This program include all functions that share with all * * hardware infterface route. * *--------------------------------------------------------------*/#include "stdafx.h"#include "share.h"extern TIME_REC s_rCurTime;extern FILE *DebugFp;extern int DebugLine;extern FILE *ErrorFp;extern int ErrorLine;/*-------------------------------------------------------------* * Nmae : getSysTime * * Desc : get system clock , second & ms to var 'rTime' * *-------------------------------------------------------------*/void getSysTime(TIME_REC *rTime){ struct timeb rTm; ftime(&rTm); rTime->sec = rTm.time; rTime->ms = rTm.millitm;}/*-------------------------------------------------------------* * Name: diffMsTime * * Desc: return the value(MS) of (rTime1-rTime) * *-------------------------------------------------------------*/long diffMsTime(TIME_REC *rTime1,TIME_REC *rTime2){ return ( ((rTime1->sec - rTime2->sec)*1000) + (rTime1->ms - rTime2->ms ) ) ;}int getIntFromStr( char *str, int i){ char sTmpStr[20]; if( i >= 20 ) return -1; memcpy(sTmpStr, str, i); sTmpStr[i] = '\0'; return (atoi(sTmpStr));} void writeLog(FILE *fp, int *nLines, char *s, char sName[], int nMode){ int nNameNo = 32; char sOldName[128]; char sNewName[128]; char *p; if( fp == NULL) return; fprintf(fp, "%s",s); if( nMode ) fprintf(fp, "\n"); (*nLines) +=1 ; fflush(fp); if( (*nLines) >= MaxLogLines) { while ( nNameNo ) { strcpy(sOldName, sName); strcpy(sNewName, sName); p = strchr(sNewName, '.'); sprintf(sNewName+(p-sNewName-1), "%02d.log", nNameNo--); p = strchr(sOldName, '.'); sprintf(sOldName+(p-sOldName-1), "%02d.log", nNameNo); unlink(sNewName); rename(sOldName, sNewName); } fclose(fp); unlink(sOldName); rename(sName, sOldName); fp = fopen(sName,"w"); (*nLines) = 0; } return;}void creatLogLine(char sBuf[],char sPrompt[],long nSec,long nMs,char sCom[]){ char *p; strcpy(sBuf, ctime(&nSec )); if ( ( p=strchr ( sBuf , '\n')) != NULL ) *p = '\0'; else p = sBuf+strlen(sBuf); sprintf(p, ":%04ld " , nMs ); strcat(p, sPrompt); strcat(p, sCom);}FILE *openLogFile( char sName[], char *flag){ if ( isFullPathDir(sName) != 0 ) return (FILE *)NULL; return fopen(sName, flag);}/*--------------------------------------------------------------* * Name: isFullPathDir(char *) * * Desc: input a string such as "/vox/1/2/3/4/5.vox". In this * * function, first creat /vox if this dir no exist, then * * creat /1 if it unexist ...... * *--------------------------------------------------------------*/ int isFullPathDir ( char sName[]){ char *p; char *q; char tmpName[256]; while ( 1 ) { strcpy(tmpName, sName ); if ( tmpName[0] == '\\') q = &tmpName[1]; else q = &tmpName[0]; p = (char *)strchr(q,'\\'); if ( p!=NULL ) { *p = '\0'; if ( isDirectroy ( tmpName ) != 0 ) return -1; } else return 0; }}/*--------------------------------------------------------------* * Name: isDirectroy( char *) * * Desc: check The "sDir" if exist. if not exist, creat this * * directory; else if exist, but isn't a directory, then * * delete it and creat a directory * *--------------------------------------------------------------*/ int isDirectroy ( char *sDir ){ struct stat rStat; if ( stat(sDir, &rStat ) != 0 ) { /* * the directory no exist, creat itu */ if(mkdir(sDir) != 0 ) return -1; return 0; } if ( !( rStat.st_mode & _S_IFDIR) ) { /* * the directory had exist, but is file,now delete it, * and then creat a diretory */ if ( unlink(sDir) !=0 ) return -1; if(mkdir(sDir) != 0 ) return -1; return 0; } return 0;}#define ToChar(c) (c)>=10?((c)-10+'a'):((c)+'0')int CreateBinLog( char *CurCom, char *strPrompts, int CurLen, char *DesCom ){ int i=0, nLen=0; char *p, *q; if( CurLen == 0 ) return -1; if(strPrompts) { memcpy(DesCom, strPrompts, strlen(strPrompts)); q = (char *)DesCom+strlen(strPrompts); } else q = (char *)DesCom; p = (char *)CurCom; while( i++ < CurLen ) {/* if( *p > 0x20 && *p <= 'z') { *(q++) = *(p++); nLen++; } else*/ { *(q++) = '['; *(q++) = ToChar((char(*p)>>4)&0x0f); *(q++) = ToChar((*p)&0x0f); p++; *(q++) = ']'; nLen += 4; } } *q = 0x00; return nLen;}/*--------------------------------------------------------------* * Name:creatALogLine * * Desc:creat a log line to [sBuf]. nLen is the buf size of * * [sBuf]. first, add system time to [sBuf], then add * * sPrompt. at last, add sItem. if there is a control char * * in sItem, should add '['+0x??+']' * * Retn: None * *--------------------------------------------------------------*/char * creatALogLine(char *sPrompt,char *sInItem, int nInLen, int nIsSmpp){ static char sBuf[MaxCommBuff+100], sTmpStr[5]; time_t nCurTime; char * psCurrTime, *psInItem; int nAddLen = 0, i; i=0; /* add time strings to sBuf */ sBuf[0]= '\0'; time( &nCurTime ); psCurrTime = ctime( &nCurTime ); sprintf( sBuf,"%.11s> ", psCurrTime+8); /* add item string to sBuf */ psInItem = sInItem; nAddLen = strlen(sBuf); if(nIsSmpp ==1 && nInLen < 12 ) { strcat(sBuf, "Is Smpp procotol but nLen < 12\n"); return sBuf; } else if(nIsSmpp == 1) { for(i = 0; i< 12; i++) { sprintf(sBuf+nAddLen, "[%02x]", (unsigned char) *psInItem); psInItem ++, nAddLen += 4; } nInLen -= 12; } if(nInLen > 0) strcpy(sTmpStr, " ##"); else sTmpStr[0]='\0'; nAddLen = strlen(sBuf); while ( nInLen -- >0 ) { if ( *psInItem >= 32 && *psInItem <= 127 && nAddLen < MaxCommBuff) { sBuf[nAddLen++] = * psInItem; psInItem ++; } else if(nAddLen +4 < MaxCommBuff) { sprintf( sBuf+nAddLen, "[%02x]", (unsigned char) *psInItem ); psInItem ++; nAddLen += 4; } else break; } /* Note: if the tail char isn't '\n', should add a '\n' */ sprintf(sBuf + nAddLen, "%s%.90s\n", sTmpStr, sPrompt); return sBuf;}int bDataJudge[129]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 1,-1,-1, 1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1, 1, 1, 1, 1,-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,-1,-1,-1,-1,-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,-1,-1,-1,-1,-1,-1};int checkNokiaUserData(char * sInItem, int nInLen, char * sOutItem, int *pnOutLen){ char sCheckBuff[MaxCommBuff]; char * pcInItem, *pcOutItem; int nLen ; if( sInItem == NULL || nInLen ==0) { return -1; } pcInItem = sInItem; pcOutItem = sCheckBuff; memset(sCheckBuff, '\0', sizeof(sCheckBuff) ); nLen = 0; while( *pcInItem && nInLen-->0) { if( *pcInItem < 0 || *pcInItem > 126) { pcInItem ++; continue; } if( bDataJudge[*pcInItem] == -1) { pcInItem ++; continue; } else { *pcOutItem++ = *pcInItem++; nLen ++; if(nLen > MaxCommBuff) break; } } if(nLen <=0) { return -2; } if(sOutItem == NULL) { memset(sInItem, '\0', nLen-1); memcpy(sInItem, sCheckBuff, nLen ); *pnOutLen = nLen ; return 0; } memcpy(sOutItem, sCheckBuff, nLen ); *pnOutLen = nLen; return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -