File: qdltparser.h

package info (click to toggle)
dlt-viewer 2.23.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 7,432 kB
  • sloc: cpp: 27,832; ansic: 4,454; xml: 491; sh: 154; makefile: 75
file content (142 lines) | stat: -rw-r--r-- 3,539 bytes parent folder | download | duplicates (2)
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/**
 * @licence app begin@
 * Copyright (C) 2014  BMW AG
 *
 * This file is part of COVESA Project Dlt Viewer.
 *
 * Contributions are licensed to the COVESA Alliance under one or more
 * Contribution License Agreements.
 *
 * \copyright
 * This Source Code Form is subject to the terms of the
 * Mozilla Public License, v. 2.0. If a  copy of the MPL was not distributed with
 * this file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * \author
 * Alexander Wenzel <alexander.aw.wenzel@bmw.de>
 *
 * \file qdltparser.h
 * For further information see http://www.covesa.global/.
 * @licence end@
 */

#ifndef QDLTPARSER_H
#define QDLTPARSER_H

#include <QString>

#include <stdarg.h>
#include <stdint.h>

#include <QMap>
#include <QFile>

typedef int pid_t;
typedef unsigned int speed_t;

typedef float  float32_t;
typedef double float64_t;

class QDltCon
{
public:
       QDltCon() {  }

       QString conid;
       QString appid;
       QString description;
       QString context;
};

class QDltFibexPdu
{
public:
       QDltFibexPdu() { byteLength = 0; }

       QString id;
       QString description;
       int32_t byteLength;
       QString typeInfo;
};

class QDltFibexPduRef
{
public:
       QDltFibexPduRef() { ref = 0; }

       QString id;
       QDltFibexPdu *ref;
};

/**
* The structure of a Fibex Frame information.
*/
class QDltFibexFrame
{
public:
   QDltFibexFrame() { byteLength=0;messageType=0;pduRefCounter=0;id=0;lineNumber=0; }

       QString context;
       QString idString;
       uint32_t id;
       int32_t byteLength;
       uint8_t messageType;
       QString messageInfo;
       QString appid;
       QString ctid;
       QString filename;
       int lineNumber;

       QList<QDltFibexPdu*> pdureflist;
       QList<QDltFibexPduRef*> pdurefreflist;
       uint32_t pduRefCounter;
};

class QDltParser
{
public:
    QDltParser();

    void clear();

    bool parseFile(QString fileName);
    bool parseConfiguration(QString fileName);
    bool parseCheck();
    bool converteFile(QString fileName);

    QString getLastError() { return errorString; }

    QList<QDltFibexFrame*> getMessages() { return messages; }
    QMap<QString,QDltCon*> getContexts() { return contexts; }
    QMap<QString,QString> getApplications() { return applications; }
    QMap<QString,uint32_t> getMessageIds() { return messageIds; }

    bool checkDoubleIds(QString &text, bool perApplication);
    bool checkId(uint32_t startId, uint32_t endId, uint32_t &id);
    bool checkId(uint32_t startId,uint32_t endId,uint32_t &id, bool perApplication,QString appId);
    bool generateId(uint32_t startId, uint32_t endId, bool perApplication);

    bool writeFibex(QString &fileName);
    bool writeIdHeader(QString &directory, bool perApplication);
    bool writeCsv(QString &fileName);
    bool readFibex(QString &fileName);

private:

    bool parseContextsRegisterApp(QString text);
    bool parseContextsRegisterContext(QString text);
    bool parseMessageId(QString text);
    bool parseMessage(QFile &file, QFile &fileWrite, int &linecounter, QString text);
    QStringList parseMessageLine(QFile &file, QString &line, int &linecounter);
    void parseMessageStringList(QDltFibexFrame *frame,QFile &fileWrite,QStringList &list,bool withid);
    void parseMessageParameter(QString argtext,QDltFibexFrame *frame);

    QString errorString;
    QMap<QString,QString> applications;
    QMap<QString,QDltCon*> contexts;
    QMap<QString,uint32_t> messageIds;
    QList<QDltFibexFrame*> messages;

};

#endif // QDLTPARSER_H