include/serial.h
author Tero Marttila <terom@paivola.fi>
Wed, 08 Oct 2014 23:19:03 +0300
changeset 9 49643ef9d3d2
parent 5 652c31c10f91
permissions -rw-r--r--
port: move over ioport stuff from stdlib
5
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
#ifndef QMSK_SERIAL_H
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
#define QMSK_SERIAL_H
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
/** Serial modes */
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
enum serial_mode {
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
    SERIAL_MODE_ASYNC   = 0b00,
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     7
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
    SERIAL_MODE_DEFAULT = SERIAL_MODE_ASYNC
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     9
};
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    10
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    11
enum serial_baud {
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    12
    SERIAL_BAUD_9600    = 103,
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    13
};
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
enum serial_parity {
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
    SERIAL_PARITY_N     = 0b00,
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
};
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
enum serial_stopbits {
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
    SERIAL_STOPBITS_1   = 0b0,
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
};
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
enum serial_chars {
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
    SERIAL_CHARS_8      = 0b011,
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
};
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
/* Size of RX buffer */
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
#define SERIAL_BUF 64
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    29
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    30
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    31
/*
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    32
 * Setup the UART for serial mode.
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    33
 */
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    34
void serial_init (
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    35
    enum serial_baud baud,
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    36
    enum serial_parity parity,
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    37
    enum serial_stopbits stopbits
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    38
);
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    39
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    40
/*
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    41
 * Read a single input char from the rx buffer.
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    42
 *
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    43
 * Returns 0 if the rx buf is empty.
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    44
 */
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    45
char serial_read ();
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    46
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    47
/*
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    48
 * Write a single output char, either directly or via the tx "buffer".
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    49
 *
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    50
 * XXX: currently only has a tx buffer of 1 byte.
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    51
 */
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    52
void serial_write (char c);
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    53
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    54
#endif