188 lines
5.1 KiB
C
188 lines
5.1 KiB
C
|
|
|
|||
|
|
#ifndef __COMM_H__
|
|||
|
|
#define __COMM_H__
|
|||
|
|
|
|||
|
|
#include "config.h"
|
|||
|
|
//------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// ͨѶ<CDA8><D1B6><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
//------------------------------------
|
|||
|
|
/*
|
|||
|
|
һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><EFBFBD><EFBFBD>ʽ
|
|||
|
|
|
|||
|
|
1. <EFBFBD>̶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><EFBFBD><EFBFBD>ʽ
|
|||
|
|
|
|||
|
|
|-------------------------------------------------------------------|-----------|
|
|||
|
|
| <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | У<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |
|
|||
|
|
|-------------------------------------------------------------------|-----------|
|
|||
|
|
| B0 B1 B2 B3 | B4 B5 | B6 B7 B8 B9 B10 B11 B12 B13 | B14 B15 |
|
|||
|
|
|-------------------------------------------------------------------|-----------|
|
|||
|
|
| <EFBFBD>̶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>岻ͬ | B4--B13<EFBFBD><EFBFBD> |
|
|||
|
|
| | <EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>ID | <EFBFBD><EFBFBD><EFBFBD>嶨<EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ˵<EFBFBD><EFBFBD> | |
|
|||
|
|
| 'F','L','P','S' | | | 16λCRC |
|
|||
|
|
|-------------------------------------------------------------------|-----------|
|
|||
|
|
|
|||
|
|
2. <EFBFBD>ɱ䳤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><EFBFBD><EFBFBD>ʽ
|
|||
|
|
|
|||
|
|
|---------------------------------------------------------------------------|-----------|----------------
|
|||
|
|
| <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | У<EFBFBD><EFBFBD><EFBFBD><EFBFBD> | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |
|
|||
|
|
|---------------------------------------------------------------------------|-----------|---------------|
|
|||
|
|
| B0 B1 B2 B3 | B4 B5 | B6 B7 | B8 B9 | B10 B11 B12 B13 | B14 B15 | B16--Bn |
|
|||
|
|
|---------------------------------------------------------------------------|-----------|---------------|
|
|||
|
|
| <EFBFBD>̶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | | <EFBFBD><EFBFBD><EFBFBD><EFBFBD> | <EFBFBD><EFBFBD><EFBFBD><EFBFBD> | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> | B4--B13<EFBFBD><EFBFBD> | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |
|
|||
|
|
| | <EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>ID | <EFBFBD><EFBFBD><EFBFBD><EFBFBD> | <EFBFBD><EFBFBD><EFBFBD><EFBFBD> | <EFBFBD><EFBFBD><EFBFBD>岻ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | | |
|
|||
|
|
| 'V','L','P','S' | | <EFBFBD><EFBFBD><EFBFBD><EFBFBD> | У<EFBFBD><EFBFBD><EFBFBD><EFBFBD> | <EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ˵<EFBFBD><EFBFBD> | 16λCRC | |
|
|||
|
|
|---------------------------------------------------------------------------|-----------|---------------|
|
|||
|
|
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>ȡֵ<EFBFBD><EFBFBD>ΧΪ 0--1024
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
//------------------------------------
|
|||
|
|
|
|||
|
|
#define DP_SYNC_LEN 4 // <20><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD>
|
|||
|
|
#define DP_CONT_LEN 10 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
|
#define DP_CRC_LEN 2 // У<><D0A3><EFBFBD>ֳ<EFBFBD><D6B3><EFBFBD>
|
|||
|
|
#define MAX_EXDP_LEN 1024 // <20><><EFBFBD><EFBFBD><F3B8BDBC><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
|
|
|||
|
|
#define LEN_NORMAL_PACKET (DP_SYNC_LEN+DP_CONT_LEN+DP_CRC_LEN)
|
|||
|
|
|
|||
|
|
#define MAX_INDP_PARA 8
|
|||
|
|
|
|||
|
|
#ifdef _IN_COMM_C
|
|||
|
|
|
|||
|
|
const u8 FLDP_SYNC[DP_SYNC_LEN] =
|
|||
|
|
{
|
|||
|
|
'F','S','F','D',
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const u8 VLDP_SYNC[DP_SYNC_LEN] =
|
|||
|
|
{
|
|||
|
|
'V','S','F','D',
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
#else
|
|||
|
|
|
|||
|
|
extern const u8 FLDP_SYNC[DP_SYNC_LEN];
|
|||
|
|
extern const u8 VLDP_SYNC[DP_SYNC_LEN];
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
//-----------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
typedef union
|
|||
|
|
{
|
|||
|
|
u8 datbuff[LEN_NORMAL_PACKET+MAX_EXDP_LEN]; // dat buff <20><>ʽ
|
|||
|
|
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u8 normal[LEN_NORMAL_PACKET];
|
|||
|
|
u8 exData[MAX_EXDP_LEN];
|
|||
|
|
} __attribute__ ((packed)) buff; // buff<66><66>ʽ
|
|||
|
|
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u8 sync[DP_SYNC_LEN];
|
|||
|
|
u8 content[DP_CONT_LEN];
|
|||
|
|
u16 crc;
|
|||
|
|
} __attribute__ ((packed)) normal; // ͨ<>÷<EFBFBD>ʽ
|
|||
|
|
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u8 sync[DP_SYNC_LEN];
|
|||
|
|
u16 cmd;
|
|||
|
|
u8 para[8];
|
|||
|
|
u16 crc;
|
|||
|
|
} __attribute__ ((packed)) fldp; // fldp<64><70>ʽ
|
|||
|
|
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u8 sync[DP_SYNC_LEN];
|
|||
|
|
u16 cmd;
|
|||
|
|
u16 exlen;
|
|||
|
|
u16 excrc;
|
|||
|
|
u8 para[4];
|
|||
|
|
u16 crc;
|
|||
|
|
u8 exData[MAX_EXDP_LEN];
|
|||
|
|
} __attribute__ ((packed)) vldp; // vldp<64><70>ʽ
|
|||
|
|
|
|||
|
|
} DataPacket;
|
|||
|
|
|
|||
|
|
//-----------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
int (*SendCommData)(u8 *, int);
|
|||
|
|
int (*GetCommData)(u8 *, int);
|
|||
|
|
int (*GetRsvLen)(void);
|
|||
|
|
int (*GetTrsFreeLen)(void);
|
|||
|
|
void (*Delay)(u32);
|
|||
|
|
} DataExFuns;
|
|||
|
|
|
|||
|
|
|
|||
|
|
//-----------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int ReadBuffEmpty(DataExFuns * funs);
|
|||
|
|
|
|||
|
|
|
|||
|
|
//-----------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>: <20><>ͨѶ<CDA8>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еõ<D0B5>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>,
|
|||
|
|
// ֻ<><D6BB>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ݰ<EFBFBD><DDB0>ṹ. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>ô<EFBFBD><C3B4>Ҫ<EFBFBD><D2AA> GetExCommData <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>
|
|||
|
|
// <20><><EFBFBD><EFBFBD>: pPacket, <20><><EFBFBD>ݰ<EFBFBD>ָ<EFBFBD><D6B8>
|
|||
|
|
// <20><><EFBFBD><EFBFBD>: >=0, <20>ɹ<EFBFBD>ȡ<EFBFBD><C8A1>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0>Ϳɱ䳤<C9B1><E4B3A4><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ<D6B5><CEAA><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// -1, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// -2, CRC<52><43><EFBFBD><EFBFBD>
|
|||
|
|
// -3, <20><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>
|
|||
|
|
// -4, û<><C3BB><EFBFBD>ҵ<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// -5<><35><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>ʱ
|
|||
|
|
// -6, <20><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// -7, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CRC<52><43><EFBFBD><EFBFBD>
|
|||
|
|
// -8, <20><><EFBFBD><EFBFBD>δ֪<CEB4><D6AA><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷȡ<C8B7><C8A1><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>ͨѶ<CDA8><D1B6>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>βָ<CEB2><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>
|
|||
|
|
|
|||
|
|
int GetANormalPacket(DataExFuns * funs, DataPacket * pPacket);
|
|||
|
|
|
|||
|
|
//--------------------------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD><EFBFBD>, ͨ<><CDA8>ͨѶ<CDA8>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// <20><><EFBFBD><EFBFBD>: pPacket, <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3>Ѿ<EFBFBD><D1BE><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ֶΡ<D6B6>
|
|||
|
|
// <20><><EFBFBD><EFBFBD>:
|
|||
|
|
// 0, <20><><EFBFBD>Է<EFBFBD><D4B7><EFBFBD>, <20><><EFBFBD>ӵ<EFBFBD><D3B5>˷<EFBFBD><CBB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// -1, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// -2<><32><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD>
|
|||
|
|
// 1, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>
|
|||
|
|
int SendAPacket(DataExFuns * funs, DataPacket * pPacket, int waittime);
|
|||
|
|
|
|||
|
|
//--------------------------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
|||
|
|
// <20><><EFBFBD><EFBFBD>:
|
|||
|
|
// pPacket, <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD>sync<6E><63>crc<72>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// <20><><EFBFBD><EFBFBD>:
|
|||
|
|
// 0, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// -1, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
int PacketAFLDP(DataPacket * pPacket);
|
|||
|
|
|
|||
|
|
//--------------------------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ɱ䳤<C9B1><E4B3A4><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
|||
|
|
// <20><><EFBFBD><EFBFBD>: pPacket, <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD> SYNC EXLEN EXCRC <20><> EXDAT <20>Ȳ<EFBFBD><C8B2><EFBFBD>
|
|||
|
|
// pExdat, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
|
|||
|
|
// exlen<65><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD>Ϊ0
|
|||
|
|
// <20><><EFBFBD><EFBFBD>:
|
|||
|
|
// 0, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// -1, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// -2<><32>
|
|||
|
|
|
|||
|
|
int PacketAVLDP(DataPacket * pPacket, const u8 * pExdat, u16 exlen);
|
|||
|
|
|
|||
|
|
//--------------------------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
|
|||
|
|
#endif
|