API
Applications
Utilities
API
Handbook
GitHub
Home
z_common.h
Go to the documentation of this file.
1
/**
2
* \file z_common.h
3
* \author Eric Dand
4
* \version 1.0
5
* \date 28 November 2014
6
* \copyright Apache Software License Version 2.0
7
*
8
* \brief Defines a few things that all of the serial API has in common.
9
*
10
* This file should not be included directly: only include either za_serial.h
11
* or zb_serial.h, which will in turn include this file. The purpose of this
12
* file is to avoid code duplication and to enable a user to include both
13
* halves of the API in one source file without too many include guards and
14
* other preprocessor mess.
15
*/
16
#if !defined(Z_COMMON_H)
17
#define Z_COMMON_H
18
19
/** Allows for programmatic access to the library's version number. */
20
#define VERSION 1.0
21
22
/** \typedef z_port
23
*
24
* A type to represent a port connected to one or more Zaber devices.
25
* Essentially a wrapper, this type is a `HANDLE` on Windows, and a file
26
* descriptor (`int`) on *NIX. za_connect() and zb_connect() will properly
27
* set and configure a `z_port`.
28
*/
29
#if defined(_WIN32)
30
#include <windows.h>
31
typedef
HANDLE
z_port;
32
#elif defined(__unix__) || defined(__APPLE__)
33
typedef
int
z_port;
34
#endif
/* if defined(_WIN32) and other OS checks */
35
36
/** Defines how long, in milliseconds, za_receive() and zb_receive() should
37
* wait for input before returning without a full message.
38
*
39
* This number acts as an upper bound on how long the receive functions will
40
* take: they will return immediately once a full message is received.
41
*
42
* A note about the read timeout on *NIX operating systems: because of the way
43
* the POSIX "termios" functions work, this value will be rounded down to the
44
* nearest tenth of a second (eg. 200ms = 246ms = 0.2s). A value between 0 and
45
* 100 will be rounded up to 100 instead of down to 0 to give slightly more
46
* consistent behaviour between Windows and *NIX systems.
47
*
48
* Change this value with caution. It is set to two seconds by default,
49
* but a shorter time may be desired if many operations in your program
50
* depend on reading until a timeout. See zb_set_timeout() for more
51
* info on how this value affects the behaviour of zb_serial.h.
52
*/
53
#define READ_TIMEOUT 2000
54
55
/** \enum z_returns Defines a set of return values in case things go wrong.
56
*
57
* All errors are negative values in order to not be confused with the
58
* 0-or-greater regular return values. This was done so that a user can check
59
* whether a return value is < 0 to check for all error codes simultaneously.
60
*
61
* Remember to check your return values! It's good for you.
62
*/
63
enum
z_returns
{
64
/** Everything is OK! */
65
Z_SUCCESS
= 0,
66
/** Something went wrong in system code */
67
Z_ERROR_SYSTEM_ERROR
= -1,
68
/** Tried to write to a buffer that wasn't long enough */
69
Z_ERROR_BUFFER_TOO_SMALL
= -2,
70
/** Was passed NULL when not expecting it */
71
Z_ERROR_NULL_PARAMETER
= -3,
72
/** Tried to set an unsupported baudrate */
73
Z_ERROR_INVALID_BAUDRATE
= -4,
74
/** Tried to decode a partial reply,
75
* or a string that wasn't a reply at all */
76
Z_ERROR_COULD_NOT_DECODE
= -5,
77
/** A imeout occurred (added by JRM for MagAO-X) */
78
Z_ERROR_TIMEOUT
= -10
79
};
80
81
#endif
/* if !defined(Z_COMMON_H) */
82
HANDLE
#define HANDLE
Definition:
platform.h:8
z_returns
z_returns
Definition:
z_common.h:63
Z_ERROR_COULD_NOT_DECODE
@ Z_ERROR_COULD_NOT_DECODE
Definition:
z_common.h:76
Z_ERROR_SYSTEM_ERROR
@ Z_ERROR_SYSTEM_ERROR
Definition:
z_common.h:67
Z_ERROR_NULL_PARAMETER
@ Z_ERROR_NULL_PARAMETER
Definition:
z_common.h:71
Z_SUCCESS
@ Z_SUCCESS
Definition:
z_common.h:65
Z_ERROR_INVALID_BAUDRATE
@ Z_ERROR_INVALID_BAUDRATE
Definition:
z_common.h:73
Z_ERROR_BUFFER_TOO_SMALL
@ Z_ERROR_BUFFER_TOO_SMALL
Definition:
z_common.h:69
Z_ERROR_TIMEOUT
@ Z_ERROR_TIMEOUT
Definition:
z_common.h:78
apps
zaberLowLevel
z_common.h
Generated by
1.9.1