124 lines
2.5 KiB
C
124 lines
2.5 KiB
C
|
|
|
|||
|
|
#ifndef __OCOM_H__
|
|||
|
|
#define __OCOM_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> | У<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> |
|
|||
|
|
| | ID | <EFBFBD><EFBFBD><EFBFBD>嶨<EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ˵<EFBFBD><EFBFBD> |16λ<EFBFBD><EFBFBD>У<EFBFBD><EFBFBD> |
|
|||
|
|
| 0xEB,0x90,0xD7| | | |
|
|||
|
|
|-------------------------------------------------------------------|-----------|
|
|||
|
|
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
//------------------------------------
|
|||
|
|
|
|||
|
|
#define DC_SYNC_LEN 3 // <20><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD>
|
|||
|
|
#define DC_CMD_LEN 1 // <20><><EFBFBD><EFBFBD><EEB3A4>
|
|||
|
|
#define DC_CONT_LEN 10 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
|
#define DC_CHK_LEN 2 // У<><D0A3><EFBFBD>ֳ<EFBFBD><D6B3><EFBFBD>
|
|||
|
|
|
|||
|
|
#define DC_CHECK_LEN (DC_CMD_LEN+DC_CONT_LEN)
|
|||
|
|
#define LEN_OCOM_PKT (DC_SYNC_LEN+DC_CMD_LEN+DC_CONT_LEN+DC_CHK_LEN)
|
|||
|
|
|
|||
|
|
//------------------------------------
|
|||
|
|
|
|||
|
|
#ifdef _IN_OCOM_C
|
|||
|
|
|
|||
|
|
const u8 OCOM_SYNC[DC_SYNC_LEN] =
|
|||
|
|
{
|
|||
|
|
0xEB,
|
|||
|
|
0x90,
|
|||
|
|
0xD7,
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
#else
|
|||
|
|
|
|||
|
|
extern const u8 OCOM_SYNC[DC_SYNC_LEN];
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
|
|||
|
|
//------------------------------------
|
|||
|
|
|
|||
|
|
typedef union
|
|||
|
|
{
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u8 normal[LEN_OCOM_PKT];
|
|||
|
|
} __attribute__ ((packed)) buff; // buff<66><66>ʽ
|
|||
|
|
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u8 sync[DC_SYNC_LEN];
|
|||
|
|
u8 cmd;
|
|||
|
|
u8 content[DC_CONT_LEN];
|
|||
|
|
u16 check;
|
|||
|
|
} __attribute__ ((packed)) normal; // ͨ<>÷<EFBFBD>ʽ
|
|||
|
|
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u8 sync[DC_SYNC_LEN];
|
|||
|
|
u8 cmd;
|
|||
|
|
u8 toggle;
|
|||
|
|
u8 attr;
|
|||
|
|
s32 ax;
|
|||
|
|
s32 ay;
|
|||
|
|
u16 check;
|
|||
|
|
} __attribute__ ((packed)) offcmd; // <20><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u8 sync[DC_SYNC_LEN];
|
|||
|
|
u8 cmd;
|
|||
|
|
u8 toggle;
|
|||
|
|
u16 exlen;
|
|||
|
|
u8 data1[7];
|
|||
|
|
u16 check;
|
|||
|
|
} __attribute__ ((packed)) d21cmd; // D21<32><31><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
}OComPacket;
|
|||
|
|
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
int (*SendOComData)(u8 *, int);
|
|||
|
|
int (*GetOComData)(u8 *, int);
|
|||
|
|
int (*GetRsvLen)(void);
|
|||
|
|
int (*GetTrsFreeLen)(void);
|
|||
|
|
void (*Delay)(u32);
|
|||
|
|
}OComExFuns;
|
|||
|
|
|
|||
|
|
//------------------------------------
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void ReadOComBuffEmpty(OComExFuns * funs);
|
|||
|
|
|
|||
|
|
int GetAOComPacket(OComExFuns * funs, OComPacket * pPacket);
|
|||
|
|
int GetOComExData(OComExFuns * funs, u8 * pBuff, int exlen);
|
|||
|
|
|
|||
|
|
int SendAOComPacket(OComExFuns * funs, OComPacket * pPacket);
|
|||
|
|
int SendOComExData(OComExFuns * funs, u8 * pBuff, int exlen);
|
|||
|
|
|
|||
|
|
|
|||
|
|
int PacketAOCom(OComPacket * pPacket);
|
|||
|
|
|
|||
|
|
#define GetAOComNormalPacket GetAOComPacket
|
|||
|
|
|
|||
|
|
#endif
|