fixd dump to file with direct buffer, moved more complex method implementation from .h to .cpp file
This commit is contained in:
@@ -281,6 +281,39 @@ Port::Port(const string deviceName, const bool noDeviceCheck,
|
|||||||
setDumpRaw(dumpRaw); // open fstream if necessary
|
setDumpRaw(dumpRaw); // open fstream if necessary
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ssize_t Port::send(const unsigned char* buffer, size_t nbytes)
|
||||||
|
{
|
||||||
|
ssize_t ret = m_device->sendBytes(buffer, nbytes);
|
||||||
|
if (ret>0 && m_logRaw == true && m_logRawFunc != NULL)
|
||||||
|
(*m_logRawFunc)(buffer[0], false);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
ssize_t Port::recv(const long timeout, size_t maxCount, unsigned char* buffer)
|
||||||
|
{
|
||||||
|
ssize_t ret = m_device->recvBytes(timeout, maxCount, buffer);
|
||||||
|
if (buffer && ret > 0) {
|
||||||
|
if (m_logRaw == true && m_logRawFunc != NULL) {
|
||||||
|
for (size_t pos = 0; pos < ret; pos++)
|
||||||
|
(*m_logRawFunc)(buffer[pos], true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_dumpRaw == true && m_dumpRawStream.is_open() == true) {
|
||||||
|
m_dumpRawStream.write((char*)buffer, ret);
|
||||||
|
|
||||||
|
if (m_dumpRawStream.tellp() >= m_dumpRawMaxSize * 1024) {
|
||||||
|
string oldfile = m_dumpRawFile + ".old";
|
||||||
|
if (rename(m_dumpRawFile.c_str(), oldfile.c_str()) == 0) {
|
||||||
|
m_dumpRawStream.close();
|
||||||
|
m_dumpRawStream.open(m_dumpRawFile.c_str(), ios::out | ios::binary | ios::app);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
unsigned char Port::byte()
|
unsigned char Port::byte()
|
||||||
{
|
{
|
||||||
unsigned char byte = m_device->getByte();
|
unsigned char byte = m_device->getByte();
|
||||||
|
|||||||
+2
-14
@@ -240,13 +240,7 @@ public:
|
|||||||
* @param nbytes number of bytes to send.
|
* @param nbytes number of bytes to send.
|
||||||
* @return number of written bytes or -1 if an error has occured.
|
* @return number of written bytes or -1 if an error has occured.
|
||||||
*/
|
*/
|
||||||
ssize_t send(const unsigned char* buffer, size_t nbytes = MAX_WRITE_SIZE)
|
ssize_t send(const unsigned char* buffer, size_t nbytes = MAX_WRITE_SIZE);
|
||||||
{
|
|
||||||
ssize_t ret = m_device->sendBytes(buffer, nbytes);
|
|
||||||
if (ret>0 && m_logRaw == true && m_logRawFunc != NULL)
|
|
||||||
(*m_logRawFunc)(buffer[0], false);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief recv read bytes from opened file descriptor.
|
* @brief recv read bytes from opened file descriptor.
|
||||||
@@ -255,13 +249,7 @@ public:
|
|||||||
* @param buffer optional direct buffer to write to (instead of queuing the data).
|
* @param buffer optional direct buffer to write to (instead of queuing the data).
|
||||||
* @return number of read bytes (never 0) or a negative result_t code.
|
* @return number of read bytes (never 0) or a negative result_t code.
|
||||||
*/
|
*/
|
||||||
ssize_t recv(const long timeout, size_t maxCount = MAX_READ_SIZE, unsigned char* buffer=NULL)
|
ssize_t recv(const long timeout, size_t maxCount = MAX_READ_SIZE, unsigned char* buffer = NULL);
|
||||||
{
|
|
||||||
ssize_t ret = m_device->recvBytes(timeout, maxCount, buffer);
|
|
||||||
if (buffer && ret>0 && m_logRaw == true && m_logRawFunc != NULL)
|
|
||||||
(*m_logRawFunc)(buffer[0], true);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief fetch first byte from receive buffer.
|
* @brief fetch first byte from receive buffer.
|
||||||
|
|||||||
Reference in New Issue
Block a user