first release of translation facility

* runtime - loading and translating
 * design-time - works with *.ts file (pip_tr utility)
 * compile-time - CMake macro for compile *.ts
This commit is contained in:
2024-11-05 13:49:00 +03:00
parent 73ed51e3d4
commit 57f8c1313e
52 changed files with 1571 additions and 480 deletions

View File

@@ -21,9 +21,12 @@
#include "piliterals_time.h"
#include "pitime.h"
#include "pitranslator.h"
const uint PIBaseTransfer::signature = 0x54424950;
PIBaseTransfer::PIBaseTransfer(): crc(standardCRC_16()), diag(false) {
header.sig = signature;
crc_enabled = true;
@@ -96,7 +99,7 @@ void PIBaseTransfer::received(PIByteArray data) {
data >> h;
PacketType pt = (PacketType)h.type;
if (!h.check_sig()) {
piCoutObj << "invalid packet signature";
piCoutObj << "invalid packet signature"_tr("PIBaseTransfer");
diag.received(data.size(), false);
return;
} else
@@ -119,7 +122,7 @@ void PIBaseTransfer::received(PIByteArray data) {
ccrc = 0;
if (rcrc != ccrc) {
header.id = h.id;
piCoutObj << "invalid CRC";
piCoutObj << "invalid CRC"_tr("PIBaseTransfer");
sendReply(pt_ReplyInvalid);
} else {
mutex_session.lock();
@@ -170,9 +173,9 @@ void PIBaseTransfer::received(PIByteArray data) {
if (send_up > 20 && send_up > packets_count * 2) packets_count += piMaxi(packets_count / 10, 1);
// piCoutObj << packets_count;
} else
piCoutObj << "invalid reply id";
piCoutObj << "invalid reply id"_tr("PIBaseTransfer");
mutex_session.unlock();
// piCoutObj << "Done Packet" << h.id;
// piCoutObj << "Done Packet" << h.id;
}
if (is_receiving && h.id == 0) {
if (pt == pt_ReplySuccess) {
@@ -213,7 +216,7 @@ void PIBaseTransfer::received(PIByteArray data) {
}
if (is_receiving) {
if (header.session_id != h.session_id) {
piCoutObj << "restart receive";
piCoutObj << "restart receive"_tr("PIBaseTransfer");
mutex_header.unlock();
finish_receive(false, true);
} else {
@@ -344,7 +347,7 @@ bool PIBaseTransfer::send_process() {
mutex_send.unlock();
if (break_) return finish_send(false);
}
// piCoutObj << "send done, checking";
// piCoutObj << "send done, checking";
PITimeMeasurer rtm;
int prev_chk = 0;
mutex_send.lock();
@@ -516,7 +519,7 @@ bool PIBaseTransfer::getStartRequest() {
diag.sended(ba.size_s());
sendRequest(ba);
if (break_) return false;
// piCoutObj << replies[0];
// piCoutObj << replies[0];
mutex_session.lock();
if (replies[0] == pt_ReplySuccess) {
state_string = "send permited!";
@@ -532,7 +535,7 @@ bool PIBaseTransfer::getStartRequest() {
void PIBaseTransfer::processData(int id, PIByteArray & data) {
// piCoutObj << "received packet" << id << ", size" << data.size();
// piCoutObj << "received packet" << id << ", size" << data.size();
if (id < 1 || id > replies.size_s()) return;
if (!session[id - 1].isEmpty()) {
header.id = id;
@@ -595,7 +598,7 @@ PIByteArray PIBaseTransfer::build_packet(int id) {
hdr << header;
mutex_header.unlock();
ret.insert(0, hdr);
// piCoutObj << "Send Packet" << header.id << ret.size();
// piCoutObj << "Send Packet" << header.id << ret.size();
return ret;
}