Fix doc.
[bertos.git] / bertos / net / afsk.h
index 902c5b9470944a6fbd136ab248ba7acfc7e608e9..d9ce6ff0ca0d59c225a899d0ce31a2d2e9f33383 100644 (file)
 #include <struct/fifobuf.h>
 
 
-// Demodulator constants
+
+/**
+ * ADC sample rate.
+ * The demodulator filters are designed to work at this frequency.
+ * If you need to change this remember to update afsk_adc_isr().
+ */
 #define SAMPLERATE 9600
+
+/**
+ * Bitrate of the received/transmitted data.
+ * The demodulator filters and decoderes are designed to work at this frequency.
+ * If you need to change this remember to update afsk_adc_isr().
+ */
 #define BITRATE    1200
 
 #define SAMPLEPERBIT (SAMPLERATE / BITRATE)
@@ -70,6 +81,10 @@ typedef struct Hdlc
        bool rxstart;       ///< True if an HDLC_FLAG char has been found in the bitstream.
 } Hdlc;
 
+/**
+ * RX FIFO buffer full error.
+ */
+#define AFSK_RXFIFO_OVERRUN BV(0)
 
 /**
  * AFSK1200 modem context.
@@ -154,6 +169,12 @@ typedef struct Afsk
        /** True while modem sends data */
        volatile bool sending;
 
+       /**
+        * AFSK modem status.
+        * If 0 all is ok, otherwise errors are present.
+        */
+       volatile int status;
+
        /** Hdlc context */
        Hdlc hdlc;
 
@@ -166,7 +187,7 @@ typedef struct Afsk
        uint16_t preamble_len;
 
        /**
-        * Preamble length.
+        * Trailer length.
         * After sending the actual data, the AFSK shifts out
         * trailer_len HDLC_FLAG characters.
         * This helps to synchronize the demodulator filters on the receiver side.
@@ -182,13 +203,14 @@ INLINE Afsk *AFSK_CAST(KFile *fd)
   return (Afsk *)fd;
 }
 
-void afsk_adc_isr(Afsk *af, int8_t curr_sample);
-void afsk_dac_isr(Afsk *af);
+
+void afsk_adc_isr(Afsk *af, int8_t sample);
+uint8_t afsk_dac_isr(Afsk *af);
 void afsk_init(Afsk *af, int adc_ch, int dac_ch);
 
 
 /**
- * \name afsk filter type
+ * \name Afsk filter types.
  * $WIZ$ afsk_filter_list = "AFSK_BUTTERWORTH", "AFSK_CHEBYSHEV"
  * \{
  */