summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/misc/apds990x_proxy.c42
1 files changed, 29 insertions, 13 deletions
diff --git a/drivers/misc/apds990x_proxy.c b/drivers/misc/apds990x_proxy.c
index ba6ea3d..5474f5e 100644
--- a/drivers/misc/apds990x_proxy.c
+++ b/drivers/misc/apds990x_proxy.c
@@ -31,6 +31,8 @@
struct device {
unsigned int n;
+ int prox;
+
char *power;
char *prox_en;
char *prox_raw;
@@ -75,31 +77,45 @@ int write_file(char *fname, const char *val)
int read_proxy(void)
{
- int i, fd;
+ unsigned int i;
+ int fd, retval = 0;
ssize_t ret;
char val[6];
- fd = open(apds990x_dev.prox_raw, O_RDONLY);
- if (fd < 0) {
- fprintf(stderr, "%s: %s\n", apds990x_dev.prox_raw,
+ for (i = 0; i < apds990x_dev.n; i++) {
+ sleep(1);
+
+ fd = open(apds990x_dev.prox_raw, O_RDONLY);
+ if (fd < 0) {
+ retval = errno;
+ fprintf(stderr, "%s: %s\n", apds990x_dev.prox_raw,
strerror(errno));
- return errno;
- }
+ return retval;
+ }
- for (i = 0; i < apds990x_dev.n; i++) {
- ret = read(fd, val, 5);
- if (!ret) {
+ ret = read(fd, val, sizeof(val));
+ if (ret < 0) {
+ retval = errno;
fprintf(stderr, "%s: %s\n",
apds990x_dev.prox_raw, strerror(errno));
break;
}
- val[ret] = '\0';
- printf("%s\n", val);
- sleep(1);
+ /* replace EOF with \n */
+ val[ret-1] = '\n';
+ apds990x_dev.prox = (int) strtol(val, NULL, 10);
+ printf("%d\n", apds990x_dev.prox);
+
+ fd = close(fd);
+ if (fd < 0) {
+ retval = errno;
+ fprintf(stderr, "%s: %s\n", apds990x_dev.prox_raw,
+ strerror(errno));
+ break;
+ }
}
- return errno;
+ return retval;
}
void print_usage(char *name)