3 * Copyright (c) 2015 Intel Corporation.
5 * Permission is hereby granted, free of charge, to any person obtaining
6 * a copy of this software and associated documentation files (the
7 * "Software"), to deal in the Software without restriction, including
8 * without limitation the rights to use, copy, modify, merge, publish,
9 * distribute, sublicense, and/or sell copies of the Software, and to
10 * permit persons to whom the Software is furnished to do so, subject to
11 * the following conditions:
13 * The above copyright notice and this permission notice shall be
14 * included in all copies or substantial portions of the Software.
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 #define EXPECT_FAILURE 0
31 #define EXPECT_SUCCESS 1
33 void log_result(const char* test_name, const char* attr_name, mraa_boolean_t expect_success, mraa_result_t test_result)
37 result = test_result == MRAA_SUCCESS ? "PASS" : "FAIL";
39 result = test_result == MRAA_SUCCESS ? "FAIL" : "PASS";
40 fprintf(stdout, "%s(%s): %s\n", test_name, attr_name, result);
46 mraa_iio_context iio_device = mraa_iio_init(0);
52 if (iio_device == NULL) {
53 fprintf(stderr, "IIO device %d not found\n", 0);
56 fprintf(stderr, "Using IIO device %s\n", mraa_iio_get_device_name(iio_device));
58 attr_name = "in_accel_x_raw";
59 ret = mraa_iio_write_float(iio_device, attr_name, 100);
60 log_result("iio_write_float", attr_name, EXPECT_FAILURE, ret);
62 attr_name = "in_voltage0_scale";
63 ret = mraa_iio_write_float(iio_device, attr_name, 100);
64 log_result("iio_write_float", attr_name, EXPECT_FAILURE, ret);
66 attr_name = "out_voltage0_raw";
67 ret = mraa_iio_write_integer(iio_device, attr_name, 100);
68 log_result("iio_write_integer", attr_name, EXPECT_SUCCESS, ret);
70 attr_name = "in_accel_x_raw";
71 ret = mraa_iio_read_integer(iio_device, attr_name, &iio_integer);
72 ret = iio_integer == 34 ? MRAA_SUCCESS : MRAA_ERROR_UNSPECIFIED;
73 log_result("iio_read_integer", attr_name, EXPECT_SUCCESS, ret);
75 attr_name = "in_voltage0_scale";
76 ret = mraa_iio_read_float(iio_device, attr_name, &iio_float);
77 ret = fabs(iio_float - 0.001333) < FLT_EPSILON ? MRAA_SUCCESS : MRAA_ERROR_UNSPECIFIED;
78 log_result("iio_read_float", attr_name, EXPECT_SUCCESS, ret);
81 ret = mraa_iio_stop(iio_device);
82 log_result("iio_stop", attr_name, EXPECT_SUCCESS, ret);