Private
Public Access
2
0

iio: iio consolidate read and write API

Signed-off-by: Lay, Kuan Loon <kuan.loon.lay@intel.com>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
Lay, Kuan Loon
2015-11-04 18:08:15 +08:00
committed by Brendan Le Foll
parent 219632a1b8
commit edb7f8a215
3 changed files with 123 additions and 66 deletions

View File

@@ -203,27 +203,84 @@ mraa_iio_get_device_num_by_name(const char* name)
}
mraa_result_t
mraa_iio_read(mraa_iio_context dev, const char* attr_chan, float* data)
mraa_iio_read_float(mraa_iio_context dev, const char* filename, float* data)
{
char buf[MAX_SIZE];
snprintf(buf, MAX_SIZE, IIO_SYSFS_DEVICE "%d/%s", dev->num, attr_chan);
int fd = open(buf, O_RDONLY);
if (fd != -1) {
int len = read(fd, &buf, MAX_SIZE);
*data = strtol(buf, NULL, 10);
snprintf(buf, MAX_SIZE, IIO_SYSFS_DEVICE "%d/%s", dev->num, filename);
FILE* fp = fopen(buf, "r");
if (fp != NULL) {
fscanf(fp, "%f\n", data);
fclose(fp);
return MRAA_SUCCESS;
}
return MRAA_ERROR_UNSPECIFIED;
}
mraa_result_t
mraa_iio_write(mraa_iio_context dev, const char* attr_chan, const char* data)
mraa_iio_read_integer(mraa_iio_context dev, const char* filename, int* data)
{
char buf[128];
snprintf(buf, 128, IIO_SYSFS_DEVICE "%d/%s", dev->num, attr_chan);
int fd = open(buf, O_WRONLY);
if (fd != -1) {
write(fd, data, (strlen(data) + 1));
char buf[MAX_SIZE];
snprintf(buf, MAX_SIZE, IIO_SYSFS_DEVICE "%d/%s", dev->num, filename);
FILE* fp = fopen(buf, "r");
if (fp != NULL) {
fscanf(fp, "%d\n", data);
fclose(fp);
return MRAA_SUCCESS;
}
return MRAA_ERROR_UNSPECIFIED;
}
mraa_result_t
mraa_iio_read_string(mraa_iio_context dev, const char* filename, char* data)
{
char buf[MAX_SIZE];
snprintf(buf, MAX_SIZE, IIO_SYSFS_DEVICE "%d/%s", dev->num, filename);
FILE* fp = fopen(buf, "r");
if (fp != NULL) {
fscanf(fp, "%s\n", data);
fclose(fp);
return MRAA_SUCCESS;
}
return MRAA_ERROR_UNSPECIFIED;
}
mraa_result_t
mraa_iio_write_float(mraa_iio_context dev, const char* filename, const float data)
{
char buf[MAX_SIZE];
snprintf(buf, MAX_SIZE, IIO_SYSFS_DEVICE "%d/%s", dev->num, filename);
FILE* fp = fopen(buf, "w");
if (fp != NULL) {
fprintf(fp, "%f", data);
fclose(fp);
return MRAA_SUCCESS;
}
return MRAA_ERROR_UNSPECIFIED;
}
mraa_result_t
mraa_iio_write_integer(mraa_iio_context dev, const char* filename, const int data)
{
char buf[MAX_SIZE];
snprintf(buf, MAX_SIZE, IIO_SYSFS_DEVICE "%d/%s", dev->num, filename);
FILE* fp = fopen(buf, "w");
if (fp != NULL) {
fprintf(fp, "%d", data);
fclose(fp);
return MRAA_SUCCESS;
}
return MRAA_ERROR_UNSPECIFIED;
}
mraa_result_t
mraa_iio_write_string(mraa_iio_context dev, const char* filename, const char* data)
{
char buf[MAX_SIZE];
snprintf(buf, MAX_SIZE, IIO_SYSFS_DEVICE "%d/%s", dev->num, filename);
FILE* fp = fopen(buf, "w");
if (fp != NULL) {
fprintf(fp, "%s", data);
fclose(fp);
return MRAA_SUCCESS;
}
return MRAA_ERROR_UNSPECIFIED;
@@ -351,34 +408,6 @@ mraa_iio_get_event_data(mraa_iio_context dev)
return MRAA_SUCCESS;
}
mraa_result_t
mraa_iio_event_read(mraa_iio_context dev, const char* attribute, float* data)
{
char buf[MAX_SIZE];
snprintf(buf, MAX_SIZE, IIO_SYSFS_DEVICE "%d/" IIO_EVENTS "/%s", dev->num, attribute);
int fd = open(buf, O_RDONLY);
if (fd != -1) {
int len = read(fd, &buf, MAX_SIZE);
*data = strtol(buf, NULL, 10);
return MRAA_SUCCESS;
}
return MRAA_ERROR_UNSPECIFIED;
}
mraa_result_t
mraa_iio_event_write(mraa_iio_context dev, const char* attribute, const char* data)
{
int len;
char buf[MAX_SIZE];
snprintf(buf, MAX_SIZE, IIO_SYSFS_DEVICE "%d/" IIO_EVENTS "/%s", dev->num, attribute);
int fd = open(buf, O_WRONLY);
if (fd != -1) {
int len = write(fd, data, (strlen(data) + 1));
return MRAA_SUCCESS;
}
return MRAA_ERROR_UNSPECIFIED;
}
static mraa_result_t
mraa_iio_event_poll_nonblock(int fd, struct iio_event_data* data)
{