void threadRFHumiditySave( void ) { PYGMYMESSAGE pygmyMsg; PYGMYSOCKET *pygmySocket; u8 ucBuffer[ 20 ]; if( msgGet( "humidity", PYGMY_UNMARKEDID, &pygmyMsg ) ){ print( COM3, "\rMessage Received" ); if( isStringSame( pygmyMsg.Message, "TX" ) ){ convertIntToString( humidityRead(), "%d", ucBuffer ); pygmySocket = socketGet( pygmyMsg.Value, pygmyMsg.Value ); if( pygmySocket ){ print( COM3, "\rSocket Found" ); socketSendDataFromString( pygmySocket, ucBuffer ); } else{ print( COM3, "\rNo Socket Found" ); } // else } else if( isStringSame( pygmyMsg.Message, "RX" ) ){ print( COM3, "\rHumidity: %d", pygmyMsg.Value ); convertIntToString( pygmyMsg.Value, "%d", globalHumidity ); drawForms(); } // else if } /*PYGMYFILE pygmyFile; u8 ucBuffer[ 20 ]; if( fileOpen( &pygmyFile, "humidity.txt", WRITE ) ){ convertIntToString( humidityRead(), "%d", ucBuffer ); filePutString( &pygmyFile, ucBuffer ); fileClose( &pygmyFile ); } // if */ }
LOCAL void myCallback(CALLBACK *pCallback) { ab1771IXRecord *precord; recordPvt *precordPvt; int callLock; callbackGetUser(precord,pCallback); callLock = interruptAccept; if(callLock)dbScanLock((void *)precord); precordPvt = precord->dpvt; precordPvt->status = (*pabDrv->getStatus)(precordPvt->drvPvt); if(precordPvt->status!=abSuccess) { switch(precordPvt->msgState) { case msgStateWaitInit: case msgStateWaitGet: precordPvt->msgState = msgStateInit; break; default: errlogPrintf("ILLEGAL myCallback state: record %s\n",precord->name); break; } issueError(precord,errAb,0); } else { precordPvt->err = errOK; switch(precordPvt->msgState) { case msgStateWaitInit: precordPvt->msgState = msgStateGet; break;; case msgStateWaitGet: setValMsg(precord,0); msgCompleteGet(precord); issueAsynCallback(precord); break;; default: errlogPrintf("ILLEGAL myCallback state: record %s\n",precord->name); break; } if(precordPvt->err == errOK) switch(precordPvt->msgState) { case msgStateInit: msgInit(precord); break; case msgStateGet: msgGet(precord); break; default: break; } } if(precordPvt->err != errOK) issueAsynCallback(precord); if(callLock)dbScanUnlock((void *)precord); }
LOCAL long process(ab1771IXRecord *precord) { recordPvt *precordPvt = (recordPvt *)precord->dpvt; if(precordPvt->err == errFatal) { precord->pact = TRUE; return(0); } if(!precord->pact) {/* starting new request*/ if(precord->cmd==ab1771IX_Init) { precordPvt->msgState = msgStateInit; precord->cmd = ab1771IX_CMD_None; db_post_events(precord,&precord->cmd,DBE_VALUE|DBE_LOG); } precordPvt->err = errOK; /* starting new request*/ switch(precordPvt->msgState) { case msgStateInit: msgInit(precord); break; case msgStateGet: case msgStateDone: msgGet(precord); break; default: break; }/*Note that state may switch because of msgRequest just issued*/ } switch(precordPvt->msgState) { case msgStateWaitInit: case msgStateWaitGet: precord->pact = TRUE; precordPvt->waitAsynComplete = TRUE; return(0); default: break; } precord->pact = TRUE; monitor(precord); recGblFwdLink(precord); precordPvt->waitAsynComplete = FALSE; if(precordPvt->err != errFatal) precord->pact = FALSE; return(0); }