/***********************************************************************************************************
 * Copyright (c)  2021 - 2022, Unicmicro Co.,Ltd .
 * All rights reserved.
 * Filename    : um2010_defs.h
 * Description : um2010 Defs header file
 * Author(s)   : yanhaihua
 * version     : V1.0
 * Modify date : 2021-09-23
 ***********************************************************************************************************/
#ifndef __UM2010_DEFS_H__
#define __UM2010_DEFS_H__

#ifdef __cplusplus
extern "C" 
{
#endif

#define UM2010_REG_WRITE						0x7F
#define UM2010_REG_READ							0x80

#define UM2010_REG00							0x00
#define UM2010_REG01							0x01
#define UM2010_REG02							0x02
#define UM2010_REG03							0x03
#define UM2010_REG04							0x04
#define UM2010_REG05							0x05
#define UM2010_REG06							0x06
#define UM2010_REG07							0x07
#define UM2010_REG08							0x08
#define UM2010_REG09							0x09
#define UM2010_REG0A							0x0A
#define UM2010_REG0B							0x0B

#define UM2010_REG0D							0x0D
#define UM2010_REG0D_PAYLOAD_ORDER				0x80
#define UM2010_REG0D_PREAMBLE_ENABLE			0x10
#define UM2010_REG0D_SYNCWORD_ENABLE			0x20

#define UM2010_REG0C							0x0C

#define UM2010_REG0E							0x0E
#define UM2010_REG0E_MASK_PACKET				0xFC
#define UM2010_REG0E_PACKET_MODE0				0x00
#define UM2010_REG0E_PACKET_MODE1				0x01
#define UM2010_REG0E_PACKET_MODE2				0x02
#define UM2010_REG0E_PACKET_MODE3				0x03
#define UM2010_REG0E_MASK_SCRAMBLE				0xEF
#define UM2010_REG0E_FIFO_SHARE					0x08
#define UM2010_REG0E_CRC_ENABLE					0x20
#define UM2010_REG0E_DIRECT						0x04

#define UM2010_REG10							0x10
#define UM2010_REG10_PREAMBLE_IRQ				0x04
#define UM2010_REG10_SYNCWORD_IRQ				0x02

#define UM2010_REG11							0x11
#define UM2010_REG11_MASK_BRCLK					0xF8

#define UM2010_REG1C							0x1C
#define UM2010_REG1C_MASK_VKEEP					0x3F

#define UM2010_REG20							0x20
#define UM2010_REG20_MASK_DIV					0x3F
#define UM2010_REG20_DIV00						0x00
#define UM2010_REG20_DIV01						0x40
#define UM2010_REG20_DIV10						0x80
#define UM2010_REG20_DIV11						0xC0

#define UM2010_REG2D							0x2D
#define UM2010_REG2D_CW_MODE					0x80

#define UM2010_REG37							0x37

#define UM2010_REG4D							0x4D
#define UM2010_REG4D_MASK_NIRQ					0xF0
#define UM2010_REG4D_NIRQ_RX_DATA				0x0A
#define UM2010_REG4D_NIRQ_BRCLK					0x05

#define UM2010_REG4E							0x4E
#define UM2010_REG4E_MASK_GPIO0					0x0F
#define UM2010_REG4E_MASK_GPIO1					0xF0
#define UM2010_REG4E_GPIO0_RX_DATA				0xA0
#define UM2010_REG4E_GPIO1_RX_DATA				0x0A
#define UM2010_REG4E_GPIO0_BRCLK				0x50
#define UM2010_REG4E_GPIO1_BRCLK				0x05

#define UM2010_REG4F							0x4F
#define UM2010_REG4F_MASK_GPIO2					0x0F
#define UM2010_REG4F_GPIO2_RX_DATA				0xA0
#define UM2010_REG4F_GPIO2_BRCLK				0x50

#define UM2010_REG51							0x51
#define UM2010_REG51_RX_FIFO_PTR				0x80

#define UM2010_REG52							0x52

#define UM2010_REG53							0x53
#define UM2010_REG53_TX_FIFO_PTR				0x80

#define UM2010_REG55							0x55

#define UM2010_REG57							0x57
#define UM2010_REG57_SPI_3W						0x04

#define UM2010_REG58							0x58
#define UM2010_REG58_MASK_DIRECT_TX_GPIO		0xF3

#define UM2010_REG5D							0x5D
#define UM2010_REG5D_GPIO2						0xC0

#define UM2010_REG60							0x60
#define UM2010_REG60_IDLE						0x80
#define UM2010_REG60_TX							0x40
#define UM2010_REG60_RX							0x20
#define UM2010_REG60_STANDBY					0x05
#define UM2010_REG60_FS							0x10

#define UM2010_REG61							0x61
#define UM2010_REG61_MASK_PKT					0xF0
#define UM2010_REG61_PKT						0xD0

#define UM2010_REG64							0x64

#define UM2010_REG73							0x73
#define UM2010_REG74							0x74
#define UM2010_REG74_MANCH_ENABLE				0x10
#define UM2010_REG74_BIT_ORDER					0x08
#define UM2010_REG74_MASK_LEN					0xF8

#define UM2010_REG75							0x75
#define UM2010_REG76							0x76
#define UM2010_REG77							0x77
#define UM2010_REG78							0x78
#define UM2010_REG79							0x79
#define UM2010_REG7A							0x7A
#define UM2010_REG7B							0x7B
#define UM2010_REG7C							0x7C
#define UM2010_REG7D							0x7D
#define UM2010_REG7E							0x7E

#define UM2010_REG7F							0x7F
#define UM2010_REG7F_PAGE0						0x00
#define UM2010_REG7F_PAGE1						0x01

#define UM2010_REG94							0x94
#define UM2010_REG94_MASK_LEN					0xFC
#define UM2010_REG94_MANCH_ENABLE				0x04
#define UM2010_REG94_BIT_INVERT					0x08
#define UM2010_REG94_BIT_ORDER					0x10

#define UM2010_REG95							0x95
#define UM2010_REG96							0x96
#define UM2010_REG97							0x97
#define UM2010_REG98							0x98
#define UM2010_REG99							0x99
#define UM2010_REG9A							0x9A
#define UM2010_REG9B							0x9B
#define UM2010_REG9C							0x9C

#define UM2010_REG9F							0x9F
#define UM2010_REG9F_EMPTY_THR					0x3F

#define UM2010_REGA0							0xA0
#define UM2010_REGA0_FULL_THR					0x3F

typedef enum
{
	PACKET_MODE_0								= 0,
	PACKET_MODE_1								= 1,
	PACKET_MODE_2								= 2,
	PACKET_MODE_3								= 3,
}em_packet_t;

typedef enum
{
	LSB											= 0,
	MSB											= 1,
}em_order_t;

typedef enum
{
	CRC_LEN_8									= 0,
	CRC_LEN_16									= 1,
	CRC_LEN_24									= 2,
	CRC_LEN_32									= 3,
}em_crc_len_t;

typedef enum
{
	NIRQ										= 0x00,
	GPIO0										= 0x01,
	GPIO1										= 0x02,
	GPIO2										= 0x03,
}em_gpio_t;

typedef enum
{
	GPIO_SEL_NIRQ								= 0x00,
	GPIO_SEL_PKT								= 0x01,
	GPIO_SEL_PREAMBLE							= 0x02,
	GPIO_SEL_SYNCWORD							= 0x03,
	GPIO_SEL_FIFO								= 0x04,
	GPIO_SEL_RX_DATA							= 0x06,
	GPIO_SEL_TX_DATA							= 0x07,
	GPIO_SEL_TR_SW								= 0x08,
	GPIO_SEL_NTR_SW								= 0x09,
	GPIO_SEL_HIGH								= 0x0D,
	GPIO_SEL_LOW								= 0x0F,
}em_gpio_sel;

typedef enum
{
	BRCLK_RX_CLK								= 0x00,
	BRCLK_XTAL_CLK								= 0x01,
	BRCLK_XTAL_CLK_DIV8							= 0x02,
	BRCLK_XTAL_CLK_DIV16						= 0x03,
	BRCLK_FS_CLK								= 0x04,
	BRCLK_TX_CLK								= 0x05,
	BRCLK_ADC_CLK								= 0x07,
}em_brclk_t;

#ifdef __cplusplus
}
#endif

#endif
