Merge branch 'group-manager'
[platform/upstream/iotivity.git] / resource / src / CAManager.cpp
1 /* ****************************************************************
2  *
3  * Copyright 2016 Samsung Electronics All Rights Reserved.
4  *
5  *
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  ******************************************************************/
20
21 /**
22  * @file
23  *
24  * This file contains the implementation of classes and its members related
25  * to CAManager. Network changes status will be passed from CA to application.
26  */
27
28 #include "OCApi.h"
29 #include "CAManager.h"
30 #include "cautilinterface.h"
31
32 using namespace OC;
33
34 namespace
35 {
36         CAManager::AdapterChangedCallback g_adapterHandler = NULL;
37         CAManager::ConnectionChangedCallback g_connectionHandler = NULL;
38 }
39
40 void DefaultAdapterStateChangedHandler(CATransportAdapter_t adapter, bool enabled)
41 {
42     if (g_adapterHandler)
43     {
44         g_adapterHandler((OCTransportAdapter) adapter, enabled);
45     }
46 }
47
48 void DefaultConnectionStateChangedHandler(CATransportAdapter_t adapter,
49                                           const char *remote_address, bool connected)
50 {
51     if (g_connectionHandler)
52     {
53         g_connectionHandler((OCTransportAdapter) adapter, remote_address, connected);
54     }
55 }
56
57 OCStackResult CAManager::setNetworkMonitorHandler(AdapterChangedCallback adapterHandler,
58                                                   ConnectionChangedCallback connectionHandler)
59 {
60     g_adapterHandler = adapterHandler;
61     g_connectionHandler = connectionHandler;
62
63     CAResult_t ret = CARegisterNetworkMonitorHandler(DefaultAdapterStateChangedHandler,
64                                                      DefaultConnectionStateChangedHandler);
65
66     switch (ret)
67     {
68         case CA_STATUS_OK:
69             return OC_STACK_OK;
70         case CA_NOT_SUPPORTED:
71             return OC_STACK_NOTIMPL;
72         default:
73             return OC_STACK_ERROR;
74     }
75 }