diff --git a/rtty.c b/rtty.c index f2234da..f490dfd 100644 --- a/rtty.c +++ b/rtty.c @@ -51,38 +51,6 @@ ISR(TIMER0_COMPA_vect) } } -void rtx_string(char *s) -{ - uint16_t length = strlen(s); - rtx_wait(); - txpgm = 0; - txbuf = (uint8_t *) s; - txlen = length; -} - -void rtx_string_P(PGM_P s) -{ - uint16_t length = strlen_P(s); - rtx_wait(); - txpgm = 1; - txbuf = (uint8_t *) s; - txlen = length; -} - -void rtx_data(uint8_t *data, size_t length) -{ - rtx_wait(); - txpgm = 0; - txbuf = data; - txlen = length; -} - -void rtx_wait() -{ - /* Wait for interrupt driven TX to finish */ - while(txlen > 0); -} - void rtx_init() { /* RTTY is driven by TIMER0 in CTC mode */ @@ -97,3 +65,37 @@ void rtx_init() DDRB |= MARK | SPACE | TXENABLE; } +void inline rtx_wait() +{ + /* Wait for interrupt driven TX to finish */ + while(txlen > 0); +} + +void rtx_data(uint8_t *data, size_t length) +{ + rtx_wait(); + txpgm = 0; + txbuf = data; + txlen = length; +} + +void rtx_data_P(PGM_P data, size_t length) +{ + rtx_wait(); + txpgm = 1; + txbuf = (uint8_t *) data; + txlen = length; +} + +void rtx_string(char *s) +{ + uint16_t length = strlen(s); + rtx_data((uint8_t *) s, length); +} + +void rtx_string_P(PGM_P s) +{ + uint16_t length = strlen_P(s); + rtx_data_P(s, length); +} + diff --git a/rtty.h b/rtty.h index dab6482..4f21d87 100644 --- a/rtty.h +++ b/rtty.h @@ -13,10 +13,10 @@ #include #include +extern void rtx_init(); +extern void inline rtx_wait(); +extern void rtx_data(uint8_t *data, size_t length); extern void rtx_string(char *s); extern void rtx_string_P(PGM_P s); -extern void rtx_data(uint8_t *data, size_t length); -extern void rtx_wait(); -extern void rtx_init(); #endif