unsigned char buff[60]; int i; WORD WSAVerReq = MAKEWORD(2,0); WSADATA WSAData; int lastErr; SOCKET sock; SOCKADDR_IRDA address = {AF_IRDA, 0,0,0,0, "IrDA:IrCOMM"}; DEVICELIST devList; int devListLen = sizeof(devList), printf("Starting WinSock..." ); lastErr = WSAStartup(WSAVerReq, &WSAData); if (lastErr != 0) printf(" Failed. Error Code: %d. %s\n", lastErr, getErrDescr(lastErr)); else printf("OK\n"); sock = socket(AF_IRDA, SOCK_STREAM, 0); printf("Creating Socket..."); if (sock == INVALID_SOCKET) { lastErr = WSAGetLastError(); printf("Failed. Error Code: %d. %s \n", lastErr, getErrDescr(lastErr)); } else printf("OK\n"); devList.numDevice = 0; // initialize number of devices to zero printf("Discovery...\n"); while ((devList.numDevice == 0) && (cnt <= NumRetries)) { if(getsockopt(sock, SOL_IRLMP, IRLMP_ENUMDEVICES, (char *)&devList, &devListLen) != 0) { lastErr = WSAGetLastError(); printf("Failed. Error Code: %d. %s ", lastErr, getErrDescr(lastErr)); } cnt++; Sleep(1000); // Wait one second before retrying } printf("\nNumber of Devices in a range: %d\n", devList.numDevice); // Get socket address of server if(devList.numDevice == 0) { printf("No IrDA devices in a range\n"); printf("Press Enter to quit"); gets(buff); closesocket(sock); return 0; } else if(devList.numDevice > 0) { printf("------- DEVICES -------\n# NA Info\n"); for(i=0; i < (int)devList.numDevice; i++) { printf("%d %x%x%x%x %s\n", i+1, devList.Device[i].irdaDeviceID[0], devList.Device[i].irdaDeviceID[1], devList.Device[i].irdaDeviceID[2], devList.Device[i].irdaDeviceID[3], devList.Device[i].irdaDeviceName); } if(devList.numDevice > 1) { do { printf("Select device number:"); scanf("%d", &i); i--; if(i>=0 && i< (int)devList.numDevice) break; } while(1); } else i = 0; } // Get socket address of server for (idx = 0; idx <= 3; idx++) { address.irdaDeviceID[idx] = devList.Device[i].irdaDeviceID[idx]; } printf("\n"); printf("Connecting..."); lastErr = connect(sock, (struct sockaddr *)&address, sizeof(SOCKADDR_IRDA)); if(lastErr != 0) { lastErr = WSAGetLastError(); printf("Failed. Error Code: %d \n", lastErr); } else printf("OK\n"); // configure uart buff[0] = 6; //len buff[1] = 0x10; //PI buff[2] = 4; //PL buff[3] = (115200 >> 24) & 0xff; //PV buff[4] = (115200 >> 16) & 0xff; //PV buff[5] = (115200 >> 8) & 0xff; //PV buff[6] = (115200 >> 0) & 0xff; //PV printf("Setting UART..."); lastErr = send(sock, buff, 7, 0); if(lastErr == SOCKET_ERROR) { lastErr = WSAGetLastError(); printf("Send Failed. Error Code: %d \n", lastErr); return 1; } printf("OK\n");