From d365fee768a4edef1a3bcac75d30ab1620b7e53e Mon Sep 17 00:00:00 2001 From: morgan Date: Tue, 27 Dec 2016 12:09:02 -0800 Subject: [PATCH] fix KISS TNC --- src/KISS.cpp | 14 +++++++------- src/KISS.h | 15 ++------------- 2 files changed, 9 insertions(+), 20 deletions(-) diff --git a/src/KISS.cpp b/src/KISS.cpp index 3f3e635..a12bc4b 100644 --- a/src/KISS.cpp +++ b/src/KISS.cpp @@ -11,11 +11,11 @@ uint16_t kissLen = 0; // KISS equipment, and look if we have anything to relay along void KISS::loop() { static bool currentlySending = false; - if(afsk.decoder.read() || afsk.rxPacketCount()) { + if(afsk->decoder.read() || afsk->rxPacketCount()) { // A true return means something was put onto the packet FIFO // If we actually have data packets in the buffer, process them all now - while(afsk.rxPacketCount()) { - AFSK::Packet *packet = afsk.getRXPacket(); + while(afsk->rxPacketCount()) { + AFSK::Packet *packet = afsk->getRXPacket(); if(packet) { writePacket(packet); AFSK::PacketBuffer::freePacket(packet); @@ -34,7 +34,7 @@ void KISS::loop() { packet->appendFCS(kissBuffer[i]); } packet->finish(); - afsk.encoder.putPacket(packet); + afsk->encoder.putPacket(packet); } kissLen = 0; inFrame = false; @@ -57,15 +57,15 @@ void KISS::loop() { inFrame = true; } } - if(afsk.txReady()) { + if(afsk->txReady()) { radio->setModeTransmit(); currentlySending = true; - if(!afsk.txStart()) { // Unable to start for some reason + if(!afsk->txStart()) { // Unable to start for some reason radio->setModeReceive(); currentlySending = false; } } - if(currentlySending && afsk.encoder.isDone()) { + if(currentlySending && afsk->encoder.isDone()) { radio->setModeReceive(); currentlySending = false; } diff --git a/src/KISS.h b/src/KISS.h index aac88e6..a5f3002 100644 --- a/src/KISS.h +++ b/src/KISS.h @@ -11,26 +11,15 @@ class KISS { public: - KISS(Stream *_io, HamShield *h, DDS *d) : io(_io), radio(h), dds(d) {} + KISS(Stream *_io, HamShield *h, DDS *d, AFSK *a) : io(_io), radio(h), dds(d), afsk(a) {} bool read(); - AFSK afsk; void writePacket(AFSK::Packet *); void loop(); - inline void isr() { - static uint8_t tcnt = 0; - TIFR1 = _BV(ICF1); // Clear the timer flag - dds->clockTick(); - if(++tcnt == (DDS_REFCLK_DEFAULT/9600)) { - //PORTD |= _BV(2); // Diagnostic pin (D2) - afsk.timer(); - tcnt = 0; - } - //PORTD &= ~(_BV(2)); - } private: Stream *io; HamShield *radio; DDS *dds; + AFSK *afsk; }; #endif /* _KISS_H_ */