X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fnet%2Fafsk.c;h=d58758cd8397031613a1e8b9395f7421b5edc241;hb=56f2c002c50338f23f1b969ba51a43b0eb24f3da;hp=5efce302ab08a7be4677a8331c79e25da4eebbc5;hpb=84970fa56eb2168c2d564ac17b1fa21b9e4daef4;p=bertos.git diff --git a/bertos/net/afsk.c b/bertos/net/afsk.c index 5efce302..d58758cd 100644 --- a/bertos/net/afsk.c +++ b/bertos/net/afsk.c @@ -32,8 +32,7 @@ * * \brief AFSK1200 modem. * - * \version $Id$ - * \author Francesco Sacchi + * \author Francesco Sacchi */ #include "afsk.h" @@ -106,11 +105,7 @@ INLINE uint8_t sin_sample(uint16_t idx) uint16_t new_idx = idx % (SIN_LEN / 2); new_idx = (new_idx >= (SIN_LEN / 4)) ? (SIN_LEN / 2 - new_idx - 1) : new_idx; - #if CPU_HARVARD - uint8_t data = pgm_read_char(&sin_table[new_idx]); - #else - uint8_t data = sin_table[new_idx]; - #endif + uint8_t data = pgm_read8(&sin_table[new_idx]); return (idx >= (SIN_LEN / 2)) ? (255 - data) : data; } @@ -127,7 +122,7 @@ INLINE uint8_t sin_sample(uint16_t idx) * \param bit current bit to be parsed. * \param fifo FIFO buffer used to push characters. * - * \return True if all is ok, False if the fifo is full. + * \return true if all is ok, false if the fifo is full. */ static bool hdlc_parse(Hdlc *hdlc, bool bit, FIFOBuffer *fifo) { @@ -209,7 +204,7 @@ static bool hdlc_parse(Hdlc *hdlc, bool bit, FIFOBuffer *fifo) * ADC ISR callback. * This function has to be called by the ADC ISR when a sample of the configured * channel is available. - * \param af Afsk context to operate one (\see Afsk). + * \param af Afsk context to operate on. * \param curr_sample current sample from the ADC. */ void afsk_adc_isr(Afsk *af, int8_t curr_sample) @@ -340,12 +335,14 @@ static void afsk_txStart(Afsk *af) * This function has to be called by the DAC ISR when a sample of the configured * channel has been converted out. * - * \param af Afsk context to operate one (\see Afsk). + * \param af Afsk context to operate on. * * \return The next DAC output sample. */ uint8_t afsk_dac_isr(Afsk *af) { + AFSK_STROBE_ON(); + /* Check if we are at a start of a sample cycle */ if (af->sample_count == 0) { @@ -356,6 +353,7 @@ uint8_t afsk_dac_isr(Afsk *af) { AFSK_DAC_IRQ_STOP(af->dac_ch); af->sending = false; + AFSK_STROBE_OFF(); return 0; } else @@ -395,6 +393,7 @@ uint8_t afsk_dac_isr(Afsk *af) { AFSK_DAC_IRQ_STOP(af->dac_ch); af->sending = false; + AFSK_STROBE_OFF(); return 0; } else @@ -453,6 +452,7 @@ uint8_t afsk_dac_isr(Afsk *af) af->phase_acc %= SIN_LEN; af->sample_count--; + AFSK_STROBE_OFF(); return sin_sample(af->phase_acc); } @@ -472,7 +472,7 @@ static size_t afsk_read(KFile *fd, void *_buf, size_t size) ticks_t start = timer_clock(); #endif - while (fifo_isempty_locked(&af->rx_fifo)); + while (fifo_isempty_locked(&af->rx_fifo)) { cpu_relax(); #if CONFIG_AFSK_RXTIMEOUT != -1 @@ -530,7 +530,7 @@ static void afsk_clearerr(KFile *fd) /** * Initialize an AFSK1200 modem. - * \param af Afsk context to operate one (\see Afsk). + * \param af Afsk context to operate on. * \param adc_ch ADC channel used by the demodulator. * \param dac_ch DAC channel used by the modulator. */