diff --git a/erpc/host_example/main.c b/erpc/host_example/main.c
index ddf2665..1545525 100644
--- a/erpc/host_example/main.c
+++ b/erpc/host_example/main.c
@@ -15,6 +15,13 @@
 #include "psa/client.h"
 #include "psa/crypto.h"
 
+#if (!defined(ERPC_TRANSPORT_UART)) && (!defined(ERPC_TRANSPORT_TCP))
+#include <stdlib.h>
+#include <getopt.h>
+#define ARGC_UART 3
+#define ARGC_TCP 4
+#endif
+
 static void test_call(void)
 {
     psa_status_t status;
@@ -37,12 +44,61 @@
 {
     erpc_transport_t transport;
 
+#if (!defined(ERPC_TRANSPORT_UART)) && (!defined(ERPC_TRANSPORT_TCP))
+    int erpc_uart_flag = 0, erpc_tcp_flag = 0;
+    char *uart_dev = NULL, *tcp_host = NULL, *tcp_port = NULL;
+    struct option erpc_transport_options[] =
+    {
+        {"UART", no_argument, &erpc_uart_flag, 1},
+        {"TCP", no_argument, &erpc_tcp_flag, 1},
+        {0, 0, 0, 0}
+    };
+#endif
+
 #ifdef ERPC_TRANSPORT_UART
     transport = erpc_transport_serial_init(PORT_NAME, 115200);
 #elif defined(ERPC_TRANSPORT_TCP)
     transport = erpc_transport_tcp_init(ERPC_HOST, ERPC_PORT, false);
 #else
-#error "No valid transportation layer selected."
+    /* Check if argc is correct */
+    if (argc != ARGC_UART && argc != ARGC_TCP) {
+        printf("Incorrect argument numbers.\r\n");
+        printf("Please input --UART PORT or --TCP HOST PORT\r\n");
+        return 1;
+    }
+
+    /* Loop check to set _flag and parse arguments */
+    while (getopt_long(argc, argv, "", erpc_transport_options, NULL) != -1);
+    if (!erpc_uart_flag && !erpc_tcp_flag) {
+        printf("No valid transportation layer selected.\r\n");
+        return 1;
+    } else if(erpc_uart_flag && erpc_tcp_flag) {
+        printf("UART and TCP cannot be set at the same time.\r\n");
+        return 1;
+    } else if (erpc_uart_flag) {
+        if (argc - optind != 1) {
+            printf("Incorrect argument numbers for --UART.\r\n");
+            return 1;
+        }
+        uart_dev = argv[optind];
+    } else if (erpc_tcp_flag) {
+        if (argc - optind != 2) {
+            printf("Incorrect argument numbers for --TCP.\r\n");
+        return 1;
+        }
+        tcp_host = argv[optind];
+        tcp_port = argv[optind + 1];
+    }
+
+    /* eRPC transport initialization */
+    if (erpc_uart_flag) {
+        printf("UART device is setting to %s\r\n",uart_dev);
+        transport = erpc_transport_serial_init(uart_dev, 115200);
+    } else if (erpc_tcp_flag) {
+        printf("TCP host is setting to %s\t",tcp_host);
+        printf("TCP port is setting to %s\r\n",tcp_port);
+        transport = erpc_transport_tcp_init(tcp_host, atoi(tcp_port), false);
+    }
 #endif
 
     if (!transport) {
