--- /dev/null
+/***************************************************************************
+ * ts7200_client.c
+ *
+ * Wed Nov 18 10:46:06 2009
+ * Copyright 2009 Bartlomiej Swiercz
+ * <bartlomiej.swiercz@teleca.com>
+ ****************************************************************************/
+
+#include <stdio.h>
+#include <errno.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include "ts7200_client.h"
+
+ACT_STATE act_connect( sid_t sid, int *sock )
+{
+ nota_addr_t addr = { sid, DEFAULT_PORT };
+ int err;
+
+ *sock = Hsocket( Hgetinstance(), AF_NOTA, SOCK_STREAM, 0 );
+ if(sock < 0)
+ {
+ perror( "Hsocket" );
+ return HSOCKET_ERR;
+ }
+
+ err = Hconnect( Hgetinstance(), *sock, (struct sockaddr*) &addr, sizeof(addr) );
+ if( err < 0 )
+ {
+ Hclose( Hgetinstance(), *sock );
+ perror( "Hconnect" );
+ return HCONNECT_ERR;
+ }
+
+ return OK;
+
+}
+
+ACT_STATE act_send( int sock, char cmd )
+{
+ int err;
+ err = Hsend( Hgetinstance(), sock, &cmd, 1, 0 );
+ if(err != 1) {
+ Hclose( Hgetinstance(), sock );
+ perror( "Hsend" );
+ return HSEND_ERR;
+ }
+
+ return OK;
+}
+
+ACT_STATE act_recv( int sock, char *resp )
+{
+ int err;
+ err = Hrecv( Hgetinstance(), sock, resp, 1, 0 );
+ if(err != 1) {
+ Hclose( Hgetinstance(), sock );
+ perror( "Hrecv" );
+ return HRECV_ERR;
+ }
+
+ return OK;
+}
+
+void act_close( int sock )
+{
+ Hclose( Hgetinstance(), sock );
+}
+
+ACT_STATE act_run_cmd( sid_t sid, ACT_CMD cmd )
+{
+ int err, sock, resp;
+ char buf;
+ err = act_connect( sid, &sock );
+ if ( err != OK ) return NOTCONNECTED;
+
+ switch ( cmd )
+ {
+ case PING:
+ act_send( sock, 'P' );
+ act_recv( sock, &buf );
+ if (buf == 'P')
+ resp = CONNECTED;
+ else
+ resp = NOTCONNECTED;
+ break;
+
+ case FACE_DETECTED:
+ act_send( sock, 'F' );
+ act_recv( sock, &buf );
+ if (buf == 'F')
+ resp = CONNECTED;
+ else
+ resp = NOTCONNECTED;
+ break;
+
+ default:
+ resp = WEIRD;
+ break;
+ }
+
+ act_close( sock );
+
+ return resp;
+}
+