optical/NxFuncs/transdata/transdata.h

172 lines
3.6 KiB
C
Raw Normal View History

2025-09-04 01:45:08 +00:00
#ifndef _TRANSDATA_H_
#define _TRANSDATA_H_
#include "config.h"
#if (TRANS_APP_FILE == 1)
#include "stapp.h"
#endif
#if (TRANS_DATA_FILE == 1)
#include "datafile.h"
#endif
#define LEN_RSV_BMP 1024 // <20><><EFBFBD><EFBFBD>λͼ<CEBB><CDBC><EFBFBD><EFBFBD>
#define FILE_HEAD_ID 0xFFFF // <20><>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>ID
#define TRANS_NONE 0x00
#define TRANS_ACTIVE 0x5A
#define TRANS_NOT_BEG 0x00 // û<><C3BB><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TRANS_READY 0x01 // ׼<><D7BC><EFBFBD><EFBFBD>
#define TRANS_DOING 0x02 // <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD>
#define TRANS_DONE 0x03 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TRANS_REQUEST 0x04 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
#define FILE_TYPE_DAT 0x00 // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
#define FILE_TYPE_PGM 0x02 // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
#define FILE_TYPE_BOARD 0x03 // <20><>Χ<EFBFBD><CEA7><EFBFBD>ļ<EFBFBD>
#define FILE_TYPE_FRAME 0x04 // <20>߿<EFBFBD><DFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>ļ<EFBFBD>(<28><>Ҫ<EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><C9BA>Զ<EFBFBD><D4B6>л<EFBFBD><D0BB><EFBFBD>ԭ<EFBFBD>ļ<EFBFBD>,<2C>Ҳ<EFBFBD><D2B2><EFBFBD>Ҫ<EFBFBD><D2AA>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>)
// <20><>Χ<EFBFBD><CEA7><EFBFBD>ļ<EFBFBD>ͷ
typedef struct
{
// 0x00
char fileName[32]; // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
// 0x20
u32 dataSize; // <20><><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
u32 dataChecksum; // <20><><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
u8 protocol; // <20>ļ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 nodeid; // <20>ļ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Ľڵ<C4BD>ID,0Ϊ<30>
u8 fileType; // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
u8 nodeType; // 20220608 <20>ļ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Ľڵ<C4BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
// 0x2C
u8 reserved1[0x30-0x2C]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
// 0x30
u8 reserved2[0x64-0x30]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2
// 0x64
u8 reserved3[0x80-0x64]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3
// 0x80
u8 reserved4[0x100-0x80]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4
}__attribute__ ((packed)) BoardFileHead;
// <20><>Χ<EFBFBD><CEA7><EFBFBD>ļ<EFBFBD>CAN<41><4E><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD>ƽ
typedef union
{
u8 data[8];
struct
{
u8 sync[3];
u16 pktId; // <20><>ID
u8 fnum; // ֡<><D6A1><EFBFBD><EFBFBD>
u16 crc;
} __attribute__ ((packed)) head;
struct
{
u32 datasize; // <20><><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
u32 dataChecksum; // <20><><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
} __attribute__ ((packed)) check;
struct
{
u8 protocol; // <20>ļ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 nodeid; // <20>ļ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Ľڵ<C4BD>ID,0Ϊ<30>
u8 fileType; // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
u8 nodeType; // <20>ļ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Ľڵ<C4BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
u8 rev[4];
} __attribute__ ((packed)) info;
}BoardFileCanCtrl;
// <20><>Χ<EFBFBD><CEA7><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD>ƽ
// һ<><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>129<32><39>CAN<41><4E><EFBFBD><EFBFBD>֡
typedef struct
{
BoardFileCanCtrl pktHead;
BoardFileCanCtrl pktData[128];
}BoardFilePacketCtrl;
// <20><>Χ<EFBFBD><CEA7><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ƽ
typedef struct
{
BoardFileHead fileHead; // <20>ļ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
BoardFilePacketCtrl filepkt; // <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
}BoardFileCtrl;
// <20><><EFBFBD>ݽ<EFBFBD><DDBD>տ<EFBFBD><D5BF><EFBFBD>
typedef struct
{
u8 transActive; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>Ч
u8 transflag; // <20><><EFBFBD>ս<EFBFBD><D5BD>ȱ<EFBFBD>־ = 0, <20><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>ʼ; = 1, <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD>; = 2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//---------------<2D>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>--------------------
u8 fileType; // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
u8 fileIdx; // Ϊ<>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>16<31><36><EFBFBD>ļ<EFBFBD>
u16 fileId; // <20>ļ<EFBFBD>ID
#if (TRANS_DATA_FILE == 1)
DatFileCtrl * pDatFile;
#endif
#if (TRANS_APP_FILE == 1)
AppFileCtrl * pAppFile;
#endif
//---------------<2D>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>--------------------
//---------------<2D><>Χ<EFBFBD><CEA7><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>--------------------
u16 rsvPktCount; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>
u8 rsvFrameCount; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
u32 dataChecksum; // <20><><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
BoardFileCtrl * pBoardFile;
//---------------<2D><>Χ<EFBFBD><CEA7><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>--------------------
u32 packetNum; // <20><><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
u16 lenBmp; // λͼ<CEBB><CDBC>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
u8 rsvBitmap[LEN_RSV_BMP]; // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ս<EFBFBD><D5BD>ȱ<EFBFBD>־λͼ
} __attribute__ ((packed)) FileTransCtrl;
#define CDPSYNC_LEN 3
#ifdef _IN_TRANSDATA_C
const u8 CDP_SYNC[CDPSYNC_LEN] =
{
'C','D','P',
};
#else
extern const u8 CDP_SYNC[];
#endif
void InitFileTransCtrl(FileTransCtrl * pfileTransCtrl);
int WriteRsvBitmap(u32 idx, u8 sta, FileTransCtrl * pfileTransCtrl);
int IsResvFinish(FileTransCtrl * pfileTransCtrl);
int TransDataProc(BoardFileCanCtrl filecan, FileTransCtrl * pfileTransCtrl, u8 nodetype); // <20><>Χ<EFBFBD><CEA7><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>մ<EFBFBD><D5B4><EFBFBD>
int GetLenBmp(FileTransCtrl * pfileTransCtrl);
#ifdef _IN_TRANSDATA_C
BoardFileCtrl g_boardFile;
#else
extern BoardFileCtrl g_boardFile;
#endif
#endif /* _TRANSDATA_H_ */