diff options
Diffstat (limited to 'src/venus_api.h')
-rw-r--r-- | src/venus_api.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/src/venus_api.h b/src/venus_api.h new file mode 100644 index 0000000..75f189f --- /dev/null +++ b/src/venus_api.h @@ -0,0 +1,98 @@ + +#include <termios.h> + +#ifndef __VENUS_API_H +#define __VENUS_API_H + +#define NMEA_SENTENCE_MAX 82 + +enum venus_message_id { + ID_NONE = 0x00, + ID_SYSTEM_RESTART = 0x01, + ID_QUERY_SW_VERSION = 0x02, + ID_QUERY_SW_CRC = 0x03, + ID_FACTORY_DEFAULTS = 0x04, + ID_CONF_SERIAL = 0x05, + ID_CONF_NMEA = 0x08, + ID_CONF_FORMAT = 0x09, + ID_GET_EPHEMERIS = 0x30, + ID_SET_EPHEMERIS = 0x31, + ID_SW_VERSION = 0x80, + ID_SW_CRC = 0x81, + ID_ACK = 0x83, + ID_NACK = 0x84, + ID_EPHEMERIS_DATA = 0xB1, +}; + +enum venus_message_type { + MSG_TYPE_NONE = 0, + MSG_TYPE_NMEA = 1, + MSG_TYPE_BINARY = 2, +}; + +enum venus_sw_type { + SW_TYPE_RESERVED = 0, + SW_TYPE_SYSTEM = 1, +}; + +enum venus_update_attr { + UPDATE_ATTR_SRAM = 0, + UPDATE_ATTR_SRAM_FLASH = 1, +}; + +enum venus_start_mode { + SYSTEM_RESET_NO_CHANGE = 0, + SYSTEM_RESET_HOT = 1, + SYSTEM_RESET_WARM = 2, + SYSTEM_RESET_COLD = 3, + SYSTEM_RESET_TEST_MODE = 4, +}; + +enum venus_com_port { + VENUS_COM1 = 0, +}; + +enum venus_baud_rate { + VENUS_4800 = 0, + VENUS_9600 = 1, + VENUS_19200 = 2, + VENUS_38400 = 3, + VENUS_57600 = 4, + VENUS_115200 = 5, +}; + +enum venus_factory_defaults_type { + FACTORY_DEFAULTS_RESERVED = 0, + FACTORY_DEFAULTS_REBOOT = 1, +}; + +struct baud_map { + speed_t baud; + speed_t value; +}; + +struct venus_msg { + uint8_t *data; + uint16_t len; +}; + +speed_t value_to_baud(speed_t value); +speed_t baud_to_venus(speed_t baud); +void free_venus_msg_data(struct venus_msg *msg); +uint8_t checksum(void *data, uint16_t len); +int venus_write_msg(int fd, struct venus_msg *msg); +int venus_read_msg(int fd, struct venus_msg *msg); +ssize_t read_nmea_sentence(int fd, void *buf, size_t count); +int venus_system_restart(int fd, uint8_t mode, time_t utc, int16_t latitude, + int16_t longitude, int16_t altitude); +int venus_factory_defaults(int fd, uint8_t type); +int venus_conf_serial(int fd, uint8_t com, uint8_t baud, uint8_t attr); +int venus_conf_format(int fd, uint8_t type, uint8_t attr); +int venus_query_sw_version(int fd, uint8_t type); +int venus_conf_nmea(int fd, uint8_t gga, uint8_t gsa, uint8_t gsv, uint8_t gll, + uint8_t rmc, uint8_t vtg, uint8_t zda, uint8_t attr); +int venus_tty_configure(int fd, speed_t baud_rate); +int venus_open(const char *dev, speed_t baud_rate); + +#endif /* ~__VENUS_API_H */ + |