Пример #1
0
int main(int argc, char *argv[])
{

    pthread_t lesen_thread[2];

    //init_serial_port();
    init_socket();

    pthread_create(&lesen_thread[1], NULL, read_socket, NULL);

    //square 1
    /*
       move_robot("tx8", 5.0, 0.0, 0.0);
       move_robot("tx8", 5.0, M_PI_2, 0.0);
       move_robot("tx8", 5.0, M_PI_2, 0.0);
       move_robot("tx8", 5.0, M_PI_2, 0.0);
       move_robot("tx8", 0.0, M_PI_2, 0.0);
     */

    //square 2
    /*
       move_robot("tx8", 5.0, 0.0, 0.0);
       move_robot("tx8", 5.0, M_PI_2, 0.0);
       move_robot("tx8", 5.0, M_PI_2, 0.0);
       move_robot("tx8", 5.0, M_PI_2, 0.0);
       move_robot("tx8", 0.0, M_PI_2, 0.0);

       //square 2
       move_robot("tx8", 5.0, 0.0, 0.0);
       move_robot("tx8", 5.0, M_PI_2, 0.0);
       move_robot("tx8", 5.0, M_PI_2, 0.0);
       move_robot("tx8", 5.0, M_PI_2, 0.0);
       move_robot("tx8", 0.0, M_PI_2, 0.0);

       //square 2
       move_robot("tx8", 5.0, 0.0, 0.0);
       move_robot("tx8", 5.0, M_PI_2, 0.0);
       move_robot("tx8", 5.0, M_PI_2, 0.0);
       move_robot("tx8", 5.0, M_PI_2, 0.0);
       move_robot("tx8", 0.0, M_PI_2, 0.0);
     */

    pthread_exit(NULL);
    kill_socket();
    //cssl_close(serial_port);
    //cssl_stop();

    return 0;
}
Пример #2
0
void kill_bot (struct Bot *killme) {

	/* Add channel/user killing routines */

	struct IRCServer *tempserv;
   struct IRCServer *tempserv2;

	struct Nickname *tempnick;
	struct Nickname *tempnick2;

	/* First, kill the servers */

	tempserv = killme->list;

	while (tempserv) {

		tempserv2 = tempserv;         /* Remember this one... */
		tempserv = tempserv->next;    /* Move on... */
		free (tempserv2);             /* Free memory */

   }

	/* Now, kill the nicknames */

	tempnick = killme->nicks;

	while (tempnick) {

		tempnick2 = tempnick;
		tempnick = tempnick->next;
		free (tempnick2);

	}

   kill_socket (killme) ;         /* Also kill its socket, if it exists */

	/* Now kill the main bot structure */

	free (killme);

}
Пример #3
0
int accept(int socket, struct sockaddr * addr, int * addr_len) {
   if(socket<1 || socket>SGIP_SOCKET_MAXSOCKETS || !addr || !addr_len) return SGIP_ERROR(EINVAL);
   SGIP_INTR_PROTECT();
   sgIP_Record_TCP * ret;
   int retval,s;
   retval=SGIP_ERROR0(EINVAL);
   ret=0;
   socket--;
   if(!(socketlist[socket].flags&SGIP_SOCKET_FLAG_VALID)) { SGIP_INTR_UNPROTECT(); return SGIP_ERROR(EINVAL); }
   if((socketlist[socket].flags&SGIP_SOCKET_FLAG_TYPEMASK)==SGIP_SOCKET_FLAG_TYPE_TCP) {
      s=spawn_socket((socketlist[socket].flags&SGIP_SOCKET_FLAG_NONBLOCKING) | SGIP_SOCKET_FLAG_TYPE_TCP);
      if(s>0) {
         do {
            ret=sgIP_TCP_Accept((sgIP_Record_TCP *)socketlist[socket].conn_ptr);
            if(ret!=0) break;
            if(errno!=EWOULDBLOCK) break;
            if(socketlist[socket].flags&SGIP_SOCKET_FLAG_NONBLOCKING) break;
            SGIP_INTR_UNPROTECT(); // give interrupts a chance to occur.
            SGIP_WAITEVENT(); // don't just try again immediately
            SGIP_INTR_REPROTECT();
         } while(1);
      }
      if(ret==0) {
         kill_socket(s);
         retval=-1;
      } else {
		 *addr_len=sizeof(struct sockaddr_in);
		 ((struct sockaddr_in *)addr)->sin_family=AF_INET;
		 ((struct sockaddr_in *)addr)->sin_port=ret->destport;
		 ((struct sockaddr_in *)addr)->sin_addr.s_addr=ret->destip;
         socketlist[s-1].conn_ptr=ret;
         retval=s;
      }
   }
   SGIP_INTR_UNPROTECT();
   return retval;
}