Single Operation Messages
This variable length structure carries a single instance of an operation (request or response as it will be normally termed) and whose structural details are provided below.
<SCTE104 line=12>
<single_operation_message>
<opID>0</opID>
<result>100</result>
<result_extension>0xFFFF</result_extension>
<protocol_version>0</protocol_version>
<AS_index>0</AS_index>
<message_number>214</message_number>
<DPI_PID_index>0</DPI_PID_index>
<data>
</data>
</single_operation_message>
</SCTE104>
- line - Line number where the SCTE packet will be inserted.
- opID – An integer value that indicates what message is being sent.
- messageSize - the value is calculated automatically.
- result – The results to the requested message. For message Usage types other than Basic Response messages, this shall be set to 0xFFFF.
- result_extension – This shall be set to 0xFFFF unless used to send additional result information in a
response message. - protocol_version – An 8-bit unsigned integer field whose function is to allow, in the future, this message type to carry parameters that may be structured differently than those defined in the current protocol. It shall be zero (0x00). Non-zero values of protocol_version may be used by a future version of this standard to indicate structurally different messages.
- AS_index uniquely identifies the source of the message (since it is possible to have several automation systems active at once). The number ranges from 0 to 255 and shall be zero if this index is not required.
This variable takes the value returned by the “AS_index” field of the config_response message (See
Section 10.2.3). A redundant AS shall be assigned one single value of AS_index which applies to both primary and backup. Either the primary or the backup is active at a given time, but not both. An Injector Instance shall be connected to only one AS at a given time. If non-zero, AS_index shall be unique within a single DCS. - message_number – An integer value that is used to identify an individual message. The message_number variable must be unique for the life of a message. When multiple copies of the same message are sent, they can be identified because they have the same message_number. This means that for messages that are to be processed in the future, the message_number may not be reused until themessage has been processed. If not in current use, the message_number may freely vary over the range of 0 to 255.
In a uni-directional system, the message number can be assumed to be available for reuse after the associated processing timestamp() time has passed. - DPI_PID_index specifies the index to the DPI PID which will carry the resulting splice_info_sections. The number ranges from 0 to 65535. DPI_PID_index shall be zero if not required by the system architecture.
general_response_data()
The general_response message conveys back a result code. This is a basic message.
<SCTE104 line=12>
<single_operation_message>
<opID>0</opID>
<result>100</result>
<result_extension>0xFFFF</result_extension>
<protocol_version>0</protocol_version>
<AS_index>0</AS_index>
<message_number>214</message_number>
<DPI_PID_index>0</DPI_PID_index>
<data>
<general_response_data></general_response_data>
</data>
</single_operation_message>
</SCTE104>
This response message is sent following the receipt of the following messages:
Request | Description |
---|---|
update_ControlWord | This allows the AS to download a new CW for use in encrypted messages. |
delete_Control_Word | This allows the AS to delete an active CW. Once deleted, an Injector can flag an error if any attempt is made to use it. |
init_request_data()
This basic usage request is sent by the Automation System to the Injector to initialize a TCP/IP connection. The appropriate value for desired protocol_version shall be furnished to the Injector in this message.
<SCTE104 line=12>
<single_operation_message>
<opID>1</opID>
<result>100</result>
<result_extension>0xFFFF</result_extension>
<protocol_version>0</protocol_version>
<AS_index>0</AS_index>
<message_number>214</message_number>
<DPI_PID_index>0</DPI_PID_index>
<data>
<init_request_data></init_request_data>
</data>
</single_operation_message>
</SCTE104>
init_response_data()
This basic usage response is sent by the Injector to the Automation System to indicate the receipt of the init_request. The appropriate value for desired protocol_version shall be furnished to the AS in this message. All devices supporting this API shall operate from this point forward at the lesser of the furnished protocol_version values.
<SCTE104 line=12>
<single_operation_message>
<opID>2</opID>
<result>100</result>
<result_extension>0xFFFF</result_extension>
<protocol_version>0</protocol_version>
<AS_index>0</AS_index>
<message_number>214</message_number>
<DPI_PID_index>0</DPI_PID_index>
<data>
<init_response_data></init_response_data>
</data>
</single_operation_message>
</SCTE104>
alive_request_data()
This basic request serves to ensure that the AS to Injector communications path remains open and reliable. In addition it may be used to ensure the internal time within each is synchronized. If deferred requests are to be used with a time-value trigger, then it is vital that synchronization be maintained.
<SCTE104 line=12>
<single_operation_message>
<opID>3</opID>
<result>100</result>
<result_extension>0xFFFF</result_extension>
<protocol_version>0</protocol_version>
<AS_index>0</AS_index>
<message_number>214</message_number>
<DPI_PID_index>0</DPI_PID_index>
<data>
<alive_request_data>
<time>
<seconds>1343401438</seconds>
<microseconds>100</microseconds>
</time>
</alive_request_data>
</data>
</single_operation_message>
</SCTE104>
- time() – This is an optional structure. The current UTC time clock of the sending device checked as close as possible to the sending of the message. This is designed to be used by the Injector and the Automation System to check on how well the two systems are time synchronized. If this time synchronization is not being used in a given system, the value of time() may be set to zero.
- seconds – Elapsed seconds since 12:00 AM UTC January 6, 1980 with the count of intervening leap
seconds included. - microseconds – Offset in microseconds of the seconds field.
alive_response_data()
This basic usage response is sent by the Injector to the Automation System to indicate the receipt of the init_request. The appropriate value for desired protocol_version shall be furnished to the AS in this message. All devices supporting this API shall operate from this point forward at the lesser of the furnished protocol_version values.
<SCTE104 line=12>
<single_operation_message>
<opID>4</opID>
<result>100</result>
<result_extension>0xFFFF</result_extension>
<protocol_version>0</protocol_version>
<AS_index>0</AS_index>
<message_number>214</message_number>
<DPI_PID_index>0</DPI_PID_index>
<data>
<alive_response_data>
<time>
<seconds>1343401438</seconds>
</time>
</alive_response_data>
</data>
</single_operation_message>
</SCTE104>
A Proxy Device should respond to this message with a “Successful Response” result code as if it were an Injector.
- time() – This is an optional structure. The current UTC time clock of the sending device checked as close as possible to the sending of the message. This is designed to be used by the Injector and the Automation System to check on how well the two systems are time synchronized. If this time synchronization is not being used in a given system, the value of time() may be set to zero.
- seconds – Elapsed seconds since 12:00 AM UTC January 6, 1980 with the count of intervening leap
seconds included. - microseconds – Offset in microseconds of the seconds field.
inject_response_data()
The inject_response message conveys back the message_number from the multiple_operation_message() structure to which it is responding. This message can contain a result code if appropriate. This is a basic message.
<SCTE104 line=12>
<single_operation_message>
<opID>7</opID>
<result>100</result>
<result_extension>0xFFFF</result_extension>
<protocol_version>0</protocol_version>
<AS_index>0</AS_index>
<message_number>214</message_number>
<DPI_PID_index>0</DPI_PID_index>
<data>
<inject_response_data>
<message_number>196</message_number>
</inject_response_data>
</data>
</single_operation_message>
</SCTE104>
A Proxy Device may respond with a “Proxy Response” result code. This permits the Automation System, should it desire to do so, to track whether or not a given Injector is served by a Proxy Device or a direct connection.
- message_number – The message_number of the multiple_operation_message() that is being acknowledged.
The inject_response message is sent following the receipt of the following messages:
Request | Description |
---|---|
splice_request | Acknowledgement for splice_request – returned to the AS immediately to acknowledge receipt of the command |
time_signal_request | Acknowledgement for time signal request – returned to the AS immediately to acknowledge receipt of the command |
splice_null_request | Acknowledgement for splice null request – returned to the AS immediately to acknowledge receipt of the command |
proprietary_command_request | Acknowledgement for proprietary command request – returned to the AS immediately to acknowledge receipt of the command |
start_schedule_download_request | Indicates to an Injector that it should start collecting schedule information. |
schedule_definition_request | Used to download a single schedule entry into the Injector’s database. |
schedule_component_mode request | Used as a supplemental command for Schedule Definition to indicate that a component splice is being scheduled. |
transmit_schedule_request | The Automation System uses this command to tell an Injector to send the accumulated schedule information. |
inject_complete_response_data()
The inject_complete_response message is sent once when the Injector finishes issuing all splice_info_sections for a given Normal request operation and conveys back the message_number from the multiple_operation_message() structure to which it is responding. If a Normal request does not result in the issuing of any SCTE 35 splice_info_sections, then this response is not sent. The value of the message_number variable is now free to be re-used.
A single inject_complete_response message is sent regardless of the number of operations contained within a given multiple_operation_message() structure. The inject_complete_response message contains a count which indicates the number of splice_info_sections issued by Injector in response to the previous splice_request. A result value of “Successful Response” will normally be expected for this message.
<SCTE104 line=12>
<single_operation_message>
<opID>8</opID>
<result>100</result>
<result_extension>0xFFFF</result_extension>
<protocol_version>0</protocol_version>
<AS_index>0</AS_index>
<message_number>214</message_number>
<DPI_PID_index>0</DPI_PID_index>
<data>
<inject_complete_response_data>
<message_number>196</message_number>
<cue_message_count>2</cue_message_count>
</inject_complete_response_data>
</data>
</single_operation_message>
</SCTE104>
- message_number – message number of the multiple_operation_message() that has completed
processing. - cue_message_count – this an integer value that specifies the count of SCTE 35 [1] splice_info_sections sent by Injector. This value may be logged by the Automation System if desired. The Injector will clear the cue_message_count after each inject_complete_response is sent to the Automation System.
A Proxy Device may respond with a “Proxy Response” result code. This permits the Automation System, should it desire to do so, to track whether or not a given Injector is served by a Proxy Device or a direct connection.
The inject_complete_response message is sent following the injection the section in response to the following messages:
Request | Description |
---|---|
splice_request | Acknowledgement for splice request – returned after the DPI message has been injected into the transport. May be returned immediately after the Splice Response if immediate mode timing is used. May be delayed if time stamped processing is used. |
time_signal_request | Acknowledgement for Time Signal request – returned after the DPI message has been injected into the transport. May be returned immediately after the Splice Response if immediate mode timing is used. May be delayed if time stamped processing is used. |
splice_null_request | Acknowledgement for Splice Null request – returned after the DPI message has been injected into the transport. May be returned immediately after the Splice Response if immediate mode timing is used. May be delayed if time stamped processing is used. |
proprietary_command_request | Acknowledgement for Proprietary Command request – returned after the DPI message has been injected into the transport. May be returned immediately after the Splice Response if immediate mode timing is used. May be delayed if time stamped processing is used. |
transmit_schedule_request | Indicates the schedule data has been has been injected into the transport |
config_request_data()
When the PAMS receives config_request message, it will store the Automation System configuration info for further use, and immediately respond with a config_response message.
This message shall be sent at system initialization, following AS downtime for whatever reason, and upon AS redundancy switch requiring the PAMS to connect to a new IP address.
<SCTE104 line=12>
<single_operation_message>
<opID>9</opID>
<result>100</result>
<result_extension>0xFFFF</result_extension>
<protocol_version>0</protocol_version>
<AS_index>0</AS_index>
<message_number>214</message_number>
<DPI_PID_index>0</DPI_PID_index>
<data>
<config_request_data>
<AS_IP_address>0</AS_IP_address>
<AS_socket_number>0</AS_socket_number>
<activeflag>1</activeflag>
<protocol_version>00</protocol_version>
<last_AS_index>0</last_AS_index>
<last_injectorcount>0</last_injectorcount>
<permanent_connection_requested>1</permanent_connection_requested>
</config_request_data>
</data>
</single_operation_message>
</SCTE104>
- AS_IP_address – IP address of the Automation System. In a bi-directional serial communications system architecture, it shall be zero.
- AS_socket_number – TCP port of the Automation System, waiting for incoming communication from the PAMS In a bi-directional serial communications system architecture, it shall be zero.
- activeflag – Boolean flag indicating if this AS instance acts as a primary or a backup. Zero indicates a the AS is a backup, non-zero indicates the AS is a primary.
- protocol_version – An 8-bit unsigned integer which indicates the version number of the protocol and which shall be 0x00.
- last_AS_index – Value of the AS_index provided by the PAMS during a previous system initialization. If used, it ranges from 1 to 255. If not used, or this is the first system initialization, it is zero.
- last_injectorcount – Value of the injectorcount last provided by the PAMS. Zero during the first system initialization.
- permanent_connection_requested – Non-zero indicates that maintaining a permanent TCP/IP link has been provisioned on the AS side. The PAMS will not close the TCP/IP socket after sending the provisioning_request message and will supply heartbeat messages. A backup AS may request a permanent connection.
config_response_data()
The config_response message conveys back an index value later used to populate the AS_index field in the single_operation_message() and multiple_operation_message() structures and indicates that the config_request message was received. This message can also contain a result code if appropriate.
For systems using TCP/IP data communications, once the PAMS sends this message, it will immediately close the socket and re-open TCP/IP communications using the AS_IP_address and AS_socket_number values from the config_request message. It will then send a provisioning_request message to the AS.
<SCTE104 line=12>
<single_operation_message>
<opID>10</opID>
<result>100</result>
<result_extension>0xFFFF</result_extension>
<protocol_version>0</protocol_version>
<AS_index>0</AS_index>
<message_number>214</message_number>
<DPI_PID_index>0</DPI_PID_index>
<data>
<config_response_data>
<AS_index>0</AS_index>
<permanent_connection_requested>1</permanent_connection_requested>
</config_response_data>
</data>
</single_operation_message>
</SCTE104>
- AS_index – Index provided by the PAMS, ranging from 0 to 255. When responding to a redundancy switch within a given AS, this shall be the same value contained in the last_AS_index in the config_request message.
- permanent_connection_requested – Non-zero indicates that maintaining a permanent TCP/IP link has been provisioned on the PAMS side. If this is requested, the PAMS will not close the TCP/IP socket after sending the provisioning_request message and will supply AS_alive messages.
provisioning_request_data()
PAMS will notify the Automation System of all injectors ready for use in DPI service via the following structure. In some system architectures, the same IP address and socket may be shared by different services with the Injector.
<SCTE104 line=12>
<single_operation_message>
<opID>11</opID>
<result>100</result>
<result_extension>0xFFFF</result_extension>
<protocol_version>0</protocol_version>
<AS_index>0</AS_index>
<message_number>214</message_number>
<DPI_PID_index>0</DPI_PID_index>
<data>
<provisioning_request_data>
<service_count>2</service_count>
<injector_IP_address>44</injector_IP_address>
<injector_socket_number>0</injector_socket_number>
<service_name>wer</service_name>
<number_of_DPI_PIDs>0</number_of_DPI_PIDs>
<component_mode>1</component_mode>
<injector_component_list>
<video_component_tag>1</video_component_tag>
<number_of_audio_component_tags>2</number_of_audio_component_tags>
<audio_component_tag>6</audio_component_tag>
<audio_component_tag>7</audio_component_tag>
<number_of_data_component_tags>3</number_of_data_component_tags>
<data_component_tag>3</data_component_tag>
<data_component_tag>4</data_component_tag>
<data_component_tag>5</data_component_tag>
</injector_component_list>
<injector_IP_address>66</injector_IP_address>
<injector_socket_number>0</injector_socket_number>
<service_name>ServiceName</service_name>
<number_of_DPI_PIDs>0</number_of_DPI_PIDs>
<component_mode>1</component_mode>
<injector_component_list>
<video_component_tag>1</video_component_tag>
<number_of_audio_component_tags>3</number_of_audio_component_tags>
<audio_component_tag>234</audio_component_tag>
<audio_component_tag>112</audio_component_tag>
<audio_component_tag>111</audio_component_tag>
<number_of_data_component_tags>4</number_of_data_component_tags>
<data_component_tag>32</data_component_tag>
<data_component_tag>43</data_component_tag>
<data_component_tag>54</data_component_tag>
<data_component_tag>77</data_component_tag>
</injector_component_list>
</provisioning_request_data>
</data>
</single_operation_message>
</SCTE104>
- service_count – specifies the number of services defined within the following loop. Each iteration of the loop defines basic data for a given Injector Instance.
- injector_IP_address - A standard 32-bit IP address. This is the IP address of the injector. In systems not using TCP/IP communications, the value of this field shall be zero.
- injector_socket_number - A standard 16-bit socket number. In systems not using TCP/IP communications, the value of this field shall be zero.
- service_name - A case sensitive string value, terminated by a 0x00 byte giving the service name. This value must be manually provisioned by both the AS and the PAMS and must match. It is used to unambiguously identify the service. There may be duplicate service_names only for hot backups.
- number_of_DPI_PIDs - count of the number of DPI PIDs provisioned. This number shall range from 1 to the limit specified.
- DPI_PID_index - The PID index for each specific DPI service. The value is not an actual PID number, rather the index by which the AS may request the specific service identified by cue_stream_type. This value populates the DPI_PID_index variable in both the single_operation_message() and multiple_operation_message() structures. It is normally assigned a unique value unless a shared PID situation is signaled by a non-zero value in shared_PID.
- cue_stream_type - Identifies the type of cue stream.
- component_mode - Length of the injector_services_list(). A zero value indicates no services_list is
present.
provisioning_response_data()
The provisioning_response message contains no data and indicates that the provisioning_request message was received. This message may return a result code if appropriate. The AS is expected to return specific result codes in certain circumstances.
<SCTE104 line=12>
<single_operation_message>
<opID>12</opID>
<result>100</result>
<result_extension>0xFFFF</result_extension>
<protocol_version>0</protocol_version>
<AS_index>0</AS_index>
<message_number>214</message_number>
<DPI_PID_index>0</DPI_PID_index>
<data>
<provisioning_response_data>0</provisioning_response_data>
</data>
</single_operation_message>
</SCTE104>
fault_request_data()
This message permits the AS to notify the PAMS of a possible failure of either an Injector or the data communications link to that Injector. Resultant action taken by the PAMS shall be configurable by the operations staff of the DCS site. When automatic replacement is desired by that staff, this message shall result in an automatic replacement of an Injector. The minimum compliant response shall be the generation of an operator alarm.
As a result of receipt of this message, the PAMS may (if configured to do so) automatically trigger a redundancy replacement of an Injector (which shall result in it sending a provisioning_request message after the switch). It may also notify the operator or request operator guidance. The specifics of the precise reaction to this message must be left to operational provisioning of the PAMS and the DCS.
After sending a fault_request message and receiving a fault_response in return, the AS may logically expect to receive a provisioning_request message at some point in the future to notify the AS of the Injector change. In the mean-time, until such a notification is given, the AS shall continue to periodically attempt to communicate with the Injector, since the link failure may be only visible to the AS and operations personnel may restore the link based on the fault_request notification. In such case, the AS shall re-establish the communications and continue operating as if a failure had never been detected.
<SCTE104 line=12>
<single_operation_message>
<opID>15</opID>
<result>100</result>
<result_extension>0xFFFF</result_extension>
<protocol_version>0</protocol_version>
<AS_index>0</AS_index>
<message_number>214</message_number>
<DPI_PID_index>0</DPI_PID_index>
<data>
<fault_request_data>
<injector_IP_address>0</injector_IP_address>
<injector_socket_number>0</injector_socket_number>
<injector_service_name>0</injector_service_name>
<DPI_PID_index>0</DPI_PID_index>
</fault_request_data>
</data>
</single_operation_message>
</SCTE104>
- injector_IP_address - A standard 32-bit IP address. Zero if TCP/IP communications are not being used
- injector_socket_number - A standard 16-bit socket number. Zero if TCP/IP communications are not being used.
- injector_service_name - A string value, terminated by a 0x00 byte giving the injector service name. This value must match the name sent by the PAMS in the defining provisioning_request message. It is used to unambiguously identify the service.
- DPI_PID_index - The PID index for the specific DPI service which appears to have failed. This field may be zero if the Injector can be unambiguously identified by the other 3 fields in this message.
fault_response_data()
The fault_response message contains no data and indicates that the Fault Request message was received. This message may return a result code if appropriate, including an indication of “no fault found”.
<SCTE104 line=12>
<single_operation_message>
<opID>16</opID>
<result>100</result>
<result_extension>0xFFFF</result_extension>
<protocol_version>0</protocol_version>
<AS_index>0</AS_index>
<message_number>214</message_number>
<DPI_PID_index>0</DPI_PID_index>
<data>
<fault_response_data></fault_response_data>
</data>
</single_operation_message>
</SCTE104>
AS_alive_request_data()
This Basic request serves to ensure that the PAMS to AS communications path remains open and reliable. If there has been no activity on the connection in the preceding 60 seconds, then an AS_alive_request message shall be sent.
<SCTE104 line=12>
<single_operation_message>
<opID>17</opID>
<result>100</result>
<result_extension>0xFFFF</result_extension>
<protocol_version>0</protocol_version>
<AS_index>0</AS_index>
<message_number>214</message_number>
<DPI_PID_index>0</DPI_PID_index>
<data>
<AS_alive_request_data></AS_alive_request_data>
</data>
</single_operation_message>
</SCTE104>
AS_alive_response_data()
This Basic response serves to ensure that the AS to PAMS communications path remains open and reliable.
<SCTE104 line=12>
<single_operation_message>
<opID>18</opID>
<result>100</result>
<result_extension>0xFFFF</result_extension>
<protocol_version>0</protocol_version>
<AS_index>0</AS_index>
<message_number>214</message_number>
<DPI_PID_index>0</DPI_PID_index>
<data>
<AS_alive_response_data></AS_alive_response_data>
</data>
</single_operation_message>
</SCTE104>