kopia lustrzana https://github.com/mobilinkd/tnc3-firmware
45 wiersze
878 B
C++
45 wiersze
878 B
C++
|
// Copyright 2017 Rob Riggs <rob@mobilinkd.com>
|
||
|
// All rights reserved.
|
||
|
|
||
|
#include "Digipeater.hpp"
|
||
|
#include "Digipeater.h"
|
||
|
#include "IOEventTask.h"
|
||
|
|
||
|
void startDigipeaterTask(void* arg)
|
||
|
{
|
||
|
using mobilinkd::tnc::Digipeater;
|
||
|
using mobilinkd::tnc::hdlc::IoFrame;
|
||
|
|
||
|
auto digi = static_cast<Digipeater*>(arg);
|
||
|
for(;;)
|
||
|
{
|
||
|
osEvent evt = osMessageGet(digipeaterQueueHandle, osWaitForever);
|
||
|
if (evt.status != osEventMessage) continue;
|
||
|
|
||
|
uint32_t cmd = evt.value.v;
|
||
|
if (cmd < FLASH_BASE) // Assumes FLASH_BASE < SRAM_BASE.
|
||
|
{
|
||
|
// this is a command, not a packet.
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
digi->clean_history();
|
||
|
|
||
|
auto frame = static_cast<IoFrame*>(evt.value.p);
|
||
|
|
||
|
if (!digi->can_repeat(frame)) continue;
|
||
|
|
||
|
auto digi_frame = digi->rewrite_frame(frame);
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void beacon(void* arg)
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
namespace mobilinkd { namespace tnc {
|
||
|
|
||
|
}} // mobilinkd::tnc
|