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=dc0062fd2a824d64a43315261f71eb1ac06c954d;hpb=3c369f1215c428337da5568fa14d0efaeb62fba7;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 dc0062f..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 @@ -1,37 +1,38 @@ /* - * //****************************************************************** - * // - * // Copyright 2015 Intel Corporation. - * // - * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - * // - * // Licensed under the Apache License, Version 2.0 (the "License"); - * // you may not use this file except in compliance with the License. - * // You may obtain a copy of the License at - * // - * // http://www.apache.org/licenses/LICENSE-2.0 - * // - * // Unless required by applicable law or agreed to in writing, software - * // distributed under the License is distributed on an "AS IS" BASIS, - * // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * // See the License for the specific language governing permissions and - * // limitations under the License. - * // - * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + ******************************************************************* + * + * Copyright 2015 Intel Corporation. + * + *-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + *-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= */ package org.iotivity.base; import org.iotivity.ca.CaInterface; +import org.iotivity.base.BuildConfig; import java.util.EnumSet; import java.util.Iterator; import java.util.List; /** - * Contains the main entrance/functionality of the product. To set a custom configuration, the - * implementer must make a call to OcPlatform.Configure before the first usage of a function in this - * class. + * This class contains the main entrance/functionality of the product. To set a custom + * configuration, the implementer must make a call to OcPlatform.Configure before the first usage + * of a method in this class. */ public final class OcPlatform { @@ -40,6 +41,10 @@ public final class OcPlatform { System.loadLibrary("octbstack"); System.loadLibrary("connectivity_abstraction"); System.loadLibrary("oc"); + if (0 != BuildConfig.SECURED) + { + System.loadLibrary("ocprovision"); + } System.loadLibrary("ocstack-jni"); } @@ -70,19 +75,32 @@ public final class OcPlatform { public static final String PRESENCE_URI = "/oic/ad"; private static volatile boolean sIsPlatformInitialized = false; + private static QualityOfService sPlatformQualityOfService = QualityOfService.NA; + + private static volatile boolean sIsStopPlatform = false; private OcPlatform() { } /** * API for setting the configuration of the OcPlatform. + *

* Note: Any calls made to this AFTER the first call to OcPlatform.Configure will have no affect + *

* * @param platformConfig platform configuration */ public synchronized static void Configure(PlatformConfig platformConfig) { + if (sIsStopPlatform) + { + OcPlatform.start(); + sIsStopPlatform = false; + } + if (!sIsPlatformInitialized) { - CaInterface.initialize(platformConfig.getContext()); + CaInterface.initialize(platformConfig.getActivity(), platformConfig.getContext()); + + sPlatformQualityOfService = platformConfig.getQualityOfService(); OcPlatform.configure( platformConfig.getServiceType().getValue(), @@ -90,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; @@ -102,13 +125,42 @@ 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. + *

+ * Note: This API is for server side only. + *

* * @param ocResourceHandle resource handle of the resource - * @throws OcException + * @throws OcException if failure */ public static void notifyAllObservers( OcResourceHandle ocResourceHandle) throws OcException { @@ -121,10 +173,13 @@ public final class OcPlatform { /** * API for notifying base that resource's attributes have changed. + *

+ * Note: This API is for server side only. + *

* * @param ocResourceHandle resource handle of the resource * @param qualityOfService the quality of communication - * @throws OcException + * @throws OcException if failure */ public static void notifyAllObservers( OcResourceHandle ocResourceHandle, @@ -139,13 +194,16 @@ public final class OcPlatform { /** * API for notifying only specific clients that resource's attributes have changed. + *

+ * Note: This API is for server side only. + *

* * @param ocResourceHandle resource handle of the resource * @param ocObservationIdList These set of ids are ones which which will be notified upon * resource change. * @param ocResourceResponse OcResourceResponse object used by app to fill the response for * this resource change - * @throws OcException + * @throws OcException if failure */ public static void notifyListOfObservers( OcResourceHandle ocResourceHandle, @@ -153,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; @@ -173,6 +235,9 @@ public final class OcPlatform { /** * API for notifying only specific clients that resource's attributes have changed. + *

+ * Note: This API is for server side only. + *

* * @param ocResourceHandle resource handle of the resource * @param ocObservationIdList These set of ids are ones which which will be notified upon @@ -180,7 +245,7 @@ public final class OcPlatform { * @param ocResourceResponse OcResourceResponse object used by app to fill the response for * this resource change * @param qualityOfService the quality of communication - * @throws OcException + * @throws OcException if failure */ public static void notifyListOfObservers( OcResourceHandle ocResourceHandle, @@ -189,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; @@ -211,16 +280,18 @@ public final class OcPlatform { int qualityOfService) throws OcException; /** - * API for Service and Resource Discovery. NOTE: This API applies to client side only + * API for Service and Resource Discovery + *

+ * Note: This API is for client side only. + *

* - * @param host Host IP Address of a service to direct resource discovery query. + * @param host Host Address of a service to direct resource discovery query. * If empty, performs multicast resource discovery query * @param resourceUri name of the resource. If null or empty, performs search for all * resource names - * @param connectivityType a type of connectivity indicating the interface. Example: IPV4, - * IPV6, ALL + * @param connectivityTypeSet Set of types of connectivity. Example: IP * @param onResourceFoundListener Handles events, success states and failure states. - * @throws OcException + * @throws OcException if failure */ public static void findResource( String host, @@ -251,17 +322,19 @@ public final class OcPlatform { OnResourceFoundListener onResourceFoundListener) throws OcException; /** - * API for Service and Resource Discovery. NOTE: This API applies to client side only + * API for Service and Resource Discovery. + *

+ * Note: This API is for client side only. + *

* * @param host Host IP Address of a service to direct resource discovery query. * If empty, performs multicast resource discovery query * @param resourceUri name of the resource. If null or empty, performs search for all * resource names - * @param connectivityType a type of connectivity indicating the interface. Example: IPV4, - * IPV6, ALL + * @param connectivityTypeSet Set of types of connectivity. Example: IP * @param onResourceFoundListener Handles events, success states and failure states. * @param qualityOfService the quality of communication - * @throws OcException + * @throws OcException if failure */ public static void findResource( String host, @@ -298,10 +371,9 @@ public final class OcPlatform { * * @param host Host IP Address. If null or empty, Multicast is performed. * @param deviceUri Uri containing address to the virtual device - * @param connectivityType a type of connectivity indicating the interface. Example: IPV4, - * IPV6, ALL + * @param connectivityTypeSet Set of types of connectivity. Example: IP * @param onDeviceFoundListener Handles events, success states and failure states. - * @throws OcException + * @throws OcException if failure */ public static void getDeviceInfo( String host, @@ -334,11 +406,10 @@ public final class OcPlatform { * * @param host Host IP Address. If null or empty, Multicast is performed. * @param deviceUri Uri containing address to the virtual device - * @param connectivityType a type of connectivity indicating the interface. Example: IPV4, - * IPV6, ALL + * @param connectivityTypeSet Set of types of connectivity. Example: IP * @param onDeviceFoundListener Handles events, success states and failure states. * @param qualityOfService the quality of communication - * @throws OcException + * @throws OcException if failure */ public static void getDeviceInfo( String host, @@ -374,10 +445,9 @@ public final class OcPlatform { * * @param host Host IP Address. If null or empty, Multicast is performed. * @param platformUri Uri containing address to the platform - * @param connectivityType a type of connectivity indicating the interface. Example: IPV4, - * IPV6, ALL + * @param connectivityTypeSet Set of types of connectivity. Example: IP * @param onPlatformFoundListener Handles events, success states and failure states. - * @throws OcException + * @throws OcException if failure */ public static void getPlatformInfo( @@ -411,11 +481,10 @@ public final class OcPlatform { * * @param host Host IP Address. If null or empty, Multicast is performed. * @param platformUri Uri containing address to the platform - * @param connectivityType a type of connectivity indicating the interface. Example: IPV4, - * IPV6, ALL + * @param connectivityTypeSet Set of types of connectivity. Example: IP * @param onPlatformFoundListener Handles events, success states and failure states. * @param qualityOfService the quality of communication - * @throws OcException + * @throws OcException if failure */ public static void getPlatformInfo( @@ -448,11 +517,14 @@ public final class OcPlatform { int qualityOfService) throws OcException; /** - * This API registers a resource with the server NOTE: This API applies to server side only. + * This API registers a resource with the server + *

+ * Note: This API applies to server & client side. + *

* * @param ocResource The instance of OcResource with all data filled * @return resource handle - * @throws OcException + * @throws OcException if failure */ public static OcResourceHandle registerResource( OcResource ocResource) throws OcException { @@ -465,6 +537,9 @@ public final class OcPlatform { /** * This API registers a resource with the server NOTE: This API applies to server side only. + *

+ * Note: This API applies to server side only. + *

* * @param resourceUri The URI of the resource. Example: "a/light" * @param resourceTypeName The resource type. Example: "light" @@ -472,7 +547,7 @@ public final class OcPlatform { * @param entityHandler entity handler. * @param resourcePropertySet indicates the property of the resource * @return resource handle - * @throws OcException + * @throws OcException if failure */ public static OcResourceHandle registerResource( String resourceUri, @@ -507,25 +582,72 @@ public final class OcPlatform { * Register Device Info * * @param ocDeviceInfo object containing all the device specific information - * @throws OcException + * @throws OcException if failure */ public static void registerDeviceInfo( OcDeviceInfo ocDeviceInfo) throws OcException { OcPlatform.initCheck(); OcPlatform.registerDeviceInfo0( - ocDeviceInfo.getDeviceName() + ocDeviceInfo.getDeviceName(), + ocDeviceInfo.getDeviceTypes().toArray( + new String[ocDeviceInfo.getDeviceTypes().size()] + ) ); } private static native void registerDeviceInfo0( - String deviceName + String deviceName, + String[] deviceTypes + ) 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 - * @throws OcException + * @throws OcException if failure */ public static void registerPlatformInfo( OcPlatformInfo ocPlatformInfo) throws OcException { @@ -557,7 +679,7 @@ public final class OcPlatform { * * @param ocResourceHandle This is the resource handle which we which to unregister from the * server - * @throws OcException + * @throws OcException if failure */ public static void unregisterResource( OcResourceHandle ocResourceHandle) throws OcException { @@ -574,7 +696,7 @@ public final class OcPlatform { * * @param ocResourceCollectionHandle handle to the collection resource * @param ocResourceHandle handle to resource to be added to the collection resource - * @throws OcException + * @throws OcException if failure */ public static void bindResource( OcResourceHandle ocResourceCollectionHandle, @@ -593,12 +715,17 @@ public final class OcPlatform { * @param ocResourceCollectionHandle handle to the collection resource * @param ocResourceHandleList reference to list of resource handles to be added to the * collection resource - * @throws OcException + * @throws OcException if failure */ public static void bindResources( 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( @@ -615,7 +742,7 @@ public final class OcPlatform { * * @param ocResourceCollectionHandle handle to the collection resource * @param ocResourceHandle resource handle to be unbound from the collection resource - * @throws OcException + * @throws OcException if failure */ public static void unbindResource( OcResourceHandle ocResourceCollectionHandle, @@ -634,12 +761,17 @@ public final class OcPlatform { * @param ocResourceCollectionHandle Handle to the collection resource * @param ocResourceHandleList List of resource handles to be unbound from the collection * resource - * @throws OcException + * @throws OcException if failure */ public static void unbindResources( 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( @@ -656,7 +788,7 @@ public final class OcPlatform { * * @param ocResourceHandle handle to the resource * @param resourceTypeName new typename to bind to the resource - * @throws OcException + * @throws OcException if failure */ public static void bindTypeToResource( OcResourceHandle ocResourceHandle, @@ -674,7 +806,7 @@ public final class OcPlatform { * * @param ocResourceHandle handle to the resource * @param resourceInterfaceName new interface to bind to the resource - * @throws OcException + * @throws OcException if failure */ public static void bindInterfaceToResource( OcResourceHandle ocResourceHandle, @@ -691,7 +823,7 @@ public final class OcPlatform { * Start Presence announcements. * * @param ttl time to live in seconds - * @throws OcException + * @throws OcException if failure */ public static void startPresence(int ttl) throws OcException { OcPlatform.initCheck(); @@ -703,7 +835,7 @@ public final class OcPlatform { /** * Stop Presence announcements. * - * @throws OcException + * @throws OcException if failure */ public static void stopPresence() throws OcException { OcPlatform.initCheck(); @@ -716,13 +848,12 @@ public final class OcPlatform { * Subscribes to a server's presence change events. By making this subscription, every time a * server adds/removes/alters a resource, starts or is intentionally stopped * - * @param host The IP address/addressable name of the server to subscribe to - * @param connectivityType a type of connectivity indicating the interface. Example: IPV4, - * IPV6, ALL - * @param onPresenceListener listener that will receive notifications/subscription events + * @param host The IP address/addressable name of the server to subscribe to + * @param connectivityTypeSet Set of types of connectivity. Example: IP + * @param onPresenceListener listener that will receive notifications/subscription events * @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 + * @throws OcException if failure */ public static OcPresenceHandle subscribePresence( String host, @@ -751,14 +882,13 @@ public final class OcPlatform { * Subscribes to a server's presence change events. By making this subscription, every time a * server adds/removes/alters a resource, starts or is intentionally stopped * - * @param host The IP address/addressable name of the server to subscribe to - * @param resourceType a resource type specified as a filter for subscription events. - * @param connectivityType a type of connectivity indicating the interface. Example: IPV4, - * IPV6, ALL - * @param onPresenceListener listener that will receive notifications/subscription events + * @param host The IP address/addressable name of the server to subscribe to + * @param resourceType a resource type specified as a filter for subscription events. + * @param connectivityTypeSet Set of types of connectivity. Example: IP + * @param onPresenceListener listener that will receive notifications/subscription events * @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 + * @throws OcException if failure */ public static OcPresenceHandle subscribePresence( String host, @@ -792,7 +922,7 @@ public final class OcPlatform { * * @param ocPresenceHandle the handle object provided by the subscribePresence call that * identifies this subscription - * @throws OcException + * @throws OcException if failure */ public static void unsubscribePresence( OcPresenceHandle ocPresenceHandle) throws OcException { @@ -804,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 @@ -811,18 +978,17 @@ public final class OcPlatform { * Additionally, you can only create this object if OcPlatform was initialized to be a Client * or Client/Server. * - * @param host a string containing a resolvable host address of the server holding - * the resource - * @param uri the rest of the resource's URI that will permit messages to be - * properly routed. - * Example: /a/light - * @param connectivityType a type of connectivity indicating the interface. Example: IPV4, - * IPV6, ALL - * @param isObservable a boolean containing whether the resource supports observation - * @param resourceTypeList a collection of resource types implemented by the resource - * @param interfaceList a collection of interfaces that the resource supports/implements + * @param host a string containing a resolvable host address of the server holding + * the resource + * @param uri the rest of the resource's URI that will permit messages to be + * properly routed. + * Example: /a/light + * @param connectivityTypeSet Set of types of connectivity. Example: IP + * @param isObservable a boolean containing whether the resource supports observation + * @param resourceTypeList a collection of resource types implemented by the resource + * @param interfaceList a collection of interfaces that the resource supports/implements * @return new resource object - * @throws OcException + * @throws OcException if failure */ public static OcResource constructResourceObject( String host, @@ -860,7 +1026,7 @@ public final class OcPlatform { * Allows application entity handler to send response to an incoming request. * * @param ocResourceResponse resource response - * @throws OcException + * @throws OcException if failure */ public static void sendResponse(OcResourceResponse ocResourceResponse) throws OcException { @@ -872,11 +1038,87 @@ public final class OcPlatform { throws OcException; /** + * Method to find all devices which are eligible for direct pairing and return the list. + * + * @param timeout timeout for discovering direct pair devices. + * @param FindDirectPairingListener Callback function, which will receive the list of direct + * pairable devices. + * @throws OcException + */ + public static native void findDirectPairingDevices(int timeout, + FindDirectPairingListener onFindDirectPairingListener) throws OcException; + + /** + * Method to get list of all paired devices for a given device. + * + * @param GetDirectPairedListener Callback function, which will receive the list of direct + * paired devices. + * @throws OcException + */ + public native void getDirectPairedDevices(GetDirectPairedListener onGetDirectPairedListener) + throws OcException; + + /** + * Method to perform direct pairing between two devices. + * + * @param peer Target peer + * @param prmType Pairing Method to be used for Pairing + * @param pin pin + * @param DirectPairingListener Callback function, which will be called after + * completion of direct pairing. + * @throws OcException + */ + public static void doDirectPairing( + OcDirectPairDevice peer, + OcPrmType prmType, + String pin, + DirectPairingListener onDirectPairingListener) throws OcException { + + OcPlatform.doDirectPairing0( + peer, + prmType.getValue(), + pin, + onDirectPairingListener + ); + } + + private static native void doDirectPairing0(OcDirectPairDevice peer, + int pmSel, String pinNumber, DirectPairingListener onDirectPairingListener) + throws OcException; + + /** + * An FindDirectPairingListener can be registered via the OcPlatform.findDirectPairingDevices call. + * Event listeners are notified asynchronously + */ + public interface FindDirectPairingListener { + public void onFindDirectPairingListener(List ocPairedDeviceList); + } + + /** + * Listerner to Get List of already Direct Paired devices. + * An GetDirectPairedListener can be registered via the OcPlatform.getDirectPairedDevices call. + * Event listeners are notified asynchronously + */ + public interface GetDirectPairedListener { + public void onGetDirectPairedListener(List ocPairedDeviceList); + } + + /** + * Listner to get result of doDirectPairing. + * An DirectPairingListener can be registered via the OcPlatform.doDirectPairing call. + * Event listeners are notified asynchronously + */ + public interface DirectPairingListener { + public void onDirectPairingListener(String devId, int result); + } + + /** * An OnResourceFoundListener can be registered via the OcPlatform.findResource call. * Event listeners are notified asynchronously */ public interface OnResourceFoundListener { public void onResourceFound(OcResource resource); + public void onFindResourceFailed(Throwable ex, String uri); } /** @@ -906,15 +1148,126 @@ 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 " + "OcPlatform.Configure before any other API calls are permitted"); } } + + /** + * Gets platform quality of service + * + * @return quality of service + */ + public static QualityOfService getPlatformQualityOfService() { + 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; }