186 lines
4.5 KiB
C
186 lines
4.5 KiB
C
|
|
|
|||
|
|
#ifndef __MTCOMM_H__
|
|||
|
|
#define __MTCOMM_H__
|
|||
|
|
|
|||
|
|
#include "config.h"
|
|||
|
|
//------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
<EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ<EFBFBD><EFBFBD><EFBFBD>ƽӿ<EFBFBD>
|
|||
|
|
// Э<>飺
|
|||
|
|
ͨ<EFBFBD><EFBFBD>485ͨѶ<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>
|
|||
|
|
|
|||
|
|
485<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD> 115200 bps
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡: 1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<EFBFBD><EFBFBD>8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>ֹͣλ<EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
|
|||
|
|
8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ͨѶ<EFBFBD><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>8<EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
|---------------------------------------------------------------------------------------|
|
|||
|
|
| B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7 |
|
|||
|
|
|---------------|---------------|-----------|-------------------------------|-----------|
|
|||
|
|
| <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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | У<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |
|
|||
|
|
| | | |-------------------------------|-----------|
|
|||
|
|
| | 0 <EFBFBD><EFBFBD>վ | | | B1--B6<EFBFBD><EFBFBD> |
|
|||
|
|
| 0xEB | 1--250 <EFBFBD><EFBFBD>վ | 1--255 | 4<EFBFBD><EFBFBD><EFBFBD>ֽڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | 8λCRCУ<EFBFBD><EFBFBD> |
|
|||
|
|
| | 255 <EFBFBD>㲥 | | | |
|
|||
|
|
| | 251--254 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> | | | |
|
|||
|
|
|---------------|---------------|-----------|-------------------------------|-----------|
|
|||
|
|
| | | | | |
|
|||
|
|
|---------------------------------------------------------------------------------------|
|
|||
|
|
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>մ<EFBFBD>B0--B7<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><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>лذ<EFBFBD><EFBFBD><EFBFBD>ͨѶ<EFBFBD><EFBFBD>ͨѶ<EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>
|
|||
|
|
|
|||
|
|
<EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD>
|
|||
|
|
1.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD>վ<EFBFBD>㷢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
2.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>
|
|||
|
|
3.<EFBFBD>ȴ<EFBFBD><EFBFBD>ذ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>10ms<EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD>ذ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪͨѶ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
|||
|
|
4.<EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD>1
|
|||
|
|
|
|||
|
|
<EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD>
|
|||
|
|
1.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
2.<EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>1ms<EFBFBD><EFBFBD>
|
|||
|
|
3.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻذ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
4.<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><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><EFBFBD><EFBFBD>ִֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
|
|||
|
|
//------------------------------------
|
|||
|
|
|
|||
|
|
#define MT_SYNC_LEN 1 // <20><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD>
|
|||
|
|
#define MT_ADDR_LEN 1 // <20><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
|
|||
|
|
#define MT_CMD_LEN 1 // <20><><EFBFBD><EFBFBD><EEB3A4>
|
|||
|
|
#define MT_CONT_LEN 4 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
|
#define MT_CHK_LEN 1 // У<><D0A3><EFBFBD>ֳ<EFBFBD><D6B3><EFBFBD>
|
|||
|
|
|
|||
|
|
#define MT_CHECK_LEN (MT_ADDR_LEN+MT_CMD_LEN+MT_CONT_LEN)
|
|||
|
|
#define LEN_MTCOMM_PKT (MT_SYNC_LEN+MT_ADDR_LEN+MT_CMD_LEN+MT_CONT_LEN+MT_CHK_LEN)
|
|||
|
|
|
|||
|
|
//------------------------------------
|
|||
|
|
|
|||
|
|
#ifdef _IN_MTCOMM_C
|
|||
|
|
|
|||
|
|
const u8 MTCOMM_SYNC[MT_SYNC_LEN] =
|
|||
|
|
{
|
|||
|
|
0xEB,
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
|
|||
|
|
//------------------------------------
|
|||
|
|
// <20><><EFBFBD>ݽṹ
|
|||
|
|
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
u8 sync[MT_SYNC_LEN];
|
|||
|
|
//--------
|
|||
|
|
u8 addr;
|
|||
|
|
u8 cmd;
|
|||
|
|
//-----
|
|||
|
|
u8 content[MT_CONT_LEN];
|
|||
|
|
//--------
|
|||
|
|
u8 crc8;
|
|||
|
|
} __attribute__ ((packed)) MtCommPacket;
|
|||
|
|
|
|||
|
|
|
|||
|
|
//------------------------------------
|
|||
|
|
|
|||
|
|
#define MTTS_ADDR_MAIN 0 // <20><>վ<EFBFBD><D5BE>ַ
|
|||
|
|
#define MTTS_ADDR_BROADCAST 0xFF // <20>㲥<EFBFBD><E3B2A5>ַ
|
|||
|
|
|
|||
|
|
//------------------------------------
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EEB6A8>
|
|||
|
|
|
|||
|
|
// <20><>վ<EFBFBD><D5BE><EFBFBD><EFBFBD>վ
|
|||
|
|
#define MTCMD_ADDR_INIT 0x01 // վ<>ų<EFBFBD>ʼ<EFBFBD><CABC>
|
|||
|
|
#define MTCMD_SET_NEW_AD 0x02 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><D5BE>
|
|||
|
|
#define MTCMD_GET_INFO 0x03 // <20><>ѯ<EFBFBD><D1AF>վ<EFBFBD><D5BE>Ϣ
|
|||
|
|
#define MTCMD_READ_DATA 0x04 // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
#define MTCMD_WRITE_DATA 0x05 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
// <20><>վ<EFBFBD><D5BE><EFBFBD><EFBFBD>վ
|
|||
|
|
#define MTCMD_REV_INFO 0x83 // <20><>ѯ<EFBFBD><D1AF>վ<EFBFBD><D5BE>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>Ļذ<C4BB>
|
|||
|
|
#define MTCMD_REV_DATA 0x84 // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļذ<C4BB>
|
|||
|
|
|
|||
|
|
//------------------------------------------------------
|
|||
|
|
|
|||
|
|
#define MTCOMM_NONE 0
|
|||
|
|
#define MTCOMM_MASTER 1 // <20><><EFBFBD>ڵ<EFBFBD>
|
|||
|
|
#define MTCOMM_SLAVE 2 // <20>ӽڵ<D3BD>
|
|||
|
|
|
|||
|
|
// <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#ifndef MTCOMM_AS
|
|||
|
|
#define MTCOMM_AS MTCOMM_NONE
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#if (MTCOMM_AS != MTCOMM_NONE && MTCOMM_AS != MTCOMM_MASTER && MTCOMM_AS != MTCOMM_SLAVE)
|
|||
|
|
#undef MTCOMM_AS
|
|||
|
|
#define MTCOMM_AS MTCOMM_NONE
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
|
|||
|
|
//------------------------------------------------------
|
|||
|
|
|
|||
|
|
// ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD>
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
int (*SendMtCommData)(u8 *, int); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD>
|
|||
|
|
int (*GetMtCommData)(u8 *, int); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD>
|
|||
|
|
int (*GetMtRsvLen)(void); // <20>õ<EFBFBD><C3B5>ѽ<EFBFBD><D1BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3>Ⱥ<EFBFBD><C8BA><EFBFBD>
|
|||
|
|
int (*GetTrsFreeLen)(void); // <20>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA><EFBFBD>
|
|||
|
|
void (*Set485TxEnOn)(void); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F2BFAABA><EFBFBD>
|
|||
|
|
void (*Set485TxEnOff)(void); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>رպ<D8B1><D5BA><EFBFBD>
|
|||
|
|
}MtCommExFuncs;
|
|||
|
|
|
|||
|
|
//------------------------------------------------------
|
|||
|
|
|
|||
|
|
// <20><>ʼ<EFBFBD><CABC>
|
|||
|
|
// ע<><D7A2><EFBFBD>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>485<38><35><EFBFBD>غ<EFBFBD><D8BA><EFBFBD>
|
|||
|
|
void InitMtComm(MtCommExFuncs * pExFuncs);
|
|||
|
|
|
|||
|
|
// <20>첽<EFBFBD>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>շ<EFBFBD><D5B7><EFBFBD><EFBFBD>̡<EFBFBD>
|
|||
|
|
// <20><>Ҫ<EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>
|
|||
|
|
void MtCommAsyncTask(void);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD>CRC
|
|||
|
|
int PacketAMtComm(MtCommPacket * pPacket);
|
|||
|
|
|
|||
|
|
// У<><D0A3>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
|||
|
|
// <20><>֤ͬ<D6A4><CDAC><EFBFBD>ֺ<EFBFBD>CRC
|
|||
|
|
int CheckAMtPacket(MtCommPacket * pPacket);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD>η<EFBFBD><CEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// <20><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>ID
|
|||
|
|
int SendAMtPacket(MtCommPacket * pPacket, int hasback);
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>״̬
|
|||
|
|
int GetSendStatus(int id);
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
|
|||
|
|
int GetSendResult(int id);
|
|||
|
|
|
|||
|
|
// <20><>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pPacket<65><74>
|
|||
|
|
int GetAMtPacket(MtCommPacket * pPacket);
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
#endif
|