Skip to content

Commit 222c606

Browse files
committed
Added InterfaceConfigType::ALL_PARAMETERS option for bulk configuration.
1 parent ea146c7 commit 222c606

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
@@ -1608,6 +1608,18 @@ enum class InterfaceConfigType : uint8_t {
16081608
* Payload format: @ref UNIXSocketType
16091609
*/
16101610
UNIX_SOCKET_TYPE = 7,
1611+
1612+
/**
1613+
* Configure all settings for the specified interface/transport type.
1614+
*
1615+
* Payload format depends on the @ref TransportType%:
1616+
* - @ref TransportType::SERIAL - @ref SerialConfig
1617+
* - @ref TransportType::TCP - @ref TCPConfig
1618+
* - @ref TransportType::UDP - @ref UDPConfig
1619+
* - @ref TransportType::WEBSOCKET - @ref WebsocketConfig
1620+
* - @ref TransportType::UNIX - @ref UNIXSocketConfig
1621+
*/
1622+
ALL_PARAMETERS = 8,
16111623
};
16121624

16131625
/**
@@ -1644,6 +1656,9 @@ P1_CONSTEXPR_FUNC const char* to_string(InterfaceConfigType type) {
16441656
case InterfaceConfigType::UNIX_SOCKET_TYPE:
16451657
return "UNIX Socket Type";
16461658

1659+
case InterfaceConfigType::ALL_PARAMETERS:
1660+
return "All Parameters";
1661+
16471662
default:
16481663
return "Unrecognized Configuration";
16491664
}
@@ -2222,6 +2237,58 @@ inline p1_ostream& operator<<(p1_ostream& stream, MessageRate val) {
22222237
return stream;
22232238
}
22242239

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

0 commit comments

Comments
 (0)