/* * ======== LoggerSM_writeUIAHeader ========= */ static void LoggerSM_writeUIAHeader(LoggerSM_SharedObj *sharedObj, size_t numBytes, unsigned int partitionId) { /* Set length of packet */ UIAPacket_setEventLength(&(LoggerSM_obj.uiaHdr), numBytes + sizeof(UIAPacket_Hdr)); /* Set sequence number */ UIAPacket_setSequenceCount(&(LoggerSM_obj.uiaHdr), LoggerSM_seq[partitionId]++); /* Set moduleId */ UIAPacket_setLoggerModuleId(&(LoggerSM_obj.uiaHdr), sharedObj->moduleId); /* Set priority */ UIAPacket_setLoggerPriority(&(LoggerSM_obj.uiaHdr), UIAPacket_Priority_STANDARD); /* Set instanceId */ UIAPacket_setLoggerInstanceId(&(LoggerSM_obj.uiaHdr), sharedObj->instanceId); /* Set moduleId */ UIAPacket_setLoggerModuleId(&(LoggerSM_obj.uiaHdr), sharedObj->moduleId); /* Set senderAdrs */ UIAPacket_setSenderAdrs(&(LoggerSM_obj.uiaHdr), partitionId); fwrite((char *)&(LoggerSM_obj.uiaHdr), sizeof(UIAPacket_Hdr), 1, LoggerSM_obj.outFile); }
/* * ======== LoggerStreamer_flush ========= * If there is data in the buffer, call the exchange function. */ Void LoggerStreamer_flush2(Void) { /* If there is data in the buffer */ if (LoggerStreamer_module->write > LoggerStreamer_module->buffer + HDR_OFFSET_IN_WORDS) { /* Set UIA packet length and sequence number */ UIAPacket_setEventLength((UIAPacket_Hdr*)LoggerStreamer_module->buffer, (Bits32)((LoggerStreamer_module->write - LoggerStreamer_module->buffer) * BYTES_IN_WORD)); UIAPacket_setSequenceCount((UIAPacket_Hdr*)LoggerStreamer_module->buffer, ti_uia_sysbios_LoggerStreamer_uiaPacketSequence); /* * When the application calls flush there will always be empty space * at the end of the buffer. To let UIA know it should ignore this we * add a 32 bit Invalid UIA header with the length of the empty space. */ UIAPacket_setInvalidHdr(LoggerStreamer_module->write, ((UInt32)LoggerStreamer_module->end + WRITE8_SIZE_IN_WORDS* BYTES_IN_WORD - (UInt32)LoggerStreamer_module->write) ); /* Set the module write ptr to NULL to prevent log calls in exchange */ if (LoggerStreamer_testForNullWrPtr) { LoggerStreamer_module->write = NULL; } if (LoggerStreamer_isBadPacketDetectionEnabled) { LoggerStreamer_validatePacket(LoggerStreamer_module->buffer, LoggerStreamer_bufSize); } /* Send filled buffer to exchange function */ LoggerStreamer_module->buffer = (UInt32*)LoggerStreamer_exchangeFxn((Ptr)LoggerStreamer_module->buffer); /* Update ptrs to new buffer */ LoggerStreamer_module->write = LoggerStreamer_module->buffer + HDR_OFFSET_IN_WORDS; LoggerStreamer_module->end = LoggerStreamer_module->buffer + (LoggerStreamer_bufSize/sizeof(UInt32)) - WRITE8_SIZE_IN_WORDS; ti_uia_sysbios_LoggerStreamer_uiaPacketSequence++; } }