#ifndef _BLV_485_DEV_BLE_MUSIC_H
#define _BLV_485_DEV_BLE_MUSIC_H

#include "stdint.h"
#include "BLV_485_Protocol.h"
#include "BLV_All_Dev_Init.h"

#define BLE_CMD_QUERY              0x01       //查询状态
#define BLE_CMD_SETNAME            0x02       //设置BLE名称
#define BLE_CMD_PLAY               0x03       //制定播放状态
#define BLE_CMD_VOLUME             0x04       //设置音量
#define BLE_CMD_VERINF             0x05       //查询设备信息和软件版本号
#define BLE_CMD_UPDATE_PASSWORD    0x06       //更新配对密码
#define BLE_CMD_PLAY_END           0x07       //定时播放结束上报


#define CTRL_PLAY_MODE           0x01       //控制指定播放状态
#define CTRL_CYCLE_STATE         0x02       //控制播放循环模式
#define CTRL_PLAY_SPECIFY        0x03       //控制指定播放文件
#define CTRL_VOLUME_VALUE        0x04       //控制音量大小
#define CTRL_VOLUME_ADVANCED     0x05       //音量高级设置
#define CTRL_HSPLAY_TIME_SET     0x06       //助眠播放时间设置
#define CTRL_CUREPLAY_TIME_SET   0x07       //疗愈播放时间设置
#define CTRL_PASSWORD_REFRESH    0x08       //更新配对密码

typedef enum
{
	PKG_HEAD,
	PKG_SN,
	PKG_ADDR,
	PKG_LENS,
	PKG_CHSUM,
	PKG_CMD,
	PKG_PARA,

}BLE_PKG_ENUM;

typedef struct{
	BLV_COMM_RECORD_G comm_record;			//通讯记录
	
	uint8_t 	DevSendCnt;					//设备发送计数   计数达到重发次数都没有回复，判为离线
	uint8_t 	DevOffline;       			//设备离线标志 1，设备离线   0，设备在线
	uint8_t		DevOfflineLast;				//上一次离线标志 1，设备离线   0，设备在线
	uint8_t 	DevSendSN;					//发送SN号
	
	uint8_t     InputValidNum;
	uint8_t     OutputValidNum;     
	
	uint8_t     BleCon_State;               //蓝牙连接状态
	uint8_t     Play_Now_State;             //播放状态
	uint8_t     Play_Now_Folder;            //播放文件夹
	
	uint8_t     Volume_Now;                 //实时音量
	uint8_t     Volume_Globle;              //全局百分比音量
	uint8_t     SilentState;                //静音状态
	uint8_t     RelativeVol;                //相对音量      0x01:音量减    0x02:音量加
	uint8_t     LocalVolLow;                //本地音量下限
	uint8_t     LocalVolUp;                 //本地音量上限
	
	uint8_t     SetName_Flag;               //设置蓝牙名称标记
	uint8_t     Ble_Name_Prefixes[10];      //蓝牙名称前缀
	uint8_t     Ble_Name[32];               //蓝牙名称   不能含有中文字符
	
	uint8_t     RState_Flag;                //查询状态标记
	uint8_t     PlayCtrl_Flag;              //指定播放控制标记
	uint8_t     PlayState;                  //指定播放状态
	uint8_t     PlayMode;                   //播放循环模式       0x01:单曲循环  0x02:文件夹循环  0x03:文件夹随机播放  0x04:全部循环播放
	uint8_t     PlayVolume;                 //播放音量
	uint8_t     PlayFolder;                 //播放文件夹         0x00:无    0x01:助眠文件夹   0x02:疗愈文件夹  0x03:配对提示音文件夹 0x04:睡眠文件夹 0x05:本地音乐文件夹
	uint8_t     PlayFileIndex;              //播放文件名(下标)   0x00:参数无效
	
	uint16_t    HSPlayTime;                 //助眠指定播放时长       单位秒
	uint8_t     HSPlayStartVol;             //助眠开始播放音量
	uint8_t     HSPlayEndVol;               //助眠结束播放音量
	
	uint16_t    CurePlayTime;               //疗愈指定播放时长       单位秒
	uint8_t     CurePlayStartVol;           //疗愈开始播放音量
	uint8_t     CurePlayEndVol;             //疗愈结束播放音量
	
	uint8_t     SetVol_Flag;                //设置音量标记
	uint8_t     ReadVer_Flag;               //读取设备信息及软件版本号标记
	
	uint8_t     PSRef_Flag;                 //配对密码更新标记
	
	uint8_t     BLE_MAC[12];                 //BLE MAXC地址
	
	uint16_t    FolderPlayEnd;              //播放结束事件    低字节 - 0x01:退出助眠模式     0x02:退出疗愈模式   高字节 - 播放的文件夹  0x01:助眠文件夹     0x02:疗愈文件夹
	

}__attribute__ ((__packed__)) BLE_MUSIC_INFO;



void BLV_RS485_BLE_Music_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,uint16_t data_len);

#endif

