mirror of
https://github.com/peterantypas/maiana.git
synced 2025-05-15 23:10:11 -07:00
Leaving this branch alone
This commit is contained in:
parent
0f0424361a
commit
19ae8c48a8
@ -37,6 +37,7 @@ public:
|
||||
private:
|
||||
void ensureChannelIsTracked(VHFChannel ch);
|
||||
|
||||
void dumpStats();
|
||||
private:
|
||||
class PacketStats
|
||||
{
|
||||
@ -55,6 +56,7 @@ private:
|
||||
NMEAEncoder mEncoder;
|
||||
std::vector<std::string> mSentences;
|
||||
StationData mStationData;
|
||||
PacketStats mStats;
|
||||
};
|
||||
|
||||
#endif /* RXPACKETPROCESSOR_HPP_ */
|
||||
|
@ -40,7 +40,7 @@ RXPacketProcessor::RXPacketProcessor ()
|
||||
{
|
||||
mSentences.reserve(4); // We're not going to need more than 2 sentences for the longest AIS message we report ...
|
||||
Configuration::instance().readStationData(mStationData);
|
||||
EventQueue::instance().addObserver(this, AIS_PACKET_EVENT);
|
||||
EventQueue::instance().addObserver(this, AIS_PACKET_EVENT|CLOCK_EVENT);
|
||||
}
|
||||
|
||||
RXPacketProcessor::~RXPacketProcessor ()
|
||||
@ -53,12 +53,28 @@ void RXPacketProcessor::processEvent(const Event &e)
|
||||
{
|
||||
switch(e.type)
|
||||
{
|
||||
case CLOCK_EVENT:
|
||||
if ( e.clock.utc % 60 == 0 )
|
||||
{
|
||||
dumpStats();
|
||||
}
|
||||
break;
|
||||
case AIS_PACKET_EVENT:
|
||||
{
|
||||
ASSERT(e.rxPacket);
|
||||
if (e.rxPacket->isBad() || !e.rxPacket->checkCRC ())
|
||||
if ( e.rxPacket->isBad() )
|
||||
{
|
||||
mStats.bad++;
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !e.rxPacket->checkCRC ())
|
||||
{
|
||||
mStats.invalid++;
|
||||
return;
|
||||
}
|
||||
|
||||
mStats.good++;
|
||||
bsp_rx_led_on();
|
||||
|
||||
if ( e.rxPacket->messageType() == 15 )
|
||||
@ -157,3 +173,18 @@ void RXPacketProcessor::processEvent(const Event &e)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void RXPacketProcessor::dumpStats()
|
||||
{
|
||||
Event *e = EventPool::instance().newEvent(PROPR_NMEA_SENTENCE);
|
||||
if ( !e )
|
||||
return;
|
||||
|
||||
sprintf(e->nmeaBuffer.sentence, "$PAISTAT,%lu,%lu,%lu*", mStats.good, mStats.bad, mStats.invalid);
|
||||
Utils::completeNMEA(e->nmeaBuffer.sentence);
|
||||
EventQueue::instance().push(e);
|
||||
|
||||
mStats.good = 0;
|
||||
mStats.bad = 0;
|
||||
mStats.invalid = 0;
|
||||
}
|
||||
|
@ -631,9 +631,18 @@ uint32_t bsp_get_system_clock()
|
||||
|
||||
uint8_t bsp_tx_spi_byte(uint8_t data)
|
||||
{
|
||||
#if 1
|
||||
while (!(SPI1->SR & SPI_SR_TXE));
|
||||
|
||||
*((__IO uint8_t *)&(SPI1->DR)) = data;
|
||||
while (!(SPI1->SR & SPI_SR_RXNE));
|
||||
|
||||
return SPI1->DR;
|
||||
#else
|
||||
uint8_t result = 0;
|
||||
HAL_SPI_TransmitReceive(&hspi1, &data, &result, 1, 2);
|
||||
return result;
|
||||
#endif
|
||||
}
|
||||
|
||||
void bsp_reboot()
|
||||
|
Loading…
x
Reference in New Issue
Block a user