blob: 3d3faf5f1d76b425b1202dad3b945f476a933290 [file] [log] [blame]
Austin Schuh8d5fff42018-05-30 20:44:12 -07001#include <netdb.h>
2
Austin Schuh300f2f62019-05-27 13:49:23 -07003#include "aos/events/shm-event-loop.h"
4#include "aos/init.h"
John Park33858a32018-09-28 23:05:48 -07005#include "aos/logging/logging.h"
6#include "aos/logging/queue_logging.h"
7#include "aos/time/time.h"
Austin Schuh8d5fff42018-05-30 20:44:12 -07008#include "aos/vision/events/udp.h"
9#include "y2018/vision.pb.h"
10#include "y2018/vision/vision.q.h"
11
12namespace y2018 {
13namespace vision {
14
15using aos::monotonic_clock;
16
17int Main() {
18 ::aos::events::RXUdpSocket video_rx(5001);
19 char data[65507];
20 ::y2018::VisionStatus status;
Austin Schuh300f2f62019-05-27 13:49:23 -070021 ::aos::ShmEventLoop event_loop;
22 ::aos::Sender<::y2018::vision::VisionStatus> vision_status_sender_ =
23 event_loop.MakeSender<::y2018::vision::VisionStatus>(
24 ".y2018.vision.vision_status");
Austin Schuh8d5fff42018-05-30 20:44:12 -070025
26 while (true) {
27 const ssize_t rx_size = video_rx.Recv(data, sizeof(data));
28 if (rx_size > 0) {
29 status.ParseFromArray(data, rx_size);
Austin Schuh300f2f62019-05-27 13:49:23 -070030 auto new_vision_status = vision_status_sender_.MakeMessage();
Austin Schuh8d5fff42018-05-30 20:44:12 -070031 new_vision_status->high_frame_count = status.high_frame_count();
32 new_vision_status->low_frame_count = status.low_frame_count();
33 LOG_STRUCT(DEBUG, "vision", *new_vision_status);
34 if (!new_vision_status.Send()) {
35 LOG(ERROR, "Failed to send vision information\n");
36 }
37 }
38 }
39}
40
41} // namespace vision
42} // namespace y2018
43
44int main(int /*argc*/, char ** /*argv*/) {
45 ::aos::InitNRT();
46 ::y2018::vision::Main();
47}