Skip to content

Commit

Permalink
Introduction 64-bit formatting macro for nano printf lib (#6996)
Browse files Browse the repository at this point in the history
* * Adding ChipLogFormatX64/ChipLogValueX64
  to construct 64-bit formatting with nano printf lib
* Enable minimal mbed error logging if MBEDTLS_ERROR_C is not used

* * Update comments
* Fix build failures due to PRIX32
  • Loading branch information
tima-q authored May 20, 2021
1 parent 1010f70 commit 7dbc566
Show file tree
Hide file tree
Showing 16 changed files with 121 additions and 80 deletions.
9 changes: 5 additions & 4 deletions src/app/EventManagement.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -550,10 +550,11 @@ CHIP_ERROR EventManagement::LogEventPrivate(EventLoggingDelegate * apDelegate, E
currentBuffer->UpdateFirstLastEventTime(opts.mTimestamp);

#if CHIP_CONFIG_EVENT_LOGGING_VERBOSE_DEBUG_LOGS
ChipLogDetail(EventLogging,
"LogEvent event number: %u schema priority: %u cluster id: 0x%x event id: 0x%x sys timestamp: 0x%" PRIx64,
aEventNumber, opts.mpEventSchema->mPriority, opts.mpEventSchema->mClusterId, opts.mpEventSchema->mEventId,
opts.mTimestamp.mValue);
ChipLogDetail(
EventLogging,
"LogEvent event number: %u schema priority: %u cluster id: 0x%x event id: 0x%x sys timestamp: 0x" ChipLogFormatX64,
aEventNumber, opts.mpEventSchema->mPriority, opts.mpEventSchema->mClusterId, opts.mpEventSchema->mEventId,
ChipLogValueX64(opts.mTimestamp.mValue));
#endif // CHIP_CONFIG_EVENT_LOGGING_VERBOSE_DEBUG_LOGS

ScheduleFlushIfNeeded(opts.mUrgent);
Expand Down
14 changes: 8 additions & 6 deletions src/app/InteractionModelEngine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -245,10 +245,11 @@ void InteractionModelEngine::OnResponseTimeout(Messaging::ExchangeContext * ec)
// TODO: Remove this after codegen is ready.
CHIP_ERROR __attribute__((weak)) ReadSingleClusterData(ClusterInfo & aClusterInfo, TLV::TLVWriter & aWriter)
{
ChipLogDetail(
DataManagement,
"Received Cluster Command: Cluster=%" PRIx16 " NodeId=%" PRIx64 " Endpoint=%" PRIx8 " FieldId=%" PRIx8 " ListIndex=%" PRIx8,
aClusterInfo.mClusterId, aClusterInfo.mNodeId, aClusterInfo.mEndpointId, aClusterInfo.mFieldId, aClusterInfo.mListIndex);
ChipLogDetail(DataManagement,
"Received Cluster Command: Cluster=%" PRIx16 " NodeId=0x" ChipLogFormatX64 " Endpoint=%" PRIx8 " FieldId=%" PRIx8
" ListIndex=%" PRIx8,
aClusterInfo.mClusterId, ChipLogValueX64(aClusterInfo.mNodeId), aClusterInfo.mEndpointId, aClusterInfo.mFieldId,
aClusterInfo.mListIndex);
ChipLogError(DataManagement,
"Default ReadSingleClusterData is called, this should be replaced by actual dispatched for cluster");
return CHIP_NO_ERROR;
Expand All @@ -257,8 +258,9 @@ CHIP_ERROR __attribute__((weak)) ReadSingleClusterData(ClusterInfo & aClusterInf
CHIP_ERROR __attribute__((weak)) WriteSingleClusterData(ClusterInfo & aClusterInfo, TLV::TLVReader & aReader)
{
ChipLogDetail(DataManagement,
"Received Cluster Attribute: Cluster=%" PRIx16 " NodeId=%" PRIx64 " Endpoint=%" PRIx8 " FieldId=%" PRIx8,
" ListIndex=%" PRIx8, aClusterInfo.mClusterId, aClusterInfo.mNodeId, aClusterInfo.mEndpointId,
"Received Cluster Attribute: Cluster=%" PRIx16 " NodeId=0x" ChipLogFormatX64 " Endpoint=%" PRIx8
" FieldId=%" PRIx8,
" ListIndex=%" PRIx8, aClusterInfo.mClusterId, ChipLogValueX64(aClusterInfo.mNodeId), aClusterInfo.mEndpointId,
aClusterInfo.mFieldId, aClusterInfo.mListIndex);
ChipLogError(DataManagement,
"Default WriteSingleClusterData is called, this should be replaced by actual dispatched for cluster");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,9 @@ EmberAfStatus writeFabric(FabricId fabricId, NodeId nodeId, uint16_t vendorId, i
fabricDescriptor.VendorId = vendorId;

emberAfPrintln(EMBER_AF_PRINT_DEBUG,
"OpCreds: Writing admin into attribute store at index %d: fabricId %" PRIX64 ", nodeId %" PRIX64
" vendorId %" PRIX16,
index, fabricId, nodeId, vendorId);
"OpCreds: Writing admin into attribute store at index %d: fabricId 0x" ChipLogFormatX64
", nodeId 0x" ChipLogFormatX64 " vendorId 0x%04" PRIX16,
index, ChipLogValueX64(fabricId), ChipLogValueX64(nodeId), vendorId);
status = writeFabricAttribute((uint8_t *) &fabricDescriptor, index);
return status;
}
Expand All @@ -101,7 +101,7 @@ CHIP_ERROR writeAdminsIntoFabricsListAttribute()
CHIP_ERROR err = CHIP_NO_ERROR;

// Loop through admins
int32_t fabricIndex = 0;
uint32_t fabricIndex = 0;
for (auto & pairing : GetGlobalAdminPairingTable())
{
NodeId nodeId = pairing.GetNodeId();
Expand All @@ -112,26 +112,27 @@ CHIP_ERROR writeAdminsIntoFabricsListAttribute()
if (nodeId == kUndefinedNodeId || fabricId == kUndefinedFabricId || vendorId == kUndefinedVendorId)
{
emberAfPrintln(EMBER_AF_PRINT_DEBUG,
"OpCreds: Skipping over unitialized admin with fabricId %" PRIX64 ", nodeId %" PRIX64
" vendorId %" PRIX16,
fabricId, nodeId, vendorId);
"OpCreds: Skipping over unitialized admin with fabricId 0x" ChipLogFormatX64
", nodeId 0x" ChipLogFormatX64 " vendorId 0x%04" PRIX16,
ChipLogValueX64(fabricId), ChipLogValueX64(nodeId), vendorId);
continue;
}
else if (writeFabric(fabricId, nodeId, vendorId, fabricIndex) != EMBER_ZCL_STATUS_SUCCESS)
{
emberAfPrintln(EMBER_AF_PRINT_DEBUG, "OpCreds: Failed to write admin with fabricId %" PRIX64 " in fabrics list",
fabricId);
emberAfPrintln(EMBER_AF_PRINT_DEBUG,
"OpCreds: Failed to write admin with fabricId 0x" ChipLogFormatX64 " in fabrics list",
ChipLogValueX64(fabricId));
err = CHIP_ERROR_PERSISTED_STORAGE_FAILED;
break;
}
fabricIndex++;
}

// Store the count of fabrics we just stored
emberAfPrintln(EMBER_AF_PRINT_DEBUG, "OpCreds: Stored %" PRIX32 " admins in fabrics list attribute.", fabricIndex);
emberAfPrintln(EMBER_AF_PRINT_DEBUG, "OpCreds: Stored %" PRIu32 " admins in fabrics list attribute.", fabricIndex);
if (writeFabricAttribute((uint8_t *) &fabricIndex) != EMBER_ZCL_STATUS_SUCCESS)
{
emberAfPrintln(EMBER_AF_PRINT_DEBUG, "OpCreds: Failed to write admin count %" PRIX32 " in fabrics list", fabricIndex);
emberAfPrintln(EMBER_AF_PRINT_DEBUG, "OpCreds: Failed to write admin count %" PRIu32 " in fabrics list", fabricIndex);
err = CHIP_ERROR_PERSISTED_STORAGE_FAILED;
}

Expand All @@ -150,7 +151,7 @@ static AdminPairingInfo * retrieveCurrentAdmin()
{
uint64_t fabricId = emberAfCurrentCommand()->SourceNodeId();
// TODO: Figure out how to get device node id so we can do FindAdminForNode(fabricId, nodeId)...
emberAfPrintln(EMBER_AF_PRINT_DEBUG, "OpCreds: Finding admin with fabricId %" PRIX64 ".", fabricId);
emberAfPrintln(EMBER_AF_PRINT_DEBUG, "OpCreds: Finding admin with fabricId 0x" ChipLogFormatX64 ".", ChipLogValueX64(fabricId));
return GetGlobalAdminPairingTable().FindAdminForNode(fabricId);
}

Expand All @@ -166,27 +167,29 @@ class OpCredsAdminPairingTableDelegate : public AdminPairingTableDelegate
// Gets called when a fabric is deleted from KVS store
void OnAdminDeletedFromStorage(AdminId adminId) override
{
emberAfPrintln(EMBER_AF_PRINT_DEBUG, "OpCreds: Admin %" PRIX16 " was deleted from admin storage.", adminId);
emberAfPrintln(EMBER_AF_PRINT_DEBUG, "OpCreds: Admin 0x%" PRIX16 " was deleted from admin storage.", adminId);
writeAdminsIntoFabricsListAttribute();
}

// Gets called when a fabric is loaded into the AdminPairingTable from KVS store.
void OnAdminRetrievedFromStorage(AdminPairingInfo * admin) override
{
emberAfPrintln(EMBER_AF_PRINT_DEBUG,
"OpCreds: Admin %" PRIX16 " was retrieved from storage. FabricId %" PRIX64 ", NodeId %" PRIX64
", VendorId %" PRIX64,
admin->GetAdminId(), admin->GetFabricId(), admin->GetNodeId());
"OpCreds: Admin 0x%" PRIX16 " was retrieved from storage. FabricId 0x" ChipLogFormatX64
", NodeId 0x" ChipLogFormatX64 ", VendorId 0x%04" PRIX16,
admin->GetAdminId(), ChipLogValueX64(admin->GetFabricId()), ChipLogValueX64(admin->GetNodeId()),
admin->GetVendorId());
writeAdminsIntoFabricsListAttribute();
}

// Gets called when a fabric in AdminPairingTable is persisted to KVS store.
void OnAdminPersistedToStorage(AdminPairingInfo * admin) override
{
emberAfPrintln(EMBER_AF_PRINT_DEBUG,
"OpCreds: Admin %" PRIX16 " was persisted to storage. FabricId %" PRIX64 ", NodeId %" PRIX64
", VendorId %" PRIX64,
admin->GetAdminId(), admin->GetFabricId(), admin->GetNodeId());
"OpCreds: Admin %" PRIX16 " was persisted to storage. FabricId %0x" ChipLogFormatX64
", NodeId %0x" ChipLogFormatX64 ", VendorId 0x%04" PRIX16,
admin->GetAdminId(), ChipLogValueX64(admin->GetFabricId()), ChipLogValueX64(admin->GetNodeId()),
admin->GetVendorId());
writeAdminsIntoFabricsListAttribute();
}
};
Expand Down Expand Up @@ -229,7 +232,7 @@ bool emberAfOperationalCredentialsClusterRemoveFabricCallback(chip::app::Command
// TODO: remove SetFabric once AddOptCert + FabricIndex are implemented
bool emberAfOperationalCredentialsClusterSetFabricCallback(chip::app::Command * commandObj, uint16_t VendorId)
{
emberAfPrintln(EMBER_AF_PRINT_DEBUG, "OpCreds: SetFabric with vendorId %d", VendorId);
emberAfPrintln(EMBER_AF_PRINT_DEBUG, "OpCreds: SetFabric with vendorId %" PRIX16, VendorId);

EmberAfStatus status = EMBER_ZCL_STATUS_SUCCESS;
EmberStatus sendStatus = EMBER_SUCCESS;
Expand All @@ -241,7 +244,7 @@ bool emberAfOperationalCredentialsClusterSetFabricCallback(chip::app::Command *

// Store vendorId
admin->SetVendorId(VendorId);
emberAfPrintln(EMBER_AF_PRINT_DEBUG, "OpCreds: vendorId is now set %d", admin->GetVendorId());
emberAfPrintln(EMBER_AF_PRINT_DEBUG, "OpCreds: vendorId is now set %" PRIX16, admin->GetVendorId());
err = GetGlobalAdminPairingTable().Store(admin->GetAdminId());
VerifyOrExit(err == CHIP_NO_ERROR, status = EMBER_ZCL_STATUS_FAILURE);

Expand Down Expand Up @@ -276,7 +279,7 @@ bool emberAfOperationalCredentialsClusterSetFabricCallback(chip::app::Command *
}
if (sendStatus != EMBER_SUCCESS)
{
emberAfPrintln(EMBER_AF_PRINT_DEBUG, "OpCreds: Failed to send %s response: 0x%x", "set_fabric", sendStatus);
emberAfPrintln(EMBER_AF_PRINT_DEBUG, "OpCreds: Failed to send SetFabric response: 0x%x", sendStatus);
}
if (err != CHIP_NO_ERROR)
{
Expand Down
13 changes: 5 additions & 8 deletions src/app/server/Mdns.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,8 @@ NodeId GetCurrentNodeId()
auto pairing = GetGlobalAdminPairingTable().cbegin();
if (pairing != GetGlobalAdminPairingTable().cend())
{
ChipLogProgress(Discovery, "Found admin paring for admin %" PRIX16 ", node 0x%08" PRIx32 "%08" PRIx32,
pairing->GetAdminId(), static_cast<uint32_t>(pairing->GetNodeId() >> 32),
static_cast<uint32_t>(pairing->GetNodeId()));
ChipLogProgress(Discovery, "Found admin pairing for admin %" PRIX16 ", node 0x" ChipLogFormatX64, pairing->GetAdminId(),
ChipLogValueX64(pairing->GetNodeId()));
return pairing->GetNodeId();
}

Expand Down Expand Up @@ -107,11 +106,9 @@ CHIP_ERROR AdvertiseOperational()

auto & mdnsAdvertiser = chip::Mdns::ServiceAdvertiser::Instance();

ChipLogProgress(Discovery, "Advertise operational node %08" PRIx32 "%08" PRIx32 "-%08" PRIx32 "%08" PRIx32,
static_cast<uint32_t>(advertiseParameters.GetPeerId().GetFabricId() >> 32),
static_cast<uint32_t>(advertiseParameters.GetPeerId().GetFabricId()),
static_cast<uint32_t>(advertiseParameters.GetPeerId().GetNodeId() >> 32),
static_cast<uint32_t>(advertiseParameters.GetPeerId().GetNodeId()));
ChipLogProgress(Discovery, "Advertise operational node " ChipLogFormatX64 "-" ChipLogFormatX64,
ChipLogValueX64(advertiseParameters.GetPeerId().GetFabricId()),
ChipLogValueX64(advertiseParameters.GetPeerId().GetNodeId()));
return mdnsAdvertiser.Advertise(advertiseParameters);
}

Expand Down
9 changes: 4 additions & 5 deletions src/app/server/Server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,8 @@ CHIP_ERROR RestoreAllAdminPairingsFromKVS(AdminPairingTable & adminPairings, Adm
AdminPairingInfo * admin = adminPairings.FindAdminWithId(id);
if (admin != nullptr)
{
ChipLogProgress(AppServer, "Found admin pairing for %d, node ID 0x%08" PRIx32 "%08" PRIx32, admin->GetAdminId(),
static_cast<uint32_t>(admin->GetNodeId() >> 32), static_cast<uint32_t>(admin->GetNodeId()));
ChipLogProgress(AppServer, "Found admin pairing for %d, node ID 0x" ChipLogFormatX64, admin->GetAdminId(),
ChipLogValueX64(admin->GetNodeId()));
}
}
}
Expand Down Expand Up @@ -168,9 +168,8 @@ static CHIP_ERROR RestoreAllSessionsFromKVS(SecureSessionMgr & sessionMgr, Rende
{
connection.GetPASESession(session);

ChipLogProgress(AppServer, "Fetched the session information: from 0x%08" PRIx32 "%08" PRIx32,
static_cast<uint32_t>(session->PeerConnection().GetPeerNodeId() >> 32),
static_cast<uint32_t>(session->PeerConnection().GetPeerNodeId()));
ChipLogProgress(AppServer, "Fetched the session information: from 0x" ChipLogFormatX64,
ChipLogValueX64(session->PeerConnection().GetPeerNodeId()));
sessionMgr.NewPairing(Optional<Transport::PeerAddress>::Value(session->PeerConnection().GetPeerAddress()),
session->PeerConnection().GetPeerNodeId(), session, SecureSession::SessionRole::kResponder,
connection.GetAdminId(), nullptr);
Expand Down
3 changes: 2 additions & 1 deletion src/credentials/CHIPCertToX509.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,8 @@ static CHIP_ERROR DecodeConvertDN(TLVReader & reader, ASN1Writer & writer, ChipD
if (IsChip64bitDNAttr(attrOID))
{
// For CHIP 64-bit attribute the string representation is 16 uppercase hex characters.
snprintf(reinterpret_cast<char *>(chipAttrStr), sizeof(chipAttrStr), "%016" PRIX64, chipAttr);
snprintf(reinterpret_cast<char *>(chipAttrStr), sizeof(chipAttrStr), ChipLogFormatX64,
ChipLogValueX64(chipAttr));
asn1AttrVal = chipAttrStr;
asn1AttrValLen = 16;
}
Expand Down
3 changes: 2 additions & 1 deletion src/credentials/GenerateChipX509Cert.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,8 @@ CHIP_ERROR EncodeChipDNs(ChipDNParams * params, uint8_t numParams, ASN1Writer &
ASN1_START_SET
{
uint8_t chipAttrStr[kChip64bitAttrUTF8Length + 1];
snprintf(reinterpret_cast<char *>(chipAttrStr), sizeof(chipAttrStr), "%016" PRIX64, params[i].Value);
snprintf(reinterpret_cast<char *>(chipAttrStr), sizeof(chipAttrStr), ChipLogFormatX64,
ChipLogValueX64(params[i].Value));

ASN1_START_SEQUENCE
{
Expand Down
7 changes: 6 additions & 1 deletion src/crypto/CHIPCryptoPALmbedTLS.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,14 @@ static void _log_mbedTLS_error(int error_code)
{
if (error_code != 0)
{
#if defined(MBEDTLS_ERROR_C)
char error_str[MAX_ERROR_STR_LEN];
mbedtls_strerror(error_code, error_str, sizeof(error_str));
ChipLogError(Crypto, "mbedTLS error: %s\n", error_str);
ChipLogError(Crypto, "mbedTLS error: %s", error_str);
#else
// Error codes defined in 16-bit negative hex numbers. Ease lookup by printing likewise
ChipLogError(Crypto, "mbedTLS error: -0x%04X", -static_cast<uint16_t>(error_code));
#endif
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1007,7 +1007,7 @@ CHIP_ERROR GenericConfigurationManagerImpl<ImplClass>::_ComputeProvisioningHash(
err = Impl()->_GetManufacturerDeviceId(deviceId);
SuccessOrExit(err);

snprintf(inputBuf, sizeof(inputBuf), "0010%016" PRIX64, deviceId);
snprintf(inputBuf, sizeof(inputBuf), "0010" ChipLogFormatX64, ChipLogValueX64(deviceId));

hash.AddData((uint8_t *) inputBuf, kLenFieldLen + kDeviceIdLen);
}
Expand Down Expand Up @@ -1118,7 +1118,7 @@ void GenericConfigurationManagerImpl<ImplClass>::_LogDeviceConfig()
ChipLogProgress(DeviceLayer, "Device Configuration:");

#if CHIP_CONFIG_ENABLE_FABRIC_STATE
ChipLogProgress(DeviceLayer, " Device Id: %016" PRIX64, FabricState.LocalNodeId);
ChipLogProgress(DeviceLayer, " Device Id: 0x" ChipLogFormatX64, ChipLogValueX64(FabricState.LocalNodeId));
#endif

{
Expand Down Expand Up @@ -1190,7 +1190,7 @@ void GenericConfigurationManagerImpl<ImplClass>::_LogDeviceConfig()
#if CHIP_CONFIG_ENABLE_FABRIC_STATE
if (FabricState.FabricId != kFabricIdNotSpecified)
{
ChipLogProgress(DeviceLayer, " Fabric Id: %016" PRIX64, FabricState.FabricId);
ChipLogProgress(DeviceLayer, " Fabric Id: 0x" ChipLogFormatX64, ChipLogValueX64(FabricState.FabricId));
}
else
{
Expand Down
2 changes: 1 addition & 1 deletion src/inet/tests/TestInetCommonPosix.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ void InitNetwork()
uint64_t iid = gNetworkOptions.LocalIPv6Addr[j].InterfaceId();
char * tap_name = (char *) chip::Platform::MemoryAlloc(sizeof(gDefaultTapDeviceName));
assert(tap_name);
snprintf(tap_name, sizeof(gDefaultTapDeviceName), "chip-dev-%" PRIx64, iid & 0xFFFF);
snprintf(tap_name, sizeof(gDefaultTapDeviceName), "chip-dev-%" PRIx16, static_cast<uint16_t>(iid));
gNetworkOptions.TapDeviceName.push_back(tap_name);
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/lib/mdns/Advertiser_ImplMinimalMdns.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,7 @@ CHIP_ERROR AdvertiserMinMdns::Advertise(const CommissionAdvertisingParameters &
{
// TODO: need to detect colisions here
char nameBuffer[64] = "";
size_t len = snprintf(nameBuffer, sizeof(nameBuffer), "%016" PRIX64, GetRandU64());
size_t len = snprintf(nameBuffer, sizeof(nameBuffer), ChipLogFormatX64, GetRandU32(), GetRandU32());
if (len >= sizeof(nameBuffer))
{
return CHIP_ERROR_NO_MEMORY;
Expand Down
3 changes: 1 addition & 2 deletions src/lib/mdns/Discovery_ImplPlatform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -479,8 +479,7 @@ void DiscoveryImplPlatform::HandleNodeIdResolve(void * context, MdnsService * re
nodeData.mAddress = result->mAddress.ValueOr({});
nodeData.mPort = result->mPort;

ChipLogProgress(Discovery, "Node ID resolved for 0x08%" PRIX32 "08%" PRIX32,
static_cast<uint32_t>(nodeData.mPeerId.GetNodeId() >> 32), static_cast<uint32_t>(nodeData.mPeerId.GetNodeId()));
ChipLogProgress(Discovery, "Node ID resolved for 0x" ChipLogFormatX64, ChipLogValueX64(nodeData.mPeerId.GetNodeId()));
mgr->mResolverDelegate->OnNodeIdResolved(nodeData);
}

Expand Down
4 changes: 2 additions & 2 deletions src/lib/shell/commands/Config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ static CHIP_ERROR ConfigGetDeviceId(bool printHeader)
streamer_printf(sout, "DeviceId: ");
}
ReturnErrorOnFailure(ConfigurationMgr().GetDeviceId(value64));
streamer_printf(sout, "%" PRIu64 " (0x%" PRIX64 ")\r\n", value64, value64);
streamer_printf(sout, "%" PRIu64 " (0x" ChipLogFormatX64 ")\r\n", value64, ChipLogValueX64(value64));
return CHIP_NO_ERROR;
}

Expand Down Expand Up @@ -124,7 +124,7 @@ static CHIP_ERROR ConfigGetFabricId(bool printHeader)
streamer_printf(sout, "FabricId: ");
}
ReturnErrorOnFailure(ConfigurationMgr().GetFabricId(value64));
streamer_printf(sout, "%" PRIu64 " (0x%" PRIX64 ")\r\n", value64, value64);
streamer_printf(sout, "%" PRIu64 " (0x" ChipLogFormatX64 ")\r\n", value64, ChipLogValueX64(value64));
return CHIP_NO_ERROR;
}

Expand Down
Loading

0 comments on commit 7dbc566

Please sign in to comment.