revise cumbersome structure that is a opaque type
[platform/core/connectivity/nfc-manager-neard.git] / common / net_nfc_util_handover.c
old mode 100644 (file)
new mode 100755 (executable)
index df44989..6cb978b
@@ -32,10 +32,23 @@ typedef struct _search_index
        void *found;
 } search_index;
 
+void net_nfc_convert_byte_order(unsigned char *array, int size)
+{
+       int i;
+       unsigned char tmp_char;
+
+       for (i=0;i<size/2;i++) {
+               tmp_char = array[i];
+               array[i] = array[size-1-i];
+               array[size-1-i] = tmp_char;
+       }
+}
+
+
 static int __property_equal_to(gconstpointer key1, gconstpointer key2)
 {
-       net_nfc_carrier_property_s *arg1 = (net_nfc_carrier_property_s *)key1;
-       net_nfc_carrier_property_s *arg2 = (net_nfc_carrier_property_s *)key2;
+       const net_nfc_carrier_property_s *arg1 = key1;
+       const net_nfc_carrier_property_s *arg2 = key2;
 
        if (arg1->attribute < arg2->attribute)
        {
@@ -69,8 +82,8 @@ static net_nfc_carrier_property_s *__find_property_by_attrubute(GList *list, uin
 
 static void __find_nth_group(gpointer data, gpointer user_data)
 {
-       net_nfc_carrier_property_s *info = (net_nfc_carrier_property_s *)data;
-       search_index *nth = (search_index *)user_data;
+       net_nfc_carrier_property_s *info = data;
+       search_index *nth = user_data;
 
        if (info == NULL || user_data == NULL)
                return;
@@ -87,19 +100,19 @@ static void __find_nth_group(gpointer data, gpointer user_data)
 
 static void __free_all_data(gpointer data, gpointer user_data)
 {
-       net_nfc_carrier_property_s *info = (net_nfc_carrier_property_s *)data;
+       net_nfc_carrier_property_s *info = data;
 
        if (info == NULL)
                return;
 
        if (info->is_group)
        {
-               DEBUG_MSG("FREE: group is found");
-               net_nfc_util_free_carrier_group((net_nfc_carrier_property_s *)info);
+               NFC_DBG("FREE: group is found");
+               net_nfc_util_free_carrier_group(info);
        }
        else
        {
-               DEBUG_MSG("FREE: element is found ATTRIB:0x%X length:%d", info->attribute, info->length);
+               NFC_DBG("FREE: element is found ATTRIB:0x%X length:%d", info->attribute, info->length);
                _net_nfc_util_free_mem(info->data);
                _net_nfc_util_free_mem(info);
        }
@@ -128,7 +141,7 @@ static net_nfc_error_e __net_nfc_util_create_connection_handover_collsion_resolu
        payload.buffer = rand_buffer;
        payload.length = 2;
 
-       DEBUG_MSG("rand number = [0x%x] [0x%x] => [0x%x]", payload.buffer[0], payload.buffer[1], random_num);
+       NFC_DBG("rand number = [0x%x] [0x%x] => [0x%x]", payload.buffer[0], payload.buffer[1], random_num);
 
        return net_nfc_util_create_record(NET_NFC_RECORD_WELL_KNOWN_TYPE, &typeName, NULL, &payload, record);
 }
@@ -184,11 +197,12 @@ net_nfc_error_e net_nfc_util_create_carrier_config(net_nfc_carrier_config_s **co
        return NET_NFC_OK;
 }
 
-net_nfc_error_e net_nfc_util_add_carrier_config_property(net_nfc_carrier_config_s *config, uint16_t attribute, uint16_t size, uint8_t * data)
+net_nfc_error_e net_nfc_util_add_carrier_config_property(
+               net_nfc_carrier_config_s *config, uint16_t attribute, uint16_t size, uint8_t *data)
 {
        net_nfc_carrier_property_s *elem = NULL;
 
-       DEBUG_MSG("ADD property: [ATTRIB:0x%X, SIZE:%d]", attribute, size);
+       NFC_DBG("ADD property: [ATTRIB:0x%X, SIZE:%d]", attribute, size);
 
        if (config == NULL || data == NULL)
        {
@@ -220,12 +234,13 @@ net_nfc_error_e net_nfc_util_add_carrier_config_property(net_nfc_carrier_config_
        config->data = g_list_append(config->data, elem);
        config->length += size + 2 * __net_nfc_get_size_of_attribute(attribute);
 
-       DEBUG_MSG("ADD completed total length %d", config->length);
+       NFC_DBG("ADD completed total length %d", config->length);
 
        return NET_NFC_OK;
 }
 
-net_nfc_error_e net_nfc_util_remove_carrier_config_property(net_nfc_carrier_config_s *config, uint16_t attribute)
+net_nfc_error_e net_nfc_util_remove_carrier_config_property(
+               net_nfc_carrier_config_s *config, uint16_t attribute)
 {
        net_nfc_carrier_property_s *elem = NULL;
 
@@ -245,7 +260,7 @@ net_nfc_error_e net_nfc_util_remove_carrier_config_property(net_nfc_carrier_conf
 
        if (elem->is_group)
        {
-               net_nfc_util_free_carrier_group((net_nfc_carrier_property_s *)elem);
+               net_nfc_util_free_carrier_group(elem);
        }
        else
        {
@@ -256,14 +271,16 @@ net_nfc_error_e net_nfc_util_remove_carrier_config_property(net_nfc_carrier_conf
        return NET_NFC_OK;
 }
 
-net_nfc_error_e net_nfc_util_get_carrier_config_property(net_nfc_carrier_config_s *config, uint16_t attribute, uint16_t * size, uint8_t ** data)
+net_nfc_error_e net_nfc_util_get_carrier_config_property(
+               net_nfc_carrier_config_s *config,
+               uint16_t attribute,
+               uint16_t *size,
+               uint8_t **data)
 {
        net_nfc_carrier_property_s *elem = NULL;
 
        if (config == NULL || size == NULL || data == NULL)
-       {
                return NET_NFC_NULL_PARAMETER;
-       }
 
        elem = __find_property_by_attrubute(config->data, attribute);
        if (elem == NULL)
@@ -275,35 +292,30 @@ net_nfc_error_e net_nfc_util_get_carrier_config_property(net_nfc_carrier_config_
 
        *size = elem->length;
        if (elem->is_group)
-       {
                *data = NULL;
-       }
        else
-       {
                *data = elem->data;
-       }
 
        return NET_NFC_OK;
 }
 
-net_nfc_error_e net_nfc_util_append_carrier_config_group(net_nfc_carrier_config_s *config, net_nfc_carrier_property_s *group)
+net_nfc_error_e net_nfc_util_append_carrier_config_group(
+               net_nfc_carrier_config_s *config, net_nfc_carrier_property_s *group)
 {
        if (config == NULL || group == NULL)
-       {
                return NET_NFC_NULL_PARAMETER;
-       }
+
        if (g_list_find(config->data, group) != NULL)
-       {
                return NET_NFC_ALREADY_REGISTERED;
-       }
 
        config->data = g_list_append(config->data, group);
-       config->length += group->length;
+       config->length += group->length+4;
 
        return NET_NFC_OK;
 }
 
-net_nfc_error_e net_nfc_util_remove_carrier_config_group(net_nfc_carrier_config_s *config, net_nfc_carrier_property_s *group)
+net_nfc_error_e net_nfc_util_remove_carrier_config_group(
+               net_nfc_carrier_config_s *config, net_nfc_carrier_property_s *group)
 {
        if (config == NULL || group == NULL)
        {
@@ -318,12 +330,13 @@ net_nfc_error_e net_nfc_util_remove_carrier_config_group(net_nfc_carrier_config_
        config->length -= group->length;
        config->data = g_list_remove(config->data, group);
 
-       net_nfc_util_free_carrier_group((net_nfc_carrier_property_s *)group);
+       net_nfc_util_free_carrier_group(group);
 
        return NET_NFC_OK;
 }
 
-net_nfc_error_e net_nfc_util_get_carrier_config_group(net_nfc_carrier_config_s *config, int index, net_nfc_carrier_property_s **group)
+net_nfc_error_e net_nfc_util_get_carrier_config_group(
+               net_nfc_carrier_config_s *config, int index, net_nfc_carrier_property_s **group)
 {
        search_index result;
 
@@ -367,7 +380,8 @@ net_nfc_error_e net_nfc_util_free_carrier_config(net_nfc_carrier_config_s *confi
        return NET_NFC_OK;
 }
 
-net_nfc_error_e net_nfc_util_create_carrier_config_group(net_nfc_carrier_property_s **group, uint16_t attribute)
+net_nfc_error_e net_nfc_util_create_carrier_config_group(
+               net_nfc_carrier_property_s **group, uint16_t attribute)
 {
        if (group == NULL)
        {
@@ -386,11 +400,12 @@ net_nfc_error_e net_nfc_util_create_carrier_config_group(net_nfc_carrier_propert
        return NET_NFC_OK;
 }
 
-net_nfc_error_e net_nfc_util_add_carrier_config_group_property(net_nfc_carrier_property_s *group, uint16_t attribute, uint16_t size, uint8_t *data)
+net_nfc_error_e net_nfc_util_add_carrier_config_group_property(
+               net_nfc_carrier_property_s *group, uint16_t attribute, uint16_t size, uint8_t *data)
 {
        net_nfc_carrier_property_s *elem = NULL;
 
-       DEBUG_MSG("ADD group property: [ATTRIB:0x%X, SIZE:%d]", attribute, size);
+       NFC_DBG("ADD group property: [ATTRIB:0x%X, SIZE:%d]", attribute, size);
 
        if (group == NULL || data == NULL)
        {
@@ -421,12 +436,16 @@ net_nfc_error_e net_nfc_util_add_carrier_config_group_property(net_nfc_carrier_p
        group->length += size + 2 * __net_nfc_get_size_of_attribute(attribute);
        group->data = g_list_append((GList *)(group->data), elem);
 
-       DEBUG_MSG("ADD group completed total length %d", group->length);
+       NFC_DBG("ADD group completed total length %d", group->length);
 
        return NET_NFC_OK;
 }
 
-net_nfc_error_e net_nfc_util_get_carrier_config_group_property(net_nfc_carrier_property_s *group, uint16_t attribute, uint16_t *size, uint8_t ** data)
+net_nfc_error_e net_nfc_util_get_carrier_config_group_property(
+               net_nfc_carrier_property_s *group,
+               uint16_t attribute,
+               uint16_t *size,
+               uint8_t **data)
 {
        net_nfc_carrier_property_s *elem = NULL;
 
@@ -449,7 +468,8 @@ net_nfc_error_e net_nfc_util_get_carrier_config_group_property(net_nfc_carrier_p
        return NET_NFC_OK;
 }
 
-net_nfc_error_e net_nfc_util_remove_carrier_config_group_property(net_nfc_carrier_property_s *group, uint16_t attribute)
+net_nfc_error_e net_nfc_util_remove_carrier_config_group_property(
+               net_nfc_carrier_property_s *group, uint16_t attribute)
 {
        net_nfc_carrier_property_s *elem = NULL;
 
@@ -489,8 +509,8 @@ net_nfc_error_e net_nfc_util_free_carrier_group(net_nfc_carrier_property_s *grou
 
 static void __make_serial_wifi(gpointer data, gpointer user_data)
 {
-       net_nfc_carrier_property_s *info = (net_nfc_carrier_property_s *)data;
-       data_s *payload = (data_s *)user_data;
+       net_nfc_carrier_property_s *info = data;
+       data_s *payload = user_data;
        uint8_t *current;
        int inc = 0;
 
@@ -502,17 +522,21 @@ static void __make_serial_wifi(gpointer data, gpointer user_data)
 
        if (info->is_group)
        {
-               DEBUG_MSG("[WIFI]Found Group make recursive");
+               NFC_DBG("[WIFI]Found Group make recursive");
                *(uint16_t *)current = info->attribute;
+               net_nfc_convert_byte_order(current,2);
                *(uint16_t *)(current + inc) = info->length;
+               net_nfc_convert_byte_order((current + inc),2);
                payload->length += (inc + inc);
                g_list_foreach((GList *)info->data, __make_serial_wifi, payload);
        }
        else
        {
-               DEBUG_MSG("[WIFI]Element is found attrib:0x%X length:%d current:%d", info->attribute, info->length, payload->length);
+               NFC_DBG("[WIFI]Element is found attrib:0x%X length:%d current:%d", info->attribute, info->length, payload->length);
                *(uint16_t *)current = info->attribute;
+               net_nfc_convert_byte_order(current,2);
                *(uint16_t *)(current + inc) = info->length;
+               net_nfc_convert_byte_order((current + inc),2);
                memcpy(current + inc + inc, info->data, info->length);
                payload->length += (inc + inc + info->length);
        }
@@ -520,8 +544,8 @@ static void __make_serial_wifi(gpointer data, gpointer user_data)
 
 static void __make_serial_bt(gpointer data, gpointer user_data)
 {
-       net_nfc_carrier_property_s *info = (net_nfc_carrier_property_s *)data;
-       data_s *payload = (data_s *)user_data;
+       net_nfc_carrier_property_s *info = data;
+       data_s *payload = user_data;
        uint8_t *current;
        int inc = 0;
 
@@ -532,14 +556,14 @@ static void __make_serial_bt(gpointer data, gpointer user_data)
 
        if (info->is_group)
        {
-               DEBUG_MSG("[BT]Found Group. call recursive");
+               NFC_DBG("[BT]Found Group. call recursive");
                g_list_foreach((GList *)info->data, __make_serial_bt, payload);
        }
        else
        {
                if (info->attribute != NET_NFC_BT_ATTRIBUTE_ADDRESS)
                {
-                       DEBUG_MSG("[BT]Element is found attrib:0x%X length:%d current:%d", info->attribute, info->length, payload->length);
+                       NFC_DBG("[BT]Element is found attrib:0x%X length:%d current:%d", info->attribute, info->length, payload->length);
                        inc = __net_nfc_get_size_of_attribute(info->attribute);
                        *current = info->length + 1;
                        *(current + inc) = info->attribute;
@@ -548,14 +572,15 @@ static void __make_serial_bt(gpointer data, gpointer user_data)
                }
                else
                {
-                       DEBUG_MSG("[BT]BT address is found length:%d", info->length);
+                       NFC_DBG("[BT]BT address is found length:%d", info->length);
                        memcpy(current, info->data, info->length);
                        payload->length += (info->length);
                }
        }
 }
 
-net_nfc_error_e net_nfc_util_create_ndef_record_with_carrier_config(ndef_record_s **record, net_nfc_carrier_config_s *config)
+net_nfc_error_e net_nfc_util_create_ndef_record_with_carrier_config(
+               ndef_record_s **record, net_nfc_carrier_config_s *config)
 {
        data_s payload = { NULL, 0 };
        data_s record_type = { NULL, 0 };
@@ -600,7 +625,7 @@ net_nfc_error_e net_nfc_util_create_ndef_record_with_carrier_config(ndef_record_
                return NET_NFC_NOT_SUPPORTED;
        }
 
-       DEBUG_MSG("payload length = %d", payload.length);
+       NFC_DBG("payload length = %d", payload.length);
 
        return net_nfc_util_create_record(NET_NFC_RECORD_MIME_TYPE, &record_type, NULL, &payload, record);
 }
@@ -702,7 +727,8 @@ net_nfc_error_e __net_nfc_get_list_from_serial_for_bt(GList **list, uint8_t *dat
        return NET_NFC_OK;
 }
 
-net_nfc_error_e net_nfc_util_create_carrier_config_from_config_record(net_nfc_carrier_config_s **config, ndef_record_s *record)
+net_nfc_error_e net_nfc_util_create_carrier_config_from_config_record(
+               net_nfc_carrier_config_s **config, ndef_record_s *record)
 {
        net_nfc_error_e result = NET_NFC_OK;
        net_nfc_conn_handover_carrier_type_e type;
@@ -726,7 +752,7 @@ net_nfc_error_e net_nfc_util_create_carrier_config_from_config_record(net_nfc_ca
        }
        else
        {
-               DEBUG_MSG("Record type is not config type");
+               NFC_DBG("Record type is not config type");
                return NET_NFC_INVALID_FORMAT;
        }
 
@@ -873,6 +899,43 @@ net_nfc_error_e net_nfc_util_create_handover_select_message(ndef_message_s **mes
        return NET_NFC_OK;
 }
 
+net_nfc_error_e net_nfc_util_create_handover_carrier_record(ndef_record_s ** record)
+{
+       data_s payload = {NULL,0};
+
+       data_s type = { NULL, 0 };
+       uint8_t *buffer_ptr = NULL;
+
+       _net_nfc_util_alloc_mem(payload.buffer,26);//hardcoded as of now
+       if (payload.buffer == NULL)
+               return NET_NFC_ALLOC_FAIL;
+
+       buffer_ptr = payload.buffer;
+
+       //copy ctf
+       buffer_ptr[0]= NET_NFC_RECORD_MIME_TYPE;
+
+       //copy the MIME type length
+       buffer_ptr[1] = strlen(CONN_HANDOVER_WIFI_BSS_CARRIER_MIME_NAME);
+
+       //copy the MIME
+       memcpy(&buffer_ptr[2],CONN_HANDOVER_WIFI_BSS_CARRIER_MIME_NAME,(payload.buffer)[1]);
+       payload.buffer[25] = '\0';
+
+       payload.length =26;
+       type.buffer = (uint8_t *)CH_CAR_RECORD_TYPE;
+       type.length = strlen(CH_CAR_RECORD_TYPE);
+
+       net_nfc_util_create_record(NET_NFC_RECORD_WELL_KNOWN_TYPE,
+                       &type,
+                       NULL,
+                       &payload,
+                       (ndef_record_s **)record);
+
+       _net_nfc_util_free_mem(payload.buffer);
+
+       return NET_NFC_OK;
+}
 net_nfc_error_e net_nfc_util_create_handover_error_record(ndef_record_s **record, uint8_t reason, uint32_t data)
 {
        data_s type;
@@ -966,7 +1029,7 @@ static net_nfc_error_e __net_nfc_replace_inner_message(ndef_message_s *message,
        if (inner_record == NULL)
        {
                // This message is not connection handover message
-               DEBUG_ERR_MSG("inner_record == NULL");
+               NFC_ERR("inner_record == NULL");
                return NET_NFC_INVALID_FORMAT;
        }
 
@@ -974,7 +1037,7 @@ static net_nfc_error_e __net_nfc_replace_inner_message(ndef_message_s *message,
                        && strncmp((char *)(inner_record->type_s.buffer), CH_SEL_RECORD_TYPE, (size_t)(inner_record->type_s.length)) != 0)
        {
                // This message is not connection handover message
-               DEBUG_ERR_MSG("unknown type [%s]", inner_record->type_s.buffer);
+               NFC_ERR("unknown type [%s]", inner_record->type_s.buffer);
                return NET_NFC_INVALID_FORMAT;
        }
 
@@ -1006,13 +1069,13 @@ static net_nfc_error_e __net_nfc_replace_inner_message(ndef_message_s *message,
                }
                else
                {
-                       DEBUG_ERR_MSG("net_nfc_util_convert_ndef_message_to_rawdata failed [%d]", error);
+                       NFC_ERR("net_nfc_util_convert_ndef_message_to_rawdata failed [%d]", error);
                        _net_nfc_util_free_mem(tdata.buffer);
                }
        }
        else
        {
-               DEBUG_ERR_MSG("inner_record->payload_s.length(%d) < 1 ", inner_record->payload_s.length);
+               NFC_ERR("inner_record->payload_s.length(%d) < 1 ", inner_record->payload_s.length);
                error = NET_NFC_INVALID_FORMAT;
        }
 
@@ -1041,7 +1104,7 @@ net_nfc_error_e net_nfc_util_append_carrier_config_record(ndef_message_s *messag
 
        if ((error = net_nfc_util_create_ndef_message(&inner_msg)) != NET_NFC_OK)
        {
-               DEBUG_ERR_MSG("net_nfc_util_create_ndef_message failed [%d]", error);
+               NFC_ERR("net_nfc_util_create_ndef_message failed [%d]", error);
 
                return error;
        }
@@ -1072,7 +1135,7 @@ net_nfc_error_e net_nfc_util_append_carrier_config_record(ndef_message_s *messag
                if (message->records != NULL &&
                                memcmp((char *)message->records->type_s.buffer, CH_SEL_RECORD_TYPE, (size_t)message->records->type_s.length) != 0)
                {
-                       DEBUG_ERR_MSG("ERROR [%d]", error);
+                       NFC_ERR("ERROR [%d]", error);
 
                        net_nfc_util_free_ndef_message(inner_msg);
 
@@ -1114,7 +1177,7 @@ net_nfc_error_e net_nfc_util_append_carrier_config_record(ndef_message_s *messag
        error = net_nfc_util_create_record(NET_NFC_RECORD_WELL_KNOWN_TYPE, &type, NULL, &payload, &carrier_rec);
        if (error != NET_NFC_OK)
        {
-               DEBUG_ERR_MSG("net_nfc_util_create_record failed [%d]", error);
+               NFC_ERR("net_nfc_util_create_record failed [%d]", error);
 
                net_nfc_util_free_ndef_message(inner_msg);
 
@@ -1124,7 +1187,7 @@ net_nfc_error_e net_nfc_util_append_carrier_config_record(ndef_message_s *messag
        error = net_nfc_util_append_record(inner_msg, carrier_rec);
        if (error != NET_NFC_OK)
        {
-               DEBUG_ERR_MSG("net_nfc_util_create_record failed [%d]", error);
+               NFC_ERR("net_nfc_util_create_record failed [%d]", error);
 
                net_nfc_util_free_record(carrier_rec);
                net_nfc_util_free_ndef_message(inner_msg);
@@ -1136,7 +1199,7 @@ net_nfc_error_e net_nfc_util_append_carrier_config_record(ndef_message_s *messag
        net_nfc_util_free_ndef_message(inner_msg);
        if (error != NET_NFC_OK)
        {
-               DEBUG_ERR_MSG("__net_nfc_replace_inner_message failed [%d]", error);
+               NFC_ERR("__net_nfc_replace_inner_message failed [%d]", error);
 
                return error;
        }
@@ -1145,7 +1208,7 @@ net_nfc_error_e net_nfc_util_append_carrier_config_record(ndef_message_s *messag
        error = net_nfc_util_set_record_id((ndef_record_s *)record, &id, sizeof(id));
        if (error != NET_NFC_OK)
        {
-               DEBUG_ERR_MSG("net_nfc_util_set_record_id failed [%d]", error);
+               NFC_ERR("net_nfc_util_set_record_id failed [%d]", error);
 
                return error;
        }
@@ -1153,7 +1216,7 @@ net_nfc_error_e net_nfc_util_append_carrier_config_record(ndef_message_s *messag
        error = net_nfc_util_append_record(message, (ndef_record_s *)record);
        if (error != NET_NFC_OK)
        {
-               DEBUG_ERR_MSG("net_nfc_util_append_record failed [%d]", error);
+               NFC_ERR("net_nfc_util_append_record failed [%d]", error);
 
                return error;
        }
@@ -1188,7 +1251,7 @@ net_nfc_error_e net_nfc_util_remove_carrier_config_record(ndef_message_s *messag
 
        if (current == NULL || idx == message->recordCount)
        {
-               DEBUG_MSG("The reference is not found in config records");
+               NFC_DBG("The reference is not found in config records");
 
                return NET_NFC_NO_DATA_FOUND;
        }
@@ -1196,7 +1259,7 @@ net_nfc_error_e net_nfc_util_remove_carrier_config_record(ndef_message_s *messag
 
        if ((error = net_nfc_util_create_ndef_message(&inner_msg)) != NET_NFC_OK)
        {
-               DEBUG_MSG("net_nfc_util_create_ndef_message failed [%d]", error);
+               NFC_DBG("net_nfc_util_create_ndef_message failed [%d]", error);
 
                return error;
        }
@@ -1220,7 +1283,7 @@ net_nfc_error_e net_nfc_util_remove_carrier_config_record(ndef_message_s *messag
 
                if (current == NULL || idx == message->recordCount)
                {
-                       DEBUG_MSG("The reference is not found in inner message");
+                       NFC_DBG("The reference is not found in inner message");
 
                        error = NET_NFC_NO_DATA_FOUND;
                }
@@ -1255,7 +1318,7 @@ net_nfc_error_e net_nfc_util_get_carrier_config_record(ndef_message_s *message,
 
        if ((error = net_nfc_util_create_ndef_message(&inner_msg)) != NET_NFC_OK)
        {
-               DEBUG_MSG("net_nfc_util_create_ndef_message failed [%d]", error);
+               NFC_DBG("net_nfc_util_create_ndef_message failed [%d]", error);
 
                return error;
        }
@@ -1276,7 +1339,7 @@ net_nfc_error_e net_nfc_util_get_carrier_config_record(ndef_message_s *message,
 
                if (current == NULL || idx == message->recordCount)
                {
-                       DEBUG_MSG("The reference is not found in inner message");
+                       NFC_DBG("The reference is not found in inner message");
 
                        error = NET_NFC_NO_DATA_FOUND;
                }
@@ -1307,7 +1370,7 @@ net_nfc_error_e net_nfc_util_get_handover_random_number(ndef_message_s *message,
 
        if ((error = net_nfc_util_create_ndef_message(&inner_msg)) != NET_NFC_OK)
        {
-               DEBUG_MSG("net_nfc_util_create_ndef_message failed [%d]", error);
+               NFC_DBG("net_nfc_util_create_ndef_message failed [%d]", error);
 
                return error;
        }
@@ -1318,7 +1381,7 @@ net_nfc_error_e net_nfc_util_get_handover_random_number(ndef_message_s *message,
                if (strncmp((char*)cr_record->type_s.buffer, COLLISION_DETECT_RECORD_TYPE, (size_t)cr_record->type_s.length) != 0
                                || cr_record->payload_s.length < 2)
                {
-                       DEBUG_MSG("There is no Collision resolution record");
+                       NFC_DBG("There is no Collision resolution record");
 
                        error = NET_NFC_INVALID_FORMAT;
                }
@@ -1347,7 +1410,7 @@ net_nfc_error_e net_nfc_util_get_alternative_carrier_record_count(ndef_message_s
 
        if ((error = net_nfc_util_create_ndef_message(&inner_msg)) != NET_NFC_OK)
        {
-               DEBUG_MSG("net_nfc_util_create_ndef_message failed [%d]", error);
+               NFC_DBG("net_nfc_util_create_ndef_message failed [%d]", error);
 
                return error;
        }
@@ -1392,7 +1455,7 @@ net_nfc_error_e net_nfc_util_get_alternative_carrier_power_status(ndef_message_s
 
        if ((error = net_nfc_util_create_ndef_message(&inner_msg)) != NET_NFC_OK)
        {
-               DEBUG_MSG("net_nfc_util_create_ndef_message failed [%d]", error);
+               NFC_DBG("net_nfc_util_create_ndef_message failed [%d]", error);
 
                return error;
        }
@@ -1438,7 +1501,7 @@ net_nfc_error_e net_nfc_util_set_alternative_carrier_power_status(ndef_message_s
 
        if ((error = net_nfc_util_create_ndef_message(&inner_msg)) != NET_NFC_OK)
        {
-               DEBUG_MSG("net_nfc_util_create_ndef_message failed [%d]", error);
+               NFC_DBG("net_nfc_util_create_ndef_message failed [%d]", error);
 
                return error;
        }
@@ -1474,47 +1537,98 @@ net_nfc_error_e net_nfc_util_set_alternative_carrier_power_status(ndef_message_s
 
 net_nfc_error_e net_nfc_util_get_alternative_carrier_type_from_record(ndef_record_s *record, net_nfc_conn_handover_carrier_type_e *type)
 {
-       if (strncmp((char *)record->type_s.buffer, CONN_HANDOVER_BT_CARRIER_MIME_NAME, (size_t)record->type_s.length) == 0)
+       if(strncmp((char*)record->type_s.buffer, CH_CAR_RECORD_TYPE, (size_t)record->type_s.length) == 0)
        {
-               *type = NET_NFC_CONN_HANDOVER_CARRIER_BT;
-       }
-       else if (strncmp((char *)record->type_s.buffer, CONN_HANDOVER_WIFI_BSS_CARRIER_MIME_NAME, (size_t)record->type_s.length) == 0)
-       {
-               *type = NET_NFC_CONN_HANDOVER_CARRIER_WIFI_BSS;
-       }
-       else if (strncmp((char *)record->type_s.buffer, CONN_HANDOVER_WIFI_IBSS_CARRIER_MIME_NAME, (size_t)record->type_s.length) == 0)
-       {
-               *type = NET_NFC_CONN_HANDOVER_CARRIER_WIFI_IBSS;
+               NFC_DBG("CH_CAR_RECORD_TYPE");
+
+               char ctf = record->payload_s.buffer[0] & 0x07;
+               char ctype_length = record->payload_s.buffer[1];
+               switch(ctf)
+               {
+               case NET_NFC_RECORD_MIME_TYPE:          /* Media Type as defined in [RFC 2046] */
+                       if (strncmp((char *)&record->payload_s.buffer[2],
+                                               CONN_HANDOVER_BT_CARRIER_MIME_NAME,
+                                               (size_t)ctype_length) == 0)
+                       {
+                               *type = NET_NFC_CONN_HANDOVER_CARRIER_BT;
+                       }
+                       else if (strncmp((char *)&record->payload_s.buffer[2],
+                                               CONN_HANDOVER_WIFI_BSS_CARRIER_MIME_NAME,
+                                               (size_t)ctype_length) == 0)
+                       {
+                               *type = NET_NFC_CONN_HANDOVER_CARRIER_WIFI_BSS;
+                       }
+                       else if (strncmp((char *)&record->payload_s.buffer[2],
+                                               CONN_HANDOVER_WIFI_IBSS_CARRIER_MIME_NAME,
+                                               (size_t)ctype_length) == 0)
+                       {
+                               *type = NET_NFC_CONN_HANDOVER_CARRIER_WIFI_IBSS;
+                       }
+                       else
+                       {
+                               *type = NET_NFC_CONN_HANDOVER_CARRIER_UNKNOWN;
+                       }
+                       break;
+               case NET_NFC_RECORD_WELL_KNOWN_TYPE:    /* NFC Forum Well-known Type*/
+               case NET_NFC_RECORD_URI:                                /* Absolute URIs as defined in [RFC 3986] */
+               case NET_NFC_RECORD_EXTERNAL_RTD:               /* NFC Forum external type */
+               default:
+                       *type = NET_NFC_CONN_HANDOVER_CARRIER_UNKNOWN;
+                       break;
+               }
+
        }
        else
        {
-               *type = NET_NFC_CONN_HANDOVER_CARRIER_UNKNOWN;
+               NFC_DBG("Other record type");
+               if (strncmp((char *)record->type_s.buffer, CONN_HANDOVER_BT_CARRIER_MIME_NAME,
+                                       (size_t)record->type_s.length) == 0)
+               {
+                       *type = NET_NFC_CONN_HANDOVER_CARRIER_BT;
+               }
+               else if (strncmp((char *)record->type_s.buffer,
+                                       CONN_HANDOVER_WIFI_BSS_CARRIER_MIME_NAME,
+                                       (size_t)record->type_s.length) == 0)
+               {
+                       *type = NET_NFC_CONN_HANDOVER_CARRIER_WIFI_BSS;
+               }
+               else if (strncmp((char *)record->type_s.buffer,
+                                       CONN_HANDOVER_WIFI_IBSS_CARRIER_MIME_NAME,
+                                       (size_t)record->type_s.length) == 0)
+               {
+                       *type = NET_NFC_CONN_HANDOVER_CARRIER_WIFI_IBSS;
+               }
+               else
+               {
+                       *type = NET_NFC_CONN_HANDOVER_CARRIER_UNKNOWN;
+               }
        }
-
        return NET_NFC_OK;
 }
 
-net_nfc_error_e net_nfc_util_get_alternative_carrier_type(ndef_message_s *message, int index, net_nfc_conn_handover_carrier_type_e *type)
+net_nfc_error_e net_nfc_util_get_alternative_carrier_type(ndef_message_s *message,
+               int index, net_nfc_conn_handover_carrier_type_e *type)
 {
        ndef_record_s *record = NULL;
-       net_nfc_error_e error;
+       net_nfc_error_e ret;
 
-       error = net_nfc_util_get_carrier_config_record(message, index, (ndef_record_s **)&record);
-       if (error != NET_NFC_OK)
-       {
-               return error;
-       }
+       ret = net_nfc_util_get_carrier_config_record(message, index, &record);
+       if (ret != NET_NFC_OK)
+               return ret;
 
        return net_nfc_util_get_alternative_carrier_type_from_record(record, type);
 }
 
-net_nfc_error_e net_nfc_util_get_selector_power_status(ndef_message_s *message, net_nfc_conn_handover_carrier_state_e *power_state)
+net_nfc_error_e net_nfc_util_get_selector_power_status(ndef_message_s *message,
+               net_nfc_conn_handover_carrier_state_e *power_state)
 {
        net_nfc_error_e error;
        ndef_message_s *inner_msg = NULL;
        ndef_record_s *current = NULL;
        int idx;
-       net_nfc_conn_handover_carrier_state_e selector_state = NET_NFC_CONN_HANDOVER_CARRIER_INACTIVATE;
+       net_nfc_conn_handover_carrier_state_e selector_state;
+
+       selector_state = NET_NFC_CONN_HANDOVER_CARRIER_INACTIVATE;
 
        if (message == NULL)
        {
@@ -1530,7 +1644,8 @@ net_nfc_error_e net_nfc_util_get_selector_power_status(ndef_message_s *message,
                                current = inner_msg->records;
                                for (idx = 0; idx < inner_msg->recordCount; idx++)
                                {
-                                       if (strncmp((char *)current->type_s.buffer, ALTERNATIVE_RECORD_TYPE, (size_t)current->type_s.length) == 0)
+                                       if (strncmp((char *)current->type_s.buffer, ALTERNATIVE_RECORD_TYPE,
+                                                               (size_t)current->type_s.length) == 0)
                                        {
                                                if (((current->payload_s.buffer[0] & 0x3) == NET_NFC_CONN_HANDOVER_CARRIER_ACTIVATE) || ((current->payload_s.buffer[0] & 0x3) == NET_NFC_CONN_HANDOVER_CARRIER_ACTIVATING))
                                                {
@@ -1551,14 +1666,14 @@ net_nfc_error_e net_nfc_util_get_selector_power_status(ndef_message_s *message,
                }
                else
                {
-                       DEBUG_ERR_MSG("_net_nfc_util_create_ndef_message failed [%d]", error);
+                       NFC_ERR("_net_nfc_util_create_ndef_message failed [%d]", error);
                }
 
                net_nfc_util_free_ndef_message(inner_msg);
        }
        else
        {
-               DEBUG_ERR_MSG("_net_nfc_util_create_ndef_message failed [%d]", error);
+               NFC_ERR("_net_nfc_util_create_ndef_message failed [%d]", error);
                error = NET_NFC_ALLOC_FAIL;
        }