summaryrefslogtreecommitdiff
path: root/src/venus_api.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/venus_api.h')
-rw-r--r--src/venus_api.h98
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 */
+