public function mode(ConnectionInterface $conn, $mode)
{
// switch to the new runlevel
$this->synchronized(function ($self, $newMode) {
// wait till the previous commands has been finished
while ($self->locked === true) {
sleep(1);
}
// set the command name
$self->command = ModeCommand::COMMAND;
// lock process
$self->locked = true;
$self->params = $newMode;
// notify the AS to execute the command
$self->notify();
}, $this, $mode);
}