Download as PDF
AUDAC - Inspired by sound
Hardware command manual

NWP300

Network input panel - BT + 3.5 mm jack (4 CH)

Table of contents

NWP300 Commands List

ASCII Commands (NWP300 1.0.2)

This is the list of ASCII Commands supported by this device. An ASCII command always follows the same structure:

#|Destination|Source|Type^Target^Command|Arguments|CRC|CRLF

This format uses 3 separator characters for different levels of separating each value in the message:

Messages are Case sensitive, if the example shows the text in uppercase, this should always be uppercase!

Destination

The target device. This consists of 2 parts: Device>Address.

Device
This is the device type: NWP300

Address
This is the user-configurable device address, default: 1. You can also leave this field blank; this causes all NWP320 devices that receive this command to respond.

ExamplesDestination
default destinationNWP300>1
broadcast to all Nwp300 devicesNWP300

Device Matching

If the device type or address does not match, the message will be ignored. Device Address 0 is a special address and will always match (this can be seen as a broadcast)

DestinationDevice address: NWP300>2Remarks
NWP300>2Destination Matches Devicethis is an exact match
NWP300>1Message ignoredthe destination address does not match
NWP300Destination Matches Devicethe destination address will always match
NWP300>0Destination Matches DeviceEquivalent to NWP300
CLIENT>2Message ignoredthe device type does not match
CLIENTMessage ignoredthe device type does not match

Source (optional)

The source address is optional when sending, but the device will always fill this field with its own address.

Examplessent messageresponse message NWP300>2
broadcast to a Nwp300#|NWP300||...|<CRLF>#||NWP300>2|...|<CRLF>
send to a specific Nwp300#|NWP300>2||...|<CRLF>#||NWP300>2|...|<CRLF>
use a source address in the request message#|NWP300|CLIENT>1|...|<CRLF>#|CLIENT>1|NWP300>2|...|<CRLF>

Type

The type explains what the message wants to do. There are 3 supported message types:

TypeFromToExplanation
SET_REQCLIENTNwp300Change a setting in the Nwp300
GET_REQCLIENTNwp300Request the current status of a setting in the Nwp300
GET_RSPNwp300CLIENTResponse to either a GET_REQ or SET_REQ, if the request was valid

Command, Target, Arguments

These 3 parameters are explained together, because they influence each other. The command dictates the meaning of the argument, while the target distinguishes which exact setting you want to change. the target can also influence the valid range of the argument.

Some commands (like the mixer) can have a range of arguments (for the mixer: all mixer volumes are individual arguments). In this case, the argument looks like idx>val[^idx2>val2], where the part in between the brackets [] can appear 0 or more times.

VOLUME

Set a single Volume in dB

Argument (volume)
the requested Volume in dB

TargetArgumentExample (default value)
INPUT_JACK>1>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^INPUT_JACK>1>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_JACK>2>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^INPUT_JACK>2>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_BLUETOOTH>1>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^INPUT_BLUETOOTH>1>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_BLUETOOTH>2>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^INPUT_BLUETOOTH>2>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_DANTE>1>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^INPUT_DANTE>1>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_DANTE>2>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^INPUT_DANTE>2>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_DANTE>3>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^INPUT_DANTE>3>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_DANTE>4>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^INPUT_DANTE>4>VOLUME>1^VOLUME|0|U|<CRLF>
OUTPUT_DANTE>1>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^OUTPUT_DANTE>1>VOLUME>1^VOLUME|0|U|<CRLF>
OUTPUT_DANTE>2>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^OUTPUT_DANTE>2>VOLUME>1^VOLUME|0|U|<CRLF>
OUTPUT_DANTE>3>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^OUTPUT_DANTE>3>VOLUME>1^VOLUME|0|U|<CRLF>
OUTPUT_DANTE>4>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^OUTPUT_DANTE>4>VOLUME>1^VOLUME|0|U|<CRLF>

MUTE

mute an audio channel

Argument (enabled)
is the audio channel muted

TargetArgumentExample (default value)
INPUT_JACK>1>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^INPUT_JACK>1>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_JACK>2>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^INPUT_JACK>2>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_BLUETOOTH>1>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^INPUT_BLUETOOTH>1>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_BLUETOOTH>2>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^INPUT_BLUETOOTH>2>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_DANTE>1>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^INPUT_DANTE>1>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_DANTE>2>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^INPUT_DANTE>2>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_DANTE>3>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^INPUT_DANTE>3>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_DANTE>4>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^INPUT_DANTE>4>VOLUME>1^MUTE|FALSE|U|<CRLF>
OUTPUT_DANTE>1>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^OUTPUT_DANTE>1>VOLUME>1^MUTE|FALSE|U|<CRLF>
OUTPUT_DANTE>2>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^OUTPUT_DANTE>2>VOLUME>1^MUTE|FALSE|U|<CRLF>
OUTPUT_DANTE>3>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^OUTPUT_DANTE>3>VOLUME>1^MUTE|FALSE|U|<CRLF>
OUTPUT_DANTE>4>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^OUTPUT_DANTE>4>VOLUME>1^MUTE|FALSE|U|<CRLF>

MIXER

mixer slider for zones

Argument (volume)
mixing volume

TargetArgument indexArgumentExample (default value)
OUTPUT_DANTE>1>MIXER>1min: 1, max: 12min: -90, max: 0#|NWP300>1||SET_REQ^OUTPUT_DANTE>1>MIXER>1^MIXER|1>-90^2>-90^3>0^4>-90^5>-90^6>-90^7>-90^8>-90^9>-90^10>-90^11>-90^12>-90|U|<CRLF>
OUTPUT_DANTE>2>MIXER>1min: 1, max: 12min: -90, max: 0#|NWP300>1||SET_REQ^OUTPUT_DANTE>2>MIXER>1^MIXER|1>-90^2>-90^3>-90^4>0^5>-90^6>-90^7>-90^8>-90^9>-90^10>-90^11>-90^12>-90|U|<CRLF>
OUTPUT_DANTE>3>MIXER>1min: 1, max: 12min: -90, max: 0#|NWP300>1||SET_REQ^OUTPUT_DANTE>3>MIXER>1^MIXER|1>-90^2>-90^3>-90^4>-90^5>0^6>-90^7>-90^8>-90^9>-90^10>-90^11>-90^12>-90|U|<CRLF>
OUTPUT_DANTE>4>MIXER>1min: 1, max: 12min: -90, max: 0#|NWP300>1||SET_REQ^OUTPUT_DANTE>4>MIXER>1^MIXER|1>-90^2>-90^3>-90^4>-90^5>-90^6>0^7>-90^8>-90^9>-90^10>-90^11>-90^12>-90|U|<CRLF>

CRC

The CRC block is calculated over the message starting from and including the first pipe "|", up to and including the last pipe before the CRC Block. These CRC's can ensure message integrity if desired.

CRC TypeConfigurationFormatExamplenotes
None/U#|NWP300>1||SET_REQ^INPUT_JACK>1>VOLUME>1^VOLUME|0|U|<CRLF>'U' means unused
CRC16-ARC
  • input reflected
  • output reflected
  • polynomial: 0x8005
  • initial value: 0x0000
  • final exor: 0x0000
XXXX#|ALL||SET_REQ^INPUT_LINE>1^VOLUME|0|C06C|<CRLF>calculator
CRC32
  • input reflected
  • output reflected
  • polynomial: 0x4C11DB7
  • initial value: 0xFFFFFFFF
  • final exor: 0xFFFFFFFF
XXXX#|ALL||SET_REQ^INPUT_LINE>1^VOLUME|0|D887125C|<CRLF>calculator

The examples in the table above are examples for calculating the CRC, they may not be a valid command for the NWP300

The CRC can ensure data integrity across unreliable data channels (RS232, RS485), but they are by no means a security measure! If someone has the knowledge and means to maliciously alter a message, correcting the CRC becomes trivial for the attacker. We support different kinds of CRC for maximum flexibility, but we recommend not using any so you do not get a false sense of security.

Stop bytes

The final 2 characters are denoted as <CRLF>, they mean "Carriage Return, Line Feed" or simply put a new line. Depending on the tool used to create the command, you can have different representations:

We support both CRLF and LF only

Top