Line data Source code
1 : /*
2 : *
3 : * Copyright (c) 2021 Project CHIP Authors
4 : *
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
8 : *
9 : * http://www.apache.org/licenses/LICENSE-2.0
10 : *
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.
16 : */
17 :
18 : /**
19 : * @file
20 : * This file implements the handler for echo messages.
21 : */
22 :
23 : #include <app/server/EchoHandler.h>
24 :
25 : #include <lib/core/ErrorStr.h>
26 : #include <protocols/echo/Echo.h>
27 :
28 : namespace {
29 :
30 : // The EchoServer object.
31 : chip::Protocols::Echo::EchoServer gEchoServer;
32 :
33 : /**
34 : * Callback handler when a CHIP EchoRequest is received.
35 : *
36 : * @param [in] ec The exchange context holding the incoming message.
37 : * @param [in] payload The buffer holding the message. This function guarantees
38 : * that it will free the buffer before returning.
39 : *
40 : */
41 0 : void HandleEchoRequestReceived(chip::Messaging::ExchangeContext * ec, chip::System::PacketBufferHandle && payload)
42 : {
43 0 : ChipLogProgress(AppServer, "Echo Request, len=%" PRIu32 "... sending response.\n",
44 : static_cast<uint32_t>(payload->DataLength()));
45 0 : }
46 :
47 : } // namespace
48 :
49 0 : CHIP_ERROR InitEchoHandler(chip::Messaging::ExchangeManager * exchangeMgr)
50 : {
51 0 : CHIP_ERROR err = CHIP_NO_ERROR;
52 :
53 0 : err = gEchoServer.Init(exchangeMgr);
54 0 : SuccessOrExit(err);
55 :
56 : // Arrange to get a callback whenever an Echo Request is received.
57 0 : gEchoServer.SetEchoRequestReceived(HandleEchoRequestReceived);
58 :
59 0 : exit:
60 0 : if (err != CHIP_NO_ERROR)
61 : {
62 0 : ChipLogError(AppServer, "EchoServer failed, err:%s\n", chip::ErrorStr(err));
63 : }
64 :
65 0 : return err;
66 : }
|