2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
17 // @file FNetBt_BluetoothAdapterUtility.cpp
18 // @brief This is the implementation file for the _BluetoothAdapterUtility class.
21 #include <unique_ptr.h>
22 #include <FBaseColAllElementsDeleter.h>
23 #include <FBaseByteBuffer.h>
24 #include <FBaseUuId.h>
25 #include <FBaseInteger.h>
26 #include <FBaseSysLog.h>
27 #include <FBaseLong.h>
28 #include <FBaseColHashMap.h>
29 #include <FBaseUtilStringUtil.h>
30 #include <FNetBtBluetoothDevice.h>
31 #include <FNetBtBluetoothTypes.h>
32 #include <FNetBtBluetoothDevice.h>
33 #include <FBase_StringConverter.h>
34 #include <FNetBt_BluetoothDeviceImpl.h>
35 #include "FNetBt_BluetoothAdapterUtility.h"
38 using namespace Tizen::Base;
39 using namespace Tizen::Base::Collection;
40 using namespace Tizen::Base::Utility;
43 namespace Tizen { namespace Net { namespace Bluetooth
45 class _BluetoothUuidMap;
47 static _BluetoothUuidMap* pMapSingleton = null;
50 * @class _BluetoothUuidMap
51 * @brief The _BluetoothUuidMap class provides the method which converts UUID string to the long type value of
52 * BluetoothServiceType defined "FNetBtBluetoothTypes.h".
54 class _BluetoothUuidMap
55 : public Tizen::Base::Object
58 _BluetoothUuidMap(void) {}
60 virtual ~_BluetoothUuidMap(void)
62 //Clear all entries in the map
63 (void) __uuidMap.RemoveAll(true);
66 static _BluetoothUuidMap* GetInstance(void)
68 static _BluetoothUuidMap uuidMap;
70 // TODO: this singleton pattern to use a local static instance is not thread-safe.
73 if (uuidMap.Initialise() == E_SUCCESS)
75 pMapSingleton = &uuidMap;
82 long GetUuidLong(const Tizen::Base::String& uuidString) const
85 UuId::Parse(uuidString, uuid);
86 const Long* pUuidLongValue = null;
88 pUuidLongValue = dynamic_cast<const Long*> (__uuidMap.GetValue(uuid));
89 SysTryReturn(NID_NET_BT, pUuidLongValue != null, 0, E_SYSTEM,
90 "Getting UUID(%ls) value from <UUID string, UUID enum type> map has failed.", uuidString.GetPointer());
92 return pUuidLongValue->ToLong();
96 _BluetoothUuidMap(const _BluetoothUuidMap& value);
97 _BluetoothUuidMap& operator =(const _BluetoothUuidMap& value);
99 result Initialise(void)
101 result r = E_SUCCESS;
103 r = __uuidMap.Construct();
104 SysTryReturnResult(NID_NET_BT, r == E_SUCCESS, E_SYSTEM, "Construction of <UUID string, UUID enum type> map has failed.");
106 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_SPP)), *(new Long((long)(BT_SVC_SPP_SERVICE))));
107 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_LAP)), *(new Long((long) BT_SVC_LAP_SERVICE)));
108 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_DUN)), *(new Long((long) BT_SVC_DUN_SERVICE)));
109 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_SYNC)), *(new Long((long) BT_SVC_SYNC_SERVICE)));
110 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_OPP)), *(new Long((long) BT_SVC_OPP_SERVICE)));
111 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_FTP)), *(new Long((long) BT_SVC_FTP_SERVICE)));
112 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_SYNC_COMMAND)), *(new Long((long) BT_SVC_SYNC_SERVICE)));
113 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_HSP)), *(new Long((long) BT_SVC_HSP_SERVICE)));
114 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_CTP)), *(new Long((long) BT_SVC_CTP_SERVICE)));
115 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_A2DP_SOURCE)), *(new Long((long) BT_SVC_A2DP_SERVICE)));
116 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_A2DP_SINK)), *(new Long((long) BT_SVC_A2DP_SERVICE)));
117 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_AVRCP_TARGET)), *(new Long((long) BT_SVC_AVRCP_SERVICE)));
118 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_A2DP)), *(new Long((long) BT_SVC_A2DP_SERVICE)));
119 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_AVRCP)), *(new Long((long) BT_SVC_AVRCP_SERVICE)));
120 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_AVRCP_CONTROLLER)), *(new Long((long) BT_SVC_AVRCP_SERVICE)));
121 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_ICP)), *(new Long((long) BT_SVC_ICP_SERVICE)));
122 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_FAX)), *(new Long((long) BT_SVC_FAX_SERVICE)));
123 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_HSP_AG)), *(new Long((long) BT_SVC_HSP_SERVICE)));
124 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_PAN_PANU)), *(new Long((long) BT_SVC_PANU_SERVICE)));
125 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_PAN_NAP)), *(new Long((long) BT_SVC_NAP_SERVICE)));
126 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_PAN_GN)), *(new Long((long) BT_SVC_GN_SERVICE)));
127 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_BPP_DIRECT_PRINTING)), *(new Long((long) BT_SVC_BPP_SERVICE)));
128 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_BPP_REFERENCE_PRINTING)), *(new Long((long) BT_SVC_BPP_SERVICE)));
129 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_BIP)), *(new Long((long) BT_SVC_BIP_SERVICE)));
130 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_BIP_RESPONDER)), *(new Long((long) BT_SVC_BIP_SERVICE)));
131 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_BIP_AUTOMATIC_ARCHIVE)), *(new Long((long) BT_SVC_BIP_SERVICE)));
132 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_BIP_REFERENCED_OBJECTS)), *(new Long((long) BT_SVC_BIP_SERVICE)));
133 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_HFP)), *(new Long((long) BT_SVC_HFP_HS_SERVICE)));
134 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_HFP_AG)), *(new Long((long) BT_SVC_HFP_SERVICE)));
135 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_BPP_DIRECT_PRINTING_RO)), *(new Long((long) BT_SVC_BPP_SERVICE)));
136 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_BPP_REFLECTED_UI)), *(new Long((long) BT_SVC_BPP_SERVICE)));
137 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_BPP_BASIC_PRINTING)), *(new Long((long) BT_SVC_BPP_SERVICE)));
138 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_BPP_PRINTING_STATUS)), *(new Long((long) BT_SVC_BPP_SERVICE)));
139 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_HID)), *(new Long((long) BT_SVC_HID_SERVICE)));
140 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_HCRP)), *(new Long((long) BT_SVC_HCRP_SERVICE)));
141 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_HCRP_PRINT)), *(new Long((long) BT_SVC_HCRP_SERVICE)));
142 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_HCRP_SCAN)), *(new Long((long) BT_SVC_HCRP_SERVICE)));
143 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_SAP)), *(new Long((long) BT_SVC_SAP_SERVICE)));
144 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_PBAP_PCE)), *(new Long((long) BT_SVC_PBAP_SERVICE)));
145 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_PBAP_PSE)), *(new Long((long) BT_SVC_PBAP_SERVICE)));
146 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_PBAP)), *(new Long((long) BT_SVC_PBAP_SERVICE)));
147 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_HSP_HS)), *(new Long((long) BT_SVC_HSP_HS_SERVICE)));
148 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_MAP_ACCESS_SERVER)), *(new Long((long) BT_SVC_MAP_SERVICE)));
149 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_MAP_NOTIFICATION_SERVER)), *(new Long((long) BT_SVC_MAP_SERVICE)));
150 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_MAP_ACCESS_PROFILE)), *(new Long((long) BT_SVC_MAP_SERVICE)));
151 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_DID_PNP_INFORMATION)), *(new Long((long) BT_SVC_DID_SERVICE)));
152 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_GENERIC_NETWORKING)), *(new Long((long) BT_SVC_NONE)));
153 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_GENERIC_FILE_TRANSFER)), *(new Long((long) BT_SVC_NONE)));
154 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_GENERIC_AUDIO)), *(new Long((long) BT_SVC_NONE)));
155 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_GENERIC_TELEPHONY)), *(new Long((long) BT_SVC_NONE)));
156 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_VDP_SOURCE)), *(new Long((long) BT_SVC_VDP_SERVICE)));
157 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_VDP_SINK)), *(new Long((long) BT_SVC_VDP_SERVICE)));
158 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_VDP_DISTRIBUTION)), *(new Long((long) BT_SVC_VDP_SERVICE)));
159 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_HDP)), *(new Long((long) BT_SVC_HDP_SERVICE)));
160 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_HDP_SOURCE)), *(new Long((long) BT_SVC_HDP_SERVICE)));
161 __uuidMap.Add(*(new Tizen::Base::UuId(BT_SVC_UUID_HDP_SINK)), *(new Long((long) BT_SVC_HDP_SERVICE)));
167 Tizen::Base::Collection::HashMap __uuidMap;
169 }; //_BluetoothUuidMap
171 // defines local methods
172 void PrintMajorDeviceClass(BluetoothMajorDeviceClassType type);
173 void PrintMinorDeviceClass(BluetoothMajorDeviceClassType majType, BluetoothMinorDeviceClassType minType);
174 void PrintServiceClassList(unsigned long type);
177 _BluetoothAdapterUtility::_BluetoothAdapterUtility(void)
181 _BluetoothAdapterUtility::~_BluetoothAdapterUtility(void)
186 BluetoothMajorDeviceClassType
187 _BluetoothAdapterUtility::ConvertToMajorDeviceClassType(bt_major_device_class_e majorClass)
189 BluetoothMajorDeviceClassType convertedType = BT_COD_MAJ_DEV_CLS_UNCLASSIFIED;
193 case BT_MAJOR_DEVICE_CLASS_MISC:
194 convertedType = BT_COD_MAJ_DEV_CLS_MISC;
197 case BT_MAJOR_DEVICE_CLASS_COMPUTER:
198 convertedType = BT_COD_MAJ_DEV_CLS_COMPUTER;
201 case BT_MAJOR_DEVICE_CLASS_PHONE:
202 convertedType = BT_COD_MAJ_DEV_CLS_PHONE;
205 case BT_MAJOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT:
206 convertedType = BT_COD_MAJ_DEV_CLS_LAN_ACCESS_POINT;
209 case BT_MAJOR_DEVICE_CLASS_AUDIO_VIDEO:
210 convertedType = BT_COD_MAJ_DEV_CLS_AUDIO;
213 case BT_MAJOR_DEVICE_CLASS_PERIPHERAL:
214 convertedType = BT_COD_MAJ_DEV_CLS_PERIPHERAL;
217 case BT_MAJOR_DEVICE_CLASS_IMAGING:
218 convertedType = BT_COD_MAJ_DEV_CLS_IMAGING;
221 case BT_MAJOR_DEVICE_CLASS_WEARABLE:
222 case BT_MAJOR_DEVICE_CLASS_TOY:
223 case BT_MAJOR_DEVICE_CLASS_HEALTH:
224 case BT_MAJOR_DEVICE_CLASS_UNCATEGORIZED:
226 convertedType = BT_COD_MAJ_DEV_CLS_UNCLASSIFIED;
230 return convertedType;
233 BluetoothMinorDeviceClassType
234 _BluetoothAdapterUtility::ConvertToMinorDeviceClassType(bt_major_device_class_e majorClass, bt_minor_device_class_e minorClass)
236 BluetoothMinorDeviceClassType convertedType = BT_COD_MIN_DEV_CLS_UNCLASSIFIED;
238 if (majorClass == BT_MAJOR_DEVICE_CLASS_COMPUTER)
242 case BT_MINOR_DEVICE_CLASS_COMPUTER_DESKTOP_WORKSTATION:
243 convertedType = BT_COD_MIN_DEV_CLS_DESKTOP_WORKSTATION;
246 case BT_MINOR_DEVICE_CLASS_COMPUTER_SERVER_CLASS:
247 convertedType = BT_COD_MIN_DEV_CLS_SERVER_CLASS_COMPUTER;
250 case BT_MINOR_DEVICE_CLASS_COMPUTER_LAPTOP:
251 convertedType = BT_COD_MIN_DEV_CLS_LAPTOP;
254 case BT_MINOR_DEVICE_CLASS_COMPUTER_HANDHELD_PC_OR_PDA:
255 convertedType = BT_COD_MIN_DEV_CLS_HANDHELD_PC_OR_PDA;
258 case BT_MINOR_DEVICE_CLASS_COMPUTER_PALM_SIZED_PC_OR_PDA:
259 convertedType = BT_COD_MIN_DEV_CLS_PALM_SIZED_PC_OR_PDA;
262 case BT_MINOR_DEVICE_CLASS_COMPUTER_WEARABLE_COMPUTER:
263 convertedType = BT_COD_MIN_DEV_CLS_WEARABLE_COMPUTER;
267 convertedType = BT_COD_MIN_DEV_CLS_UNCLASSIFIED;
271 else if (majorClass == BT_MAJOR_DEVICE_CLASS_PHONE)
275 case BT_MINOR_DEVICE_CLASS_PHONE_CELLULAR:
276 convertedType = BT_COD_MIN_DEV_CLS_CELLULAR;
279 case BT_MINOR_DEVICE_CLASS_PHONE_CORDLESS:
280 convertedType = BT_COD_MIN_DEV_CLS_CORDLESS;
283 case BT_MINOR_DEVICE_CLASS_PHONE_SMART_PHONE:
284 convertedType = BT_COD_MIN_DEV_CLS_SMART_PHONE;
287 case BT_MINOR_DEVICE_CLASS_PHONE_WIRED_MODEM_OR_VOICE_GATEWAY:
288 convertedType = BT_COD_MIN_DEV_CLS_WIRED_MODEM_OR_VOICE_GATEWAY;
291 case BT_MINOR_DEVICE_CLASS_PHONE_COMMON_ISDN_ACCESS:
292 convertedType = BT_COD_MIN_DEV_CLS_COMMON_ISDN_ACCESS;
296 convertedType = BT_COD_MIN_DEV_CLS_UNCLASSIFIED;
300 else if (majorClass == BT_MAJOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT)
304 case BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_FULLY_AVAILABLE:
305 convertedType = BT_COD_MIN_DEV_CLS_FULLY_AVAILABLE;
308 case BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_1_TO_17_PERCENT_UTILIZED:
309 convertedType = BT_COD_MIN_DEV_CLS_1_TO_17_PERCENT_UTILIZED;
312 case BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_17_TO_33_PERCENT_UTILIZED:
313 convertedType = BT_COD_MIN_DEV_CLS_17_TO_33_PERCENT_UTILIZED;
316 case BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_33_TO_50_PERCENT_UTILIZED :
317 convertedType = BT_COD_MIN_DEV_CLS_33_TO_50_PERCENT_UTILIZED;
320 case BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_50_to_67_PERCENT_UTILIZED:
321 convertedType = BT_COD_MIN_DEV_CLS_50_to_67_PERCENT_UTILIZED;
324 case BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_67_TO_83_PERCENT_UTILIZED:
325 convertedType = BT_COD_MIN_DEV_CLS_67_TO_83_PERCENT_UTILIZED;
328 case BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_83_TO_99_PERCENT_UTILIZED:
329 convertedType = BT_COD_MIN_DEV_CLS_83_TO_99_PERCENT_UTILIZED;
332 case BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_NO_SERVICE_AVAILABLE :
333 convertedType = BT_COD_MIN_DEV_CLS_NO_SERVICE_AVAILABLE;
337 convertedType = BT_COD_MIN_DEV_CLS_UNCLASSIFIED;
341 else if (majorClass == BT_MAJOR_DEVICE_CLASS_AUDIO_VIDEO)
345 case BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_WEARABLE_HEADSET:
346 convertedType = BT_COD_MIN_DEV_CLS_HEADSET_PROFILE;
349 case BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HANDS_FREE :
350 convertedType = BT_COD_MIN_DEV_CLS_HANDSFREE;
353 case BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_MICROPHONE:
354 case BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_LOUDSPEAKER:
355 case BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HEADPHONES:
356 case BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_PORTABLE_AUDIO:
357 case BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_CAR_AUDIO:
358 case BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_SET_TOP_BOX:
359 case BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HIFI_AUDIO_DEVICE:
360 case BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VCR:
361 case BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_CAMERA:
362 case BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_CAMCORDER :
363 case BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_MONITOR:
364 case BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_DISPLAY_LOUDSPEAKER:
365 case BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_CONFERENCING:
366 case BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_GAMING_TOY:
368 convertedType = BT_COD_MIN_DEV_CLS_UNCLASSIFIED;
372 else if (majorClass == BT_MAJOR_DEVICE_CLASS_PERIPHERAL)
376 case BT_MINOR_DEVICE_CLASS_PERIPHERAL_KEY_BOARD:
377 case BT_MINOR_DEVICE_CLASS_PERIPHERAL_POINTING_DEVICE:
378 case BT_MINOR_DEVICE_CLASS_PERIPHERAL_COMBO_KEYBOARD_POINTING_DEVICE :
379 case BT_MINOR_DEVICE_CLASS_PERIPHERAL_JOYSTICK:
380 case BT_MINOR_DEVICE_CLASS_PERIPHERAL_GAME_PAD:
381 case BT_MINOR_DEVICE_CLASS_PERIPHERAL_REMOTE_CONTROL:
382 case BT_MINOR_DEVICE_CLASS_PERIPHERAL_SENSING_DEVICE:
383 case BT_MINOR_DEVICE_CLASS_PERIPHERAL_DIGITIZER_TABLET:
384 case BT_MINOR_DEVICE_CLASS_PERIPHERAL_CARD_READER:
385 convertedType = BT_COD_MIN_DEV_CLS_SIM_CARD_READER;
388 case BT_MINOR_DEVICE_CLASS_PERIPHERAL_DIGITAL_PEN:
389 case BT_MINOR_DEVICE_CLASS_PERIPHERAL_HANDHELD_SCANNER:
390 case BT_MINOR_DEVICE_CLASS_PERIPHERAL_HANDHELD_GESTURAL_INPUT_DEVICE :
392 convertedType = BT_COD_MIN_DEV_CLS_UNCLASSIFIED;
396 else if (majorClass == BT_MAJOR_DEVICE_CLASS_IMAGING)
400 case BT_MINOR_DEVICE_CLASS_IMAGING_DISPLAY:
401 case BT_MINOR_DEVICE_CLASS_IMAGING_CAMERA:
402 case BT_MINOR_DEVICE_CLASS_IMAGING_SCANNER:
403 case BT_MINOR_DEVICE_CLASS_IMAGING_PRINTER:
405 convertedType = BT_COD_MIN_DEV_CLS_UNCLASSIFIED;
409 else if (majorClass == BT_MAJOR_DEVICE_CLASS_WEARABLE)
413 case BT_MINOR_DEVICE_CLASS_WEARABLE_WRIST_WATCH:
414 case BT_MINOR_DEVICE_CLASS_WEARABLE_PAGER:
415 case BT_MINOR_DEVICE_CLASS_WEARABLE_JACKET:
416 case BT_MINOR_DEVICE_CLASS_WEARABLE_HELMET:
417 case BT_MINOR_DEVICE_CLASS_WEARABLE_GLASSES:
419 convertedType = BT_COD_MIN_DEV_CLS_UNCLASSIFIED;
423 else if (majorClass == BT_MAJOR_DEVICE_CLASS_TOY)
427 case BT_MINOR_DEVICE_CLASS_TOY_ROBOT:
428 case BT_MINOR_DEVICE_CLASS_TOY_VEHICLE:
429 case BT_MINOR_DEVICE_CLASS_TOY_DOLL_ACTION:
430 case BT_MINOR_DEVICE_CLASS_TOY_CONTROLLER:
431 case BT_MINOR_DEVICE_CLASS_TOY_GAME:
433 convertedType = BT_COD_MIN_DEV_CLS_UNCLASSIFIED;
437 else if (majorClass == BT_MAJOR_DEVICE_CLASS_HEALTH)
441 case BT_MINOR_DEVICE_CLASS_HEATH_BLOOD_PRESSURE_MONITOR:
442 case BT_MINOR_DEVICE_CLASS_HEATH_THERMOMETER :
443 case BT_MINOR_DEVICE_CLASS_HEATH_WEIGHING_SCALE:
444 case BT_MINOR_DEVICE_CLASS_HEATH_GLUCOSE_METER:
445 case BT_MINOR_DEVICE_CLASS_HEATH_PULSE_OXIMETER:
446 case BT_MINOR_DEVICE_CLASS_HEATH_HEART_PULSE_RATE_MONITOR:
447 case BT_MINOR_DEVICE_CLASS_HEATH_DATA_DISPLAY:
448 case BT_MINOR_DEVICE_CLASS_HEATH_STEP_COUNTER:
449 case BT_MINOR_DEVICE_CLASS_HEATH_BODY_COMPOSITION_ANALYZER:
450 case BT_MINOR_DEVICE_CLASS_HEATH_PEAK_FLOW_MONITOR:
451 case BT_MINOR_DEVICE_CLASS_HEATH_MEDICATION_MONITOR :
452 case BT_MINOR_DEVICE_CLASS_HEATH_KNEE_PROSTHESIS:
453 case BT_MINOR_DEVICE_CLASS_HEATH_ANKLE_PROSTHESIS:
455 convertedType = BT_COD_MIN_DEV_CLS_UNCLASSIFIED;
461 convertedType = BT_COD_MIN_DEV_CLS_UNCLASSIFIED;
464 return convertedType;
468 _BluetoothAdapterUtility::ConvertToServiceClassList(int serviceClass)
470 unsigned long serviceClassMask = 0;
472 bt_major_service_class_e origianlClassList[] =
474 BT_MAJOR_SERVICE_CLASS_INFORMATION,
475 BT_MAJOR_SERVICE_CLASS_TELEPHONY,
476 BT_MAJOR_SERVICE_CLASS_AUDIO,
477 BT_MAJOR_SERVICE_CLASS_OBJECT_TRANSFER,
478 BT_MAJOR_SERVICE_CLASS_CAPTURING,
479 BT_MAJOR_SERVICE_CLASS_RENDERING,
480 BT_MAJOR_SERVICE_CLASS_NETWORKING,
481 BT_MAJOR_SERVICE_CLASS_POSITIONING,
482 BT_MAJOR_SERVICE_CLASS_LIMITED_DISCOVERABLE_MODE
485 BluetoothServiceClassType convertedClassList[] =
487 BT_COD_SVC_INFORMATION,
488 BT_COD_SVC_TELEPHONY,
490 BT_COD_SVC_OBJECT_TRANSFER,
491 BT_COD_SVC_CAPTURING,
492 BT_COD_SVC_RENDERING,
493 BT_COD_SVC_NETWORKING,
494 BT_COD_SVC_POSITIONING,
495 BT_COD_SVC_LIMITED_DISCOVERABLE_MODE
498 for (int i = 0; i < 9; i++)
500 // checks the input value, 'serviceClass', has each value of the class list using bit masking
501 if (origianlClassList[i] == (serviceClass & origianlClassList[i]))
503 serviceClassMask += convertedClassList[i];
507 return serviceClassMask;
511 _BluetoothAdapterUtility::ConvertToServiceList(char** pServiceUuid, int& serviceUuidCount)
513 unsigned long serviceListMask = 0;
514 _BluetoothUuidMap* pMap = null;
516 pMap = _BluetoothUuidMap::GetInstance();
517 SysTryReturn(NID_NET_BT, pMap != null, 0, E_SYSTEM, "Converting UUID strings to a masked BluetoothServiceType value faild.");
519 for (int i = 0; i < serviceUuidCount; i++)
521 String uuidString(pServiceUuid[i]);
522 long uuidLongValue = pMap->GetUuidLong(uuidString);
524 serviceListMask |= uuidLongValue;
527 return serviceListMask;
530 Tizen::Base::Collection::IList*
531 _BluetoothAdapterUtility::ConvertServiceUuidListN(char** pServiceUuid, int& serviceUuidCount)
533 unique_ptr<ArrayList, AllElementsDeleter> pList;
536 pList.reset(new (std::nothrow) ArrayList());
537 SysTryReturn(NID_NET_BT, pList != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
539 for (int i = 0; i < serviceUuidCount; i++)
541 String uuidString(pServiceUuid[i]);
542 pUuid = new (std::nothrow) UuId();
543 SysTryReturn(NID_NET_BT, pUuid != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
544 uuidString.ToUpperCase();
545 UuId::Parse(uuidString, *pUuid);
550 return pList.release();
554 _BluetoothAdapterUtility::PrintDeviceInfo(const BluetoothDevice& device)
556 SysLog(NID_NET_BT, "Bluetooth Device Information =============");
557 SysLog(NID_NET_BT, "+ Address: [%ls]", _BluetoothDeviceImpl::GetAddressString(*(device.GetAddress())).GetPointer());
558 SysLog(NID_NET_BT, "+ Name: %ls", device.GetName().GetPointer());
559 SysLog(NID_NET_BT, "+ %s", device.IsPaired() ? "Paired" : "Not Paired");
560 SysLog(NID_NET_BT, "+ RSSI: %d", device.GetRssi());
561 PrintMajorDeviceClass(device.GetMajorDeviceClassType());
562 PrintMinorDeviceClass(device.GetMajorDeviceClassType(), device.GetMinorDeviceClassType());
563 PrintServiceClassList(device.GetServiceClassList());
564 PrintServiceList(device.GetServiceList());
565 PrintServiceUuidList(device.GetServiceUuidList());
569 _BluetoothAdapterUtility::PrintServiceList(unsigned long type)
572 unsigned long typeList[] =
578 BT_SVC_HFP_HS_SERVICE,
579 BT_SVC_HSP_HS_SERVICE,
583 BT_SVC_AVRCP_SERVICE,
604 const char* typeStrList[] =
606 "BT_SVC_MAP_SERVICE",
607 "BT_SVC_HDP_SERVICE",
608 "BT_SVC_DID_SERVICE",
609 "BT_SVC_HCRP_SERVICE",
610 "BT_SVC_HFP_HS_SERVICE",
611 "BT_SVC_HSP_HS_SERVICE",
612 "BT_SVC_PBAP_SERVICE",
613 "BT_SVC_VDP_SERVICE",
614 "BT_SVC_HID_SERVICE",
615 "BT_SVC_AVRCP_SERVICE",
616 "BT_SVC_A2DP_SERVICE",
617 "BT_SVC_SAP_SERVICE",
619 "BT_SVC_NAP_SERVICE",
620 "BT_SVC_PANU_SERVICE",
621 "BT_SVC_BIP_SERVICE",
622 "BT_SVC_BPP_SERVICE",
623 "BT_SVC_SYNC_SERVICE",
624 "BT_SVC_ICP_SERVICE",
625 "BT_SVC_CTP_SERVICE",
626 "BT_SVC_FTP_SERVICE",
627 "BT_SVC_OPP_SERVICE",
628 "BT_SVC_HFP_SERVICE",
629 "BT_SVC_HSP_SERVICE",
630 "BT_SVC_LAP_SERVICE",
631 "BT_SVC_FAX_SERVICE",
632 "BT_SVC_DUN_SERVICE",
633 "BT_SVC_SPP_SERVICE",
637 for (int i = 0; i < 29; i++)
639 // checks the input value, 'type', has each value of the service list using bit masking
640 if (typeList[i] == (type & typeList[i]))
642 SysLog(NID_NET_BT, "+ Service List[%d]: %s", index++, typeStrList[i]);
648 _BluetoothAdapterUtility::PrintServiceUuidList(const Tizen::Base::Collection::IList* pList)
651 const UuId* pUuid = null;
655 SysLog(NID_NET_BT, "+ No Service UUID (with error)");
659 count = pList->GetCount();
663 SysLog(NID_NET_BT, "+ No Service UUID");
666 for (int i = 0; i < count; i++)
668 pUuid = dynamic_cast<const UuId*>(pList->GetAt(i));
671 SysLog(NID_NET_BT, "+ Service UUID[%d]: %ls", i, pUuid->ToString().GetPointer());
677 void PrintMajorDeviceClass(BluetoothMajorDeviceClassType type)
679 const char* pTypeString = null;
683 case BT_COD_MAJ_DEV_CLS_MISC:
684 pTypeString = "BT_COD_MAJ_DEV_CLS_MISC";
687 case BT_COD_MAJ_DEV_CLS_COMPUTER:
688 pTypeString = "BT_COD_MAJ_DEV_CLS_COMPUTER";
691 case BT_COD_MAJ_DEV_CLS_PHONE:
692 pTypeString = "BT_COD_MAJ_DEV_CLS_PHONE";
695 case BT_COD_MAJ_DEV_CLS_LAN_ACCESS_POINT:
696 pTypeString = "BT_COD_MAJ_DEV_CLS_LAN_ACCESS_POINT";
699 case BT_COD_MAJ_DEV_CLS_AUDIO:
700 pTypeString = "BT_COD_MAJ_DEV_CLS_AUDIO";
703 case BT_COD_MAJ_DEV_CLS_PERIPHERAL:
704 pTypeString = "BT_COD_MAJ_DEV_CLS_PERIPHERAL";
707 case BT_COD_MAJ_DEV_CLS_IMAGING:
708 pTypeString = "BT_COD_MAJ_DEV_CLS_IMAGING";
711 case BT_COD_MAJ_DEV_CLS_UNCLASSIFIED:
712 pTypeString = "BT_COD_MAJ_DEV_CLS_UNCLASSIFIED";
716 pTypeString = "Unknown";
720 SysLog(NID_NET_BT, "+ Major Device Type: %s", pTypeString);
723 void PrintMinorDeviceClass(BluetoothMajorDeviceClassType majType, BluetoothMinorDeviceClassType minType)
725 const char* pTypeString = null;
729 case BT_COD_MAJ_DEV_CLS_COMPUTER:
732 case BT_COD_MIN_DEV_CLS_DESKTOP_WORKSTATION:
733 pTypeString = "BT_COD_MIN_DEV_CLS_DESKTOP_WORKSTATION";
736 case BT_COD_MIN_DEV_CLS_SERVER_CLASS_COMPUTER:
737 pTypeString = "BT_COD_MIN_DEV_CLS_SERVER_CLASS_COMPUTER";
740 case BT_COD_MIN_DEV_CLS_LAPTOP:
741 pTypeString = "BT_COD_MIN_DEV_CLS_LAPTOP";
744 case BT_COD_MIN_DEV_CLS_HANDHELD_PC_OR_PDA:
745 pTypeString = "BT_COD_MIN_DEV_CLS_HANDHELD_PC_OR_PDA";
748 case BT_COD_MIN_DEV_CLS_PALM_SIZED_PC_OR_PDA:
749 pTypeString = "BT_COD_MIN_DEV_CLS_PALM_SIZED_PC_OR_PDA";
752 case BT_COD_MIN_DEV_CLS_WEARABLE_COMPUTER:
753 pTypeString = "BT_COD_MIN_DEV_CLS_WEARABLE_COMPUTER";
757 pTypeString = "Unclassified";
762 case BT_COD_MAJ_DEV_CLS_PHONE:
765 case BT_COD_MIN_DEV_CLS_CELLULAR:
766 pTypeString = "BT_COD_MIN_DEV_CLS_CELLULAR";
769 case BT_COD_MIN_DEV_CLS_CORDLESS:
770 pTypeString = "BT_COD_MIN_DEV_CLS_CORDLESS";
773 case BT_COD_MIN_DEV_CLS_SMART_PHONE:
774 pTypeString = "BT_COD_MIN_DEV_CLS_SMART_PHONE";
777 case BT_COD_MIN_DEV_CLS_WIRED_MODEM_OR_VOICE_GATEWAY:
778 pTypeString = "BT_COD_MIN_DEV_CLS_WIRED_MODEM_OR_VOICE_GATEWAY";
781 case BT_COD_MIN_DEV_CLS_COMMON_ISDN_ACCESS:
782 pTypeString = "BT_COD_MIN_DEV_CLS_COMMON_ISDN_ACCESS";
786 pTypeString = "Unclassified";
791 case BT_COD_MAJ_DEV_CLS_LAN_ACCESS_POINT:
794 case BT_COD_MIN_DEV_CLS_FULLY_AVAILABLE:
795 pTypeString = "BT_COD_MAJ_DEV_CLS_LAN_ACCESS_POINT";
798 case BT_COD_MIN_DEV_CLS_1_TO_17_PERCENT_UTILIZED:
799 pTypeString = "BT_COD_MIN_DEV_CLS_1_TO_17_PERCENT_UTILIZED";
802 case BT_COD_MIN_DEV_CLS_17_TO_33_PERCENT_UTILIZED:
803 pTypeString = "BT_COD_MIN_DEV_CLS_17_TO_33_PERCENT_UTILIZED";
806 case BT_COD_MIN_DEV_CLS_33_TO_50_PERCENT_UTILIZED:
807 pTypeString = "BT_COD_MIN_DEV_CLS_33_TO_50_PERCENT_UTILIZED";
810 case BT_COD_MIN_DEV_CLS_50_to_67_PERCENT_UTILIZED:
811 pTypeString = "BT_COD_MIN_DEV_CLS_50_to_67_PERCENT_UTILIZED";
814 case BT_COD_MIN_DEV_CLS_67_TO_83_PERCENT_UTILIZED:
815 pTypeString = "BT_COD_MIN_DEV_CLS_67_TO_83_PERCENT_UTILIZED";
818 case BT_COD_MIN_DEV_CLS_83_TO_99_PERCENT_UTILIZED:
819 pTypeString = "BT_COD_MIN_DEV_CLS_83_TO_99_PERCENT_UTILIZED";
822 case BT_COD_MIN_DEV_CLS_NO_SERVICE_AVAILABLE:
823 pTypeString = "BT_COD_MIN_DEV_CLS_NO_SERVICE_AVAILABLE";
827 pTypeString = "Unclassified";
832 case BT_COD_MAJ_DEV_CLS_AUDIO:
835 case BT_COD_MIN_DEV_CLS_HEADSET_PROFILE:
836 pTypeString = "BT_COD_MIN_DEV_CLS_HEADSET_PROFILE";
839 case BT_COD_MIN_DEV_CLS_HANDSFREE:
840 pTypeString = "BT_COD_MIN_DEV_CLS_HANDSFREE";
844 pTypeString = "Unclassified";
849 case BT_COD_MAJ_DEV_CLS_PERIPHERAL:
852 case BT_COD_MIN_DEV_CLS_SIM_CARD_READER:
853 pTypeString = "BT_COD_MIN_DEV_CLS_SIM_CARD_READER";
857 pTypeString = "Unclassified";
862 case BT_COD_MAJ_DEV_CLS_IMAGING:
863 case BT_COD_MAJ_DEV_CLS_MISC:
864 case BT_COD_MAJ_DEV_CLS_UNCLASSIFIED:
866 pTypeString = "Unclassified";
870 SysLog(NID_NET_BT, "+ Minor Device Type: %s", pTypeString);
873 void PrintServiceClassList(unsigned long type)
876 unsigned long typeList[] =
878 BT_COD_SVC_INFORMATION,
879 BT_COD_SVC_TELEPHONY,
881 BT_COD_SVC_OBJECT_TRANSFER,
882 BT_COD_SVC_CAPTURING,
883 BT_COD_SVC_RENDERING,
884 BT_COD_SVC_NETWORKING,
885 BT_COD_SVC_POSITIONING,
886 BT_COD_SVC_LIMITED_DISCOVERABLE_MODE
888 const char* typeStrList[] =
890 "BT_COD_SVC_INFORMATION",
891 "BT_COD_SVC_TELEPHONY",
893 "BT_COD_SVC_OBJECT_TRANSFER",
894 "BT_COD_SVC_CAPTURING",
895 "BT_COD_SVC_RENDERING",
896 "BT_COD_SVC_NETWORKING",
897 "BT_COD_SVC_POSITIONING",
898 "BT_COD_SVC_LIMITED_DISCOVERABLE_MODE"
901 for (int i = 0; i < 9; i++)
903 if (typeList[i] == (type & typeList[i]))
905 // checks the input value, 'type', has each value of the service class list using bit masking
906 SysLog(NID_NET_BT, "+ Service Class List[%d]: %s", index++, typeStrList[i]);
911 } } } // Tizen::Net::Bluetooth