/*
 * DataToSend.h
 *
 *  Created on: 19 января 2022 г.
 *      Author: Igor
 */
 //---------------------------------------------------------------------------
#ifndef DATATOSEND_H_
#define DATATOSEND_H_
 //---------------------------------------------------------------------------
#include <cstdlib>
#include <cstring>
#include <string>
//---------------------------------------------------------------------------
//Для организации FIFO буфера отправки данных в терминал из разных потоков
class DataToSend
{
public:
	static int uid;

	int id;				//
	char mas[65535];	//Буфер для отправки
	int len;			//Длина всех байт в массиве mas
	int pos;			//Позиция в которую записываются данные

	DataToSend* child;
	std::string log_text; //Текст который будет записан при логировании

	DataToSend() {
		id = uid++;
		memset(mas, 0, sizeof(mas));
		len = 0;
		pos = 0;
		child = NULL;
	};
	
	int addStringTag(int tag, std::string data); //Добавить строковый тег в массив
	int addUIntTag(int tag, unsigned int data);
	int addChar(char ch);
	int addUChar(unsigned char ch);

	void calcCRC(); //Посчитать CRC и записать в последний байт (len - 1)
};
//---------------------------------------------------------------------------
#endif