2 * Copyright (c) 2020 Project CHIP Authors
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
19 #include "EchoCommand.h"
21 using namespace ::chip;
24 static const char PAYLOAD[] = "Message from Standalone CHIP echo client!";
26 bool IsIdenticalMessage(System::PacketBufferHandle & buffer)
28 size_t dataLen = buffer->DataLength();
29 return (dataLen + 1 == sizeof PAYLOAD) && (memcmp(buffer->Start(), PAYLOAD, dataLen) == 0);
33 uint16_t EchoCommand::Encode(PacketBufferHandle & buffer, uint16_t bufferSize)
35 uint16_t payloadLen = 0;
37 if (strlen(PAYLOAD) > bufferSize)
39 ChipLogError(chipTool, "PAYLOAD length too big for PacketBuffer (> bufferSize)");
43 payloadLen = static_cast<uint16_t>(strlen(PAYLOAD));
44 memcpy(buffer->Start(), PAYLOAD, payloadLen);
50 bool EchoCommand::Decode(PacketBufferHandle & buffer) const
52 bool success = IsIdenticalMessage(buffer);
56 ChipLogError(chipTool, "Echo: Error \nSend: %s \nRecv: %.*s", PAYLOAD, buffer->DataLength(), buffer->Start());