39#include "ace/SOCK_Dgram.h" 
   41#include "ace/Thread.h" 
   42#include "ace/Logging_Strategy.h"    
   58#include "OPCprotocolManager.h" 
   59#include "OPCprotocolManager_Cfg.h" 
   80#define DEFAULT_LOCAL_IP        "10.0.1.104" 
   81#define DEFAULT_PORT            4444 
   82#define PAYLOAD_MAX_SIZE        128 
  128static void s_check_seqNum(ACE_INET_Addr src_addr, uint32_t recseqnum);
 
  132  printf(
"\n Received signal to quit %d\n", _signum);
 
 
  138int main(
int argc, 
char *argv[])
 
  144    ACE_UINT32      ip1,ip2,ip3,ip4;
 
  147    uint16_t payload_size = 0;
 
  149    ACE_thread_t id_recvThread; 
 
  151    uint32_t byte2send = 0;
 
  170        for(
int i = 1; i < argc; i++)
 
  173            if(strcmp(
"--loc-ip", argv[i]) == 0 )
 
  180            if(strcmp(
"--port", argv[i]) == 0 )
 
  183                    port = atoi(argv[++i]);
 
  187            if((strcmp(
"-h", argv[i]) == 0) || (strcmp(
"--help", argv[i]) == 0))
 
  200    printf(
"\nConfiguration is : \n\n");
 
  204    sscanf(local.
address_string.c_str(),
"%d.%d.%d.%d",&ip1,&ip2,&ip3,&ip4);
 
  205    local.
addr.set(port, (ip1<<24)|(ip2<<16)|(ip3<<8)|ip4 );
 
  212        printf(
"Error opening socket!!!\n");
 
  217    ACE_socket->get_option(SOL_SOCKET,SO_RCVBUF,(
void *)&
n, &m);
 
  218    printf(
"SO_RCVBUF %d\n", 
n);
 
  219    ACE_socket->get_option(SOL_SOCKET,SO_SNDBUF,(
void *)&
n, &m);
 
  220    printf(
"SO_SNDBUF %d\n", 
n);
 
  221    ACE_socket->get_option(SOL_SOCKET,SO_RCVLOWAT,(
void *)&
n, &m);
 
  222    printf(
"SO_RCVLOWAT %d\n", 
n);
 
  240    printf(
"Launching recvThread\n");
 
  241    if(ACE_Thread::spawn((ACE_THR_FUNC)
recvThread, NULL, THR_CANCEL_ENABLE, &id_recvThread)==-1)
 
  243        printf((
"Error in spawning recvThread\n"));
 
  248    opcMan_ptr = opcprotman_New(OPCprotocolManager_Cfg_getconfig());
 
  251        printf(
"Error in creating opcprotman\n!");
 
  259        char in_cmd[10], aux[2];
 
  263        ret = scanf(
"%s", in_cmd);
 
  265        if((strcmp(
"quit", in_cmd) == 0 ))
 
  272            n_cmd = atoi(in_cmd);
 
  321                    printf(
"Command not known!\n");
 
  327                    ssize_t sentBytes = 
ACE_socket->send(&payload_buffer[0], byte2send, remote.
addr, 0);
 
  328                    ACE_TCHAR     address[64];                  
 
  329                    remote.
addr.addr_to_string(address, 64);
 
  330                    printf(
"payload of size %d is sent to %s!! (sentbytes=%ld)\n",  byte2send, address, sentBytes);
 
  334                    printf(
"nothing to send");
 
  343    printf(
"mainThraed: exit from while..going to sleep\n");
 
  346    printf(
"mainThraed: exit from sleep\n");
 
  348    ACE_Thread::cancel(id_recvThread);
 
 
  361    printf(
"recvThread started\n");
 
  365    size_t rec_payload_size = 0;
 
  366    uint16_t replysize = 0;
 
  367    ACE_INET_Addr src_addr;
 
  368        ACE_TCHAR     address[64];
 
  369    opcprotman_res_t res;
 
  372    sockaddr                    sender_addr;
 
  378        src_addr.addr_to_string(address, 64);
 
  379        printf(
"\n\nReceived pkt of size = %ld from %s\n",  rec_payload_size, address);
 
  388        res = opcprotman_Parse(
opcMan_ptr, (opcprotman_message_t*)&rec_payload_buffer[0], (opcprotman_message_t*) &replay_payload_buffer[0], &replysize);
 
  389        if(opcprotman_OK  != res)
 
  391            printf(
"erron in parser\n");
 
  396    printf(
"recThraed: exit from while\n");
 
 
  407    printf(
"usage: \t\t--help       print this help\n");
 
  408    printf(
"\t\t--loc-ip  <xx>  set the ip address of the local machine - needed by yarp - by default %s\n", 
DEFAULT_LOCAL_IP);
 
  409    printf(
"\t\t--port    <xx>  set the socket port - by default %d\n", 
DEFAULT_PORT);
 
 
  417    uint32_t addr = src_addr.get_ip_address();
 
  419    board = addr- 0xa000100;
 
  422        printf(
"error in get board: num=%d, addr=%d\n", 
board, addr );
 
  428        printf(
"seqnum first board %d num %d\n", 
board, recseqnum);
 
  435        printf(
"error in SEQ NUM form board %d: rec %d expected = %d\n",
board, recseqnum, 
seqnumList[
board] +1);
 
  440        printf(
"received SEQ NUM from board %d:  %d\n",
board, recseqnum);
 
 
OPCprotocolManager * opcMan_ptr
 
void * recvThread(void *arg)
 
opcprotman_cfg_t * get_OPCprotocolManager_cfg(void)
 
ACE_SOCK_Dgram * ACE_socket
 
static void s_check_seqNum(ACE_INET_Addr src_addr, uint32_t recseqnum)
 
static void sighandler(int _signum)
 
static uint8_t isfirstList[10]
 
static uint32_t seqnumList[10]