#ifndef __FRAME_FK_U_CAMERA
#define __FRAME_FK_U_CAMERA

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "FrameRecieve.h"
#pragma pack(1)


typedef struct struProtocalKB {
	UINT8 head[2];								//帧头0x
	UINT8 reserved;   							//预留
	UINT8 data[3];								//开关指令
	UINT8 curPage;									//指令页
	UINT8 CHKSUM;   							//校验字节
}ProtocalKB;

#pragma pack()


class CFrameFK_U_CAMERA : public CFrameAbstract {
public:
	int fk_counter;
	CFrameFK_U_CAMERA()
	{
		strcpy(Name, "机载相机");
		FrameLength = 8;
		HeadLength = 2;
		Head[0] = 0xEB;
		Head[1] = 0x98;
		memcpy(Addr(), Head, HeadLength);
		CheckLength = 1;
		CheckPos = FrameLength -1;
		FrameType = ftFKd;
		fk_counter = 0;
		DINeedRespond = FALSE;  

		ckCmd = 0x00;

		memset(&Data,0,sizeof(ProtocalKB));
	}
public:
	ProtocalKB Data;
	BOOL DINeedRespond;
	virtual struCHECK CheckCRC(BYTE* const p)//子帧校验
	{
		return getCRC8(p,7);
	}

	virtual BYTE* SendPrepare()
	{
		return CFrameAbstract::SendPrepare();
	}
public:
	BYTE  ckCmd;//从控指令
public:
	 virtual ~CFrameFK_U_CAMERA(){
	 }
protected:
	virtual BOOL OnCheck(){
		if(CheckCRC(Addr()).C0 == Addr()[7])
			return true;
		else
			return false;	
	}
	virtual void Decode()
	{
	}

	virtual void Encode()
    {
        ProtocalKB *pBuff = (ProtocalKB*) Addr();
		pBuff->head[0]   = 0xEB;
		pBuff->head[1]   = 0x98;
		pBuff->reserved  = 0x00;			
		memset(pBuff->data,ckCmd,3);				
		pBuff->curPage  = 0x01;
    }
};

#endif