54 #include "rnr/rnrconfig.h" 56 #include "rnr/netmsgs.h" 57 #include "rnr/serdev.h" 75 .brief =
"Raw R2-232 serial proxied device.",
78 .maintainer =
"RaodNarrows LLC",
79 .license =
"(C) 2010 RoadNarrows LLC. All rights reserved.",
106 const NMMsgDef_T *pMsgDef;
110 return pMsgDef!=NULL? pMsgDef->m_sMsgName:
"unknown";
132 const char *sDevName,
174 &bsSerialAppInfo, bInitTrace);
195 return bsServerReqCloseDev(pClient, hndVConn);
232 uReadLen, (
size_t)BSSERIAL_RSPREAD_READBUF_LEN);
235 bTrace = bsClientAttrGetTraceState(pClient, hndVConn);
253 n = bsClientTrans(pClient, hndVConn,
254 msgIdReq, buf, (
size_t)n,
255 msgIdRsp, buf,
sizeof(buf));
275 memcpy(rbuf, msgRsp.
m_readbuf.
u.m_buf, uReadLen);
277 return (
int)uReadLen;
314 "write_len=%zu > max_len=%zu",
315 uWriteLen, (
size_t)BSSERIAL_REQWRITE_WRITEBUF_LEN);
318 bTrace = bsClientAttrGetTraceState(pClient, hndVConn);
323 memcpy(msgReq.
m_writebuf.
u.m_buf, wbuf, uWriteLen);
337 n = bsClientTrans(pClient, hndVConn,
338 msgIdReq, buf, (
size_t)n,
339 msgIdRsp, buf,
sizeof(buf));
397 "write_len=%zu > max_len=%zu",
398 uWriteLen, (
size_t)BSSERIAL_REQTRANS_WRITEBUF_LEN);
402 uReadLen, (
size_t)BSSERIAL_RSPREAD_READBUF_LEN);
405 bTrace = bsClientAttrGetTraceState(pClient, hndVConn);
410 memcpy(msgReq.
m_writebuf.
u.m_buf, wbuf, uWriteLen);
425 n = bsClientTrans(pClient, hndVConn,
426 msgIdReq, buf, (
size_t)n,
427 msgIdRsp, buf,
sizeof(buf));
447 memcpy(rbuf, msgRsp.
m_readbuf.
u.m_buf, uReadLen);
449 return (
int)uReadLen;
union BsSerialReqWrite_T::@18::@19 u
aligned vector items
int bsSerialReqClose(BsClient_P pClient, BsVConnHnd_T hndVConn)
Request proxy server to close client's proxied serial device vitual connection.
int bsSerialReqTrans(BsClient_P pClient, BsVConnHnd_T hndVConn, byte_t wbuf[], size_t uWriteLen, size_t uReadLen, byte_t rbuf[])
Proxied request to execute a write-read transaction on a RS-232 serial device.
#define BSCLIENT_TRY_ECODE(pClient, ecode, efmt,...)
Check if <b><i>BotSense</i></b> return value is not an error ( < 0).
#define BS_ECODE_BAD_VAL
bad value
INLINE_IN_H int BsSerialPackReqOpenArgs(BsSerialReqOpenArgs_T *pStruct, byte_t buf[], size_t bufSize, bool_t bTrace)
Pack a BsSerialReqOpenArgs ITV message in big-endian byte order into the output buffer.
union BsSerialRspRead_T::@16::@17 u
aligned vector items
struct BsSerialReqWrite_T::@18 m_writebuf
vector
#define BSPROXY_VCONN_SERVER
handle for server-terminated msgs
INLINE_IN_H int BsSerialUnpackRspRead(byte_t buf[], size_t uMsgLen, BsSerialRspRead_T *pStruct, bool_t bTrace)
Unpack a BsSerialRspRead ITV message in big-endian byte order from the input buffer.
size_t m_count
vector item count
byte_t m_bytesize
bytesize
uint_t m_baudrate
baudrate
int bsSerialReqWrite(BsClient_P pClient, BsVConnHnd_T hndVConn, byte_t wbuf[], size_t uWriteLen)
Proxied request to write to a RS-232 serial device.
The Client Structure Type.
union BsSerialReqTrans_T::@14::@15 u
aligned vector items
struct BsSerialReqTrans_T::@14 m_writebuf
vector
INLINE_IN_H int BsSerialPackReqWrite(BsSerialReqWrite_T *pStruct, byte_t buf[], size_t bufSize, bool_t bTrace)
Pack a BsSerialReqWrite ITV message in big-endian byte order into the output buffer.
<b><i>BotSense</i></b> bsProxy client library RS-232 serial interface.
#define BSSERIAL_REQTRANS_WRITEBUF_LEN
#define BS_SER_SERVER_MOD
server plugin dll module
<b><i>BotSense</i></b> client library declarations.
INLINE_IN_H int BsSerialPackReqRead(BsSerialReqRead_T *pStruct, byte_t buf[], size_t bufSize, bool_t bTrace)
Pack a BsSerialReqRead ITV message in big-endian byte order into the output buffer.
static BsClientAppInfo_T bsSerialAppInfo
<b><i>BotSense</i></b> client application information.
<b><i>BotSense</i></b> client library information and callbacks to application-specific data...
INLINE_IN_H int BsSerialUnpackRspWrite(byte_t buf[], size_t uMsgLen, BsSerialRspWrite_T *pStruct, bool_t bTrace)
Unpack a BsSerialRspWrite ITV message in big-endian byte order from the input buffer.
BotSense bsProxy server - client raw serial NetMsgs XML Definition.
#define BSSERIAL_REQWRITE_WRITEBUF_LEN
INLINE_IN_H int BsSerialPackReqTrans(BsSerialReqTrans_T *pStruct, byte_t buf[], size_t bufSize, bool_t bTrace)
Pack a BsSerialReqTrans ITV message in big-endian byte order into the output buffer.
#define BSCLIENT_TRY_EXPR(pClient, expr, ecode, efmt,...)
Check if expression evaluates to true.
size_t m_count
vector item count
size_t m_count
vector item count
byte_t m_stopbits
stopbits
byte_t m_byteswritten
byteswritten
#define BSPROXY_BUF_BODY(buf)
Convenience macro to produce a buffer (offset, size) 2-tuple.
#define BSCLIENT_HAS_VCONN(pClient, hnd)
Tests if the handle is valid and there is an established virtual connection.
#define BSCLIENT_TRY_NM_ECODE(pClient, nmecode, efmt,...)
Check if NetMsgs (un)packing return value is not an error ( < 0).
const char * bsSerialGetMsgName(BsClient_P pClient, BsVConnHnd_T hndVConn, uint_t uMsgId)
Get the serial message name.
#define BSPROXY_MSG_MAX_LEN
total message maximum length
int bsSerialReqRead(BsClient_P pClient, BsVConnHnd_T hndVConn, size_t uReadLen, byte_t rbuf[])
Proxied request to read from an RS-232 serial device.
int bsSerialReqOpen(BsClient_P pClient, const char *sDevName, int nBaudRate, int nByteSize, int cParity, int nStopBits, bool_t bRtsCts, bool_t bXonXoff, bool_t bInitTrace)
Request proxy server to establish a virtual connection to an RS-232 serial device.
const char * app_name
application name
<b><i>BotSense</i></b> package top-level, unifying header declarations.
const NMMsgDef_T * BsSerialLookupMsgDef(BsSerialMsgId_T eMsgId)
Look up the message definition associated with the message id.
struct BsSerialRspRead_T::@16 m_readbuf
vector
int BsVConnHnd_T
virtual connection handle type
#define BSSERIAL_RSPREAD_READBUF_LEN