replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / resource / include / OCPlatform.h
index 78742bf..84e7163 100644 (file)
@@ -44,12 +44,27 @@ namespace OC
         * @note Any calls made to this AFTER the first call to OCPlatform::Instance
         * will have no affect
         */
-        void Configure(const PlatformConfig& config);
+        OCStackResult Configure(const PlatformConfig& config);
 
         // typedef for handle to cancel presence info with
         typedef OCDoHandle OCPresenceHandle;
 
         /**
+         * API for stop Base layer including resource and connectivity abstraction.
+         *
+         * @return Returns ::OC_STACK_OK if success.
+         */
+        OCStackResult stop();
+
+        /**
+         * API for start Base layer including resource and connectivity abstraction.
+         * OCInit will be invoked.
+         *
+         * @return Returns ::OC_STACK_OK if success.
+         */
+        OCStackResult start();
+
+        /**
          * API for notifying base that resource's attributes have changed.
          *
          * @param resourceHandle resource handle of the resource
@@ -173,6 +188,18 @@ namespace OC
                     OCConnectivityType connectivityType, FindCallback resourceHandler,
                     FindErrorCallback errorHandler, QualityOfService QoS);
 
+        OCStackResult findResourceList(const std::string& host, const std::string& resourceURI,
+                    OCConnectivityType connectivityType, FindResListCallback resourceHandler,
+                    QualityOfService QoS = QualityOfService::LowQos);
+
+        OCStackResult findResourceList(const std::string& host, const std::string& resourceURI,
+                    OCConnectivityType connectivityType, FindResListCallback resourceHandler,
+                    FindErrorCallback errorHandler, QualityOfService QoS = QualityOfService::LowQos);
+
+        OCStackResult setPropertyValue(OCPayloadType type, const std::string& tag, const std::string& value);
+        OCStackResult setPropertyValue(OCPayloadType type, const std::string& tag, const std::vector<std::string>& value);
+        OCStackResult getPropertyValue(OCPayloadType type, const std::string& tag, std::string& value);
+        OCStackResult getPropertyValue(OCPayloadType type, const std::string& tag, std::vector<std::string>& value);
         /**
          * API for Device Discovery
          *
@@ -266,6 +293,13 @@ namespace OC
         * first parameter can take fully qualified URI and core will take that as is for further
         * operations
         * @note OCStackResult is defined in ocstack.h.
+        * @note entity handler callback :
+        * When you set specific return value like OC_EH_CHANGED, OC_EH_CONTENT,
+        * OC_EH_SLOW and etc in entity handler callback,
+        * ocstack will be not send response automatically to client
+        * except for error return value like OC_EH_ERROR
+        * If you want to send response to client with specific result,
+        * OCDoResponse API should be called with the result value.
         */
         OCStackResult registerResource(OCResourceHandle& resourceHandle,
                         std::string& resourceURI,
@@ -310,6 +344,13 @@ namespace OC
         *                      any undefined resources or default actions.
         *                      if NULL is passed it removes the device default entity handler.
         * @return Returns ::OC_STACK_OK  if no errors and ::OC_STACK_ERROR in case of stack process error
+        * @note entity handler callback :
+        * When you set specific return value like OC_EH_CHANGED, OC_EH_CONTENT,
+        * OC_EH_SLOW and etc in entity handler callback,
+        * ocstack will be not send response automatically to client
+        * except for error return value like OC_EH_ERROR
+        * If you want to send response to client with specific result,
+        * sendResponse API should be called with the result value.
         */
         OCStackResult setDefaultDeviceEntityHandler(EntityHandler entityHandler);
 
@@ -543,7 +584,9 @@ namespace OC
          *               It will be set upon successful return of this method.
          * @param host The IP address/addressable name of the server to subscribe to.
          *               This should be in the format coap://address:port
-         * @param queryParams map which can have the query parameter name and list of value.
+         * @param di Vector which can have the devices id.
+         * @param connectivityType ::OCConnectivityType type of connectivity indicating the
+         *                           interface. Example: CT_DEFAULT, CT_ADAPTER_IP, CT_ADAPTER_TCP.
          * @param observeHandler handles callback
          *        The callback function will be invoked with a map of attribute name and values.
          *        The callback function will also have the result from this observe operation
@@ -553,7 +596,7 @@ namespace OC
          */
         OCStackResult subscribeDevicePresence(OCPresenceHandle& presenceHandle,
                                               const std::string& host,
-                                              const QueryParamsList& queryParams,
+                                              const std::vector<std::string>& di,
                                               OCConnectivityType connectivityType,
                                               ObserveCallback callback);
 #endif
@@ -578,7 +621,7 @@ namespace OC
          *
          * @param connectivityType ::OCConnectivityType type of connectivity indicating the
          *                           interface. Example: CT_DEFAULT, CT_ADAPTER_IP, CT_ADAPTER_TCP.
-         *                           if you want to use specific a Flag like IPv4
+         *                           if you want to use a specific Flag like IPv4,
          *                           you should apply OR operation for the flag in here.
          *                           Example: static_cast<OCConnectivityType>(CT_ADAPTER_TCP
          *                                                                    | OC_IP_USE_V4)
@@ -641,177 +684,65 @@ namespace OC
                                      DirectPairingCallback resultCallback);
 #ifdef WITH_CLOUD
         /**
-         * API for Account Registration to Account Server
-         * @note Not supported on client mode for now since device id is not generated yet on
-         *       client mode. So it should be server or both mode for API to work.
+         * Create an account manager object that can be used for doing request to account server.
+         * You can only create this object if OCPlatform was initialized to be a Client or
+         * Client/Server. Otherwise, this will return an empty shared ptr.
          *
-         * @param host Host IP Address of a account server.
-         * @param authProvider Provider name used for authentication.
-         * @param authCode The authorization code obtained by using an authorization server
-         *                 as an intermediary between the client and resource owner.
-         * @param connectivityType ::OCConnectivityType type of connectivity indicating the
-         *                           interface. Example: CT_DEFAULT, CT_ADAPTER_IP, CT_ADAPTER_TCP.
-         * @param cloudConnectHandler Callback function that will get the result of the operation.
-         *
-         * @return Returns ::OC_STACK_OK if success
-         */
-        OCStackResult signUp(const std::string& host,
-                             const std::string& authProvider,
-                             const std::string& authCode,
-                             OCConnectivityType connectivityType,
-                             PostCallback cloudConnectHandler);
-
-        /**
-         * API for Sign-In to Account Server
-         * @note Not supported on client mode for now since device id is not generated yet on
-         *       client mode. So it should be server or both mode for API to work.
-         *
-         * @param host Host IP Address of a account server.
-         * @param accessToken Identifier of the resource obtained by account registration.
-         * @param connectivityType ::OCConnectivityType type of connectivity indicating the
-         *                           interface. Example: CT_DEFAULT, CT_ADAPTER_IP, CT_ADAPTER_TCP.
-         * @param cloudConnectHandler Callback function that will get the result of the operation.
-         *
-         * @return Returns ::OC_STACK_OK if success
-         */
-        OCStackResult signIn(const std::string& host,
-                             const std::string& accessToken,
-                             OCConnectivityType connectivityType,
-                             PostCallback cloudConnectHandler);
-
-        /**
-         * API for Sign-Out to Account Server
-         * @note Not supported on client mode for now since device id is not generated yet on
-         *       client mode. So it should be server or both mode for API to work.
-         *
-         * @param host Host IP Address of a account server.
-         * @param accessToken Identifier of the resource obtained by account registration.
-         * @param connectivityType ::OCConnectivityType type of connectivity indicating the
-         *                           interface. Example: CT_DEFAULT, CT_ADAPTER_IP, CT_ADAPTER_TCP.
-         * @param cloudConnectHandler Callback function that will get the result of the operation.
-         *
-         * @return Returns ::OC_STACK_OK if success
-         */
-        OCStackResult signOut(const std::string& host,
-                              const std::string& accessToken,
-                              OCConnectivityType connectivityType,
-                              PostCallback cloudConnectHandler);
-
-        /**
-         * API for Refresh Access token to Account Server
-         * @note Not supported on client mode for now since device id is not generated yet on
-         *       client mode. So it should be server or both mode for API to work.
+         * @note For now, OCPlatform SHOULD be initialized to be a Client/Server(Both) for the
+         *       methods of this object to work since device id is not generated on Client mode.
          *
          * @param host Host IP Address of a account server.
-         * @param refreshToken Refresh token used for access token refresh.
          * @param connectivityType ::OCConnectivityType type of connectivity indicating the
          *                           interface. Example: CT_DEFAULT, CT_ADAPTER_IP, CT_ADAPTER_TCP.
-         * @param cloudConnectHandler Callback function that will get the result of the operation.
+         *                           if you want to use a specific Flag like IPv4,
+         *                           you should apply OR operation for the flag in here.
+         *                           Example: static_cast<OCConnectivityType>(CT_ADAPTER_TCP
+         *                                                                    | OC_IP_USE_V4)
          *
-         * @return Returns ::OC_STACK_OK if success
+         * @return OCAccountManager::Ptr a shared pointer to the new account manager object
          */
-        OCStackResult refreshAccessToken(const std::string& host,
-                                         const std::string& refreshToken,
-                                         OCConnectivityType connectivityType,
-                                         PostCallback cloudConnectHandler);
+        OCAccountManager::Ptr constructAccountManagerObject(const std::string& host,
+                                                            OCConnectivityType connectivityType);
 #endif // WITH_CLOUD
-#ifdef RD_CLIENT
-        /**
-         * API for Virtual Resource("/oic/d" and "/oic/p") Publish to Resource Directory.
-         * @note This API applies to resource server side only.
-         *
-         * @param host Host IP Address of a service to direct resource publish query.
-         * @param connectivityType ::OCConnectivityType type of connectivity.
-         * @param callback Handles callbacks, success states and failure states.
-         *
-         * @return Returns ::OC_STACK_OK if success.
-         */
-        OCStackResult publishResourceToRD(const std::string& host,
-                                          OCConnectivityType connectivityType,
-                                          PublishResourceCallback callback);
 
+#ifdef TCP_ADAPTER
         /**
-         * API for Resource Publish to Resource Directory.
-         * @note This API applies to resource server side only.
-         *
-         * @param host Host IP Address of a service to direct resource publish query.
-         * @param connectivityType ::OCConnectivityType type of connectivity.
-         * @param resourceHandle resource handle of the resource.
-         * @param callback Handles callbacks, success states and failure states.
+         * gets OCRepresentation of KeepAlive resource from given host.
          *
+         * @param host         Host IP Address of KeepAlive resource
+         * @param resultCallback Function to callback with result code and OCRepresentation.
          * @return Returns ::OC_STACK_OK if success.
          */
-        OCStackResult publishResourceToRD(const std::string& host,
-                                          OCConnectivityType connectivityType,
-                                          ResourceHandles& resourceHandles,
-                                          PublishResourceCallback callback);
+        OCStackResult findKeepAliveResource(std::string host, KeepAliveCallback resultCallback);
 
         /**
-         * @overload
-         *
-         * @param host Host IP Address of a service to direct resource publish query.
-         * @param connectivityType ::OCConnectivityType type of connectivity.
-         * @param resourceHandle resource handle of the resource.
-         * @param callback function to callback with published resources.
-         * @param QoS the quality of communication
-         * @see publishResourceToRD(const std::string&, OCConnectivityType, OCResourceHandle,
-         * uint8_t, PublishResourceCallback)
-         */
-        OCStackResult publishResourceToRD(const std::string& host,
-                                          OCConnectivityType connectivityType,
-                                          ResourceHandles& resourceHandles,
-                                          PublishResourceCallback callback, QualityOfService QoS);
-
+        * send KeepAlive request to given host.
+        *
+        * @param rep            include interval time of expected pong response
+        * @param resultCallback handles callback
+        *
+        * @return Returns  ::OC_STACK_OK on success, some other value upon failure.
+        *
+        */
+        OCStackResult sendKeepAliveRequest(std::string host, const OCRepresentation& rep,
+                                                             KeepAliveCallback resultCallback);
+#endif
         /**
-         * API for published resource delete from Resource Directory.
-         * @note This API applies to resource server side only.
-         *
-         * @param host Host IP Address of a service to direct resource delete query.
-         * @param connectivityType ::OCConnectivityType type of connectivity.
-         * @param callback Handles callbacks, success states and failure states.
+         * gets the deviceId of the client
          *
+         * @param deviceId pointer.
          * @return Returns ::OC_STACK_OK if success.
          */
-        OCStackResult deleteResourceFromRD(const std::string& host,
-                                           OCConnectivityType connectivityType,
-                                           DeleteResourceCallback callback);
-
-        /**
-         * @overload
-         *
-         * @param host Host IP Address of a service to direct resource delete query.
-         * @param connectivityType ::OCConnectivityType type of connectivity.
-         * @param resourceHandle resource handle of the resource.
-         * @param callback function to callback with published resources.
-         * @param QoS the quality of communication
-         * @see publishResourceToRD(const std::string&, OCConnectivityType, OCResourceHandle,
-         * uint8_t, PublishResourceCallback)
-         */
-        OCStackResult deleteResourceFromRD(const std::string& host,
-                                           OCConnectivityType connectivityType,
-                                           ResourceHandles& resourceHandles,
-                                           DeleteResourceCallback callback);
+        OCStackResult getDeviceId(OCUUIdentity *deviceId);
 
         /**
-         * @overload
+         * sets the deviceId of the client
          *
-         * @param host Host IP Address of a service to direct resource delete query.
-         * @param connectivityType ::OCConnectivityType type of connectivity.
-         * @param resourceHandle resource handle of the resource.
-         * @param callback function to callback with published resources.
-         * @param QoS the quality of communication
-         * @see publishResourceToRD(const std::string&, OCConnectivityType, OCResourceHandle,
-         * uint8_t, PublishResourceCallback)
+         * @param deviceId pointer.
+         * @return Returns ::OC_STACK_OK if success.
          */
-        OCStackResult deleteResourceFromRD(const std::string& host,
-                                           OCConnectivityType connectivityType,
-                                           ResourceHandles& resourceHandles,
-                                           DeleteResourceCallback callback, QualityOfService QoS);
-#endif
+        OCStackResult setDeviceId(const OCUUIdentity *deviceId);
     }
 }
 
 #endif // OC_PLATFORM_H_
-
-
-