TMC32_QJB/App/configuration.h

252 lines
9.3 KiB
C
Raw Normal View History

2026-04-30 08:23:12 +00:00
/**
******************************************************************************
* @file configuration.h
* @author TMC Scan Team
* @version V1.0.0
* @date 09/07/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.
*
* <h2><center>&copy; COPYRIGHT 2016 TMC</center></h2>
******************************************************************************
**/
#ifndef __CONFIGURATION_H__
#define __CONFIGURATION_H__
#include "global.h"
/** @defgroup configuration address
* @{
*/
#define FLASHPAGESIZE 512
#define A_CFGBUF_ADDR 0x00040000 //<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>A<EFBFBD>ĵ<EFBFBD>ַ
#define B_CFGBUF_ADDR 0x00040200 //<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>B<EFBFBD>ĵ<EFBFBD>ַ
/**
* @}
*/
/** @defgroup encode type
* @{
*/
#define GBK 0
#define UNICODE 1
#define UTF8 2
#define AUTO 0xFF
/**
* @}
*/
/** @defgroup endcode type
* @{
*/
#define END_DOCE_NO 0x00
#define END_DOCE_CRLF 0x01
#define END_DOCE_CR 0x02
#define END_DOCE_TAB 0x03
#define END_DOCE_LF 0x04
/**
* @}
*/
/** @defgroup status
* @{
*/
#define ON 0x01
#define OFF 0x00
/**
* @}
*/
/** @defgroup comunitation type
* @{
*/
#define UART 0
#define USBDEVTYPE_HIDKBD 1
#define USBDEVTYPE_VSP 2
#define USBDEVTYPE_HIDPOS 3
#define USB 4
/**
* @}
*/
/** @defgroup scan mode type
* @{
*/
#define AUTOMODE 0x00 //<2F><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>
#define CMDMODE 0x01 //<2F><><EFBFBD><EFBFBD>ģʽ
#define SENSORMODE 0x02 //<2F><>Ӧģʽ
#define SINGLEMODE 0x03 //<2F><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8>һ<EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8>
#define CMDTIMEMODE 0x04 //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ģʽ
/**
* @}
*/
#define VOICE_PAY 0x01
#define VOICE_NO_PAY 0x02
#define VOICE_FINISH_DINGDONG 0x00
#define VOICE_FINISH_PRINT 0x01
#define VOICE_SCAN_SUCCESS 0x02
typedef enum
{
CRYPTO_NONE = 0,
SM2_CRYPTO = 1,
SM3_CRYPTO = 2,
SM4_CRYPTO = 3,
DES3 = 4,
RSA_1024 = 5,
RSA_2048 = 6,
} CRYPTO_TYPE;
#define PLIANTEX_OUTPUT 0
#define CRYPTO_OUTPUT 1
#define KEY_NUM_DEFAULT 9
#define KEY_NUM_MAX 20
#define KEY_ID_DEFAULT 0
#define AL_NUM_MAX 6
//code len
#define CODE_DEFAULT_MIN_LEN 0x00
#define CODE_DEFAULT_MAX_LEN 0xFF
#define CFG_EXIST_FLAG 0xF889
#define BUZZER_DUTY_50 50
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD>
typedef struct
{
uint16_t CRCData; //CRCУ<43><D0A3>
uint16_t CfgExsitFlag; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڵı<DAB5><C4B1><EFBFBD>
uint8_t SN; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE>
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
uint8_t bSettingCodeFlag; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
/*ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
uint8_t comunitationType; //0:uart 1:HIDKBD 2:VSP 3:HIDPOS
Uart_BaudRate_Value uartBaudRate; //֧<><D6A7>9600,14400,38400,56000,57600,115200,128000,256000<30><30>
uint8_t voiceScanFinish; //0:<3A><><EFBFBD>ˣ<EFBFBD>1:ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD>ʼ<EFBFBD><CABC>ӡ
uint8_t HIDPollRate;
uint8_t HIDKBValToRelInterval; //<2F>޸<EFBFBD><DEB8><EFBFBD><E8B1B8>Ч<EFBFBD><D0A7><EFBFBD>ĵ<EFBFBD><C4B5>ͷű<CDB7><C5B1><EFBFBD>֮<EFBFBD><D6AE><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
uint8_t HIDKBRelToValInterval; //<2F>޸<EFBFBD><DEB8><EFBFBD>ͷű<CDB7><C5B1>ĵ<EFBFBD><C4B5><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
uint8_t buzzerStatus; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD>
uint16_t buzzerFrequency; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
uint8_t buzzerTime; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
uint8_t buzzerDuty; //<2F>޸ķ<DEB8><C4B7><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>ձ<EFBFBD>
uint8_t voiceStatus; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD>
uint8_t voiceVolume; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><C4AC>10(0~255))
uint8_t ledStatus; //LED<45><44><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD>
uint8_t ledFlash; //LED<45><44>˸<EFBFBD><CBB8><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD>
uint8_t OpenvoiceChangeFlag; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD>"<22><>ӭʹ<D3AD><CAB9>"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD> 0<><30>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD>ӭʹ<D3AD><CAB9>
/*App<70><70><EFBFBD><EFBFBD>*/
/*ɨ<><C9A8>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
uint8_t scanCodeMode; //ɨ<><C9A8>ģʽ 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2<><32><EFBFBD><EFBFBD>Ӧ 4<><34><EFBFBD><EFBFBD><EFBFBD>ʱ
uint16_t cmdModeTime; //<2F><><EFBFBD>ʱʱ<CAB1><CAB1>
uint16_t sameCodeInterval; //ͬ<><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint16_t differentCodeInterval; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
uint8_t EAN13_ID; //EAN13<31><33>code ID
uint8_t EAN13; //ʶ<><CAB6>EAN13<31><33> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t EAN13_2; //ʶ<><CAB6>EAN13-2<><32> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t EAN13_5; //ʶ<><CAB6>EAN13-5<><35> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t EAN8_ID; //EAN8<4E><38>code ID
uint8_t EAN8; //ʶ<><CAB6>EAN8<4E><38> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t EAN8_2; //ʶ<><CAB6>EAN8<4E><38> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t EAN8_5; //ʶ<><CAB6>EAN8<4E><38> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t UPC_A_ID; //UPCA<43><41>code ID
uint8_t UPCA; //ʶ<><CAB6>UPCA<43><41> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t UPCA_2; //ʶ<><CAB6>UPCA<43><41> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t UPCA_5; //ʶ<><CAB6>UPCA<43><41> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t UPCE0_ID; //UPCE0<45><30>code ID
uint8_t UPCE0; //ʶ<><CAB6>UPCE0<45><30> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t UPCE1_ID; //UPCE1<45><31>code ID
uint8_t UPCE1; //ʶ<><CAB6>UPCE1<45><31> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t UPCE1_2; //ʶ<><CAB6>UPCE1<45><31> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t UPCE1_5; //ʶ<><CAB6>UPCE1<45><31> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Code128_ID; //Code128<32><38>code ID
uint8_t Code128; //ʶ<><CAB6>Code128<32><38> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Code128MinLen; //Code128 <20><>Ϣ<EFBFBD><CFA2><EFBFBD>̳<EFBFBD><CCB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Code128MaxLen; //Code128 <20><>Ϣ<EFBFBD><EFBFBD><EEB3A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Code39_ID; //Code39<33><39>code ID
uint8_t Code39; //ʶ<><CAB6>Code39<33><39> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Code39_32; //ʶ<><CAB6>Code39_32<33><32> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Code39_32_Full_ASCII; //ʶ<><CAB6>Code39_FULL_ASCII<49><49> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Code39MinLen; //Code39 <20><>Ϣ<EFBFBD><CFA2><EFBFBD>̳<EFBFBD><CCB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Code39MaxLen; //Code39 <20><>Ϣ<EFBFBD><EFBFBD><EEB3A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Code93_ID; //Code93<39><33>code ID
uint8_t Code93; //ʶ<><CAB6>Code93<39><33> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Code93MinLen; //Code93 <20><>Ϣ<EFBFBD><CFA2><EFBFBD>̳<EFBFBD><CCB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Code93MaxLen; //Code93 <20><>Ϣ<EFBFBD><EFBFBD><EEB3A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t CodeBar_ID; //Codebar<61><72>code ID
uint8_t CodeBar; //ʶ<><CAB6>CodeBar<61><72> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t CodeBarMinLen; //Codebar <20><>Ϣ<EFBFBD><CFA2><EFBFBD>̳<EFBFBD><CCB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t CodeBarMaxLen; //Codebar <20><>Ϣ<EFBFBD><EFBFBD><EEB3A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t QR_ID; //QR<51><52>code ID
uint8_t QR; //ʶ<><CAB6>QR<51><52> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Interleaved25_ID; //Code39<33><39>code ID
uint8_t Interleaved25; //ʶ<><CAB6>Interleaved25<32><35> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Interleaved25MinLen; //Interleaved25 <20><>Ϣ<EFBFBD><CFA2><EFBFBD>̳<EFBFBD><CCB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Interleaved25MaxLen; //Interleaved25 <20><>Ϣ<EFBFBD><EFBFBD><EEB3A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Industrail25_ID; //Industrail25 <20><>codeID
uint8_t Industrial_25; //Industral25<32>Ŀ<EFBFBD><C4BF>أ<EFBFBD> 0<><30>ֹ<EFBFBD><D6B9>1<EFBFBD><31><EFBFBD><EFBFBD>
uint8_t Industrial_25MinLen; //Industrial_25 <20><>Ϣ<EFBFBD><CFA2><EFBFBD>̳<EFBFBD><CCB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Industrial_25MaxLen; //Industrial_25 <20><>Ϣ<EFBFBD><EFBFBD><EEB3A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Matrix25_ID; //Matrix25<32><35>CodeID
uint8_t Matrix25; //Matrix25<32><35><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><C6BF>أ<EFBFBD> 0<><30>ֹ 1<><31><EFBFBD><EFBFBD>
uint8_t Matrix25MinLen; //Matrix25 <20><>Ϣ<EFBFBD><CFA2><EFBFBD>̳<EFBFBD><CCB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t Matrix25MaxLen; //Matrix25 <20><>Ϣ<EFBFBD><EFBFBD><EEB3A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t IATA25_ID; //IATA25<32><35>CodeID
uint8_t IATA25; //IATA25<32><35><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD> 0<><30>ֹ 1<><31><EFBFBD><EFBFBD>
uint8_t IATA25MinLen; //IATA25 <20><>Ϣ<EFBFBD><CFA2><EFBFBD>̳<EFBFBD><CCB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t IATA25MaxLen; //IATA25 <20><>Ϣ<EFBFBD><EFBFBD><EEB3A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t PDF417; //ʶ<><CAB6>PDF417<31><37> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t DM; //ʶ<><CAB6>DM<44><4D> 0<><30><EFBFBD><EFBFBD>ֹ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*<2A><><EFBFBD>ݱ༭*/
uint8_t inputCodeType; //֧<>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>0<EFBFBD><30>GBK 2<><32>UTF8 FF:<3A>Զ<EFBFBD>ʶ<EFBFBD><CAB6>
uint8_t outputCodeType; //֧<>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>0<EFBFBD><30>GBK 1<><31>UNICODE 2<><32>UTF8
uint8_t billModeStatus; //<2F>Ƿ<EFBFBD>֧<EFBFBD>ַ<EFBFBD>Ʊģʽ 0<><30><EFBFBD><EFBFBD>֧<EFBFBD><D6A7> 1<><31>֧<EFBFBD><D6A7>
uint8_t endCode; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD>лس<D0BB> 2<><32><EFBFBD>س<EFBFBD> 3<><33>TAB<41><42>
uint8_t prefixLen; //ǰ׺<C7B0><D7BA><EFBFBD><EFBFBD>
uint8_t suffixLen; //<2F><>׺<EFBFBD><D7BA><EFBFBD><EFBFBD>
uint8_t prefix[16]; //ǰ׺<C7B0><D7BA><EFBFBD><EFBFBD>
uint8_t suffix[16]; //<2F><>׺<EFBFBD><D7BA><EFBFBD><EFBFBD>
uint8_t uartOutputProtocal; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>Э<EFBFBD>飬1<E9A3AC><31>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t ECIMode; //ECIģʽ<C4A3>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>
uint16_t sensitivity; //<2F><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint16_t stableTime; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
uint8_t statusKeyVoice; //press key voice on/off
uint8_t voiceGain; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t statusKey; //keyboard on/off
uint8_t payCodeEnable;
uint8_t heartbeatInterval;
uint8_t hash[6]; //on use
} CfgSetting;
extern CfgSetting *gCurrentSysCfg;
extern __align(8) CfgSetting gConfgBuf;
extern CfgSetting const DefaultCfg;
void SystemCfgInit(void);
void AppCfgInit(void);
uint8_t RestoreCfg(void);
uint8_t UpdateCfg(void);
uint16_t CRCGenerate(uint8_t *pData, uint16_t dLen);
#endif /*__CONFIGURATION_H__*/