Fix a compile error. Add a quick callsign appending string method.
This commit is contained in:
parent
4a8e9c69e6
commit
0e9a549f56
24
AFSK.cpp
24
AFSK.cpp
|
@ -476,7 +476,29 @@ size_t AFSK::Packet::write(const uint8_t *ptr, size_t len) {
|
||||||
break;
|
break;
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add a callsign, flagged as source, destination, or digi
|
||||||
|
// Also tell the routine the SSID to use and if this is the final callsign
|
||||||
|
size_t AFSK::Packet::appendCallsign(const char *callsign, uint8_t ssid, bool final) {
|
||||||
|
uint8_t i;
|
||||||
|
for(i = 0; i < strlen(callsign) && i < 6; i++) {
|
||||||
|
appendFCS(callsign[i]<<1);
|
||||||
|
}
|
||||||
|
if(i < 6) {
|
||||||
|
for(;i<6;i++) {
|
||||||
|
appendFCS(' '<<1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
uint8_t ssidField = (ssid&0xf) << 1;
|
||||||
|
// TODO: Handle digis in the address C bit
|
||||||
|
if(final) {
|
||||||
|
ssidField |= 0b01100001;
|
||||||
|
} else {
|
||||||
|
ssidField |= 0b11100000;
|
||||||
|
}
|
||||||
|
appendFCS(ssidField);
|
||||||
|
}
|
||||||
|
|
||||||
// Determine what we want to do on this ADC tick.
|
// Determine what we want to do on this ADC tick.
|
||||||
void AFSK::timer() {
|
void AFSK::timer() {
|
||||||
if(encoder.isSending())
|
if(encoder.isSending())
|
||||||
|
|
6
AFSK.h
6
AFSK.h
|
@ -14,6 +14,10 @@
|
||||||
|
|
||||||
#define PACKET_BUFFER_SIZE 2
|
#define PACKET_BUFFER_SIZE 2
|
||||||
#define PACKET_STATIC 0
|
#define PACKET_STATIC 0
|
||||||
|
|
||||||
|
// If this is set, all the packet buffers will be pre-allocated at compile time
|
||||||
|
// This will use more RAM, but can make it easier to do memory planning.
|
||||||
|
// TODO: Make this actually work right and not crash.
|
||||||
//#define PACKET_PREALLOCATE
|
//#define PACKET_PREALLOCATE
|
||||||
|
|
||||||
// This is with all the digis, two addresses, framing and full payload
|
// This is with all the digis, two addresses, framing and full payload
|
||||||
|
@ -87,6 +91,8 @@ public:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t appendCallsign(const char *callsign, uint8_t ssid, bool final = false);
|
||||||
|
|
||||||
inline void finish() {
|
inline void finish() {
|
||||||
append(~(fcs & 0xff));
|
append(~(fcs & 0xff));
|
||||||
append(~((fcs>>8) & 0xff));
|
append(~((fcs>>8) & 0xff));
|
||||||
|
|
|
@ -31,20 +31,8 @@ void loop() {
|
||||||
// put your main code here, to run repeatedly:
|
// put your main code here, to run repeatedly:
|
||||||
AFSK::Packet *packet = AFSK::PacketBuffer::makePacket(22 + 32);
|
AFSK::Packet *packet = AFSK::PacketBuffer::makePacket(22 + 32);
|
||||||
packet->start();
|
packet->start();
|
||||||
packet->appendFCS('V'<<1);
|
packet->appendCallsign("VE6SLP",0);
|
||||||
packet->appendFCS('E'<<1);
|
packet->appendCallsign("VA6GA",15,true);
|
||||||
packet->appendFCS('6'<<1);
|
|
||||||
packet->appendFCS('S'<<1);
|
|
||||||
packet->appendFCS('L'<<1);
|
|
||||||
packet->appendFCS('P'<<1);
|
|
||||||
packet->appendFCS(0b11100000);
|
|
||||||
packet->appendFCS('V'<<1);
|
|
||||||
packet->appendFCS('A'<<1);
|
|
||||||
packet->appendFCS('6'<<1);
|
|
||||||
packet->appendFCS('G'<<1);
|
|
||||||
packet->appendFCS('A'<<1);
|
|
||||||
packet->appendFCS(' '<<1);
|
|
||||||
packet->appendFCS(0b01100001 | (15 & 0xf) << 1);
|
|
||||||
packet->appendFCS(0x03);
|
packet->appendFCS(0x03);
|
||||||
packet->appendFCS(0xf0);
|
packet->appendFCS(0xf0);
|
||||||
packet->print("Hello ");
|
packet->print("Hello ");
|
||||||
|
@ -61,7 +49,7 @@ void loop() {
|
||||||
// Wait up to 2.5 seconds to finish sending, and stop transmitter.
|
// Wait up to 2.5 seconds to finish sending, and stop transmitter.
|
||||||
// TODO: This is hackery.
|
// TODO: This is hackery.
|
||||||
for(int i = 0; i < 500; i++) {
|
for(int i = 0; i < 500; i++) {
|
||||||
if(!radio.afsk.isSending())
|
if(!radio.afsk.encoder.isSending())
|
||||||
break;
|
break;
|
||||||
delay(50);
|
delay(50);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue