bool AsixDOFPawn::OurTick(float DeltaSeconds) 
{ 
	bool ret = false;
    char buf[BUFLEN];
	struct sockaddr_in si_other;
	int slen = sizeof(si_other) , recv_len = 0;
	char temp_str[256];
    double *telem;

    if (m_socket == -1)
    {
        return ret;
    }
	if ((recv_len = recvtimeout(AsixDOFPawn::m_socket, buf, BUFLEN, 10 ,(struct sockaddr *) &si_other, (socklen_t *)&slen)) == -1)
	{   
        printf("error is : %s\n", strerror(errno));
	}

	if (recv_len > 0)
	{
        telem = (double*) buf;
        double utm_x = telem[0];
        double utm_y = telem[1];
        double alt = telem[2];
        double roll = telem[3];
        double pitch = telem[4];
        double yaw = telem[5];
        double vx = telem[6];
        double vy = telem[7];
        double vz = telem[8];

        m_vx = vx;
    	m_vy = vy;
    	m_vz = vz;

       	m_Deltaroll =  roll  - m_roll;
       	m_Deltapitch = pitch - m_pitch;
		m_Deltayaw =   yaw   - m_yaw;
		//printf("Delta --> %f %f %f \n",m_Deltaroll, m_Deltapitch, m_Deltayaw );
		
		m_roll  = roll;
		m_pitch = pitch;
		m_yaw   = yaw;
		/*
		double vzp = vx*sin(pitch* PI / 180.0);
		double vzr = vy*sin(roll* PI / 180.0);
		
		m_vz = vz + vzp + vzr;
		m_vx = vx + vx * cos(pitch* PI / 180.0);
		m_vy = vy + vy * cos(roll* PI / 180.0);
		*/
		printf("6 --> %f %f %f %f %f %f \n",m_vx, m_vy, m_vz, pitch, roll, yaw );
		ret = true;
    }
    return ret;
}
Ejemplo n.º 2
0
int request(const int sock, const struct sockaddr_in6 *client_addr, const char *request, bool sse, double timeout) {
  ssize_t ret;
  char buffer[8192];

  ret = sendto(sock, request, strlen(request), 0, (struct sockaddr *)client_addr, sizeof(struct sockaddr_in6));

  if (ret < 0) {
    perror("Error in sendto()");
    exit(EXIT_FAILURE);
  }

  struct timeval tv_timeout, tv_offset;
  tv_timeout.tv_sec = (int) timeout;
  tv_timeout.tv_usec = ((int) (timeout * 1000000)) % 1000000;

  getclock(&tv_offset);

  while (1) {
    ret = recvtimeout(sock, buffer, sizeof(buffer), 0, &tv_timeout, &tv_offset);

    if (ret < 0)
      break;

    if (sse)
      fputs("event: neighbour\ndata: ", stdout);

    fwrite(buffer, sizeof(char), ret, stdout);

    if (sse)
      fputs("\n\n", stdout);
    else
      fputs("\n", stdout);

    fflush(stdout);
  }

  return 0;
}