diff --git a/examples/shell/shell_common/cmd_ping.cpp b/examples/shell/shell_common/cmd_ping.cpp index 1979b846693319..832d3d3c814462 100644 --- a/examples/shell/shell_common/cmd_ping.cpp +++ b/examples/shell/shell_common/cmd_ping.cpp @@ -53,7 +53,7 @@ class PingArguments mLastEchoTime = 0; mEchoCount = 0; mEchoRespCount = 0; - mEchoReqSize = 32; + mPayloadSize = 32; mWaitingForEchoResp = false; #if INET_CONFIG_ENABLE_TCP_ENDPOINT mUsingTCP = false; @@ -79,8 +79,8 @@ class PingArguments uint32_t GetEchoInterval() const { return mEchoInterval; } void SetEchoInterval(uint32_t value) { mEchoInterval = value; } - uint32_t GetEchoReqSize() const { return mEchoReqSize; } - void SetEchoReqSize(uint32_t value) { mEchoReqSize = value; } + uint32_t GetPayloadSize() const { return mPayloadSize; } + void SetPayloadSize(uint32_t value) { mPayloadSize = value; } uint16_t GetEchoPort() const { return mEchoPort; } void SetEchoPort(uint16_t value) { mEchoPort = value; } @@ -107,7 +107,7 @@ class PingArguments uint64_t mEchoRespCount; // The CHIP Echo request payload size in bytes. - uint32_t mEchoReqSize; + uint32_t mPayloadSize; // Max value for the number of echo requests sent. uint32_t mMaxEchoCount; @@ -143,19 +143,14 @@ CHIP_ERROR SendEchoRequest(streamer_t * stream) Messaging::SendFlags sendFlags; System::PacketBufferHandle payloadBuf; - char * requestData = nullptr; + uint32_t payloadSize = gPingArguments.GetPayloadSize(); - uint32_t size = gPingArguments.GetEchoReqSize(); - VerifyOrExit(size <= kMaxPayloadSize, err = CHIP_ERROR_MESSAGE_TOO_LONG); - - requestData = static_cast(chip::Platform::MemoryAlloc(size)); - VerifyOrExit(requestData != nullptr, err = CHIP_ERROR_NO_MEMORY); - - snprintf(requestData, size, "Echo Message %" PRIu64 "\n", gPingArguments.GetEchoCount()); - - payloadBuf = MessagePacketBuffer::NewWithData(requestData, size); + payloadBuf = MessagePacketBuffer::New(payloadSize); VerifyOrExit(!payloadBuf.IsNull(), err = CHIP_ERROR_NO_MEMORY); + memset(payloadBuf->Start(), 0, payloadSize); + payloadBuf->SetDataLength(payloadSize); + if (gPingArguments.IsUsingMRP()) { sendFlags.Set(Messaging::SendMessageFlags::kNone); @@ -167,7 +162,7 @@ CHIP_ERROR SendEchoRequest(streamer_t * stream) gPingArguments.SetLastEchoTime(System::Timer::GetCurrentEpoch()); - streamer_printf(stream, "\nSend echo request message with payload size: %d bytes to Node: %" PRIu64 "\n", size, + streamer_printf(stream, "\nSend echo request message with payload size: %d bytes to Node: %" PRIu64 "\n", payloadSize, kTestDeviceNodeId); err = gEchoClient.SendEchoRequest(std::move(payloadBuf), sendFlags); @@ -179,11 +174,6 @@ CHIP_ERROR SendEchoRequest(streamer_t * stream) } exit: - if (requestData != nullptr) - { - chip::Platform::MemoryFree(requestData); - } - if (err != CHIP_NO_ERROR) { streamer_printf(stream, "Send echo request failed, err: %s\n", ErrorStr(err)); @@ -364,7 +354,7 @@ void PrintUsage(streamer_t * stream) streamer_printf(stream, " -i ping interval time in seconds\n"); streamer_printf(stream, " -c stop after replies\n"); streamer_printf(stream, " -r <1|0> enable or disable MRP\n"); - streamer_printf(stream, " -s payload size in bytes\n"); + streamer_printf(stream, " -s application payload size in bytes\n"); } int cmd_ping(int argc, char ** argv) @@ -431,7 +421,7 @@ int cmd_ping(int argc, char ** argv) } else { - gPingArguments.SetEchoReqSize(atol(argv[optIndex])); + gPingArguments.SetPayloadSize(atol(argv[optIndex])); } break; case 'r': diff --git a/examples/shell/shell_common/cmd_send.cpp b/examples/shell/shell_common/cmd_send.cpp index f953533def6490..9587d5218d2aad 100644 --- a/examples/shell/shell_common/cmd_send.cpp +++ b/examples/shell/shell_common/cmd_send.cpp @@ -130,8 +130,7 @@ CHIP_ERROR SendMessage(streamer_t * stream) Messaging::SendFlags sendFlags; System::PacketBufferHandle payloadBuf; - char * requestData = nullptr; - uint32_t size = 0; + uint32_t payloadSize = gSendArguments.GetPayloadSize(); // Discard any existing exchange context. Effectively we can only have one exchange with // a single node at any one time. @@ -145,16 +144,12 @@ CHIP_ERROR SendMessage(streamer_t * stream) gExchangeCtx = gExchangeManager.NewContext({ kTestDeviceNodeId, 0, gAdminId }, &gMockAppDelegate); VerifyOrExit(gExchangeCtx != nullptr, err = CHIP_ERROR_NO_MEMORY); - size = gSendArguments.GetPayloadSize(); - VerifyOrExit(size <= kMaxPayloadSize, err = CHIP_ERROR_INVALID_MESSAGE_LENGTH); - - requestData = static_cast(chip::Platform::MemoryAlloc(size)); - VerifyOrExit(requestData != nullptr, err = CHIP_ERROR_NO_MEMORY); - - snprintf(requestData, size, "CHIP Message"); - payloadBuf = MessagePacketBuffer::NewWithData(requestData, size); + payloadBuf = MessagePacketBuffer::New(payloadSize); VerifyOrExit(!payloadBuf.IsNull(), err = CHIP_ERROR_NO_MEMORY); + memset(payloadBuf->Start(), 0, payloadSize); + payloadBuf->SetDataLength(payloadSize); + if (gSendArguments.IsUsingMRP()) { sendFlags.Set(Messaging::SendMessageFlags::kNone); @@ -169,7 +164,8 @@ CHIP_ERROR SendMessage(streamer_t * stream) gSendArguments.SetLastSendTime(System::Timer::GetCurrentEpoch()); - streamer_printf(stream, "\nSend CHIP message with payload size: %d bytes to Node: %" PRIu64 "\n", size, kTestDeviceNodeId); + streamer_printf(stream, "\nSend CHIP message with payload size: %d bytes to Node: %" PRIu64 "\n", payloadSize, + kTestDeviceNodeId); err = gExchangeCtx->SendMessage(Protocols::Id(VendorId::Common, gSendArguments.GetProtocolId()), gSendArguments.GetMessageType(), std::move(payloadBuf), sendFlags); @@ -181,11 +177,6 @@ CHIP_ERROR SendMessage(streamer_t * stream) } exit: - if (requestData != nullptr) - { - chip::Platform::MemoryFree(requestData); - } - if (err != CHIP_NO_ERROR) { streamer_printf(stream, "Send CHIP message failed, err: %s\n", ErrorStr(err)); @@ -317,7 +308,7 @@ void PrintUsage(streamer_t * stream) streamer_printf(stream, " -T message type\n"); streamer_printf(stream, " -p server port number\n"); streamer_printf(stream, " -r <1|0> enable or disable MRP\n"); - streamer_printf(stream, " -s payload size in bytes\n"); + streamer_printf(stream, " -s application payload size in bytes\n"); } int cmd_send(int argc, char ** argv) diff --git a/examples/shell/shell_common/include/Globals.h b/examples/shell/shell_common/include/Globals.h index 377e1775fd4246..5bc73db7d139a6 100644 --- a/examples/shell/shell_common/include/Globals.h +++ b/examples/shell/shell_common/include/Globals.h @@ -28,7 +28,6 @@ constexpr size_t kMaxTcpActiveConnectionCount = 4; constexpr size_t kMaxTcpPendingPackets = 4; #endif -constexpr size_t kMaxPayloadSize = 1280; constexpr size_t kResponseTimeOut = 1000; extern chip::secure_channel::MessageCounterManager gMessageCounterManager;