trcString.c 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /*
  2. * Percepio Trace Recorder for Tracealyzer v4.9.2
  3. * Copyright 2023 Percepio AB
  4. * www.percepio.com
  5. *
  6. * SPDX-License-Identifier: Apache-2.0
  7. *
  8. * The implementation for strings.
  9. */
  10. #include <trcRecorder.h>
  11. #if (TRC_USE_TRACEALYZER_RECORDER == 1) && (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING)
  12. /*cstat !MISRAC2004-6.3 !MISRAC2012-Dir-4.6_a Suppress basic char type usage*/
  13. traceResult xTraceStringRegister(const char* szString, TraceStringHandle_t *pString)
  14. {
  15. TraceEntryHandle_t xEntryHandle;
  16. int32_t i;
  17. uint32_t uiLength = 0u;
  18. /* This should never fail */
  19. TRC_ASSERT(szString != (void*)0);
  20. /* This should never fail */
  21. TRC_ASSERT(pString != (void*)0);
  22. /* We need to check this */
  23. if (xTraceEntryCreate(&xEntryHandle) == TRC_FAIL)
  24. {
  25. return TRC_FAIL;
  26. }
  27. for (i = 0; (szString[i] != (char)0) && (i < (int32_t)(TRC_ENTRY_TABLE_SLOT_SYMBOL_SIZE)); i++) {} /*cstat !MISRAC2004-6.3 !MISRAC2012-Dir-4.6_a Suppress basic char type usage*/ /*cstat !MISRAC2004-17.4_b We need to access every character in the string*/
  28. uiLength = (uint32_t)i;
  29. /* The address to the available symbol table slot is the address we use */
  30. /* This should never fail */
  31. TRC_ASSERT_ALWAYS_EVALUATE(xTraceEntrySetSymbol(xEntryHandle, szString, uiLength) == TRC_SUCCESS);
  32. *pString = (TraceStringHandle_t)xEntryHandle;
  33. return xTraceEventCreateData1(PSF_EVENT_OBJ_NAME, (TraceUnsignedBaseType_t)xEntryHandle, (TraceUnsignedBaseType_t*)szString, uiLength + 1);
  34. }
  35. /*cstat !MISRAC2004-6.3 !MISRAC2012-Dir-4.6_a Suppress basic char type usage*/
  36. TraceStringHandle_t xTraceRegisterString(const char *name)
  37. {
  38. TraceStringHandle_t trcStr = 0;
  39. (void)xTraceStringRegister(name, &trcStr);
  40. return trcStr;
  41. }
  42. #endif