X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=common%2Fnet_nfc_util_handover.c;h=6cb978b708170f3787722102d3b1a63798b2c5d3;hb=362668744341bc7db7070d22cfa07e6ed5e4781f;hp=2885d08aa408602322b83002bee0e81f88c26541;hpb=df2fac2b5970b47b8fd68fdbc320fc599de45329;p=platform%2Fcore%2Fconnectivity%2Fnfc-manager-neard.git diff --git a/common/net_nfc_util_handover.c b/common/net_nfc_util_handover.c old mode 100644 new mode 100755 index 2885d08..6cb978b --- a/common/net_nfc_util_handover.c +++ b/common/net_nfc_util_handover.c @@ -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;iattribute < 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 { @@ -257,7 +272,10 @@ net_nfc_error_e net_nfc_util_remove_carrier_config_property(net_nfc_carrier_conf } 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_config_s *config, + uint16_t attribute, + uint16_t *size, + uint8_t **data) { net_nfc_carrier_property_s *elem = NULL; @@ -291,12 +309,13 @@ net_nfc_error_e net_nfc_util_append_carrier_config_group( 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) { @@ -311,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; @@ -360,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) { @@ -379,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) { @@ -414,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; @@ -442,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; @@ -482,7 +509,7 @@ 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; + net_nfc_carrier_property_s *info = data; data_s *payload = user_data; uint8_t *current; int inc = 0; @@ -495,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); } @@ -513,7 +544,7 @@ 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; + net_nfc_carrier_property_s *info = data; data_s *payload = user_data; uint8_t *current; int inc = 0; @@ -525,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; @@ -541,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 }; @@ -593,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); } @@ -695,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; @@ -719,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; } @@ -866,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; @@ -959,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; } @@ -967,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; } @@ -999,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; } @@ -1034,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; } @@ -1065,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); @@ -1107,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); @@ -1117,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); @@ -1129,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; } @@ -1138,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; } @@ -1146,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; } @@ -1181,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; } @@ -1189,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; } @@ -1213,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; } @@ -1248,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; } @@ -1269,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; } @@ -1300,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; } @@ -1311,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; } @@ -1340,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; } @@ -1385,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; } @@ -1431,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; } @@ -1467,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) - { - *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) + if(strncmp((char*)record->type_s.buffer, CH_CAR_RECORD_TYPE, (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) { @@ -1523,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)) { @@ -1544,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; }