Page 1 of 1

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

Posted: 2023年 Apr 19日 17:17
by oneway

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


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

Posted: 2023年 Apr 19日 18:04
by TripleJay

如下为压缩协议

音乐.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

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

Posted: 2023年 Apr 19日 18:31
by oneway

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


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

Posted: 2023年 Apr 19日 19:51
by TripleJay

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


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

Posted: 2023年 Apr 20日 09:28
by oneway

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