[已解决]照明灯的音乐模式下发数据协议

蓝牙 BLE设备、蓝牙 MESH设备、蓝牙 Beacon设备、Sub-G设备等


Post Reply
oneway
Posts: 6

目前在音乐模式,播放音乐,通过串口可以看到收到的数据在变化,但是不知道该怎么处理,可以提供一份相关文档介绍吗?

TripleJay
Posts: 49

Re: [求助]照明灯的音乐模式下发数据协议

如下为压缩协议

音乐.png

如下为具体的解压代码(涂鸦IDE上light demo有相关源码),解压完就是iot平台里面产品公版音乐dp格式了

Code: Select all

int ty_light_basis_u_snprintf(char *buf, unsigned int size,const char *format, ...)
{
	int n=0;
	va_list args;
	va_start(args, format );
	n=print(&buf, format, args);
	if(n>=size)
	{
		buf[size-1]=0;
		n=size-1;
	}
	return n;
}

Code: Select all

OPERATE_LIGHT ty_light_basis_tools_music_data_decompress(const IN u8* input_buf, const IN u32 input_buf_len, OUT char* output_str)
{
    OPERATE_LIGHT opRet = 1;
    u8 output_str_tmp[22] = {0};
    if(NULL == input_buf || NULL == output_str) {
        return LIGHT_INVALID_PARM;
    }
    
u16 val_H, val_S, val_V, val_L, val_T = 0; u8 change_mode = (input_buf[0] >> 7) & 0x01; val_H = (((input_buf[0] >> 6) & 0x01) << 8) + input_buf[1]; val_S = (((input_buf[0] >> 2) & 0x03) << 8) + input_buf[2]; val_V = ((input_buf[0] & 0x03) << 8) + input_buf[3]; memset(output_str_tmp, 0, 22); ty_light_basis_u_snprintf(output_str_tmp, 22, "%01x%04x%04x%04x%04x%04x", change_mode, val_H, val_S, val_V, val_L, val_T); strncpy(output_str, output_str_tmp, 21); return LIGHT_OK; }

解压完后的数据格式

音乐2.png
oneway
Posts: 6

Re: [求助]照明灯的音乐模式下发数据协议

我在串口看到的APP下发的数据有8个字节,但是好像只有后面四个有变化,我是取后面四个字节解压缩吗?

Attachments
微信图片_20230419182407.jpg
TripleJay
Posts: 49

Re: [求助]照明灯的音乐模式下发数据协议

前四个字节是涂鸦mesh vendor model里标准dp的格式,只需要后四个字节数据解压
第一个字节 01 代表DP点,固定的
第二个字节 08 代表dp序号
第三个字节 00 代表raw类型数据
第四个字节 04 代表长度
如之前回复,可以通过IDE下载涂鸦light demo,里面有完整源码

oneway
Posts: 6

Re: [求助]照明灯的音乐模式下发数据协议

好的,非常感谢,主要是我司内外网隔离(还需要IT装),不太方便安装和使用IDE,因此看不了该部分源码

Post Reply