void SetBitValue( uint8_t bitValue ) { if( bitValue != 0 ) { SET_TX(); } else { CLEAR_TX(); } }
int TransactionThread(int id) { int nQuery,sts; char szData[MAX_BUFFER]; char szAux[1000]; char szComando[MAX_BUFFER]; Tipo_XML *xml=NULL; /*PGresult *res=NULL;*/ int nFila,nReg; int nSocketCerrado; char szTmp[200]; printf("(%02i) INICIA THREAD SOCKET ",id); Conexion[id].nAbierta=0; while(1) { EsperaActivacion2(id,&Conexion[id]); if (Conexion[id].nAbierta==0) { if (!Conexion[id].nAbierta) { WriteLog(id,"Abre Conexion BD"); Conexion[id].dbconn=OpenDatabaseMSSQL(id); } if (Conexion[id].dbconn==NULL) { printf("(%02i) Falla Conexion a BD",id); WriteLog(id,"Falla Conexion a BD"); goto fin; } Conexion[id].nAbierta=1; } printf("(%02i) Conexion MSSQL %i\n\r",id,Conexion[id].nSocket); dbmsghandle( (MHANDLEFUNC)msg_handler ); nQuery=0; while ((sts=LeePaquete(id,Conexion[id].nSocket,szData,MAX_BUFFER,global.nTimeoutBaseDatos))>0) { //printf("(%02i) LEE %s\n\r",id,szData); xml=CierraXML(xml); xml=ProcesaInputXML1(xml,szData); if (GetStrXML(xml,"GET_RECORD",szComando,MAX_BUFFER)) { sprintf(szAux,"(%02i) Socket(%i) GET_RECORD %s",id,Conexion[id].nSocket,szComando); SET_TX(id,szComando); WriteLog(id,szAux); GetOneRecordMSSQL(id,Conexion[id].nSocket,szComando,Conexion[id].dbconn);//Descomentar cuando este implementado nQuery=0; break; } else if (GetStrXML(xml,"CLOSE",szComando,1024)) { printf("(%02i) CloseDatabase\n\r",id); nQuery=0; break; } else if (GetStrXML(xml,"CAMPOS",szComando,1024)) { sprintf(szAux,"(%02i) Socket(%i) CAMPOS %s",id,Conexion[id].nSocket,szComando); SET_TX(id,szComando); WriteLog(id,szAux); GetCamposMSSQL(id,Conexion[id].nSocket,szComando,Conexion[id].dbconn);//Descomentar cuando este implementado break; } else if (GetStrXML(xml,"SQL",szComando,MAX_BUFFER)) { sprintf(szAux,"(%02i) Socket(%i) SQL %s",id,Conexion[id].nSocket,szComando); SET_TX(id,szComando); WriteLog(id,szAux); //res=ExecuteSql(id,Conexion[id].nSocket,szComando,Conexion[id].dbconn);//Descomentar cuando este implementado nQuery=0; nFila=0; break; } else if (GetStrXML(xml,"QUERY",szComando,MAX_BUFFER)) { sprintf(szAux,"(%02i) Socket(%i) SQL %s",id,Conexion[id].nSocket,szComando); SET_TX(id,szComando); WriteLog(id,szAux); //res=ExecuteSql(id,Conexion[id].nSocket,szComando,Conexion[id].dbconn);//Descomentar cuando este implementado nQuery=1; nFila=0; nReg=0; } else if (GetStrXML(xml,"MOVE_NEXT",szComando,MAX_BUFFER)) { if (nQuery) { sprintf(szAux,"(%02i) Socket(%i) MOVE_NEXT Fila=%i",id,Conexion[id].nSocket,nFila); WriteLog(id,szAux); //Descomentar cuando este implementado /* if (!MoveNextData(id,Conexion[id].nSocket,res,nFila++)) { PQclear(res); res=NULL; printf("(%02i) Fin de Query...\n\r",id); nQuery=0; break; } */ } else { printf("(%02i) No hay query activa...\n\r",id); break; } } else if (GetStrXML(xml,"MOVE_NEXT_100",szComando,MAX_BUFFER)) { if (nQuery) { sprintf(szAux,"(%02i) Socket(%i) MOVE_NEXT_100",id,Conexion[id].nSocket); WriteLog(id,szAux); //Descomentar cuando este implementado /* if (!MoveNextData100(id,Conexion[id].nSocket,res,&nFila,&nReg)) { PQclear(res); res=NULL; printf("(%02i) Fin de Query...\n\r",id); nQuery=0; break; } */ } else { printf("(%02i) No hay query activa...\n\r",id); break; } } else if (GetStrXML(xml,"MOVE_NEXT_NIVEL_100",szComando,MAX_BUFFER)) { if (nQuery) { sprintf(szAux,"(%02i) Socket(%i) MOVE_NEXT_100",id,Conexion[id].nSocket); WriteLog(id,szAux); /* if (!MoveNextData_100(id,Conexion[id].nSocket,res,&nFila,&nReg)) { PQclear(res); res=NULL; printf("(%02i) Fin de Query...\n\r",id); nQuery=0; break; } */ } else { printf("(%02i) No hay query activa...\n\r",id); break; } } } xml=CierraXML(xml); /*Comentado Por Felipe Avendano if (res!=NULL) { WriteLog(id,"PQclear"); //PQclear(res);//Comentado por FelipeAvendano res=NULL; } */ //si esta cerrada la conexion... while (Conexion[id].nAbierta!=1) { printf("(%02i) Abre conexion Base Datos..\n\r",id); WriteError(id,"Re-Abre Conexion a BD"); sprintf(szTmp,IP_BD); Conexion[id].dbconn=OpenDatabaseMSSQL(id); if (Conexion[id].dbconn==NULL) { printf("(%02i) Falla Conexion a BD",id); WriteLog(id,"Falla Conexion a BD"); WriteError(id,"Falla Re-Conexion a BD"); sleep(1); continue; } WriteLog(id,"ReAbre Conexion a BD"); Conexion[id].nAbierta=1; } fin: sts=close(Conexion[id].nSocket); WriteLog(id,"DesactivaProceso2"); DesactivaProceso2(id); } }
void UARTTransmitHandler() { switch(state) { case Idle: { SET_TX(); break; } case Start: { CLEAR_TX(); state = Bit0; break; } case Bit0: { SetBitValue( byteToTransmit & 0x01 ); state = Bit1; break; } case Bit1: { SetBitValue( byteToTransmit & 0x02 ); state = Bit2; break; } case Bit2: { SetBitValue( byteToTransmit & 0x04 ); state = Bit3; break; } case Bit3: { SetBitValue( byteToTransmit & 0x08 ); state = Bit4; break; } case Bit4: { SetBitValue( byteToTransmit & 0x10 ); state = Bit5; break; } case Bit5: { SetBitValue( byteToTransmit & 0x20 ); state = Bit6; break; } case Bit6: { SetBitValue( byteToTransmit & 0x40 ); state = Bit7; break; } case Bit7: { SetBitValue( byteToTransmit & 0x80 ); state = Stop; break; } case Parity: { state = Idle; SetBitValue( parityValue ); break; } case Stop: { SET_TX(); state = Idle; break; } default: { PANIC(); break; } } }
void ResetUARTTransmitter() { state = Idle; SET_TX(); }