Exemplo n.º 1
0
void print_basic_holder(const ZWay zway, ZWDataChangeType type,
		ZDataHolder data) {
	int int_val;

	zdata_get_integer(data, &int_val);
	zway_log(zway, Debug, ZSTR("Basic set value = %i"), int_val);
	int_val2 = int_val;
	printf("print, int_val : %d \n", int_val2);
}
variant_t*   command_class_eval_basic(const char* method, device_record_t* record, va_list args)
{
    variant_t* ret_val = NULL;

    if(strcmp(method, "Get") == 0)
    {
        zway_cc_basic_get(zway, record->nodeId, record->instanceId, NULL, NULL, NULL);
        zdata_acquire_lock(ZDataRoot(zway));
        ZDataHolder dh = zway_find_device_instance_data(zway, record->nodeId, record->instanceId, "level");
        int int_val;
        zdata_get_integer(dh, &int_val);
        ret_val = variant_create_int32(DT_INT32, int_val);
        zdata_release_lock(ZDataRoot(zway));
    }
    else if(strcmp(method, "Set") == 0)
    {
        variant_t* arg1 = va_arg(args, variant_t*);
        zway_cc_basic_set(zway, record->nodeId, record->instanceId, variant_get_byte(arg1), NULL, NULL, NULL);
    }
variant_t*  command_class_read_data(device_record_t* record, const char* path)
{
    variant_t* ret_val = NULL;
    zdata_acquire_lock(ZDataRoot(zway));
    ZDataHolder dh = zway_find_device_instance_cc_data(zway, record->nodeId, record->instanceId, record->commandId, path);

    ZWDataType type;
    zdata_get_type(dh, &type);

    switch(type)
    {
    case Integer:
        {
            int int_val;
            zdata_get_integer(dh, &int_val);
            ret_val = variant_create_int32(DT_INT32, int_val);
        }
        break;
    case String:
        {
            const char* string_val;
            zdata_get_string(dh, &string_val);
            ret_val = variant_create_string(strdup(string_val));
        }
        break;
    case Boolean:
        {
            ZWBOOL bool_val;
            zdata_get_boolean(dh, &bool_val);
            ret_val = variant_create_bool((bool)bool_val);
        }
        break;
    default:
        break;

    }
    zdata_release_lock(ZDataRoot(zway));
    return ret_val;
}
Exemplo n.º 4
0
void dump_data(const ZWay zway, ZDataHolder data) {
	char *path = zdata_get_path(data);
	ZWDataType type;
	zdata_get_type(data, &type);

	ZWBOOL bool_val;
	int int_val;
	float float_val;
	ZWCSTR str_val;
	const ZWBYTE *binary;
	const int *int_arr;
	const float *float_arr;
	const ZWCSTR *str_arr;
	size_t len, i;

	switch (type) {
	case Empty:
		zway_log(zway, Debug, ZSTR("DATA %s = Empty"), path);
		break;
	case Boolean:
		zdata_get_boolean(data, &bool_val);
		if (bool_val)
			zway_log(zway, Debug, ZSTR("DATA %s = True"), path);
		else
			zway_log(zway, Debug, ZSTR("DATA %s = False"), path);
		break;
	case Integer:
		zdata_get_integer(data, &int_val);
		zway_log(zway, Debug, ZSTR("DATA %s = %d (0x%08x)"), path, int_val,
				int_val);
		break;
	case Float:
		zdata_get_float(data, &float_val);
		zway_log(zway, Debug, ZSTR("DATA %s = %f"), path, float_val);
		break;
	case String:
		zdata_get_string(data, &str_val);
		zway_log(zway, Debug, ZSTR("DATA %s = \"%s\""), path, str_val);
		break;
	case Binary:
		zdata_get_binary(data, &binary, &len);
		zway_log(zway, Debug, ZSTR("DATA %s = byte[%d]"), path, len);
		zway_dump(zway, Debug, ZSTR("  "), len, binary);
		break;
	case ArrayOfInteger:
		zdata_get_integer_array(data, &int_arr, &len);
		zway_log(zway, Debug, ZSTR("DATA %s = int[%d]"), path, len);
		for (i = 0; i < len; i++)
			zway_log(zway, Debug, ZSTR("  [%02d] %d"), i, int_arr[i]);
		break;
	case ArrayOfFloat:
		zdata_get_float_array(data, &float_arr, &len);
		zway_log(zway, Debug, ZSTR("DATA %s = float[%d]"), path, len);
		for (i = 0; i < len; i++)
			zway_log(zway, Debug, ZSTR("  [%02d] %f"), i, float_arr[i]);
		break;
	case ArrayOfString:
		zdata_get_string_array(data, &str_arr, &len);
		zway_log(zway, Debug, ZSTR("DATA %s = string[%d]"), path, len);
		for (i = 0; i < len; i++)
			zway_log(zway, Debug, ZSTR("  [%02d] \"%s\""), i, str_arr[i]);
		break;
	}
	free(path);

	ZDataIterator child = zdata_first_child(data);
	while (child != NULL) {
		path = zdata_get_path(child->data);
		zway_log(zway, Debug, ZSTR("CHILD %s"), path);
		free(path);
		child = zdata_next_child(child);
	}
	//printf("intval : %d \n", int_val);
}