PocSag decoder: Better string presentation
git-svn-id: http://moon:8086/svn/software/trunk/projects/GnuRadio@411 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
@@ -39,6 +39,11 @@ PocsagDecoder::~PocsagDecoder()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PocsagDecoder::messageBegin()
|
||||||
|
{
|
||||||
|
msgActive = 1;
|
||||||
|
}
|
||||||
|
|
||||||
void PocsagDecoder::messageFinish()
|
void PocsagDecoder::messageFinish()
|
||||||
{
|
{
|
||||||
if (msgActive)
|
if (msgActive)
|
||||||
@@ -80,18 +85,19 @@ size_t PocsagDecoder::process(uint8_t const *pData, size_t size)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Data:
|
case Data:
|
||||||
|
// Sync received
|
||||||
if (word == 0x7CD215D8)
|
if (word == 0x7CD215D8)
|
||||||
{
|
{
|
||||||
dataCount = 0x00;
|
dataCount = 0x00;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Message word
|
||||||
if (word & 0x80000000)
|
if (word & 0x80000000)
|
||||||
{
|
{
|
||||||
// Message word
|
|
||||||
if (func == 0x00)
|
if (func == 0x00)
|
||||||
{
|
{
|
||||||
// Numeric
|
// Numeric
|
||||||
msgActive = 1;
|
|
||||||
for (size_t i=1; i < 21; i++)
|
for (size_t i=1; i < 21; i++)
|
||||||
{
|
{
|
||||||
uint32_t bit = 0x80000000 & (word << i);
|
uint32_t bit = 0x80000000 & (word << i);
|
||||||
@@ -110,7 +116,6 @@ size_t PocsagDecoder::process(uint8_t const *pData, size_t size)
|
|||||||
if (func == 0x03)
|
if (func == 0x03)
|
||||||
{
|
{
|
||||||
// Alpha numeric
|
// Alpha numeric
|
||||||
msgActive = 1;
|
|
||||||
for (size_t i=1; i < 21; i++)
|
for (size_t i=1; i < 21; i++)
|
||||||
{
|
{
|
||||||
uint32_t bit = 0x80000000 & (word << i);
|
uint32_t bit = 0x80000000 & (word << i);
|
||||||
@@ -144,6 +149,7 @@ size_t PocsagDecoder::process(uint8_t const *pData, size_t size)
|
|||||||
uint32_t addr = (word >> 13) & 0x3FFFF;
|
uint32_t addr = (word >> 13) & 0x3FFFF;
|
||||||
func = (word >> 11) & 0x03;
|
func = (word >> 11) & 0x03;
|
||||||
fprintf(stderr, "%02X: [%07u](%02X): ", (uint8_t)(dataCount), (unsigned)(8*addr+dataCount/2), func);
|
fprintf(stderr, "%02X: [%07u](%02X): ", (uint8_t)(dataCount), (unsigned)(8*addr+dataCount/2), func);
|
||||||
|
messageBegin();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dataCount++;
|
dataCount++;
|
||||||
@@ -161,6 +167,6 @@ size_t PocsagDecoder::process(uint8_t const *pData, size_t size)
|
|||||||
numProcessed += incr;
|
numProcessed += incr;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return numProcessed;
|
return numProcessed;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -40,6 +40,7 @@ private:
|
|||||||
uint32_t func = 0;
|
uint32_t func = 0;
|
||||||
bool msgActive = 0;
|
bool msgActive = 0;
|
||||||
|
|
||||||
|
void messageBegin();
|
||||||
void messageFinish();
|
void messageFinish();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user