2 * Copyright (c) 2017, The OpenThread Authors.
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * 3. Neither the name of the copyright holder nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE.
31 * This file includes definition for Thread border router agent instance.
34 #ifndef OTBR_AGENT_AGENT_INSTANCE_HPP_
35 #define OTBR_AGENT_AGENT_INSTANCE_HPP_
37 #include "openthread-br/config.h"
41 #include <sys/select.h>
42 #include <sys/types.h>
44 #include "agent/border_agent.hpp"
45 #include "agent/instance_params.hpp"
46 #include "agent/ncp.hpp"
51 * This class implements an instance to host services used by border router.
58 * The constructor to initialize the Thread border router agent instance.
60 * @param[in] aNcp A pointer to the NCP controller.
63 AgentInstance(Ncp::Controller *aNcp);
68 * This method initialize the agent.
70 * @retval OTBR_ERROR_NONE Agent initialized successfully.
71 * @retval OTBR_ERROR_ERRNO Failed due to error indicated in errno.
77 * This method updates the file descriptor sets and timeout for mainloop.
79 * @param[inout] aMainloop A reference to OpenThread mainloop context.
82 void UpdateFdSet(otSysMainloopContext &aMainloop);
85 * This method performs processing.
87 * @param[in] aMainloop A reference to OpenThread mainloop context.
90 void Process(const otSysMainloopContext &aMainloop);
93 * This method return mNcp pointer.
95 * @retval the pointer of mNcp.
98 Ncp::Controller &GetNcp(void) { return *mNcp; }
101 Ncp::Controller *mNcp;
102 BorderAgent mBorderAgent;
107 #endif // OTBR_AGENT_AGENT_INSTANCE_HPP_