Compare commits
	
		
			No commits in common. "master" and "v1.0.2" have entirely different histories.
		
	
	
		|  | @ -1,5 +1,5 @@ | |||
| name=HamShield_KISS | ||||
| version=1.0.6 | ||||
| version=1.0.2 | ||||
| author=Morgan Redfield <morgan@enhancedradio.com>, Casey Halverson <casey@enhancedradio.com> | ||||
| maintainer=Morgan Redfield <morgan@enhancedradio.com> | ||||
| sentence=A library for use with HamShield by Enhanced Radio Devices.  | ||||
|  | @ -7,5 +7,4 @@ paragraph=See the HamShield library by Enhanced Radio Devices for examples. | |||
| category=Device Control | ||||
| url=http://www.hamshield.com | ||||
| architectures=* | ||||
| includes=packet.h, SimpleFIFO.h, KISS.h | ||||
| depends=HamShield, DDS | ||||
| includes=packet.h, SimpleFIFO.h, KISS.h | ||||
							
								
								
									
										19
									
								
								src/KISS.cpp
								
								
								
								
							
							
						
						
									
										19
									
								
								src/KISS.cpp
								
								
								
								
							|  | @ -2,7 +2,6 @@ | |||
| #include "packet.h" | ||||
| #include "KISS.h" | ||||
| 
 | ||||
| 
 | ||||
| //AFSK::Packet kissPacket;
 | ||||
| bool inFrame = false; | ||||
| uint8_t kissBuffer[PACKET_MAX_LEN]; | ||||
|  | @ -12,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); | ||||
|  | @ -24,7 +23,7 @@ void KISS::loop() { | |||
|      } | ||||
|    } | ||||
|    // Check if we have incoming data to turn into a packet
 | ||||
|    while(currentlySending == false && io->available()) { | ||||
|    while(io->available()) { | ||||
|      uint8_t c = (uint8_t)io->read(); | ||||
|      if(c == KISS_FEND) { | ||||
|        if(inFrame && kissLen > 0) { | ||||
|  | @ -35,7 +34,7 @@ void KISS::loop() { | |||
|            packet->appendFCS(kissBuffer[i]); | ||||
|          } | ||||
|          packet->finish(); | ||||
|          afsk->encoder.putPacket(packet); | ||||
|          afsk.encoder.putPacket(packet); | ||||
|        } | ||||
|        kissLen = 0; | ||||
|        inFrame = false; | ||||
|  | @ -58,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; | ||||
|   } | ||||
|  | @ -77,7 +76,7 @@ void KISS::writePacket(AFSK::Packet *p) { | |||
|   io->write(KISS_FEND); | ||||
|   io->write((uint8_t)0); // Host to TNC port identifier
 | ||||
|   for(i = 0; i < p->len-2; i++) { | ||||
|     unsigned char c = p->getByte(i); | ||||
|     char c = p->getByte(i); | ||||
|     if(c == KISS_FEND || c == KISS_FESC) { | ||||
|       io->write(KISS_FESC); | ||||
|       io->write((c==KISS_FEND?KISS_TFEND:KISS_TFESC)); | ||||
|  |  | |||
							
								
								
									
										15
									
								
								src/KISS.h
								
								
								
								
							
							
						
						
									
										15
									
								
								src/KISS.h
								
								
								
								
							|  | @ -11,15 +11,26 @@ | |||
| 
 | ||||
| class KISS { | ||||
| public: | ||||
|   KISS(Stream *_io, HamShield *h, DDS *d, AFSK *a) : io(_io), radio(h), dds(d), afsk(a) {} | ||||
|   KISS(Stream *_io, HamShield *h, DDS *d) : io(_io), radio(h), dds(d) {} | ||||
|   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_ */ | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| #include <Arduino.h> | ||||
| #include "SimpleFIFO.h" | ||||
| #include "packet.h" | ||||
| #include <DDS.h> | ||||
| #include "dds.h" | ||||
| #include <util/atomic.h> | ||||
| 
 | ||||
| #define PHASE_BIT 8 | ||||
|  | @ -537,7 +537,7 @@ size_t AFSK::Packet::appendCallsign(const char *callsign, uint8_t ssid, bool fin | |||
|   if(final) { | ||||
|     ssidField |= 0b01100001; | ||||
|   } else { | ||||
|     ssidField |= 0b01100000; | ||||
|     ssidField |= 0b11100000; | ||||
|   } | ||||
|   appendFCS(ssidField); | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue