#include "server.h"
#include "target.h"
+#include "openocd.h"
+#include "tcl_server.h"
+#include "telnet_server.h"
#include <signal.h>
/* set when using pipes rather than tcp */
int server_use_pipes = 0;
-int add_connection(struct service *service, command_context_t *cmd_ctx)
+int add_connection(struct service *service, struct command_context *cmd_ctx)
{
socklen_t address_size;
struct connection *c, **p;
return ERROR_OK;
}
-extern void openocd_sleep_prelude(void);
-extern void openocd_sleep_postlude(void);
-
-int server_loop(command_context_t *command_context)
+int server_loop(struct command_context *command_context)
{
struct service *service;
while (!shutdown_openocd)
{
- /* monitor sockets for acitvity */
+ /* monitor sockets for activity */
fd_max = 0;
FD_ZERO(&read_fds);
}
target_call_timer_callbacks();
- process_jim_events ();
+ process_jim_events(command_context);
if (retval == 0)
{
}
#endif
-int server_init(void)
+int server_init(struct command_context *cmd_ctx)
{
#ifdef _WIN32
WORD wVersionRequested;
signal(SIGABRT, sig_handler);
#endif
- return ERROR_OK;
+ int ret = tcl_init(cmd_ctx);
+ if (ERROR_OK != ret)
+ return ret;
+
+ return telnet_init("Open On-Chip Debugger");
}
int server_quit(void)
return ERROR_COMMAND_CLOSE_CONNECTION;
}
-int server_register_commands(command_context_t *context)
+static const struct command_registration server_command_handlers[] = {
+ {
+ .name = "shutdown",
+ .handler = &handle_shutdown_command,
+ .mode = COMMAND_ANY,
+ .help = "shut the server down",
+ },
+ COMMAND_REGISTRATION_DONE
+};
+
+int server_register_commands(struct command_context *cmd_ctx)
{
- register_command(context, NULL, "shutdown",
- handle_shutdown_command, COMMAND_ANY,
- "shut the server down");
+ int retval = telnet_register_commands(cmd_ctx);
+ if (ERROR_OK != retval)
+ return retval;
- return ERROR_OK;
-}
+ retval = tcl_register_commands(cmd_ctx);
+ if (ERROR_OK != retval)
+ return retval;
+ return register_commands(cmd_ctx, NULL, server_command_handlers);
+}
SERVER_PORT_COMMAND()
{
- switch (argc) {
+ switch (CMD_ARGC) {
case 0:
- command_print(cmd_ctx, "%d", *out);
+ command_print(CMD_CTX, "%d", *out);
break;
case 1:
{
uint16_t port;
- COMMAND_PARSE_NUMBER(u16, args[0], port);
+ COMMAND_PARSE_NUMBER(u16, CMD_ARGV[0], port);
*out = port;
break;
}