Renderer, ...: use PixelRect::GetCenter()
[xcsoar.git] / test / src / FeedVega.cpp
blob14c95e416d59e2cc217cdd71096be20095cb819d
1 /*
2 Copyright_License {
4 XCSoar Glide Computer - http://www.xcsoar.org/
5 Copyright (C) 2000-2013 The XCSoar Project
6 A detailed list of copyright holders can be found in the file "AUTHORS".
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License
10 as published by the Free Software Foundation; either version 2
11 of the License, or (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
24 #include "DebugPort.hpp"
25 #include "Device/Port/Port.hpp"
26 #include "Device/Port/ConfiguredPort.hpp"
27 #include "Profile/DeviceConfig.hpp"
28 #include "OS/Args.hpp"
29 #include "OS/Sleep.h"
30 #include "Operation/ConsoleOperationEnvironment.hpp"
31 #include "IO/Async/GlobalIOThread.hpp"
32 #include "IO/DataHandler.hpp"
34 #include <stdio.h>
35 #include <stdlib.h>
37 class MyHandler : public DataHandler {
38 public:
39 virtual void DataReceived(const void *data, size_t length) {
40 fwrite(data, 1, length, stdout);
44 int
45 main(int argc, char **argv)
47 Args args(argc, argv, "PORT BAUD");
48 const DeviceConfig config = ParsePortArgs(args);
49 args.ExpectEnd();
51 InitialiseIOThread();
53 MyHandler handler;
54 Port *port = OpenPort(config, handler);
55 if (port == NULL) {
56 fprintf(stderr, "Failed to open COM port\n");
57 return EXIT_FAILURE;
60 /* turn off output buffering */
61 setvbuf(stdout, NULL, _IONBF, 0);
63 if (!port->StartRxThread()) {
64 delete port;
65 fprintf(stderr, "Failed to start the port thread\n");
66 return EXIT_FAILURE;
69 ConsoleOperationEnvironment env;
71 unsigned long last_stamp = -1;
72 char line[1024];
73 while (fgets(line, sizeof(line), stdin) != NULL) {
74 char *endptr;
75 unsigned long current_stamp = strtoul(line, &endptr, 10);
76 if (endptr == line || *endptr != ' ' || endptr[1] != '<')
77 continue;
79 char *start = endptr + 2;
80 char *end = strchr(start, '>');
81 if (end == NULL)
82 continue;
84 *end++ = '\n';
85 *end = 0;
87 if (current_stamp > last_stamp) {
88 unsigned long delta_t = std::min(current_stamp - last_stamp, 1000ul);
89 Sleep(delta_t);
92 last_stamp = current_stamp;
94 if (!port->FullWrite(start, end - start, env, 1000)) {
95 fprintf(stderr, "Failed to write to port\n");
96 delete port;
97 return EXIT_FAILURE;
102 delete port;
103 DeinitialiseIOThread();
104 return EXIT_SUCCESS;