杰理AC692X系列---关于音量同步及电量显示(6)

杰理AC692X系列—关于音量同步、自定义音量表及电量显示(6)

1、取消及打开电量显示功能

这个简单,在bt_configs_user.h中,按照说明进行更改就可以了
杰理AC692X系列---关于音量同步及电量显示(6)_第1张图片
在这里插入图片描述
2、音量同步(基于sdk为2.6.0版本)
如果需要音量同步。同样,在bt_configs_user.h中找的下图这句,进行注释或者打开。
在这里插入图片描述
但是这样只是打开了支持音量同步功能。苹果手机有可能会出现按一下音量加减键,苹果音量图标出现不增加(减少)或者增加(减少)两格或多格的情况。
由于苹果手机音量等级有0~16级。所以我们就需要自定义几个数组。

通过上图传入的两个参数,可以找到这两个函数体,分别为
static void set_device_volume(int volume)
static int get_dac_vol()
发送的音量同步信息就是在这里面处理的。

以下苹果手机是所对应的

127->16
119->15
111->14
103->13
95->12
87->11
79->10
71->9
63->8
55->7
47->6
39->5
37->4
23->3
15->2
7->1
0->0

在static void set_device_volume(int volume)上方添加以下代码

static u8 iphone_vol_map[USER_VOL_MAX+1]=
{
	0,
	7,
	15,
	23,
	31,
	39,
	47,
	55,
	63,
	71,
	79,
	87,
	95,
	103,
	111,
	119,
	127
};
u8 GetCuriphone_VolumeIndex(int ivolume)
{
	u8 i;
	for(i=0;i<=16;i++)
	{
		if(iphone_vol_map[i]>=ivolume)
		{
				return i;
		}
	}

	return 16;
}

然后替换掉原来的
杰理AC692X系列---关于音量同步及电量显示(6)_第2张图片
杰理AC692X系列---关于音量同步及电量显示(6)_第3张图片
这里音量同步的就完成了!哈哈哈哈~
在这里也许你会发现多了个volume_MAP,这个就是是自己自定义的音量表。
在board.c文件中添加以下代码

#define   USER_VOL_MAX	16 //16级音量
const u16 volume_MAP[USER_VOL_MAX+1]=
{
    0,
    2,
    4,
    6,
    8,
    10,
    12,
    14,
    16,
    18,
    20,
    22,
    24,
    26,
    28,
    29,
    30,
};
extern struct SOUND_VAR sound;
u8 GetCurUserVolumeIndex(void)
{
	u8 i;
	for(i=0;i<=USER_VOL_MAX;i++)
	{
		if(volume_MAP[i]>=(sound.vol.sys_vol_l))
		{
			return i;
		}
	}
	return USER_VOL_MAX;
}
u8 ToneGetCurUserVolumeIndex(void)
{
	u8 i;
	for(i=0;i<=USER_VOL_MAX;i++)
	{
		if(volume_MAP[i]>=(sound.tmp_sys_vol_l))
		{
			return i;
		}
	}
	return USER_VOL_MAX;
}

在音量加处理这里这样改
杰理AC692X系列---关于音量同步及电量显示(6)_第4张图片
这是音量减
杰理AC692X系列---关于音量同步及电量显示(6)_第5张图片
关于音量这方面的,也差不多是这样了,欢迎改正~共同进步!

你可能感兴趣的:(杰理)