Squashed 'DCPlugin/' changes from 37f0012..ef48301

ef48301 Added dc_updatePrinterTemplate
5f7d34e implemented dc_updatePrinterTemplate
863e4b2 Added dc_updatePrinterTemplate

git-subtree-dir: DCPlugin
git-subtree-split: ef48301dad80ebce3db4764613bb7f183ef69485
This commit is contained in:
Gerhard Hoffmann 2023-04-13 13:39:17 +02:00
parent db8415cd3e
commit 1f0f7da128
3 changed files with 44 additions and 0 deletions

View File

@ -143,6 +143,10 @@ public:
bool dc_updateDC(QString binFileName, QString baudrate,
QString comPort) const override;
bool dc_updatePrinterTemplate(enum FileTypeJson type,
int templateNr,
QString const &fname) const override;
// ------------------------------------------------------------------------------
// Level 1, control device-controller (functions of µC)

View File

@ -305,6 +305,10 @@ public:
QString baudrate,
QString comPort) const = 0;
// download binary file down into device controller
virtual bool dc_updatePrinterTemplate(enum FileTypeJson type,
int templateNr,
QString const &fname) const = 0;
virtual void dc_autoRequest(bool on) const =0;
// on = true: select that all READ-Requests are sent automatically

View File

@ -11,6 +11,8 @@
#include <unistd.h>
#include <thread>
#include <QFileInfo>
#include "tslib.h"
#include "hwapi.h"
@ -404,6 +406,40 @@ bool hwapi::dc_updateDC(QString bFile, QString br, QString serial) const {
return true;
}
/******************************************************************************/
//
// LEVEL 3: hwapi::dc_updatePrinterTemplate
//
/******************************************************************************/
bool hwapi::dc_updatePrinterTemplate(enum FileTypeJson type,
int nrOfTemplate,
QString const &fname) const {
if ((type == FileTypeJson::PRINTER) &&
(nrOfTemplate >= 0 && nrOfTemplate <= 32)) {
int nTry = 50;
while (!sys_ready4sending()) { // wait max. 5 seconds
std::this_thread::sleep_for(std::chrono::milliseconds(100));
if (--nTry <= 0) {
return false;
}
}
QFile file(fname);
if (file.exists() && file.open(QIODevice::ReadOnly)) {
QByteArray ba = file.readAll();
if (ba.size() <= 800) { // max. size is 800 bytes
if (sys_sendJsonFileToDc((uint8_t)(type),
nrOfTemplate,
(uint8_t *)ba.data())) {
std::this_thread::sleep_for(std::chrono::seconds(1));
return true;
}
}
}
}
return false;
}
// ------------------------------------------------------------------------------
// Level 1, control device-controller (functions of µC)