/***********************************************************************************************************
 * Copyright (c)  2023 - 2024, Unicmicro Co.,Ltd .
 * All rights reserved.
 * Filename    : um2006A.h
 * Description : um2006A drvier header file
 * Author(s)   : yanhaihua
 * version     : V1.0
 * Modify date : 2024-10-26
 ***********************************************************************************************************/
#ifndef __UM2006A_H__
#define __UM2006A_H__

#include "typedefs.h"
#include "um2006A_defs.h"

#ifdef __cplusplus
extern "C" {
#endif

void um2006A_init(void);																					/* 初始化UM2006A */

void um2006A_write_reg(u8_t addr,u8_t value);																/* 写寄存器 */
void um2006A_write_regs(u8_t addr,u8_t *dat,u8_t len);														/* 写连续地址寄存器 */
u8_t um2006A_read_reg(u8_t addr);																			/* 读寄存器 */
u8_t um2006A_read_regs(u8_t addr,u8_t *dat,u8_t len);														/* 读连续地址寄存器 */
void um2006A_read_fifo(u8_t *dat,u8_t len);																	/* 读FIFO数据 */

void um2006A_into_idle(void);																				/* 进入IDLE模式 */
void um2006A_into_sleep(void);																				/* 进入Sleep模式 */
void um2006A_into_rx(void);																					/* 进入RX模式 */
void um2006A_cal_rc32K(void);

void um2006A_reset_digit(void);

void um2006A_set_freq(double rf_freq,double ref_freq);														/* 设置频点 */
void um2006A_set_modulation(em_mod_t mod);

void um2006A_set_packet_mode(em_packet_t mode);
void um2006A_set_preamble_match_length(u8_t len);
void um2006A_set_syncword(u32_t dat,em_syncword_len_t len);
void um2006A_set_payload_length(u8_t length);
void um2006A_set_uart_enable(BOOL enable);
void um2006A_set_manchester_mode(em_manchst_mode_t mode);

void um2006A_set_sdo_sel(em_gpio_sel sdo_sel);
void um2006A_set_gpio0_sel(em_gpio_sel gpio0_sel);
void um2006A_set_gpio1_sel(em_gpio_sel gpio1_sel);
void um2006A_set_clkout(em_clkout_t clk);
void um2006A_set_mute_mode(em_mute_t mode);

float um2006A_read_rssi(void);
void um2006A_clear_all_valid(void);
u8_t um2006A_get_pjd_valid(void);
u8_t um2006A_get_rssi_valid(void);
u8_t um2006A_get_sync_valid(void);
u8_t um2006A_get_rxbyte_done(void);

#ifdef __cplusplus
}
#endif

#endif
