blob: ec5ea5584b1c86c084c43115054f31dae16ac24c [file] [log] [blame]
Austin Schuh8d5fff42018-05-30 20:44:12 -07001#include <netdb.h>
2
Alex Perrycb7da4b2019-08-28 19:35:56 -07003#include "aos/events/shm_event_loop.h"
Austin Schuh300f2f62019-05-27 13:49:23 -07004#include "aos/init.h"
John Park33858a32018-09-28 23:05:48 -07005#include "aos/logging/logging.h"
John Park33858a32018-09-28 23:05:48 -07006#include "aos/time/time.h"
Austin Schuh8d5fff42018-05-30 20:44:12 -07007#include "aos/vision/events/udp.h"
8#include "y2018/vision.pb.h"
Alex Perrycb7da4b2019-08-28 19:35:56 -07009#include "y2018/vision/vision_generated.h"
Austin Schuh8d5fff42018-05-30 20:44:12 -070010
Stephan Pleinesf63bde82024-01-13 15:59:33 -080011namespace y2018::vision {
Austin Schuh8d5fff42018-05-30 20:44:12 -070012
13using aos::monotonic_clock;
14
15int Main() {
Alex Perrycb7da4b2019-08-28 19:35:56 -070016 aos::FlatbufferDetachedBuffer<aos::Configuration> config =
Austin Schuhc5fa6d92022-02-25 14:36:28 -080017 aos::configuration::ReadConfig("aos_config.json");
Alex Perrycb7da4b2019-08-28 19:35:56 -070018
Austin Schuh8d5fff42018-05-30 20:44:12 -070019 ::aos::events::RXUdpSocket video_rx(5001);
20 char data[65507];
21 ::y2018::VisionStatus status;
Alex Perrycb7da4b2019-08-28 19:35:56 -070022
23 ::aos::ShmEventLoop event_loop(&config.message());
24 ::aos::Sender<VisionStatus> vision_status_sender_ =
25 event_loop.MakeSender<VisionStatus>("/superstructure");
Austin Schuh8d5fff42018-05-30 20:44:12 -070026
27 while (true) {
28 const ssize_t rx_size = video_rx.Recv(data, sizeof(data));
29 if (rx_size > 0) {
30 status.ParseFromArray(data, rx_size);
Alex Perrycb7da4b2019-08-28 19:35:56 -070031
32 auto builder = vision_status_sender_.MakeBuilder();
33 VisionStatus::Builder vision_status_builder =
34 builder.MakeBuilder<VisionStatus>();
35 vision_status_builder.add_high_frame_count(status.high_frame_count());
36 vision_status_builder.add_low_frame_count(status.low_frame_count());
milind1f1dca32021-07-03 13:50:07 -070037 if (builder.Send(vision_status_builder.Finish()) !=
38 aos::RawSender::Error::kOk) {
Austin Schuhf257f3c2019-10-27 21:00:43 -070039 AOS_LOG(ERROR, "Failed to send vision information\n");
Austin Schuh8d5fff42018-05-30 20:44:12 -070040 }
41 }
42 }
43}
44
Stephan Pleinesf63bde82024-01-13 15:59:33 -080045} // namespace y2018::vision
Austin Schuh8d5fff42018-05-30 20:44:12 -070046
Austin Schuh094d09b2020-11-20 23:26:52 -080047int main(int argc, char **argv) {
48 ::aos::InitGoogle(&argc, &argv);
Austin Schuh8d5fff42018-05-30 20:44:12 -070049 ::y2018::vision::Main();
50}