OpenCores
URL https://opencores.org/ocsvn/ezidebug/ezidebug/trunk

Subversion Repositories ezidebug

[/] [ezidebug/] [trunk/] [EziDebug_src/] [ezidebugprj.h] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 EziDebug
#ifndef EZIDEBUGPRJ_H
2
#define EZIDEBUGPRJ_H
3
#include <QMap>
4
#include <QDir>
5
#include <QStack>
6
#include <QXmlStreamReader>
7
 
8
#include "updatedetectthread.h"
9
 
10
 
11
 
12
 
13
 
14
 
15
#define Parse_by_QDom
16
 
17
#define DEFAULT_MAX_REGNUM  512
18
#define READ_FILE_INFO      0x01
19
#define READ_MODULE_INFO    0x02
20
#define READ_CHAIN_INFO     0x04
21
 
22
#define EZIDEBUG_STRUCTURE_FILE        0x01
23
#define EZIDEBUG_STRUCTURE_MODULE      0x02
24
#define EZIDEBUG_STRUCTURE_SCAN_CHAIN  0x04
25
#define EZIDEBUG_STRUCTURE_ALL         0x07
26
 
27
#define MODULE_STRUCTURE_CLOCK_DESCRIPTION   0x01
28
#define MODULE_STRUCTURE_REG_DESCRIPTION     0x02
29
#define MODULE_STRUCTURE_PORT_DESCRIPTION    0x04
30
#define MODULE_STRUCTURE_INSTANCE_PORT_MAP_DESCRIPTION 0x08
31
#define MODULE_STRUCTURE_ALL_DESCRIPTION     0x0F
32
 
33
#define SCAN_CHAIN_STRUCTURE_REGLIST_DESCRIPTION   0x01
34
#define SCAN_CHAIN_STRUCTURE_CODE_DESCRIPTION     0x02
35
#define SCAN_CHAIN_STRUCTURE_ALL_DESCRIPTION     0x03
36
#define MAX_SIGNAL_NUM     256
37
 
38
class QString ;
39
class QDir ;
40
class EziDebugVlgFile ;
41
class EziDebugVhdlFile ;
42
class EziDebugModule ;
43
class EziDebugInstanceTreeItem ;
44
class EziDebugScanChain ;
45
class QStringList ;
46
class QXmlStreamReader ;
47
class QDomElement ;
48
class QDomDocument ;
49
 
50
 
51
 
52
 
53
 
54
 
55
template <class Key, class T> class QMap;
56
 
57
 
58
class EziDebugPrj:public QObject
59
{
60
    Q_OBJECT
61
public:
62
    enum TOOL
63
    {
64
        ToolQuartus = 0 ,
65
        ToolIse ,
66
        ToolOther
67
    };
68
    enum OPERATE_TYPE
69
    {
70
 
71
        OperateTypeAddScanChain = 0 ,
72
        OperateTypeDelSingleScanChain ,
73
        OperateTypeDelAllScanChain ,
74
        OperateTypeNone ,
75
        OperateTypeOther
76
    };
77
 
78
    enum INFO_TYPE
79
    {
80
        infoTypeScanChainStructure = 0 ,
81
        infoTypeModuleStructure,
82
        infoTypeTreeStructure ,
83
        infoTypeFileInfo ,
84
        infoTypeOther
85
    };
86
 
87
    struct LOG_FILE_INFO
88
    {
89
        char ainfoName[128] ;
90
        void *pinfo ;
91
        INFO_TYPE etype ;
92
    };
93
 
94
    enum FILE_UPDATE_TYPE
95
    {
96
        addedUpdateFileType = 0 ,
97
        deletedUpdateFileType ,
98
        changedUpdateFileType ,
99
        otherUpdateFileType
100
    };
101
 
102
    enum SCAN_TYPE
103
    {
104
        partScanType = 0 ,
105
        fullScanType ,
106
        otherScabType
107
    };
108
 
109
 
110
    EziDebugPrj(int maxregnum , QString projectdir , TOOL tool = ToolQuartus ,QObject * parent = 0);
111
    ~EziDebugPrj();
112
 
113
    const TOOL &getToolType(void) const;
114
    const int  &getMaxRegNumPerChain(void) const;
115
    const QDir &getCurrentDir(void) const ;
116
    bool getSoftwareXilinxErrCheckedFlag(void) ;
117
    QString getTopModule(void);
118
    UpdateDetectThread * getThread(void) const ;
119
    bool getLogFileExistFlag(void) ;
120
    const QMap<QString,EziDebugScanChain*> &getScanChainInfo(void) const ;
121
    const QMap<QString,EziDebugInstanceTreeItem*> &getChainTreeItemMap(void) const ;
122
    const QMap<QString,EziDebugInstanceTreeItem*> &getBackupChainTreeItemMap(void) const ;
123
    const QMap<QString,EziDebugScanChain*> &getBackupChainMap(void) const ;
124
 
125
    const QStringList &getPrjCodeFileNameList(void) const ;
126
    const QStringList &getUpdateFileList(FILE_UPDATE_TYPE fileupdatetype) const;
127
    const QStringList &getFileNameList(void) const ;
128
    const QString &getPrjName(void) const ;
129
    OPERATE_TYPE  getLastOperation(void) ;
130
    int   getPermittedRegNum(void) ;
131
    EziDebugScanChain* getLastOperateChain(void) ;
132
    EziDebugInstanceTreeItem* getLastOperateTreeItem(void) ;
133
 
134
    const QMap<QString,EziDebugModule*> &getPrjModuleMap(void) const ;
135
    const QMap<QString,EziDebugVlgFile*> &getPrjVlgFileMap(void) const ;
136
    const QMap<QString,EziDebugVhdlFile*> &getPrjVhdlFileMap(void) const ;
137
 
138
 
139
    int eliminateLastOperation(void) ;
140
    int  eliminateFile(const QString &filename,QList<LOG_FILE_INFO*> &infolist) ;
141
    int  addFile(const QString &filename,SCAN_TYPE type,QList<LOG_FILE_INFO*> &infolist);
142
 
143
    void  addToModuleMap(const QString &modoule,EziDebugModule *pmodule);
144
    void  addToDestroyedChainList(const QString& chainname);
145
    void  addToCheckedChainList(const QString& chainname) ;
146
    QStringList  checkChainExist(void) ;      // EziDebug 添加的代码位置变动 记录
147
    const QStringList &getDestroyedChainList(void) const ;
148
    const QStringList &getCheckedChainList(void) const ;
149
    void  clearupDestroyedChainList(void) ;
150
    void  clearupCheckedChainList(void) ;
151
    QStringList   deleteDestroyedChain(QList<LOG_FILE_INFO*> &addedinfoList,QList<LOG_FILE_INFO*> &deletedinfoList);
152
 
153
 
154
    int  setToolType(TOOL tool);
155
    int  setMaxRegNumPerChain(int num);
156
    void setLogFileExistFlag(bool flag);
157
    void setXilinxErrCheckedFlag(bool flag) ;
158
    void setLogFileName(const QString& filename);
159
    void setMaxRegWidth(int width) ;
160
    void setLogfileDestroyedFlag(bool flag) ;
161
    bool getLogfileDestroyedFlag(void) ;
162
 
163
    bool isPrjFileExist(void) ;
164
    void preModifyPrjFile(void);
165
    int  parsePrjFile(QMap<QString,EziDebugVlgFile*> &vlgFileMap , QMap<QString,EziDebugVhdlFile*> &vhdlFileMap) ;
166
    void checkDelFile(QMap<QString,EziDebugVlgFile*> &vlgFileMap , QMap<QString,EziDebugVhdlFile*> &vhdlFileMap,QList<LOG_FILE_INFO*> &deleteinfolist);
167
    int  traverseAllCodeFile(EziDebugPrj::SCAN_TYPE type , const QMap<QString,EziDebugVlgFile*> &vlgFileMap ,const QMap<QString,EziDebugVhdlFile*> &vhdlFileMap ,QList<LOG_FILE_INFO*> &addedinfoList,QList<LOG_FILE_INFO*> &deletedinfoList);
168
    void updateFileMap(const QMap<QString,EziDebugVlgFile*> &vlgFileMap ,const QMap<QString,EziDebugVhdlFile*> &vhdlFileMap);
169
    int  detectLogFile(char nreadFlag);
170
    int  updatePrjAllFile(const QStringList& addfilelist,const QStringList& delfilelist,const QStringList& chgfilelist ,QList<LOG_FILE_INFO*>& addinfolist , QList<LOG_FILE_INFO*> &deleteinfolist ,bool updateFlag);
171
    void preupdateProgressBar(bool updateflag ,int value);
172
    void compareFileList(const QStringList& newfilelist , QStringList& addFileList , QStringList &delFileList , QStringList &chgFileList);
173
 
174
 
175
    void addToChainMap(EziDebugScanChain* chain);
176
    void addToTreeItemMap(const QString &chain ,EziDebugInstanceTreeItem* item);
177
    void addToQueryItemMap(const QString &name ,EziDebugInstanceTreeItem* item);
178
    void addToMacroMap(void) ;
179
    const QMap<QString,QString> &getMacroMap(void) const;
180
 
181
    void addToDefparameterMap(void);
182
    QMap<QString,QString> getdefparam(const QString &instancename);
183
    EziDebugInstanceTreeItem* getQueryItem(const QString &name);
184
    void updateTreeItem(EziDebugInstanceTreeItem* item) ;
185
 
186
    void eliminateChainFromMap(const QString &chain);
187
    void eliminateTreeItemFromMap(const QString &chain);
188
    void eliminateTreeItemFromQueryMap(const QString &combinedname) ;
189
 
190
    void backupChainQueryTreeItemMap(void);
191
    void backupChainTreeItemMap(void);
192
    void backupChainMap(void);
193
 
194
    void cleanupChainMap(void);
195
 
196
    void cleanupBakChainTreeItemMap(void) ;
197
    void cleanupChainTreeItemMap(void) ;
198
    void cleanupChainQueryTreeItemMap(void) ;
199
    void cleanupBakChainQueryTreeItemMap(void) ;
200
 
201
 
202
 
203
    void resumeChainMap(void);
204
    void resumeChainTreeItemMap(void) ;
205
    void resumeChainQueryTreeItemMap(void) ;
206
 
207
 
208
    int domParseModuleInfoElement(const QDomElement &element, char readflag) ;
209
    int domParseModuleStructure(const QDomElement &element, char readflag, EziDebugModule* module) ;
210
    int domParseClockDescriptionElement(const QDomElement &element, char readflag, EziDebugModule* module) ;
211
    int domParseRegDescriptionElement(const QDomElement &element,char readflag, EziDebugModule* module) ;
212
    int domParsePortDescriptionElement(const QDomElement &element,char readflag, EziDebugModule* module) ;
213
    int domParseInstancePortMapDescriptionElement(const QDomElement &element,char readflag, EziDebugModule* module) ;
214
 
215
    int domParseClockStructure(const QDomElement &element, char readflag , EziDebugModule* module);
216
    int domParseRegStructure(const QDomElement &element, char readflag , EziDebugModule* module);
217
    int domParsePortStructure(const QDomElement &element, char readflag , EziDebugModule* module);
218
 
219
 
220
    int domParseScanChainInfoElement(const QDomElement &element,char readflag) ;
221
    int domParseScanChainStructure(const QDomElement &element,char readflag, EziDebugScanChain *chain);
222
    int domParseReglistDescriptionElement(const QDomElement &element,char readflag, EziDebugScanChain *chain);
223
//  int domParseReglistStructure(const QDomElement &element,char readflag, EziDebugScanChain *chain);
224
 
225
    int domParseCodeDescriptionElement(const QDomElement &element,char readflag, EziDebugScanChain *chain);
226
//  int domParseCodeStructure(const QDomElement &element,char readflag, EziDebugScanChain *chain) ;
227
 
228
    int readModuleStructure(char readflag) ;
229
    int readClockStructure(char readflag , EziDebugModule* module);
230
    int readRegStructure(char readflag , EziDebugModule* module);
231
    int readPortStructure(char readflag , EziDebugModule* module);
232
 
233
    int  generateTreeView(void) ;
234
    int  traverseModuleTree(const QString &module,EziDebugInstanceTreeItem* item);
235
 
236
    EziDebugInstanceTreeItem * getInstanceTreeHeadItem(void);
237
    void setInstanceTreeHeadItem(EziDebugInstanceTreeItem *item);
238
 
239
    int  resumeDataFromFile(void);
240
 
241
    void updateOperation(OPERATE_TYPE type, EziDebugScanChain* chain,EziDebugInstanceTreeItem* item);
242
 
243
    int  changedLogFile(const QList<LOG_FILE_INFO*>& addlist, const QList<LOG_FILE_INFO*> &deletelist);
244
    int  saveInfoToLogFile(QDomDocument &idoc, LOG_FILE_INFO* loginfo);
245
    int  deleteLogFileElement(QDomDocument &idoc ,LOG_FILE_INFO* loginfo);
246
 
247
    int  createLogFile(void);
248
 
249
    int  createCfgFile(EziDebugInstanceTreeItem * item) ;
250
 
251
    int chkEziDebugFileInvolved() ;
252
    QString constructCfgInstanceString(EziDebugInstanceTreeItem * item) ;
253
    //void constructIlaunitString(int &unitnumber,int &regwidth, QString &triggerChannelString ,QString &ilaString ,bool forceflag) ;
254
 
255
 
256
    int  parseQuartusPrjFile(QMap<QString,EziDebugVlgFile*> &vlgFileMap ,QMap<QString,EziDebugVhdlFile*> &vhdlFileMap);
257
    int  parseQuartusPrjFile(QStringList &filelist);
258
    int  parseIsePrjFile(QMap<QString,EziDebugVlgFile*> &vlgFileMap ,QMap<QString,EziDebugVhdlFile*> &vhdlFileMap);
259
    int  parseIsePrjFile(QStringList &filelist);
260
 
261
    void  deleteAllEziDebugCode(const QMap<QString,EziDebugVlgFile*> &vlgFileMap ,const QMap<QString,EziDebugVhdlFile*> &vhdlFileMap);
262
 
263
    friend void UpdateDetectThread::update();
264
signals:
265
    void displayMessage(QStringList message);
266
    void updateProgressBar(int value) ;
267
 
268
private slots:
269
    int  updateCodeFile();
270
 
271
   // 什么时候可以启用线程开始 检测更新文件
272
 
273
   // 1、默认路径 ok 并且 恢复完 数据结构之后 开始启用线程
274
   // 2、全部更新 完成之后 并且 写完 log 文件之后 开始启用线程 检测更新
275
 
276
   // 什么时候暂停 检测更新文件
277
   // 1、线程检测到有更新的文件之后 发送信号 到主线程,主线程 开始扫描更新文件时 暂停检测,扫描完之后,开启扫描
278
private:
279
    QStringList m_iCodefileNameList ;
280
    QString m_iprjName ;
281
    QDir   m_iprjPath ;
282
    int    m_nmaxRegNumInChain ;
283
    TOOL   m_eusedTool ;
284
    QString m_itoolSoftwareVersion ;
285
    QString m_icoreLangType ;
286
    bool   m_isLogFileExist ;
287
    int    m_ipermettedMaxRegNum ;
288
    int    m_imaxRegWidth ;
289
    bool   m_isDisXilinxErrChecked ;
290
    bool   m_isUpdated ;
291
 
292
    UpdateDetectThread* m_pthread ;
293
    QXmlStreamReader m_ireader ;
294
    QStack<QString> m_ielementStack ;
295
    QMap<QString,EziDebugVlgFile*> m_ivlgFileMap ;
296
    QMap<QString,EziDebugVhdlFile*> m_ivhdlFileMap ;
297
    QMap<QString,QString> m_iupdateTimeOfFile ;
298
    QString m_itopModule ;
299
    QStringList m_iwaveFileList ;
300
    QMap<QString,EziDebugModule*> m_imoduleMap ;
301
    QMap<QString,EziDebugInstanceTreeItem*> m_ichainTreeItemMap ;  // 待后面不用的话 可以删除
302
    QMap<QString,EziDebugInstanceTreeItem*> m_ibackupChainTreeItemMap ;
303
    QMap<QString,EziDebugInstanceTreeItem*> m_iqueryTreeItemMap ;  // 用于 根据 modue:instance 查询 插入链的头节点
304
    QMap<QString,EziDebugInstanceTreeItem*> m_ibackupQueryTreeItemMap ;  // 用于 根据 modue:instance 查询 插入链的头节点
305
 
306
    QMap<QString,EziDebugScanChain*> m_ichainInfoMap ;
307
    QMap<QString,EziDebugScanChain*> m_ibackupChainInfoMap ;
308
 
309
    QString m_ilogFileName ;
310
    bool    m_isLogFileDestroyed ;
311
    EziDebugInstanceTreeItem* m_headItem ;
312
    QStringList m_iupdateDeletedFileList ;
313
    QStringList m_iupdateAddedFileList ;
314
    QStringList m_iupdateChangedFileList ;
315
 
316
    OPERATE_TYPE m_elastOperation ;
317
    EziDebugScanChain* m_pLastOperateChain ;
318
    EziDebugInstanceTreeItem* m_pLastOperteTreeItem ;
319
    QStringList m_idestroyedChain ; // 用于扫描文件时,记录被破坏的扫描链
320
    QStringList m_icheckedChain ;   // 用于扫描发生变化的文件时,记录扫描到了链
321
 
322
    QMap<QString,QString>  m_imacro ; // 全局保存 defparameter
323
    QMap<QString,QMap<QString,QString> > m_idefparameter ;  // 全局保存 define
324
 
325
 
326
 
327
    int domParseEziDebugElement(const QDomElement &element, char readflag) ;
328
    int domParseFileInfoElement(const QDomElement &element, char readflag) ;
329
    int domParseFileStructure(const QDomElement &element, char readflag) ;
330
 
331
 
332
    int readFileInfo(char readflag) ;
333
    int readFileStructure(char readflag) ;
334
 
335
    int readModuleInfo(char readflag) ;
336
 
337
    int readClockDescription(char readflag, EziDebugModule* module) ;
338
 
339
    int readRegDescription(char readflag, EziDebugModule* module) ;
340
 
341
    int readPortDescription(char readflag, EziDebugModule* module) ;
342
 
343
    int readScanChainInfo(char readflag) ;
344
 
345
 
346
};
347
 
348
#endif // EZIDEBUGPRJ_H

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.