1 /******************************************************************
3 * Copyright 2014 Samsung Electronics All Rights Reserved.
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 ******************************************************************/
21 #include "caadapterutils.h"
25 #include "oic_malloc.h"
26 #endif //#ifndef __ARDUINO__
27 #define CA_ADAPTER_UTILS_TAG "CA_ADAPTER_UTILS"
29 CALocalConnectivity_t *CAAdapterCreateLocalEndpoint(CAConnectivityType_t type, const char *address,
30 const char *interfaceName)
32 CALocalConnectivity_t *info = (CALocalConnectivity_t *) OICMalloc(
33 sizeof(CALocalConnectivity_t));
36 OIC_LOG_V(ERROR, CA_ADAPTER_UTILS_TAG, "Memory allocation failed !");
39 memset(info, 0, sizeof(CALocalConnectivity_t));
42 if (address && strlen(address))
46 strncpy(info->addressInfo.BT.btMacAddress, address, CA_MACADDR_SIZE - 1);
47 info->addressInfo.BT.btMacAddress[CA_MACADDR_SIZE - 1] = '\0';
49 else if (CA_LE == type)
51 strncpy(info->addressInfo.LE.leMacAddress, address, CA_MACADDR_SIZE - 1);
52 info->addressInfo.LE.leMacAddress[CA_MACADDR_SIZE - 1] = '\0';
54 else if (CA_WIFI == type || CA_ETHERNET == type)
56 strncpy(info->addressInfo.IP.ipAddress, address, CA_IPADDR_SIZE - 1);
57 info->addressInfo.IP.ipAddress[CA_IPADDR_SIZE - 1] = '\0';
64 CALocalConnectivity_t *CAAdapterCopyLocalEndpoint(CALocalConnectivity_t *connectivity)
66 VERIFY_NON_NULL_RET(connectivity, CA_ADAPTER_UTILS_TAG, "connectivity is NULL", NULL);
68 CALocalConnectivity_t *info = (CALocalConnectivity_t *) OICMalloc(
69 sizeof(CALocalConnectivity_t));
72 OIC_LOG_V(ERROR, CA_ADAPTER_UTILS_TAG, "Memory allocation failed !");
75 memset(info, 0, sizeof(CALocalConnectivity_t));
77 info->type = connectivity->type;
78 if (CA_EDR == info->type && strlen(connectivity->addressInfo.BT.btMacAddress))
80 strncpy(info->addressInfo.BT.btMacAddress, connectivity->addressInfo.BT.btMacAddress,
82 info->addressInfo.BT.btMacAddress[CA_MACADDR_SIZE - 1] = '\0';
84 else if (CA_LE == info->type && strlen(connectivity->addressInfo.LE.leMacAddress))
86 strncpy(info->addressInfo.LE.leMacAddress, connectivity->addressInfo.LE.leMacAddress,
88 info->addressInfo.LE.leMacAddress[CA_MACADDR_SIZE - 1] = '\0';
90 else if ((CA_WIFI == info->type || CA_ETHERNET == info->type)
91 && strlen(connectivity->addressInfo.IP.ipAddress))
93 strncpy(info->addressInfo.IP.ipAddress, connectivity->addressInfo.IP.ipAddress,
95 info->addressInfo.IP.ipAddress[CA_IPADDR_SIZE - 1] = '\0';
101 void CAAdapterFreeLocalEndpoint(CALocalConnectivity_t *localEndpoint)
105 OICFree(localEndpoint);
109 CARemoteEndpoint_t *CAAdapterCreateRemoteEndpoint(CAConnectivityType_t type, const char *address,
110 const char *resourceUri)
112 CARemoteEndpoint_t *info = (CARemoteEndpoint_t *) OICMalloc(sizeof(CARemoteEndpoint_t));
115 OIC_LOG_V(ERROR, CA_ADAPTER_UTILS_TAG, "Memory allocation failed !");
118 memset(info, 0, sizeof(CARemoteEndpoint_t));
120 info->connectivityType = type;
121 if (address && strlen(address))
125 strncpy(info->addressInfo.BT.btMacAddress, address, CA_MACADDR_SIZE - 1);
126 info->addressInfo.BT.btMacAddress[CA_MACADDR_SIZE - 1] = '\0';
128 else if (CA_LE == info->connectivityType)
130 strncpy(info->addressInfo.LE.leMacAddress, address, CA_MACADDR_SIZE - 1);
131 info->addressInfo.LE.leMacAddress[CA_MACADDR_SIZE - 1] = '\0';
133 else if (CA_WIFI == type || CA_ETHERNET == type)
135 strncpy(info->addressInfo.IP.ipAddress, address, CA_IPADDR_SIZE - 1);
136 info->addressInfo.IP.ipAddress[CA_IPADDR_SIZE - 1] = '\0';
140 if (resourceUri && strlen(resourceUri))
142 info->resourceUri = OICStrdup(resourceUri);
148 CARemoteEndpoint_t *CAAdapterCopyRemoteEndpoint(const CARemoteEndpoint_t *remoteEndpoint)
150 VERIFY_NON_NULL_RET(remoteEndpoint, CA_ADAPTER_UTILS_TAG, "Remote endpoint is NULL", NULL);
152 CARemoteEndpoint_t *info = (CARemoteEndpoint_t *) OICMalloc(sizeof(CARemoteEndpoint_t));
155 OIC_LOG_V(ERROR, CA_ADAPTER_UTILS_TAG, "Memory allocation failed !");
158 memset(info, 0, sizeof(CARemoteEndpoint_t));
160 info->connectivityType = remoteEndpoint->connectivityType;
161 if (CA_EDR == info->connectivityType && strlen(remoteEndpoint->addressInfo.BT.btMacAddress))
163 strncpy(info->addressInfo.BT.btMacAddress, remoteEndpoint->addressInfo.BT.btMacAddress,
164 CA_MACADDR_SIZE - 1);
165 info->addressInfo.BT.btMacAddress[CA_MACADDR_SIZE - 1] = '\0';
167 else if (CA_LE == info->connectivityType && strlen(remoteEndpoint->addressInfo.LE.leMacAddress))
169 strncpy(info->addressInfo.LE.leMacAddress, remoteEndpoint->addressInfo.LE.leMacAddress,
170 CA_MACADDR_SIZE - 1);
171 info->addressInfo.LE.leMacAddress[CA_MACADDR_SIZE - 1] = '\0';
173 else if ((CA_WIFI == info->connectivityType || CA_ETHERNET == info->connectivityType)
174 && strlen(remoteEndpoint->addressInfo.IP.ipAddress))
176 strncpy(info->addressInfo.IP.ipAddress, remoteEndpoint->addressInfo.IP.ipAddress,
178 info->addressInfo.IP.ipAddress[CA_IPADDR_SIZE - 1] = '\0';
179 info->addressInfo.IP.port = remoteEndpoint->addressInfo.IP.port;
182 if (remoteEndpoint->resourceUri && strlen(remoteEndpoint->resourceUri))
184 info->resourceUri = OICStrdup(remoteEndpoint->resourceUri);
190 void CAAdapterFreeRemoteEndpoint(CARemoteEndpoint_t *remoteEndpoint)
194 if (remoteEndpoint->resourceUri)
196 OICFree(remoteEndpoint->resourceUri);
199 OICFree(remoteEndpoint);