+++ /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;
-}