@@ -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