QuakeGod
2024-12-24 61deef5cdf96cbfdd6ad45be49e80d597c00ca65
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
 
// FirmwareToolDlg.h: 头文件
//
 
#pragma once
 
typedef struct tagInfoBlock // 20 bytes
{
    //    USHORT nBlockLenth;
    USHORT nDeviceTypeVer;            //device type        x.y
//    UCHAR nDevierVer;
    USHORT nProgVer;                    //prog version    x.y
    USHORT nKLinkVer;                //x.y
    USHORT nKBusVer;                //x.y
//    USHORT nKNetVer;                //x.y
//    USHORT nKWLVer;                    //x.y
 
    UCHAR nCapacity1;                //    ? K
    UCHAR nCapacity2;                //    ? k
 
    UCHAR nDInput;
    UCHAR nDOutput;
    UCHAR nAInput;
    UCHAR nAOutput;
    UCHAR nHInput;
    UCHAR nHOutput;
    UCHAR nExt1;
    UCHAR nExt2;
    UCHAR nLogSize;
    UCHAR nPorts;
    UCHAR nManSize;
    UCHAR nAbility;
    UCHAR nSwitchBits;
 
}stKMInfoBlock, * pKMInfoBlock;
 
typedef struct tagInfoBlockHdr {
    unsigned short nBlkSign;                    // 开始标志
    unsigned short nBlkTypeVer;                // 类型和版本
    unsigned short nBlkSize;                    // Block 大小, 包括开始和结束标志
    unsigned short Pad1;
}stInfoBlockHdr;
 
typedef struct tagInfoBlockTail {
 
    unsigned short CRC16;
    unsigned short EndSign;
}stInfoBlockTail;
 
typedef struct tagBtLdrInfoBlock {
    stInfoBlockHdr Hdr;
    unsigned short nBtldrVer;
    unsigned short nBtldrDevice;
    unsigned short nBtldrSize;        // 设计大小
    unsigned short nBtldrDataSize;        //代码大小 
    unsigned int nBtldr_AppAddr;
    unsigned int nBtldr_NewAppInfoAddr;
    unsigned int nBtldr_NewAppAddr;
    stInfoBlockTail tail;
}stBtLdrInfoBlock, *pBtLdrInfoBlock;
 
typedef struct tagAppInfoBlock {
    stInfoBlockHdr Hdr;
    union {
        unsigned short nAppVer;
        struct {
            unsigned char nAppVerMinor;
            unsigned char nAppVerMajor;
        };
    };
 
    unsigned short nAppDevice;
    unsigned short nAppSize;        // 设计大小
    unsigned short nAppDataSize;        //代码大小 
    unsigned int nAppStartAddr;
    unsigned int nAppStartOffset;
    unsigned int nApp;
    stInfoBlockTail tail;
}stAppInfoBlock, * pAppInfoBlock;
 
// CFirmwareToolDlg 对话框
class CFirmwareToolDlg : public CDialogEx
{
// 构造
public:
    CFirmwareToolDlg(CWnd* pParent = nullptr);    // 标准构造函数
 
// 对话框数据
#ifdef AFX_DESIGN_TIME
    enum { IDD = IDD_FIRMWARETOOL_DIALOG };
#endif
 
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
 
 
// 实现
protected:
    HICON m_hIcon;
 
    // 生成的消息映射函数
    virtual BOOL OnInitDialog();
    afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    DECLARE_MESSAGE_MAP()
public:
    afx_msg void OnBnClickedButtonOpenBtldr();
    afx_msg void OnBnClickedButtonOpenApp();
    afx_msg void OnBnClickedButtonMake();
    virtual BOOL PreTranslateMessage(MSG* pMsg);
    afx_msg void OnTimer(UINT_PTR nIDEvent);
    int DelayInit();
    int ShowParams();
    int GetParams();
    int LoadConfig();
    int SaveConfig();
    afx_msg void OnClose();
    // 载入BootLoader文件
    int LoadBtldrFile(CString sFilePathName);
    // 载入APP应用程序文件
    int LoadAppFile(CString sFilePathName);
    int MakeFirmware();
    int SaveFirmwareAsFile(CString sFilePathName);
};