Define WPP custom data type

Hi,

I’m trying to enable WPP tracing, while the requirement is to be backward compatible to existing trace format.
I have the next print macro that should work with WPP

Existing Format:

#define MAC_ADDRESS_PRINTF_FORMAT “%02x:%02x:%02x:%02x:%02x:%02x”
#define MAC_ADDRESS_PRINTF(addr) \
addr[0], \
addr[1], \
addr[2], \
addr[3], \
addr[4], \
addr[5]

Print(MODULE_A, TRACE_ERROR, “RX PeerMacAddr=” MAC_ADDRESS_PRINTF_FORMAT, MAC_ADDRESS_PRINTF(peer_address));

For printing the same log with WPP infrastructure I used the WPP DEFINE_CPLX_TYPE and defined MAC_ADDRESS_PRINTF_FORMAT MAC_ADDRESS_PRINTF.
// begin_wpp config
// DEFINE_CPLX_TYPE(MACADDRESS, WPP_LOGMACADDRESSDUMP, const unsigned char*, ItemMacAddr, “s”, MAC_ADDR, 0, 1);
// WPP_FLAGS(-DWPP_LOGMACADDRESSDUMP(addr) WPP_LOGPAIR(6, (addr)) );
// end_wpp

#define MAC_ADDRESS_PRINTF_FORMAT “%!MACADDRESS!”
#define MAC_ADDRESS_PRINTF(_addr) _addr

Unfortunately I’m getting following error wpp: (parseLegacy) 0 argument(s) expected, argument(s) supplied: 1

It seems like WPP preprocessor is not taking into account my define for MAC_ADDRESS_PRINTF_FORMAT.
While replacing MAC_ADDRESS_PRINTF_FORMAT with "%!MACADDRESS! it is working fine.

Any suggestion on how something like this could be achieved would be
appreciated.

Thanks.

xxxxx@perasotech.com wrote:

 

I’m trying to enable WPP tracing, while the requirement is to be
backward compatible to existing trace format.


 

For printing the same log with WPP infrastructure I used the WPP
 DEFINE_CPLX_TYPE and defined MAC_ADDRESS_PRINTF_FORMAT
MAC_ADDRESS_PRINTF.

// begin_wpp config

// DEFINE_CPLX_TYPE(MACADDRESS, WPP_LOGMACADDRESSDUMP, const unsigned
char*, ItemMacAddr, “s”, MAC_ADDR, 0, 1);

// WPP_FLAGS(-DWPP_LOGMACADDRESSDUMP(addr) WPP_LOGPAIR(6, (addr)) );

// end_wpp

 

#define MAC_ADDRESS_PRINTF_FORMAT “%!MACADDRESS!”

#define MAC_ADDRESS_PRINTF(_addr) _addr

 

Unfortunately I’m getting following error wpp: (parseLegacy) 0
argument(s) expected, argument(s) supplied: 1

 

It seems like WPP preprocessor is not taking into account my define
for MAC_ADDRESS_PRINTF_FORMAT.

While replacing MAC_ADDRESS_PRINTF_FORMAT with “%!MACADDRESS! it is
working fine.

 

Any suggestion on how something like this could be achieved would be
appreciated.

As the name implies, WPP is a pre-processor.  It does its work before
compilation starts, which means it is scanning your code before the C
pre-processor has done its thing.  It does not do the same string
substitution that the C pre-processor does, so it’s not expanding your
macro.  You will probably need to supply the string instead of the symbol.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.