Skip to content

Commit 5dbecdd

Browse files
committed
Added InterfaceConfigType::ALL_PARAMETERS option for bulk configuration.
1 parent 44126c7 commit 5dbecdd

1 file changed

Lines changed: 67 additions & 0 deletions

File tree

src/point_one/fusion_engine/messages/configuration.h

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1605,6 +1605,18 @@ enum class InterfaceConfigType : uint8_t {
16051605
* Payload format: @ref UNIXSocketType
16061606
*/
16071607
UNIX_SOCKET_TYPE = 7,
1608+
1609+
/**
1610+
* Configure all settings for the specified interface/transport type.
1611+
*
1612+
* Payload format depends on the @ref TransportType%:
1613+
* - @ref TransportType::SERIAL - @ref SerialConfig
1614+
* - @ref TransportType::TCP - @ref TCPConfig
1615+
* - @ref TransportType::UDP - @ref UDPConfig
1616+
* - @ref TransportType::WEBSOCKET - @ref WebsocketConfig
1617+
* - @ref TransportType::UNIX - @ref UNIXSocketConfig
1618+
*/
1619+
ALL_PARAMETERS = 8,
16081620
};
16091621

16101622
/**
@@ -1641,6 +1653,9 @@ P1_CONSTEXPR_FUNC const char* to_string(InterfaceConfigType type) {
16411653
case InterfaceConfigType::UNIX_SOCKET_TYPE:
16421654
return "UNIX Socket Type";
16431655

1656+
case InterfaceConfigType::ALL_PARAMETERS:
1657+
return "All Parameters";
1658+
16441659
default:
16451660
return "Unrecognized Configuration";
16461661
}
@@ -2219,6 +2234,58 @@ inline p1_ostream& operator<<(p1_ostream& stream, MessageRate val) {
22192234
return stream;
22202235
}
22212236

2237+
/**
2238+
* @param TCP client/server interface configuration parameters.
2239+
* @ingroup io_interfaces
2240+
*/
2241+
struct P1_ALIGNAS(4) TCPConfig {
2242+
TransportDirection direction = TransportDirection::SERVER;
2243+
uint8_t reserved[1] = {0};
2244+
uint16_t port = 0;
2245+
char remote_address[64] = {0};
2246+
};
2247+
2248+
/**
2249+
* @param UDP interface configuration parameters.
2250+
* @ingroup io_interfaces
2251+
*/
2252+
struct P1_ALIGNAS(4) UDPConfig {
2253+
uint8_t reserved[2] = {0};
2254+
uint16_t port = 0;
2255+
char remote_address[64] = {0};
2256+
};
2257+
2258+
/**
2259+
* @param WebSocket client/server interface configuration parameters.
2260+
* @ingroup io_interfaces
2261+
*/
2262+
struct P1_ALIGNAS(4) WebsocketConfig {
2263+
TransportDirection direction = TransportDirection::SERVER;
2264+
uint8_t reserved[1] = {0};
2265+
uint16_t port = 0;
2266+
char remote_address[64] = {0};
2267+
};
2268+
2269+
/**
2270+
* @param UNIX domain socket client/server interface configuration parameters.
2271+
* @ingroup io_interfaces
2272+
*/
2273+
struct P1_ALIGNAS(4) UNIXSocketConfig {
2274+
TransportDirection direction = TransportDirection::SERVER;
2275+
UNIXSocketType socket_type = UNIXSocketType::STREAM;
2276+
uint8_t reserved[2] = {0};
2277+
char path[64] = {0};
2278+
};
2279+
2280+
/**
2281+
* @param Serial port (UART) interface configuration parameters.
2282+
* @ingroup io_interfaces
2283+
*/
2284+
struct P1_ALIGNAS(4) SerialConfig {
2285+
uint32_t baud_rate = 0;
2286+
char device_path[64] = {0};
2287+
};
2288+
22222289
/**
22232290
* @brief I/O interface parameter configuration submessage (used when sending
22242291
* a @ref SetConfigMessage or @ref GetConfigMessage for @ref

0 commit comments

Comments
 (0)