#ifndef  __SDK_INCLUDE_H__
#define  __SDK_INCLUDE_H__

/*
* 版本号 1.25
*/
/*
修改说明:规范编码格式
*/
//#define  SOFT_VERSION "1.22"

/*
修改说明:优化低功耗，增加CPU_SLEEP
*/
//#define  SOFT_VERSION "1.23"

/*
修改说明:增加master
*/
//#define  SOFT_VERSION "1.24"

/*
修改说明:完善接口，增加响应的测试例程，基于此版本 编写开发指南，API参考接口文档
*/
//#define  SOFT_VERSION "1.25"

/*
修改说明:增加OTA稳定性 
修改时间:2020年10月20日
*/
//#define  SOFT_VERSION "1.26"

/*
修改说明:内测版本未能发布
修改时间:2020年11月22日
*/
//#define  SOFT_VERSION "1.27"

/*
修改说明:修复已知bug，增加程序健壮性，完善指令集
修改时间:2020年12月18日
*/
//#define  SOFT_VERSION 0x0128

/*
修改说明:增加完善指令
修改时间:2020年1月11日
*/
//#define  SOFT_VERSION 0x0129
/*
修改说明:增加唤醒GPIO 高电平阻止低功耗
修改时间:2021年05月12
*/
//#define  SOFT_VERSION 0x0280

/*
修改说明:增加GPIO 翻转示例
修改时间:2021年05月13
*/
//#define  SOFT_VERSION 0x0290

/*
修改说明:修复已知错误
修改时间:2021年08月31
*/
#define  SOFT_VERSION 0x0300

typedef enum
{
    IDLE,
	EXIST,

}lastkey_state_t;

typedef enum _sys_sleep_mode
{
//											休眠类型							  电流		
	sys_no_sleep,						//   正常运行								1400uA
	sys_cpu_sleep,						//	CPU休眠，外设正常，但是要注册唤醒源		1000uA
	sys_sleep,							//	CPU休眠，外设正常，但是常开域才能唤醒	 550uA
    sys_deep_sleep,					//	CPU休眠，仅保留RAM					 1.3uA
	sys_deep_sleep_plus				//	CPU休眠，不保留RAM					 0.9uA
}sys_sleep_mode;


#define BLE_SLAVE		0				// 从机
#define BLE_ROLE		1				// 主机

#define	NONE_SLEEP		0				// 16M 1900 uA
#define	NORMAL_SLEEP 	1
#define	DEEP_SLEEP		2
typedef unsigned char SDK_SLEEP;


typedef enum _SDK_EVENT{
	EVENT_RECONNECT,
	EVENT_STOP_RECONNECT,
	EVENT_RECOVERY_CON,

	EVENT_BLINK_START,			//灯闪烁开始
	EVENT_BLINK_STOP,			//电源灯闪烁停止
	EVENT_LED_ON,				//电源灯开
	EVENT_LED_OFF,				//电源灯关
	EVENT_POWER_OFF,			//关机动作
	EVENT_POWER_ON,			//开机动作
	EVENT_KEY_RELEASE_OFF,	//按键释放
	EVENT_BLINK_CONTINUE,		//闪烁保持
}SDK_EVENT;

typedef enum _LED_EVENT{
	EVENT_LED_CONNECT,
	EVENT_LED_REPORT,			//连接成功上报
	EVENT_LED_KEY_PRESS,		//按键按下
	EVENT_LED_DISCONNECT,		//断开连接
}LED_EVENT;


typedef enum
{
	BT_STATE_IDLE,
	BT_STATE_SCAN,				//
	BT_STATE_BROADCAST,
    BT_STATE_ADV_ON,	
	BT_STATE_ADV_DIRECT,
	BT_STATE_ADV_OFF,
	BT_STATE_CONNECT_BROKEN,
    BT_STATE_CONNECTED,
    BT_STATE_PAIR_CFM,
	BT_STATE_PAIRED,
	
	BT_STATE_STOP,
}ble_state_t;


// ==========威盛模块用到 start ==============
typedef enum _master_scan_type{
	master_scan_auto_connect,				 	// 1 扫描一次，自动连接
	master_scan_identify_auto_connect,	 	// 2 扫描2次，自动连接
	
	master_scan_manual_connect,			 	// 3 扫描1次，手动连接
	master_scan_identify_manual_connect,	 	// 4 扫描2次，手动连接
}master_scan_type;

// ==========威盛模块用到 end ==============


#define ws_bt		1					
#define	ws_adc		2
#define	ws_qdec		3								
#define	ws_gpio		4				
#define	ws_rtc		5						 
#define	ws_wdt		6			
#define	ws_timer3	7 			 
#define	ws_timer2	8	 			 
#define	ws_timer1	9	 			 
#define	ws_timer0	10	 		 
#define	ws_rng		11
#define	ws_syscfg	12
#define	ws_kpc		13 					  
#define	ws_spi1		14					 
#define	ws_spi0		15				 
#define	ws_uart1	16		   
#define	ws_uart0	17				
#define	ws_i2c		18 		
typedef unsigned char ws_dev;

#define APP_USART_NO_IRQ			0
#define APP_USART_IRQ				1
#define	APP_USART_FIFO_IRQ			2

#define is_timer_dev(dev) 	(((dev) == ws_timer0) || ((dev) == ws_timer1) || ((dev) == ws_timer2) || ((dev) == ws_timer3)) 
#define is_uart_dev(dev) 	(((dev) == ws_uart1) 	|| ((dev) == ws_uart0)) 
#define is_spi_dev(dev) 	(((dev) == ws_spi1)  	|| ((dev) == ws_spi0)) 
#define is_i2c_dev(dev) 	((dev) == ws_i2c) 



#include <stdarg.h>
#include <stdint.h>
#include <stdlib.h>    // standard lib functions
#include <stddef.h>    // standard definitions
#include <stdint.h>    // standard integer definition
#include <stdbool.h>   // boolean definition
#include <string.h>
#include <stdio.h>
#include "app_config.h"
#include "cpu.h"
#include "cpu_gpio.h"

#include "datatype.h"
#include "system_clock_config.h"
#include "app_config.h"
#include "cpu_deepsleep.h"
#include "system_sleep.h"
#include "cpu_flash.h"
#include "cpu_timer.h"
#include "cpu_wdt.h"
#include "cpu_rtc.h"
#include "app.h"
#include "user_uart.h"
#include "app_trace.h"
#include "hw_adjust.h"
#include "app_main.h"
#include "user_gpio.h"
#include "user_uart.h"
#include "user_spi.h"
#include "user_timer.h"
#include "user_adc.h"
#include "hw_config.h"
#include "cpu_radio.h"
#include "common.h"
#include "dm_button_gpio.h"
#include "ws8100_config.h"
#include "user_flash.h"

#include "app.h"
#include "User_wdt.h"

#endif
extern void debug_on_prt(char *file,int line);

#define debug_on_ram() debug_on_prt(__FILE__,__LINE__)


