예제 #1
0
void TSharedMemoryLogStream::loggerWriteLog(const QList<TLog> &logs)
{
    loggerOpen();
    loggerWrite(logs);
    loggerFlush();
    loggerClose(MultiProcessUnsafe);
}
예제 #2
0
//=============================================================================
void loggerWriteByteInBit(const unsigned char byte){
	char bit[8];
	for (char i = 0, j = 7; i < 8; i++, j--){
		bit[i] = ((byte & (1<<j)) > 0) ? '1' : '0';
	}
	loggerWrite(bit,8);
}
void TBufferedLogStream::writeLog(const TLog &log)
{
    QMutexLocker locker(&mutex);
    if (nonBuffering) {
        loggerWrite(log);
        return;
    }

    logList << log;
    if (logList.count() > MAX_LOG_COUNT) {
        loggerWrite(logList);
        logList.clear();
        return;
    }

    if (!timer.isActive())
        timer.start(200, this);
}
예제 #4
0
//=======================================================================================
//inline
void sendMachine_3(){
	enum {	DATAMAXLEN = 64,
			DATAMARKERPOSITION = 0, DATAMARKER = '?',
			DATACODELENPOSITION = 1,
			DATACODEPOSION = 2		};

	#define ASKDATALEN 3
	char ASKDATA[ASKDATALEN] = "***";
	#define ANSWERDATALEN 3
	char ANSWERDATA[ANSWERDATALEN] = "+++";


	static char data[DATAMAXLEN];

	#define REPCOUNTER 3
	static char repeat_counter = REPCOUNTER;


	enum {WAITNEWCODE, WAITCODEDONE, WAITBOX, SENDTOBOX, WAITDELAY};
	static char state = WAITNEWCODE;

	switch (state){
		//========================
		case WAITNEWCODE:
		//========================
			if (getFlag(FLAG_NEW_NOCK) == TRUE)
				state = WAITCODEDONE;
			break;
		//========================
		case WAITCODEDONE:
		//========================
			if (getFlag(FLAG_NEW_NOCK) == FALSE){
				//state = WAITBOX; //DEBUG
				state = SENDTOBOX;
			}
			break;
		//========================
		case WAITBOX:{
		//========================
			char len = Receive_Packet(data, DATAMAXLEN);
			if (len > 0){

				#ifdef LOGG	
				loggerWriteToMarker((LogMesT)" WAITBOX get data: *", '*');
				loggerWrite((LogMesT)data, len);
				#endif

				for (char i = 0; i < ANSWERDATALEN; i++)
					if (data[i] != ANSWERDATA[i])
						return;
				
				state = SENDTOBOX;
				break;
			}
			SwitchToTxMode();

			Send_Packet(W_TX_PAYLOAD_NOACK_CMD, (unsigned char *)ASKDATA, ASKDATALEN);
			//Send_Packet(0, ASKDATA, ASKDATALEN);
			SwitchToRxMode();

			state = WAITDELAY;
			}break;
		//========================
		case WAITDELAY:
		//========================
			if (processWait() == TRUE)
				#ifdef LOGG	
				loggerWriteToMarker((LogMesT)" goto WAITBOX\r*", '*');
				#endif

				state = WAITBOX;
			break;
		//========================
		case SENDTOBOX:{
		//========================
			#ifdef LOGG	
			loggerWriteToMarker((LogMesT)" SENDTOBOX\r*", '*');
			#endif

			SwitchToTxMode();

			Nock * nock = getNock(NOCK_PATTERN);

			data[DATAMARKERPOSITION] = DATAMARKER;
			data[DATACODELENPOSITION] = nock->count;

			unsigned char i;
			for (i = 0; i < nock->count; i++){
				int time = nock->nock[i];
				char * p = &time; 
				data[DATACODEPOSION + i*2] = *p;
				p++;
				data[DATACODEPOSION + i*2 + 1] = *p; 
			}

			data[DATACODEPOSION + i * 2] = DATAMARKER;
			Send_Packet(W_TX_PAYLOAD_NOACK_CMD, (unsigned char *)data, DATACODEPOSION + nock->count * 2 + 1);
			//Send_Packet(0, (unsigned char *)data, DATACODEPOSION + nock->count + 1);

			#ifdef LOGG	
			loggerWriteToMarker((LogMesT)" nock count: *", '*');
			char ch = nock->count + 48;
			loggerWrite(&ch, 1);
			#endif
		
			if (repeat_counter-- <= 0){
				repeat_counter = REPCOUNTER;
				state = WAITNEWCODE;
			}
			

			}break;
		//========================
		default: break;
		//========================
	}
}
void TAbstractLogStream::loggerWrite(const QList<TLog> &logs)
{
    for (QListIterator<TLog> i(logs); i.hasNext(); ) {
        loggerWrite(i.next());
    }
}
void TBufferedLogStream::flush()
{
    QMutexLocker locker(&mutex);
    loggerWrite(logList);
    logList.clear();
}
예제 #7
0
void TAbstractLogStream::loggerWrite(const QList<TLog> &logs)
{
    for (auto logger : (const QList<TLog>&)logs) {
        loggerWrite(logger);
    }
}