1 //******************************************************************
3 // Copyright 2014 Samsung Electronics All Rights Reserved.
4 // Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved.
6 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
8 // Licensed under the Apache License, Version 2.0 (the "License");
9 // you may not use this file except in compliance with the License.
10 // You may obtain a copy of the License at
12 // http://www.apache.org/licenses/LICENSE-2.0
14 // Unless required by applicable law or agreed to in writing, software
15 // distributed under the License is distributed on an "AS IS" BASIS,
16 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 // See the License for the specific language governing permissions and
18 // limitations under the License.
20 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
28 //-----------------------------------------------------------------------------
30 //-----------------------------------------------------------------------------
31 #define TAG "occlient"
32 #define DEFAULT_CONTEXT_VALUE 0x99
33 #ifndef MAX_LENGTH_IPv4_ADDR
34 #define MAX_LENGTH_IPv4_ADDR 16
37 //-----------------------------------------------------------------------------
39 //-----------------------------------------------------------------------------
42 * List of methods that can be initiated from the client
45 TEST_DISCOVER_REQ = 1,
47 TEST_GET_REQ_NON_WITH_FILTERS,
52 TEST_GET_UNAVAILABLE_RES_REQ_NON,
59 TEST_OBS_PRESENCE_WITH_FILTER,
60 TEST_OBS_PRESENCE_WITH_FILTERS,
61 TEST_OBS_MULTICAST_PRESENCE,
63 TEST_OBS_REQ_NON_CANCEL_IMM,
64 TEST_GET_REQ_NON_WITH_VENDOR_HEADER_OPTIONS,
65 TEST_DISCOVER_PLATFORM_REQ,
66 TEST_DISCOVER_DEV_REQ,
71 * List of connectivity types that can be initiated from the client
72 * Required for user input validation
75 CT_ADAPTER_DEFAULT = 0,
79 } CLIENT_CONNECTIVITY_TYPE;
85 //----------------------------------------------------------------------------
87 //----------------------------------------------------------------------------
88 std::string getConnectivityType (OCConnectivityType connType);
90 /* call getResult in common.cpp to get the result in string format. */
91 const char *getResult(OCStackResult result);
93 /* Get the IP address of the server */
94 std::string getIPAddrTBServer(OCClientResponse * clientResponse);
96 /* Get the port number the server is listening on */
97 std::string getPortTBServer(OCClientResponse * clientResponse);
99 /* Returns the query string for GET and PUT operations */
100 std::string getQueryStrForGetPut(OCClientResponse * clientResponse);
102 /* Following are initialization functions for GET, Observe, PUT
103 * POST, Delete & Discovery operations
105 int InitGetRequestToUnavailableResource(OCQualityOfService qos);
106 int InitObserveRequest(OCQualityOfService qos);
107 int InitPutRequest(OCQualityOfService qos);
108 int InitGetRequest(OCQualityOfService qos, uint8_t withVendorSpecificHeaderOptions, bool getWithQuery);
109 int InitPostRequest(OCQualityOfService qos);
110 int InitDeleteRequest(OCQualityOfService qos);
111 int InitGetRequest(OCQualityOfService qos);
112 int InitDeviceDiscovery(OCQualityOfService qos);
113 int InitPlatformDiscovery(OCQualityOfService qos);
114 int InitDiscovery(OCQualityOfService qos);
116 /* Function to retrieve ip address, port no. of the server
117 * and query for the operations to be performed.
119 void parseClientResponse(OCClientResponse * clientResponse);
121 /* Call delete operation on already deleted resource */
122 void* RequestDeleteDeathResourceTask(void* myqos);
124 /* This method calls OCDoResource() which in turn makes calls
125 * to the lower layers
127 OCStackResult InvokeOCDoResource(std::ostringstream &query,
128 OCMethod method, OCQualityOfService qos,
129 OCClientResponseHandler cb, OCHeaderOption * options, uint8_t numOptions);
131 //-----------------------------------------------------------------------------
132 // Callback functions
133 //-----------------------------------------------------------------------------
135 /* Following are callback functions for the GET, Observe, PUT
136 * POST, Delete, Presence & Discovery operations
138 OCStackApplicationResult putReqCB(void* ctx, OCDoHandle handle, OCClientResponse * clientResponse);
140 OCStackApplicationResult postReqCB(void *ctx, OCDoHandle handle, OCClientResponse *clientResponse);
142 OCStackApplicationResult getReqCB(void* ctx, OCDoHandle handle, OCClientResponse * clientResponse);
144 OCStackApplicationResult obsReqCB(void* ctx, OCDoHandle handle, OCClientResponse * clientResponse);
146 OCStackApplicationResult presenceCB(void* ctx,
147 OCDoHandle handle, OCClientResponse * clientResponse);
149 OCStackApplicationResult deleteReqCB(void *ctx,
150 OCDoHandle handle, OCClientResponse *clientResponse);
152 OCStackApplicationResult discoveryReqCB(void* ctx, OCDoHandle handle,
153 OCClientResponse * clientResponse);