first
This commit is contained in:
95
apps/common/device/gx8002_npu/gx8002_npu.h
Normal file
95
apps/common/device/gx8002_npu/gx8002_npu.h
Normal file
@ -0,0 +1,95 @@
|
||||
#ifndef __GX8002_NPU_H__
|
||||
#define __GX8002_NPU_H__
|
||||
|
||||
/*
|
||||
* Message command
|
||||
*/
|
||||
#define MSG_TYPEBITS 8
|
||||
#define MSG_NRBITS 8
|
||||
|
||||
#define MSG_NRMASK ((1 << MSG_NRBITS) - 1)
|
||||
#define MSG_TYPEMASK ((1 << MSG_TYPEBITS) - 1)
|
||||
|
||||
#define MSG_NRSHIFT 0
|
||||
#define MSG_TYPESHIFT (MSG_NRSHIFT + MSG_NRBITS)
|
||||
|
||||
/* Create new message */
|
||||
#define NEW_MSG(type, nr) \
|
||||
(((type) << MSG_TYPESHIFT) | \
|
||||
((nr) << MSG_NRSHIFT))
|
||||
|
||||
/* Get message type */
|
||||
#define MSG_TYPE(cmd) (((cmd) >> MSG_TYPESHIFT) & MSG_TYPEMASK)
|
||||
|
||||
/* Get message nr */
|
||||
#define MSG_NR(cmd) (((cmd) >> MSG_NRSHIFT) & MSG_NRMASK)
|
||||
|
||||
/*
|
||||
* Message flags
|
||||
*/
|
||||
#define MSG_FLAG_BCHECK (1 << 0)
|
||||
#define MSG_FLAG_BCHECK_BITS 1
|
||||
#define MSG_FLAG_BCHECK_MASK ((1 << MSG_FLAG_BCHECK_BITS) - 1)
|
||||
#define MSG_FLAG_BCHECK_SHIFT 0
|
||||
|
||||
/* Check if need message body crc32 */
|
||||
#define MSG_NEED_BCHECK(flags) (((flags) >> MSG_FLAG_BCHECK_SHIFT) & MSG_FLAG_BCHECK_MASK)
|
||||
|
||||
|
||||
#define MSG_HEAD_LEN 14 /* Message header length */
|
||||
#define MSG_HEAD_CHECK_LEN 4 /* Message header crc32 length */
|
||||
#define MSG_MAGIC_LEN 4 /* Message magic length */
|
||||
#define MSG_BODY_LEN_MAX 3072 /* Message body maximun length */
|
||||
#define MSG_BODY_CHECK_LEN 4 /* Message body crc32 length */
|
||||
|
||||
#define MSG_SEQ_MAX 255 /* Message sequence maximum count */
|
||||
#define MSG_LEN_MAX (MSG_HEAD_LEN + MSG_BODY_LEN_MAX) /* Message maximun length */
|
||||
|
||||
#define MSG_MAGIC 0x58585542
|
||||
|
||||
#define MSG_RCV_MAGIC0 (((MSG_MAGIC) & 0x000000FF) >> 0 )
|
||||
#define MSG_RCV_MAGIC1 (((MSG_MAGIC) & 0x0000FF00) >> 8 )
|
||||
#define MSG_RCV_MAGIC2 (((MSG_MAGIC) & 0x00FF0000) >> 16)
|
||||
#define MSG_RCV_MAGIC3 (((MSG_MAGIC) & 0xFF000000) >> 24)
|
||||
|
||||
typedef enum {
|
||||
MSG_TYPE_REQ = 0x1,
|
||||
MSG_TYPE_RSP = 0x2,
|
||||
MSG_TYPE_NTF = 0x3,
|
||||
} MSG_TYPE;
|
||||
|
||||
struct message {
|
||||
unsigned short cmd;
|
||||
unsigned char seq;
|
||||
unsigned char flags;
|
||||
unsigned char *body;
|
||||
unsigned short bodylen;
|
||||
} __attribute__((packed));
|
||||
|
||||
typedef enum {
|
||||
MSG_REQ_VOICE_EVENT = NEW_MSG(MSG_TYPE_REQ, 0x0C),
|
||||
MSG_RSP_VOICE_EVENT = NEW_MSG(MSG_TYPE_RSP, 0x0C),
|
||||
|
||||
//查询gx固件版本
|
||||
MSG_REQ_VERSION_EVENT = NEW_MSG(MSG_TYPE_REQ, 0x02),
|
||||
MSG_RSP_VERSION_EVENT = NEW_MSG(MSG_TYPE_RSP, 0x02),
|
||||
|
||||
//查询MIC状态
|
||||
MSG_REQ_MIC_EVENT = NEW_MSG(MSG_TYPE_REQ, 0x70),
|
||||
MSG_RSP_MIC_EVENT = NEW_MSG(MSG_TYPE_RSP, 0x70),
|
||||
|
||||
//查询Gsensor状态
|
||||
MSG_REQ_GSENSOR_EVENT = NEW_MSG(MSG_TYPE_REQ, 0x71),
|
||||
MSG_RSP_GSENSOR_EVENT = NEW_MSG(MSG_TYPE_RSP, 0x71),
|
||||
} UART_MSG_ID;
|
||||
/* Stream read callback */
|
||||
typedef int (*STREAM_READ)(unsigned char *buf, int len);
|
||||
|
||||
/* Stream write callback */
|
||||
typedef int (*STREAM_WRITE)(const unsigned char *buf, int len);
|
||||
|
||||
/* Stream is empty callback */
|
||||
typedef int (*STREAM_EMPTY)(void);
|
||||
|
||||
|
||||
#endif /* #ifndef __GX8002_NPU_H__ */
|
||||
Reference in New Issue
Block a user