/*
   This example code is in the Public Domain (or CC0 licensed, at your option.)

   Unless required by applicable law or agreed to in writing, this
   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
   CONDITIONS OF ANY KIND, either express or implied.
*/
#ifndef _BLE_GATTS_MODULE_H_
#define _BLE_GATTS_MODULE_H_

#ifdef __cplusplus
extern "C" {
#endif

/*
 * @brief ble gatt module init
 *
 * @return success:0
 *         fail: others
 */
esp_err_t ble_gatts_module_init(void);
typedef struct {
	   uint8_t mode;
	   uint8_t state;
	   uint8_t start;
	   uint8_t sleep_time[2];
	   uint8_t wake_time[2];
	   uint8_t fog_channel;
	   
	   uint8_t sw_sleep_en; 
	   uint8_t sw_wake_en;
	   uint8_t sw_slp_working_time;
	   uint8_t sw_wak_working_time;
	   uint8_t sw_slp_music;
	   uint8_t sw_slp_volume;
	   uint8_t sw_slp_light;
	   uint8_t sw_slp_fog;
	   uint8_t sw_wak_music;
	   uint8_t sw_wak_volume;
	   uint8_t sw_wak_light;
	   uint8_t sw_wak_fog;
	   uint8_t sw_snooze_time;
	
	   uint8_t nap_working_time_hour;
	   uint8_t nap_working_time_min;
	   uint8_t nap_sleep_en; 
	   uint8_t nap_wake_en;
	   uint8_t nap_slp_working_time;
	   uint8_t nap_wak_working_time;
	   uint8_t nap_slp_music;
	   uint8_t nap_slp_volume;
	   uint8_t nap_slp_light;
	   uint8_t nap_slp_fog;
	   uint8_t nap_wak_music;
	   uint8_t nap_wak_volume;
	   uint8_t nap_wak_light;
	   uint8_t nap_wak_fog;
	
	   uint8_t med_working_time_hour;
	   uint8_t med_working_time_min;
	   uint8_t med_music;
	   uint8_t med_volume;
	   uint8_t med_light;
	   uint8_t med_fog;
	   
	   uint8_t week_setting[42];
	
	   uint8_t remain_time_hour;
	   uint8_t remain_time_min;

	   uint8_t cur_time[7];
}bs_service_param;



	   
 typedef struct {
uint8_t music_update_flag;
uint8_t music_name[64];
uint8_t music_list[128];
uint8_t fm_version;
uint8_t fm_update_flag;
uint8_t update_buf[512];
}bs_update_param;



enum {
    IDX_SVC,
		
    IDX_CHAR_MODE,
    IDX_CHAR_VAL_MODE,
    IDX_CHAR_CFG_MODE,
    
    IDX_CHAR_STATE,
    IDX_CHAR_VAL_STATE,
    IDX_CHAR_CFG_STATE,

    IDX_CHAR_START,
    IDX_CHAR_VAL_START,
    IDX_CHAR_CFG_START,
    
    IDX_CHAR_SLEEP_TIME,
    IDX_CHAR_VAL_SLEEP_TIME, 
    IDX_CHAR_CFG_SLEEP_TIME,
    
    IDX_CHAR_WAKE_TIME,
    IDX_CHAR_VAL_WAKE_TIME,
    IDX_CHAR_CFG_WAKE_TIME,

	IDX_CHAR_FOG,
    IDX_CHAR_VAL_FOG,
    IDX_CHAR_CFG_FOG,
    
    IDX_CHAR_SW_PARAM,
    IDX_CHAR_VAL_SW_PARAM,
    IDX_CHAR_CFG_SW_PARAM,
    
	IDX_CHAR_NAP_PARAM,
    IDX_CHAR_VAL_NAP_PARAM,  
    IDX_CHAR_CFG_NAP_PARAM,
    
	IDX_CHAR_MED_PARAM,
    IDX_CHAR_VAL_MED_PARAM,
    IDX_CHAR_CFG_MED_PARAM,
    
	IDX_CHAR_WEEK_SETTING,
    IDX_CHAR_VAL_WEEK_SETTING,
    IDX_CHAR_CFG_WEEK_SETTING,

	IDX_CHAR_REMAIN_TIME,
    IDX_CHAR_VAL_REMAIN_TIME,
    IDX_CHAR_CFG_REMAIN_TIME,

	IDX_CHAR_TIME,
    IDX_CHAR_VAL_TIME,
    IDX_CHAR_CFG_TIME,	
    CTL_IDX_NB,
};

enum {
	IDX_SVC_D,
		
	IDX_CHAR_MUS_UPDATE,
	IDX_CHAR_VAL_MUS_UPDATE,
	IDX_CHAR_CFG_MUS_UPDATE,

	IDX_CHAR_MUS_NAME,
	IDX_CHAR_VAL_MUS_NAME,
	IDX_CHAR_CFG_MUS_NAME,

	IDX_CHAR_MUS_LIST,
	IDX_CHAR_VAL_MUS_LIST,
	IDX_CHAR_CFG_MUS_LIST,

	IDX_CHAR_FM_VERSION,
	IDX_CHAR_VAL_FM_VERSION,
	IDX_CHAR_CFG_FM_VERSION,

	IDX_CHAR_FM_UPDATE,
	IDX_CHAR_VAL_FM_UPDATE,
	IDX_CHAR_CFG_FM_UPDATE,

	IDX_CHAR_BUF,
	IDX_CHAR_VAL_BUF,
	IDX_CHAR_CFG_BUF,
	BUF_IDX_NB
};




#ifdef __cplusplus
}
#endif

#endif
