forked from ROMEO/obsw
portable device access api based on unix file descriptors
This commit is contained in:
28
bsp_linux/hardware/hardware.c
Normal file
28
bsp_linux/hardware/hardware.c
Normal file
@ -0,0 +1,28 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/un.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <hardware/interfaces.h>
|
||||
|
||||
extern const char *device_root;
|
||||
|
||||
int hw_device_open(const char *path, size_t path_len) {
|
||||
int sock;
|
||||
if ((sock = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) {
|
||||
perror(NULL);
|
||||
exit(-1);
|
||||
}
|
||||
struct sockaddr_un address;
|
||||
address.sun_family = AF_UNIX;
|
||||
snprintf(address.sun_path, sizeof(address.sun_path), "%s%.*s", device_root,
|
||||
path_len, path);
|
||||
if (connect(sock, (struct sockaddr *)&address, sizeof(address)) != 0) {
|
||||
perror(NULL);
|
||||
exit(-1);
|
||||
}
|
||||
return sock;
|
||||
}
|
Reference in New Issue
Block a user