1# Copyright (C) 2021-2022 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14import("//build/ohos.gni") 15import("//foundation/communication/bluetooth_service/bluetooth.gni") 16 17SUBSYSTEM_DIR = "//foundation/communication" 18PART_DIR = "$SUBSYSTEM_DIR/bluetooth_service/services/bluetooth" 19BT_SERVICE_DIR = "$PART_DIR/service" 20 21declare_args() { 22 bluetooth_service_avrcp_avsession = false 23} 24 25ServiceBleScanFilter = [ "src/ble/ble_scan_filter/src/ble_scan_filter_lsf.cpp" ] 26 27ServiceBleSrc = [ 28 "src/ble/ble_adapter.cpp", 29 "src/ble/ble_advertiser_impl.cpp", 30 "src/ble/ble_central_manager_impl.cpp", 31 "src/ble/ble_config.cpp", 32 "src/ble/ble_properties.cpp", 33 "src/ble/ble_security.cpp", 34 "src/ble/ble_utils.cpp", 35] 36 37ServiceClassicSrc = [ 38 "src/classic/classic_adapter_properties.cpp", 39 "src/classic/classic_adapter.cpp", 40 "src/classic/classic_battery_observer.cpp", 41 "src/classic/classic_bluetooth_data.cpp", 42 "src/classic/classic_config.cpp", 43 "src/classic/classic_data_structure.cpp", 44 "src/classic/classic_remote_device.cpp", 45 "src/classic/classic_utils.cpp", 46] 47 48ServiceCommonSrc = [ 49 "src/common/adapter_config.cpp", 50 "src/common/adapter_device_config.cpp", 51 "src/common/adapter_device_info.cpp", 52 "src/common/adapter_manager.cpp", 53 "src/common/adapter_state_machine.cpp", 54 "src/common/class_creator.cpp", 55 "src/common/compat.cpp", 56 "src/common/power_device.cpp", 57 "src/common/power_manager.cpp", 58 "src/common/power_spec.cpp", 59 "src/common/power_state_machine.cpp", 60 "src/common/profile_config.cpp", 61 "src/common/profile_info.cpp", 62 "src/common/profile_service_manager.cpp", 63 "src/common/sys_state_machine.cpp", 64] 65 66ServiceGattSrc = [ 67 "src/gatt/gatt_cache.cpp", 68 "src/gatt/gatt_client_profile.cpp", 69 "src/gatt/gatt_client_service.cpp", 70 "src/gatt/gatt_connection_manager.cpp", 71 "src/gatt/gatt_database.cpp", 72 "src/gatt/gatt_server_profile.cpp", 73 "src/gatt/gatt_server_service.cpp", 74 "src/gatt/gatt_service_base.cpp", 75 "src/gatt/gatt_based_services_manager.cpp", 76 "src/gatt/dis/device_information_service.cpp", 77 "src/gatt/gas/generic_access_service.cpp", 78 "src/gatt/gatts/gatt_service_over_bredr.cpp", 79 "src/gatt/gatts/generic_attribute_service.cpp", 80] 81 82ServiceGavdpSrc = [ 83 "src/gavdp/a2dp_avdtp.cpp", 84 "src/gavdp/a2dp_codec_thread.cpp", 85 "src/gavdp/a2dp_profile_peer.cpp", 86 "src/gavdp/a2dp_profile.cpp", 87 "src/gavdp/a2dp_sdp.cpp", 88 "src/gavdp/a2dp_service_connection.cpp", 89 "src/gavdp/a2dp_service_device.cpp", 90 "src/gavdp/a2dp_service_state_machine.cpp", 91 "src/gavdp/a2dp_service.cpp", 92 "src/gavdp/a2dp_sink.cpp", 93 "src/gavdp/a2dp_source.cpp", 94 "src/gavdp/a2dp_state_machine.cpp", 95 "src/gavdp/a2dp_codec/a2dp_aac_param_ctrl.cpp", 96 "src/gavdp/a2dp_codec/a2dp_codec_config.cpp", 97 "src/gavdp/a2dp_codec/a2dp_codec_factory.cpp", 98 "src/gavdp/a2dp_codec/a2dp_sbc_param_ctrl.cpp", 99 "src/gavdp/a2dp_codec/sbccodecctrl/src/a2dp_decoder_sbc.cpp", 100 "src/gavdp/a2dp_codec/sbccodecctrl/src/a2dp_encoder_sbc.cpp", 101 "src/gavdp/a2dp_codec/sbccodecctrl/src/a2dp_sbc_dynamic_lib_ctrl.cpp", 102 "src/gavdp/a2dp_shared_buffer.cpp", 103] 104 105ServiceObexSrc = [ 106 "src/obex/obex_body.cpp", 107 "src/obex/obex_client.cpp", 108 "src/obex/obex_headers.cpp", 109 "src/obex/obex_mp_client.cpp", 110 "src/obex/obex_mp_server.cpp", 111 "src/obex/obex_server.cpp", 112 "src/obex/obex_session.cpp", 113 "src/obex/obex_socket_transport.cpp", 114 "src/obex/obex_transport.cpp", 115 "src/obex/obex_utils.cpp", 116] 117 118ServiceSockSrc = [ 119 "src/sock/socket.cpp", 120 "src/sock/socket_gap_client.cpp", 121 "src/sock/socket_gap_server.cpp", 122 "src/sock/socket_sdp_client.cpp", 123 "src/sock/socket_sdp_server.cpp", 124 "src/sock/socket_service.cpp", 125 "src/sock/socket_listener.cpp", 126 "src/sock/socket_util.cpp", 127] 128 129ServiceTransportSrc = [ 130 "src/transport/transport_factory.cpp", 131 "src/transport/transport_l2cap.cpp", 132 "src/transport/transport_rfcomm.cpp", 133] 134 135ServiceUtilSrc = [ 136 "src/util/bluetooth_common_event_helper.cpp", 137 "src/util/dispatcher.cpp", 138 "src/util/semaphore_utils.cpp", 139 "src/util/state_machine.cpp", 140 "src/util/timer.cpp", 141 "src/util/xml_parse.cpp", 142 "src/util/log_util.cpp", 143] 144 145ServicePermissionSrc = [ 146 "src/permission/auth_center.cpp", 147 "src/permission/permission_helper.cpp", 148 "src/permission/permission_utils.cpp", 149] 150 151config("btservice_public_config") { 152 include_dirs = [ 153 "include", 154 "$SUBSYSTEM_DIR/bluetooth/interfaces/inner_api/include", 155 "$SUBSYSTEM_DIR/bluetooth/frameworks/inner/include", 156 ] 157} 158 159config("btservice_config") { 160 include_dirs = [ 161 "$BT_SERVICE_DIR/src", 162 "$BT_SERVICE_DIR/src/base", 163 "$BT_SERVICE_DIR/src/common", 164 "$BT_SERVICE_DIR/src/permission", 165 "$BT_SERVICE_DIR/src/util", 166 "$BT_SERVICE_DIR/src/ble/ble_scan_filter", 167 "$BT_SERVICE_DIR/src/gavdp/a2dp_codec/aaccodecctrl_l2/include", 168 "$BT_SERVICE_DIR/src/gavdp/a2dp_codec/sbccodecctrl/include", 169 "$PART_DIR/common", 170 ] 171 172 cflags_cc = [ 173 "-fPIC", 174 "-fexceptions", 175 "-Wno-pessimizing-move", 176 "-Wno-unused-parameter", 177 "-Wunused-variable", 178 "-Wreorder", 179 "-Wmissing-braces", 180 "-Wimplicit-fallthrough", 181 "-Wunused-private-field", 182 "-Wlogical-op-parentheses", 183 "-Wmissing-field-initializers", 184 "-Wparentheses-equality", 185 "-Wparentheses", 186 "-Wdelete-non-abstract-non-virtual-dtor", 187 "-Wignored-qualifiers", 188 "-Wdelete-abstract-non-virtual-dtor", 189 "-Wuninitialized", 190 "-Woverloaded-virtual", 191 "-Wdangling-else", 192 "-Woverloaded-virtual", 193 "-Wno-non-c-typedef-for-linkage", 194 "-Wno-unused-but-set-variable", 195 "-Wno-array-parameter", 196 ] 197} 198 199ohos_shared_library("btservice") { 200 # sanitize = { 201 # cfi = true 202 # blocklist = "./bluetooth_service_blocklist.txt" 203 # } 204 stack_protector_ret = true 205 configs = [ ":btservice_config" ] 206 public_configs = [ ":btservice_public_config" ] 207 208 if (bluetooth_service_avrcp_avsession) { 209 defines = [ "AVRCP_AVSESSION" ] 210 } 211 212 sources = ServiceCommonSrc + ServiceUtilSrc 213 sources += ServiceBleScanFilter 214 sources += ServiceBleSrc 215 sources += ServiceClassicSrc 216 sources += ServiceGattSrc 217 sources += ServiceGavdpSrc 218 sources += ServiceObexSrc 219 sources += ServiceSockSrc 220 sources += ServiceTransportSrc 221 sources += ServicePermissionSrc 222 223 if (bluetooth_service_a2dp_sink_feature) { 224 sources += [ "src/a2dp_snk/a2dp_snk_service.cpp" ] 225 } 226 227 if (bluetooth_service_a2dp_source_feature) { 228 sources += [ "src/a2dp_src/a2dp_src_service.cpp" ] 229 } 230 231 if (bluetooth_service_avrcp_ct_feature) { 232 sources += [ 233 "src/avrcp_ct/avrcp_ct_browse.cpp", 234 "src/avrcp_ct/avrcp_ct_connection.cpp", 235 "src/avrcp_ct/avrcp_ct_gap.cpp", 236 "src/avrcp_ct/avrcp_ct_notification.cpp", 237 "src/avrcp_ct/avrcp_ct_packet.cpp", 238 "src/avrcp_ct/avrcp_ct_pass_through.cpp", 239 "src/avrcp_ct/avrcp_ct_profile.cpp", 240 "src/avrcp_ct/avrcp_ct_sdp.cpp", 241 "src/avrcp_ct/avrcp_ct_service.cpp", 242 "src/avrcp_ct/avrcp_ct_state_machine.cpp", 243 "src/avrcp_ct/avrcp_ct_sub_unit_info.cpp", 244 "src/avrcp_ct/avrcp_ct_unit_info.cpp", 245 "src/avrcp_ct/avrcp_ct_vendor.cpp", 246 ] 247 } 248 249 if (bluetooth_service_avrcp_tg_feature) { 250 sources += [ 251 "src/avrcp_tg/avrcp_tg_browse.cpp", 252 "src/avrcp_tg/avrcp_tg_connection.cpp", 253 "src/avrcp_tg/avrcp_tg_gap.cpp", 254 "src/avrcp_tg/avrcp_tg_notification.cpp", 255 "src/avrcp_tg/avrcp_tg_packet.cpp", 256 "src/avrcp_tg/avrcp_tg_pass_through.cpp", 257 "src/avrcp_tg/avrcp_tg_profile.cpp", 258 "src/avrcp_tg/avrcp_tg_sdp.cpp", 259 "src/avrcp_tg/avrcp_tg_service.cpp", 260 "src/avrcp_tg/avrcp_tg_state_machine.cpp", 261 "src/avrcp_tg/avrcp_tg_sub_unit_info.cpp", 262 "src/avrcp_tg/avrcp_tg_unit_info.cpp", 263 "src/avrcp_tg/avrcp_tg_vendor.cpp", 264 ] 265 } 266 267 if (bluetooth_service_hfp_ag_feature) { 268 sources += [ 269 "src/hfp_ag/hfp_ag_audio_connection.cpp", 270 "src/hfp_ag/hfp_ag_command_parser.cpp", 271 "src/hfp_ag/hfp_ag_command_processor.cpp", 272 "src/hfp_ag/hfp_ag_data_connection.cpp", 273 "src/hfp_ag/hfp_ag_data_connection_server.cpp", 274 "src/hfp_ag/hfp_ag_gap_client.cpp", 275 "src/hfp_ag/hfp_ag_gap_server.cpp", 276 "src/hfp_ag/hfp_ag_profile.cpp", 277 "src/hfp_ag/hfp_ag_profile_event_sender.cpp", 278 "src/hfp_ag/hfp_ag_rfcomm_connection.cpp", 279 "src/hfp_ag/hfp_ag_rfcomm_connection_server.cpp", 280 "src/hfp_ag/hfp_ag_sdp_client.cpp", 281 "src/hfp_ag/hfp_ag_sdp_server.cpp", 282 "src/hfp_ag/hfp_ag_service.cpp", 283 "src/hfp_ag/hfp_ag_statemachine.cpp", 284 "src/hfp_ag/hfp_ag_system_event_processer.cpp", 285 "src/hfp_ag/hfp_ag_system_interface.cpp", 286 ] 287 } 288 289 if (bluetooth_service_hfp_hf_feature) { 290 sources += [ 291 "src/hfp_hf/hfp_hf_audio_connection.cpp", 292 "src/hfp_hf/hfp_hf_call_manager.cpp", 293 "src/hfp_hf/hfp_hf_command_parser.cpp", 294 "src/hfp_hf/hfp_hf_command_processor.cpp", 295 "src/hfp_hf/hfp_hf_data_connection.cpp", 296 "src/hfp_hf/hfp_hf_data_connection_server.cpp", 297 "src/hfp_hf/hfp_hf_gap_client.cpp", 298 "src/hfp_hf/hfp_hf_gap_server.cpp", 299 "src/hfp_hf/hfp_hf_profile.cpp", 300 "src/hfp_hf/hfp_hf_profile_event_sender.cpp", 301 "src/hfp_hf/hfp_hf_rfcomm_connection.cpp", 302 "src/hfp_hf/hfp_hf_rfcomm_connection_server.cpp", 303 "src/hfp_hf/hfp_hf_sdp_client.cpp", 304 "src/hfp_hf/hfp_hf_sdp_server.cpp", 305 "src/hfp_hf/hfp_hf_service.cpp", 306 "src/hfp_hf/hfp_hf_statemachine.cpp", 307 ] 308 } 309 310 if (bluetooth_service_hid_host_feature) { 311 sources += [ 312 "src/hid_host/hid_host_hogp.cpp", 313 "src/hid_host/hid_host_l2cap_connection.cpp", 314 "src/hid_host/hid_host_sdp_client.cpp", 315 "src/hid_host/hid_host_service.cpp", 316 "src/hid_host/hid_host_statemachine.cpp", 317 "src/hid_host/hid_host_uhid.cpp", 318 ] 319 } 320 321 if (bluetooth_service_pan_feature) { 322 sources += [ 323 "src/pan/pan_bnep.cpp", 324 "src/pan/pan_network.cpp", 325 "src/pan/pan_sdp.cpp", 326 "src/pan/pan_service.cpp", 327 "src/pan/pan_statemachine.cpp", 328 ] 329 } 330 331 deps = [ 332 "$PART_DIR/external:btdummy", 333 "$PART_DIR/stack:btstack", 334 "//third_party/bounds_checking_function:libsec_shared", 335 "//third_party/libxml2:xml2", 336 "//third_party/openssl:libcrypto_shared", 337 ] 338 339 external_deps = [ 340 "ability_base:want", 341 "access_token:libaccesstoken_sdk", 342 "access_token:libtokenid_sdk", 343 "audio_framework:audio_client", 344 "bluetooth:btcommon", 345 "c_utils:utils", 346 "common_event_service:cesfwk_innerkits", 347 "hdf_core:libhdi", 348 "hilog:libhilog", 349 "hisysevent:libhisysevent", 350 "ipc:ipc_core", 351 "samgr:samgr_proxy", 352 ] 353 354 if (bluetooth_service_hfp_ag_feature) { 355 external_deps += [ 356 "call_manager:tel_call_manager_api", 357 "core_service:tel_core_service_api", 358 "state_registry:tel_state_registry_api", 359 ] 360 } 361 362 if (bluetooth_service_avrcp_avsession) { 363 external_deps += [ 364 "ability_runtime:wantagent_innerkits", 365 "av_session:avsession_client", 366 "input:libmmi-client", 367 "multimedia_image_framework:image_native", 368 ] 369 } 370 371 subsystem_name = "communication" 372 part_name = "bluetooth_service" 373} 374 375SBC_CODEC_DIR = "$BT_SERVICE_DIR/src/gavdp/a2dp_codec/sbclib" 376ohos_shared_library("btsbc") { 377 # sanitize = { 378 # cfi = true 379 # } 380 stack_protector_ret = true 381 include_dirs = [ "$PART_DIR/common" ] 382 sources = [ 383 "$SBC_CODEC_DIR/src/sbc_decoder.cpp", 384 "$SBC_CODEC_DIR/src/sbc_encoder.cpp", 385 "$SBC_CODEC_DIR/src/sbc_frame.cpp", 386 ] 387 388 deps = [ 389 "$PART_DIR/external:btdummy", 390 "//third_party/bounds_checking_function:libsec_shared", 391 ] 392 393 external_deps = [ "hilog:libhilog" ] 394 395 cflags = [ "-Wno-array-bounds" ] 396 subsystem_name = "communication" 397 part_name = "bluetooth_service" 398} 399