--- /dev/null
+/***************************************************************************
+ * test_server.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"
+
+typedef enum { GREEN, RED } led_color_t;
+
+void initTS7200()
+{
+ printf( "TS-7200 initialized\n" );
+}
+
+void switchOnLed( led_color_t color )
+{
+ switch( color )
+ {
+ case GREEN:
+ printf( "Green led switched on\n" );
+ break;
+ case RED:
+ printf( "Red led switched on\n" );
+ break;
+ default:
+ printf( "Unknown led!\n" );
+ }
+}
+
+void switchOffLed( led_color_t color )
+{
+ switch( color )
+ {
+ case GREEN:
+ printf( "Green led switched off\n" );
+ break;
+ case RED:
+ printf( "Red led switched off\n" );
+ break;
+ default:
+ printf( "Unknown led!\n" );
+ }
+}
+
+int openNota( int *sock, nota_addr_t *addr )
+{
+ int err;
+ *sock = Hsocket( Hgetinstance(), AF_NOTA, SOCK_STREAM, 0 );
+ if(sock < 0)
+ {
+ perror( "Hsocket" );
+ return -1;
+ }
+
+ err = Hbind( Hgetinstance(), *sock, (struct sockaddr*) addr, sizeof(*addr) );
+ if( err != 0 )
+ {
+ Hclose( Hgetinstance(), *sock );
+ perror( "Hbind" );
+ return -1;
+ }
+
+ return 0;
+}
+
+int waitForConnection( int sock )
+{
+ int err, client;
+ err = Hlisten( Hgetinstance(), sock, 1 );
+ if(err != 0) {
+ Hclose( Hgetinstance(), sock );
+ perror( "Hlisten" );
+ return -1;
+ }
+
+ client = Haccept( Hgetinstance(), sock, NULL, NULL );
+ if( client < 0 )
+ {
+ Hclose( Hgetinstance(), sock );
+ perror( "Haccept" );
+ return -1;
+ }
+ return client;
+}
+
+char processCmd( char cmd )
+{
+ switch( cmd )
+ {
+ case 'P':
+ switchOffLed( GREEN );
+ switchOffLed( RED );
+ break;
+ case 'F':
+ switchOnLed( RED );
+ break;
+ default:
+ cmd = '?';
+ }
+
+ return cmd;
+}
+
+void startServer( nota_addr_t *addr )
+{
+ int sock, client, err;
+ char buf;
+
+ if (openNota( &sock, addr ) != 0)
+ {
+ printf( "openNota error!\n" );
+ return;
+ }
+ printf( "Waiting for connection ...\n" );
+ switchOnLed( GREEN );
+
+ client = waitForConnection( sock );
+ if (client <= 0)
+ {
+ printf( "waitForConnection error!\n" );
+ return;
+ }
+
+ printf( "Server started and connected\n" );
+
+ while( 1 )
+ {
+
+ err = Hrecv( Hgetinstance(), client, &buf, 1, 0 );
+ if(err != 1) {
+ perror( "Hrecv" );
+ break;
+ }
+ printf( "Recived: %c\n", buf );
+
+ buf = processCmd( buf );
+
+ err = Hsend( Hgetinstance(), client, &buf, 1, 0 );
+ if(err != 1) {
+ perror( "Hsend" );
+ break;
+ }
+
+ break;
+ }
+
+ Hclose( Hgetinstance(), client );
+ Hclose( Hgetinstance(), sock );
+
+}
+
+int main( int argc, char *argv[] )
+{
+ int sid;
+
+ if (argc != 2)
+ {
+ printf( "Usage: ./test_server sid\n" );
+ exit( 1 );
+ }
+
+ sid = atoi( argv[1] );
+
+ nota_addr_t addr;
+ addr.sid = sid;
+ addr.port = DEFAULT_PORT;
+
+ initTS7200();
+ switchOnLed( GREEN );
+ switchOffLed( RED );
+// sleep( 1 );
+
+ printf( "Test server is registered with sid: %d\n", sid );
+
+ while( 1 )
+ {
+ switchOffLed( GREEN );
+ startServer( &addr );
+ }
+
+ return 0;
+}