Skip to content

Commit

Permalink
Merge f659307 into f586d0f
Browse files Browse the repository at this point in the history
  • Loading branch information
syco committed Nov 22, 2018
2 parents f586d0f + f659307 commit 1190995
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 3 deletions.
8 changes: 5 additions & 3 deletions src/PAMI/Message/Action/MonitorAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,17 @@ class MonitorAction extends ActionMessage
*
* @param string $channel Channel to monitor.
* @param string $filename Absolute path to target filename.
* @param string $format Recording format, default 'wav'.
* @param string $mix Mix channels, default 'true'.
*
* @return void
*/
public function __construct($channel, $filename)
public function __construct($channel, $filename, $format = 'wav', $mix = 'true')
{
parent::__construct('Monitor');
$this->setKey('Channel', $channel);
$this->setKey('Mix', 'true');
$this->setKey('Format', 'wav');
$this->setKey('Mix', $mix);
$this->setKey('Format', $format);
$this->setKey('File', $filename);
}
}
14 changes: 14 additions & 0 deletions src/PAMI/Message/Action/StatusAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,18 @@ public function __construct($channel = false)
$this->setKey('Channel', $channel);
}
}

/**
* Sets Variables key.
*
* @param array $variables Variables to use.
*
* @return void
*/
public function setVariables($variables = array())
{
if (!empty($variables)) {
$this->setKey('Variables', implode(',', $variables));
}
}
}
69 changes: 69 additions & 0 deletions src/PAMI/Message/IncomingMessage.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@ abstract class IncomingMessage extends Message
*/
protected $channelVariables;

/**
* Metadata. Specific channel variables.
* @var string[]
*/
protected $statusVariables;

/**
* Serialize function.
*
Expand Down Expand Up @@ -125,6 +131,45 @@ public function getChannelVariables($channel = null)
}
}

/**
* Returns the channel variables for all reported channels.
* https://github.com/marcelog/PAMI/issues/85
*
* The channel names will be lowercased.
*
* @return array
*/
public function getAllStatusVariables()
{
return $this->statusVariables;
}

/**
* Returns the channel variables for the given channel.
* https://github.com/marcelog/PAMI/issues/85
*
* @param string $channel Channel name. If not given, will return variables
* for the "current" channel.
*
* @return array
*/
public function getStatusVariables($channel = null)
{
if (is_null($channel)) {
if (!isset($this->keys['channel'])) {
return $this->getStatusVariables('default');
} else {
return $this->getStatusVariables($this->keys['channel']);
}
} else {
$channel = strtolower($channel);
if (!isset($this->statusVariables[$channel])) {
return null;
}
return $this->statusVariables[$channel];
}
}

/**
* Constructor.
*
Expand All @@ -136,6 +181,7 @@ public function __construct($rawContent)
{
parent::__construct();
$this->channelVariables = array('default' => array());
$this->statusVariables = array('default' => array());
$this->rawContent = $rawContent;
$lines = explode(Message::EOL, $rawContent);
foreach ($lines as $line) {
Expand All @@ -155,13 +201,26 @@ public function __construct($rawContent)
unset($content[0]);
$value = isset($content[1]) ? trim(implode(':', $content)) : '';
$this->channelVariables[$chanName][$name] = $value;
} else if (!strncmp($name, 'variable', 8)) {
// https://github.com/marcelog/PAMI/issues/85
$matches = preg_match("/\(([^\)]*)\)/", $name, $captures);
$chanName = 'default';
if ($matches > 0) {
$chanName = $captures[1];
}
$content = explode('=', $value);
$name = strtolower(trim($content[0]));
unset($content[0]);
$value = isset($content[1]) ? trim(implode(':', $content)) : '';
$this->statusVariables[$chanName][$name] = $value;
} else {
$this->setKey($name, $value);
}
}
// https://github.com/marcelog/PAMI/issues/85
if (isset($this->keys['channel'])) {
$channel = strtolower($this->keys['channel']);

if (isset($this->channelVariables[$channel])) {
$this->channelVariables[$channel] = array_merge(
$this->channelVariables[$channel],
Expand All @@ -171,6 +230,16 @@ public function __construct($rawContent)
$this->channelVariables[$channel] = $this->channelVariables['default'];
}
unset($this->channelVariables['default']);

if (isset($this->statusVariables[$channel])) {
$this->statusVariables[$channel] = array_merge(
$this->statusVariables[$channel],
$this->statusVariables['default']
);
} else {
$this->statusVariables[$channel] = $this->statusVariables['default'];
}
unset($this->statusVariables['default']);
}
}
}

0 comments on commit 1190995

Please sign in to comment.