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
|