#ifndef TXNTRIP_INTERFACE_H
#define TXNTRIP_INTERFACE_H

#ifdef __cplusplus
extern "C" {
#endif

/**
 * RTCM数据回调函数，用于接收后台播发的RTCM数据
 */
typedef void (*tx_ntrip_rtcm_callback)(const char *buff, int len);


/**
 * 日志信息回调
 */
typedef void (*tx_ntrip_log_callback)(const char *log,int len);

/**
 * 日志级别
 */
typedef enum {
    TX_NTRIP_LOG_DEBUG    = 0,
    TX_NTRIP_LOG_INFO     = 1,
    TX_NTRIP_LOG_WARN     = 2,
    TX_NTRIP_LOG_ERROR    = 3,
    TX_NTRIP_LOG_NONE     = 4
} TX_NTRIP_LOG_LEVEL;

/**
 * 用户隐私接口
 */
void tx_ntrip_setUserAgreePrivacy(int isAgree);

/**
 * ntrip配置参数
 */
typedef struct tx_ntrip_config {
    /** Ntrip server name */
    char hostName[128];
    /** Port */
    int port;
    /** Mount Point */
    char mountPoint[32];
    /** broadcast interval unit:s */
    int brdint;
    /** User Name */
    char userName[32];
    /** Password */
    char password[32];
    /** device_id */
    char device_id[128];
    /** device_type */
    char device_type[128];
} tx_ntrip_config;

/**
 * @brief 启动腾讯NTRIP
 * @param ntrip_settings rtcm ntrip相关配置
 * @param rtcm_callback RTCM数据回调
 * @return 1: OK, 其他: FAIL
 * */
int tx_ntrip_start(tx_ntrip_config* ntrip_settings, tx_ntrip_rtcm_callback rtcm_callback);

/**
 * @brief 停止腾讯NTRIP
 * @return 1: OK, 0: FAIL
 * */
int tx_ntrip_stop();

/**
 * @brief 更新NMEA消息至腾讯NTRIP
 * @param nmea NMEA消息字符串
 * @return 1: OK, 0: FAIL
 * */
int tx_ntrip_send_nmea(const char* nmea);

/**
 * 获取当前Ntrip连接状态
 */
int tx_ntrip_get_ConnectState();

/**
 * 开启sdk日志记录
 * @param level 开启日志级别
 * @param log_callback 日志回调函数
 * @return
 */
int tx_ntrip_start_log(TX_NTRIP_LOG_LEVEL level, tx_ntrip_log_callback log_callback);

/**
 * 关闭sdk日志记录
 * @return
 */
int tx_ntrip_stop_log();

/**
 * 获取版本号
 * @param version
 */
void tx_ntrip_get_version(char* version);


#ifdef __cplusplus
}
#endif
#endif //TXNTRIP_INTERFACE_H
