|
|
|
#include "model/hardware/device/SonoDevice.h"
|
|
|
|
|
|
|
|
#include <QDebug>
|
|
|
|
#include <QFile>
|
|
|
|
|
|
|
|
SonoDevice::SonoDevice()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
SonoDevice::~SonoDevice()
|
|
|
|
{
|
|
|
|
for(auto i = 0; i < SW_BUFFER_NUM; i++)
|
|
|
|
{
|
|
|
|
delete[] _buffers[i];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void SonoDevice::init()
|
|
|
|
{
|
|
|
|
device.init();
|
|
|
|
|
|
|
|
for(auto i = 0; i < SW_BUFFER_NUM; i++)
|
|
|
|
{
|
|
|
|
_buffers[i] = new char[BUFFER_SIZE];
|
|
|
|
memset(_buffers[i], 0, BUFFER_SIZE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void SonoDevice::startDma()
|
|
|
|
{
|
|
|
|
device.writeWord(0, 0x8,1);
|
|
|
|
}
|
|
|
|
|
|
|
|
void SonoDevice::stopDma()
|
|
|
|
{
|
|
|
|
device.writeWord(0, 0x8,0);
|
|
|
|
}
|
|
|
|
|
|
|
|
int SonoDevice::getCounter()
|
|
|
|
{
|
|
|
|
auto temp = device.readWord(BAR, COUNTER_REG);
|
|
|
|
|
|
|
|
return temp & COUNTER_MASK;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SonoDevice::copy(int srcIndex, int dstIndex)
|
|
|
|
{
|
|
|
|
auto src = device.getBufferPtr(srcIndex);
|
|
|
|
auto dst = _buffers[dstIndex];
|
|
|
|
memcpy(dst, src, BUFFER_SIZE);
|
|
|
|
}
|
|
|
|
|
|
|
|
//void SonoDevice::show(int i)
|
|
|
|
//{
|
|
|
|
// auto tmp = _buffers[i];
|
|
|
|
// for(auto j = 0; j < 80; j += 8)
|
|
|
|
// {
|
|
|
|
|
|
|
|
// quint32 res = 0;
|
|
|
|
// quint32 res2 = 0;
|
|
|
|
// res = tmp[j] | (tmp[j + 1] << 8) | (tmp[j + 2] << 16) | (tmp[j + 3] << 24);
|
|
|
|
// res2 = (tmp[j + 4] << 32) | (tmp[j + 5] << 40) | (tmp[j + 6] << 48) | (tmp[j + 7] << 56);
|
|
|
|
// qDebug() << QString("%1 %2").arg(QString::number(res2,
|
|
|
|
// 10).rightJustified(
|
|
|
|
// 6,
|
|
|
|
// '0')).arg(QString::number(res, 10));
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
|
|
|
|
const char* SonoDevice::getBufferPtr(int index)
|
|
|
|
{
|
|
|
|
return _buffers[index];
|
|
|
|
}
|