Implement bt_device_get_service_mask_from_uuid_list 28/32728/1
authorwu zheng <wu.zheng@intel.com>
Tue, 23 Dec 2014 08:10:32 +0000 (16:10 +0800)
committerwu zheng <wu.zheng@intel.com>
Tue, 23 Dec 2014 08:10:32 +0000 (16:10 +0800)
bt_device_get_service_mask_from_uuid_list is the new CAPI.
It comes from Tizen2.3.

Some Marcos are not defined in the patch.
Later, the Marcos will be done in the next patch.

Change-Id: Ib7fdf4f6fdb465da9542aedd9eae6d1dc7db8a07
Signed-off-by: Wu Zheng <wu.zheng@intel.com>
capi/bluetooth.c
include/uuid.h [new file with mode: 0644]

index 4e41859fca1ed639ef327726778fb4ae54b38c2d..facf984f5e537bba237ebd61fbb57fb398013619 100644 (file)
@@ -26,6 +26,7 @@
 #include "common.h"
 #include "bluez.h"
 #include "bluetooth-service.h"
+#include "uuid.h"
 
 #include "bluetooth.h"
 
@@ -2051,7 +2052,121 @@ int bt_device_get_service_mask_from_uuid_list(char **uuids,
                                        int no_of_service,
                                        bt_service_class_t *service_mask_list)
 {
-       return BT_ERROR_NOT_SUPPORTED;
+       int i = 0;
+       char **parts = NULL;
+       bt_service_class_t service_mask = 0;
+
+       DBG("");
+
+       if (*uuids == NULL || service_mask_list == NULL)
+               return BT_ERROR_INVALID_PARAMETER;
+
+       DBG("no_of_service = %d", no_of_service);
+
+       for (i = 0; i < no_of_service; i++) {
+               parts = g_strsplit(uuids[i], "-", -1);
+               if (parts == NULL || parts[0] == NULL) {
+                       g_strfreev(parts);
+                       continue;
+               }
+
+               if (!g_strcmp0(SPP_PROFILE_UUID_HEAD, parts[0]))
+                       service_mask |= BT_SC_SPP_SERVICE_MASK;
+               else if (!g_strcmp0(LAP_PROFILE_UUID_HEAD, parts[0]))
+                       service_mask |= BT_SC_LAP_SERVICE_MASK;
+               else if (!g_strcmp0(DUN_PROFILE_UUID_HEAD, parts[0]))
+                       service_mask |= BT_SC_DUN_SERVICE_MASK;
+               else if (!g_strcmp0(OBEX_SYNC_SERVICE_UUID_HEAD, parts[0]))
+                       service_mask |= BT_SC_SYNC_SERVICE_MASK;
+               else if (!g_strcmp0(OBEX_PUSH_SERVICE_UUID_HEAD, parts[0]))
+                       service_mask |= BT_SC_OPP_SERVICE_MASK;
+               else if (!g_strcmp0(OBEX_FILE_TRANSFER_UUID_HEAD, parts[0]))
+                       service_mask |= BT_SC_FTP_SERVICE_MASK;
+               else if (!g_strcmp0(HS_PROFILE_UUID_HEAD, parts[0]))
+                       service_mask |= BT_SC_HSP_SERVICE_MASK;
+               else if (!g_strcmp0(CTP_PROFILE_UUID_HEAD, parts[0]))
+                       service_mask |= BT_SC_CTP_SERVICE_MASK;
+               else if (!g_strcmp0(AUDIO_SOURCE_UUID_HEAD, parts[0]))
+                       service_mask |= BT_SC_NONE;
+               else if (!g_strcmp0(AUDIO_SINK_UUID_HEAD, parts[0]))
+                       service_mask |= BT_SC_A2DP_SERVICE_MASK;
+               else if (!g_strcmp0(VIDEO_SOURCE_UUID_HEAD, parts[0]))
+                       service_mask |= BT_SC_NONE;
+               else if (!g_strcmp0(VIDEO_SINK_UUID_HEAD, parts[0]))
+                       service_mask |= BT_SC_NONE;
+               else if (!g_strcmp0(AV_REMOTE_CONTROL_TARGET_UUID_HEAD,
+                                                       parts[0]))
+                       service_mask |= BT_SC_NONE;
+               else if (!g_strcmp0(ADVANCED_AUDIO_PROFILE_UUID_HEAD,
+                                                       parts[0]))
+                       service_mask |= BT_SC_A2DP_SERVICE_MASK;
+               else if (!g_strcmp0(AV_REMOTE_CONTROL_UUID_HEAD,
+                                                       parts[0]))
+                       service_mask |= BT_SC_AVRCP_SERVICE_MASK;
+               else if (!g_strcmp0(ICP_PROFILE_UUID_HEAD, parts[0]))
+                       service_mask |= BT_SC_ICP_SERVICE_MASK;
+               else if (!g_strcmp0(FAX_PROFILE_UUID_HEAD, parts[0]))
+                       service_mask |= BT_SC_FAX_SERVICE_MASK;
+               else if (!g_strcmp0(HEADSET_AG_SERVICE_UUID_HEAD,
+                                                       parts[0]))
+                       service_mask |= BT_SC_NONE;
+               else if (!g_strcmp0(PAN_PANU_PROFILE_UUID_HEAD,
+                                                       parts[0]))
+                       service_mask |= BT_SC_PANU_SERVICE_MASK;
+               else if (!g_strcmp0(PAN_NAP_PROFILE_UUID_HEAD,
+                                                       parts[0]))
+                       service_mask |= BT_SC_NAP_SERVICE_MASK;
+               else if (!g_strcmp0(PAN_GN_PROFILE_UUID_HEAD,
+                                                       parts[0]))
+                       service_mask |= BT_SC_GN_SERVICE_MASK;
+               else if (!g_strcmp0(REFERENCE_PRINTING_HEAD,
+                                                       parts[0]))
+                       service_mask |= BT_SC_NONE;
+               else if (!g_strcmp0(OBEX_IMAGING_UUID_HEAD,
+                                                       parts[0]))
+                       service_mask |= BT_SC_NONE;
+               else if (!g_strcmp0(OBEX_IMAGING_RESPONDER_UUID_HEAD,
+                                                       parts[0]))
+                       service_mask |= BT_SC_BIP_SERVICE_MASK;
+               else if (!g_strcmp0(HF_PROFILE_UUID_HEAD, parts[0]))
+                       service_mask |= BT_SC_HFP_SERVICE_MASK;
+               else if (!g_strcmp0(HFG_PROFILE_UUID_HEAD, parts[0]))
+                       service_mask |= BT_SC_NONE;
+               else if (!g_strcmp0(
+                               DIRECT_PRINTING_REFERENCE_OBJ_UUID_HEAD,
+                                                       parts[0]))
+                       service_mask |= BT_SC_NONE;
+               else if (!g_strcmp0(BASIC_PRINTING_HEAD, parts[0]))
+                       service_mask |= BT_SC_NONE;
+               else if (!g_strcmp0(HID_PROFILE_UUID_HEAD, parts[0]))
+                       service_mask |= BT_SC_HID_SERVICE_MASK;
+               else if (!g_strcmp0(SIM_ACCESS_PROFILE_UUID_HEAD,
+                                                       parts[0]))
+                       service_mask |= BT_SC_SAP_SERVICE_MASK;
+               else if (!g_strcmp0(OBEX_PBAP_PROFILE_UUID_HEAD,
+                                                       parts[0]))
+                       service_mask |= BT_SC_PBAP_SERVICE_MASK;
+               else if (!g_strcmp0(OBEX_BPPS_PROFILE_UUID_HEAD,
+                                                       parts[0]))
+                       service_mask |= BT_SC_BPP_SERVICE_MASK;
+               else if (!g_strcmp0(PNP_INFORMATION_UUID_HEAD,
+                                                       parts[0]))
+                       service_mask |= BT_SC_NONE;
+               else if (!g_strcmp0(OBEX_PRINTING_STATUS_UUID_HEAD,
+                                                       parts[0]))
+                       service_mask |= BT_SC_BPP_SERVICE_MASK;
+               else if (!g_strcmp0(HCR_PROFILE_UUID_HEAD, parts[0]))
+                       service_mask |= BT_SC_NONE;
+               else if (!g_strcmp0(OBEX_SYNCML_TRANSFER_UUID_HEAD,
+                                                       parts[0]))
+                       service_mask |= BT_SC_NONE;
+
+               g_strfreev(parts);
+       }
+
+       *service_mask_list = service_mask;
+
+       return BT_ERROR_NONE;
 }
 
 static gboolean adapter_recover_timeout_cb(gpointer user_data)
diff --git a/include/uuid.h b/include/uuid.h
new file mode 100644 (file)
index 0000000..ed9b299
--- /dev/null
@@ -0,0 +1,42 @@
+#ifndef __BLUETOOTH_NTB_UUID_H
+#define __BLUETOOTH_NTB_UUID_H
+
+#define SPP_PROFILE_UUID_HEAD          "00001101"
+#define LAP_PROFILE_UUID_HEAD          ""
+#define OBEX_SYNC_SERVICE_UUID_HEAD            "00001104"
+#define OBEX_PUSH_SERVICE_UUID_HEAD            "00001105"
+#define OBEX_FILE_TRANSFER_UUID_HEAD           "00001106"
+
+#define DUN_PROFILE_UUID_HEAD          "00001103"
+#define HS_PROFILE_UUID_HEAD           "00001112"
+#define CTP_PROFILE_UUID_HEAD          ""
+#define AUDIO_SOURCE_UUID_HEAD         "0000110a"
+#define AUDIO_SINK_UUID_HEAD           "0000110b"
+#define VIDEO_SOURCE_UUID_HEAD         ""
+#define VIDEO_SINK_UUID_HEAD           ""
+#define AV_REMOTE_CONTROL_TARGET_UUID_HEAD             "0000110c"
+#define ADVANCED_AUDIO_PROFILE_UUID_HEAD               "0000110d"
+#define AV_REMOTE_CONTROL_UUID_HEAD            "0000110e"
+#define ICP_PROFILE_UUID_HEAD          ""
+#define FAX_PROFILE_UUID_HEAD          ""
+#define HEADSET_AG_SERVICE_UUID_HEAD           "00001112"
+#define PAN_PANU_PROFILE_UUID_HEAD             "00001115"
+#define PAN_NAP_PROFILE_UUID_HEAD              "00001116"
+#define PAN_GN_PROFILE_UUID_HEAD               "00001117"
+#define REFERENCE_PRINTING_HEAD                ""
+#define OBEX_IMAGING_UUID_HEAD         ""
+#define OBEX_IMAGING_RESPONDER_UUID_HEAD               ""
+#define HF_PROFILE_UUID_HEAD           "0000111e"
+#define HFG_PROFILE_UUID_HEAD  "0000111f"
+#define DIRECT_PRINTING_REFERENCE_OBJ_UUID_HEAD                ""
+#define BASIC_PRINTING_HEAD            ""
+#define HID_PROFILE_UUID_HEAD          "00001124"
+#define SIM_ACCESS_PROFILE_UUID_HEAD           "0000112D"
+#define OBEX_PBAP_PROFILE_UUID_HEAD            "00001130"
+#define OBEX_BPPS_PROFILE_UUID_HEAD            ""
+#define PNP_INFORMATION_UUID_HEAD              ""
+#define OBEX_PRINTING_STATUS_UUID_HEAD         ""
+#define HCR_PROFILE_UUID_HEAD          ""
+#define OBEX_SYNCML_TRANSFER_UUID_HEAD ""
+
+#endif