newtx/hardware/uart/uartregaccessb.cpp

43 lines
1.0 KiB
C++
Raw Normal View History

#include "uartregaccessb.h"
#include "serialib.h"
UartRegsAccessB::UartRegsAccessB(std::string devName, int bauds, int readflag, int writeflag)
{
m_serial.reset(new serialib());
m_serial->Open(devName.c_str(), bauds);
this->readflag = readflag;
this->writeflag = writeflag;
}
UartRegsAccessB::~UartRegsAccessB()
{
}
bool UartRegsAccessB::write(unsigned int addr, unsigned int val)
{
std::lock_guard<std::mutex> lck(mx_uart);
unsigned char* pdata = bufSend;
pdata[0] = writeflag;
pdata[1] = (unsigned char)addr;
*((unsigned int*)(pdata + 3)) = val;
m_serial->Write(bufSend, sizeof(bufSend));
return true;
}
bool UartRegsAccessB::read(unsigned int addr, unsigned int& val)
{
std::lock_guard<std::mutex> lck(mx_uart);
unsigned char *pdata = bufRecv;
pdata[0] = readflag;
pdata[1] = (unsigned char)addr;
m_serial->Write(bufRecv, 2);
if (m_serial->Read(bufRecv, 5, 500))
{
val = *((unsigned int*)(bufRecv + 1));
return true;
}
return false;
}