• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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