cmvr-es/third_party/AuboSdk/linux/include/aubo_sdk/rtde_c.h
2025-11-17 13:48:22 +08:00

181 lines
5.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef AUBO_SDK_RTDE_C_H
#define AUBO_SDK_RTDE_C_H
#include <aubo_sdk/type_def_c.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief 创建 RTDE 客户端实例。
*
* @param mode 设置通讯方式0 表示 TCP 通讯1 表示 UDS 通讯。
* @return 成功返回 RTDE 客户端句柄,失败返回 NULL。
*/
ARCS_ABI RTDE_HANDLE rtde_create_client(int mode);
/**
* @brief 销毁 RTDE 客户端实例。
*
* @param cli RTDE 客户端句柄。
*/
ARCS_ABI void rtde_destroy_client(RTDE_HANDLE cli);
/**
* @brief 设置日志处理器。
*
* @param cli RTDE 客户端句柄。
* @param handler 日志处理函数。
*/
ARCS_ABI void rtde_setLogHandler(RTDE_HANDLE cli,
void (*handler)(int level,
const char *filename, int line,
const char *message));
/**
* @brief 连接到服务器。
*
* @param cli RTDE 客户端句柄。
* @param ip IP 地址NULL 表示使用默认地址。
* @param port 端口号0 表示使用默认端口。
* @return 0 表示成功,-1 表示失败。
*/
ARCS_ABI int rtde_connect(RTDE_HANDLE cli, const char *ip, int port);
/**
* @brief 检查是否已连接。
*
* @param cli RTDE 客户端句柄。
* @return true 表示已连接false 表示未连接。
*/
ARCS_ABI bool rtde_hasConnected(RTDE_HANDLE cli);
/**
* @brief 登录到服务器。
*
* @param cli RTDE 客户端句柄。
* @param username 用户名。
* @param password 密码。
* @return 0 表示成功,-1 表示失败。
*/
ARCS_ABI int rtde_login(RTDE_HANDLE cli, const char *username,
const char *password);
/**
* @brief 检查是否已登录。
*
* @param cli RTDE 客户端句柄。
* @return true 表示已登录false 表示未登录。
*/
ARCS_ABI bool rtde_hasLogined(RTDE_HANDLE cli);
/**
* @brief 登出。
*
* @param cli RTDE 客户端句柄。
* @return 0 表示成功。
*/
ARCS_ABI int rtde_logout(RTDE_HANDLE cli);
/**
* @brief 断开连接。
*
* @param cli RTDE 客户端句柄。
* @return 0 表示成功,-1 表示失败。
*/
ARCS_ABI int rtde_disconnect(RTDE_HANDLE cli);
/**
* @brief 获取协议版本号。
*
* @param cli RTDE 客户端句柄。
* @return 协议版本号。
*/
ARCS_ABI int rtde_getProtocolVersion(RTDE_HANDLE cli);
/**
* @brief 设置话题。
*
* @param cli RTDE 客户端句柄。
* @param to_server 数据流向true 表示客户端发送消息false
* 表示服务器发送消息。
* @param names 信息列表(逗号分隔的字符串)。
* @param freq 推送频率。
* @param expected_chanel 通道号。
* @return 成功返回通道号,失败返回 -1。
*/
ARCS_ABI int rtde_setTopic(RTDE_HANDLE cli, bool to_server, const char *names,
double freq, int expected_chanel);
/**
* @brief 取消订阅。
*
* @param cli RTDE 客户端句柄。
* @param to_server 数据流向。
* @param chanel 通道号。
* @return 0 表示成功,-1 表示失败。
*/
ARCS_ABI int rtde_removeTopic(RTDE_HANDLE cli, bool to_server, int chanel);
/**
* @brief 订阅主题。
*
* @param cli RTDE 客户端句柄。
* @param chanel 通道号。
* @param callback 回调函数,用于处理订阅的数据。
* @return 0 表示成功,-1 表示失败。
*/
ARCS_ABI int rtde_subscribe(RTDE_HANDLE cli, int chanel,
void (*callback)(void *parser));
/**
* @brief 发布数据。
*
* @param cli RTDE 客户端句柄。
* @param chanel 通道号。
* @param callback 回调函数,用于生成发布数据。
* @return 0 表示成功,-1 表示失败。
*/
ARCS_ABI int rtde_publish(RTDE_HANDLE cli, int chanel,
void (*callback)(void *builder));
// OutputBuilder
ARCS_ABI int rtde_pushInt(OUTPUT_BUILDER_HANDLE builder, int val);
ARCS_ABI int rtde_pushDouble(OUTPUT_BUILDER_HANDLE builder, double val);
ARCS_ABI int rtde_pushVectorDouble(OUTPUT_BUILDER_HANDLE builder, const double* val, int size);
ARCS_ABI int rtde_pushTupleIntBool(OUTPUT_BUILDER_HANDLE builder, int first, bool second);
ARCS_ABI int rtde_pushInt16(OUTPUT_BUILDER_HANDLE builder, int16_t val);
ARCS_ABI int rtde_pushVectorInt16(OUTPUT_BUILDER_HANDLE builder, const int16_t* val, int size);
ARCS_ABI int rtde_pushVectorInt(OUTPUT_BUILDER_HANDLE builder, const int* val, int size);
ARCS_ABI int rtde_pushString(OUTPUT_BUILDER_HANDLE builder, const char* val);
ARCS_ABI int rtde_pushChar(OUTPUT_BUILDER_HANDLE builder, char val);
ARCS_ABI int rtde_pushRtdeRecipe(OUTPUT_BUILDER_HANDLE builder, const struct RtdeRecipe_C* val);
// InputParser
ARCS_ABI bool rtde_popBool(INPUT_PARSER_HANDLE parser);
ARCS_ABI int32_t rtde_popInt32(INPUT_PARSER_HANDLE parser);
ARCS_ABI int64_t rtde_popInt64(INPUT_PARSER_HANDLE parser);
ARCS_ABI int16_t rtde_popInt16(INPUT_PARSER_HANDLE parser);
ARCS_ABI double rtde_popDouble(INPUT_PARSER_HANDLE parser);
ARCS_ABI char rtde_popChar(INPUT_PARSER_HANDLE parser);
ARCS_ABI int rtde_popVectorInt(INPUT_PARSER_HANDLE* parser, int* data, int size);
ARCS_ABI int rtde_popVectorInt16(INPUT_PARSER_HANDLE parser, int16_t* data, int size);
ARCS_ABI int rtde_popVectorDouble(INPUT_PARSER_HANDLE parser, double* data, int size);
ARCS_ABI int rtde_popVectorVectorDouble(INPUT_PARSER_HANDLE parser, double*** data, int rows, int cols);
ARCS_ABI JointStateType_C rtde_popVectorJointStateType(INPUT_PARSER_HANDLE parser);
ARCS_ABI RobotModeType_C rtde_popRobotModeType(INPUT_PARSER_HANDLE parser);
ARCS_ABI OperationalModeType_C rtde_popOperationalModeType(INPUT_PARSER_HANDLE parser);
ARCS_ABI SafetyModeType_C rtde_popSafetyModeType(INPUT_PARSER_HANDLE parser);
ARCS_ABI RuntimeState_C rtde_popRuntimeState(INPUT_PARSER_HANDLE parser);
ARCS_ABI int rtde_popRobotMsgVector(INPUT_PARSER_HANDLE parser, struct RobotMsgVector_C* robot_msg_vec);
ARCS_ABI int rtde_popPayload(INPUT_PARSER_HANDLE parser, struct Payload_C* payload);
#ifdef __cplusplus
}
#endif
#endif // AUBO_SDK_RTDE_C_H