/**
******************************************************************************
* @file communication.c
* @author TMC Scan Team
* @version V1.0.0
* @date 09/06/2019
* @brief
******************************************************************************
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
* TIME. AS A RESULT, TMC SHALL NOT BE HELD LIABLE FOR ANY
* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*
*
© COPYRIGHT 2016 TMC
******************************************************************************
**/
#ifndef __COMMUNICATION_H__
#define __COMMUNICATION_H__
#include "global.h"
/** @defgroup HIDPOS communication protocal
* @{
*/
#define HIDPOS_BUFLEN 64 //HIDPOS数据包长度
#define NOTAILLEN (HIDPOS_BUFLEN - 8) //自动上传扫码协议去除8个字节的长度
#define HIDPOS_RECEIVE_DATA_HEAD 0x04
#define HIDPOS_RECEIVE_DATA_TAIL_CONTINUE 0x01
#define HIDPOS_RECEIVE_DATA_TAIL_FINISH 0x00
#define HIDPOS_RECEIBE_DATA_MAX_LEN 60
#define HIDPOS_SEND_DATA_HEAD 0x02
#define HIDPOS_SEND_DATA_MAX_LEN 0x38
/**
* @}
*/
//hidpos 接收数据协议格式
typedef struct
{
uint8_t reportID;
uint8_t dataLen;
uint8_t dataBlock[60];
uint8_t reservedData;
uint8_t endPackage;
} HIDPOSReciveData;
/** @defgroup receive data
* @{
*/
#define MAX_SEND_DATA_LEN 2100
#define MAX_RECEIVE_DATA_LEN 512
#define MAX_RECEIVE_AVAILABLE_DATA_LEN 240
/**
* @}
*/
/** @defgroup receive data flag
* @{
*/
#define RECEIVE_FAIL 0x01
#define RECIEVE_OVERMAXLEN 0x02
#define HIDPOS_RECIEVE_REPORTID_ERROR 0x03
#define HIDPOS_RECIEVE_DATALEN_ERROR 0x04
#define HIDPOS_RECIEVE_PACKAGEEND_ERROR 0x05
#define HIDPOS_RECIEVE_CONTINUE 0x06
#define RECIEVE_FINISH 0x07
/**
* @}
*/
extern uint8_t gOutputBuf[MAX_SEND_DATA_LEN]; //发送数据BUF,局限性最大支持2070字节
extern uint8_t gReceiveDataFinish;
extern uint8_t gReceiveBuf[]; //USB接收数据BUF,局限性最大支持256字节
extern uint16_t gReceiveLen; //接收数据长度
//函数声明
void ClearOutputLen(void) ;
void SetOutputData(uint8_t *pSrcData, uint16_t uLen);
void ReportData(int barType);
uint8_t VSPRecieveData(void);
void HIDPOSDataSend(uint8_t *pSrc, uint16_t uLen);
uint8_t HIDPOSRecieveData(void);
void CommunicationCmdHandle(BarData *comdata);
uint8_t USBRespondCmd(uint8_t status, BarData *pCode);
uint8_t RecieveData(BarData *pRecievedata);
#endif /*__COMMUNICATION_H__*/