uint8 BCSPImplementation::startIO() { uint8 retval = 0 ; int err ; if ((!mXMITBusy) && (mXMITBytesAvailable)) { mXMITBusy = true ; mLastXmitTime = ms_clock() ; if ( mFile->write(mXMITBuffer,mXMITBytesAvailable,&mXMITbytesWritten) ) { //function succeeded immediately mXMITBusy = false ; retval =1 ; } else if ( ( err = mFile->LastError() ) ) { mXMITBusy = false ; BTRACE1(WINERR,"WriteFile error %d\n",err) ; BTRACE1(WINERR,"bytesavail = %d",mXMITBytesAvailable); BTRACE1(WINERR,"byteswritten = %d",mXMITbytesWritten); } } if ((!mRCVBusy) && (!mRCVBytesAvailable)) { //Now try to read some chars from the uart. uint16 bytesToGet = numFreeSlotsInReceiveBuffer(mStack) ; mRCVBusy = true ; if ( mFile->read( mRCVBuffer , bytesToGet , &mRCVBytesAvailable ) ) { mRCVBusy = false ; retval =1 ; } else if ( (err = mFile->LastError()) ) { mRCVBusy = false ; BTRACE1(WINERR,"ReadFile error %d\n",err) ; } } return retval ; //indicate that we need to wait for some io to complete or not }
//##ModelId=43586653005E int CChennel::OpenChennel() { /* Get a TCP socket */ struct sockaddr_in stLclAddr; /* Sockets Address Structure */ #ifdef SOCKET_TRACE mprintf("Open Connection [%s:%d]",mPorts[index].sIp,mPorts[index].iHPort); #endif if (mHandle !=INVALID_SOCKET ){ shutdown(mHandle,2); closesocket (mHandle); mHandle=INVALID_SOCKET; } memset(&stLclAddr,0,sizeof(stLclAddr)); /* Get IP Address from a hostname (or IP address string in dot-notation) */ mHandle = socket (AF_INET, SOCK_STREAM, 0); if (mHandle ==INVALID_SOCKET) { mprintf("Open Socket Failure\n"); return -1; } /* Initialize the Sockets Internet Address (sockaddr_in) structure */ stLclAddr.sin_addr.s_addr =inet_addr(mAddr); stLclAddr.sin_family = AF_INET; /* Internet Address Family */ stLclAddr.sin_port = htons(mPort); /* TCP Echo Port */ if (connect(mHandle,(struct sockaddr*)&stLclAddr,sizeof(stLclAddr)) < 0) { mprintf("fail Connect to %s:%u\n",mAddr,mPort ); closesocket (mHandle); mHandle=INVALID_SOCKET; return -1; } u_long ch = 1; if( ioctlsocket ( mHandle,FIONBIO,&ch)<0){ mprintf("Set Socket to nonblocking failure\n"); CloseChennel(); return -1; } #ifdef SOCKET_TRACE BTRACE1("Connect OK socket is %d!!",mPorts[index].wTcpSock); #endif RESET_TIME_INTERVAL(mTP); return 1; }