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 ******************************************************************/
25 #include "cainterface.h"
27 #define MAX_BUF_LEN 1024
32 void start_listening_server();
33 void start_discovery_server();
37 void advertise_resource();
38 void select_network();
39 void unselect_network();
40 void handle_request_response();
42 void request_handler(CARemoteEndpoint_t* object, CARequestInfo_t* requestInfo);
43 void response_handler(CARemoteEndpoint_t* object, CAResponseInfo_t* responseInfo);
44 void send_request_tmp(CARemoteEndpoint_t* endpoint, CAToken_t token);
50 printf("=============================================\n");
51 printf("\t\tsample main\n");
52 printf("=============================================\n");
58 printf("select default network(WIFI)\n");
59 CASelectNetwork(CA_WIFI);
62 CARegisterHandler(request_handler, response_handler);
75 char menu = get_menu();
88 case 's': // start listening server
90 start_listening_server();
93 case 'd': // start discovery server
95 start_discovery_server();
98 case 'f': // find resource
103 case 'r': // send request
108 case 'a': // advertise resource
110 advertise_resource();
113 case 'n': // select network
118 case 'x': // unselect network
123 case 'h': // handle request response
125 handle_request_response();
129 printf("not supported menu!!\n");
136 void start_listening_server()
138 printf("start listening server!!\n");
140 CAStartListeningServer();
143 void start_discovery_server()
145 printf("start discovery server!!\n");
147 CAStartDiscoveryServer();
152 char buf[MAX_BUF_LEN];
154 memset(buf, 0, sizeof(char) * MAX_BUF_LEN);
156 printf("\n=============================================\n");
157 printf("ex) a/light\n");
158 printf("reference uri : ");
162 CAResult_t res = CAFindResource(buf);
164 if (res != CA_STATUS_OK)
166 printf("find resource error!!\n");
170 printf("find resource fo %s URI\n", buf);
173 printf("=============================================\n");
178 char buf[MAX_BUF_LEN];
180 memset(buf, 0, sizeof(char) * MAX_BUF_LEN);
182 printf("\n=============================================\n");
183 printf("coap://10.11.12.13:4545/resource_uri ( for IP )\n");
184 printf("coap://10:11:12:13:45:45/resource_uri ( for BT )\n");
189 // create remote endpoint
190 CARemoteEndpoint_t* endpoint = NULL;
191 CAResult_t res = CACreateRemoteEndpoint(buf, &endpoint);
192 endpoint->connectivityType = CA_WIFI; //
194 if (res != CA_STATUS_OK)
196 printf("create remote endpoint error!!");
201 CAToken_t token = NULL;
202 res = CAGenerateToken(&token);
204 if (res != CA_STATUS_OK)
206 printf("token generate error!!");
210 printf("generated token %s\n", (token != NULL) ? token : "");
212 CAInfo_t requestData;
213 memset(&requestData, 0, sizeof(CAInfo_t));
214 requestData.token = token;
215 requestData.payload = "Temp Json Payload";
217 CARequestInfo_t requestInfo;
218 memset(&requestInfo, 0, sizeof(CARequestInfo_t));
219 requestInfo.method = CA_GET;
220 requestInfo.info = requestData;
223 CASendRequest(endpoint, &requestInfo);
227 CADestroyToken(token);
230 // destroy remote endpoint
231 if (endpoint != NULL)
233 CADestroyRemoteEndpoint(endpoint);
236 printf("=============================================\n");
239 void advertise_resource()
241 printf("\n=============================================\n");
243 printf("not implemented yet.\n");
245 printf("=============================================\n");
248 void select_network()
250 char buf[MAX_BUF_LEN];
252 printf("\n=============================================\n");
253 printf("\tselect network\n");
254 printf("ETHERNET : 0\n");
255 printf("WIFI : 1\n");
260 memset(buf, 0, sizeof(char) * MAX_BUF_LEN);
263 int number = buf[0] - '0';
265 number = (number < 0 || number > 3) ? 1 : number;
267 CASelectNetwork(1 << number);
269 printf("=============================================\n");
272 void unselect_network()
274 char buf[MAX_BUF_LEN];
276 printf("\n=============================================\n");
277 printf("\tunselect enabled network\n");
278 printf("ETHERNET : 0\n");
279 printf("WIFI : 1\n");
284 memset(buf, 0, sizeof(char) * MAX_BUF_LEN);
287 int number = buf[0] - '0';
289 number = (number < 0 || number > 3) ? 1 : number;
291 CAUnSelectNetwork(1 << number);
293 printf("=============================================\n");
298 char buf[MAX_BUF_LEN];
300 printf("\n=============================================\n");
301 printf("\t\tMenu\n");
302 printf("\ts : start listening server\n");
303 printf("\td : start discovery server\n");
304 printf("\tf : find resource\n");
305 printf("\tr : send request\n");
306 printf("\ta : advertise resource\n");
307 printf("\tn : select network\n");
308 printf("\tx : unselect network\n");
309 printf("\th : handle request response\n");
310 printf("\tq : quit\n");
311 printf("=============================================\n");
314 memset(buf, 0, sizeof(char) * MAX_BUF_LEN);
321 void handle_request_response()
323 printf("handle_request_response\n");
324 CAHandleRequestResponse();
327 void request_handler(CARemoteEndpoint_t* object, CARequestInfo_t* requestInfo)
330 printf("request_handler, uri : %s, data : %s\n", (object != NULL) ? object->resourceUri : "",
331 (requestInfo != NULL) ? requestInfo->info.payload : "");
333 printf("send response with URI\n");
334 send_response(object, (requestInfo != NULL) ? requestInfo->info.token : "");
338 void response_handler(CARemoteEndpoint_t* object, CAResponseInfo_t* responseInfo)
341 printf("response_handler, uri : %s, data : %s\n", (object != NULL) ? object->resourceUri : "",
342 (responseInfo != NULL) ? responseInfo->info.payload : "");
344 printf("send request after receivce response data\n");
345 send_request_tmp(object, (responseInfo != NULL) ? responseInfo->info.token : "");
348 void send_response(CARemoteEndpoint_t* endpoint, CAToken_t request_token)
351 printf("\n=============================================\n");
353 CAInfo_t responseData;
354 //responseData = (CAInfo*) malloc(sizeof(CAInfo));
355 memset(&responseData, 0, sizeof(CAInfo_t));
356 responseData.token = request_token;
357 responseData.payload = "response payload";
359 CAResponseInfo_t responseInfo;
360 //responseInfo = (CAResponseInfo*) malloc(sizeof(CAResponseInfo));
361 memset(&responseInfo, 0, sizeof(CAResponseInfo_t));
362 responseInfo.result = 203;
363 responseInfo.info = responseData;
366 endpoint->connectivityType = CA_WIFI;
367 CASendResponse(endpoint, &responseInfo);
369 printf("=============================================\n");
373 void send_request_tmp(CARemoteEndpoint_t* endpoint, CAToken_t token)
376 printf("\n=============================================\n");
378 CAInfo_t requestData;
379 memset(&requestData, 0, sizeof(CAInfo_t));
380 requestData.token = token;
381 requestData.payload = "Temp Json Payload";
383 CARequestInfo_t requestInfo;
384 memset(&requestInfo, 0, sizeof(CARequestInfo_t));
385 requestInfo.method = CA_GET;
386 requestInfo.info = requestData;
389 endpoint->connectivityType = CA_WIFI;
390 CASendRequest(endpoint, &requestInfo);
392 printf("=============================================\n");