* This file is part of the oGRAC project.
* Copyright (c) 2024 Huawei Technologies Co.,Ltd.
*
* oGRAC is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
*
* http://license.coscl.org.cn/MulanPSL2
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
* -------------------------------------------------------------------------
*
* cms_uds_client.h
*
*
* IDENTIFICATION
* src/cms/interface/cms_uds_client.h
*
* -------------------------------------------------------------------------
*/
#ifndef CMS_UDS_CLIENT_H
#define CMS_UDS_CLIENT_H
#include "cm_defs.h"
#include "cms_client.h"
#ifdef __cplusplus
extern "C"
{
#endif
#define CMS_CLI_SEND_MSG_HASH_SIZE 5000
#define CMS_CLI_INVALID_SESS_ID (-1)
#define CMS_CLI_INVALID_NODE_ID (-1)
typedef status_t(*cms_uds_cli_conn_req)(cms_packet_head_t* req, cms_packet_head_t* res, uint32 res_len);
status_t cms_uds_cli_init(uint16 node_id, const char* cms_home);
void cms_uds_cli_destory(void);
status_t cms_uds_cli_connect(cms_uds_cli_info_t* cms_uds_cli_info, res_init_info_t *res_info);
status_t cms_uds_cli_check_server_online(void);
status_t cms_uds_cli_get_server_master_id(uint64* inst_id);
void cms_uds_cli_disconnect(void);
status_t cms_uds_cli_recv(cms_packet_head_t* msg, int32 size, int32 timeout_ms);
status_t cms_uds_cli_send(cms_packet_head_t* msg, int32 timeout_ms);
status_t cms_uds_cli_request(cms_packet_head_t *req, cms_packet_head_t *res, uint32 res_size, int32 timeout_ms);
status_t cms_uds_cli_request_sync(cms_packet_head_t *req, cms_packet_head_t *res, uint32 res_size, int32 timeout_ms);
status_t cms_uds_cli_wakeup_sender(cms_packet_head_t *res);
socket_t cms_uds_cli_get_sid(void);
socket_t cms_uds_cli_get_sock(void);
uint64 cms_uds_cli_get_msg_seq(void);
void cms_uds_cli_sock_close(void);
void cms_set_recv_timeout(void);
bool32 cms_uds_cli_seq_compare(void *key1, void *key2);
status_t cms_uds_cli_save_req(cms_packet_head_t* req);
void cms_uds_cli_del_req(cms_packet_head_t* req);
status_t cms_uds_cli_wait_res(cms_packet_head_t* req, cms_packet_head_t **res, int32 timeout_ms);
#ifdef __cplusplus
}
#endif
#endif