@@ -3923,12 +3923,9 @@ void MainWindow::readyRead()
3923
3923
3924
3924
}
3925
3925
3926
- void MainWindow::writeDLTMessageToFile (QByteArray &bufferHeader,char * bufferPayload,quint32 bufferPayloadSize,EcuItem* ecuitem,quint32 sec,quint32 usec)
3927
- {
3928
- const auto timestamp =
3929
- (sec || usec) ? std::optional<QDltImporter::DltStorageHeaderTimestamp>({sec, usec}) : std::nullopt;
3930
- DltStorageHeader str = QDltImporter::makeDltStorageHeader (timestamp);
3931
-
3926
+ void MainWindow::writeDLTMessageToFile (const QByteArray& bufferHeader, std::string_view payload,
3927
+ const EcuItem* ecuitem) {
3928
+ DltStorageHeader str = QDltImporter::makeDltStorageHeader ();
3932
3929
if (ecuitem)
3933
3930
dlt_set_id (str.ecu , ecuitem->id .toLatin1 ());
3934
3931
@@ -3946,7 +3943,7 @@ void MainWindow::writeDLTMessageToFile(QByteArray &bufferHeader,char* bufferPayl
3946
3943
if ( settings->splitlogfile != 0 ) // only in case the file size limit checking is active ...
3947
3944
{
3948
3945
// check if files size limit reached ( see Settings->Project Other->Maximum File Size )
3949
- if ( ( ((outputfile.size ()+sizeof (DltStorageHeader)+bufferHeader.size ()+bufferPayloadSize )) > settings->fmaxFileSizeMB *1000 *1000 ) )
3946
+ if ( ( ((outputfile.size ()+sizeof (DltStorageHeader)+bufferHeader.size ()+ payload. size () )) > settings->fmaxFileSizeMB *1000 *1000 ) )
3950
3947
{
3951
3948
createsplitfile ();
3952
3949
}
@@ -3974,10 +3971,9 @@ void MainWindow::writeDLTMessageToFile(QByteArray &bufferHeader,char* bufferPayl
3974
3971
outputfile.write (ecuitem->id .toLatin1 (),ecuitem->id .length ());
3975
3972
}
3976
3973
outputfile.write (bufferHeader);
3977
- outputfile.write (bufferPayload,bufferPayloadSize );
3974
+ outputfile.write (payload. data (), payload. size () );
3978
3975
outputfile.flush ();
3979
3976
outputfile.close ();
3980
-
3981
3977
}
3982
3978
3983
3979
void MainWindow::read (EcuItem* ecuitem)
@@ -4010,8 +4006,8 @@ void MainWindow::read(EcuItem* ecuitem)
4010
4006
bytesRcvd = ecuitem->udpsocket .readDatagram ( data.data (), data.size () );
4011
4007
// qDebug() << "bytes received" << bytesRcvd;
4012
4008
unsigned int dataSize = data.size ();
4013
- char * dataPtr = data.data ();
4014
- // Find one ore more DLT messages in the UDP message
4009
+ const char * dataPtr = data.data ();
4010
+ // Find one or more DLT messages in the UDP message
4015
4011
while (dataSize>0 )
4016
4012
{
4017
4013
quint32 sizeMsg = qmsg.checkMsgSize (dataPtr,dataSize,settings->supportDLTv2Decoding );
@@ -4031,13 +4027,13 @@ void MainWindow::read(EcuItem* ecuitem)
4031
4027
}
4032
4028
if (qfile.checkFilter (qmsg))
4033
4029
{
4034
- writeDLTMessageToFile (empty,dataPtr,sizeMsg, ecuitem);
4030
+ writeDLTMessageToFile (empty,{ dataPtr,sizeMsg}, ecuitem);
4035
4031
}
4036
4032
}
4037
4033
else
4038
4034
{
4039
4035
// write all messages
4040
- writeDLTMessageToFile (empty,dataPtr,sizeMsg, ecuitem);
4036
+ writeDLTMessageToFile (empty, { dataPtr,sizeMsg}, ecuitem);
4041
4037
}
4042
4038
totalBytesRcvd+=sizeMsg;
4043
4039
if (sizeMsg<=dataSize)
@@ -4102,10 +4098,8 @@ void MainWindow::read(EcuItem* ecuitem)
4102
4098
}
4103
4099
4104
4100
/* write message to file */
4105
- QByteArray bufferHeader;
4106
- QByteArray bufferPayload;
4107
- bufferHeader = qmsg.getHeader ();
4108
- bufferPayload = qmsg.getPayload ();
4101
+ const QByteArray bufferHeader = qmsg.getHeader ();
4102
+ const QByteArray bufferPayload = qmsg.getPayload ();
4109
4103
if (settings->loggingOnlyFilteredMessages )
4110
4104
{
4111
4105
// write only messages which match filter
@@ -4116,13 +4110,21 @@ void MainWindow::read(EcuItem* ecuitem)
4116
4110
}
4117
4111
if (qfile.checkFilter (qmsg))
4118
4112
{
4119
- writeDLTMessageToFile (bufferHeader,bufferPayload.data (),bufferPayload.size (),ecuitem);
4113
+ writeDLTMessageToFile (
4114
+ bufferHeader,
4115
+ {bufferPayload.data (),
4116
+ static_cast <std::string_view::size_type>(bufferPayload.size ())},
4117
+ ecuitem);
4120
4118
}
4121
4119
}
4122
4120
else
4123
4121
{
4124
4122
// write all messages
4125
- writeDLTMessageToFile (bufferHeader,bufferPayload.data (),bufferPayload.size (),ecuitem);
4123
+ writeDLTMessageToFile (
4124
+ bufferHeader,
4125
+ {bufferPayload.data (),
4126
+ static_cast <std::string_view::size_type>(bufferPayload.size ())},
4127
+ ecuitem);
4126
4128
}
4127
4129
4128
4130
} // end while
0 commit comments