Commit 5fa48362 authored by Pavel Vainerman's avatar Pavel Vainerman

(Modbus): дописал использование std::move для функций transport_msg().

parent a9671a84
...@@ -36,48 +36,48 @@ namespace MTR ...@@ -36,48 +36,48 @@ namespace MTR
mtT_Str8 mtT_Str8
}; };
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
std::string type2str( MTRType t ); /*!< преоразование строки в тип */ std::string type2str( MTRType t ); /*!< преоразование строки в тип */
MTRType str2type( const std::string& s ); /*!< преобразование названия в строку */ MTRType str2type( const std::string& s ); /*!< преобразование названия в строку */
int wsize( MTRType t ); /*!< длина данных в словах */ int wsize( MTRType t ); /*!< длина данных в словах */
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// Информация // Информация
const ModbusRTU::ModbusData regModelNumber = 0x01; const ModbusRTU::ModbusData regModelNumber = 0x01;
const ModbusRTU::ModbusData regSerialNumber = 0x09; const ModbusRTU::ModbusData regSerialNumber = 0x09;
std::string getModelNumber( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr ); std::string getModelNumber( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr );
std::string getSerialNumber( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr ); std::string getSerialNumber( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr );
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// Настройки связи (чтение - read03, запись - write06) // Настройки связи (чтение - read03, запись - write06)
const ModbusRTU::ModbusData regUpdateConfiguration = 53; const ModbusRTU::ModbusData regUpdateConfiguration = 53;
const ModbusRTU::ModbusData regAddress = 55; const ModbusRTU::ModbusData regAddress = 55;
const ModbusRTU::ModbusData regBaudRate = 56; const ModbusRTU::ModbusData regBaudRate = 56;
const ModbusRTU::ModbusData regStopBit = 57; /* 0 - Stop bit, 1 - Stop bits */ const ModbusRTU::ModbusData regStopBit = 57; /* 0 - Stop bit, 1 - Stop bits */
const ModbusRTU::ModbusData regParity = 58; const ModbusRTU::ModbusData regParity = 58;
const ModbusRTU::ModbusData regDataBits = 59; const ModbusRTU::ModbusData regDataBits = 59;
enum mtrBaudRate enum mtrBaudRate
{ {
br1200 = 0, br1200 = 0,
br2400 = 1, br2400 = 1,
br4800 = 2, br4800 = 2,
br9600 = 3, br9600 = 3,
br19200 = 4, br19200 = 4,
br38400 = 5, br38400 = 5,
br57600 = 6, br57600 = 6,
br115200 = 7 br115200 = 7
}; };
enum mtrParity enum mtrParity
{ {
mpNoParity = 0, mpNoParity = 0,
mpOddParity = 1, mpOddParity = 1,
mpEvenParity = 2 mpEvenParity = 2
}; };
enum mtrDataBits enum mtrDataBits
{ {
db8Bits = 0, db8Bits = 0,
db7Bits = 1 db7Bits = 1
}; };
bool setAddress( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusAddr newAddr ); bool setAddress( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusAddr newAddr );
...@@ -129,7 +129,7 @@ namespace MTR ...@@ -129,7 +129,7 @@ namespace MTR
static MTRType type(){ return mtT1; } static MTRType type(){ return mtT1; }
// ------------------------------------------ // ------------------------------------------
unsigned short val; unsigned short val;
}; };
std::ostream& operator<<(std::ostream& os, T1& t ); std::ostream& operator<<(std::ostream& os, T1& t );
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
class T2 class T2
...@@ -162,7 +162,7 @@ namespace MTR ...@@ -162,7 +162,7 @@ namespace MTR
// ------------------------------------------ // ------------------------------------------
// конструкторы на разные случаи... // конструкторы на разные случаи...
T3(){ memset(raw.v,0,sizeof(raw.v)); } T3(){ memset(raw.v,0,sizeof(raw.v)); }
T3( signed int i ){ raw.val = i; } T3( signed int i ){ raw.val = i; }
T3( unsigned short v1, unsigned short v2 ) T3( unsigned short v1, unsigned short v2 )
...@@ -170,7 +170,7 @@ namespace MTR ...@@ -170,7 +170,7 @@ namespace MTR
raw.v[0] = v1; raw.v[0] = v1;
raw.v[1] = v2; raw.v[1] = v2;
} }
T3( const ModbusRTU::ModbusData* data, int size ) T3( const ModbusRTU::ModbusData* data, int size )
{ {
if( size >= u2size ) if( size >= u2size )
...@@ -207,7 +207,7 @@ namespace MTR ...@@ -207,7 +207,7 @@ namespace MTR
memcpy(c,&v1,sizeof(c)); memcpy(c,&v1,sizeof(c));
sval = std::string(c); sval = std::string(c);
} }
T4( const ModbusRTU::ModbusData* data ): T4( const ModbusRTU::ModbusData* data ):
raw(data[0]) raw(data[0])
{ {
...@@ -215,7 +215,7 @@ namespace MTR ...@@ -215,7 +215,7 @@ namespace MTR
memcpy(c,&(data[0]),sizeof(c)); memcpy(c,&(data[0]),sizeof(c));
sval = std::string(c); sval = std::string(c);
} }
~T4(){} ~T4(){}
// ------------------------------------------ // ------------------------------------------
/*! размер в словах */ /*! размер в словах */
...@@ -257,7 +257,7 @@ namespace MTR ...@@ -257,7 +257,7 @@ namespace MTR
{ {
raw.lval = v; raw.lval = v;
} }
T5( const ModbusRTU::ModbusData* data, int size ) T5( const ModbusRTU::ModbusData* data, int size )
{ {
if( size >= u2size ) if( size >= u2size )
...@@ -310,7 +310,7 @@ namespace MTR ...@@ -310,7 +310,7 @@ namespace MTR
{ {
raw.lval = v; raw.lval = v;
} }
T6( const ModbusRTU::ModbusData* data, int size ) T6( const ModbusRTU::ModbusData* data, int size )
{ {
if( size >= u2size ) if( size >= u2size )
...@@ -363,7 +363,7 @@ namespace MTR ...@@ -363,7 +363,7 @@ namespace MTR
{ {
raw.lval = v; raw.lval = v;
} }
T7( const ModbusRTU::ModbusData* data, int size ) T7( const ModbusRTU::ModbusData* data, int size )
{ {
if( size >= u2size ) if( size >= u2size )
...@@ -421,7 +421,7 @@ namespace MTR ...@@ -421,7 +421,7 @@ namespace MTR
raw.v[0] = data[1]; raw.v[0] = data[1];
} }
} }
inline unsigned short day(){ return raw.u2.day; } inline unsigned short day(){ return raw.u2.day; }
inline unsigned short mon(){ return raw.u2.mon; } inline unsigned short mon(){ return raw.u2.mon; }
inline unsigned short hour(){ return raw.u2.hour; } inline unsigned short hour(){ return raw.u2.hour; }
...@@ -522,7 +522,7 @@ namespace MTR ...@@ -522,7 +522,7 @@ namespace MTR
raw.v[1] = data[0]; raw.v[1] = data[0];
} }
} }
inline unsigned short year(){ return raw.u2.year; } inline unsigned short year(){ return raw.u2.year; }
inline unsigned short mon(){ return raw.u2.mon; } inline unsigned short mon(){ return raw.u2.mon; }
inline unsigned short day(){ return raw.u2.day; } inline unsigned short day(){ return raw.u2.day; }
...@@ -538,7 +538,7 @@ namespace MTR ...@@ -538,7 +538,7 @@ namespace MTR
}; };
std::ostream& operator<<(std::ostream& os, T10& t ); std::ostream& operator<<(std::ostream& os, T10& t );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class T16 class T16
{ {
public: public:
...@@ -650,7 +650,7 @@ namespace MTR ...@@ -650,7 +650,7 @@ namespace MTR
// ------------------------------------------ // ------------------------------------------
operator float(){ return raw.val; } operator float(){ return raw.val; }
operator long(){ return lroundf(raw.val); } operator long(){ return lroundf(raw.val); }
F1mem raw; F1mem raw;
}; };
std::ostream& operator<<(std::ostream& os, F1& t ); std::ostream& operator<<(std::ostream& os, F1& t );
......
...@@ -175,16 +175,16 @@ namespace ModbusRTU ...@@ -175,16 +175,16 @@ namespace ModbusRTU
{ {
ModbusByte ecode; ModbusByte ecode;
ModbusCRC crc; ModbusCRC crc;
// ------- from slave ------- // ------- from slave -------
ErrorRetMessage( ModbusMessage& m ); ErrorRetMessage( ModbusMessage& m );
ErrorRetMessage& operator=( ModbusMessage& m ); ErrorRetMessage& operator=( ModbusMessage& m );
void init( ModbusMessage& m ); void init( ModbusMessage& m );
// ------- to master ------- // ------- to master -------
ErrorRetMessage( ModbusAddr _from, ModbusByte _func, ModbusByte ecode ); ErrorRetMessage( ModbusAddr _from, ModbusByte _func, ModbusByte ecode );
/*! преобразование для посылки в сеть */ /*! преобразование для посылки в сеть */
ModbusMessage transport_msg(); ModbusMessage transport_msg();
/*! размер данных(после заголовка) у данного типа сообщения /*! размер данных(после заголовка) у данного типа сообщения
......
...@@ -260,7 +260,7 @@ ModbusMessage ErrorRetMessage::transport_msg() ...@@ -260,7 +260,7 @@ ModbusMessage ErrorRetMessage::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = ind; // szData(); mm.len = ind; // szData();
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
std::ostream& ModbusRTU::operator<<(std::ostream& os, ErrorRetMessage& m ) std::ostream& ModbusRTU::operator<<(std::ostream& os, ErrorRetMessage& m )
...@@ -309,7 +309,7 @@ ModbusMessage ReadCoilMessage::transport_msg() ...@@ -309,7 +309,7 @@ ModbusMessage ReadCoilMessage::transport_msg()
memcpy(&(mm.data[last]),&crc,szCRC); memcpy(&(mm.data[last]),&crc,szCRC);
mm.len = szData(); mm.len = szData();
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
ReadCoilMessage::ReadCoilMessage( ModbusMessage& m ) ReadCoilMessage::ReadCoilMessage( ModbusMessage& m )
...@@ -434,7 +434,7 @@ ModbusData DataBits16::mdata() ...@@ -434,7 +434,7 @@ ModbusData DataBits16::mdata()
udata |= 1<<i; udata |= 1<<i;
} }
return udata; return std::move(udata);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
const DataBits16& DataBits16::operator=( const ModbusData& r ) const DataBits16& DataBits16::operator=( const ModbusData& r )
...@@ -568,7 +568,7 @@ ModbusMessage ReadCoilRetMessage::transport_msg() ...@@ -568,7 +568,7 @@ ModbusMessage ReadCoilRetMessage::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = ind; mm.len = ind;
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
size_t ReadCoilRetMessage::szData() size_t ReadCoilRetMessage::szData()
...@@ -620,7 +620,7 @@ ModbusMessage ReadInputStatusMessage::transport_msg() ...@@ -620,7 +620,7 @@ ModbusMessage ReadInputStatusMessage::transport_msg()
memcpy(&(mm.data[last]),&crc,szCRC); memcpy(&(mm.data[last]),&crc,szCRC);
mm.len = szData(); mm.len = szData();
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
ReadInputStatusMessage::ReadInputStatusMessage( ModbusMessage& m ) ReadInputStatusMessage::ReadInputStatusMessage( ModbusMessage& m )
...@@ -768,7 +768,7 @@ ModbusMessage ReadInputStatusRetMessage::transport_msg() ...@@ -768,7 +768,7 @@ ModbusMessage ReadInputStatusRetMessage::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = ind; mm.len = ind;
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
size_t ReadInputStatusRetMessage::szData() size_t ReadInputStatusRetMessage::szData()
...@@ -823,7 +823,7 @@ ModbusMessage ReadOutputMessage::transport_msg() ...@@ -823,7 +823,7 @@ ModbusMessage ReadOutputMessage::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = szData(); mm.len = szData();
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
ReadOutputMessage::ReadOutputMessage( ModbusMessage& m ) ReadOutputMessage::ReadOutputMessage( ModbusMessage& m )
...@@ -950,10 +950,10 @@ ModbusMessage ReadOutputRetMessage::transport_msg() ...@@ -950,10 +950,10 @@ ModbusMessage ReadOutputRetMessage::transport_msg()
// копируем заголовок и данные // копируем заголовок и данные
memcpy(&mm,this,szModbusHeader); memcpy(&mm,this,szModbusHeader);
int ind=0; int ind=0;
bcnt = count*sizeof(ModbusData); bcnt = count*sizeof(ModbusData);
// copy bcnt // copy bcnt
memcpy(&mm.data,&bcnt,sizeof(bcnt)); memcpy(&mm.data,&bcnt,sizeof(bcnt));
ind+=sizeof(bcnt); ind+=sizeof(bcnt);
...@@ -979,7 +979,7 @@ ModbusMessage ReadOutputRetMessage::transport_msg() ...@@ -979,7 +979,7 @@ ModbusMessage ReadOutputRetMessage::transport_msg()
ModbusData crc = checkCRC( (ModbusByte*)(&mm), szModbusHeader+sizeof(bcnt)+bcnt ); ModbusData crc = checkCRC( (ModbusByte*)(&mm), szModbusHeader+sizeof(bcnt)+bcnt );
// crc = SWAPSHORT(crc); // crc = SWAPSHORT(crc);
// копируем CRC (последний элемент). Без переворачивания... // копируем CRC (последний элемент). Без переворачивания...
memcpy(&(mm.data[ind]),&crc,szCRC); memcpy(&(mm.data[ind]),&crc,szCRC);
ind+=szCRC; ind+=szCRC;
...@@ -987,7 +987,7 @@ ModbusMessage ReadOutputRetMessage::transport_msg() ...@@ -987,7 +987,7 @@ ModbusMessage ReadOutputRetMessage::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = ind; mm.len = ind;
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
size_t ReadOutputRetMessage::szData() size_t ReadOutputRetMessage::szData()
...@@ -1007,8 +1007,6 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, ReadOutputRetMessage* m ) ...@@ -1007,8 +1007,6 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, ReadOutputRetMessage* m )
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadInputMessage::ReadInputMessage( ModbusAddr a, ModbusData s, ModbusData c ): ReadInputMessage::ReadInputMessage( ModbusAddr a, ModbusData s, ModbusData c ):
start(s), start(s),
count(c) count(c)
...@@ -1042,7 +1040,7 @@ ModbusMessage ReadInputMessage::transport_msg() ...@@ -1042,7 +1040,7 @@ ModbusMessage ReadInputMessage::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = szData(); mm.len = szData();
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
ReadInputMessage::ReadInputMessage( ModbusMessage& m ) ReadInputMessage::ReadInputMessage( ModbusMessage& m )
...@@ -1062,7 +1060,7 @@ void ReadInputMessage::init( ModbusMessage& m ) ...@@ -1062,7 +1060,7 @@ void ReadInputMessage::init( ModbusMessage& m )
assert( m.func == fnReadInputRegisters ); assert( m.func == fnReadInputRegisters );
memset(this,0,sizeof(*this)); memset(this,0,sizeof(*this));
memcpy(this,&m,sizeof(*this)); // m.len memcpy(this,&m,sizeof(*this)); // m.len
// переворачиваем слова // переворачиваем слова
start = SWAPSHORT(start); start = SWAPSHORT(start);
count = SWAPSHORT(count); count = SWAPSHORT(count);
...@@ -1166,10 +1164,10 @@ ModbusMessage ReadInputRetMessage::transport_msg() ...@@ -1166,10 +1164,10 @@ ModbusMessage ReadInputRetMessage::transport_msg()
// копируем заголовок и данные // копируем заголовок и данные
memcpy(&mm,this,szModbusHeader); memcpy(&mm,this,szModbusHeader);
int ind=0; int ind=0;
bcnt = count*sizeof(ModbusData); bcnt = count*sizeof(ModbusData);
// copy bcnt // copy bcnt
memcpy(&mm.data,&bcnt,sizeof(bcnt)); memcpy(&mm.data,&bcnt,sizeof(bcnt));
ind+=sizeof(bcnt); ind+=sizeof(bcnt);
...@@ -1195,7 +1193,7 @@ ModbusMessage ReadInputRetMessage::transport_msg() ...@@ -1195,7 +1193,7 @@ ModbusMessage ReadInputRetMessage::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = ind; mm.len = ind;
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
size_t ReadInputRetMessage::szData() size_t ReadInputRetMessage::szData()
...@@ -1289,7 +1287,7 @@ ModbusMessage ForceCoilsMessage::transport_msg() ...@@ -1289,7 +1287,7 @@ ModbusMessage ForceCoilsMessage::transport_msg()
// копируем заголовок // копируем заголовок
memcpy(&mm,this,szModbusHeader); memcpy(&mm,this,szModbusHeader);
int ind = 0; int ind = 0;
// данные (переворачиваем байты) // данные (переворачиваем байты)
...@@ -1317,7 +1315,7 @@ ModbusMessage ForceCoilsMessage::transport_msg() ...@@ -1317,7 +1315,7 @@ ModbusMessage ForceCoilsMessage::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = ind; mm.len = ind;
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
...@@ -1477,7 +1475,7 @@ ModbusMessage ForceCoilsRetMessage::transport_msg() ...@@ -1477,7 +1475,7 @@ ModbusMessage ForceCoilsRetMessage::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = szData(); mm.len = szData();
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
std::ostream& ModbusRTU::operator<<(std::ostream& os, ForceCoilsRetMessage& m ) std::ostream& ModbusRTU::operator<<(std::ostream& os, ForceCoilsRetMessage& m )
...@@ -1524,7 +1522,7 @@ ModbusMessage WriteOutputMessage::transport_msg() ...@@ -1524,7 +1522,7 @@ ModbusMessage WriteOutputMessage::transport_msg()
// копируем заголовок // копируем заголовок
memcpy(&mm,this,szModbusHeader); memcpy(&mm,this,szModbusHeader);
int ind = 0; int ind = 0;
// данные (переворачиваем байты) // данные (переворачиваем байты)
...@@ -1559,7 +1557,7 @@ ModbusMessage WriteOutputMessage::transport_msg() ...@@ -1559,7 +1557,7 @@ ModbusMessage WriteOutputMessage::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = ind; mm.len = ind;
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
...@@ -1734,7 +1732,7 @@ ModbusMessage WriteOutputRetMessage::transport_msg() ...@@ -1734,7 +1732,7 @@ ModbusMessage WriteOutputRetMessage::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = szData(); mm.len = szData();
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
std::ostream& ModbusRTU::operator<<(std::ostream& os, WriteOutputRetMessage& m ) std::ostream& ModbusRTU::operator<<(std::ostream& os, WriteOutputRetMessage& m )
...@@ -1766,9 +1764,9 @@ ModbusMessage ForceSingleCoilMessage::transport_msg() ...@@ -1766,9 +1764,9 @@ ModbusMessage ForceSingleCoilMessage::transport_msg()
// пересчитываем CRC по перевёрнутым данным // пересчитываем CRC по перевёрнутым данным
ModbusData crc = checkCRC( (ModbusByte*)(&mm), szModbusHeader+last ); ModbusData crc = checkCRC( (ModbusByte*)(&mm), szModbusHeader+last );
// копируем CRC (последний элемент). Без переворачивания... // копируем CRC (последний элемент). Без переворачивания...
memcpy(&(mm.data[last]),&crc,szCRC); memcpy(&(mm.data[last]),&crc,szCRC);
mm.len = szData(); mm.len = szData();
return mm; return std::move(mm);
} }
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
...@@ -1904,7 +1902,7 @@ ModbusMessage ForceSingleCoilRetMessage::transport_msg() ...@@ -1904,7 +1902,7 @@ ModbusMessage ForceSingleCoilRetMessage::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = szData(); mm.len = szData();
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
std::ostream& ModbusRTU::operator<<(std::ostream& os, ForceSingleCoilRetMessage& m ) std::ostream& ModbusRTU::operator<<(std::ostream& os, ForceSingleCoilRetMessage& m )
...@@ -1937,9 +1935,9 @@ ModbusMessage WriteSingleOutputMessage::transport_msg() ...@@ -1937,9 +1935,9 @@ ModbusMessage WriteSingleOutputMessage::transport_msg()
// пересчитываем CRC по перевёрнутым данным // пересчитываем CRC по перевёрнутым данным
ModbusData crc = checkCRC( (ModbusByte*)(&mm), szModbusHeader+last ); ModbusData crc = checkCRC( (ModbusByte*)(&mm), szModbusHeader+last );
// копируем CRC (последний элемент). Без переворачивания... // копируем CRC (последний элемент). Без переворачивания...
memcpy(&(mm.data[last]),&crc,szCRC); memcpy(&(mm.data[last]),&crc,szCRC);
mm.len = szData(); mm.len = szData();
return mm; return std::move(mm);
} }
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
...@@ -2077,12 +2075,12 @@ ModbusMessage WriteSingleOutputRetMessage::transport_msg() ...@@ -2077,12 +2075,12 @@ ModbusMessage WriteSingleOutputRetMessage::transport_msg()
ModbusData crc = checkCRC( (ModbusByte*)(&mm), szModbusHeader+sizeof(d) ); ModbusData crc = checkCRC( (ModbusByte*)(&mm), szModbusHeader+sizeof(d) );
// копируем CRC (последний элемент). Без переворачивания... // копируем CRC (последний элемент). Без переворачивания...
memcpy(&(mm.data[last]),&crc,szCRC); memcpy(&(mm.data[last]),&crc,szCRC);
// длина сообщения... // длина сообщения...
mm.len = szData(); mm.len = szData();
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
std::ostream& ModbusRTU::operator<<(std::ostream& os, WriteSingleOutputRetMessage& m ) std::ostream& ModbusRTU::operator<<(std::ostream& os, WriteSingleOutputRetMessage& m )
...@@ -2236,7 +2234,7 @@ ModbusMessage DiagnosticMessage::transport_msg() ...@@ -2236,7 +2234,7 @@ ModbusMessage DiagnosticMessage::transport_msg()
// копируем заголовок и данные // копируем заголовок и данные
memcpy(&mm,this,szModbusHeader); memcpy(&mm,this,szModbusHeader);
int ind=0; int ind=0;
// copy bcnt // copy bcnt
ModbusData d = SWAPSHORT(subf); ModbusData d = SWAPSHORT(subf);
...@@ -2264,7 +2262,7 @@ ModbusMessage DiagnosticMessage::transport_msg() ...@@ -2264,7 +2262,7 @@ ModbusMessage DiagnosticMessage::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = szData(); mm.len = szData();
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
size_t DiagnosticMessage::szData() size_t DiagnosticMessage::szData()
...@@ -2360,7 +2358,7 @@ ModbusMessage MEIMessageRDI::transport_msg() ...@@ -2360,7 +2358,7 @@ ModbusMessage MEIMessageRDI::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = szData(); mm.len = szData();
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
...@@ -2566,7 +2564,7 @@ ModbusMessage MEIMessageRetRDI::transport_msg() ...@@ -2566,7 +2564,7 @@ ModbusMessage MEIMessageRetRDI::transport_msg()
// копируем заголовок и данные // копируем заголовок и данные
memcpy(&mm,this,szModbusHeader); memcpy(&mm,this,szModbusHeader);
mm.data[0] = type; mm.data[0] = type;
mm.data[1] = devID; mm.data[1] = devID;
mm.data[2] = conformity; mm.data[2] = conformity;
...@@ -2593,7 +2591,7 @@ ModbusMessage MEIMessageRetRDI::transport_msg() ...@@ -2593,7 +2591,7 @@ ModbusMessage MEIMessageRetRDI::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = ind; mm.len = ind;
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
size_t MEIMessageRetRDI::szData() size_t MEIMessageRetRDI::szData()
...@@ -2727,10 +2725,10 @@ ModbusMessage JournalCommandRetMessage::transport_msg() ...@@ -2727,10 +2725,10 @@ ModbusMessage JournalCommandRetMessage::transport_msg()
// копируем заголовок и данные // копируем заголовок и данные
memcpy(&mm,this,szModbusHeader); memcpy(&mm,this,szModbusHeader);
int ind = 0; int ind = 0;
bcnt = count*sizeof(ModbusData); bcnt = count*sizeof(ModbusData);
// copy bcnt // copy bcnt
memcpy(&mm.data,&bcnt,sizeof(bcnt)); memcpy(&mm.data,&bcnt,sizeof(bcnt));
ind += sizeof(bcnt); ind += sizeof(bcnt);
...@@ -2759,7 +2757,7 @@ ModbusMessage JournalCommandRetMessage::transport_msg() ...@@ -2759,7 +2757,7 @@ ModbusMessage JournalCommandRetMessage::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = ind; mm.len = ind;
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
size_t JournalCommandRetMessage::szData() size_t JournalCommandRetMessage::szData()
...@@ -2982,7 +2980,7 @@ ModbusMessage SetDateTimeMessage::transport_msg() ...@@ -2982,7 +2980,7 @@ ModbusMessage SetDateTimeMessage::transport_msg()
// копируем заголовок и данные // копируем заголовок и данные
memcpy(&mm,this,szModbusHeader); memcpy(&mm,this,szModbusHeader);
/* /*
mm.data[0] = hour; mm.data[0] = hour;
mm.data[1] = min; mm.data[1] = min;
mm.data[2] = sec; mm.data[2] = sec;
...@@ -3000,7 +2998,7 @@ ModbusMessage SetDateTimeMessage::transport_msg() ...@@ -3000,7 +2998,7 @@ ModbusMessage SetDateTimeMessage::transport_msg()
memcpy(&(mm.data[bcnt]),&crc,szCRC); memcpy(&(mm.data[bcnt]),&crc,szCRC);
// длина сообщения... // длина сообщения...
mm.len = szData(); // bcnt + szCRC mm.len = szData(); // bcnt + szCRC
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
SetDateTimeRetMessage::SetDateTimeRetMessage( ModbusMessage& m ) SetDateTimeRetMessage::SetDateTimeRetMessage( ModbusMessage& m )
...@@ -3056,7 +3054,7 @@ ModbusMessage SetDateTimeRetMessage::transport_msg() ...@@ -3056,7 +3054,7 @@ ModbusMessage SetDateTimeRetMessage::transport_msg()
// копируем заголовок и данные // копируем заголовок и данные
memcpy(&mm,this,szModbusHeader); memcpy(&mm,this,szModbusHeader);
/* /*
mm.data[0] = hour; mm.data[0] = hour;
mm.data[1] = min; mm.data[1] = min;
mm.data[2] = sec; mm.data[2] = sec;
...@@ -3077,7 +3075,7 @@ ModbusMessage SetDateTimeRetMessage::transport_msg() ...@@ -3077,7 +3075,7 @@ ModbusMessage SetDateTimeRetMessage::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = szData(); // bcnt + szCRC mm.len = szData(); // bcnt + szCRC
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
RemoteServiceMessage::RemoteServiceMessage( ModbusMessage& m ) RemoteServiceMessage::RemoteServiceMessage( ModbusMessage& m )
...@@ -3176,7 +3174,7 @@ ModbusMessage RemoteServiceRetMessage::transport_msg() ...@@ -3176,7 +3174,7 @@ ModbusMessage RemoteServiceRetMessage::transport_msg()
// копируем заголовок и данные // копируем заголовок и данные
memcpy(&mm,this,szModbusHeader); memcpy(&mm,this,szModbusHeader);
int ind = 0; int ind = 0;
bcnt = count*sizeof(ModbusByte); bcnt = count*sizeof(ModbusByte);
...@@ -3199,7 +3197,7 @@ ModbusMessage RemoteServiceRetMessage::transport_msg() ...@@ -3199,7 +3197,7 @@ ModbusMessage RemoteServiceRetMessage::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = ind; mm.len = ind;
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
ReadFileRecordMessage::ReadFileRecordMessage( ModbusMessage& m ) ReadFileRecordMessage::ReadFileRecordMessage( ModbusMessage& m )
...@@ -3305,7 +3303,7 @@ ModbusMessage FileTransferMessage::transport_msg() ...@@ -3305,7 +3303,7 @@ ModbusMessage FileTransferMessage::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = szData(); mm.len = szData();
return mm; return std::move(mm);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
FileTransferMessage::FileTransferMessage( ModbusMessage& m ) FileTransferMessage::FileTransferMessage( ModbusMessage& m )
...@@ -3433,7 +3431,7 @@ ModbusMessage FileTransferRetMessage::transport_msg() ...@@ -3433,7 +3431,7 @@ ModbusMessage FileTransferRetMessage::transport_msg()
// копируем заголовок и данные // копируем заголовок и данные
memcpy(&mm,this,szModbusHeader); memcpy(&mm,this,szModbusHeader);
int ind = 0; int ind = 0;
bcnt = szData() - szCRC - 1; // -1 - это сам байт содержащий количество байт (bcnt)... bcnt = szData() - szCRC - 1; // -1 - это сам байт содержащий количество байт (bcnt)...
...@@ -3465,7 +3463,7 @@ ModbusMessage FileTransferRetMessage::transport_msg() ...@@ -3465,7 +3463,7 @@ ModbusMessage FileTransferRetMessage::transport_msg()
// длина сообщения... // длина сообщения...
mm.len = ind; mm.len = ind;
return mm; return std::move(mm);
} }
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
std::ostream& ModbusRTU::operator<<(std::ostream& os, FileTransferRetMessage& m ) std::ostream& ModbusRTU::operator<<(std::ostream& os, FileTransferRetMessage& m )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment