Esempio n. 1
0
static void debug_print_object(int number) {
	int i;
	zword_t addr, len;
	
    glk_printf("Object %d:\nName: \"", number);
    print_object_name(number);
    glk_put_string("\"\nAttributes: ");
	for (i = 0; i < (zGameVersion < Z_VERSION_4 ? 32 : 48); i++) {
		if (get_attribute(number, i))
			glk_printf("%d ", i);
	} 
    glk_printf("\nParent: %3d \"", object_parent(number));
    print_object_name(object_parent(number));
    glk_printf("\"\nSibling: %3d \"", object_sibling(number));
    print_object_name(object_sibling(number));
    glk_printf("\"\nChild: %3d \"", object_child(number));
    print_object_name(object_child(number));
    glk_put_string("\"\nProperties:\n");
	i = 0;
	while (i = get_next_property(number, i)) {
		glk_printf("    [%2d] ", i);
		addr = get_property_address(number, i);
		for (len = get_property_length(addr); len > 0; len--)
			glk_printf("%02x ", get_byte(addr++));
		glk_put_string("\n");
	}
}
/*******************************************************
 * Description: 
 * param
 * return:
 *********************************************************/ 
struct TLVs * FUNCTION_ATTRIBUTE get_sub_device_property(
    struct sub_device_buffer *device_buffer, 
    struct pando_property *property_body)
{
    struct pando_property *tmp_body = NULL;
    struct device_header *head = NULL;

    //reach the end of buffer
    if (s_current_property.position == device_buffer->buffer_length
        || s_current_property.position > device_buffer->buffer_length)
    {
        s_current_property.position = 0;
        return NULL;
    }
    
    if (s_current_property.position == 0)
    {
        //first property, need handle header length
        s_current_property.position += DEV_HEADER_LEN;
        head = (struct device_header *)device_buffer->buffer;
	    base_params.data_sequence = net32_to_host(head->frame_seq);
    }    

    tmp_body = (struct pando_property *)(device_buffer->buffer
            + s_current_property.position);

    s_current_property.position += sizeof(struct pando_property);
    
	return get_next_property(tmp_body, property_body);
}