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; }
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); }
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; }