Merge branch 'master' into resource-manipulation
authorhunje.yeon <hunje.yeon@samsung.com>
Sun, 12 Jul 2015 03:35:30 +0000 (12:35 +0900)
committerhunje.yeon <hunje.yeon@samsung.com>
Sun, 12 Jul 2015 03:35:43 +0000 (12:35 +0900)
Apply the resece updates from 'master' branch into 'resource-manipulation' branch
This update includes the fix of current 'presence' issues.

Change-Id: I4417164bd31285e80d9dd4b655e6f828ee1b6fe0
Signed-off-by: hunje.yeon <hunje.yeon@samsung.com>
31 files changed:
examples/OICMiddle/OICMiddle.cpp
examples/OICMiddle/OICMiddle.h
examples/OICMiddle/RestInput.cpp
examples/OICMiddle/RestInput.h
extlibs/tinydtls/SConscript
resource/csdk/connectivity/samples/arduino/casample.cpp
resource/csdk/connectivity/src/bt_le_adapter/android/caleclient.c
resource/csdk/connectivity/src/bt_le_adapter/android/caleserver.c
resource/csdk/connectivity/src/bt_le_adapter/android/caleserver.h
resource/csdk/connectivity/src/bt_le_adapter/caleadapter.c
resource/csdk/connectivity/src/bt_le_adapter/tizen/cableclient.c
resource/csdk/connectivity/src/bt_le_adapter/tizen/cableserver.c
resource/csdk/connectivity/src/bt_le_adapter/tizen/cableutil.c
resource/csdk/connectivity/src/ip_adapter/caipserver.c
resource/csdk/security/src/doxmresource.c
resource/csdk/security/unittest/aclresourcetest.cpp
resource/csdk/stack/include/octypes.h
resource/csdk/stack/samples/linux/SimpleClientServer/occlient.cpp
resource/csdk/stack/samples/linux/SimpleClientServer/occlient.h
resource/csdk/stack/samples/linux/SimpleClientServer/occlientbasicops.cpp
resource/csdk/stack/samples/linux/SimpleClientServer/occlientbasicops.h
resource/csdk/stack/samples/linux/SimpleClientServer/occlientcoll.cpp
resource/csdk/stack/samples/linux/SimpleClientServer/occlientslow.cpp
resource/csdk/stack/samples/linux/SimpleClientServer/occlientslow.h
resource/csdk/stack/samples/linux/secure/occlientbasicops.cpp
resource/csdk/stack/samples/linux/secure/occlientbasicops.h
resource/csdk/stack/src/ocserverrequest.c
resource/csdk/stack/src/ocstack.c
resource/include/OCApi.h
resource/src/InProcClientWrapper.cpp
resource/src/InProcServerWrapper.cpp

index 0da4145..0fed217 100644 (file)
@@ -44,6 +44,14 @@ Middle::Middle() :
 {
 }
 
+Middle::~Middle()
+{
+    delete m_client;
+    delete m_server;
+    delete m_lineInput;
+    delete m_restInput;
+}
+
 void Middle::init()
 {
 
index 457b7a8..d9d2564 100644 (file)
@@ -65,6 +65,7 @@ class Middle
 {
 public:
     Middle();
+    ~Middle();
     void init();
     void run(int argc, char* argv[]);
 
index 9d5b7b8..b922ebe 100644 (file)
@@ -26,7 +26,6 @@
 using namespace std;
 
 #define BUFLEN 10000
-#define MAX_CONNS 5
 
 static bool enableDebug = false; // set to true to print debug messages
 
@@ -40,10 +39,15 @@ void printDebugMessage(std::string message)
 RestInput::RestInput(LineInput *lineInput) : m_lineInput(lineInput)
 {
     m_data = (char*)malloc(BUFLEN);
-    m_thread = new std::thread[MAX_CONNS];
     m_threadCount = 0;
 }
 
+RestInput::~RestInput()
+{
+    free(m_data);
+    close(m_sockfd);
+}
+
 bool RestInput::init()
 {
     m_sockfd = socket(AF_INET, SOCK_STREAM, 0);
index 2e1cad6..56ec3ff 100644 (file)
@@ -28,8 +28,10 @@ class Connection;
 
 class RestInput
 {
+    static const int MAX_CONNS = 5;
 public:
     RestInput(LineInput *lineInput);
+    ~RestInput();
     bool init();
     void startAccept(int &sockfd);
     void startThread();
@@ -43,7 +45,7 @@ protected:
     int m_sockfd, m_port, m_threadCount;
     struct sockaddr_in m_serverAddr;
     char *m_data;
-    std::thread *m_thread;
+    std::thread m_thread[MAX_CONNS];
 };
 
 #endif // RESTINPUT_H
index e547991..846b27e 100644 (file)
@@ -62,8 +62,10 @@ tinydtls_src = [
 env.AppendUnique(TINYDTLS_SRC = tinydtls_src)
 
 if not env.get('RELEASE'):
-       if(target_os) not in ['android', 'arduino']:
+       if(target_os) not in ['arduino']:
                env.AppendUnique(TINYDTLS_SRC = ['debug.c'])
+       else:
+               env.AppendUnique(CPPDEFINES = ['NDEBUG'])
 else:
        env.AppendUnique(CPPDEFINES = ['NDEBUG'])
 
index 9d0c879..52040c2 100644 (file)
@@ -91,7 +91,7 @@ void GetData(char *readInput, size_t bufferLength, size_t *dataLength)
 
     readInput[len] = '\0';
     Serial.flush();
-    Serial.print("PD:");
+    Serial.print("PD: ");
     Serial.println(readInput);
     (*dataLength) = len;
 }
@@ -639,18 +639,19 @@ void GetNetworkInfo()
         free(tempInfo);
         return;
     }
-    printf("=========");
-    printf("Network info total size is %d\n\n", tempSize);
+    Serial.println("=========");
+    Serial.print("Network info total size is ");
+    Serial.println(tempSize);
     int index;
     for (index = 0; index < tempSize; index++)
     {
-        Serial.println("Type:");
+        Serial.print("Type: ");
         Serial.println(tempInfo[index].adapter);
         if (CA_ADAPTER_IP == tempInfo[index].adapter)
         {
-            Serial.println("Address:");
+            Serial.print("Address: ");
             Serial.println(tempInfo[index].addr);
-            Serial.println("Port:");
+            Serial.print("Port: ");
             Serial.println(tempInfo[index].port);
         }
     }
@@ -696,15 +697,15 @@ void RequestHandler(const CAEndpoint_t *object, const CARequestInfo_t *requestIn
         return;
     }
 
-    Serial.println("RAddr: ");
+    Serial.print("RAddr: ");
     Serial.println(object->addr);
-    Serial.println("Port: ");
+    Serial.print("Port: ");
     Serial.println(object->port);
-    Serial.println("uri: ");
+    Serial.print("uri: ");
     Serial.println(requestInfo->info.resourceUri);
-    Serial.println("data: ");
+    Serial.print("data: ");
     Serial.println(requestInfo->info.payload);
-    Serial.println("Type: ");
+    Serial.print("Type: ");
     Serial.println(requestInfo->info.type);
 
     if (requestInfo->info.options)
@@ -713,11 +714,11 @@ void RequestHandler(const CAEndpoint_t *object, const CARequestInfo_t *requestIn
         uint32_t i;
         for (i = 0; i < len; i++)
         {
-            Serial.println("Option:");
+            Serial.print("Option: ");
             Serial.println(i+1);
-            Serial.println("ID:");
+            Serial.print("ID: ");
             Serial.println(requestInfo->info.options[i].optionID);
-            Serial.println("Data:");
+            Serial.print("Data: ");
             Serial.println((char*)requestInfo->info.options[i].optionData);
         }
     }
@@ -748,41 +749,24 @@ void ResponseHandler(const CAEndpoint_t *object, const CAResponseInfo_t *respons
 
 void ErrorHandler(const CAEndpoint_t *rep, const CAErrorInfo_t* errorInfo)
 {
-    printf("+++++++++++++++++++++++++++++++++++ErrorInfo+++++++++++++++++++++++++++++++++++\n");
+    Serial.println("ErrorInfo");
 
     if(errorInfo)
     {
         const CAInfo_t *info = &errorInfo->info;
-        printf("Error Handler, ErrorInfo :\n");
-        printf("Error Handler result    : %d\n", errorInfo->result);
-        printf("Error Handler token     : %s\n", info->token);
-        printf("Error Handler messageId : %d\n", (uint16_t) info->messageId);
-        printf("Error Handler type      : %d\n", info->type);
-        printf("Error Handler resourceUri : %s\n", info->resourceUri);
-        printf("Error Handler payload   : %s\n", info->payload);
-
-        if(CA_ADAPTER_NOT_ENABLED == errorInfo->result)
-        {
-            printf("CA_ADAPTER_NOT_ENABLED, enable the adapter\n");
-        }
-        else if(CA_SEND_FAILED == errorInfo->result)
-        {
-            printf("CA_SEND_FAILED, unable to send the message, check parameters\n");
-        }
-        else if(CA_MEMORY_ALLOC_FAILED == errorInfo->result)
-        {
-            printf("CA_MEMORY_ALLOC_FAILED, insufficient memory\n");
-        }
-        else if(CA_SOCKET_OPERATION_FAILED == errorInfo->result)
-        {
-            printf("CA_SOCKET_OPERATION_FAILED, socket operation failed\n");
-        }
-        else if(CA_STATUS_FAILED == errorInfo->result)
-        {
-            printf("CA_STATUS_FAILED, message could not be delivered, internal error\n");
-        }
+        Serial.print("result: ");
+        Serial.println(errorInfo->result);
+        Serial.print("token: ");
+        Serial.println(info->token);
+        Serial.print("messageId: ");
+        Serial.println(info->messageId);
+        Serial.print("type: ");
+        Serial.println(info->type);
+        Serial.print("resourceUri: ");
+        Serial.println(info->resourceUri);
+        Serial.print("payload: ");
+        Serial.println(info->payload);
     }
-    printf("++++++++++++++++++++++++++++++++End of ErrorInfo++++++++++++++++++++++++++++++++\n");
 
     return;
 }
index e2986e9..b7e0c23 100644 (file)
@@ -3435,6 +3435,12 @@ Java_org_iotivity_ca_CaLeClientInterface_caLeGattConnectionStateChangeCallback(J
         }
         (*env)->ReleaseStringUTFChars(env, jni_address, address);
 
+        CAResult_t res = CALEClientGattClose(env, gatt);
+        if (CA_STATUS_OK != res)
+        {
+            OIC_LOG(ERROR, TAG, "CALEClientGattClose has failed");
+        }
+
         goto error_exit;
     }
     return;
@@ -3533,6 +3539,7 @@ Java_org_iotivity_ca_CaLeClientInterface_caLeGattServicesDiscoveredCallback(JNIE
             goto error_exit;
         }
     }
+
     (*env)->ReleaseStringUTFChars(env, jni_address, address);
     return;
 
index 2964b5a..fc980b5 100644 (file)
@@ -879,7 +879,7 @@ jobject CALEServerCreateGattService(JNIEnv *env)
 
     jfieldID jni_fid_readProperties = (*env)->GetStaticFieldID(env,
                                                                jni_cid_bluetoothGattCharacteristic,
-                                                               "PROPERTY_READ", "I");
+                                                               "PROPERTY_NOTIFY", "I");
     if (!jni_fid_readProperties)
     {
         OIC_LOG(ERROR, TAG, "jni_fid_readProperties is null");
@@ -978,23 +978,21 @@ jobject CALEServerCreateGattService(JNIEnv *env)
                                                              jni_cid_bluetoothGattCharacteristic,
                                                              jni_fid_readPermissions);
 
+    jint jni_int_writePermissions = (*env)->GetStaticIntField(env,
+                                                              jni_cid_bluetoothGattCharacteristic,
+                                                              jni_fid_writePermissions);
+
     jobject jni_readCharacteristic = (*env)->NewObject(env, jni_cid_bluetoothGattCharacteristic,
                                                        jni_mid_bluetoothGattCharacteristic,
                                                        jni_obj_readUuid, jni_int_readProperties,
-                                                       jni_int_readPermissions);
+                                                       jni_int_readPermissions|
+                                                       jni_int_writePermissions);
     if (!jni_readCharacteristic)
     {
         OIC_LOG(ERROR, TAG, "jni_readCharacteristic is null");
         return NULL;
     }
 
-    CAResult_t res = CALEServerAddDescriptor(env, jni_readCharacteristic);
-    if (CA_STATUS_OK != res)
-    {
-        OIC_LOG(ERROR, TAG, "CALEServerAddDescriptor has failed");
-        return NULL;
-    }
-
     jboolean jni_boolean_addReadCharacteristic = (*env)->CallBooleanMethod(
             env, jni_bluetoothGattService, jni_mid_addCharacteristic, jni_readCharacteristic);
     if (!jni_boolean_addReadCharacteristic)
@@ -1014,10 +1012,6 @@ jobject CALEServerCreateGattService(JNIEnv *env)
                                                              jni_cid_bluetoothGattCharacteristic,
                                                              jni_fid_writeProperties);
 
-    jint jni_int_writePermissions = (*env)->GetStaticIntField(env,
-                                                              jni_cid_bluetoothGattCharacteristic,
-                                                              jni_fid_writePermissions);
-
     jobject jni_writeCharacteristic = (*env)->NewObject(env, jni_cid_bluetoothGattCharacteristic,
                                                         jni_mid_bluetoothGattCharacteristic,
                                                         jni_obj_writeUuid, jni_int_writeProperties,
@@ -1040,96 +1034,6 @@ jobject CALEServerCreateGattService(JNIEnv *env)
     return jni_bluetoothGattService;
 }
 
-CAResult_t CALEServerAddDescriptor(JNIEnv *env, jobject characteristic)
-{
-    OIC_LOG(DEBUG, TAG, "IN - CALEServerAddDescriptor");
-    VERIFY_NON_NULL(env, TAG, "env is null");
-    VERIFY_NON_NULL(characteristic, TAG, "characteristic is null");
-
-    jclass jni_cid_bluetoothGattDescriptor = (*env)->FindClass(env, "android/bluetooth/"
-                                                               "BluetoothGattDescriptor");
-    if (!jni_cid_bluetoothGattDescriptor)
-    {
-        OIC_LOG(ERROR, TAG, "jni_cid_bluetoothGattDescriptor is null");
-        return CA_STATUS_FAILED;
-    }
-
-    jmethodID jni_mid_bluetoothGattDescriptor = (*env)->GetMethodID(env,
-                                                                    jni_cid_bluetoothGattDescriptor,
-                                                                    "<init>",
-                                                                    "(Ljava/util/UUID;I)V");
-    if (!jni_mid_bluetoothGattDescriptor)
-    {
-        OIC_LOG(ERROR, TAG, "jni_mid_bluetoothGattDescriptor is null");
-        return CA_STATUS_FAILED;
-    }
-
-    jfieldID jni_fid_readPermissions = (*env)->GetStaticFieldID(env,
-                                                                jni_cid_bluetoothGattDescriptor,
-                                                                "PERMISSION_READ", "I");
-    if (!jni_fid_readPermissions)
-    {
-        OIC_LOG(ERROR, TAG, "jni_fid_readPermissions is null");
-        return CA_STATUS_FAILED;
-    }
-
-    jobject jni_obj_readUuid = CALEGetUuidFromString(env, OIC_GATT_CHARACTERISTIC_CONFIG_UUID);
-    if (!jni_obj_readUuid)
-    {
-        OIC_LOG(ERROR, TAG, "jni_obj_readUuid is null");
-        return CA_STATUS_FAILED;
-    }
-
-    jint jni_int_readPermissions = (*env)->GetStaticIntField(env, jni_cid_bluetoothGattDescriptor,
-                                                             jni_fid_readPermissions);
-
-    OIC_LOG(DEBUG, TAG, "initialize new Descriptor");
-
-    jobject jni_readDescriptor = (*env)->NewObject(env, jni_cid_bluetoothGattDescriptor,
-                                                   jni_mid_bluetoothGattDescriptor,
-                                                   jni_obj_readUuid, jni_int_readPermissions);
-    if (!jni_readDescriptor)
-    {
-        OIC_LOG(ERROR, TAG, "jni_readDescriptor is null");
-        return CA_STATUS_FAILED;
-    }
-
-    jclass jni_cid_GattCharacteristic = (*env)->FindClass(env, "android/bluetooth/"
-                                                          "BluetoothGattCharacteristic");
-    if (!jni_cid_GattCharacteristic)
-    {
-        OIC_LOG(ERROR, TAG, "jni_cid_GattCharacteristic is null");
-        return CA_STATUS_FAILED;
-    }
-
-    jmethodID jni_mid_addDescriptor = (*env)->GetMethodID(env, jni_cid_GattCharacteristic,
-                                                          "addDescriptor",
-                                                          "(Landroid/bluetooth/"
-                                                          "BluetoothGattDescriptor;)Z");
-    if (!jni_mid_addDescriptor)
-    {
-        OIC_LOG(ERROR, TAG, "jni_mid_addDescriptor is null");
-        return CA_STATUS_FAILED;
-    }
-
-    jboolean jni_boolean_addDescriptor = (*env)->CallBooleanMethod(env, characteristic,
-                                                                   jni_mid_addDescriptor,
-                                                                   jni_readDescriptor);
-
-    if (JNI_FALSE == jni_boolean_addDescriptor)
-    {
-        OIC_LOG(ERROR, TAG, "addDescriptor has failed");
-        return CA_STATUS_FAILED;
-    }
-    else
-    {
-        OIC_LOG(DEBUG, TAG, "addDescriptor success");
-    }
-
-    OIC_LOG(DEBUG, TAG, "OUT - CALEServerAddDescriptor");
-    return CA_STATUS_OK;
-}
-
 CAResult_t CALEServerAddGattService(JNIEnv *env, jobject bluetoothGattServer,
                                           jobject bluetoothGattService)
 {
@@ -1298,6 +1202,44 @@ CAResult_t CALEServerDisconnect(JNIEnv *env, jobject bluetoothDevice)
     return CA_STATUS_OK;
 }
 
+CAResult_t CALEServerGattClose(JNIEnv *env, jobject bluetoothGattServer)
+{
+    // GATT CLOSE
+    OIC_LOG(DEBUG, TAG, "GattServer Close");
+    VERIFY_NON_NULL(bluetoothGattServer, TAG, "bluetoothGattServer is null");
+    VERIFY_NON_NULL(env, TAG, "env is null");
+
+    // get BluetoothGatt class
+    OIC_LOG(DEBUG, TAG, "get BluetoothGatt class");
+    jclass jni_cid_BluetoothGatt = (*env)->FindClass(env, "android/bluetooth/BluetoothGattServer");
+    if (!jni_cid_BluetoothGatt)
+    {
+        OIC_LOG(ERROR, TAG, "jni_cid_BluetoothGatt is null");
+        return CA_STATUS_FAILED;
+    }
+
+    jmethodID jni_mid_closeGatt = (*env)->GetMethodID(env, jni_cid_BluetoothGatt, "close", "()V");
+    if (!jni_mid_closeGatt)
+    {
+        OIC_LOG(ERROR, TAG, "jni_mid_closeGatt is null");
+        return CA_STATUS_OK;
+    }
+
+    // call disconnect gatt method
+    OIC_LOG(DEBUG, TAG, "request to close GATT");
+    (*env)->CallVoidMethod(env, bluetoothGattServer, jni_mid_closeGatt);
+
+    if ((*env)->ExceptionCheck(env))
+    {
+        OIC_LOG(ERROR, TAG, "closeGATT has failed");
+        (*env)->ExceptionDescribe(env);
+        (*env)->ExceptionClear(env);
+        return CA_STATUS_FAILED;
+    }
+
+    return CA_STATUS_OK;
+}
+
 CAResult_t CALEServerSend(JNIEnv *env, jobject bluetoothDevice, jbyteArray responseData)
 {
     OIC_LOG(DEBUG, TAG, "IN - CALEServerSend");
@@ -2135,6 +2077,11 @@ Java_org_iotivity_ca_CaLeServerInterface_caLeGattServerConnectionStateChangeCall
     else if (newState == jni_int_state_disconnected)
     {
         OIC_LOG(DEBUG, TAG, "LE DISCONNECTED");
+        CAResult_t res = CALEServerGattClose(env, g_bluetoothGattServer);
+        if (CA_STATUS_OK != res)
+        {
+            OIC_LOG(ERROR, TAG, "CALEServerGattClose has failed");
+        }
     }
     else
     {
index 99230ed..79a805a 100644 (file)
@@ -166,14 +166,6 @@ jobject CALEServerOpenGattServer(JNIEnv *env);
 jobject CALEServerCreateGattService(JNIEnv *env);
 
 /**
- * @brief   add a descriptor to the characteristic
- * @param   env                [IN] JNI interface pointer
- * @param   characteristic     [IN] Characteristic object
- * @return  CA_STATUS_OK or ERROR CODES (CAResult_t error codes in cacommon.h)
- */
-CAResult_t CALEServerAddDescriptor(JNIEnv *env, jobject characteristic);
-
-/**
  * @brief   create gatt service
  * @param   env                  [IN] JNI interface pointer
  * @param   bluetoothGattServer  [IN] Bluetooth Gatt Server object
@@ -193,6 +185,13 @@ CAResult_t CALEServerAddGattService(JNIEnv *env, jobject bluetoothGattServer,
 CAResult_t CALEServerStartGattServer(JNIEnv *env, jobject gattServerCallback);
 
 /**
+ * @brief   close gatt server
+ * @param   env                  [IN] JNI interface pointer
+ * @param   bluetoothGattServer  [IN] Gatt Server object
+ * @return  CA_STATUS_OK or ERROR CODES (CAResult_t error codes in cacommon.h)
+ */
+CAResult_t CALEServerGattClose(JNIEnv *env, jobject bluetoothGattServer);
+/**
  * @brief   send data
  * @param   env                  [IN] JNI interface pointer
  * @param   bluetoothDevice      [IN] bluetooth device object
index 37f14ba..4fc3299 100644 (file)
@@ -1111,7 +1111,7 @@ CALEData_t *CACreateLEData(const CAEndpoint_t *remoteEndpoint, const void *data,
 
 void CAFreeLEData(CALEData_t *bleData)
 {
-    VERIFY_NON_NULL_VOID(bleData, NULL, "Param bleData is NULL");
+    VERIFY_NON_NULL_VOID(bleData, CALEADAPTER_TAG, "Param bleData is NULL");
 
     CAFreeEndpoint(bleData->remoteEndpoint);
     OICFree(bleData->data);
@@ -1266,9 +1266,9 @@ CAResult_t CAInitializeLE(CARegisterConnectivityCallback registerCallback,
     OIC_LOG(DEBUG, CALEADAPTER_TAG, "IN");
 
     //Input validation
-    VERIFY_NON_NULL(registerCallback, NULL, "RegisterConnectivity callback is null");
-    VERIFY_NON_NULL(reqRespCallback, NULL, "PacketReceived Callback is null");
-    VERIFY_NON_NULL(netCallback, NULL, "NetworkChange Callback is null");
+    VERIFY_NON_NULL(registerCallback, CALEADAPTER_TAG, "RegisterConnectivity callback is null");
+    VERIFY_NON_NULL(reqRespCallback, CALEADAPTER_TAG, "PacketReceived Callback is null");
+    VERIFY_NON_NULL(netCallback, CALEADAPTER_TAG, "NetworkChange Callback is null");
 
     CAResult_t result = CA_STATUS_OK;
     result = CAInitLEAdapterMutex();
@@ -1481,8 +1481,8 @@ int32_t CASendLEUnicastData(const CAEndpoint_t *endpoint, const void *data, uint
     OIC_LOG(DEBUG, CALEADAPTER_TAG, "IN");
 
     //Input validation
-    VERIFY_NON_NULL_RET(endpoint, NULL, "Remote endpoint is null", -1);
-    VERIFY_NON_NULL_RET(data, NULL, "Data is null", -1);
+    VERIFY_NON_NULL_RET(endpoint, CALEADAPTER_TAG, "Remote endpoint is null", -1);
+    VERIFY_NON_NULL_RET(data, CALEADAPTER_TAG, "Data is null", -1);
 
     CAResult_t result = CA_STATUS_FAILED;
 
@@ -1526,7 +1526,7 @@ int32_t CASendLEMulticastData(const CAEndpoint_t *endpoint, const void *data, ui
     OIC_LOG(DEBUG, CALEADAPTER_TAG, "IN");
 
     //Input validation
-    VERIFY_NON_NULL_RET(data, NULL, "Data is null", -1);
+    VERIFY_NON_NULL_RET(data, CALEADAPTER_TAG, "Data is null", -1);
 
     if (0 >= dataLen)
     {
@@ -1576,7 +1576,7 @@ CAResult_t CAGetLEInterfaceInformation(CAEndpoint_t **info, uint32_t *size)
 {
     OIC_LOG(DEBUG, CALEADAPTER_TAG, "IN");
 
-    VERIFY_NON_NULL(info, NULL, "CALocalConnectivity info is null");
+    VERIFY_NON_NULL(info, CALEADAPTER_TAG, "CALocalConnectivity info is null");
 
     char *local_address = NULL;
 
@@ -1659,7 +1659,7 @@ void CALEDeviceStateChangedCb( CAAdapterState_t adapter_state)
 {
     OIC_LOG(DEBUG, CALEADAPTER_TAG, "IN");
 
-    VERIFY_NON_NULL_VOID(g_localBLEAddress, NULL, "g_localBLEAddress is null");
+    VERIFY_NON_NULL_VOID(g_localBLEAddress, CALEADAPTER_TAG, "g_localBLEAddress is null");
     CAEndpoint_t localEndpoint = {};
 
     ca_mutex_lock(g_bleLocalAddressMutex);
@@ -1700,7 +1700,7 @@ CAResult_t CALEAdapterClientSendData(const CAEndpoint_t *remoteEndpoint,
 {
     OIC_LOG(DEBUG, CALEADAPTER_TAG, "IN");
 
-    VERIFY_NON_NULL(data, NULL, "Param data is NULL");
+    VERIFY_NON_NULL(data, CALEADAPTER_TAG, "Param data is NULL");
 #ifndef SINGLE_THREAD
     VERIFY_NON_NULL_RET(g_bleClientSendQueueHandle, CALEADAPTER_TAG,
                         "g_bleClientSendQueueHandle is  NULL",
@@ -1736,7 +1736,7 @@ CAResult_t CALEAdapterServerSendData(const CAEndpoint_t *remoteEndpoint,
 {
     OIC_LOG(DEBUG, CALEADAPTER_TAG, "IN");
 
-    VERIFY_NON_NULL(data, NULL, "Param data is NULL");
+    VERIFY_NON_NULL(data, CALEADAPTER_TAG, "Param data is NULL");
 
 #ifdef SINGLE_THREAD
     char header[CA_HEADER_LENGTH] = {0};
index be9cd39..9bb3e70 100644 (file)
@@ -1250,9 +1250,9 @@ CAResult_t CABleGattDiscoverCharacteristics(bt_gatt_attribute_h service,
 {
     OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "IN");
 
-    VERIFY_NON_NULL_RET(service, NULL, "service is NULL", CA_STATUS_FAILED);
+    VERIFY_NON_NULL_RET(service, TZ_BLE_CLIENT_TAG, "service is NULL", CA_STATUS_FAILED);
 
-    VERIFY_NON_NULL_RET(remoteAddress, NULL, "remoteAddress is NULL", CA_STATUS_FAILED);
+    VERIFY_NON_NULL_RET(remoteAddress, TZ_BLE_CLIENT_TAG, "remoteAddress is NULL", CA_STATUS_FAILED);
 
     char *addr = OICStrdup(remoteAddress);
     VERIFY_NON_NULL_RET(addr, TZ_BLE_CLIENT_TAG, "Malloc failed", CA_STATUS_FAILED);
@@ -1301,7 +1301,7 @@ CAResult_t CABleGattDiscoverDescriptor(bt_gatt_attribute_h service, const char *
 {
     OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "IN");
 
-    VERIFY_NON_NULL_RET(service, NULL, "service is NULL", CA_STATUS_FAILED);
+    VERIFY_NON_NULL_RET(service, TZ_BLE_CLIENT_TAG, "service is NULL", CA_STATUS_FAILED);
 
     int ret = bt_gatt_discover_characteristic_descriptor(service,
                   CABleGattDescriptorDiscoveredCb, NULL);
@@ -1393,7 +1393,7 @@ CAResult_t  CAUpdateCharacteristicsToGattServer(const char *remoteAddress,
 {
     OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "IN");
 
-    VERIFY_NON_NULL(data, NULL, "data is NULL");
+    VERIFY_NON_NULL(data, TZ_BLE_CLIENT_TAG, "data is NULL");
 
     if (0 >= dataLen)
     {
@@ -1408,7 +1408,7 @@ CAResult_t  CAUpdateCharacteristicsToGattServer(const char *remoteAddress,
     ca_mutex_lock(g_bleServiceListMutex);
     if ( LE_UNICAST == type)
     {
-        VERIFY_NON_NULL(remoteAddress, NULL, "remoteAddress is NULL");
+        VERIFY_NON_NULL(remoteAddress, TZ_BLE_CLIENT_TAG, "remoteAddress is NULL");
 
         ret = CAGetBLEServiceInfo(g_bLEServiceList, remoteAddress, &bleServiceInfo);
     }
@@ -1424,7 +1424,7 @@ CAResult_t  CAUpdateCharacteristicsToGattServer(const char *remoteAddress,
         return CA_STATUS_FAILED;
     }
 
-    VERIFY_NON_NULL(bleServiceInfo, NULL, "bleServiceInfo is NULL");
+    VERIFY_NON_NULL(bleServiceInfo, TZ_BLE_CLIENT_TAG, "bleServiceInfo is NULL");
 
     OIC_LOG_V(DEBUG, TZ_BLE_CLIENT_TAG, "Updating the data of length [%d] to [%s] ", dataLen,
               bleServiceInfo->bdAddress);
@@ -1455,7 +1455,7 @@ CAResult_t  CAUpdateCharacteristicsToAllGattServers(const char  *data,
 {
     OIC_LOG(DEBUG,  TZ_BLE_CLIENT_TAG, "IN");
 
-    VERIFY_NON_NULL(data, NULL, "data is NULL");
+    VERIFY_NON_NULL(data, TZ_BLE_CLIENT_TAG, "data is NULL");
 
     if (0 >= dataLen)
     {
index 9bcb6dc..98e709c 100644 (file)
@@ -509,7 +509,7 @@ CAResult_t CAAddNewBleServiceInGattServer(const char *serviceUUID)
 {
     OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "IN");
 
-    VERIFY_NON_NULL(serviceUUID, NULL, "Param serviceUUID is NULL");
+    VERIFY_NON_NULL(serviceUUID, TZ_BLE_SERVER_TAG, "Param serviceUUID is NULL");
 
     OIC_LOG_V(DEBUG, TZ_BLE_SERVER_TAG, "service uuid %s", serviceUUID);
 
@@ -547,7 +547,7 @@ CAResult_t CARemoveBleServiceFromGattServer(const char *svcPath)
 {
     OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "IN");
 
-    VERIFY_NON_NULL(svcPath, NULL, "Param svcPath is NULL");
+    VERIFY_NON_NULL(svcPath, TZ_BLE_SERVER_TAG, "Param svcPath is NULL");
 
     int ret = bt_gatt_remove_service(svcPath);
 
@@ -623,7 +623,7 @@ CAResult_t CARegisterBleServicewithGattServer(const char *svcPath)
 {
     OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "IN");
 
-    VERIFY_NON_NULL(svcPath, NULL, "Param svcPath is NULL");
+    VERIFY_NON_NULL(svcPath, TZ_BLE_SERVER_TAG, "Param svcPath is NULL");
 
     OIC_LOG_V(DEBUG, TZ_BLE_SERVER_TAG, "svcPath:%s", svcPath);
 
@@ -710,9 +710,9 @@ CAResult_t CAUpdateCharacteristicsToGattClient(const char* address, const char *
 {
     OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "IN");
 
-    VERIFY_NON_NULL(charValue, NULL, "Param charValue is NULL");
+    VERIFY_NON_NULL(charValue, TZ_BLE_SERVER_TAG, "Param charValue is NULL");
 
-    VERIFY_NON_NULL(address, NULL, "Param address is NULL");
+    VERIFY_NON_NULL(address, TZ_BLE_SERVER_TAG, "Param address is NULL");
 
     OIC_LOG_V(DEBUG, TZ_BLE_SERVER_TAG, "Client's Unicast address for sending data [%s]", address);
 
@@ -759,7 +759,7 @@ CAResult_t CAUpdateCharacteristicsToAllGattClients(const char *charValue, uint32
 {
     OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "IN");
 
-    VERIFY_NON_NULL(charValue, NULL, "Param charValue is NULL");
+    VERIFY_NON_NULL(charValue, TZ_BLE_SERVER_TAG, "Param charValue is NULL");
 
     ca_mutex_lock(g_bleCharacteristicMutex);
 
index b03cf17..1f8da50 100644 (file)
@@ -70,9 +70,9 @@ CAResult_t CACreateBLEServiceInfo(const char *bdAddress, bt_gatt_attribute_h ser
 {
     OIC_LOG(DEBUG, TZ_BLE_CLIENT_UTIL_TAG, "IN");
 
-    VERIFY_NON_NULL(bdAddress, NULL, "Param bdAddress is NULL");
-    VERIFY_NON_NULL(service, NULL, "Param service is NULL");
-    VERIFY_NON_NULL(bleServiceInfo, NULL, "Param bleServiceInfo is NULL");
+    VERIFY_NON_NULL(bdAddress, TZ_BLE_CLIENT_UTIL_TAG, "Param bdAddress is NULL");
+    VERIFY_NON_NULL(service, TZ_BLE_CLIENT_UTIL_TAG, "Param service is NULL");
+    VERIFY_NON_NULL(bleServiceInfo, TZ_BLE_CLIENT_UTIL_TAG, "Param bleServiceInfo is NULL");
 
     *bleServiceInfo = (BLEServiceInfo *) OICCalloc(1, sizeof(BLEServiceInfo));
     if (NULL == *bleServiceInfo)
@@ -114,8 +114,8 @@ CAResult_t CAAppendBLECharInfo( bt_gatt_attribute_h characteristic, CHAR_TYPE ty
 {
     OIC_LOG(DEBUG, TZ_BLE_CLIENT_UTIL_TAG, "IN");
 
-    VERIFY_NON_NULL(characteristic, NULL, "Param characteristic is NULL");
-    VERIFY_NON_NULL(bleServiceInfo, NULL, "Param bleServiceInfo is NULL");
+    VERIFY_NON_NULL(characteristic, TZ_BLE_CLIENT_UTIL_TAG, "Param characteristic is NULL");
+    VERIFY_NON_NULL(bleServiceInfo, TZ_BLE_CLIENT_UTIL_TAG, "Param bleServiceInfo is NULL");
 
     if (BLE_GATT_READ_CHAR == type )
     {
@@ -151,8 +151,8 @@ CAResult_t CAAddBLEServiceInfoToList(BLEServiceList **serviceList,
 
     OIC_LOG(DEBUG, TZ_BLE_CLIENT_UTIL_TAG, "IN");
 
-    VERIFY_NON_NULL(serviceList, NULL, "Param serviceList is NULL");
-    VERIFY_NON_NULL(bleServiceInfo, NULL, "Param bleServiceInfo is NULL");
+    VERIFY_NON_NULL(serviceList, TZ_BLE_CLIENT_UTIL_TAG, "Param serviceList is NULL");
+    VERIFY_NON_NULL(bleServiceInfo, TZ_BLE_CLIENT_UTIL_TAG, "Param bleServiceInfo is NULL");
 
     BLEServiceList *node = (BLEServiceList *) OICCalloc(1, sizeof(BLEServiceList));
     if (NULL == node)
@@ -191,9 +191,9 @@ CAResult_t CARemoveBLEServiceInfoToList(BLEServiceList **serviceList,
 
     OIC_LOG(DEBUG, TZ_BLE_CLIENT_UTIL_TAG, "IN");
 
-    VERIFY_NON_NULL(serviceList, NULL, "Param serviceList is NULL");
-    VERIFY_NON_NULL(*serviceList, NULL, "Param *serviceList is NULL");
-    VERIFY_NON_NULL(bdAddress, NULL, "Param bdAddress is NULL");
+    VERIFY_NON_NULL(serviceList, TZ_BLE_CLIENT_UTIL_TAG, "Param serviceList is NULL");
+    VERIFY_NON_NULL(*serviceList, TZ_BLE_CLIENT_UTIL_TAG, "Param *serviceList is NULL");
+    VERIFY_NON_NULL(bdAddress, TZ_BLE_CLIENT_UTIL_TAG, "Param bdAddress is NULL");
 
     BLEServiceList *prev = NULL;
     BLEServiceList *cur = *serviceList;
@@ -238,9 +238,9 @@ CAResult_t CAGetBLEServiceInfo(BLEServiceList *serviceList, const char *bdAddres
 
     OIC_LOG(DEBUG, TZ_BLE_CLIENT_UTIL_TAG, "IN");
 
-    VERIFY_NON_NULL(serviceList, NULL, "Param serviceList is NULL");
-    VERIFY_NON_NULL(bleServiceInfo, NULL, "Param bleServiceInfo is NULL");
-    VERIFY_NON_NULL(bdAddress, NULL, "Param bdAddress is NULL");
+    VERIFY_NON_NULL(serviceList, TZ_BLE_CLIENT_UTIL_TAG, "Param serviceList is NULL");
+    VERIFY_NON_NULL(bleServiceInfo, TZ_BLE_CLIENT_UTIL_TAG, "Param bleServiceInfo is NULL");
+    VERIFY_NON_NULL(bdAddress, TZ_BLE_CLIENT_UTIL_TAG, "Param bdAddress is NULL");
 
 
     BLEServiceList *cur = serviceList;
@@ -266,8 +266,8 @@ CAResult_t CAGetBLEServiceInfoByPosition(BLEServiceList *serviceList, int32_t po
 {
     OIC_LOG(DEBUG, TZ_BLE_CLIENT_UTIL_TAG, "IN");
 
-    VERIFY_NON_NULL(serviceList, NULL, "Param serviceList is NULL");
-    VERIFY_NON_NULL(bleServiceInfo, NULL, "Param bleServiceInfo is NULL");
+    VERIFY_NON_NULL(serviceList, TZ_BLE_CLIENT_UTIL_TAG, "Param serviceList is NULL");
+    VERIFY_NON_NULL(bleServiceInfo, TZ_BLE_CLIENT_UTIL_TAG, "Param bleServiceInfo is NULL");
 
     if (0 > position)
     {
@@ -327,7 +327,7 @@ CAResult_t CAVerifyOICServiceByUUID(const char* serviceUUID)
 {
     OIC_LOG(DEBUG, TZ_BLE_CLIENT_UTIL_TAG, "IN");
 
-    VERIFY_NON_NULL(serviceUUID, NULL, "Param serviceHandle is NULL");
+    VERIFY_NON_NULL(serviceUUID, TZ_BLE_CLIENT_UTIL_TAG, "Param serviceHandle is NULL");
 
     if (strcasecmp(serviceUUID, OIC_BLE_SERVICE_ID) != 0)
     {
@@ -342,7 +342,7 @@ CAResult_t CAVerifyOICServiceByServiceHandle(bt_gatt_attribute_h serviceHandle)
 {
     OIC_LOG(DEBUG, TZ_BLE_CLIENT_UTIL_TAG, "IN");
 
-    VERIFY_NON_NULL(serviceHandle, NULL, "Param serviceHandle is NULL");
+    VERIFY_NON_NULL(serviceHandle, TZ_BLE_CLIENT_UTIL_TAG, "Param serviceHandle is NULL");
 
     char *uuid = NULL;
     int ret = bt_gatt_get_service_uuid(serviceHandle, &uuid);
index 7c0f9aa..b6a3e50 100644 (file)
@@ -266,7 +266,7 @@ static void CAReceiveHandler(void *data)
                 CAEndpoint_t ep;
                 strncpy(ep.addr, srcIPAddress, MAX_ADDR_STR_SIZE_CA);
                 ep.port = srcPort;
-                ep.flags = CA_IPV4;
+                ep.flags = (CATransportFlags_t)CA_IPV4 | CA_IPV6;
                 ep.adapter = CA_ADAPTER_IP;
 
                 if (info->endpoint.flags & CA_SECURE)
index 405ccc6..a9a9696 100755 (executable)
@@ -256,7 +256,7 @@ OicSecDoxm_t * JSONToDoxmBin(const char * jsonStr)
     if(jsonObj)
     {
         VERIFY_SUCCESS(TAG, cJSON_String == jsonObj->type, ERROR);
-        if(jsonObj && cJSON_String == jsonObj->type)
+        if(cJSON_String == jsonObj->type)
         {
             //Check for empty string, in case DeviceId field has not been set yet
             if (jsonObj->valuestring[0])
index 0e6f5b7..5608e16 100644 (file)
@@ -129,10 +129,7 @@ TEST(ACLResourceTest, JSONMarshallingTests)
         char * jsonStr2 = BinToAclJSON(acl);
         EXPECT_TRUE(NULL != jsonStr2);
 
-        if (jsonStr1 && jsonStr2)
-        {
-            EXPECT_STREQ(jsonStr1, jsonStr2);
-        }
+        EXPECT_STREQ(jsonStr1, jsonStr2);
 
         OICFree(jsonStr1);
         OICFree(jsonStr2);
index 42c16bc..1ee5146 100644 (file)
@@ -111,7 +111,7 @@ extern "C" {
 // These provide backward compatibility - their use is deprecated
 #ifndef GOING_AWAY
 #define OC_MULTICAST_PREFIX                  "224.0.1.187:5683"
-#define OC_MULTICAST_IP                      "224.0.1.187:5683"
+#define OC_MULTICAST_IP                      "224.0.1.187"
 #define OC_MULTICAST_PORT                    5683
 #endif // GOING_AWAY
 
index d0c13a6..d3f4b2a 100644 (file)
@@ -34,12 +34,12 @@ static int UNICAST_DISCOVERY = 0;
 static int TEST_CASE = 0;
 static int CONNECTIVITY = 0;
 
-static const char * UNICAST_DEVICE_DISCOVERY_QUERY = "coap://%s:6298/oic/d";
+static const char * UNICAST_DEVICE_DISCOVERY_QUERY = "coap://%s/oic/d";
 static const char * MULTICAST_DEVICE_DISCOVERY_QUERY = "/oic/d";
-static const char * UNICAST_PLATFORM_DISCOVERY_QUERY = "coap://%s:6298/oic/p";
+static const char * UNICAST_PLATFORM_DISCOVERY_QUERY = "coap://%s/oic/p";
 static const char * MULTICAST_PLATFORM_DISCOVERY_QUERY = "/oic/p";
 
-static const char * UNICAST_RESOURCE_DISCOVERY_QUERY = "coap://%s:6298/oic/res";
+static const char * UNICAST_RESOURCE_DISCOVERY_QUERY = "coap://%s/oic/res";
 static const char * MULTICAST_RESOURCE_DISCOVERY_QUERY = "/oic/res";
 //The following variable determines the interface protocol (IPv4, IPv6, etc)
 //to be used for sending unicast messages. Default set to IPv4.
@@ -48,7 +48,8 @@ static std::string putPayload = "{\"oic\":[{\"rep\":{\"power\":15,\"state\":true
 static std::string coapServerIP = "255.255.255.255";
 static std::string coapServerPort = "5683";
 static std::string coapServerResource = "/a/light";
-static const int IPV4_ADDR_SIZE = 16;
+// Size to hold IPV4_ADDRESS:PORT
+static const int IPV4_ADDR_SIZE = 24;
 //Use ipv4addr for both InitDiscovery and InitPlatformOrDeviceDiscovery
 char ipv4addr[IPV4_ADDR_SIZE];
 void StripNewLineChar(char* str);
@@ -78,11 +79,10 @@ void handleSigInt(int signum)
 
 static void PrintUsage()
 {
-    OC_LOG(INFO, TAG, "Usage : occlient -u <0|1> -t <1..17> -c <0|1|2>");
+    OC_LOG(INFO, TAG, "Usage : occlient -u <0|1> -t <1..17> -c <0|1>");
     OC_LOG(INFO, TAG, "-u <0|1> : Perform multicast/unicast discovery of resources");
-    OC_LOG(INFO, TAG, "-c 0 : Default IPv4 and IPv6 auto-selection");
-    OC_LOG(INFO, TAG, "-c 1 : IPv4 Connectivity Type");
-    OC_LOG(INFO, TAG, "-c 2 : IPv6 Connectivity Type (IPv6 not currently supported)");
+    OC_LOG(INFO, TAG, "-c 0 : Use Default connectivity(IP)");
+    OC_LOG(INFO, TAG, "-c 1 : IP Connectivity Type");
     OC_LOG(INFO, TAG, "-t 1  :  Discover Resources");
     OC_LOG(INFO, TAG, "-t 2  :  Discover Resources and Initiate Nonconfirmable Get Request");
     OC_LOG(INFO, TAG, "-t 3  :  Discover Resources and Initiate Nonconfirmable Get Request"
@@ -831,10 +831,21 @@ int main(int argc, char* argv[])
         OC_LOG(ERROR, TAG, "OCStack init error");
         return 0;
     }
+
+    if(CONNECTIVITY == CT_ADAPTER_DEFAULT || CONNECTIVITY == CT_IP)
+    {
+        OC_CONNTYPE = CT_ADAPTER_IP;
+    }
+    else
+    {
+        OC_LOG(INFO, TAG, "Default Connectivity type selected...");
+        PrintUsage();
+    }
+
     if (UNICAST_DISCOVERY)
     {
-        OC_LOG(INFO, TAG, "Enter IPv4 address of the Server hosting resource (Ex: 192.168.0.15)\n");
-        OC_LOG(INFO, TAG, "Ipv6 is currently not supported...");
+        OC_LOG(INFO, TAG, "Enter IP address with port number of the Server hosting resource");
+        OC_LOG(INFO, TAG, "as follows - eg: 192.168.0.15:45454 (IP:Port) \n");
 
         if (fgets(ipv4addr, IPV4_ADDR_SIZE, stdin))
         {
@@ -847,28 +858,6 @@ int main(int argc, char* argv[])
             return OC_STACK_INVALID_PARAM;
         }
     }
-    if(CONNECTIVITY == CT_ADAPTER_DEFAULT)
-    {
-        OC_CONNTYPE = CT_DEFAULT;
-    }
-    else if(CONNECTIVITY == CT_IPV4)
-    {
-        OC_CONNTYPE = CT_IP_USE_V4;
-    }
-    else if(CONNECTIVITY == CT_IPV6)
-    {
-        OC_CONNTYPE = CT_IP_USE_V6;
-
-        //TODO: Remove when IPv6 is available.
-        OC_LOG(ERROR, TAG, "IPv6 is currently not supported !!!!");
-        PrintUsage();
-        return -1;
-    }
-    else
-    {
-        OC_LOG(INFO, TAG, "Default Connectivity type selected...");
-        PrintUsage();
-    }
 
     if(UNICAST_DISCOVERY  == 0  && TEST_CASE == TEST_DISCOVER_DEV_REQ)
     {
index a8661ed..2ed2e3d 100644 (file)
@@ -72,8 +72,7 @@ typedef enum {
  */
 typedef enum {
     CT_ADAPTER_DEFAULT = 0,
-    CT_IPV4,
-    CT_IPV6,
+    CT_IP,
     MAX_CT
 } CLIENT_CONNECTIVITY_TYPE;
 
index 2ea10a1..8f1eb62 100644 (file)
 #define MAX_IP_ADDR_ST_SZ  16 //string size of "155.255.255.255" (15 + 1)
 #define MAX_PORT_ST_SZ  6     //string size of "65535" (5 + 1)
 
-static int IPV4_ADDR_SIZE = 16;
+static int IPV4_ADDR_SIZE = 24;
 static int UNICAST_DISCOVERY = 0;
 static int TEST_CASE = 0;
 static int CONNECTIVITY = 0;
 
-static const char UNICAST_DISCOVERY_QUERY[] = "coap://%s:6298/oic/res";
+static const char UNICAST_DISCOVERY_QUERY[] = "coap://%s/oic/res";
 static std::string putPayload = "{\"oic\":[{\"rep\":{\"power\":15,\"state\":true}}]}";
 
 //The following variable determines the interface protocol (IP, etc)
@@ -64,16 +64,15 @@ void handleSigInt(int signum)
 
 static void PrintUsage()
 {
-    OC_LOG(INFO, TAG, "Usage : occlient -u <0|1> -t <1|2|3> -c <0|1|2>");
+    OC_LOG(INFO, TAG, "Usage : occlient -u <0|1> -t <1|2|3> -c <0|1>");
     OC_LOG(INFO, TAG, "-u <0|1> : Perform multicast/unicast discovery of resources");
     OC_LOG(INFO, TAG, "-t 1 : Discover Resources");
     OC_LOG(INFO, TAG, "-t 2 : Discover Resources and"
             " Initiate Nonconfirmable Get/Put/Post Requests");
     OC_LOG(INFO, TAG, "-t 3 : Discover Resources and Initiate "
             "Confirmable Get/Put/Post Requests");
-    OC_LOG(INFO, TAG, "-c 0 : Default IPv4 and IPv6 auto-selection");
-    OC_LOG(INFO, TAG, "-c 1 : IPv4 Connectivity Type");
-    OC_LOG(INFO, TAG, "-c 2 : IPv6 Connectivity Type (IPv6 not currently supported)");
+    OC_LOG(INFO, TAG, "-c 0 : Default auto-selection");
+    OC_LOG(INFO, TAG, "-c 1 : IP Connectivity Type");
 }
 
 /*
@@ -318,7 +317,8 @@ int InitDiscovery()
     if (UNICAST_DISCOVERY)
     {
         char ipv4addr[IPV4_ADDR_SIZE];
-        OC_LOG(INFO, TAG, "Enter IPv4 address of the Server hosting resource (Ex: 192.168.0.15) ");
+        OC_LOG(INFO, TAG, "Enter IP address with port of the Server hosting resource"\
+                    "(Ex: 192.168.0.15:1234) ");
 
         if (fgets(ipv4addr, IPV4_ADDR_SIZE, stdin))
         {
@@ -491,7 +491,6 @@ int parseJSON(const char * resJSONPayload, char ** sid_c,
 
 void queryResource()
 {
-    printf("\n");
     switch(TEST_CASE)
     {
         case TEST_DISCOVER_REQ:
@@ -510,7 +509,6 @@ void queryResource()
             PrintUsage();
             break;
     }
-    printf("\n");
 }
 
 
@@ -619,36 +617,30 @@ void printResourceList()
 {
     ResourceNode * iter;
     iter = resourceList;
-    printf("\nResource List\n");
+    OC_LOG(INFO, TAG, "Resource List: ");
     while(iter)
     {
-        printf("*****************************************************\n");
-        printf("sid = %s \n",iter->sid);
-        printf("uri = %s\n", iter->uri);
-        printf("ip = %s\n", iter->ip);
-        printf("port = %s\n", iter->port);
+        OC_LOG(INFO, TAG, "*****************************************************");
+        OC_LOG_V(INFO, TAG, "sid = %s",iter->sid);
+        OC_LOG_V(INFO, TAG, "uri = %s", iter->uri);
+        OC_LOG_V(INFO, TAG, "ip = %s", iter->ip);
+        OC_LOG_V(INFO, TAG, "port = %s", iter->port);
         switch (iter->connType & CT_MASK_ADAPTER)
         {
             case CT_ADAPTER_IP:
-                printf("connType = %s\n","Default (IPv4) ");
-                break;
-            case CT_IP_USE_V4:
-                printf("connType = %s\n","IPv4");
-                break;
-            case CT_IP_USE_V6:
-                printf("connType = %s\n","IPv6");
+                OC_LOG(INFO, TAG, "connType = Default (IPv4)");
                 break;
             case OC_ADAPTER_GATT_BTLE:
-                printf("connType = %s\n","BLE");
+                OC_LOG(INFO, TAG, "connType = BLE");
                 break;
             case OC_ADAPTER_RFCOMM_BTEDR:
-                printf("connType = %s\n","BT");
+                OC_LOG(INFO, TAG, "connType = BT");
                 break;
             default:
-                printf("connType = %s\n","Invalid connType");
+                OC_LOG(INFO, TAG, "connType = Invalid connType");
                 break;
         }
-        printf("*****************************************************\n");
+        OC_LOG(INFO, TAG, "*****************************************************");
         iter = iter->next;
     }
 }
@@ -659,6 +651,7 @@ void freeResourceList()
     ResourceNode * temp;
     while(resourceList)
     {
+
         temp = resourceList;
         resourceList = resourceList->next;
         OICFree((void *)temp->sid);
@@ -685,6 +678,7 @@ int main(int argc, char* argv[])
                 TEST_CASE = atoi(optarg);
                 break;
             case 'c':
+
                 CONNECTIVITY = atoi(optarg);
                 break;
             default:
@@ -708,27 +702,14 @@ int main(int argc, char* argv[])
         return 0;
     }
 
-    if(CONNECTIVITY == CT_ADAPTER_DEFAULT)
+    if(CONNECTIVITY == CT_ADAPTER_DEFAULT || CONNECTIVITY ==  CT_IP)
     {
         OC_CONNTYPE =  CT_ADAPTER_IP;//CT_DEFAULT;
     }
-    else if(CONNECTIVITY == CT_IPV4)
-    {
-        OC_CONNTYPE = CT_IP_USE_V4;
-    }
-    else if(CONNECTIVITY == CT_IPV6)
-    {
-        OC_CONNTYPE = CT_IP_USE_V6;
-
-        //TODO: Remove when IPv6 is available.
-        printf("\n\nIPv6 is currently not supported !!!!\n");
-        PrintUsage();
-        return -1;
-    }
     else
     {
-        printf("Default Connectivity type selected \n\n");
-        OC_CONNTYPE = CT_ADAPTER_IP;
+        OC_LOG(INFO, TAG, "Default Connectivity type selected");
+        PrintUsage();
     }
 
     InitDiscovery();
index 4a0dd93..012a11a 100644 (file)
@@ -52,8 +52,7 @@ typedef enum {
  */
 typedef enum {
     CT_ADAPTER_DEFAULT = 0,
-    CT_IPV4,
-    CT_IPV6,
+    CT_IP,
     MAX_CT
 } CLIENT_CONNECTIVITY_TYPE;
 
index 15c3c8b..1180b43 100644 (file)
@@ -59,8 +59,7 @@ typedef enum
  */
 typedef enum {
     CT_ADAPTER_DEFAULT = 0,
-    CT_IPV4,
-    CT_IPV6,
+    CT_IP,
     MAX_CT
 } CLIENT_CONNECTIVITY_TYPE;
 
@@ -119,9 +118,8 @@ int InitDiscovery();
 void PrintUsage()
 {
     OC_LOG(INFO, TAG, "Usage : occlientcoll -t <Test Case> -c <CA connectivity Type>");
-    OC_LOG(INFO, TAG, "-c 0 : Default IPv4 and IPv6 auto-selection");
-    OC_LOG(INFO, TAG, "-c 1 : IPv4 Connectivity Type");
-    OC_LOG(INFO, TAG, "-c 2 : IPv6 Connectivity Type (IPv6 not currently supported)");
+    OC_LOG(INFO, TAG, "-c 0 : Default auto-selection");
+    OC_LOG(INFO, TAG, "-c 1 : IP Connectivity Type");
     OC_LOG(INFO, TAG, "Test Case 1 : Discover Resources && Initiate GET Request on an "\
             "available resource using default interface.");
     OC_LOG(INFO, TAG, "Test Case 2 : Discover Resources && Initiate GET Request on an "\
@@ -378,28 +376,16 @@ int main(int argc, char* argv[])
         return 0;
     }
 
-    if(CONNECTIVITY == CT_ADAPTER_DEFAULT)
+    if(CONNECTIVITY == CT_ADAPTER_DEFAULT || CONNECTIVITY == CT_IP)
     {
-        OC_CONNTYPE = CT_DEFAULT;
-    }
-    else if(CONNECTIVITY == CT_IPV4)
-    {
-        OC_CONNTYPE = CT_IP_USE_V4;
-    }
-    else if(CONNECTIVITY == CT_IPV6)
-    {
-        OC_CONNTYPE = CT_IP_USE_V6;
-
-        //TODO: Remove when IPv6 is available.
-        OC_LOG(INFO, TAG, "Ipv6 is currently not supported...");
-        PrintUsage();
-        return -1;
+        OC_CONNTYPE = CT_ADAPTER_IP;
     }
     else
     {
         OC_LOG(INFO, TAG, "Default Connectivity type selected...");
         OC_CONNTYPE = CT_ADAPTER_IP;
     }
+
     InitDiscovery();
 
     // Break from loop with Ctrl+C
index 7f55394..29b22c3 100644 (file)
@@ -34,7 +34,7 @@ static int UNICAST_DISCOVERY = 0;
 static int TEST_CASE = 0;
 static int CONNECTIVITY = 0;
 
-static const char * UNICAST_DISCOVERY_QUERY = "coap://%s:6298/oic/res";
+static const char * UNICAST_DISCOVERY_QUERY = "coap://%s/oic/res";
 static std::string putPayload = "{\"state\":\"off\",\"power\":10}";
 static std::string coapServerIP = "255.255.255.255";
 static std::string coapServerPort = "5683";
@@ -44,7 +44,7 @@ static std::string coapServerResource = "/a/led";
 //to be used for sending unicast messages. Default set to IP.
 static OCConnectivityType OC_CONNTYPE = CT_ADAPTER_IP;
 static const char * MULTICAST_RESOURCE_DISCOVERY_QUERY = "/oic/res";
-static int IPV4_ADDR_SIZE = 16;
+static int IPV4_ADDR_SIZE = 24;
 void StripNewLineChar(char* str);
 
 int gQuitFlag = 0;
@@ -61,9 +61,8 @@ void handleSigInt(int signum)
 static void PrintUsage()
 {
     OC_LOG(INFO, TAG, "Usage : occlient -c <0|1|2> -u <0|1> -t <1|2|3>");
-    OC_LOG(INFO, TAG, "-c 0 : Default IPv4 and IPv6 auto-selection");
-    OC_LOG(INFO, TAG, "-c 1 : IPv4 Connectivity Type");
-    OC_LOG(INFO, TAG, "-c 2 : IPv6 Connectivity Type (IPv6 not currently supported)");
+    OC_LOG(INFO, TAG, "-c 0 : Default auto-selection");
+    OC_LOG(INFO, TAG, "-c 1 : IP Connectivity Type");
     OC_LOG(INFO, TAG, "-u <0|1> : Perform multicast/unicast discovery of resources");
     OC_LOG(INFO, TAG, "-t 1 : Discover Resources");
     OC_LOG(INFO, TAG, "-t 2 : Discover Resources and Initiate Nonconfirmable Get Request");
@@ -186,7 +185,8 @@ int InitDiscovery()
     if (UNICAST_DISCOVERY)
     {
         char ipv4addr[IPV4_ADDR_SIZE];
-        OC_LOG(INFO, TAG, "Enter IPv4 address of the Server hosting resource (Ex: 192.168.0.15)");
+        OC_LOG(INFO, TAG, "Enter IPv4:port of the Server hosting resource"\
+                "(Ex: 192.168.0.15:1234)");
         if (fgets(ipv4addr, IPV4_ADDR_SIZE, stdin))
         {
             //Strip newline char from ipv4addr
@@ -261,23 +261,10 @@ int main(int argc, char* argv[])
         return 0;
     }
 
-    if(CONNECTIVITY == CT_ADAPTER_DEFAULT)
+    if(CONNECTIVITY == CT_ADAPTER_DEFAULT || CONNECTIVITY == CT_IP)
     {
         OC_CONNTYPE = CT_ADAPTER_IP;
     }
-    else if(CONNECTIVITY == CT_IPV4)
-    {
-        OC_CONNTYPE = CT_IP_USE_V4;
-    }
-    else if(CONNECTIVITY == CT_IPV6)
-    {
-        OC_CONNTYPE = CT_IP_USE_V6;
-
-        //TODO: Remove when IPv6 is available.
-        OC_LOG(INFO, TAG, "Ipv6 is currently not supported...");
-        PrintUsage();
-        return -1;
-    }
     else
     {
         OC_LOG(INFO, TAG, "Default Connectivity type selected...");
index fdb2204..3c91393 100644 (file)
@@ -53,8 +53,7 @@ typedef enum
  */
 typedef enum {
     CT_ADAPTER_DEFAULT = 0,
-    CT_IPV4,
-    CT_IPV6,
+    CT_IP,
     MAX_CT
 } CLIENT_CONNECTIVITY_TYPE;
 
index a2097ce..3dabe56 100644 (file)
@@ -36,8 +36,8 @@ static int UNICAST_DISCOVERY = 0;
 static int TEST_CASE = 0;
 static int CONN_TYPE = 0;
 
-static int IPV4_ADDR_SIZE = 16;
-static char UNICAST_DISCOVERY_QUERY[] = "coap://%s:6298/oic/res";
+static int IPV4_ADDR_SIZE = 24;
+static char UNICAST_DISCOVERY_QUERY[] = "coap://%s/oic/res";
 static char MULTICAST_DISCOVERY_QUERY[] = "/oic/res";
 OCConnectivityType discoveryReqConnType = CT_ADAPTER_IP;
 
@@ -68,15 +68,14 @@ void handleSigInt(int signum)
 
 static void PrintUsage()
 {
-    OC_LOG(INFO, TAG, "Usage : occlient -u <0|1> -t <1|2|3> -c <0|1|2>");
+    OC_LOG(INFO, TAG, "Usage : occlient -u <0|1> -t <1|2|3> -c <0|1>");
     OC_LOG(INFO, TAG, "-u <0|1> : Perform multicast/unicast discovery of resources");
     OC_LOG(INFO, TAG, "-t 1 : Discover Resources");
     OC_LOG(INFO, TAG, "-t 2 : Discover Resources and"
             " Initiate Nonconfirmable Get/Put/Post Requests");
     OC_LOG(INFO, TAG, "-t 3 : Discover Resources and Initiate Confirmable Get/Put/Post Requests");
-    OC_LOG(INFO, TAG, "-c 0 : Default IPv4 and IPv6 auto-selection");
+    OC_LOG(INFO, TAG, "-c 0 : Default auto-selection");
     OC_LOG(INFO, TAG, "-c 1 : IPv4 Connectivity Type");
-    OC_LOG(INFO, TAG, "-c 2 : IPv6 Connectivity Type (IPv6 not currently supported)");
 }
 
 OCStackResult InvokeOCDoResource(std::ostringstream &query,
@@ -242,7 +241,8 @@ int InitDiscovery()
     if (UNICAST_DISCOVERY)
     {
         char ipv4addr[IPV4_ADDR_SIZE];
-        printf("Enter IPv4 address of the Server hosting secure resource (Ex: 11.12.13.14)\n");
+        OC_LOG(INFO, TAG, "Enter IPv4 address:port of the Server hosting secure resource"\
+                "(Ex: 11.12.13.14:1234)\n");
         if (fgets(ipv4addr, IPV4_ADDR_SIZE, stdin))
         {
             //Strip newline char from ipv4addr
@@ -322,25 +322,13 @@ int main(int argc, char* argv[])
     }
 
 
-    if(CONN_TYPE == CT_ADAPTER_DEFAULT)
+    if(CONN_TYPE == CT_ADAPTER_DEFAULT || CONN_TYPE ==  CT_IP)
     {
         discoveryReqConnType = CT_DEFAULT;
     }
-    else if(CONN_TYPE == CT_IPV4)
-    {
-        discoveryReqConnType = CT_IP_USE_V4;
-    }
-    else if(CONN_TYPE == CT_IPV6)
-    {
-        //TODO: Remove when IPv6 is available.
-        //discoveryReqConnType = CT_IP_USE_V6;
-        OC_LOG(ERROR, TAG, "IPv6 is currently not supported !!!!");
-        PrintUsage();
-        return -1;
-    }
     else
     {
-        printf("Using Default Connectivity type\n\n");
+        OC_LOG(INFO, TAG, "Using Default Connectivity type");
         PrintUsage();
     }
 
@@ -416,17 +404,32 @@ int parseClientResponse(OCClientResponse * clientResponse)
     }
 
     oc = cJSON_GetObjectItem(root,"oic");
-    if (!oc)
+    if (!oc || oc->type != cJSON_Array)
+    {
+        cJSON_Delete(root);
+        return -1;
+    }
+
+    cJSON * firstDevice = cJSON_GetArrayItem(oc, 0);
+    if (!firstDevice)
+    {
+        cJSON_Delete(root);
+        return -1;
+    }
+
+    cJSON * links = cJSON_GetObjectItem(firstDevice,"links");
+    if (!links)
     {
+        cJSON_Delete(root);
         return -1;
     }
 
-    if (oc->type == cJSON_Array)
+    if (links->type == cJSON_Array)
     {
-        int numRsrcs =  cJSON_GetArraySize(oc);
+        int numRsrcs =  cJSON_GetArraySize(links);
         for(int i = 0; i < numRsrcs; i++)
         {
-            cJSON * resource = cJSON_GetArrayItem(oc, i);
+            cJSON * resource = cJSON_GetArrayItem(links, i);
             if (cJSON_GetObjectItem(resource, "href"))
             {
                 coapServerResource.assign(cJSON_GetObjectItem(resource, "href")->valuestring);
@@ -437,10 +440,8 @@ int parseClientResponse(OCClientResponse * clientResponse)
             }
             OC_LOG_V(INFO, TAG, "Uri -- %s", coapServerResource.c_str());
 
-            cJSON * prop = cJSON_GetObjectItem(resource,"prop");
-            if (prop)
             {
-                cJSON * policy = cJSON_GetObjectItem(prop,"p");
+                cJSON * policy = cJSON_GetObjectItem(resource,"p");
                 if (policy)
                 {
                     // If this is a secure resource, the info about the port at which the
index 2262553..3fed75a 100644 (file)
@@ -43,8 +43,7 @@ typedef enum {
  */
 typedef enum {
     CT_ADAPTER_DEFAULT = 0,
-    CT_IPV4,
-    CT_IPV6,
+    CT_IP,
     MAX_CT
 } CLIENT_CONNECTIVITY_TYPE;
 
index 98d6040..04797a6 100644 (file)
@@ -562,13 +562,19 @@ OCStackResult HandleSingleResponse(OCEntityHandlerResponse * ehResponse)
     #ifdef WITH_PRESENCE
     //TODO: Add other connectivity types to CAConnTypes[] when enabled
     CATransportAdapter_t CAConnTypes[] = {CA_ADAPTER_IP};
-    const char * connTypes[] = {"ip transport"};
+    const char * connTypes[] = {"IP"};
     int size = sizeof(CAConnTypes)/ sizeof(CATransportAdapter_t);
     CATransportAdapter_t adapter = responseEndpoint.adapter;
     CAResult_t caResult = CA_STATUS_FAILED;
     result = OC_STACK_OK;
 
-    //Sending response on all n/w interfaces
+    // Default adapter, try to send response out on all adapters.
+    if (adapter == CA_DEFAULT_ADAPTER)
+    {
+        adapter =
+            (CATransportAdapter_t)(CA_ADAPTER_IP | CA_ADAPTER_GATT_BTLE | CA_ADAPTER_RFCOMM_BTEDR);
+    }
+
     for(int i = 0; i < size; i++ )
     {
         responseEndpoint.adapter = (CATransportAdapter_t)(adapter & CAConnTypes[i]);
index 2650130..19bdc95 100644 (file)
@@ -642,7 +642,7 @@ CATransportFlags_t OCToCATransportFlags(OCTransportFlags ocFlags)
 {
     CATransportFlags_t caFlags = (CATransportFlags_t)ocFlags;
 
-    // supply default behavior
+    // supply default behavior.
     if ((caFlags & (CA_IPV6|CA_IPV4)) == 0)
     {
         caFlags = (CATransportFlags_t)(caFlags|CA_IPV6|CA_IPV4);
@@ -752,7 +752,7 @@ OCPresenceTrigger convertTriggerStringToEnum(const char * triggerStr)
  */
 static int FormCanonicalPresenceUri(const CAEndpoint_t *endpoint, char *resourceUri, char *presenceUri)
 {
-    VERIFY_NON_NULL(endpoint, FATAL, OC_STACK_INVALID_PARAM);
+    VERIFY_NON_NULL(endpoint   , FATAL, OC_STACK_INVALID_PARAM);
     VERIFY_NON_NULL(resourceUri, FATAL, OC_STACK_INVALID_PARAM);
     VERIFY_NON_NULL(presenceUri, FATAL, OC_STACK_INVALID_PARAM);
 
@@ -914,7 +914,8 @@ OCStackResult HandlePresenceResponse(const CAEndpoint_t *endpoint,
     }
     else
     {
-        strncpy(presenceUri, responseInfo->info.resourceUri, CA_MAX_URI_LENGTH);
+        snprintf (presenceUri, MAX_URI_LENGTH, "coap://[%s]:%u%s", OC_MULTICAST_IP,
+                    OC_MULTICAST_PORT, OC_PRESENCE_URI);
         cbNode = GetClientCB(NULL, 0, NULL, presenceUri);
         if (cbNode)
         {
@@ -2028,6 +2029,7 @@ OCStackResult OCDoResource(OCDoHandle *handle,
     flags = (OCTransportFlags)(connectivityType & CT_MASK_FLAGS);
 
     result = ParseRequestUri(requestUri, adapter, flags, &devAddr, &resourceUri, &resourceType);
+
     if (result != OC_STACK_OK)
     {
         OC_LOG_V(DEBUG, TAG, "Unable to parse uri: %s", requestUri);
@@ -2147,7 +2149,10 @@ OCStackResult OCDoResource(OCDoHandle *handle,
         {
             goto exit;
         }
-        OICFree(resourceUri);
+
+        // Assign full presence uri as coap://ip:port/oic/ad to add to callback list.
+        // Presence notification will form a canonical uri to
+        // look for callbacks into the application.
         resourceUri = presenceUri;
     }
     #endif
@@ -2413,6 +2418,7 @@ OCStackResult OCProcessPresence()
         requestData.type = CA_MSG_NONCONFIRM;
         requestData.token = cbNode->token;
         requestData.tokenLength = cbNode->tokenLength;
+        requestData.resourceUri = OC_PRESENCE_URI;
         requestInfo.method = CA_GET;
         requestInfo.info = requestData;
 
index 2032ca7..045f4df 100755 (executable)
@@ -111,7 +111,7 @@ namespace OC
     *  ModeType   : indicate whether we want to do server, client or both
     *  ServerConnectivity : default flags for server
     *  ClientConnectivity : default flags for client
-    *  QoS        : Quality of Service : CONFIRMABLE or NON CONFIRMABLE.
+    *  QoS       : indicate Quality of Service : LowQos, MidQos,HighQos and NaQos(No quality Defined).
     */
     struct PlatformConfig
     {
index 52ea2b7..4968d72 100644 (file)
@@ -816,7 +816,7 @@ namespace OC
         auto cLock = m_csdkLock.lock();
 
         std::ostringstream os;
-        os << host << "/oc/presence";
+        os << host << OC_PRESENCE_URI;;
 
         if(!resourceType.empty())
         {
index d4f65df..7731952 100644 (file)
@@ -560,8 +560,9 @@ namespace OC
                     static_cast<uint16_t>(it->getOptionID());
                 response.sendVendorSpecificHeaderOptions[i].optionLength =
                     (it->getOptionData()).length() + 1;
-                std::copy(it->getOptionData().begin(),
-                         it->getOptionData().end(),
+                std::string optionData = it->getOptionData();
+                std::copy(optionData.begin(),
+                         optionData.end(),
                          response.sendVendorSpecificHeaderOptions[i].optionData);
                 response.sendVendorSpecificHeaderOptions[i].optionData[it->getOptionData().length()]
                     = '\0';