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); }
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); }
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; }