JBL Synthesis
SDP-40 Serial Communications Protocol Printed on: 01/11/02
1 Documents
The following documents should also be used with this document to understand how this protocol can be
used with an SDP-40.
JBLSPD-3TECH, MANUAL, OWNER’S, SDP-3
SDP-3 Serial Port Definition, Protocol Version 1
070-14991rev 0 Manual, Owner’s, SDP-40
2 Definitions
User Parameter: A user changeable variable that stores a specific value that describes an
operating condition for the SDP-40 system.
HOST: The device initiating or receiving the serial communication packets to/from the
SDP-40.
SDP-40, SDP-3: The JBL Synthesis product receiving or transmitting the serial communication
packets to/from the HOST.
Nonvolatile RAM: The area of memory in an SDP-40 that stores users adjustable parameters. The
Nonvolatile RAM is battery backed, to maintain values during SDP-40 power
down.
2.1 Protocol Version Cross-reference
All references to SDP-40 shall be valid for both the SDP-40 and MC -12b products unless specifically
documented otherwise. All references to SDP-3 shall be valid for the SDP-3 and MC -1 products unless
specifically documented otherwise.
3 Abbreviations
SOP Start of Packet
EOP End of Packet
ACK Acknowledge
NAK No Acknowledge
FPD Front Panel Display
4 General Description
The intention of the SDP-40 serial port and protocol communication is for an external connected HOST to
control and obtain status from the SDP-40. The protocol has been designed to focus on two specific goals.
The first is HOST uploading and downloading of SDP-40 configuration, and system/effect setups. The
second is HOST control of basic user adjustable parameters. (i.e. input, volume, balance…)
JBL Synthesis
SDP-40 Serial Communications Protocol Printed on: 01/11/02
The SDP-40 uses simple notification, command, response and acknowledgment packets to have
communication transactions with a given HOST. This protocol is designed for point to point
communication between a HOST and SDP-40. The SDP-40 Protocol is a 3 layered system. The SDP-40 serial
protocol allows for the SDP-40, or the HOST, to initiate a communication transaction. Most transactions are
initiated by the HOST. SDP-40 then responds to the HOST command with either a response or
acknowledgment packet. There are a few asynchronous notifications that SDP-40 initiates indicating system
changes. Each transaction initiated must wait for a corresponding response before initiating the next
transmission.
The 3 protocol layers are: Physical, Data Link, and Application Layers.
The SDP-40 Serial Protocol attempts to be as backward compatible with the SDP-3 as possible. This
document will try to inform the user/programmer of the consistencies and differences between the SDP-3
protocol and the SDP-40 protocol. The basic structure of the protocol has not changed. A number of
command/responses/notifications packets have been implemented exactly as they were in the SDP-3. These
commands may not fully exercise the functionality of the SDP-40 (i.e. SDP-3 has 8 inputs that have been
mapped to 8 of the 12 inputs on the SDP-40, SDP-3 IR codes are not the same as SDP-40 IR codes) In the
case of these commands additional SDP-40 commands have been added to fully implement the SDP-40
functionality. In addition, some of the inter nal structure of the SDP-40 has forced the protocol to be unable
to support some SDP-3 commands. These commands have been totally replaced with new commands that
provide more control over the SDP-40 than was capable in the SDP-3. (Parameter Set/Get commands)
JBL Synthesis
SDP-40 Serial Communications Protocol Printed on: 01/11/02
5 Physical Layer
5.1 DB-9 RS232 Connector
SDP-
COM1
Transmit Data
Receive Data
9 Pin D-Shell (female)
Note: The wiring requirements for a 9 pin to 9 pin serial connection, are a male to female straight through
cable.
Ground
2
3
5
Host
Receive Data
2
Transmit Data
3
Ground
5
9 Pin D-Shell (male)
5.2 Serial Port Driver
SDP-40 serial port has been setup to operate as follows:
Operating Mode: Full Duplex
Baud rate: 19.2K baud
Data Size: 8 bits (1 byte)
Parity: Odd
Stop Bits: 1
5.3 Errors
The SDP-40 will detect parity, framing and data overrun errors. If any of the physical layer error s are
detected, the complete packet is corrupted and the SDP-40 will reset the transaction and begin to look for a
start of packet byte.
5.4 SDP-40 Receive Buffer
The SDP-40 has an internal receive buffer. The buffer is 256 Bytes and will transmit a NAK packet with an
error code of DC_ERR_BUFFER_FULL to the HOST if the buffer is full. If the buffer is full, all data
transmitted to the SDP-40 will be ignored. Therefore, making the currently transmitted packet, if partially
transmitted invalid.
5.5 SDP-40 Hardware Verification (Not Supported in SDP-40 V1.00, V1.01)
This test verifies the RS232 ports are working by comparing the transmitted signal (at pin 2) to the received
signal (at pin 3). The SDP-40 transmits a known test signal just following a power up. The SDP-40 monitors
the serial port receivers while transmitting the test signal. If the signals are the same, the test passes. In
order to test this circuit, RS232 Wraparound plug(s) are needed and must be installed at the female D9
connector(s) on the rear panel of the SDP-40 labeled “RS232”. The wraparound plug shorts pins 2 to 3,
allowing for the SDP-40 to receive the signal it is transmitting. Once installed, power cycle the SDP-40 and
verify the following message is displayed on the FPD:
JBL Synthesis
SDP-40 Serial Communications Protocol Printed on: 01/11/02
SERIAL PORT A PASSED
SERIAL PORT B PASSED
This message is displayed for about 2 seconds before entering normal operating mode. If no messages are
displayed, then both wrap tests failed.
6 Data Link Layer
The data link layer is used to define a transmission packet. The layer appends a header and tail that
encloses the transmitted application packet data. The data link header will contain the start of packet byte
and count of bytes to follow. The data link tail will contain the end of packet byte.
Data Link Header:
Byte Number Description Value
First Byte(0) Start of Packet (SOP) 0xF1
Byte(1) DLL Data Count nn
Application Heade r:
Byte(2) Command nn
Byte(3) APP Data Count (number of application data bytes to Follow) nn
Application Data:
Byte(4) Data[0] nn
Byte(5) Data[1] nn
… Data[…] nn
Last Data Byte -1 Data[Data Count -1] nn
Data Link Tail:
Last Byte End of Packet (EOP) 0xF2
6.1 Errors
If the number of DLL data bytes received is the same as the data count and an EOP has not been received,
the SDP-40 responds by transmitting a NAK packet with an error code DC_ERR_INVALID_PACKET. The
SDP-40 then continues to look for a SOP byte and will not process the erroneous application packet. The
HOST can use this as an indicator to retransmit the corrupted packet.
In addition, each byte of a packet must be received sequentially and within the INTER_PACKET_TIME. If
any of the bytes within a packet transmission exceeds the INTER_PACKET_TIME, the SDP-40 will respond
by transmitting a NAK packet with an error code DC_ERR_INVALID_PACKET. The SDP-40 then
continues to look for a SOP byte and will not process the erroneous application packet. The HOST can use
this as an indicator to retransmit the corrupted packet.
JBL Synthesis
SDP-40 Serial Communications Protocol Printed on: 01/11/02
7 Application Layer
7.1 SDP-40 Asynchronous Notification Packets
SDP-40 has been designed to transmit the asynchronous notification packets following these system
changes:
1. Power On
2. Entering Standby
3. Front Panel Display update
4. Parameter Value Changes.
The notification packets are defined as follows:
7.1.1 Wakeup Notification (SDP-40, SDP-3)
By transmitting the Wakeup Notification, SDP-40 indicates the unit has just “powered on” or reset and is
ready to receive host commands. This notification is primarily for the HOST to know the status of the SDP-
The SDP-40 does not expect any response from the HOST.
7.1.2 Sleep Notification (SDP-40, SDP-3)
By transmitting the Sleep Notification, SDP-40 indicates the unit is shutting down into a standby mode.
Because the hard power switch could be activated independently of the SDP-40 system software, hard
power down will not be notified. Acknowledgment of the Sleep Notification is not required. This
notification is primarily for the HOST to know the operating status of the SDP-40.
SDP-40 will transmit the front panel display buffer following the update to the SDP-40 front panel display.
The SDP-40 front panel display is 2 X 20 ASCII character display. The HOST can control the operation of
this notification message by FPD internal control registers. Individual notifications can be enabled or
disabled and the minimum transmit interval can be adjusted. Transmission of the display buffer is
JBL Synthesis
SDP-40 Serial Communications Protocol Printed on: 01/11/02
asynchronous to other host/SDP-40 communicati on and will only transmit following the completion of any
communication exchanges in progress or pending. The FPD control register command packets are described
in section 7.3.14 Get FPD Control Registers.
Data Type: Null (0x00) terminated ASCII character string.
Max Length: DISP_LINE_LENGTH defined in Appendix G Protocol Constants.
Line2
Data Type: Null (0x00) terminated ASCII character string.
Max Length: DISP_LINE_LENGTH defined in Appendix G Protocol Constants.
The SDP-40 includes 8 custom characters that are defined to display increments of a display block . (i.e.
Volume Bar) The custom characters are ASCII character codes 08 - 0F(hex). The codes are used as follows:
'08' - left 1 bar
'09' - left 2 bars
'0A' - left 3 bars
'0B' - left 4 bars
'0C' - Full Cell
'0D' - Underscore
'0E' - right 3 bars
'0F' - not in use
7.1.3.3 HOST Response
The SDP-40 does not expect any response from the HOST.
7.1.4 SDP-3 Parameter Change (SDP-40, SDP-3)
SDP-40 will transmit predetermined parameter change notifications. If a parameter value is changed due to
any user action or system action the SDP-40 will transmit the current value of the parameter that is changing.
This command has been maintained for backward compatibility with SDP-3. In order to maintain backward
compatibility, the SDP-40 Parameters have been mapped to the SDP-3 parameters as described in the
Supported System Parameters table listed below.
JBL Synthesis
SDP-40 Serial Communications Protocol Printed on: 01/11/02
7.1.4.1 Notification Packet Description
Application Header:
Command DC_PARAM_CHG_MSG 0x04
Data Count 2 0x02
Application Data:
Data[0] ParamId nn
Data[1] Value nn
7.1.4.2 Data Description
ParamId:
Data Type: Unsigned 8 bit integer
Max: 255.
Value:
The Current Value for this system parameter.
Data Type: Unsigned 8 bit integer
Max: Set by the Max Value per the Parameter Definition response Packet for
the Parameter Id of this packet.
7.1.4.3 HOST Response
The SDP-40 does not expect any response from the HOST.
7.1.4.4 Supported System Parameters
The following parameters will be supported by this Parameter Change Notification:
Parameter SDP-40 Parameter
Name
Current Effect PROGRAM 1
Mute MUTE 3
System Volume VOLUME 5
Balance LR_BALANCE 6
Input Selection INPUT 7
Record/Zone 2 On/Off RECORD_ENABLED 18
Zone 2 Volume Z2_VOL 154
Zone 2 Balance Z2_BAL 156
Zone 2 Mute Z2_MUTE 157
Bass BASS 167
Treble TREBLE 168
Loudness LOUDNESS 169
Tilt TILT 174
Menu Background On/Off MENU_BKGND 190
Note: The Record/Zone 2 On/Off only applies to the SDP-40 Record zone. The Zone 2 Volume, Zone 2
Balance and Zone 2 Mute only apply to the SDP-40 Zone-2.
For Input Parameter Change Notifications the Input Value is a SDP-40 to SDP-3 input mapping, as shown in
SDP-40 Serial Communications Protocol Printed on: 01/11/02
7.2 Acknowledgment Packets
Acknowledge and No Ack nowledge packets are used to communicate transmission, packet and data
validation status. Both the HOST and SDP-40 can transmit and receive these packets.
7.2.1 Acknowledge (SDP-40, SDP-3)
7.2.1.1 Packet Description
Application Header:
Command DC_ACK 0xE0
Data Count
Application Data:
Data[0] Command nn
7.2.1.2 Data Description
Command:
DataType: Valid SDP-40 command as defined in Appendix A Command Codes.
0x01
7.2.2 No Acknowledge (SDP-40, SDP-3)
7.2.2.1 Packet Description
Application Header:
Command DC_NACK 0xE1
Data Count 20x02
Application Data:
Data[0] Command nn
Data[1] ErrorCode nn
7.2.2.2 Data Description
Command:
DataType: Valid SDP-40 command as defined in Appendix A Command Codes.
ErrorCode:
DataType: Error code as defined in Appendix B Error Codes.
7.3 Host Initiated Command Packets
The SDP-40 serial communication protocol has been designed to respond to the following commands as
described below. Each command is transmitted to the SDP-40 with the identified parameters. If the
command is successfully received and processed by the SDP-40, the unit will respond with the described
response packet or action.
JBL Synthesis
SDP-40 Serial Communications Protocol Printed on: 01/11/02
Command DC_CMD_RESET 0x10
Data Count 0 0x00
Application Data: N/A
7.3.1.2 SDP-40 Response
The SDP-40 will perform an internal reset. After reset the SDP-40 will go through a soft power -up
initialization. This includes transmitting the “Wakeup Notification Packet”. A soft reset does not reinitialize
the SDP-40. Nonvolatile RAM is maintained.
7.3.2 Restore (SDP-40, SDP-3)
Commands the SDP-40 to restore the system and effect parameters to the factory defaults.
The SDP-40 will reset, clear any saved system and effect parameters in Nonvolatile RAM, and restore the
factory default system and effect parameters. After reset the SDP-40 will go through a soft power -up
initialization. This includes transmitting the “Wakeup Notification Packet”.
7.3.3 SDP-3 Send IR Command (SDP-40, SDP-3)
Transmits SDP-3 IR command key codes to the SDP-40.
This command has been maintained for backward compatibility to the SDP-3. The SDP-3 IR code
functionality has been mapped to the SDP-40 IR code functionality as per the SDP-3 to SDP-40 IR code
table.
7.3.3.1 Command Packet Description
Application Header:
Command DC_CMD_IR 0x14
Data Count 1 0x01
Application Data:
Data[0] KeyCode nn
7.3.3.2 Data Description
KeyCode:
Data Type: Unsigned 8 bit integer.
Valid Values: Appendix C SDP-3 IR-Codes
JBL Synthesis
SDP-40 Serial Communications Protocol Printed on: 01/11/02
The KeyCode is processed as a valid IR code. No acknowledgment will be sent from SDP-40.
7.3.3.4 Data Validation
The KeyCode data will be verified as a legal IR code. If the Code is not valid the SDP-40 will not respond.
7.3.4 Get Unit Configuration (SDP-40, SDP-3)
This command is supported for backward compatibility. SDP-40 users should be using paragraph " 7.3.39
SDP-40 Get Unit Configuration (SDP-40)" The Request to SDP-40 for it’s current unit configuration. SDP-40
will respond with “Unit Configuration Packet”. The HOST should use this information to determine if any
information saved by the HOST is cur rent.
*Note: SW level indicates the status of the SDP-40 internal application software.
Software Major Revision: An unsigned integer value indicating the unit’s major software version. The
host should use this information to determine if new effects, effect parameters, or
system parameters have been added or removed.
Software Minor Revision: An unsigned integer value indicating this units minor software version. Indicates
the units software operation has changed but effects, effect parameters, or
system parameters have not changed.
Protocol Major Revision: An unsigned integer value indicating the serial communication protocol major
version. The host should use this value to determine if new commands,
notifications, or response packets have been added or deleted from this
specification.
Protocol Minor Revision: An unsigned integer value indicating the serial communication protocol minor
version. The host should use this value to determine if the exist ing commands,
notifications, or response packets have changed in this specification
Total Number of Effects: An unsigned integer value indicating the maximum number of effects available
for this version of software. This should be used to determine the maximum
EffectId used in the “Get Effect Definition Packet”, “Get Effect Parameter
Definition Packet”, “Set Effect Name Packet” , and “Set Effect Parameter Values
Packet”.
TimeStamp: Is a null terminated ASCII text string describing the build date and time of the
current software build. The Format of this text string is:
“yy/mm/dd(sp)hh:mm”
yy- is the last two digits of the year (i.e. year 1999 = 99, year 2000 = 00)