示例#1
0
void ICACHE_FLASH_ATTR
led_object_pack(PARAMS * params)
{
	if(NULL == params)
	{
		PRINTF("Create first tlv param failed.\n");
		return;
	}

	struct led* led = create_led();
	led_get(led);

	if (add_next_uint8(params, led->red))
	{
		PRINTF("Add next tlv param failed.\n");
		return;
	}

	if (add_next_uint8(params, led->green))
	{
		PRINTF("Add next tlv param failed.\n");
		return;
	}

	if (add_next_uint8(params, led->blue))
	{
		PRINTF("Add next tlv param failed.\n");
		return;
	}

	delete_led(led);
}
void ICACHE_FLASH_ATTR
temperature_object_pack(PARAMS * params) {
	if(NULL == params){
		PRINTF("Create first tlv param failed.\n");
		return;
	}

	struct temperature* temperature = create_temperature();
	temperature_get(temperature);

	if (add_next_uint8(params, temperature->centigrade)){
		PRINTF("Add next param failed.\n");
		return;
	}

	delete_temperature(temperature);
}
示例#3
0
void ICACHE_FLASH_ATTR
plug_pwm_object_pack(PARAMS * params) {
	if(NULL == params){
		PRINTF("Create first tlv param failed.\n");
		return;
	}

	struct plug_pwm* plug_pwm = create_plug_pwm();
	plug_pwm_get(plug_pwm);

	if (add_next_uint8(params, plug_pwm->off_on)){
		PRINTF("Add next param failed.\n");
		return;
	}

	delete_plug_pwm(plug_pwm);
}
示例#4
0
struct sub_device_buffer * FUNCTION_ATTRIBUTE construct_sub_device_data()
{
	struct sub_device_buffer *data_buffer = NULL;
	struct TLVs *params_block = NULL;
    int ret = 0;

	uint16_t property_num = 0x1516;
    uint16_t property_num2 = 0x1122;
    uint16_t flag = 0;

	uint32_t data_param1 = 0xa1b2c3d4;
	uint8_t data_param2 = 0xc1;
	char data_param3[] = "test data";


    //create buffer, remember delete
	data_buffer = create_data_package(flag);
	if (data_buffer == NULL)
	{
		pd_printf("Create data package failed.");
	}

    
	params_block = create_params_block();

	if (params_block == NULL)
	{
		pd_printf("Create first tlv param failed.\n");
		return NULL;
	}

    if (add_next_uint32(params_block, data_param1))
	{
		delete_params_block(params_block);
		pd_printf("Add next tlv param failed.\n");
		return NULL;
	}
    
	if (add_next_uint8(params_block, data_param2))
	{
		delete_params_block(params_block);
		pd_printf("Add next tlv param failed.\n");
		return NULL;
	}

    if (add_next_bytes(params_block, strlen(data_param3), data_param3))
	{
		delete_params_block(params_block);
		pd_printf("Add next tlv param failed.\n");
		return NULL;
	}
	
	add_next_property(data_buffer, property_num, params_block);

    // once the params block has been added to data package
    //you must delete it even you are going to add another block to the package
	delete_params_block(params_block);

    //add different property    
    params_block = create_params_block();
    if (params_block == NULL)
	{
		pd_printf("Create first tlv param failed.\n");
		return NULL;
	}
    
	if (add_next_uint8(params_block, data_param2))
	{
		delete_params_block(params_block);
		pd_printf("Add next tlv param failed.\n");
		return NULL;
	}

    if (add_next_bytes(params_block, strlen(data_param3), data_param3))
	{
		delete_params_block(params_block);
		pd_printf("Add next tlv param failed.\n");
		return NULL;
	}

    ret = add_next_property(data_buffer, property_num2, params_block);
    
    if (ret != 0)
    {
        delete_params_block(params_block);
        pd_printf("add_next_property failed.");
        return NULL;
    }

    //do not forget to delete params block again
    delete_params_block(params_block);
    finish_package(data_buffer);
    
    show_package(data_buffer->buffer, data_buffer->buffer_length);
	return data_buffer;
}