api: Added C++ API for IIO
[contrib/mraa.git] / examples / iio_dummy_test.c
1 /*
2  * Author: Henry Bruce
3  * Copyright (c) 2015 Intel Corporation.
4  *
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:
12  *
13  * The above copyright notice and this permission notice shall be
14  * included in all copies or substantial portions of the Software.
15  *
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.
23  */
24
25 #include <unistd.h>
26 #include <math.h>
27 #include <float.h>
28 #include "mraa/iio.h"
29
30 #define EXPECT_FAILURE 0
31 #define EXPECT_SUCCESS 1
32
33 void log_result(const char* test_name, const char* attr_name, mraa_boolean_t expect_success, mraa_result_t test_result)
34 {
35     char* result;
36     if (expect_success)
37        result = test_result == MRAA_SUCCESS ? "PASS" : "FAIL";
38     else
39        result = test_result == MRAA_SUCCESS ? "FAIL" : "PASS";
40     fprintf(stdout, "%s(%s): %s\n", test_name, attr_name, result);
41 }
42
43 int
44 main()
45 {
46     mraa_iio_context iio_device = mraa_iio_init(0);
47     char* attr_name;
48     float iio_float;
49     int iio_integer;
50     mraa_result_t ret;
51
52     if (iio_device == NULL) {
53         fprintf(stderr, "IIO device %d not found\n", 0);
54         return EXIT_FAILURE;
55     }
56     fprintf(stderr, "Using IIO device %s\n", mraa_iio_get_device_name(iio_device));
57
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);
61
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);
65
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);
69
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);
74
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);
79
80     attr_name = "";
81     ret = mraa_iio_stop(iio_device);
82     log_result("iio_stop", attr_name, EXPECT_SUCCESS, ret);
83
84     return EXIT_SUCCESS;
85 }