26#ifndef PROTOCORE_VXI11_H
27#define PROTOCORE_VXI11_H
31#if PROTOCORE_ENABLE_VXI11
36#define PROTOCORE_VXI11_CORE_PROG 0x0607AFu
37#define PROTOCORE_VXI11_CORE_VERS 1
38#define PROTOCORE_RPC_PMAP_PROG 100000u
39#define PROTOCORE_RPC_PMAP_VERS 2
40#define PROTOCORE_RPC_PMAP_PORT 111
41#define PROTOCORE_RPC_PMAP_GETPORT 3
42#define PROTOCORE_RPC_PROTO_TCP 6
43#define PROTOCORE_RPC_AUTH_NONE 0
44#define PROTOCORE_RPC_MSG_ACCEPTED 0
45#define PROTOCORE_RPC_ACCEPT_SUCCESS 0
50 VXI11_PROC_CREATE_LINK = 10,
51 VXI11_PROC_DEVICE_WRITE = 11,
52 VXI11_PROC_DEVICE_READ = 12,
53 VXI11_PROC_DEVICE_READSTB = 13,
54 VXI11_PROC_DEVICE_TRIGGER = 14,
55 VXI11_PROC_DEVICE_CLEAR = 15,
56 VXI11_PROC_DEVICE_REMOTE = 16,
57 VXI11_PROC_DEVICE_LOCAL = 17,
58 VXI11_PROC_DEVICE_LOCK = 18,
59 VXI11_PROC_DEVICE_UNLOCK = 19,
60 VXI11_PROC_DEVICE_ENABLE_SRQ = 20,
61 VXI11_PROC_DEVICE_DOCMD = 22,
62 VXI11_PROC_DESTROY_LINK = 23,
63 VXI11_PROC_CREATE_INTR_CHAN = 25,
64 VXI11_PROC_DESTROY_INTR_CHAN = 26,
68#define PROTOCORE_VXI11_FLAG_WAITLOCK 0x01
69#define PROTOCORE_VXI11_FLAG_END 0x08
70#define PROTOCORE_VXI11_FLAG_TERMCHRSET 0x80
72#define PROTOCORE_VXI11_REASON_REQCNT 0x01
73#define PROTOCORE_VXI11_REASON_CHR 0x02
74#define PROTOCORE_VXI11_REASON_END 0x04
76#define PROTOCORE_VXI11_ERR_NONE 0
77#define PROTOCORE_VXI11_ERR_SYNTAX 1
78#define PROTOCORE_VXI11_ERR_NOT_ACCESSIBLE 3
79#define PROTOCORE_VXI11_ERR_INVALID_LINK 4
80#define PROTOCORE_VXI11_ERR_PARAMETER 5
81#define PROTOCORE_VXI11_ERR_NO_LOCK 12
82#define PROTOCORE_VXI11_ERR_IO_TIMEOUT 15
83#define PROTOCORE_VXI11_ERR_IO_ERROR 17
84#define PROTOCORE_VXI11_ERR_ABORT 23
87const char *protocore_vxi11_error_str(int32_t error);
96size_t protocore_rpc_record_mark(uint8_t *buf,
size_t cap, uint32_t payload_len);
104proto_bool protocore_rpc_parse_record_mark(
const uint8_t *buf,
size_t len,
proto_bool *last, uint32_t *frag_len);
114proto_bool protocore_rpc_parse_reply(
const uint8_t *rpc,
size_t len, uint32_t *xid, uint32_t *accept_stat,
123size_t protocore_vxi11_build_getport(uint8_t *buf,
size_t cap, uint32_t xid, uint32_t prog, uint32_t vers,
130proto_bool protocore_vxi11_parse_getport_resp(
const uint8_t *rpc,
size_t len, uint32_t *port);
139size_t protocore_vxi11_build_create_link(uint8_t *buf,
size_t cap, uint32_t xid, int32_t client_id,
140 proto_bool lock_device, uint32_t lock_timeout,
const char *device);
148 uint32_t max_recv_size;
149} Vxi11CreateLinkResp;
150proto_bool protocore_vxi11_parse_create_link_resp(
const uint8_t *rpc,
size_t len, Vxi11CreateLinkResp *out);
157size_t protocore_vxi11_build_device_write(uint8_t *buf,
size_t cap, uint32_t xid, int32_t lid, uint32_t io_timeout,
158 uint32_t lock_timeout, uint32_t flags,
const uint8_t *data,
size_t data_len);
166proto_bool protocore_vxi11_parse_write_resp(
const uint8_t *rpc,
size_t len, Vxi11WriteResp *out);
173size_t protocore_vxi11_build_device_read(uint8_t *buf,
size_t cap, uint32_t xid, int32_t lid, uint32_t request_size,
174 uint32_t io_timeout, uint32_t lock_timeout, uint32_t flags, uint8_t term_char);
184proto_bool protocore_vxi11_parse_read_resp(
const uint8_t *rpc,
size_t len, Vxi11ReadResp *out);
190size_t protocore_vxi11_build_device_readstb(uint8_t *buf,
size_t cap, uint32_t xid, int32_t lid, uint32_t flags,
191 uint32_t lock_timeout, uint32_t io_timeout);
199proto_bool protocore_vxi11_parse_readstb_resp(
const uint8_t *rpc,
size_t len, Vxi11ReadStbResp *out);
206size_t protocore_vxi11_build_device_clear(uint8_t *buf,
size_t cap, uint32_t xid, int32_t lid, uint32_t flags,
207 uint32_t lock_timeout, uint32_t io_timeout);
213size_t protocore_vxi11_build_device_trigger(uint8_t *buf,
size_t cap, uint32_t xid, int32_t lid, uint32_t flags,
214 uint32_t lock_timeout, uint32_t io_timeout);
220size_t protocore_vxi11_build_destroy_link(uint8_t *buf,
size_t cap, uint32_t xid, int32_t lid);
227proto_bool protocore_vxi11_parse_error_resp(
const uint8_t *rpc,
size_t len, int32_t *error);
PROTO_ENUM_PACKED
Application protocol spoken on a listener port or connection slot.
#define PROTOCORE_BEGIN_DECLS
Give a header's declarations C linkage, so their symbol names carry no parameter types.
_Bool proto_bool
The truth value.
#define PROTOCORE_END_DECLS