Skip to content
This repository has been archived by the owner. It is now read-only.

Commit

Permalink
static method does not alter buffer
Browse files Browse the repository at this point in the history
  • Loading branch information
MPIBR-tushevg committed Jan 4, 2019
1 parent cb4445d commit 4ef04de
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 11 deletions.
35 changes: 25 additions & 10 deletions BrainATUMtome/serialpackage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,38 @@ SerialPackage::SerialPackage()
}


bool SerialPackage::parse(QString &message)
QString SerialPackage::parse(bool &ok, const QString &message)
{
QString buffer = message;

// clean message
message = message.simplified();
buffer = buffer.simplified();

if (message.at(0) == '!')
message.remove(0, 1);
if (buffer.at(0) == '!')
buffer.remove(0, 1);

// check for even size
if ((message.size() % 2) != 0)
return false;
if ((buffer.size() % 2) != 0)
ok = false;

// check received checksum
quint8 checksumReceived = 0;
if (!unpack(checksumReceived, buffer.mid(buffer.size() - 2, 2)))
ok = false;
ok = (checksumReceived == checksum(message));

// remove checksum from buffer
buffer.remove(buffer.size() - 2, 2);

return buffer;
}

// get received checksum
quint8 checksumReceived = static_cast<quint8>(QString("%1%2").arg(message.mid(message.size() - 2, 1), message.mid(message.size() - 1, 1)).toUInt(nullptr, 16));
message.remove(message.size() - 2, 2);

return (checksumReceived == checksum(message));
QString SerialPackage::package(const QString &message)
{
quint8 checksumValue = checksum(message);
QString checksumText = pack(checksumValue);
return '!' + message + checksumText + '\r';
}


Expand Down
3 changes: 2 additions & 1 deletion BrainATUMtome/serialpackage.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ class SerialPackage
public:
explicit SerialPackage();

static bool parse(QString &message);
static QString parse(bool &ok, const QString &message);
static QString package(const QString &message);

static quint8 address(const QString &message);
static quint8 command(const QString &message);
Expand Down

0 comments on commit 4ef04de

Please sign in to comment.