• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
135ServiceDISrc = [
136  "src/di/di_config.cpp",
137  "src/di/di_service.cpp",
138]
139
140ServiceUtilSrc = [
141  "src/util/bluetooth_common_event_helper.cpp",
142  "src/util/dispatcher.cpp",
143  "src/util/semaphore_utils.cpp",
144  "src/util/state_machine.cpp",
145  "src/util/timer.cpp",
146  "src/util/xml_parse.cpp",
147  "src/util/log_util.cpp",
148]
149
150ServicePermissionSrc = [
151  "src/permission/auth_center.cpp",
152  "src/permission/permission_helper.cpp",
153  "src/permission/permission_utils.cpp",
154]
155
156config("btservice_public_config") {
157  include_dirs = [
158    "include",
159    "$SUBSYSTEM_DIR/bluetooth/interfaces/inner_api/include",
160    "$SUBSYSTEM_DIR/bluetooth/frameworks/inner/include",
161    "//third_party/bounds_checking_function/include",
162  ]
163}
164
165config("btservice_config") {
166  include_dirs = [
167    "$BT_SERVICE_DIR/src",
168    "$BT_SERVICE_DIR/src/base",
169    "$BT_SERVICE_DIR/src/common",
170    "$BT_SERVICE_DIR/src/permission",
171    "$BT_SERVICE_DIR/src/util",
172    "$BT_SERVICE_DIR/src/ble/ble_scan_filter",
173    "$BT_SERVICE_DIR/src/gavdp/a2dp_codec/aaccodecctrl_l2/include",
174    "$BT_SERVICE_DIR/src/gavdp/a2dp_codec/sbccodecctrl/include",
175    "//base/telephony/state_registry/frameworks/native/observer/include",
176    "//foundation/multimedia/audio_framework/interfaces/inner_api/native/audiocommon/include",
177    "//foundation/multimedia/audio_framework/interfaces/inner_api/native/audiomanager/include",
178  ]
179
180  cflags_cc = [
181    "-fPIC",
182    "-fexceptions",
183    "-Wno-pessimizing-move",
184    "-Wno-unused-parameter",
185    "-Wunused-variable",
186    "-Wreorder",
187    "-Wmissing-braces",
188    "-Wimplicit-fallthrough",
189    "-Wunused-private-field",
190    "-Wlogical-op-parentheses",
191    "-Wmissing-field-initializers",
192    "-Wparentheses-equality",
193    "-Wparentheses",
194    "-Wdelete-non-abstract-non-virtual-dtor",
195    "-Wignored-qualifiers",
196    "-Wdelete-abstract-non-virtual-dtor",
197    "-Wuninitialized",
198    "-Woverloaded-virtual",
199    "-Wdangling-else",
200    "-Woverloaded-virtual",
201    "-Wno-non-c-typedef-for-linkage",
202    "-Wno-unused-but-set-variable",
203    "-Wno-array-parameter",
204  ]
205}
206
207ohos_shared_library("btservice") {
208  # sanitize = {
209  #   cfi = true
210  #   blocklist = "./bluetooth_service_blocklist.txt"
211  # }
212  stack_protector_ret = true
213  configs = [ ":btservice_config" ]
214  public_configs = [ ":btservice_public_config" ]
215
216  if (bluetooth_service_avrcp_avsession) {
217    defines = [ "AVRCP_AVSESSION" ]
218  }
219
220  sources = ServiceCommonSrc + ServiceUtilSrc
221  sources += ServiceBleScanFilter
222  sources += ServiceBleSrc
223  sources += ServiceClassicSrc
224  sources += ServiceGattSrc
225  sources += ServiceGavdpSrc
226  sources += ServiceObexSrc
227  sources += ServiceSockSrc
228  sources += ServiceTransportSrc
229  sources += ServiceDISrc
230  sources += ServicePermissionSrc
231
232  if (bluetooth_service_a2dp_sink_feature) {
233    sources += [ "src/a2dp_snk/a2dp_snk_service.cpp" ]
234  }
235
236  if (bluetooth_service_a2dp_source_feature) {
237    sources += [ "src/a2dp_src/a2dp_src_service.cpp" ]
238  }
239
240  if (bluetooth_service_avrcp_ct_feature) {
241    sources += [
242      "src/avrcp_ct/avrcp_ct_browse.cpp",
243      "src/avrcp_ct/avrcp_ct_connection.cpp",
244      "src/avrcp_ct/avrcp_ct_gap.cpp",
245      "src/avrcp_ct/avrcp_ct_notification.cpp",
246      "src/avrcp_ct/avrcp_ct_packet.cpp",
247      "src/avrcp_ct/avrcp_ct_pass_through.cpp",
248      "src/avrcp_ct/avrcp_ct_profile.cpp",
249      "src/avrcp_ct/avrcp_ct_sdp.cpp",
250      "src/avrcp_ct/avrcp_ct_service.cpp",
251      "src/avrcp_ct/avrcp_ct_state_machine.cpp",
252      "src/avrcp_ct/avrcp_ct_sub_unit_info.cpp",
253      "src/avrcp_ct/avrcp_ct_unit_info.cpp",
254      "src/avrcp_ct/avrcp_ct_vendor.cpp",
255    ]
256  }
257
258  if (bluetooth_service_avrcp_tg_feature) {
259    sources += [
260      "src/avrcp_tg/avrcp_tg_browse.cpp",
261      "src/avrcp_tg/avrcp_tg_connection.cpp",
262      "src/avrcp_tg/avrcp_tg_gap.cpp",
263      "src/avrcp_tg/avrcp_tg_notification.cpp",
264      "src/avrcp_tg/avrcp_tg_packet.cpp",
265      "src/avrcp_tg/avrcp_tg_pass_through.cpp",
266      "src/avrcp_tg/avrcp_tg_profile.cpp",
267      "src/avrcp_tg/avrcp_tg_sdp.cpp",
268      "src/avrcp_tg/avrcp_tg_service.cpp",
269      "src/avrcp_tg/avrcp_tg_state_machine.cpp",
270      "src/avrcp_tg/avrcp_tg_sub_unit_info.cpp",
271      "src/avrcp_tg/avrcp_tg_unit_info.cpp",
272      "src/avrcp_tg/avrcp_tg_vendor.cpp",
273    ]
274  }
275
276  if (bluetooth_service_hfp_ag_feature) {
277    sources += [
278      "src/hfp_ag/hfp_ag_audio_connection.cpp",
279      "src/hfp_ag/hfp_ag_command_parser.cpp",
280      "src/hfp_ag/hfp_ag_command_processor.cpp",
281      "src/hfp_ag/hfp_ag_data_connection.cpp",
282      "src/hfp_ag/hfp_ag_data_connection_server.cpp",
283      "src/hfp_ag/hfp_ag_gap_client.cpp",
284      "src/hfp_ag/hfp_ag_gap_server.cpp",
285      "src/hfp_ag/hfp_ag_profile.cpp",
286      "src/hfp_ag/hfp_ag_profile_event_sender.cpp",
287      "src/hfp_ag/hfp_ag_rfcomm_connection.cpp",
288      "src/hfp_ag/hfp_ag_rfcomm_connection_server.cpp",
289      "src/hfp_ag/hfp_ag_sdp_client.cpp",
290      "src/hfp_ag/hfp_ag_sdp_server.cpp",
291      "src/hfp_ag/hfp_ag_service.cpp",
292      "src/hfp_ag/hfp_ag_statemachine.cpp",
293      "src/hfp_ag/hfp_ag_system_event_processer.cpp",
294      "src/hfp_ag/hfp_ag_system_interface.cpp",
295    ]
296  }
297
298  if (bluetooth_service_hfp_hf_feature) {
299    sources += [
300      "src/hfp_hf/hfp_hf_audio_connection.cpp",
301      "src/hfp_hf/hfp_hf_call_manager.cpp",
302      "src/hfp_hf/hfp_hf_command_parser.cpp",
303      "src/hfp_hf/hfp_hf_command_processor.cpp",
304      "src/hfp_hf/hfp_hf_data_connection.cpp",
305      "src/hfp_hf/hfp_hf_data_connection_server.cpp",
306      "src/hfp_hf/hfp_hf_gap_client.cpp",
307      "src/hfp_hf/hfp_hf_gap_server.cpp",
308      "src/hfp_hf/hfp_hf_profile.cpp",
309      "src/hfp_hf/hfp_hf_profile_event_sender.cpp",
310      "src/hfp_hf/hfp_hf_rfcomm_connection.cpp",
311      "src/hfp_hf/hfp_hf_rfcomm_connection_server.cpp",
312      "src/hfp_hf/hfp_hf_sdp_client.cpp",
313      "src/hfp_hf/hfp_hf_sdp_server.cpp",
314      "src/hfp_hf/hfp_hf_service.cpp",
315      "src/hfp_hf/hfp_hf_statemachine.cpp",
316    ]
317  }
318
319  if (bluetooth_service_map_client_feature) {
320    sources += [
321      "src/map_mce/map_mce_data_analyse.cpp",
322      "src/map_mce/map_mce_device_ctrl.cpp",
323      "src/map_mce/map_mce_instance_client.cpp",
324      "src/map_mce/map_mce_instance_request.cpp",
325      "src/map_mce/map_mce_instance_stm.cpp",
326      "src/map_mce/map_mce_mns_server.cpp",
327      "src/map_mce/map_mce_observer_manager.cpp",
328      "src/map_mce/map_mce_service.cpp",
329      "src/map_mce/map_mce_xml.cpp",
330    ]
331  }
332
333  if (bluetooth_service_map_server_feature) {
334    sources += [
335      "src/map_mse/map_mse_bmsg.cpp",
336      "src/map_mse/map_mse_event.cpp",
337      "src/map_mse/map_mse_folder.cpp",
338      "src/map_mse/map_mse_instance.cpp",
339      "src/map_mse/map_mse_mnscli.cpp",
340      "src/map_mse/map_mse_params.cpp",
341      "src/map_mse/map_mse_resource.cpp",
342      "src/map_mse/map_mse_server.cpp",
343      "src/map_mse/map_mse_service.cpp",
344      "src/map_mse/map_mse_vcard.cpp",
345    ]
346  }
347
348  if (bluetooth_service_pbap_client_feature) {
349    sources += [
350      "src/pbap_pce/pbap_pce_app_params.cpp",
351      "src/pbap_pce/pbap_pce_base_state.cpp",
352      "src/pbap_pce/pbap_pce_connected_state.cpp",
353      "src/pbap_pce/pbap_pce_connecting_state.cpp",
354      "src/pbap_pce/pbap_pce_disconnected_state.cpp",
355      "src/pbap_pce/pbap_pce_disconnecting_state.cpp",
356      "src/pbap_pce/pbap_pce_gap.cpp",
357      "src/pbap_pce/pbap_pce_obex_client.cpp",
358      "src/pbap_pce/pbap_pce_sdp.cpp",
359      "src/pbap_pce/pbap_pce_service.cpp",
360      "src/pbap_pce/pbap_pce_state_machine.cpp",
361    ]
362  }
363
364  if (bluetooth_service_pbap_server_feature) {
365    sources += [
366      "src/pbap_pse/pbap_pse_app_params.cpp",
367      "src/pbap_pse/pbap_pse_gap.cpp",
368      "src/pbap_pse/pbap_pse_obex_server.cpp",
369      "src/pbap_pse/pbap_pse_sdp.cpp",
370      "src/pbap_pse/pbap_pse_service.cpp",
371      "src/pbap_pse/pbap_pse_state_machine.cpp",
372      "src/pbap_pse/pbap_pse_vcard_manager.cpp",
373    ]
374  }
375
376  if (bluetooth_service_hid_host_feature) {
377    sources += [
378      "src/hid_host/hid_host_hogp.cpp",
379      "src/hid_host/hid_host_l2cap_connection.cpp",
380      "src/hid_host/hid_host_sdp_client.cpp",
381      "src/hid_host/hid_host_service.cpp",
382      "src/hid_host/hid_host_statemachine.cpp",
383      "src/hid_host/hid_host_uhid.cpp",
384    ]
385  }
386
387  if (bluetooth_service_pan_feature) {
388    sources += [
389      "src/pan/pan_bnep.cpp",
390      "src/pan/pan_network.cpp",
391      "src/pan/pan_sdp.cpp",
392      "src/pan/pan_service.cpp",
393      "src/pan/pan_statemachine.cpp",
394    ]
395  }
396
397  if (bluetooth_service_opp_feature) {
398    sources += [
399      "src/opp/opp_gap_client.cpp",
400      "src/opp/opp_gap_server.cpp",
401      "src/opp/opp_obex_client.cpp",
402      "src/opp/opp_obex_server.cpp",
403      "src/opp/opp_sdp_client.cpp",
404      "src/opp/opp_sdp_server.cpp",
405      "src/opp/opp_service.cpp",
406      "src/opp/opp_statemachine.cpp",
407      "src/opp/opp_transfer.cpp",
408    ]
409  }
410
411  deps = [
412    "$PART_DIR/external:btdummy",
413    "$PART_DIR/stack:btstack",
414    "//third_party/bounds_checking_function:libsec_shared",
415    "//third_party/libxml2:xml2",
416    "//third_party/openssl:libcrypto_shared",
417  ]
418
419  external_deps = [
420    "ability_base:want",
421    "access_token:libaccesstoken_sdk",
422    "access_token:libtokenid_sdk",
423    "audio_framework:audio_client",
424    "bluetooth:btcommon",
425    "c_utils:utils",
426    "call_manager:tel_call_manager_api",
427    "common_event_service:cesfwk_innerkits",
428    "core_service:tel_core_service_api",
429    "hdf_core:libhdi",
430    "hilog:libhilog",
431    "hisysevent:libhisysevent",
432    "ipc:ipc_core",
433    "samgr:samgr_proxy",
434    "state_registry:tel_state_registry_api",
435  ]
436
437  if (bluetooth_service_avrcp_avsession) {
438    external_deps += [
439      "ability_runtime:wantagent_innerkits",
440      "av_session:avsession_client",
441      "input:libmmi-client",
442      "multimedia_image_framework:image_native",
443    ]
444  }
445
446  subsystem_name = "communication"
447  part_name = "bluetooth_service"
448}
449
450SBC_CODEC_DIR = "$BT_SERVICE_DIR/src/gavdp/a2dp_codec/sbclib"
451ohos_shared_library("btsbc") {
452  # sanitize = {
453  #   cfi = true
454  # }
455  stack_protector_ret = true
456  sources = [
457    "$SBC_CODEC_DIR/src/sbc_decoder.cpp",
458    "$SBC_CODEC_DIR/src/sbc_encoder.cpp",
459    "$SBC_CODEC_DIR/src/sbc_frame.cpp",
460  ]
461
462  deps = [
463    "$PART_DIR/external:btdummy",
464    "//third_party/bounds_checking_function:libsec_shared",
465  ]
466
467  external_deps = [ "hilog:libhilog" ]
468
469  cflags = [ "-Wno-array-bounds" ]
470  subsystem_name = "communication"
471  part_name = "bluetooth_service"
472}
473