blob: 06700380d273fdda69d27bb2fb0e3c06439e1c17 [file] [log] [blame]
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -07001load("//aos:config.bzl", "aos_config")
Austin Schuh8f99c822024-05-05 22:43:40 -07002load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -07003load("//aos/util:config_validator_macro.bzl", "config_validator_test")
Austin Schuh8f99c822024-05-05 22:43:40 -07004load("//frc971:downloader.bzl", "robot_downloader")
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -07005
6config_validator_test(
7 name = "config_validator_test",
Nikolai Sohmers3cc1fc22024-05-04 12:27:58 -07008 config = "//y2024_swerve:aos_config",
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -07009)
10
11robot_downloader(
12 binaries = [
13 "//aos/network:web_proxy_main",
14 "//aos/events/logging:log_cat",
15 "//aos/events:aos_timing_report_streamer",
16 ],
17 data = [
18 ":aos_config",
19 ":swerve_publisher_output_json",
20 "@ctre_phoenix6_api_cpp_athena//:shared_libraries",
21 "@ctre_phoenix6_tools_athena//:shared_libraries",
22 "@ctre_phoenix_api_cpp_athena//:shared_libraries",
23 "@ctre_phoenix_cci_athena//:shared_libraries",
24 ],
25 start_binaries = [
26 "//aos/events/logging:logger_main",
27 "//aos/network:web_proxy_main",
28 "//aos/starter:irq_affinity",
29 ":wpilib_interface",
30 ":swerve_publisher",
31 "//frc971/can_logger",
32 "//aos/network:message_bridge_client",
33 "//aos/network:message_bridge_server",
34 ],
35 target_compatible_with = ["@platforms//os:linux"],
36)
37
38robot_downloader(
39 name = "pi_download",
40 binaries = [
41 "//aos/util:foxglove_websocket",
42 "//aos/events:aos_timing_report_streamer",
43 "//aos/events/logging:log_cat",
44 "//y2023/rockpi:imu_main",
45 "//frc971/image_streamer:image_streamer",
46 "//aos/network:message_bridge_client",
47 "//aos/network:message_bridge_server",
48 "//aos/network:web_proxy_main",
49 "//aos/starter:irq_affinity",
50 "//aos/events/logging:logger_main",
51 ],
52 data = [
53 ":aos_config",
54 "//frc971/rockpi:rockpi_config.json",
55 ],
56 start_binaries = [
57 ],
58 target_compatible_with = ["//tools/platforms/hardware:raspberry_pi"],
59 target_type = "pi",
60)
61
62filegroup(
63 name = "swerve_publisher_output_json",
64 srcs = [
65 "swerve_drivetrain_output.json",
66 ],
Nikolai Sohmers3cc1fc22024-05-04 12:27:58 -070067 visibility = ["//y2024_swerve:__subpackages__"],
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -070068)
69
70cc_library(
71 name = "constants",
72 srcs = ["constants.cc"],
73 hdrs = [
74 "constants.h",
75 ],
76 visibility = ["//visibility:public"],
77 deps = [
78 "//aos/network:team_number",
79 "//frc971:constants",
80 ],
81)
82
James Kuszmaulf01da392023-12-14 11:22:14 -080083static_flatbuffer(
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -070084 name = "drivetrain_position_fbs",
85 srcs = ["drivetrain_position.fbs"],
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -070086 deps = ["//frc971/control_loops:control_loops_fbs"],
87)
88
James Kuszmaulf01da392023-12-14 11:22:14 -080089static_flatbuffer(
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -070090 name = "drivetrain_can_position_fbs",
91 srcs = ["drivetrain_can_position.fbs"],
Maxwell Henderson10ed5c32024-01-09 12:40:54 -080092 deps = ["//frc971/control_loops:can_talonfx_fbs"],
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -070093)
94
95cc_binary(
96 name = "swerve_publisher",
97 srcs = ["swerve_publisher_main.cc"],
98 deps = [
99 ":swerve_publisher_lib",
100 "//aos/events:shm_event_loop",
101 "@com_github_gflags_gflags//:gflags",
102 ],
103)
104
105cc_library(
106 name = "swerve_publisher_lib",
107 srcs = ["swerve_publisher_lib.cc"],
108 hdrs = ["swerve_publisher_lib.h"],
109 deps = [
110 "//aos:init",
111 "//aos/events:event_loop",
James Kuszmauld938d332024-05-15 20:47:19 -0700112 "//frc971/control_loops/swerve:swerve_drivetrain_output_fbs",
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -0700113 "@com_github_google_glog//:glog",
114 ],
115)
116
117cc_test(
118 name = "swerve_publisher_lib_test",
119 srcs = [
120 "swerve_publisher_lib_test.cc",
121 ],
122 data = [
123 ":aos_config",
124 ":swerve_publisher_output_json",
125 ],
126 deps = [
127 ":swerve_publisher_lib",
128 "//aos/events:simulated_event_loop",
129 "//aos/testing:googletest",
130 ],
131)
132
133cc_binary(
134 name = "wpilib_interface",
135 srcs = ["wpilib_interface.cc"],
136 target_compatible_with = ["//tools/platforms/hardware:roborio"],
137 deps = [
138 ":constants",
139 ":drivetrain_can_position_fbs",
140 ":drivetrain_position_fbs",
141 "//aos:init",
142 "//aos/events:shm_event_loop",
143 "//frc971/control_loops:control_loops_fbs",
James Kuszmauld938d332024-05-15 20:47:19 -0700144 "//frc971/control_loops/swerve:swerve_drivetrain_position_fbs",
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -0700145 "//frc971/wpilib:can_sensor_reader",
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -0700146 "//frc971/wpilib:sensor_reader",
Maxwell Henderson10ed5c32024-01-09 12:40:54 -0800147 "//frc971/wpilib:talonfx",
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -0700148 "//frc971/wpilib:wpilib_robot_base",
149 "//frc971/wpilib/swerve:swerve_drivetrain_writer",
150 ],
151)
152
153aos_config(
154 name = "aos_config",
Nikolai Sohmers3cc1fc22024-05-04 12:27:58 -0700155 src = "y2024_swerve.json",
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -0700156 flatbuffers = [
157 "//aos/network:message_bridge_client_fbs",
158 "//aos/network:message_bridge_server_fbs",
159 "//aos/network:timestamp_fbs",
160 "//frc971/input:robot_state_fbs",
161 ],
162 target_compatible_with = ["@platforms//os:linux"],
163 visibility = ["//visibility:public"],
164 deps = [
165 ":config_imu",
166 ":config_logger",
167 ":config_roborio",
168 ],
169)
170
171aos_config(
172 name = "config_roborio",
Nikolai Sohmers3cc1fc22024-05-04 12:27:58 -0700173 src = "y2024_swerve_roborio.json",
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -0700174 flatbuffers = [
175 ":drivetrain_position_fbs",
176 ":drivetrain_can_position_fbs",
177 "//frc971:can_configuration_fbs",
178 "//aos/network:remote_message_fbs",
179 "//aos/network:message_bridge_client_fbs",
180 "//aos/network:message_bridge_server_fbs",
181 "//aos/network:timestamp_fbs",
James Kuszmauld938d332024-05-15 20:47:19 -0700182 "//frc971/control_loops/swerve:swerve_drivetrain_output_fbs",
183 "//frc971/control_loops/swerve:swerve_drivetrain_position_fbs",
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -0700184 "//frc971/control_loops/drivetrain:drivetrain_can_position_fbs",
185 "//frc971/can_logger:can_logging_fbs",
186 ],
187 target_compatible_with = ["@platforms//os:linux"],
188 deps = [
189 "//aos/events:aos_config",
190 "//frc971/autonomous:aos_config",
191 "//frc971/control_loops/drivetrain:aos_config",
192 "//frc971/input:aos_config",
193 "//frc971/wpilib:aos_config",
194 ],
195)
196
197aos_config(
198 name = "config_imu",
Nikolai Sohmers3cc1fc22024-05-04 12:27:58 -0700199 src = "y2024_swerve_imu.json",
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -0700200 flatbuffers = [
201 "//aos/network:message_bridge_client_fbs",
202 "//aos/network:message_bridge_server_fbs",
203 "//aos/network:timestamp_fbs",
204 "//aos/network:remote_message_fbs",
205 "//frc971/vision:target_map_fbs",
206 ],
207 target_compatible_with = ["@platforms//os:linux"],
208 visibility = ["//visibility:public"],
209 deps = [
210 "//aos/events:aos_config",
211 "//frc971/control_loops/drivetrain:aos_config",
212 ],
213)
214
215aos_config(
216 name = "config_logger",
Nikolai Sohmers3cc1fc22024-05-04 12:27:58 -0700217 src = "y2024_swerve_logger.json",
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -0700218 flatbuffers = [
219 "//aos/network:message_bridge_client_fbs",
220 "//aos/network:message_bridge_server_fbs",
221 "//aos/network:timestamp_fbs",
222 "//aos/network:remote_message_fbs",
223 "//frc971/vision:calibration_fbs",
224 "//frc971/vision:target_map_fbs",
225 ],
226 target_compatible_with = ["@platforms//os:linux"],
227 visibility = ["//visibility:public"],
228 deps = [
229 "//aos/events:aos_config",
230 "//frc971/control_loops/drivetrain:aos_config",
231 "//frc971/input:aos_config",
232 ],
233)