/***************************************************************************************
* Copyright (c) 2025 Beijing Institute of Open Source Chip (BOSC)
* Copyright (c) 2020-2025 Institute of Computing Technology, Chinese Academy of Sciences
*
* DiffTest 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.
***************************************************************************************/
#ifndef __XDMA_SIM_H__
#define __XDMA_SIM_H__
#include <stddef.h>
#include <stdint.h>

void xdma_sim_open(int channel, bool is_host);
void xdma_sim_close(int channel);
void xdma_sim_axilite_open(bool is_host);
void xdma_sim_axilite_close(bool is_host);
void xdma_sim_workload_open(bool is_host);
void xdma_sim_workload_close(bool is_host);
int xdma_sim_read(int channel, char *buf, size_t size);
int xdma_sim_write(int channel, const char *buf, uint8_t tlast, size_t size);
void xdma_sim_h2c_open(int channel, bool is_host);
void xdma_sim_h2c_close(int channel);
int xdma_sim_h2c_write(int channel, const char *buf, uint64_t tkeep, uint8_t tlast, size_t size);
int xdma_sim_axilite_write(uint32_t addr, uint32_t data, uint8_t strb);
int xdma_sim_axilite_read(uint32_t addr, uint32_t *data);
int xdma_sim_set_workload(const char *workload);
int xdma_sim_wait_workload(char *workload, size_t size);
void xdma_sim_complete_workload();
void xdma_sim_cancel_workload();

#endif // __XDMA_SIM_H__
