Download as PDF
AUDAC - Inspired by sound
Hardware command manual

NWP400

Network input panel - USB Type-C + BT (4 CH)

Table of contents

NWP400 Commands List

ASCII Commands (NWP400 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: NWP400

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 destinationNWP400>1
broadcast to all Nwp400 devicesNWP400

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: NWP400>2Remarks
NWP400>2Destination Matches Devicethis is an exact match
NWP400>1Message ignoredthe destination address does not match
NWP400Destination Matches Devicethe destination address will always match
NWP400>0Destination Matches DeviceEquivalent to NWP400
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 NWP400>2
broadcast to a Nwp400#|NWP400||...|<CRLF>#||NWP400>2|...|<CRLF>
send to a specific Nwp400#|NWP400>2||...|<CRLF>#||NWP400>2|...|<CRLF>
use a source address in the request message#|NWP400|CLIENT>1|...|<CRLF>#|CLIENT>1|NWP400>2|...|<CRLF>

Type

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

TypeFromToExplanation
SET_REQCLIENTNwp400Change a setting in the Nwp400
GET_REQCLIENTNwp400Request the current status of a setting in the Nwp400
GET_RSPNwp400CLIENTResponse 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_BLUETOOTH>1>VOLUME>1min: -90, max: 0#|NWP400>1||SET_REQ^INPUT_BLUETOOTH>1>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_BLUETOOTH>2>VOLUME>1min: -90, max: 0#|NWP400>1||SET_REQ^INPUT_BLUETOOTH>2>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_USB>1>VOLUME>1min: -90, max: 0#|NWP400>1||SET_REQ^INPUT_USB>1>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_USB>2>VOLUME>1min: -90, max: 0#|NWP400>1||SET_REQ^INPUT_USB>2>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_DANTE>1>VOLUME>1min: -90, max: 0#|NWP400>1||SET_REQ^INPUT_DANTE>1>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_DANTE>2>VOLUME>1min: -90, max: 0#|NWP400>1||SET_REQ^INPUT_DANTE>2>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_DANTE>3>VOLUME>1min: -90, max: 0#|NWP400>1||SET_REQ^INPUT_DANTE>3>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_DANTE>4>VOLUME>1min: -90, max: 0#|NWP400>1||SET_REQ^INPUT_DANTE>4>VOLUME>1^VOLUME|0|U|<CRLF>
OUTPUT_DANTE>1>VOLUME>1min: -90, max: 0#|NWP400>1||SET_REQ^OUTPUT_DANTE>1>VOLUME>1^VOLUME|0|U|<CRLF>
OUTPUT_DANTE>2>VOLUME>1min: -90, max: 0#|NWP400>1||SET_REQ^OUTPUT_DANTE>2>VOLUME>1^VOLUME|0|U|<CRLF>
OUTPUT_DANTE>3>VOLUME>1min: -90, max: 0#|NWP400>1||SET_REQ^OUTPUT_DANTE>3>VOLUME>1^VOLUME|0|U|<CRLF>
OUTPUT_DANTE>4>VOLUME>1min: -90, max: 0#|NWP400>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_BLUETOOTH>1>VOLUME>1options: TRUE,FALSE#|NWP400>1||SET_REQ^INPUT_BLUETOOTH>1>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_BLUETOOTH>2>VOLUME>1options: TRUE,FALSE#|NWP400>1||SET_REQ^INPUT_BLUETOOTH>2>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_USB>1>VOLUME>1options: TRUE,FALSE#|NWP400>1||SET_REQ^INPUT_USB>1>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_USB>2>VOLUME>1options: TRUE,FALSE#|NWP400>1||SET_REQ^INPUT_USB>2>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_DANTE>1>VOLUME>1options: TRUE,FALSE#|NWP400>1||SET_REQ^INPUT_DANTE>1>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_DANTE>2>VOLUME>1options: TRUE,FALSE#|NWP400>1||SET_REQ^INPUT_DANTE>2>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_DANTE>3>VOLUME>1options: TRUE,FALSE#|NWP400>1||SET_REQ^INPUT_DANTE>3>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_DANTE>4>VOLUME>1options: TRUE,FALSE#|NWP400>1||SET_REQ^INPUT_DANTE>4>VOLUME>1^MUTE|FALSE|U|<CRLF>
OUTPUT_DANTE>1>VOLUME>1options: TRUE,FALSE#|NWP400>1||SET_REQ^OUTPUT_DANTE>1>VOLUME>1^MUTE|FALSE|U|<CRLF>
OUTPUT_DANTE>2>VOLUME>1options: TRUE,FALSE#|NWP400>1||SET_REQ^OUTPUT_DANTE>2>VOLUME>1^MUTE|FALSE|U|<CRLF>
OUTPUT_DANTE>3>VOLUME>1options: TRUE,FALSE#|NWP400>1||SET_REQ^OUTPUT_DANTE>3>VOLUME>1^MUTE|FALSE|U|<CRLF>
OUTPUT_DANTE>4>VOLUME>1options: TRUE,FALSE#|NWP400>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#|NWP400>1||SET_REQ^OUTPUT_DANTE>1>MIXER>1^MIXER|1>-90^2>-90^3>-90^4>-90^5>-90^6>-90^7>0^8>-90^9>-90^10>-90^11>-90^12>-90|U|<CRLF>
OUTPUT_DANTE>2>MIXER>1min: 1, max: 12min: -90, max: 0#|NWP400>1||SET_REQ^OUTPUT_DANTE>2>MIXER>1^MIXER|1>-90^2>-90^3>-90^4>-90^5>-90^6>-90^7>-90^8>0^9>-90^10>-90^11>-90^12>-90|U|<CRLF>
OUTPUT_DANTE>3>MIXER>1min: 1, max: 12min: -90, max: 0#|NWP400>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#|NWP400>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#|NWP400>1||SET_REQ^INPUT_BLUETOOTH>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 NWP400

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