📄 dispatch.h
字号:
/******************************************************************************
This head file is used to define sth about DISPATCH proc.
*******************************************************************************
***/
#ifndef _DISPATCH_H
#define _DISPATCH_H
//struct tm {
// int tm_sec; /* 秒 – 取值区间为[0,59] */
// int tm_min; /* 分 - 取值区间为[0,59] */
// int tm_hour; /* 时 - 取值区间为[0,23] */
// int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */
// int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */
// int tm_year; /* 年份,其值等于实际年份减去1900 */
// int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
// int tm_yday; /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
// int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
// };
#include "inc.h"
#include <sys/socket.h> /* for socket(), connect(), sendto(), and recvfrom() */
#include <sys/ioctl.h>
#include <net/if.h>
#include <net/if_arp.h>
#include <arpa/inet.h> /* for sockaddr_in and inet_addr() */
#define BASE_DATA_ONE(x) (0xFF & x) //
#define BASE_DATA_TWO(x) ((0xFF00 & x)>>8) //
#define BASE_DATA_THREE(x) ((0xFF0000 & x)>>16) //
#define BASE_DATA_FOUR(x) ((0xFF000000 & x)>>24) //
#define BACK_DATA_ONE(x) (x & 0xFF) //
#define BACK_DATA_TWO(x) ((x & 0xFF) <<8) //
#define BACK_DATA_THREE(x) ((x & 0xFF) <<16) //
#define BACK_DATA_FOUR(x) ((x & 0xFF) <<24) //
#define DISPATCH_READ_TIMEOUT -2
#define DISPATCH_READ_UNERROR -1 //DISPATCH red unknown error
#define DISPATCH_READ_SUCCESS 0
#define MAX_GPS_PACKAGE 10 //GPS信息包的最小长度
#define HEAD_GPS_PACKAGE 0x7E //GPS信息包的开始和结束标识
#define ECHOMAX 512 /* Longest string to echo */
#define RECORDMAX 10000 //本地存储的最长的记录数
#define GPS_RECORD_LEN 26
#define APC_RECORD_LEN 36
#define CR_RECORD_LEN 20
typedef struct
{
char BeginEnd; //报文的标识符号
char ByteLength; //设备编号得长度
char SerialNum[12]; //设备编号ID //
char AppType; //应用类型
char OperationNo; //操作编码
unsigned short SerialNo; //报文序号
char DataType; //报文的标识位
unsigned short DataLength; //数据区数据长度
char DataIP[15]; //注册IP
unsigned short DataPort; //注册端口
char ContentType; //消息类型
char DataContent[ECHOMAX]; //消息内容
unsigned short CheckFlag; //校验位
} Package_Info; //报文的标识部分
typedef struct
{
char infotype[1];
char infoid[5];
char shorttime[6];
char content[ECHOMAX];
} GPS_Txt_Info; //写入文本文件的GPS信息格式
typedef struct
{
char infotype[3];
char content[32];
} GPS_Menu_Info; //写入文本文件的GPS信息格式
char *Dispatch_DataIP; //本地IP地址
char *GPSID_Send; //SIM卡号
Package_Info CurDispatch_SendInfo[ECHOMAX]; //发送数据列表
static unsigned short staticSendSeriNO; //报文序号
Dispatch_Info *CurDispatch_Info; //the real info of local
KeyB_Info *CurKeyB_Info; //the point to the share mem
GPS_Info *CurGPS_Info;
unsigned int Offset_UnSendGPS; //the offset record in GPS file where begin send
unsigned int Offset_SendGPS; //the offset record in GPS file where begin save
unsigned int Offset_UnSendAPC; //the offset record in Passenger file where begin send
unsigned int Offset_SendAPC; //the offset record int Passenger file where begin save
unsigned int Offset_UnSendCR; //the offset record in carstate file where begin send
unsigned int Offset_SendCR; //the offset record in carstate file where begin save
unsigned int GPS_FileSize; //the filesize of the GPS File record
unsigned int APC_FileSize; //the filesize of the APC File record
unsigned int CR_FileSize;
int GPS_fd,APC_fd,CR_fd; //the file description of the GPS file,APC file,Carstate Record file
unsigned short SpeedPoint; //速度限定
unsigned short Waitresp; //是否在等应答
int WaitTime_S; //静止时的GPS数据发送周期
int WaitTime_M; //移动时的GPS数据发送周期
//busDispatch.c
int Select_Read(int fd,int WaitTime,struct sockaddr_in echoClntAddr);
//sockIP.c
int PPP_Status( void );
//execFile.c
int DISPATCH_Exec(const char *pathname);
//txtFile.c
int DISPATCH_TxtFile(const char *pathname,GPS_Txt_Info *GPSTxtInfo,int intLine,char *WriteType,unsigned short MsgID);
int DISPATCH_TxtFileR(const char *pathname,char *ContenMent);
int DISPATCH_MenuFile(const char *pathname,GPS_Menu_Info *GPS_MenuInfo,int intLine,char *WriteType);
//packageDeal.c
void ConvertData(char *dataByte,char *rDataByte,int charLen);
void CInt16ToBytes(unsigned short bytedata,char *rbytesData);
void CInt32ToBytes(unsigned int bytedata,char *rbytesData);
unsigned short BytesToUshort(char *bytesdata,int index);
unsigned int BytesToUInt(char *bytesdata,int index);
void NumtoStr(const unsigned long Num,char *target,int intLength);
int NumtoStrL(const unsigned long Num,char *target);
int CheckData(char *ReadByteData,int dataLen);
unsigned short GetCheckData(char *bytedatas,int dataLen);
int RegesterInfo(int sockFD,Package_Info commInter,struct sockaddr_in echoServAddr);
int SocketSendInfo(int sockFD, Package_Info commInter,struct sockaddr_in echoServAddr);
int RepeatSendInfo(int sockFD, Package_Info commInter,struct sockaddr_in echoServAddr);
void Deal_SendInfo(Package_Info SendInfo,int SendType);
void OnRecievedData(char *respString,int respStringLen,struct sockaddr_in echoClntAddr,int fd);
void ProcessCmdList(byte *bReceiveBuffer,struct sockaddr_in echoClntAddr,int bReceiveLength,int fd);
int SendMessageCreate(Package_Info commInter,char *RecvDataAll);
int EnESC(char *bytes,char *respString,int StringLen);
int DeESC(char *bytes,char *respString,int StringLen);
void GPSFileInit(void);
void APCFileInit(void);
void CRFileInit(void);
void SaveGpsInfo(char *data);
int GetFileGpsInfo(char *data);
int GetFileSize(char *FName);
char *GetGpsHisData(time_t start,time_t end,int *num);
char *GetAPCHisData(time_t start,time_t end,int *num);
char *GetCRHisData(time_t start,time_t end,int *num);
void GpsSendOK();
void APCSendOK();
void CRSendOK();
#endif /* _DISPATCH_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -