You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

863 lines
23 KiB
C++

/*
* RUBUSCell.cpp
*
* Author: Aleksey Gerasimenko
* gerasimenko.aleksey.n@gmail.com
*/
#include "MODBUSRTU/RUBUSRegister.h"
namespace MODBUSRTU
{
//CONSTRUCTOR
RUBUSRegister::RUBUSRegister():
m_index(0),
m_is_read_only(true),
m_param(0),
m_type(MODBUSRTU::RUBUS_UNDEFINED)
{}//CONSTRUCTOR
RUBUSRegister::RUBUSRegister(const RUBUSRegister& copyregister):
m_index(copyregister.m_index),
m_is_read_only(copyregister.m_is_read_only),
m_param(copyregister.m_param),
m_type(copyregister.m_type)
{}
void RUBUSRegister::register_bool (uint16_t index, uint16_t readonly, bool* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BOOL;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_float (uint16_t index, uint16_t readonly, float* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_FLOAT;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_uint8 (uint16_t index, uint16_t readonly, uint8_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_UINT8;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_uint16(uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_UINT16;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_uint32(uint16_t index, uint16_t readonly, uint32_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_UINT32;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_int8 (uint16_t index, uint16_t readonly, int8_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_INT8;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_int16 (uint16_t index, uint16_t readonly, int16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_INT16;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_int32 (uint16_t index, uint16_t readonly, int32_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_INT32;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit0 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT0;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit1 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT1;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit2 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT2;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit3 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT3;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit4 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT4;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit5 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT5;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit6 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT6;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit7 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT7;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit8 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT8;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit9 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT9;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit10 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT10;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit11 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT11;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit12 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT12;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit13 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT13;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit14 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT14;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit15 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT15;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit16 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT16;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit17 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT17;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit18 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT18;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit19 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT19;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit20 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT20;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit21 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT21;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit22 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT22;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit23 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT23;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit24 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT24;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit25 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT25;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit26 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT26;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit27 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT27;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit28 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT28;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit29 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT29;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit30 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT30;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
void RUBUSRegister::register_bit31 (uint16_t index, uint16_t readonly, uint16_t* param)
{
m_index = index;
m_param = param;
m_type = MODBUSRTU::RUBUS_BIT31;
m_is_read_only = readonly == 0 ? false : true;
//
}//
//
uint16_t RUBUSRegister::get_index()
{
return m_index;
//
}//
//
bool RUBUSRegister::is_read_only()
{
return m_is_read_only;
}//
//
MODBUSRTU::rubus_variant_type_t RUBUSRegister::get_type()
{
return m_type;
//
}//
//
MODBUSRTU::RUBUS_REGISTER_32 RUBUSRegister::read_register()
{
MODBUSRTU::RUBUS_REGISTER_32 _temp = MODBUSRTU::RUBUS_REGISTER_32(0);
_temp.word.wL.all = 0x0000;
_temp.word.wH.all = 0x0000;
switch(m_type)
{
case MODBUSRTU::RUBUS_BOOL: { _temp.b = *((bool*) m_param); break;}
case MODBUSRTU::RUBUS_FLOAT: { _temp.f = *((float*) m_param); break;}
case MODBUSRTU::RUBUS_UINT8: { _temp.u8 = *((uint8_t*) m_param); break;}
case MODBUSRTU::RUBUS_UINT16: { _temp.u16 = *((uint16_t*) m_param); break;}
case MODBUSRTU::RUBUS_UINT32: { _temp.u32 = *((uint32_t*) m_param); break;}
case MODBUSRTU::RUBUS_INT8: { _temp.i8 = *((int8_t*) m_param); break;}
case MODBUSRTU::RUBUS_INT16: { _temp.i16 = *((int16_t*) m_param); break;}
case MODBUSRTU::RUBUS_INT32: { _temp.i32 = *((int32_t*) m_param); break;}
case MODBUSRTU::RUBUS_BIT0:
{
_read_bit(_temp.word.wL.all, 0x0001);
break;
}
case MODBUSRTU::RUBUS_BIT1:
{
_read_bit(_temp.word.wL.all, 0x0002);
break;
}
case MODBUSRTU::RUBUS_BIT2:
{
_read_bit(_temp.word.wL.all, 0x0004);
break;
}
case MODBUSRTU::RUBUS_BIT3:
{
_read_bit(_temp.word.wL.all, 0x0008);
break;
}
case MODBUSRTU::RUBUS_BIT4:
{
_read_bit(_temp.word.wL.all, 0x0010);
break;
}
case MODBUSRTU::RUBUS_BIT5:
{
_read_bit(_temp.word.wL.all, 0x0020);
break;
}
case MODBUSRTU::RUBUS_BIT6:
{
_read_bit(_temp.word.wL.all, 0x0040);
break;
}
case MODBUSRTU::RUBUS_BIT7:
{
_read_bit(_temp.word.wL.all, 0x0080);
break;
}
case MODBUSRTU::RUBUS_BIT8:
{
_read_bit(_temp.word.wL.all, 0x0100);
break;
}
case MODBUSRTU::RUBUS_BIT9:
{
_read_bit(_temp.word.wL.all, 0x0200);
break;
}
case MODBUSRTU::RUBUS_BIT10:
{
_read_bit(_temp.word.wL.all, 0x0400);
break;
}
case MODBUSRTU::RUBUS_BIT11:
{
_read_bit(_temp.word.wL.all, 0x0800);
break;
}
case MODBUSRTU::RUBUS_BIT12:
{
_read_bit(_temp.word.wL.all, 0x1000);
break;
}
case MODBUSRTU::RUBUS_BIT13:
{
_read_bit(_temp.word.wL.all, 0x2000);
break;
}
case MODBUSRTU::RUBUS_BIT14:
{
_read_bit(_temp.word.wL.all, 0x4000);
break;
}
case MODBUSRTU::RUBUS_BIT15:
{
_read_bit(_temp.word.wL.all, 0x8000);
break;
}
case MODBUSRTU::RUBUS_BIT16:
{
_read_bit(_temp.word.wH.all, 0x0001);
break;
}
case MODBUSRTU::RUBUS_BIT17:
{
_read_bit(_temp.word.wH.all, 0x0002);
break;
}
case MODBUSRTU::RUBUS_BIT18:
{
_read_bit(_temp.word.wH.all, 0x0004);
break;
}
case MODBUSRTU::RUBUS_BIT19:
{
_read_bit(_temp.word.wH.all, 0x0008);
break;
}
case MODBUSRTU::RUBUS_BIT20:
{
_read_bit(_temp.word.wH.all, 0x0010);
break;
}
case MODBUSRTU::RUBUS_BIT21:
{
_read_bit(_temp.word.wH.all, 0x0020);
break;
}
case MODBUSRTU::RUBUS_BIT22:
{
_read_bit(_temp.word.wH.all, 0x0040);
break;
}
case MODBUSRTU::RUBUS_BIT23:
{
_read_bit(_temp.word.wH.all, 0x0080);
break;
}
case MODBUSRTU::RUBUS_BIT24:
{
_read_bit(_temp.word.wH.all, 0x0100);
break;
}
case MODBUSRTU::RUBUS_BIT25:
{
_read_bit(_temp.word.wH.all, 0x0200);
break;
}
case MODBUSRTU::RUBUS_BIT26:
{
_read_bit(_temp.word.wH.all, 0x0400);
break;
}
case MODBUSRTU::RUBUS_BIT27:
{
_read_bit(_temp.word.wH.all, 0x0800);
break;
}
case MODBUSRTU::RUBUS_BIT28:
{
_read_bit(_temp.word.wH.all, 0x1000);
break;
}
case MODBUSRTU::RUBUS_BIT29:
{
_read_bit(_temp.word.wH.all, 0x2000);
break;
}
case MODBUSRTU::RUBUS_BIT30:
{
_read_bit(_temp.word.wH.all, 0x4000);
break;
}
case MODBUSRTU::RUBUS_BIT31:
{
_read_bit(_temp.word.wH.all, 0x8000);
break;
}
}//switch
//
return _temp.all;
//
}//
//
uint16_t RUBUSRegister::write_register(MODBUSRTU::RUBUS_REGISTER_32 data)
{
MODBUSRTU::RUBUS_REGISTER_32 _temp = MODBUSRTU::RUBUS_REGISTER_32(0);
_temp.word.wL.all = 0x0000;
_temp.word.wH.all = 0x0000;
if(m_is_read_only)
{
// register is read only
// write operation is not allowed
return 0x0040;
}
else
{
// writeable register
switch(m_type)
{
case MODBUSRTU::RUBUS_BOOL: { *((bool*) m_param) = data.b; break;}
case MODBUSRTU::RUBUS_FLOAT: { *((float*) m_param) = data.f; break;}
case MODBUSRTU::RUBUS_UINT8: { *((uint8_t*) m_param) = data.u8; break;}
case MODBUSRTU::RUBUS_UINT16: { *((uint16_t*) m_param) = data.u16; break;}
case MODBUSRTU::RUBUS_UINT32: { *((uint32_t*) m_param) = data.u32; break;}
case MODBUSRTU::RUBUS_INT8: { *((int8_t*) m_param) = data.i8; break;}
case MODBUSRTU::RUBUS_INT16: { *((int16_t*) m_param) = data.i16; break;}
case MODBUSRTU::RUBUS_INT32: { *((int32_t*) m_param) = data.i32; break;}
case MODBUSRTU::RUBUS_BIT0:
{
_temp.u16 = *((uint16_t*) m_param);
_temp.bit16.b00 = data.bit16.b00;
*((uint16_t*) m_param) = data.u16;
break;
}
case MODBUSRTU::RUBUS_BIT1:
{
_temp.u16 = *((uint16_t*) m_param);
_temp.bit16.b01 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.u16;
break;
}
case MODBUSRTU::RUBUS_BIT2:
{
_temp.u16 = *((uint16_t*) m_param);
_temp.bit16.b02 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.u16;
break;
}
case MODBUSRTU::RUBUS_BIT3:
{
_temp.u16 = *((uint16_t*) m_param);
_temp.bit16.b03 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.u16;
break;
}
case MODBUSRTU::RUBUS_BIT4:
{
_temp.u16 = *((uint16_t*) m_param);
_temp.bit16.b04 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.u16;
break;
}
case MODBUSRTU::RUBUS_BIT5:
{
_temp.u16 = *((uint16_t*) m_param);
_temp.bit16.b05 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.u16;
break;
}
case MODBUSRTU::RUBUS_BIT6:
{
_temp.u16 = *((uint16_t*) m_param);
_temp.bit16.b06 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.u16;
break;
}
case MODBUSRTU::RUBUS_BIT7:
{
_temp.u16 = *((uint16_t*) m_param);
_temp.bit16.b07 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.u16;
break;
}
case MODBUSRTU::RUBUS_BIT8:
{
_temp.u16 = *((uint16_t*) m_param);
_temp.bit16.b08 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.u16;
break;
}
case MODBUSRTU::RUBUS_BIT9:
{
_temp.u16 = *((uint16_t*) m_param);
_temp.bit16.b09 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.u16;
break;
}
case MODBUSRTU::RUBUS_BIT10:
{
_temp.u16 = *((uint16_t*) m_param);
_temp.bit16.b10 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.u16;
break;
}
case MODBUSRTU::RUBUS_BIT11:
{
_temp.u16 = *((uint16_t*) m_param);
_temp.bit16.b11 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.u16;
break;
}
case MODBUSRTU::RUBUS_BIT12:
{
_temp.u16 = *((uint16_t*) m_param);
_temp.bit16.b12 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.u16;
break;
}
case MODBUSRTU::RUBUS_BIT13:
{
_temp.u16 = *((uint16_t*) m_param);
_temp.bit16.b13 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.u16;
break;
}
case MODBUSRTU::RUBUS_BIT14:
{
_temp.u16 = *((uint16_t*) m_param);
_temp.bit16.b14 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.u16;
break;
}
case MODBUSRTU::RUBUS_BIT15:
{
_temp.u16 = *((uint16_t*) m_param);
_temp.bit16.b15 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.u16;
break;
}
case MODBUSRTU::RUBUS_BIT16:
{
_temp.word.wH.all = *((uint16_t*) m_param);
_temp.bit32.b16 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.word.wH.all;
break;
}
case MODBUSRTU::RUBUS_BIT17:
{
_temp.word.wH.all = *((uint16_t*) m_param);
_temp.bit32.b17 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.word.wH.all;
break;
}
case MODBUSRTU::RUBUS_BIT18:
{
_temp.word.wH.all = *((uint16_t*) m_param);
_temp.bit32.b18 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.word.wH.all;
break;
}
case MODBUSRTU::RUBUS_BIT19:
{
_temp.word.wH.all = *((uint16_t*) m_param);
_temp.bit32.b19 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.word.wH.all;
break;
}
case MODBUSRTU::RUBUS_BIT20:
{
_temp.word.wH.all = *((uint16_t*) m_param);
_temp.bit32.b20 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.word.wH.all;
break;
}
case MODBUSRTU::RUBUS_BIT21:
{
_temp.word.wH.all = *((uint16_t*) m_param);
_temp.bit32.b21 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.word.wH.all;
break;
}
case MODBUSRTU::RUBUS_BIT22:
{
_temp.word.wH.all = *((uint16_t*) m_param);
_temp.bit32.b22 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.word.wH.all;
break;
}
case MODBUSRTU::RUBUS_BIT23:
{
_temp.word.wH.all = *((uint16_t*) m_param);
_temp.bit32.b23 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.word.wH.all;
break;
}
case MODBUSRTU::RUBUS_BIT24:
{
_temp.word.wH.all = *((uint16_t*) m_param);
_temp.bit32.b24 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.word.wH.all;
break;
}
case MODBUSRTU::RUBUS_BIT25:
{
_temp.word.wH.all = *((uint16_t*) m_param);
_temp.bit32.b25 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.word.wH.all;
break;
}
case MODBUSRTU::RUBUS_BIT26:
{
_temp.word.wH.all = *((uint16_t*) m_param);
_temp.bit32.b26 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.word.wH.all;
break;
}
case MODBUSRTU::RUBUS_BIT27:
{
_temp.word.wH.all = *((uint16_t*) m_param);
_temp.bit32.b27 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.word.wH.all;
break;
}
case MODBUSRTU::RUBUS_BIT28:
{
_temp.word.wH.all = *((uint16_t*) m_param);
_temp.bit32.b28 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.word.wH.all;
break;
}
case MODBUSRTU::RUBUS_BIT29:
{
_temp.word.wH.all = *((uint16_t*) m_param);
_temp.bit32.b29 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.word.wH.all;
break;
}
case MODBUSRTU::RUBUS_BIT30:
{
_temp.word.wH.all = *((uint16_t*) m_param);
_temp.bit32.b30 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.word.wH.all;
break;
}
case MODBUSRTU::RUBUS_BIT31:
{
_temp.word.wH.all = *((uint16_t*) m_param);
_temp.bit32.b31 = data.bit16.b00;
*((uint16_t*) m_param) = _temp.word.wH.all;
break;
}
}//switch
//
return 0;
//
}//if else
//
}//
//
inline void RUBUSRegister::_read_bit(uint16_t& auxreg, uint16_t mask)
{
auxreg = *((uint16_t*) m_param);
auxreg &= mask;
auxreg = auxreg == 0 ? 0 : 1;
//
}//
//
//
} /* namespace MODBUSRTU */