Update cwftoflux to handle index information from CWF files.

This commit is contained in:
David Given
2019-03-07 00:22:43 +01:00
parent 29b66086ea
commit d02e6b5936
3 changed files with 15 additions and 1 deletions

View File

@@ -53,6 +53,12 @@ Fluxmap& Fluxmap::appendInterval(uint32_t ticks)
return *this;
}
Fluxmap& Fluxmap::appendIndex()
{
appendByte(0x81);
return *this;
}
void Fluxmap::precompensate(int threshold_ticks, int amount_ticks)
{
uint8_t junk = 0xff;

View File

@@ -20,6 +20,7 @@ public:
}
Fluxmap& appendInterval(uint32_t ticks);
Fluxmap& appendIndex();
Fluxmap& appendBytes(const Bytes& bytes);
Fluxmap& appendBytes(const uint8_t* ptr, size_t len);

View File

@@ -88,9 +88,12 @@ static void read_track()
Fluxmap fluxmap;
uint32_t pending = 0;
bool oldindex = true;
for (unsigned cursor = 0; cursor < length; cursor++)
{
uint32_t b = inputdata[cursor] & 0x7f;
uint32_t b = inputdata[cursor];
bool index = !!(b & 0x80);
b &= 0x7f;
if (b == 0x7f)
{
pending += 0x7f;
@@ -101,6 +104,10 @@ static void read_track()
double interval_us = b * (1e6/clockRate);
fluxmap.appendInterval(interval_us / US_PER_TICK);
if (index && !oldindex)
fluxmap.appendIndex();
oldindex = index;
}
std::cout << fmt::format(" {} ms in {} output bytes\n",