mirror of
https://github.com/markqvist/OpenModem.git
synced 2025-06-05 13:28:58 -04:00
Implemented KISS flow control
This commit is contained in:
parent
9b4105c585
commit
2c80adbda4
5 changed files with 25 additions and 4 deletions
|
@ -114,6 +114,7 @@ void ax25_sendRaw(AX25Ctx *ctx, void *_buf, size_t len) {
|
|||
ax25_putchar(ctx, crch);
|
||||
|
||||
fputc(HDLC_FLAG, ctx->ch);
|
||||
|
||||
}
|
||||
|
||||
#if SERIAL_PROTOCOL == PROTOCOL_SIMPLE_SERIAL
|
||||
|
|
|
@ -11,6 +11,7 @@ Serial *serial;
|
|||
size_t frame_len;
|
||||
bool IN_FRAME;
|
||||
bool ESCAPE;
|
||||
bool FLOWCONTROL;
|
||||
|
||||
uint8_t command = CMD_UNKNOWN;
|
||||
unsigned long custom_preamble = CONFIG_AFSK_PREAMBLE_LEN;
|
||||
|
@ -23,6 +24,7 @@ void kiss_init(AX25Ctx *ax25, Afsk *afsk, Serial *ser) {
|
|||
ax25ctx = ax25;
|
||||
serial = ser;
|
||||
channel = afsk;
|
||||
FLOWCONTROL = false;
|
||||
}
|
||||
|
||||
void kiss_messageCallback(AX25Ctx *ctx) {
|
||||
|
@ -75,9 +77,16 @@ void kiss_csma(AX25Ctx *ctx, uint8_t *buf, size_t len) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (FLOWCONTROL) {
|
||||
while (channel->sending_data) { /* Wait */ }
|
||||
|
||||
fputc(FEND, &serial->uart0);
|
||||
fputc(CMD_READY, &serial->uart0);
|
||||
fputc(0x01, &serial->uart0);
|
||||
fputc(FEND, &serial->uart0);
|
||||
}
|
||||
}
|
||||
|
||||
void kiss_serialCallback(uint8_t sbyte) {
|
||||
|
@ -114,7 +123,13 @@ void kiss_serialCallback(uint8_t sbyte) {
|
|||
slotTime = sbyte * 10;
|
||||
} else if (command == CMD_P) {
|
||||
p = sbyte;
|
||||
}
|
||||
} else if (command == CMD_READY) {
|
||||
if (sbyte == 0x00) {
|
||||
FLOWCONTROL = false;
|
||||
} else {
|
||||
FLOWCONTROL = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -19,6 +19,7 @@
|
|||
#define CMD_TXTAIL 0x04
|
||||
#define CMD_FULLDUPLEX 0x05
|
||||
#define CMD_SETHARDWARE 0x06
|
||||
#define CMD_READY 0x0F
|
||||
#define CMD_RETURN 0xFF
|
||||
|
||||
void kiss_init(AX25Ctx *ax25, Afsk *afsk, Serial *ser);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue