}
private static native void stopLeAdvertisingImpl();
+ /**
+ * set BT configure
+ */
+ public synchronized static void setBTConfigure(int flag){
+ CaInterface.setBTConfigureImpl(flag);
+ }
+ private static native void setBTConfigureImpl(int flag);
+
public synchronized static int setCipherSuite(OicCipher cipher, OcConnectivityType connType){
return CaInterface.setCipherSuiteImpl(cipher.getValue(), connType.getValue());
}
CAUtilStopLEAdvertising();
}
+JNIEXPORT void JNICALL
+Java_org_iotivity_ca_CaInterface_setBTConfigureImpl(JNIEnv *env, jclass clazz, jint flag)
+{
+ LOGI("setConfigureImpl");
+ (void)env;
+ (void)clazz;
+ CAUtilConfig_t configs = {(CATransportBTFlags_t)flag};
+ CAUtilSetBTConfigure(configs);
+}
+
JNIEXPORT jint JNICALL Java_org_iotivity_ca_CaInterface_setCipherSuiteImpl
(JNIEnv *env, jclass clazz, jint cipherSuite, jint adapter)
{
CA_SCOPE_GLOBAL = 0xE, // IPv6 Global scope
} CATransportFlags_t;
+typedef enum
+{
+ CA_DEFAULT_BT_FLAGS = 0,
+ // flags for BLE transport
+ CA_LE_ADV_DISABLE = 0x1, // disable BLE advertisement
+ CA_LE_ADV_ENABLE = 0x2, // enable BLE advertisement
+ // flags for EDR transport
+ CA_EDR_SERVER_DISABLE = (1 << 7)
+} CATransportBTFlags_t;
+
#define CA_IPFAMILY_MASK (CA_IPV6|CA_IPV4)
#define CA_SCOPE_MASK 0xf // mask scope bits above
bool ipv6tcpenabled; /**< IPv6 TCP enabled by OCInit flags */
} tcp;
#endif
+ CATransportBTFlags_t bleFlags; /**< flags related BLE transport */
} CAGlobals_t;
extern CAGlobals_t caglobals;
CMSpeedLevel_t level;
} CMConfigureInfo_t;
+/*
+ * CAUtilConfig_t structure.
+ */
+typedef struct
+{
+ CATransportBTFlags_t bleFlags;
+ CMConfigureInfo_t cmInfo;
+} CAUtilConfig_t;
+
/**
* Callback function type for connection status changes delivery.
* @param[out] info Remote endpoint information.
*/
CAResult_t CAUtilStopLEAdvertising();
+/**
+ * set CAUtil BT configure.
+ * @param[in] config ::CAUtilConfig_t value
+ * @return ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
+ */
+CAResult_t CAUtilSetBTConfigure(CAUtilConfig_t config);
#ifdef __cplusplus
} /* extern "C" */
#endif //__cplusplus
CAResult_t CALEServerStartAdvertise()
{
+ if ((caglobals.bleFlags & CA_LE_ADV_DISABLE) || CA_DEFAULT_BT_FLAGS == caglobals.bleFlags)
+ {
+ OIC_LOG_V(INFO, TAG, "the advertisement of the bleFlags is disable[%d]",
+ caglobals.bleFlags);
+ return CA_STATUS_OK;
+ }
+
if (!g_jvm)
{
OIC_LOG(ERROR, TAG, "g_jvm is null");
}
// start advertise
- ret = CALEServerStartAdvertise(env, g_leAdvertiseCallback);
+ ret = CALEServerStartAdvertise();
if (CA_STATUS_OK != ret)
{
OIC_LOG(ERROR, TAG, "CALEServerStartAdvertise has failed");
*/
CAResult_t CAManagerLEStopAdvertising();
+/**
+ * set CAUtilConfig_t configure.
+ * @param[in] config ::CAUtilConfig_t value
+ */
+void CAManagerSetConfigure(CAUtilConfig_t config);
+
#ifdef __cplusplus
} /* extern "C" */
#endif
CALERestartScanWithInterval(0, 0, BLE_SCAN_DISABLE);
}
+void CAManagerSetConfigure(CAUtilConfig_t config)
+{
+ OIC_LOG_V(INFO, TAG, "set configure for bleFlags : %d", config.bleFlags);
+ caglobals.bleFlags = config.bleFlags;
+}
+
CAResult_t CAManagerLEStartAdvertising()
{
CAResult_t ret = CALEServerStartAdvertise();
return CA_NOT_SUPPORTED;
#endif
}
+
+CAResult_t CAUtilSetBTConfigure(CAUtilConfig_t config)
+{
+ OIC_LOG_V(DEBUG, TAG, "CAUtilSetConfigure");
+ OIC_LOG_V(DEBUG, TAG, "bleFlag [%d]", config.bleFlags);
+#if (defined(__ANDROID__) && defined(LE_ADAPTER))
+ CAManagerSetConfigure(config);
+ return CA_STATUS_OK;
+#else
+ (void) config;
+ OIC_LOG(DEBUG, TAG, "it is not supported");
+ return CA_NOT_SUPPORTED;
+#endif
+}
OC_ADAPTER_NFC = (1 << 5)
} OCTransportAdapter;
+typedef enum
+{
+ OC_DEFAULT_BT_FLAGS = 0,
+ // flags for BLE transport
+ OC_LE_ADV_DISABLE = 0x1, // disable BLE advertisement
+ OC_LE_ADV_ENABLE = 0x2, // enable BLE advertisement
+ // flags for EDR transport
+ OC_EDR_SERVER_DISABLE = (1 << 7)
+} OCTransportBTFlags_t;
+
/**
* Enum layout assumes some targets have 16-bit integer (e.g., Arduino).
*/
*/
typedef void (*OCDirectPairingCB)(void *ctx, OCDPDev_t *peer, OCStackResult result);
//#endif // DIRECT_PAIRING
-
#if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
/**
* Callback function definition for Change in TrustCertChain
return OC_STACK_ERROR;
}
+ // unset cautil config
+ CAUtilConfig_t configs = {(CATransportBTFlags_t)CA_DEFAULT_BT_FLAGS};
+ CAUtilSetBTConfigure(configs);
+
stackState = OC_STACK_UNINIT_IN_PROGRESS;
#ifdef WITH_PRESENCE
*/
namespace CAManager
{
+ /**
+ * Data structure to provide the configuration for cautil.
+ */
+ struct CAUtilConfig
+ {
+ /** the flag for ble advertising. */
+ OCTransportBTFlags_t bleFlag;
+
+ public:
+ CAUtilConfig()
+ : bleFlag(OC_DEFAULT_BT_FLAGS)
+ {}
+ CAUtilConfig(OCTransportBTFlags_t bleFlag_)
+ : bleFlag(bleFlag_)
+ {}
+ };
+
// typedef to get adapter status changes from CA.
typedef std::function<void(const std::string&, OCConnectivityType,
bool)> ConnectionChangedCallback;
/**
* start BLE advertising.
- * @return Returns ::OC_STACK_OK if success.
+ * @return Returns ::OC_STACK_OK if success.
*/
OCStackResult startLEAdvertising();
/**
* stop BLE advertising.
- * @return Returns ::OC_STACK_OK if success.
+ * @return Returns ::OC_STACK_OK if success.
*/
OCStackResult stopLEAdvertising();
+ /**
+ * set BT configure.
+ * @param[in] config ::CAUtilConfig data
+ * @return Returns ::OC_STACK_OK if success.
+ */
+ OCStackResult setBTConfigure(const CAUtilConfig& config);
+
#if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
/**
* Select the cipher suite for TLS/DTLS handshake.
#include "CAManager.h"
#include "cautilinterface.h"
#include "casecurityinterface.h"
+#include "logger.h"
+
+#define TAG "OIC_CAMANAGER"
using namespace OC;
{
return CAGetAssignedPortNumber((CATransportAdapter_t) adapter, (CATransportFlags_t) flag);
}
+
+OCStackResult CAManager::setBTConfigure(const CAUtilConfig& config)
+{
+ OIC_LOG(INFO, TAG, "setBTConfigure");
+ CAUtilConfig_t configs = {(CATransportBTFlags_t)config.bleFlag};
+ CAResult_t ret = CAUtilSetBTConfigure(configs);
+ return convertCAResultToOCResult(ret);
+}
+
#if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
OCStackResult CAManager::setCipherSuite(const uint16_t cipher, OCTransportAdapter adapter)
{