You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
170 lines
4.4 KiB
170 lines
4.4 KiB
////////////////////////////////////////////////////////////////////////////
|
|
///@copyright Copyright (c) 2018, 传控科技 All rights reserved.
|
|
///-------------------------------------------------------------------------
|
|
/// @file bsp_drv.c
|
|
/// @brief bsp @ driver config
|
|
///-------------------------------------------------------------------------
|
|
/// @version 1.0
|
|
/// @author CC
|
|
/// @date 20180331
|
|
/// @note cc_AS_stc02
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "app_drv.h"
|
|
#include "../clib/clib.h"
|
|
#include "../app/app_common.h"
|
|
#include "../app/app_task_485.h"
|
|
#include "../app/app_task_gm35.h"
|
|
#include "../msp/uart3.h"
|
|
|
|
/// reg.H,reg.L data0 data1 data2;
|
|
/// (reg.HL)=data0 (reg.HL+1)=data1 (reg.HL+2)=data2 (reg.HL+3)=data3
|
|
/// 0x0f 0----14 15
|
|
#if 0
|
|
TS_drv_ ts_drv[TS_DRV_MAX]=
|
|
{
|
|
0x0e,NULL, /// FE 01 02 03 04
|
|
0x12,NULL, //uart0 reply
|
|
0x0d,NULL, //433 camera //fd 01 02 03 06
|
|
0x99,NULL, //a9 gprs
|
|
0x00,NULL,
|
|
};
|
|
|
|
void L3_task_a9_rcv_handle(TS_Handle_PH3 *p)
|
|
{
|
|
if (1 == p->ok)
|
|
{
|
|
TS_PH3_ccmodbus ccmodbus;
|
|
byte_copy_uc((U8*)&ccmodbus,(U8*)&p->ts_ccmodbus,p->ts_ccmodbus.num + 3);
|
|
p->ok = 0;
|
|
|
|
g_at_send_status.tcp_last_recv_stmp = s_nos_tick.t_1s;
|
|
L3_protocol_handler_uart0_fun(&ccmodbus,1);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
U8 array[D_s_SSTR_0D0A_len+1];
|
|
|
|
void L3_UARTcom4_exp_protocol(TS_Handle_0d0a *p)
|
|
{
|
|
if (1 == p->ok )
|
|
{
|
|
#if 0
|
|
//U8 array[D_s_SSTR_0D0A_len+1];
|
|
U8 num = p->buf[0];
|
|
byte_copy_uc(array,p->buf+1,num);
|
|
|
|
array[num] = 0;
|
|
L3_protocol_handler_uart4_fun(array);
|
|
p->ok = 0;
|
|
#else
|
|
g_at_send_status.gprs_last_recv_stmp = s_nos_tick.t_1s;
|
|
L3_protocol_handler_uart4_fun(p->buf+1);
|
|
p->ok = 0;
|
|
#endif
|
|
}
|
|
}
|
|
|
|
//FF FE 05 00 00 28 FC CC 从FF开始校验
|
|
int L3_checkCrc16(TS_PH3_ccmodbus *ccmodbus)
|
|
{
|
|
U8 crc[2];
|
|
crc16(crc,&ccmodbus->filter1,ccmodbus->num + 3 - 2);
|
|
if(crc[0] == ccmodbus->buf[ccmodbus->num-2-2] && crc[1] == ccmodbus->buf[ccmodbus->num-2-1])
|
|
{
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
//FF FE 05 00 00 28 FC CC 从FF开始校验
|
|
int L3_checkCrc16_4g(TS_PH3_ccmodbus *ccmodbus)
|
|
{
|
|
U8 crc[2];
|
|
crc16(crc,&ccmodbus->slaver,ccmodbus->num - 2);
|
|
if(crc[0] == ccmodbus->buf[ccmodbus->num-2-2] && crc[1] == ccmodbus->buf[ccmodbus->num-2-1])
|
|
{
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
#endif
|
|
|
|
void L3_UARTcom0_exp_protocol(TS_Handle_PH3 *p)
|
|
{
|
|
if (1 == p->ok)
|
|
{
|
|
L3_protocol_handler_uart0_fun(&p->ts_ccmodbus);
|
|
p->ok = 0;
|
|
}
|
|
}
|
|
|
|
|
|
void L3_UARTcom4_exp_protocol(TS_Handle_PH3 *p)
|
|
{
|
|
if (1 == p->ok ) //收到消息
|
|
{
|
|
if(p->ts_ccmodbus.slaver == G.p.wisdom_car_no )
|
|
{//平车作为slaver,服务器作为master发送的ccmodbus消息
|
|
U16 reg = (U16)p->ts_ccmodbus.buf[0] << 8 | p->ts_ccmodbus.buf[1];
|
|
if(p->ts_ccmodbus.oper == MODBUS_OPER_WRITE_M)
|
|
{
|
|
if(reg == 0x0012) //RFID的寄存器,先写死,后面再改
|
|
{
|
|
G.rfid[0] = p->ts_ccmodbus.buf[5];
|
|
G.rfid[1] = p->ts_ccmodbus.buf[6];
|
|
G.rfid[2] = p->ts_ccmodbus.buf[7];
|
|
G.rfid[3] = p->ts_ccmodbus.buf[8];
|
|
G.rfid[4] = p->ts_ccmodbus.buf[9];
|
|
G.rfid[5] = p->ts_ccmodbus.buf[10];
|
|
G.rfidval = (U32)G.rfid[2] << 24 | (U32)G.rfid[3]<<16 | (U32)G.rfid[4]<<8 | (U32)G.rfid[5];
|
|
G.rfidHospitalNo = (U16)G.rfid[0] << 8 | (U32)G.rfid[1]<<0;
|
|
}
|
|
//TODO 先不回复,之后再改
|
|
//L0_uart4_sendArray();
|
|
}
|
|
}
|
|
else if(p->ts_ccmodbus.slaver == SLAVER_TCP_SERVER_ID)
|
|
{//平车作为master,服务器作为slaver回复的ack消息
|
|
if(p->ts_ccmodbus.oper == MODBUS_OPER_AUTH)
|
|
{//0x90
|
|
G.authed = 1;
|
|
}
|
|
else
|
|
{//0x03,0x06,0x10
|
|
U16 reg = (U16)p->ts_ccmodbus.buf[0] << 8 | p->ts_ccmodbus.buf[1];
|
|
if(reg == 0x0003)
|
|
{//流程开始包
|
|
G.flowStarted = 1;
|
|
}
|
|
}
|
|
}
|
|
p->ok = 0;
|
|
}
|
|
}
|
|
|
|
void L3_UARTcom3_exp_protocol(TS_Handle_PH3 *p)
|
|
{
|
|
if (1 == p->ok)
|
|
{
|
|
L0_uart0_uc('r');
|
|
L0_uart0_uchex(p->ts_ccmodbus.buf[5]);
|
|
|
|
//G.rfid = G._rfid = p->ts_ccmodbus.buf[0];
|
|
G.rfid[0] = p->ts_ccmodbus.buf[0];
|
|
G.rfid[1] = p->ts_ccmodbus.buf[1];
|
|
G.rfid[2] = p->ts_ccmodbus.buf[2];
|
|
G.rfid[3] = p->ts_ccmodbus.buf[3];
|
|
G.rfid[4] = p->ts_ccmodbus.buf[4];
|
|
G.rfid[5] = p->ts_ccmodbus.buf[5];
|
|
G.rfidval = (U32)G.rfid[2] << 24 | (U32)G.rfid[3]<<16 | (U32)G.rfid[4]<<8 | (U32)G.rfid[5];
|
|
G.rfidHospitalNo = (U32)G.rfid[0] << 8 | (U32)G.rfid[1]<<0;
|
|
|
|
p->ok = 0;
|
|
}
|
|
}
|
|
|
|
|
|
|