Remote Control


This is is a preliminary implementation

When started with the -c or --control option (see SDRVM for all options), a dedicated web server is started and accepts connections on the TCP port 8001.

The following API is then exposed on http://[sdrvm ip]:8001/api/ :

List of tasks

endpoint : /api/tasks
http method : GET

Returns a JSON object listing the running tasks, the opened radio devices, the mailboxes and the IQQueues existing in the Virtual Machine.

Task description

   "mailboxes": boolean ,
   "name": string,
   "os_pid" : int ,
   "parent_tid": int ,
   "running_time": number,

   "state": int,
   "state_name": string ,
   "tid": int,

   "total_allocated": int
  • mailboxes: true if the task has created mailboxes
  • name: name of the task
  • os_pid : the Linux PID for the thread
  • tid: JS Task identifier (unique)
  • parent_tid: identifier of the task who created this task ,
  • running_time: total number of seconds elapsed since the task creation,
  • state: int,
  • state_name: string ,
  • total_allocated: number of bytes allocated for the task



Start a new task

endpoint : /api/tasks
http method : POST
parameters : 
   - command=run
   - script=[file name to start]

Returns :
    - 200 OK : A task has been started
    - 500 Error : The file was not found or the task creation refused.

Example :

wget --post-data "command=run&script=boot_concurrentSQL.js" http://localhost:8001/api/tasks -O /dev/null

Kill a task

endpoint : /api/tasks
http method : POST
parameters : 
   - command=kill
   - pid=[task id]

Example :

wget --post-data "command=kill&pid=0" http://localhost:8001/api/tasks -O /dev/null
Last update: July 8, 2022