00001
00019 #ifndef _DI194_H_
00020 #define _DI194_H_
00021
00022 #include <ctype.h>
00023 #include <stdio.h>
00024 #include <stdlib.h>
00025 #include <stddef.h>
00026 #include <string.h>
00027 #include <unistd.h>
00028 #include <sys/errno.h>
00029 #include <sys/times.h>
00030 #include <sys/termios.h>
00031 #include <fcntl.h>
00032 #include <stdint.h>
00033 #include <time.h>
00034 #include <signal.h>
00035 #include <stdbool.h>
00036
00037
00038
00039
00041 typedef enum
00042 {
00043 DI_RATE_INVALID,
00044 DI_RATE_60HZ,
00045 DI_RATE_120HZ,
00046 DI_RATE_240HZ,
00047 DI_RATE_UNKNOWN
00048 } di_rate_t;
00049
00054 typedef struct
00055 {
00056 float analog[4];
00057 uint16_t raw[4];
00058 bool digital[3];
00059 bool is_valid;
00060 } daq_reading_t;
00061
00063 typedef uint8_t daq_buf_t[8];
00064
00066 #if !defined(SERIAL_NUM_LEN)
00067 #define SERIAL_NUM_LEN 10
00068 #endif
00069
00070
00071 int di_serial_init(const char *COMPORT_FILE);
00072 int min(const int A, const int B);
00073 void hex_print_byte(const uint8_t in_byte);
00074 int di_serial_read(const int COMM_FD, const uint8_t *buf,
00075 const int READ_LEN, const time_t TIMEOUT);
00076 void di_cmd_print(const uint8_t *cmd, const int CMD_LEN);
00077 bool is_reset_cmd(const uint8_t *cmd, const int CMD_LEN);
00078 int di_daq_sync(const int COMM_FD);
00079 int di_cmd_send(const int COMM_FD, const uint8_t *cmd, const int CMD_LEN);
00080 int di_initialize(const int COMM_FD, int *num_bits);
00081 int di_configure(const int COMM_FD);
00082 int di_buf_decode(const daq_buf_t buf, daq_reading_t *result,
00083 const int NUM_BITS);
00084 int di_buf_validate(const daq_buf_t buf);
00085 char *di_byte_print(const uint8_t in_byte);
00086
00087
00088 int di_open(const char *COMPORT_FILE, int *num_bits);
00089 int di_close(const int COMM_FD);
00090 int di_read(const int COMM_FD, daq_reading_t *data, const int NUM_BITS);
00091 int di_start(const int COMM_FD);
00092 int di_stop(const int COMM_FD);
00093 int di_reset(const int COMM_FD);
00094 int di_serial_num(const int COMM_FD, char *ser_buf);
00095 int di_read_single(const int COMM_FD, daq_reading_t *data, const int NUM_BITS);
00096
00097 #endif
00098