/*
|
* protocol.h
|
*
|
* Created on: 2021Äê11ÔÂ1ÈÕ
|
* Author: graydon
|
*/
|
|
#ifndef PROTOCOL_H_
|
#define PROTOCOL_H_
|
#include <string.h>
|
#include "config.h"
|
#include "../drv/board.h"
|
|
#define MSG_DATA_LEN (SPI_BUFFER_SIZE-16)
|
#define MLEN(pmsg) ((pmsg)->dataLen+16)
|
|
|
|
enum MsgType{
|
MSG_HANDSHAKE_REQ =0x10, //ARM->DSP ,ÎÕÊÖÇëÇó.
|
MSG_HANDSHAKE_RES,
|
|
MSG_REHANDSHAKE_REQ, //DSP->ARM ,ÖØÐÂÎÕÊÖÇëÇó £¬ÓÃÓÚDSPÖØÐ³õʼ»¯¡£
|
MSG_REHANDSHAKE_RES,
|
|
MSG_TOPO_REQ, //ARM->DSP ¡£·¢ËÍTOPO BINÎļþ
|
MSG_TOPO_RES,
|
|
MSG_PRESET_REQ, //ARM->DSP£¬ ·¢ËÍÔ¤Éè²ÎÊýÎļþ
|
MSG_PRESET_RES,
|
|
MSG_PARMA_CTRL_REQ, //ARM->DSP, ²ÎÊý¿ØÖÆ
|
MSG_PARAM_CTRL_RES,
|
|
MSG_LEVEL_GET_REQ, //ARM->DSP , µçƽ»ñÈ¡¡£
|
MSG_LEVEL_GET_RES,
|
|
MSG_DSP_STATUS_REQ, //ARM->DSP , ÔËÐÐ״̬±¨¸æ.
|
MSG_DSP_STATUS_RES,
|
|
MSG_MODULE_CPU_REQ,
|
MSG_MODULE_CPU_RES,
|
};
|
|
|
class MSG{
|
public:
|
unsigned short magic;
|
unsigned short dataLen;
|
unsigned short totalPkts;
|
unsigned short pktNo;
|
unsigned char msgType;
|
unsigned char checksum;
|
unsigned char result;
|
unsigned char subType;
|
unsigned int msgID;
|
char data[MSG_DATA_LEN];
|
|
inline int Enc(MsgType msg_type, void* buffer, uint32_t len)
|
{
|
magic = 0x5aa5;
|
msgType = msg_type;
|
dataLen = len;
|
if (buffer != 0 && len > 0) {
|
memcpy(data, buffer, len);
|
}
|
return 0;
|
}
|
MSG& operator=(const MSG& m){
|
if(this != &m) {
|
memcpy(this, &m , MLEN(&m));
|
}
|
return *this;
|
}
|
|
};
|
|
enum ModuleInterfaceType{
|
SOFT_MODULE,
|
PHY_INPUT,
|
PHY_OUTPUT,
|
};
|
|
struct FlowChartHead {
|
int crc;
|
unsigned short module_num;
|
unsigned char compress;
|
unsigned char pad;
|
|
unsigned short dsp_buffer_num[12];
|
};
|
|
struct Module {
|
unsigned int mID; //Ä£¿éID
|
unsigned short mType; //Ä£¿éÀàÐÍ ModuleType
|
unsigned short mTag; //Ä£¿é¸½¼Ó×ֶΣ¨ÈçEQ6 £¬8¶Î£©
|
unsigned char mRxNum; //Ä£¿é½ÓÊÕͨµÀÊý
|
unsigned char mTxNum; //Ä£¿éÊä³öͨµÀÊý
|
unsigned char mDsp; //Ä£¿éËùÊôDSP Ë÷Òý
|
unsigned char mPhyModule; //0£¬·ÇÓ²¼þÄ£¿é£¬1-ÎïÀíÊäÈëÄ£¿é£¬2-ÎïÀíÊä³öÄ£¿é.
|
//u16 mRxbufID[];
|
//u16 mTxbufID[];
|
|
};
|
|
|
|
struct Param {
|
unsigned int mID; //Ä£¿éID
|
|
unsigned char mType;
|
unsigned char slotID;
|
unsigned short cpu;
|
|
unsigned char pID; //²ÎÊýID
|
unsigned char dspID; //Dsp
|
|
unsigned short num;
|
|
//s16 val[3];
|
};
|
|
//Level
|
struct Level{
|
unsigned short mID;
|
unsigned short num;
|
|
//s16 val[4];
|
};
|
|
|
struct DSPStatus{
|
unsigned int mCpu;
|
unsigned int mInternalUnUsedMem;
|
unsigned int mExternalUnUsedMem;
|
unsigned char mDDRPassed;
|
unsigned char pad[3];
|
|
//.....
|
};
|
#endif /* PROTOCOL_H_ */
|