diff options
author | Daniel Friesel <derf@finalrewind.org> | 2016-01-31 18:44:23 +0100 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2016-01-31 18:44:23 +0100 |
commit | d9f650fc6e723dabeccc800c16ca4d809f4bb94a (patch) | |
tree | 8680c16baba6b863c63e1be5fd1e183e9ff08f17 /src/modem.h | |
parent | 631ccf9ba6924d5af077bf31ef84f1212b471f3d (diff) |
document Modem and System classes
Diffstat (limited to 'src/modem.h')
-rw-r--r-- | src/modem.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/modem.h b/src/modem.h index 18273f0..ea308a7 100644 --- a/src/modem.h +++ b/src/modem.h @@ -22,6 +22,11 @@ #define MODEM_PIN PA0 #define MODEM_DDR DDRA +/** + * Receive-only modem. Sets up a pin change interrupt on the modem pin + * and receives bytes using a simple protocol. Does not detect or correct + * transmission errors. Exposes a global modem object for convenience. + */ class Modem { private: uint8_t buffer_head; @@ -30,10 +35,38 @@ class Modem { void buffer_put(const uint8_t c); public: Modem() {}; + + /** + * Checks if there are unprocessed bytes in the modem receive buffer. + * @return number of unprocessed bytes + */ uint8_t buffer_available(void); + + /** + * Get next byte from modem receive buffer. + * @return next unprocessed byte (0 if the buffer is empty) + */ uint8_t buffer_get(void); + + /** + * Enable the modem. Turns on the input voltage divider on MODEM_PIN + * and enables the receive interrupt (MODEM_PCINT). + */ void enable(void); + + /** + * Disable the modem. Disables the receive interrupt and turns off + * the input voltage divider on MODEM_PIN. + */ void disable(void); + + /** + * Called by the pin change interrupt service routine whenever the + * modem pin is toggled. Detects sync pulses, receives bits and + * stores complete bytes in the buffer. + * + * Do not call this function yourself. + */ void receive(void); }; |