PAPISocket daemonConnect( int inRetryCount ) { int thePort = getDaemonPort(); PAPISocket theSocket; PAPIConnectResult theRC = getConnectedSocket( thePort, SOCK_STREAM, 0, &theSocket ); if ( theRC == PAPIConnectRejected || ( theRC == PAPIConnectFailed && startDaemon() == 0 ) ) { theRC = getConnectedSocket( thePort, SOCK_STREAM, inRetryCount, &theSocket); } return theSocket; }
void* initializeClient(void* args){ GtkWidget* dia; char addr[24]; int res, numdev=NUMDEV, i, ch[NUMDEV], target=0, isdevselected=0, valdevs=0, t; bdaddr_t *devs; devs=(bdaddr_t*)malloc(NUMDEV*sizeof(bdaddr_t)); bzero(ch,sizeof(int)*NUMDEV); dia=gtk_dialog_new(); int valDevs[NUMDEV]={-1}; //g_signal_connect_swapped (dia,"response",G_CALLBACK(gtk_widget_destroy),dia); g_print("Getting remote addresses\n"); if((res=getRemoteAddresses(devs,&numdev))==ERROR){ printf("error%x\n",aeoserr); return NULL; } if(numdev==0){ g_print("No devices found\n"); return NULL; } for(i=0;i<numdev;i++){ ba2str(&devs[i],addr); g_print("%d - %s ",i,addr); res=isRunningServer(aeosuuid,&devs[i],&ch[i]); if(res==OK && ch[i]<=30 && ch[i]>0){ g_print("; channel=%d",ch[i]); valDevs[i]=1; valdevs++; } g_print("\n"); } if(valdevs<1){ g_print("No device running server to connect to\n");//announce through dialog //don't launch gui return NULL; } if(valdevs==1){ //one valid device among 1 device(s) for(i=0;i<numdev;i++){if(valDevs[i]==1){target=i;}} sock=getConnectedSocket(devs[target],ch[target]); isdevselected=1; //flag //target 0 by default }else{ //if valid device more than 1 for(i=0;i<numdev;i++){ if(valDevs[i]==1){//printf("%d/",i); ba2str(&devs[i],addr); gtk_dialog_add_button(GTK_DIALOG(dia),addr,i); } } target=gtk_dialog_run(GTK_DIALOG(dia)); gtk_dialog_response(GTK_DIALOG(dia),GTK_RESPONSE_CLOSE); g_print("Device %d",t); //scanf("%d%*c",&target);//get button response if(valDevs[target]==1){isdevselected=1; sock=getConnectedSocket(devs[target],ch[target]);} else{printf("Incorrect device chosen\n");} } //copied return NULL; }