1 //******************************************************************
3 // Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
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 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
27 //-----------------------------------------------------------------------------
29 //-----------------------------------------------------------------------------
30 #define TAG "occlient"
31 #define DEFAULT_CONTEXT_VALUE 0x99
32 #ifndef MAX_LENGTH_IPv4_ADDR
33 #define MAX_LENGTH_IPv4_ADDR 16
36 //-----------------------------------------------------------------------------
38 //-----------------------------------------------------------------------------
41 * List of methods that can be inititated from the client
44 TEST_DISCOVER_REQ = 1,
46 TEST_GET_REQ_NON_WITH_FILTERS,
51 TEST_GET_UNAVAILABLE_RES_REQ_NON,
58 TEST_OBS_PRESENCE_WITH_FILTER,
59 TEST_OBS_PRESENCE_WITH_FILTERS,
60 TEST_OBS_MULTICAST_PRESENCE,
62 TEST_OBS_REQ_NON_CANCEL_IMM,
63 TEST_GET_REQ_NON_WITH_VENDOR_HEADER_OPTIONS,
64 TEST_DISCOVER_PLATFORM_REQ,
65 TEST_DISCOVER_DEV_REQ,
73 //----------------------------------------------------------------------------
75 //----------------------------------------------------------------------------
76 std::string getConnectivityType (OCConnectivityType connType);
78 /* call getResult in common.cpp to get the result in string format. */
79 const char *getResult(OCStackResult result);
81 /* Get the IP address of the server */
82 std::string getIPAddrTBServer(OCClientResponse * clientResponse);
84 /* Get the port number the server is listening on */
85 std::string getPortTBServer(OCClientResponse * clientResponse);
87 /* Returns the query string for GET and PUT operations */
88 std::string getQueryStrForGetPut(OCClientResponse * clientResponse);
90 /* Following are initialization functions for GET, Observe, PUT
91 * POST, Delete & Discovery operations
93 int InitGetRequestToUnavailableResource(OCQualityOfService qos);
94 int InitObserveRequest(OCQualityOfService qos);
95 int InitPutRequest(OCQualityOfService qos);
96 int InitGetRequest(OCQualityOfService qos, uint8_t withVendorSpecificHeaderOptions, bool getWithQuery);
97 int InitPostRequest(OCQualityOfService qos);
98 int InitDeleteRequest(OCQualityOfService qos);
99 int InitGetRequest(OCQualityOfService qos);
100 int InitDeviceDiscovery(OCQualityOfService qos);
101 int InitPlatformDiscovery(OCQualityOfService qos);
102 int InitDiscovery(OCQualityOfService qos);
104 /* Function to retrieve ip address, port no. of the server
105 * and query for the operations to be performed.
107 void parseClientResponse(OCClientResponse * clientResponse);
109 /* Call delete operation on already deleted resource */
110 void* RequestDeleteDeathResourceTask(void* myqos);
112 /* This method calls OCDoResource() which in turn makes calls
113 * to the lower layers
115 OCStackResult InvokeOCDoResource(std::ostringstream &query,
116 OCMethod method, OCQualityOfService qos,
117 OCClientResponseHandler cb, OCHeaderOption * options, uint8_t numOptions);
119 //-----------------------------------------------------------------------------
120 // Callback functions
121 //-----------------------------------------------------------------------------
123 /* Following are callback functions for the GET, Observe, PUT
124 * POST, Delete, Presence & Discovery operations
126 OCStackApplicationResult putReqCB(void* ctx, OCDoHandle handle, OCClientResponse * clientResponse);
128 OCStackApplicationResult postReqCB(void *ctx, OCDoHandle handle, OCClientResponse *clientResponse);
130 OCStackApplicationResult getReqCB(void* ctx, OCDoHandle handle, OCClientResponse * clientResponse);
132 OCStackApplicationResult obsReqCB(void* ctx, OCDoHandle handle, OCClientResponse * clientResponse);
134 OCStackApplicationResult presenceCB(void* ctx,
135 OCDoHandle handle, OCClientResponse * clientResponse);
137 OCStackApplicationResult deleteReqCB(void *ctx,
138 OCDoHandle handle, OCClientResponse *clientResponse);
140 OCStackApplicationResult discoveryReqCB(void* ctx, OCDoHandle handle,
141 OCClientResponse * clientResponse);