Line data Source code
1 : /* 2 : This program is free software: you can redistribute it and/or modify 3 : it under the terms of the GNU General Public License as published by 4 : the Free Software Foundation, either version 3 of the License, or 5 : (at your option) any later version. 6 : 7 : This program is distributed in the hope that it will be useful, 8 : but WITHOUT ANY WARRANTY; without even the implied warranty of 9 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 : GNU General Public License for more details. 11 : 12 : You should have received a copy of the GNU General Public License 13 : along with this program. If not, see <http://www.gnu.org/licenses/>. 14 : */ 15 : /* 16 : Send and receive JSON backend data to alow a second AP instance to ride along 17 : */ 18 : 19 : #pragma once 20 : 21 : #include "SIM_config.h" 22 : 23 : #if AP_SIM_JSON_MASTER_ENABLED 24 : 25 : #include "SITL_Input.h" 26 : #include <AP_HAL/utility/Socket_native.h> 27 : #include <AP_Math/AP_Math.h> 28 : 29 : namespace SITL { 30 : 31 : class JSON_Master { 32 : public: 33 2145 : JSON_Master() {}; 34 : 35 : // setup sockets 36 : void init(const int32_t num_slaves); 37 : 38 : // Receive PWM outs from ride along controlers 39 : void receive(struct sitl_input &input); 40 : 41 : // send vehicle state to ride along controlers 42 : void send(const struct sitl_fdm &output, const Vector3d &position); 43 : 44 : private: 45 : 46 : struct socket_list { 47 : SocketAPM_native sock_in{true}; 48 : SocketAPM_native sock_out{true}; 49 : uint8_t instance; 50 : bool connected; 51 : socket_list *next; 52 : } _list; 53 : 54 : char *json_out; 55 : 56 : bool initialized; 57 : 58 : }; 59 : 60 : } 61 : 62 : #endif // AP_SIM_JSON_MASTER_ENABLED