// 秒寻科技
// JS模块与WASM模块交换数据的模块(wasm从js接收数据，将输出返回给js)
// zt
// 2023-02-27

#ifndef __EXCHANGE_H__
#define __EXCHANGE_H__

#ifndef EM_PORT_API
#if defined(__EMSCRIPTEN__)
#include <emscripten.h>
#define EM_PORT_API(rettype) rettype EMSCRIPTEN_KEEPALIVE
#else
#define EM_PORT_API(rettype) rettype
#endif
#endif

#include "../sysdefine/sysdef.h"

/***************************JS与WASM之间的交互接口*******************************/
// js查询wasm模块保存安装基站的队列地址
EM_PORT_API(int32 *)
exchange_js_get_install_bts_save_address();

// js查询wasm模块保存路由基站的队列地址
EM_PORT_API(int32 *)
exchange_js_get_route_bts_save_address();

// js查询wasm模块保存音频数据的队列地址
EM_PORT_API(int16 *)
exchange_js_get_audio_data_save_address();

// js通知wasm模块开始工作
EM_PORT_API(uint8)
exchange_js_notice_wasm_start_work();

// js查询wasm模块当前定位坐标数据存储地址
EM_PORT_API(int32 *)
exchange_js_get_current_location_coord_save_address();

// js查询wasm模块加速度数据存储地址
EM_PORT_API(int32 *)
exchange_js_get_acc_save_address();

// js通知wasm模块保存加速度数据
EM_PORT_API(void)
exchange_js_notice_wasm_save_acc();

// js查询wasm模块软件名称以及版本的数据存储地址
EM_PORT_API(uint8 *)
exchange_js_get_soft_name_and_version_save_address();

/***************************释放内存接口*******************************/
// js通知wasm模块释放内存
EM_PORT_API(void)
exchange_js_notice_wasm_free_memory();

/**********************以下是测试用接口，发布后要去除********************/
EM_PORT_API(void)
exchange_js_notice_wasm_show_route_bts();
EM_PORT_API(void)
exchange_js_notice_wasm_show_install_bts();
#endif