Code: Select all
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <sys/signal.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <asm/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/hiddev.h>
#include <time.h>
#include <linux/input.h>
#include <linux/ioctl.h>
#include "iowarrior.h"
// for iowarrior
int fd1 = -1; // file desc
unsigned long value = 0xFFFFFFFF;
int echofunk(int sockfd);
void sig_chld(int signo);
int echofunk(int sockfd)
{
ssize_t bytes;
char buffer[150];
memset(buffer, '\0', sizeof(buffer));
while( (bytes = read(sockfd, buffer, sizeof(buffer))) > 0) {
if (index(buffer,'=')==buffer)
{
if(write(sockfd, "OK\n", sizeof("OK\n")) != sizeof("OK\n"))
return -1;
value=strtoll(buffer+1,NULL,16);
ioctl( fd1, IOW_WRITE, &value );
}
buffer[bytes] = '\0';
memset(buffer,'\0',sizeof(buffer));
}
}
void sig_chld(int signo)
{
pid_t pid;
int stat;
pid = wait(&stat);
return;
}
int main(void)
{
if(( fd1 = open( "/dev/usb/iowarrior0", O_RDWR)) < 0 )
{
// problems opening iowarrior
perror( "iowarrior0 open - not connected? - module not loaded?" );
exit( 1 );
}
pid_t pid;
int sockfd, connfd;
struct sockaddr_in servaddr;
memset(&servaddr, '\0',sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(235);
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd < 0)
{
printf("cannot creat socket\n");
return -1;
}
bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
listen(sockfd, 12);
signal(SIGCHLD,sig_chld);
while(1)
{
connfd = accept(sockfd, (struct sockaddr *)NULL,NULL);
if( (pid = fork()) == 0)
{
close(sockfd);
echofunk(connfd);
exit(0);
}
close(connfd);
}
return 0;
}
ein:
Code: Select all
$ echo "=FFFFFFFF" | nc HOSTNAME 235 -q 0
Dieses stück code ist erstmal schnell auf die funktionalität die ich brauchte zusammengehackt (2h) - ich denke ich mach das aber noch sauberer da es nützlich sein kann. Auch mehr funktionalität soll folgen - hab auch schon einige Ideen - aber wenns hier noch hinweise gibt sinn die nat. wellcome.
Habe auch schon ein subversion resp fuer dieses Projekt eingerichtet also wer interesse drann hat einfach ma ne mail an ligi@egabriel.de
PS: Momentan is der Signalweg meines Projektes folgender ( nur weils so spassig wireless iss ):
Nokia NGage---(bluetooth-serial)--->Notebook----(WLAN-tcp)---->server mit IOWarrior----(Funksteckdosen)----->Licht/Anlage/Kaffe.