1# Copyright 2020 The Pigweed Authors 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); you may not 4# use this file except in compliance with the License. You may obtain a copy of 5# the License at 6# 7# https://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12# License for the specific language governing permissions and limitations under 13# the License. 14 15load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library") 16load("@rules_cc//cc:cc_library.bzl", "cc_library") 17load("@rules_python//python:proto.bzl", "py_proto_library") 18load("@rules_python//sphinxdocs:sphinx_docs_library.bzl", "sphinx_docs_library") 19load("//pw_build:compatibility.bzl", "incompatible_with_mcu") 20load( 21 "//pw_protobuf_compiler:pw_proto_library.bzl", 22 "pwpb_proto_library", 23 "pwpb_rpc_proto_library", 24) 25load("//pw_unit_test:pw_cc_test.bzl", "pw_cc_test") 26 27package( 28 default_visibility = ["//visibility:public"], 29) 30 31licenses(["notice"]) 32 33cc_library( 34 name = "pw_digital_io", 35 srcs = ["digital_io.cc"], 36 hdrs = [ 37 "public/pw_digital_io/digital_io.h", 38 "public/pw_digital_io/internal/conversions.h", 39 "public/pw_digital_io/polarity.h", 40 ], 41 strip_include_prefix = "public", 42 deps = [ 43 "//pw_assert:check", 44 "//pw_function", 45 "//pw_result", 46 "//pw_status", 47 "//pw_toolchain:sibling_cast", 48 ], 49) 50 51pw_cc_test( 52 name = "digital_io_test", 53 srcs = ["digital_io_test.cc"], 54 deps = [ 55 ":pw_digital_io", 56 "//pw_status", 57 ], 58) 59 60cc_library( 61 name = "digital_io_service", 62 srcs = ["digital_io_service.cc"], 63 hdrs = ["public/pw_digital_io/digital_io_service.h"], 64 strip_include_prefix = "public", 65 deps = [ 66 ":digital_io_proto_pwpb", 67 ":digital_io_proto_pwpb_rpc", 68 ":pw_digital_io", 69 "//pw_function", 70 "//pw_log", 71 "//pw_result", 72 "//pw_rpc/pwpb:server_api", 73 "//pw_span", 74 "//pw_status", 75 ], 76) 77 78proto_library( 79 name = "digital_io_proto", 80 srcs = ["digital_io.proto"], 81) 82 83pwpb_proto_library( 84 name = "digital_io_proto_pwpb", 85 deps = [":digital_io_proto"], 86) 87 88pwpb_rpc_proto_library( 89 name = "digital_io_proto_pwpb_rpc", 90 pwpb_proto_library_deps = [":digital_io_proto_pwpb"], 91 deps = [":digital_io_proto"], 92) 93 94py_proto_library( 95 name = "digital_io_proto_py_pb2", 96 deps = [":digital_io_proto"], 97) 98 99cc_library( 100 name = "digital_io_mock", 101 srcs = ["digital_io_mock.cc"], 102 hdrs = ["public/pw_digital_io/digital_io_mock.h"], 103 implementation_deps = [ 104 "//pw_log", 105 ], 106 strip_include_prefix = "public", 107 deps = [ 108 "//pw_assert:check", 109 "//pw_chrono:system_clock", 110 "//pw_containers:inline_deque", 111 "//pw_digital_io", 112 "//pw_result", 113 ], 114) 115 116pw_cc_test( 117 name = "digital_io_mock_test", 118 srcs = ["digital_io_mock_test.cc"], 119 deps = [ 120 ":digital_io_mock", 121 "//pw_status", 122 ], 123) 124 125filegroup( 126 name = "doxygen", 127 srcs = [ 128 "public/pw_digital_io/digital_io.h", 129 "public/pw_digital_io/digital_io_mock.h", 130 ], 131) 132 133sphinx_docs_library( 134 name = "docs", 135 srcs = [ 136 "backends.rst", 137 "docs.rst", 138 ], 139 prefix = "pw_digital_io/", 140 target_compatible_with = incompatible_with_mcu(), 141) 142