From 024e538bbb6916f1c3e6a8caf52be6fee7f7257c Mon Sep 17 00:00:00 2001 From: Norbert Schulz Date: Mon, 23 Apr 2018 18:17:53 +0200 Subject: Adding MIPI System Software Trace Example Code Populate the SyS-T GitHub repository with an example open source implementation of a SyS-T instrumentation library. This source code supports the public release edition 1.0 of the MIPI System Software Trace specification. https://www.mipi.org/specifications/sys-t --- examples/CMakeLists.txt | 28 +++ examples/client/CMakeLists.txt | 11 + examples/client/collateral_config.xml | 37 ++++ examples/client/gencat.bat | 1 + examples/client/gencat.sh | 1 + examples/client/othersource.c | 368 ++++++++++++++++++++++++++++++++++ examples/client/systclient.c | 96 +++++++++ examples/client/template.xml | 107 ++++++++++ examples/cmake/FindSyST.cmake | 74 +++++++ examples/hello/CMakeLists.txt | 11 + examples/hello/hello.c | 73 +++++++ examples/scripts/bldall.sh | 77 +++++++ 12 files changed, 884 insertions(+) create mode 100644 examples/CMakeLists.txt create mode 100644 examples/client/CMakeLists.txt create mode 100644 examples/client/collateral_config.xml create mode 100644 examples/client/gencat.bat create mode 100644 examples/client/gencat.sh create mode 100644 examples/client/othersource.c create mode 100644 examples/client/systclient.c create mode 100644 examples/client/template.xml create mode 100644 examples/cmake/FindSyST.cmake create mode 100644 examples/hello/CMakeLists.txt create mode 100644 examples/hello/hello.c create mode 100644 examples/scripts/bldall.sh (limited to 'examples') diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt new file mode 100644 index 0000000..9c6874c --- /dev/null +++ b/examples/CMakeLists.txt @@ -0,0 +1,28 @@ +project(SYST_Examples) +cmake_minimum_required (VERSION 2.8) + +get_filename_component( + THIS_PATH "${CMAKE_CURRENT_SOURCE_DIR}" + ABSOLUTE +) + +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${THIS_PATH}/cmake") + +if (defined $ENV{SYST_SDK}) + set(SYST_SDK "ENV{SYST_SDK}" CACHE PATH "SYS-T header and library root folder") +else() + set(SYST_SDK "(not-set)" CACHE PATH "SYS-T header and library root folder") +endif() + +find_package(SyST REQUIRED) + +# static linking flags +# +add_definitions(-DMIPI_SYST_STATIC) +set(SYST_LIBRARIES ${SYST_LIBRARIES_STATIC}) + +#dynamic linking, requires location of mipi_syst.dll to be in the PATH. +#set(SYST_LIBRARIES ${SYST_LIBRARIES_DYNAMIC}) + +add_subdirectory(hello) +add_subdirectory(client) \ No newline at end of file diff --git a/examples/client/CMakeLists.txt b/examples/client/CMakeLists.txt new file mode 100644 index 0000000..6362dde --- /dev/null +++ b/examples/client/CMakeLists.txt @@ -0,0 +1,11 @@ +include_directories( + ${SYST_INCLUDE_DIRS} +) + +add_executable(systclient systclient.c othersource.c) +target_link_libraries(systclient ${SYST_LIBRARIES}) + +install(TARGETS systclient + RUNTIME DESTINATION bin + LIBRARY DESTINATION bin +) \ No newline at end of file diff --git a/examples/client/collateral_config.xml b/examples/client/collateral_config.xml new file mode 100644 index 0000000..76cacde --- /dev/null +++ b/examples/client/collateral_config.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/client/gencat.bat b/examples/client/gencat.bat new file mode 100644 index 0000000..7861c29 --- /dev/null +++ b/examples/client/gencat.bat @@ -0,0 +1 @@ +perl ..\..\collateral\generator\syst_cgen.pl -c collateral_config.xml \ No newline at end of file diff --git a/examples/client/gencat.sh b/examples/client/gencat.sh new file mode 100644 index 0000000..0fe3531 --- /dev/null +++ b/examples/client/gencat.sh @@ -0,0 +1 @@ +perl ../../collateral/generator/syst_cgen.pl -c collateral_config.xml diff --git a/examples/client/othersource.c b/examples/client/othersource.c new file mode 100644 index 0000000..e4ff5d5 --- /dev/null +++ b/examples/client/othersource.c @@ -0,0 +1,368 @@ +/* + Copyright (c) 2018, MIPI Alliance, Inc. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "mipi_syst.h" + +extern struct mipi_syst_handle * systh; + +void banner() +{ + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("+-------------------------------------------------------+", 0)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| ____ _____ _______ |", 0)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| / ___| / ____| |__ __| |", 0)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| | |___ __ _| |___ _____| | |", 0)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| \\___ \\| | | |\\___ \\_____| | |", 0)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| ____| | |_| |____| | | | |", 0)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| |_____/ \\__| |_____/ |_| |", 0)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| _/ / |", 0)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| |__/ |", 0)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("+-------------------------------------------------------+", 1)); +} + +/* +* Use dynamic width settings with %*s formats to draw a sinus pattern +*/ +static int sin_wave[30] = { + 0, 5,11,16,20,24,26,27,27,26,24,20,16,11, 5, 0,-5,-11,-16,-20,-24,-26,-27,-27,-26,-24,-20,-16,-11,-5 +}; + +void sinewave() +{ + int i, ii, y; + + /* Show printf formatting capabilties of catalog and printf messages + */ + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_DEBUG, "|-------------------------------------------------------|"); + + for (i = 0; i < 1; ++i) { + for (ii = 0; ii < 30; ++ii) { + y = sin_wave[ii]; + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_DEBUG, + MIPI_SYST_HASH("| '%%*so%%*s | '%*so%*s ' |", 0), + MIPI_SYST_PARAM_INT(14 - y / 2), + MIPI_SYST_PARAM_CSTR(""), + MIPI_SYST_PARAM_INT(14 + y / 2), + MIPI_SYST_PARAM_CSTR("")); + } + } + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_DEBUG, "|-------------------------------------------------------|"); +} + +/* each client can use the 6-bit subtype value for tagging the write content */ +#define WRITE_DATA_TAG 0x1 + +/* raw data outputting + */ +void raw() +{ + unsigned char data[10]; + int i; + + for (i = 0; i < sizeof(data) / sizeof(data[0]); ++i) { + data[i] = i; + } + MIPI_SYST_WRITE(systh, MIPI_SYST_SEVERITY_MAX, WRITE_DATA_TAG, data, sizeof(data)); +} + +void short_messages() +{ + /* simple values + */ + MIPI_SYST_SHORT32(systh, 0x1234567); + MIPI_SYST_SHORT64(systh, 0x112233445566778); + + /* Example using a mask to classify values + * see collateral xml where mask is defined + */ +#define E_MASK 0x0E000000 /* 0xE in bits 24..28 means error, the lower bits error number */ +#define E_ONE E_MASK|1 +#define E_TWO E_MASK|2 + + MIPI_SYST_SHORT32(systh, E_ONE); + MIPI_SYST_SHORT32(systh, E_TWO); + +#define W_MASK 0x0F000000 /* 0xF in bits 24..28 means warning, the lower bits warning number */ +#define W_ONE W_MASK|1 +#define W_TWO W_MASK|2 + + MIPI_SYST_SHORT32(systh, W_ONE); + MIPI_SYST_SHORT32(systh, W_TWO); +} + +void foo() +{ + MIPI_SYST_CATALOG32_0(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("in function foo",0)); +} + +void bar() +{ + MIPI_SYST_CATALOG32_0(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("in function bar",0)); +} + +void printf_format_test() +{ + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "|-------------------------------------------------------|"); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| printf Format | printf Result |"); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "|---------------------------------strings---------------|"); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30s' | '%30s' |", "right-justified"); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30s' | '%-30s' |", "left-justified"); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "|---------------------------------ASCII-----------------|"); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%s' | '%s' |", "!\"#$%&'()*+-./0123456789:;<=>"); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%s' | '%s' |", "?@ABCDEFGHIJKLMNOPQRSTUVWXYZ["); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%s' | '%s' |", "\\]^_`qbcdefghijklmnopqrstuvwx"); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%s' | '%s' |", "yz{|}~ "); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "|---------------------------------decimals--------------|"); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30d' | '%30d' |", 1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30d' | '%30d' |", 10); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30d' | '%30d' |", 100); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30d' | '%30d' |", 1000); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30d' | '%30d' |", 10000); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30d' | '%30d' |", 100000); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30d' | '%-30d' |", 1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30d' | '%-30d' |", 10); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30d' | '%-30d' |", 100); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30d' | '%-30d' |", 1000); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30d' | '%-30d' |", 10000); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30d' | '%-30d' |", 100000); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "|----------------------------------hexadecimals---------|"); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30x' | '%30x' |", 0xa); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30x' | '%30x' |", 0xab); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30x' | '%30x' |", 0xabc); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30x' | '%30x' |", 0xabcd); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30x' | '%30x' |", 0xabcde); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30x' | '%30x' |", 0xabcdef); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30x' | '%-30x' |", 0xa); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30x' | '%-30x' |", 0xab); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30x' | '%-30x' |", 0xabc); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30x' | '%-30x' |", 0xabcd); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30x' | '%-30x' |", 0xabcde); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30x' | '%-30x' |", 0xabcdef); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30X' | '%30X' |", 0xa); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30X' | '%30X' |", 0xab); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30X' | '%30X' |", 0xabc); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30X' | '%30X' |", 0xabcd); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30X' | '%30X' |", 0xabcde); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30X' | '%30X' |", 0xabcdef); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30X' | '%-30X' |", 0xa); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30X' | '%-30X' |", 0xab); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30X' | '%-30X' |", 0xabc); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30X' | '%-30X' |", 0xabcd); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30X' | '%-30X' |", 0xabcde); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30X' | '%-30X' |", 0xabcdef); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "|-----------------------------------double--------------|"); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.1f' | '%30.1f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.2f' | '%30.2f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.3f' | '%30.3f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.4f' | '%30.4f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.5f' | '%30.5f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.6f' | '%30.6f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.7f' | '%30.7f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.8f' | '%30.8f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.9f' | '%30.9f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.10f' | '%30.10f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.1f' | '%-30.1f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.2f' | '%-30.2f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.3f' | '%-30.3f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.4f' | '%-30.4f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.5f' | '%-30.5f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.6f' | '%-30.6f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.7f' | '%-30.7f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.8f' | '%-30.8f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.9f' | '%-30.9f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.10f' | '%-30.10f' |", 3.14159265359); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "|-----------------------------------scientific----------|"); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.1e' | '%30.1e' |", 1.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.2e' | '%30.2e' |", 10.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.3e' | '%30.3e' |", 10.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.4e' | '%30.4e' |", 100.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.5e' | '%30.5e' |", 1000.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.6e' | '%30.6e' |", 10000.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.7e' | '%30.7e' |", 10000.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.8e' | '%30.8e' |", 10000.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.9e' | '%30.9e' |", 100000.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%30.10e' | '%30.10e' |", 1000000.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.1e' | '%-30.1e' |", 1.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.2e' | '%-30.2e' |", 10.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.3e' | '%-30.3e' |", 10.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.4e' | '%-30.4e' |", 100.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.5e' | '%-30.5e' |", 1000.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.6e' | '%-30.6e' |", 10000.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.7e' | '%-30.7e' |", 10000.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.8e' | '%-30.8e' |", 10000.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.9e' | '%-30.9e' |", 100000.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30.10e' | '%-30.10e' |", 1000000.5); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "|-----------------------------------exotics-------------|"); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%030hhu' | '%030hhu' |", (unsigned char)-1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%030hu' | '%030hu' |", (unsigned int)-1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%030lu' | '%030lu' |", (unsigned long int) - 1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%030llu' | '%030llu' |", (unsigned long long) - 1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%030hho' | '%030hho' |", (unsigned char)-1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%030ho' | '%030ho' |", (unsigned int)-1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%030lo' | '%030lo' |", (unsigned long int) - 1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%030llo' | '%030llo' |", (unsigned long long) - 1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%030hhx' | '%030hhx' |", (unsigned char)-1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%030hx' | '%030hx' |", (unsigned int)-1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%030lx' | '%030lx' |", (unsigned long int) - 1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%030llx' | '%030llx' |", (unsigned long long) - 1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30hhu' | '%-30hhu' |", (unsigned char)-1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%-30hu' | '%-30hu' |", (unsigned int)-1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%#-30lu' | '%#-30lu' |", (unsigned long int) - 1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%#-30llu' | '%#-30llu' |", (unsigned long long) - 1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%#-30hho' | '%#-30hho' |", (unsigned char)-1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%#-30ho' | '%#-30ho' |", (unsigned int)-1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%#-30lo' | '%#-30lo' |", (unsigned long int) - 1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%#-30llo' | '%#-30llo' |", (unsigned long long) - 1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%#-30hhx' | '%#-30hhx' |", (unsigned char)-1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%#-30hx' | '%#-30hx' |", (unsigned int)-1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%#-30lx' | '%#-30lx' |", (unsigned long int) - 1); + MIPI_SYST_PRINTF(systh, MIPI_SYST_SEVERITY_INFO, "| '%%#-30llx' | '%#-30llx' |", (unsigned long long) - 1); +} + +/* same as printf, but now using catalog messaging*/ +void catalog_format_test() +{ + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| catalog Format | Printed Result |",0)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("|---------------------------------strings---------------|",0)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30s' | '%30s' |", 0), MIPI_SYST_PARAM_CSTR("right-justified")); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30s' | '%-30s' |", 0), MIPI_SYST_PARAM_CSTR("left-justified")); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("|---------------------------------ASCII-----------------|",0)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%s' | '%s' |",0), MIPI_SYST_PARAM_CSTR("!\"#$%&'()*+-./0123456789:;<=>")); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%s' | '%s' |",1), MIPI_SYST_PARAM_CSTR("?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[")); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%s' | '%s' |",2), MIPI_SYST_PARAM_CSTR("\\]^_`qbcdefghijklmnopqrstuvwx")); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%s' | '%s' |",3), MIPI_SYST_PARAM_CSTR("yz{|}~ ")); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("|---------------------------------decimals--------------|",0)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30d' | '%30d' |",0), MIPI_SYST_PARAM_INT(1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30d' | '%30d' |",1), MIPI_SYST_PARAM_INT(10)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30d' | '%30d' |",2), MIPI_SYST_PARAM_INT(100)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30d' | '%30d' |",3), MIPI_SYST_PARAM_INT(1000)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30d' | '%30d' |",4), MIPI_SYST_PARAM_INT(10000)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30d' | '%30d' |",5), MIPI_SYST_PARAM_INT(100000)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30d' | '%-30d' |",0), MIPI_SYST_PARAM_INT(1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30d' | '%-30d' |",1), MIPI_SYST_PARAM_INT(10)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30d' | '%-30d' |",2), MIPI_SYST_PARAM_INT(100)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30d' | '%-30d' |",3), MIPI_SYST_PARAM_INT(1000)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30d' | '%-30d' |",4), MIPI_SYST_PARAM_INT(10000)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30d' | '%-30d' |",5), MIPI_SYST_PARAM_INT(100000)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("|----------------------------------hexadecimals---------|",0)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30x' | '%30x' |",0), MIPI_SYST_PARAM_INT(0xa)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30x' | '%30x' |",1), MIPI_SYST_PARAM_INT(0xab)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30x' | '%30x' |",2), MIPI_SYST_PARAM_INT(0xabc)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30x' | '%30x' |",3), MIPI_SYST_PARAM_INT(0xabcd)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30x' | '%30x' |",4), MIPI_SYST_PARAM_INT(0xabcde)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30x' | '%30x' |",5), MIPI_SYST_PARAM_INT(0xabcdef)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30x' | '%-30x' |",0), MIPI_SYST_PARAM_INT(0xa)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30x' | '%-30x' |",1), MIPI_SYST_PARAM_INT(0xab)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30x' | '%-30x' |",2), MIPI_SYST_PARAM_INT(0xabc)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30x' | '%-30x' |",3), MIPI_SYST_PARAM_INT(0xabcd)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30x' | '%-30x' |",4), MIPI_SYST_PARAM_INT(0xabcde)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30x' | '%-30x' |",5), MIPI_SYST_PARAM_INT(0xabcdef)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30X' | '%30X' |",0), MIPI_SYST_PARAM_INT(0xa)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30X' | '%30X' |",1), MIPI_SYST_PARAM_INT(0xab)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30X' | '%30X' |",2), MIPI_SYST_PARAM_INT(0xabc)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30X' | '%30X' |",3), MIPI_SYST_PARAM_INT(0xabcd)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30X' | '%30X' |",4), MIPI_SYST_PARAM_INT(0xabcde)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30X' | '%30X' |",5), MIPI_SYST_PARAM_INT(0xabcdef)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30X' | '%-30X' |",0), MIPI_SYST_PARAM_INT(0xa)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30X' | '%-30X' |",1), MIPI_SYST_PARAM_INT(0xab)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30X' | '%-30X' |",2), MIPI_SYST_PARAM_INT(0xabc)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30X' | '%-30X' |",3), MIPI_SYST_PARAM_INT(0xabcd)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30X' | '%-30X' |",4), MIPI_SYST_PARAM_INT(0xabcde)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30X' | '%-30X' |",5), MIPI_SYST_PARAM_INT(0xabcdef)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("|-----------------------------------double--------------|",0)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.1f' | '%30.1f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.2f' | '%30.2f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.3f' | '%30.3f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.4f' | '%30.4f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.5f' | '%30.5f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.6f' | '%30.6f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.7f' | '%30.7f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.8f' | '%30.8f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.9f' | '%30.9f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.10f' | '%30.10f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.1f' | '%-30.1f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.2f' | '%-30.2f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.3f' | '%-30.3f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.4f' | '%-30.4f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.5f' | '%-30.5f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.6f' | '%-30.6f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.7f' | '%-30.7f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.8f' | '%-30.8f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.9f' | '%-30.9f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.10f' | '%-30.10f' |",0), MIPI_SYST_PARAM_FLOAT(3.14159265359)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("|-----------------------------------scientific----------|",0)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.1e' | '%30.1e' |",0), MIPI_SYST_PARAM_DOUBLE(1.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.2e' | '%30.2e' |",0), MIPI_SYST_PARAM_DOUBLE(10.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.3e' | '%30.3e' |",0), MIPI_SYST_PARAM_DOUBLE(10.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.4e' | '%30.4e' |",0), MIPI_SYST_PARAM_DOUBLE(100.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.5e' | '%30.5e' |",0), MIPI_SYST_PARAM_DOUBLE(1000.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.6e' | '%30.6e' |",0), MIPI_SYST_PARAM_DOUBLE(10000.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.7e' | '%30.7e' |",0), MIPI_SYST_PARAM_DOUBLE(10000.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.8e' | '%30.8e' |",0), MIPI_SYST_PARAM_DOUBLE(10000.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.9e' | '%30.9e' |",0), MIPI_SYST_PARAM_DOUBLE(100000.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%30.10e' | '%30.10e' |",0), MIPI_SYST_PARAM_DOUBLE(1000000.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.1e' | '%-30.1e' |",0), MIPI_SYST_PARAM_DOUBLE(1.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.2e' | '%-30.2e' |",0), MIPI_SYST_PARAM_DOUBLE(10.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.3e' | '%-30.3e' |",0), MIPI_SYST_PARAM_DOUBLE(10.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.4e' | '%-30.4e' |",0), MIPI_SYST_PARAM_DOUBLE(100.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.5e' | '%-30.5e' |",0), MIPI_SYST_PARAM_DOUBLE(1000.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.6e' | '%-30.6e' |",0), MIPI_SYST_PARAM_DOUBLE(10000.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.7e' | '%-30.7e' |",0), MIPI_SYST_PARAM_DOUBLE(10000.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.8e' | '%-30.8e' |",0), MIPI_SYST_PARAM_DOUBLE(10000.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.9e' | '%-30.9e' |",0), MIPI_SYST_PARAM_DOUBLE(100000.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30.10e' | '%-30.10e' |",0), MIPI_SYST_PARAM_DOUBLE(1000000.5)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("|-----------------------------------exotics-------------|",0)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%030hhu' | '%030hhu' |",0), MIPI_SYST_PARAM_CHAR((unsigned char)-1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%030hu' | '%030hu' |",0), MIPI_SYST_PARAM_INT((unsigned int)-1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%030lu' | '%030lu' |",0), MIPI_SYST_PARAM_LONG((unsigned long int) - 1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%030llu' | '%030llu' |",0), MIPI_SYST_PARAM_LONGLONG((unsigned long long) - 1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%030hho' | '%030hho' |",0), MIPI_SYST_PARAM_CHAR((unsigned char)-1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%030ho' | '%030ho' |",0), MIPI_SYST_PARAM_INT((unsigned int)-1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%030lo' | '%030lo' |",0), MIPI_SYST_PARAM_LONG((unsigned long int) - 1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%030llo' | '%030llo' |",0), MIPI_SYST_PARAM_LONGLONG((unsigned long long) - 1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%030hhx' | '%030hhx' |",0), MIPI_SYST_PARAM_CHAR((unsigned char)-1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%030hx' | '%030hx' |",0), MIPI_SYST_PARAM_INT((unsigned int)-1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%030lx' | '%030lx' |",0), MIPI_SYST_PARAM_LONG((unsigned long int) - 1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%030llx' | '%030llx' |",0), MIPI_SYST_PARAM_LONGLONG((unsigned long long) - 1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30hhu' | '%-30hhu' |",0), MIPI_SYST_PARAM_CHAR((unsigned char)-1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%-30hu' | '%-30hu' |",0), MIPI_SYST_PARAM_INT((unsigned int)-1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%#-30lu' | '%#-30hu' |",0), MIPI_SYST_PARAM_LONG((unsigned long int) - 1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%#-30llu' | '%#-30llu' |",0), MIPI_SYST_PARAM_LONGLONG((unsigned long long) - 1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%#-30hho' | '%#-30hho' |",0), MIPI_SYST_PARAM_CHAR((unsigned char)-1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%#-30ho' | '%#-30ho' |",0), MIPI_SYST_PARAM_INT((unsigned int)-1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%#-30lo' | '%#-30lo' |",0), MIPI_SYST_PARAM_LONG((unsigned long int) - 1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%#-30llo' | '%#-30llo' |",0), MIPI_SYST_PARAM_LONGLONG((unsigned long long) - 1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%#-30hhx' | '%#-30hhx' |",0), MIPI_SYST_PARAM_CHAR((unsigned char)-1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%#-30hx' | '%#-30hx' |",0), MIPI_SYST_PARAM_INT((unsigned int)-1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%#-30lx' | '%#-30lx' |",0), MIPI_SYST_PARAM_LONG((unsigned long int) - 1)); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("| '%%#-30llx' | '%#-30llx' |",0), MIPI_SYST_PARAM_LONGLONG((unsigned long long) - 1)); +} \ No newline at end of file diff --git a/examples/client/systclient.c b/examples/client/systclient.c new file mode 100644 index 0000000..d0ab0bb --- /dev/null +++ b/examples/client/systclient.c @@ -0,0 +1,96 @@ +/* +Copyright (c) 2018, MIPI Alliance, Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +* Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the +distribution. + +* Neither the name of the copyright holder nor the names of its +contributors may be used to endorse or promote products derived +from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "mipi_syst.h" + +/* Example SyS-T client code using various instrumentation call types */ + +const struct mipi_syst_origin origin = +MIPI_SYST_GEN_ORIGIN_GUID(0x494E5443, 0x8A9C, 0x4014, 0xA65A, 0x2F36A36D96E4, 1); +struct mipi_syst_handle * systh; + +void banner(); +void sinewave(); +void raw(); +void printf_format_test(); +void catalog_format_test(); +void short_messages(); + +int main(int argc, char* argv[]) +{ +#if defined(MIPI_SYST_STATIC) + MIPI_SYST_INIT(mipi_syst_platform_init, 0); +#endif + + systh = MIPI_SYST_ALLOC_HANDLE(&origin); + + /* add optional fields */ + MIPI_SYST_ENABLE_HANDLE_CHECKSUM(systh, 1); + MIPI_SYST_ENABLE_HANDLE_TIMESTAMP(systh, 1); + + MIPI_SYST_BUILD(systh, MIPI_SYST_SEVERITY_MAX, 0x00010000, "version banner string", sizeof("version banner string")); + + MIPI_SYST_CATALOG32_3(systh, MIPI_SYST_SEVERITY_INFO, + MIPI_SYST_HASH("SyS-T Library version %d.%d.%d",0), + MIPI_SYST_VERSION_MAJOR, + MIPI_SYST_VERSION_MINOR, + MIPI_SYST_VERSION_PATCH); + + banner(); + catalog_format_test(); + printf_format_test(); + sinewave(); + raw(); + short_messages(); + + /* Different catalog calls */ + MIPI_SYST_CATPRINTF64_0(systh, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788, "Hello world\n"); + MIPI_SYST_CATPRINTF32(systh, MIPI_SYST_SEVERITY_INFO, 2, "%s=%d\n", + MIPI_SYST_PARAM_CSTR("state"), + MIPI_SYST_PARAM_INT(10) + ); + MIPI_SYST_CATALOG32(systh, MIPI_SYST_SEVERITY_INFO, MIPI_SYST_HASH("%s=%d\n", 0), + MIPI_SYST_PARAM_CSTR("state"), + MIPI_SYST_PARAM_INT(10) + ); + + /* Release any resources associated with this SyS-T handle. + */ + MIPI_SYST_DELETE_HANDLE(systh); + +#if defined(MIPI_SYST_STATIC) + MIPI_SYST_SHUTDOWN(mipi_syst_platform_destroy); +#endif + + return 0; +} \ No newline at end of file diff --git a/examples/client/template.xml b/examples/client/template.xml new file mode 100644 index 0000000..1708730 --- /dev/null +++ b/examples/client/template.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + displayAsField + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/cmake/FindSyST.cmake b/examples/cmake/FindSyST.cmake new file mode 100644 index 0000000..006238a --- /dev/null +++ b/examples/cmake/FindSyST.cmake @@ -0,0 +1,74 @@ +# - Try to find the SyS-T headers and libraries +# +# This module defines +# SYST_INCLUDE_DIRS, where to find header files +# SYST_LIBRARIES, the libraries to link against +# SYST_FOUND, true if SyS-T installation found + + +if (NOT SYST_SDK AND NOT $ENV{SYST_SDK} STREQUAL "") + set(SYST_SDK $ENV{SYST_SDK}) +endif() + +set (SYST_INCLUDE_SEARCH_DIRS + ../include + /usr/include + /usr/local/include +) + +set (SYST_LIBRARIES_SEARCH_DIRS + ../lib + /usr/lib + /usr/local/lib +) + +if (SYST_SDK) + file(TO_CMAKE_PATH ${SYST_SDK} SYST_SDK) + + + set (SYST_INCLUDE_SEARCH_DIRS + ${SYST_SDK}/include + ${SYST_INCLUDE_SEARCH_DIRS} + ) + + set (SYST_LIBRARIES_SEARCH_DIRS + ${SYST_SDK}/bin + ${SYST_SDK}/lib + ${SYST_INCLUDE_SEARCH_DIRS} + ) +endif () + +find_path (SYST_INCLUDE_DIRS + mipi_syst.h + HINTS + ${SYST_INCLUDE_SEARCH_DIRS} +) + +find_library(SYST_LIBRARIES_STATIC + mipi_syst_static + HINTS + ${SYST_LIBRARIES_SEARCH_DIRS} +) + +find_library(SYST_LIBRARIES_DYNAMIC + mipi_syst + HINTS + ${SYST_LIBRARIES_SEARCH_DIRS} +) + + +include(FindPackageHandleStandardArgs) + +set (SYST_notfound_msg + "Could not find MIPI SyS-T SDK. Try setting SYST environment variable." +) + +FIND_PACKAGE_HANDLE_STANDARD_ARGS ( + SYST DEFAULT_MSG SYST_INCLUDE_DIRS SYST_LIBRARIES_STATIC SYST_LIBRARIES_DYNAMIC +) + +mark_as_advanced ( + SYST_INCLUDE_DIRS + SYST_LIBRARIES_STATIC + SYST_LIBRARIES_DYNAMIC +) diff --git a/examples/hello/CMakeLists.txt b/examples/hello/CMakeLists.txt new file mode 100644 index 0000000..e6657d1 --- /dev/null +++ b/examples/hello/CMakeLists.txt @@ -0,0 +1,11 @@ +include_directories( + ${SYST_INCLUDE_DIRS} +) + +add_executable(hello hello.c) +target_link_libraries(hello ${SYST_LIBRARIES}) + +install(TARGETS hello + RUNTIME DESTINATION bin + LIBRARY DESTINATION bin +) \ No newline at end of file diff --git a/examples/hello/hello.c b/examples/hello/hello.c new file mode 100644 index 0000000..b2924db --- /dev/null +++ b/examples/hello/hello.c @@ -0,0 +1,73 @@ +/* + Copyright (c) 2018, MIPI Alliance, Inc. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "mipi_syst.h" /* SyS-T definitions */ + + +/* Define origin used by this example as the message client ID + */ +static const struct mipi_syst_origin origin = +MIPI_SYST_GEN_ORIGIN_GUID(0x494E5443, 0xA2AE, 0x4C70, 0xABB5, 0xD1A79E9CEA35, 1); + + +int main(int argc, char* argv[]) +{ + struct mipi_syst_handle* systh; + +#if defined(MIPI_SYST_STATIC) + /* Initialize SyS-T subsystem when using static linking to SyS-T. + * Note: The call to MIPI_SYS_INIT() is done by the shared library + * loader initialization function when dyanmic linking is used. + */ + MIPI_SYST_INIT(mipi_syst_platform_init, 0); +#endif + + /* Initialize a SyS-T output handle structure + */ + systh = MIPI_SYST_ALLOC_HANDLE( &origin ); + + /* Send a string message with payload "Hello World!" + */ + MIPI_SYST_DEBUG(systh, MIPI_SYST_SEVERITY_INFO, "Hello SyS-T!" ,sizeof("Hello SyS-T!")); + + /* Release any resources associated with this SyS-T handle. + */ + MIPI_SYST_DELETE_HANDLE(systh); + +#if defined(MIPI_SYST_STATIC) + /* Perform SyS-T subsystem cleanup when using static linking. + */ + MIPI_SYST_SHUTDOWN(mipi_syst_platform_destroy); +#endif + return 0; +} \ No newline at end of file diff --git a/examples/scripts/bldall.sh b/examples/scripts/bldall.sh new file mode 100644 index 0000000..37a48d6 --- /dev/null +++ b/examples/scripts/bldall.sh @@ -0,0 +1,77 @@ +#!/bin/bash +# +# Integration build test script for all components +# +# * Build all components using example platform of the SyS-T library. +# * Run the "hello" example and feed it's output into the printer. +# +# The script will end with printing "Hello SyS-T" on success. +set -e +SELF_DIR="$(cd `dirname "${BASH_SOURCE[0]}"` && pwd)" + +#BUILDMODE=Debug +BUILDMODE=MinSizeRel +BLD_ROOT=${BLD_ROOT:="$SELF_DIR/build"} +DEPLOY_DIR="$BLD_ROOT/sdk" +mkdir -p $DEPLOY_DIR + +echo +echo ----- Building SyS-T library ... ---------------------------------------- +echo + +mkdir -p $BLD_ROOT/lib +pushd $BLD_ROOT/lib +cmake \ + -DSYST_BUILD_TEST=ON \ + -DSYST_BUILD_DOC=ON \ + -DSYST_BUILD_PLATFORM_NAME=example \ + -DCMAKE_INSTALL_PREFIX="$DEPLOY_DIR" \ + -DCMAKE_BUILD_TYPE=$BUILDMODE \ + "$SELF_DIR/../../library" + +cmake --build . --target install +cmake --build . --target RUN_TEST_VERBOSE +pushd + +echo +echo ----- Building Examples ... --------------------------------------------- +echo + +mkdir -p $BLD_ROOT/examples +pushd $BLD_ROOT/examples + +cmake \ + -DCMAKE_INSTALL_PREFIX="$DEPLOY_DIR" \ + -DSYST_SDK="$DEPLOY_DIR" \ + -DCMAKE_BUILD_TYPE=$BUILDMODE \ + "$SELF_DIR/.." + +cmake --build . --target install +pushd + +echo +echo ----- Building printer ... ---------------------------------------------- +echo + +mkdir -p $BLD_ROOT/printer +pushd $BLD_ROOT/printer + +cmake \ + -DCMAKE_INSTALL_PREFIX="$DEPLOY_DIR" \ + -DCMAKE_BUILD_TYPE=$BUILDMODE \ + "$SELF_DIR/../../printer" + +cmake --build . --target install +cmake --build . --target RUN_TEST_VERBOSE +pushd + + +echo +echo ----- Running the SyS-T 'hello world' example -------------------------- +echo +pushd "$DEPLOY_DIR/bin" > /dev/null +echo "$PWD/hello | $PWD/systprint -p -" +echo +./hello | ./systprint -p - +popd > /dev/null +exit 0 -- cgit v1.1