6
#include <sys/socket.h>
12
#define DLLNAME "libFullAreaGray8.so"
13
#define read_socket "/tmp/pfserver.socket"
18
int handleError(error)
22
s = pfGetErrorString(error);
24
printf("Error: %s\n", s);
26
printf("Warning: %s\n", s);
32
int request(char *data, const char *prop, const char *val) {
34
char name[50], manu[50];
35
int mBytes, nBytes, version, type;
39
//show info about port to open
40
pfPortInfo(port, manu, &mBytes, name, &nBytes, &version, &type);
43
error = pfDeviceOpen(port);
53
//Check if higher baud rate is supported
54
error = pfIsBaudRateSupported(port, 115200);
56
error = pfSetBaudRate(port, 115200);
63
error = pfIsBaudRateSupported(port, 57600);
65
error = pfSetBaudRate(port, 57600);
74
t = pfProperty_ParseName(port, prop);
75
if (t == INVALID_TOKEN) {
76
printf("Property '%s' not found or bad index\n", prop);
82
error = pfDevice_SetProperty_String(port, t, val);
84
error = pfDevice_GetProperty_String(port, t, data, 64);
87
error = pfDevice_GetProperty_String(port, t, data, 64);
107
int main(int argc, char * argv[]) {
115
signal (SIGPIPE, SIG_IGN);
117
pfPortInit(&numOfPorts);
120
arg = strtoul(argv[1], &tmp, 10);
123
if (port >= numOfPorts){
131
// Open sockets for reading and writing?!
133
int sockRead = socket (PF_UNIX, SOCK_STREAM, 0);
136
if ( setsockopt( sockRead, SOL_SOCKET, SO_REUSEADDR,
137
(const char *) &on, sizeof(on) ) < 0)
138
perror("setsockopt(...,SO_REUSEADDR,...)");
140
// Give the socket a name.
141
struct sockaddr_un name;
142
memset(&name, 0, sizeof(name));
143
name.sun_family = AF_UNIX;
144
strncpy(name.sun_path,read_socket,sizeof(name.sun_path));
145
name.sun_path[sizeof(name.sun_path)-1]=0;
147
if (bind (sockRead, (struct sockaddr *) &name, sizeof (name)) < 0)
150
// Listen to the ports
151
if (listen (sockRead, 10) < 0)
154
chmod(read_socket, 0666);
156
// Add to select set?!
157
fd_set active_fd_set;
158
fd_set select_fd_set;
160
FD_ZERO (&active_fd_set);
161
FD_SET (sockRead, &active_fd_set);
165
struct sockaddr_un clientname;
171
select_fd_set = active_fd_set;
173
status = select (FD_SETSIZE, &select_fd_set, NULL, NULL, NULL);
174
if ((status > 0)&&(FD_ISSET(sockRead, &select_fd_set))) {
176
//printf("New client connected for reading from camera\n");
177
size = sizeof (clientname);
178
if ((sockNew = accept (sockRead,(struct sockaddr *) &clientname, &size)) < 0){
182
// Transmit the requested number of bytes from the calling side !!!
184
res = read(sockNew, msg, 2048);
186
msg[res] = 0; // Terminate string
188
tmp = strchr(msg, ' ');
189
if (tmp) *(tmp++) = 0;
191
err = request(data, msg, tmp);
192
// retrying in case of error
193
if (err) err = request(data, msg, tmp);
195
if (err) strcpy(data, "-1");
200
write(sockNew, data, strlen(data));
203
} // end of status > 0