#pragma once
#include "sccsdk.h"

#define HEART_PERIOD_MS (3000)

/** 
 *
 * @brief 本地计算机网卡信息
 */
typedef struct {
    int   isCurrent;       ///< 网卡 MAC 地址
    TCHAR CfgPath[260];    ///< 配置文件路径
} USER_CFGFILE, *PUSER_CFGFILE;

#ifdef __cplusplus    // If used by C++ code,
extern "C" {
// we need to export the C interface
#endif
/**
 * @brief 连接到服务端控制服务
 * @param pUserSvrUrl 服务端控制服务 URL 地址 
 */
void ConnectServerControlService(const TCHAR *pUserSvrUrl);

/**
 * @brief 设置本地 WireGuard 隧道配置
 * @param[in] pCliPrivateKey 隧道私钥
 * @param[in] pSvrPublicKey  隧道服务端公钥
 * @param[in] pSvrNetwork    可访问隧道服务的云电脑网络
 * @param[in] pCliNetwork    客户端共享网络地址
 * @param[in] pSvrTunnelAddr 服务端隧道网络
 * @param[in] pSvrEndPoint   隧道服务端接入地址
 * @return 成功， 小于0 失败 @see USER_ERRNO
 * - -ERR_INPUT_PARAMS 输入参数错误
 * - -ERR_SYSTEM_UNINITIALIZE 服务端参数未初始化
 * - -ERR_MALLOC_MEMORY 分配内存失败
 * - -ERR_OPEN_FILE 打开文件失败
 * - -ERR_MEMORY_STR 字符串处理失败
 * - -ERR_UN_SUPPORT 不支持的格式转换
 * - -ERR_MALLOC_MEMORY 分配内存失败
 * - ERR_SUCCESS 成功
 */
int SetTunnelConfigure(const TCHAR *pCliPrivateKey,
                       const TCHAR *pSvrPublicKey,
                       const TCHAR *pSvrNetwork,
                       const TCHAR *pCliNetwork,
                       const TCHAR *pSvrTunnelAddr,
                       const TCHAR *pSvrEndPoint);

 int  GetUserConfigFiles(const TCHAR *pUserName, PUSER_CFGFILE* pCfgFile, int *pItems);

#ifdef __cplusplus
}
#endif