📄 driverlogin.c
字号:
/****************************************************************
** *
** FILE : DriverLogin.c *
** *
** By : Cyb 2007.07.01 *
****************************************************************/
#include "includes.h"
#include "hardware.h"
#include "Structs.h"
#include "Public.h"
#include "TimeTask.h"
#include "GpsRecer.h"
#include "Public.h"
#include "uart_drv.h"
#include "tools.h"
#include "DriverLogPage.h"
#include "audio.h"
#define SINGLE_MAX 10
#define ERR_INDEX 0xff
static INT8U CurIndex;
static INT16U CurDriveNum;
static INT8U CheckLoginValue(INT8U* ptr,INT8U len)
{
INT8U i;
INT8U lenth;
for(i=0;i<MAX_DRIVER;i++)
{
if(VehicleDriver.DriverInfo[i].Valid != TRUE) continue;
lenth = DecodeTellen(VehicleDriver.DriverInfo[i].DriveAsciiNum, DRIVEASCIINUM);
if(len != lenth) continue;
if(CmpString(ptr,VehicleDriver.DriverInfo[i].DriveAsciiNum,lenth)==STR_EQUAL){
return i;
}
}
return ERR_INDEX;
}
void DriverLogingNow(INT8U* ptr,INT8U len)
{
INT8U index;
index = CheckLoginValue(ptr, len);
CurIndex = index;
if(CurIndex <MAX_DRIVER) CurDriveNum = VehicleDriver.DriverInfo[CurIndex].DriveNum;
else CurDriveNum = 0;
if(index == ERR_INDEX)
{
InformDriveLogerr();
}
else
{
PlayerNumbers(CurDriveNum);
InformDriverLogged();
}
}
BOOLEAN SetDriver(INT8U *DataPtr)
{
INT8U i;
INT8U tmplen;
INT8U setcount;
INT16U drivenum;
if(((*DataPtr++) & 0x01) == 0x01)
{
VehicleDriver.TotalNum = 0;
for(i=0;i<MAX_DRIVER;i++)
{
VehicleDriver.DriverInfo[i].Valid = FALSE;
}
}
setcount = *DataPtr++; // 设置个数
if(setcount > SINGLE_MAX) return FALSE;
while(setcount--)
{
i=*DataPtr++; //Get Set Num
VehicleDriver.DriverInfo[i].Valid = TRUE;
drivenum=*DataPtr++;
VehicleDriver.DriverInfo[i].DriveNum = *DataPtr++ | (drivenum<<8);
if(VehicleDriver.DriverInfo[i].DriveNum > 0xfffe) return FALSE;
tmplen = *DataPtr++;
memset(VehicleDriver.DriverInfo[i].DriveAsciiNum,0x20,DRIVEASCIINUM);
memcpy(VehicleDriver.DriverInfo[i].DriveAsciiNum,DataPtr,tmplen);
DataPtr += tmplen;
VehicleDriver.TotalNum ++;
}
StorePubPara(DRIVELOG_);
return TRUE;
}
INT16U GetDriveNum(void) //获取司机编号
{
if(VehicleDriver.TotalNum == 0) return 0;
if(CurIndex == ERR_INDEX) return 0;
return CurDriveNum;
}
INT8U GetDriverAsciiNumAndLen(INT8U *ptr, INT16U drivenum)
{
INT8U i;
if(0 == VehicleDriver.TotalNum) return 0;
for(i=0;i<MAX_DRIVER; i++){
if(VehicleDriver.DriverInfo[i].Valid != TRUE) continue;
if(VehicleDriver.DriverInfo[i].DriveNum != drivenum) continue;
return DecodeTel(ptr, VehicleDriver.DriverInfo[i].DriveAsciiNum, DRIVEASCIINUM);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -