X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=android%2Fandroid_api%2Fbase%2Fsrc%2Fmain%2Fjava%2Forg%2Fiotivity%2Fbase%2FOcPlatform.java;h=954eab26dd8e257f8e5e529c1f760a62d2f6ffe9;hb=7f00f942c39b7bc27c7eeecf213a239c3fe4173c;hp=45a3e98627df88c4c611f8f5407b3dec3e8d1c61;hpb=e6f20ff11ffd7a5be76ed951e0bcb69ef73a13f1;p=platform%2Fupstream%2Fiotivity.git diff --git a/android/android_api/base/src/main/java/org/iotivity/base/OcPlatform.java b/android/android_api/base/src/main/java/org/iotivity/base/OcPlatform.java index 45a3e98..954eab2 100644 --- a/android/android_api/base/src/main/java/org/iotivity/base/OcPlatform.java +++ b/android/android_api/base/src/main/java/org/iotivity/base/OcPlatform.java @@ -77,6 +77,8 @@ public final class OcPlatform { private static volatile boolean sIsPlatformInitialized = false; private static QualityOfService sPlatformQualityOfService = QualityOfService.NA; + private static volatile boolean sIsStopPlatform = false; + private OcPlatform() { } @@ -89,6 +91,12 @@ public final class OcPlatform { * @param platformConfig platform configuration */ public synchronized static void Configure(PlatformConfig platformConfig) { + if (sIsStopPlatform) + { + OcPlatform.start(); + sIsStopPlatform = false; + } + if (!sIsPlatformInitialized) { CaInterface.initialize(platformConfig.getActivity(), platformConfig.getContext()); @@ -100,7 +108,12 @@ public final class OcPlatform { platformConfig.getIpAddress(), platformConfig.getPort(), platformConfig.getQualityOfService().getValue(), - platformConfig.getSvrDbPath() + platformConfig.getSvrDbPath(), + platformConfig.getDBDefaultPath(), + platformConfig.getDBRescuePath(), + platformConfig.getKeySize(), + platformConfig.getKey(), + platformConfig.getAvailableTransportType() ); sIsPlatformInitialized = true; @@ -112,7 +125,33 @@ public final class OcPlatform { String ipAddress, int port, int qualityOfService, - String dbPath); + String dbPath, + String dbPathDefault, + String dbRescuePath, + int keySize, + byte[] key, + int transport); + + /** + * API for stop all process of the OcPlatform. + * All of threads and memory will be terminated by this API. + * Iotivity Core can be started again through Configure(PlatformConfig platformConfig) API. + * Both Configure and Shutdown API is filtering for duplicated calling even while processing. + *

+ * Note: This API is for both server and client side. + *

+ */ + public synchronized static void Shutdown() { + if (!sIsStopPlatform) + { + OcPlatform.stop(); + sIsStopPlatform = true; + sIsPlatformInitialized = false; + } + } + + private static native void stop(); + private static native void start(); /** * API for notifying base that resource's attributes have changed. @@ -172,6 +211,10 @@ public final class OcPlatform { OcResourceResponse ocResourceResponse) throws OcException { OcPlatform.initCheck(); + if (ocObservationIdList == null) { + throw new OcException(ErrorCode.INVALID_PARAM, "ocObservationIdList cannot be null"); + } + byte[] idArr = new byte[ocObservationIdList.size()]; Iterator it = ocObservationIdList.iterator(); int i = 0; @@ -211,6 +254,10 @@ public final class OcPlatform { QualityOfService qualityOfService) throws OcException { OcPlatform.initCheck(); + if (ocObservationIdList == null) { + throw new OcException(ErrorCode.INVALID_PARAM, "ocObservationIdList cannot be null"); + } + byte[] idArr = new byte[ocObservationIdList.size()]; Iterator it = ocObservationIdList.iterator(); int i = 0; @@ -554,6 +601,49 @@ public final class OcPlatform { ) throws OcException; /** + * Set param Info + * + * @param ocDeviceInfo object containing all the device specific information + * @throws OcException if failure + */ + public static void setPropertyValue( + int path, String propName, String propValue) throws OcException { + OcPlatform.initCheck(); + OcPlatform.setPropertyValue1(path, propName, propValue); + } + + public static void setPropertyValue( + int path, String propName, List propValue) throws OcException { + OcPlatform.initCheck(); + OcPlatform.setPropertyValue0(path, propName, propValue.toArray(new String[propValue.size()])); + } + + public static void getPropertyValue( + int path, String propName, String propValue) throws OcException { + OcPlatform.initCheck(); + OcPlatform.getPropertyValue0(path, propName, propValue); + } + + private static native void setPropertyValue1( + int path, + String propName, + String propValue + ) throws OcException; + + + private static native void setPropertyValue0( + int path, + String propName, + String[] propValue + ) throws OcException; + + private static native void getPropertyValue0( + int path, + String propName, + String propValue + ) throws OcException; + + /** * Register Platform Info * * @param ocPlatformInfo object containing all the platform specific information @@ -631,6 +721,11 @@ public final class OcPlatform { OcResourceHandle ocResourceCollectionHandle, List ocResourceHandleList) throws OcException { OcPlatform.initCheck(); + + if (ocResourceHandleList == null) { + throw new OcException(ErrorCode.INVALID_PARAM, "ocResourceHandleList cannot be null"); + } + OcPlatform.bindResources0( ocResourceCollectionHandle, ocResourceHandleList.toArray( @@ -672,6 +767,11 @@ public final class OcPlatform { OcResourceHandle ocResourceCollectionHandle, List ocResourceHandleList) throws OcException { OcPlatform.initCheck(); + + if (ocResourceHandleList == null) { + throw new OcException(ErrorCode.INVALID_PARAM, "ocResourceHandleList cannot be null"); + } + OcPlatform.unbindResources0( ocResourceCollectionHandle, ocResourceHandleList.toArray( @@ -834,6 +934,43 @@ public final class OcPlatform { OcPresenceHandle ocPresenceHandle) throws OcException; /** + * Subscribes to a server's device presence change events. + * + * @param host The IP address/addressable name of the server to subscribe to. + * @param di Vector which can have the devices id. + * @param connectivityTypeSet Set of connectivity types, e.g. IP. + * @param onObserveListener The handler method will be invoked with a map + * of attribute name and values. + * @return a handle object that can be used to identify this subscription request. + * It can be used to unsubscribe from these events in the future. + * @throws OcException if failure. + */ + public static OcPresenceHandle subscribeDevicePresence( + String host, + List di, + EnumSet connectivityTypeSet, + OcResource.OnObserveListener onObserveListener) throws OcException { + OcPlatform.initCheck(); + int connTypeInt = 0; + + for (OcConnectivityType connType : OcConnectivityType.values()) { + if (connectivityTypeSet.contains(connType)) + connTypeInt |= connType.getValue(); + } + return OcPlatform.subscribeDevicePresence0( + host, + di.toArray(new String[di.size()]), + connTypeInt, + onObserveListener); + } + + private static native OcPresenceHandle subscribeDevicePresence0( + String host, + String[] di, + int connectivityType, + OcResource.OnObserveListener onObserveListener) throws OcException; + + /** * Creates a resource proxy object so that get/put/observe functionality can be used without * discovering the object in advance. Note that the consumer of this method needs to provide * all of the details required to correctly contact and observe the object. If the consumer @@ -950,160 +1087,6 @@ public final class OcPlatform { throws OcException; /** - * API to publish resource to remote resource-directory. - * - * @param host Host Address of a service to publish resource. - * @param connectivityTypeSet Set of types of connectivity. Example: IP - * @param onPublishResourceListener Handles events, success states and failure states. - * @throws OcException if failure - */ - public static void publishResourceToRD( - String host, - EnumSet connectivityTypeSet, - OnPublishResourceListener onPublishResourceListener) throws OcException { - OcPlatform.initCheck(); - - int connTypeInt = 0; - - for (OcConnectivityType connType : OcConnectivityType.values()) { - if (connectivityTypeSet.contains(connType)) { - connTypeInt |= connType.getValue(); - } - } - - OcPlatform.publishResourceToRD0( - host, - connTypeInt, - onPublishResourceListener, - sPlatformQualityOfService.getValue() - ); - } - - /** - * API to publish resource to remote resource-directory. - * - * @param host Host Address of a service to publish resource. - * @param connectivityTypeSet Set of types of connectivity. Example: IP - * @param onPublishResourceListener Handles events, success states and failure states. - * @param qualityOfService the quality of communication. - * @throws OcException if failure - */ - public static void publishResourceToRD( - String host, - EnumSet connectivityTypeSet, - OnPublishResourceListener onPublishResourceListener, - QualityOfService qualityOfService) throws OcException { - OcPlatform.initCheck(); - - int connTypeInt = 0; - - for (OcConnectivityType connType : OcConnectivityType.values()) { - if (connectivityTypeSet.contains(connType)) { - connTypeInt |= connType.getValue(); - } - } - - OcPlatform.publishResourceToRD0( - host, - connTypeInt, - onPublishResourceListener, - qualityOfService.getValue() - ); - } - - private static native void publishResourceToRD0( - String host, - int connectivityType, - OnPublishResourceListener onPublishResourceListener, - int qualityOfService) throws OcException; - - /** - * API to publish resource to remote resource-directory. - * - * @param host Host Address of a service to publish resource. - * @param connectivityTypeSet Set of types of connectivity. Example: IP - * @param ocResourceHandleList reference to list of resource handles to be published. - * @param onPublishResourceListener Handles events, success states and failure states. - * @throws OcException if failure - */ - public static void publishResourceToRD( - String host, - EnumSet connectivityTypeSet, - List ocResourceHandleList, - OnPublishResourceListener onPublishResourceListener) throws OcException { - OcPlatform.initCheck(); - - int connTypeInt = 0; - - for (OcConnectivityType connType : OcConnectivityType.values()) { - if (connectivityTypeSet.contains(connType)) { - connTypeInt |= connType.getValue(); - } - } - - OcPlatform.publishResourceToRD1( - host, - connTypeInt, - ocResourceHandleList.toArray( - new OcResourceHandle[ocResourceHandleList.size()]), - onPublishResourceListener, - sPlatformQualityOfService.getValue() - ); - } - - /** - * API to publish resource to remote resource-directory. - * - * @param host Host IP Address of a service to publish resource. - * @param connectivityTypeSet Set of types of connectivity. Example: IP - * @param ocResourceHandleList reference to list of resource handles to be published. - * @param onPublishResourceListener Handles events, success states and failure states. - * @param qualityOfService the quality of communication - * @throws OcException if failure - */ - public static void publishResourceToRD( - String host, - EnumSet connectivityTypeSet, - List ocResourceHandleList, - OnPublishResourceListener onPublishResourceListener, - QualityOfService qualityOfService) throws OcException { - OcPlatform.initCheck(); - - int connTypeInt = 0; - - for (OcConnectivityType connType : OcConnectivityType.values()) { - if (connectivityTypeSet.contains(connType)) { - connTypeInt |= connType.getValue(); - } - } - - OcPlatform.publishResourceToRD1( - host, - connTypeInt, - ocResourceHandleList.toArray( - new OcResourceHandle[ocResourceHandleList.size()]), - onPublishResourceListener, - qualityOfService.getValue() - ); - } - - private static native void publishResourceToRD1( - String host, - int connectivityType, - OcResourceHandle[] ocResourceHandleArray, - OnPublishResourceListener onPublishResourceListener, - int qualityOfService) throws OcException; - - /** - * An OnPublishResourceListener can be registered via the OcPlatform.publishResourceToRD call. - * Event listeners are notified asynchronously - */ - public interface OnPublishResourceListener { - public void onPublishResourceCompleted(OcRepresentation ocRepresentation); - public void onPublishResourceFailed(Throwable ex); - } - - /** * An FindDirectPairingListener can be registered via the OcPlatform.findDirectPairingDevices call. * Event listeners are notified asynchronously */ @@ -1165,11 +1148,29 @@ public final class OcPlatform { /** * An EntityHandler can be registered via the OcPlatform.registerResource call. * Event listeners are notified asynchronously + * + * @note entityhandler callback : + * When you set specific return value like EntityHandlerResult.OK, SLOW + * and etc in entity handler callback, + * ocstack will be not send response automatically to client + * except for error return value like EntityHandlerResult.ERROR + * If you want to send response to client with specific result, + * sendResponse API should be called with the result value. */ public interface EntityHandler { public EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest); } + /** + * Listner to get result of findKeepAliveResource and sendKeepAliveRequest. + * An PingListener can be registered via the OcPlatform.KeepAliveListener and + * OcPlatform.sendKeepAliveRequest call. + * Event listeners are notified asynchronously + */ + public interface KeepAliveListener { + public void onKeepAliveListener(OcRepresentation ocRepresentation, int result); + } + private static void initCheck() { if (!sIsPlatformInitialized) { throw new IllegalStateException("OcPlatform must be configured by making a call to " + @@ -1186,4 +1187,87 @@ public final class OcPlatform { OcPlatform.initCheck(); return sPlatformQualityOfService; } + + /** + * 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. + * + * @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 connectivityTypeSet Set of types of connectivity. Example: CT_ADAPTER_IP + * @return new AccountManager object + * @throws OcException if failure + */ + public static OcAccountManager constructAccountManagerObject( + String host, + EnumSet connectivityTypeSet) throws OcException { + OcPlatform.initCheck(); + int connTypeInt = 0; + + for (OcConnectivityType connType : OcConnectivityType.values()) { + if (connectivityTypeSet.contains(connType)) + { + connTypeInt |= connType.getValue(); + } + } + return OcPlatform.constructAccountManagerObject0( + host, + connTypeInt + ); + } + + private static native OcAccountManager constructAccountManagerObject0( + String host, + int connectivityType) throws OcException; + /** + * Method to get device Id in byte array. + * @return My DeviceId. + */ + public static native byte[] getDeviceId(); + + /** + * Method to set DeviceId. + */ + public static native void setDeviceId(byte[] deviceId) throws OcException; + + /** + * gets OCRepresentation of KeepAlive resource from given host. + * + * @param host Host IP Address of pingResource + * @param onKeepAliveFoundListener Function to callback with result code and OCRepresentation. + * @throws OcException if failure + */ + public static void findKeepAliveResource(String host, + KeepAliveListener onKeepAliveFoundListener) + throws OcException { + OcPlatform.initCheck(); + OcPlatform.findKeepAliveResourceImpl(host, onKeepAliveFoundListener); + } + + private static native void findKeepAliveResourceImpl(String host, + KeepAliveListener onKeepAliveFoundListener) + throws OcException; + + /** + * send KeepAlive request to given host. + * + * @param interval interval time of expected pong response + * @param keepAliveResponseListener handles callback + * @throws OcException if failure + * + */ + public static void sendKeepAliveRequest(String host, OcRepresentation ocRepresentation, + KeepAliveListener keepAliveResponseListener) + throws OcException { + OcPlatform.initCheck(); + OcPlatform.sendKeepAliveRequestImpl(host, ocRepresentation, keepAliveResponseListener); + } + + private static native void sendKeepAliveRequestImpl(String host, + OcRepresentation ocRepresentation, + KeepAliveListener keepAliveResponseListener) + throws OcException; }