Ejemplo n.º 1
0
static ssize_t
soc_write(struct _reent *r,
          int           fd,
          const char    *ptr,
          size_t        len)
{
	Handle sockfd = *(Handle*)fd;
	return soc_sendto(sockfd, ptr, len, 0, NULL, 0);
}
Ejemplo n.º 2
0
void EmPingSendPkt(void)
{
   kal_uint16 i = 0;
   kal_uint16 j = 0;
   kal_bool    ret_val = KAL_FALSE;
   kal_int16  ret = 0;
   
   for(j = PING_CONTEXT_INFO(currCount); j < PING_CONTEXT_INFO(pingCount);j++)
   {
      PING_CONTEXT_INFO(pingStartFN) = 0;
      PING_CONTEXT_INFO(pingEndFN) = 0;

      kal_mem_set(PING_CONTEXT_INFO(echo_req), 0, PING_CONTEXT_INFO(pingSize)+8);
      
      PING_CONTEXT_INFO(echo_req[0]) = 8;//echo req

      PING_CONTEXT_INFO(echo_req[4]) = 0;//identifier
      PING_CONTEXT_INFO(echo_req[5]) = 100;

      PING_CONTEXT_INFO(echo_req[6]) = (kal_uint8)(PING_CONTEXT_INFO(seqNo) >> 8);//seq no
      PING_CONTEXT_INFO(echo_req[7]) = (kal_uint8)(PING_CONTEXT_INFO(seqNo) & 0x00ff);
      
      for(i=8;i<PING_CONTEXT_INFO(pingSize);i++)//dummy data
         PING_CONTEXT_INFO(echo_req[i])= (kal_uint8)(j+1);

      //there are two choices: connect->send or sendto
      //where addr specifies the destionation of ping
      //sendto directly
      ret = soc_sendto(PING_CONTEXT_INFO(socketId),PING_CONTEXT_INFO(echo_req), 
         (PING_CONTEXT_INFO(pingSize)+8), 0, &PING_CONTEXT_INFO(pingSrvAddr));
      if(ret != (PING_CONTEXT_INFO(pingSize)+8))
      {
         if(ret == SOC_WOULDBLOCK)
         {
            kal_print("Socket said send it later");
            return;
         }
         
         kal_print("send ping error");
         soc_close(PING_CONTEXT_INFO(socketId));
         if(PING_CONTEXT_INFO(echo_req) != NULL)
         {
            OslMfree(PING_CONTEXT_INFO(echo_req));
         }
         if(PING_CONTEXT_INFO(echo_rsp) != NULL)
         {
            OslMfree(PING_CONTEXT_INFO(echo_rsp));
         }
         PING_CONTEXT_INFO(echo_req) = NULL;
         PING_CONTEXT_INFO(echo_rsp) = NULL;
         PING_CONTEXT_INFO(state) = PING_INACTIVE;

         return;

      }
      else
      {
         EmPingStartTimer(PING_CONTEXT_INFO(seqNo));
         //PING_CONTEXT_INFO(currCount)++;
         PING_CONTEXT_INFO(seqNo)++;
         PING_CONTEXT_INFO(pingStartFN) = TMD_System_Clock;
      }

      ret_val = EmPingRecvPkt();

      if(ret_val == KAL_FALSE)
      {
         break;
      }
   }

   return;
}
Ejemplo n.º 3
0
ssize_t soc_send(int sockfd, const void *buf, size_t len, int flags)
{
    return soc_sendto(sockfd, buf, len, flags, NULL, 0);
}