27 #include <unordered_map>
30 #include <arpirobot/core/network/MainVmon.hpp>
31 #include <arpirobot/core/network/ControllerData.hpp>
32 #include <arpirobot/core/network/NetworkTable.hpp>
34 using namespace asio::ip;
87 const extern std::string COMMAND_ENABLE;
88 const extern std::string COMMAND_DISABLE;
89 const extern std::string COMMAND_NET_TABLE_SYNC;
92 const extern uint8_t NET_TABLE_START_SYNC_DATA[];
93 const extern std::string NET_TABLE_END_SYNC_DATA;
109 static void startNetworking(std::function<
void()> enableFunc, std::function<
void()> disableFunc);
122 static bool sendNtRaw(const_buffer buffer);
129 static bool sendNt(std::string key, std::string value);
135 static void sendLogMessage(std::string message);
141 static void setMainVmon(
MainVmon *vmon);
148 static bool isMainVmon(
MainVmon *vmon);
154 static void sendMainBatteryVoltage(
double voltage);
159 static void runNetworking();
165 static void receiveFrom(
const tcp::socket &client);
170 static void handleConnectionStatusChanged();
174 static void handleAccept(
const tcp::socket &client,
const std::error_code &ec);
175 static void handleDisconnect(
const tcp::socket &client);
176 static void handleTcpReceive(
const tcp::socket &client,
const std::error_code &ec, std::size_t count);
177 static void handleUdpReceive(
const std::error_code &ec, std::size_t count);
179 static void handleCommand();
181 static void handleNetTableData();
183 static void handleControllerData(std::vector<uint8_t> &data);
185 static std::unordered_map<int, std::shared_ptr<ControllerData>> controllerData;
188 static std::thread *networkThread;
191 static bool isDsConnected;
192 static bool networkingStarted;
197 static std::array<uint8_t, 32> tmpCommandRxBuf;
198 static std::array<uint8_t, 32> tmpNetTableRxBuf;
199 static std::array<uint8_t, 32> tmpControllerRxBuf;
202 static std::vector<uint8_t> commandRxData;
203 static std::vector<uint8_t> netTableRxData;
206 static io_service io;
207 static io_service::work wk;
209 static udp::socket controllerSocket;
210 static tcp::acceptor commandSocketAcceptor;
211 static tcp::acceptor netTableSocketAcceptor;
212 static tcp::acceptor logSocketAcceptor;
215 static udp::endpoint controllerDataEndpoint;
216 static tcp::socket commandClient;
217 static tcp::socket netTableClient;
218 static tcp::socket logClient;
222 static std::function<void()> enableFunc;
223 static std::function<void()> disableFunc;
225 static std::unordered_map<std::string, std::string> ntSyncData;
Definition: Gamepad.hpp:34
Definition: Logger.hpp:33
Definition: MainVmon.hpp:30
Definition: NetworkManager.hpp:101
static void stopNetworking()
static void startNetworking(std::function< void()> enableFunc, std::function< void()> disableFunc)
Definition: NetworkTable.hpp:32
Definition: ArduinoDevice.hpp:27