Ryan Malloy a7f62e5d7e Add Silicon Labs CP210x manufacturing library source
- Library source from AN721SW (cp210xmanufacturing_1.0.tar.gz)
- Manufacturing tool source (cp210xsmt)
- Builds 64-bit shared library with: make LIB_ARCH=64
- Datasheets and app notes in docs/
2026-01-30 10:31:39 -07:00

65 lines
1.1 KiB
C++

#include "ReportQueue.h"
void CReportQueue::Clear()
{
m_Lock.Lock();
m_queue.clear();
m_Lock.Unlock();
}
void CReportQueue::Reserve(DWORD count)
{
m_Lock.Lock();
m_queue.reserve(count);
m_Lock.Unlock();
}
void CReportQueue::Enqueue(const BYTE* data, DWORD size)
{
m_Lock.Lock();
for (DWORD i = 0; i < size; i++)
{
m_queue.push_back(data[i]);
}
m_Lock.Unlock();
}
void CReportQueue::Dequeue(BYTE* data, DWORD size, DWORD* bytesDequeued)
{
m_Lock.Lock();
// Figure out how many bytes to dequeue
DWORD num = (size < m_queue.size()) ? size : static_cast<DWORD>(m_queue.size());
// Copy the bytes to the user buffer
for (DWORD i = 0; i < num; i++)
{
data[i] = m_queue[i];
}
// Remove the bytes from the queue
m_queue.erase(m_queue.begin(), m_queue.begin() + num);
// Return the number of bytes dequeued
*bytesDequeued = num;
m_Lock.Unlock();
}
DWORD CReportQueue::Size()
{
m_Lock.Lock();
DWORD size = static_cast<DWORD>(m_queue.size());
m_Lock.Unlock();
return size;
}