DxP Protocol Version 1.2

Similar documents
Hardware Installation Guide. Axess-Ready Surge Protector/Power Conditioner SA-82-AR / XF2-AR SOFTWARE VERSION: FIRMWARE VERSION: 1.01.

Axess Elite (SX-AX-15/20E) Web-Enabled Power Conditioning and Energy Management System. User Manual. Firmware Version v

Axess Elite SX-AX15E, SX-AX20E. Web-Enabled Power Conditioning and Energy Management System. User Manual. Firmware Version v2.04.

RTP library implementation. Design Specification v 1.0

SBIG ASTRONOMICAL INSTRUMENTS

Program Block Editor and Compiler (PBEC)

file:///c:/users/hpguo/dropbox/website/teaching/fall 2017/CS4470/H...

USAFE API ReadMe. Who Should Read This Document? Building the USAFE Sample. Using the.mak File. Using the.dsw File

1. General Description

Time Sensitive Control Streams in IEEE P1722A v1.3

int fnvgetconfig(handle h, UINT32 id, const void *cfg, size_t sz);... 4

Programming in C - Part 2

p1 : Distributed Bitcoin Miner /640 9/26/16

PLENA matrix API Table of contents en 3

CODA Online Data Formats

NetX and NetX Duo SNMP Agent Module Guide

Programming for Engineers Structures, Unions

BLM2031 Structured Programming. Zeyneb KURT

Hardware Installation

Firewalls, Tunnels, and Network Intrusion Detection

Yokogawa DXP Ethernet Driver Help Kepware Technologies

JNIOR Series 3 Release Notes Updated as of Monday, August 29, 2016

Transceiver IP Link Protocol rev.1

The IPsec protocols. Overview

CS349/SE382 A1 C Programming Tutorial

Week 3 Lecture 2. Types Constants and Variables

ArduCAM USB Camera C/C++ SDK

ELEC5616 COMPUTER & NETWORK SECURITY

TIP120-SW-42. VxWorks Device Driver. Motion Controller with Incremental Encoder Interface. Version 2.1.x. User Manual. Issue 2.1.

Networked Door Strike Relay Message Format Specification A

Outline. What is TCP protocol? How the TCP Protocol Works SYN Flooding Attack TCP Reset Attack TCP Session Hijacking Attack

ARP, IP, TCP, UDP. CS 166: Introduction to Computer Systems Security 4/7/18 ARP, IP, TCP, UDP 1

Configurable Number of Simultaneous Packets per Flow

A Fast Review of C Essentials Part I

Programming refresher and intro to C programming

CSC Network Security

The Specification of Project-1

Lumio Release Note Lumio Multi-Touch Communication Protocol

COMMUNICATING WITH THE LOXONE MINISERVER. Loxone Config

IPsec Dead Peer Detection PeriodicMessage Option

Plaintext-Recovery Attacks Against Datagram TLS

Pretty Good Protocol - Design Specification

EEC-682/782 Computer Networks I

Zymkey App Utils: C++

ArduCAM USB Camera SDK

CSE 3214: Computer Network Protocols and Applications Transport Layer (Part 2) Chapter 3 outline. UDP checksum. Port numbers

Wisconsin MMC FPGA SPI Configuration Interface

AET60 BioCARDKey. Application Programming Interface. Subject to change without prior notice

Operating Systems and Networks Project 1: Reliable Transport

Network Communication

mpls ldp atm vc-merge through mpls static binding ipv4

[MS-RDPECLIP]: Remote Desktop Protocol: Clipboard Virtual Channel Extension

Transport Layer Review

Reason Code Dns Server Timeout Error Number 1460

Avro Specification

ECE 544 Project 3 Content-based Routing

[MS-SMB2]: Server Message Block (SMB) Protocol Versions 2 and 3

QNX Software Development Platform 6.6. Input Events Library Reference

Standard Audio Device Driver Specification

CprE 288 Introduction to Embedded Systems Exam 1 Review. 1

Internet Security. - IPSec, SSL/TLS, SRTP - 29th. Oct Lee, Choongho

Micro RWD H2 Protocol

libnetfilter_log Reference Manual

TCP. Networked Systems (H) Lecture 13

P1 : Distributed Bitcoin Miner / /19/2018

spwr_base & spwr_chan

SpiNNaker Application Programming Interface (API)

Following the Packets: A Walk Through Bro s Internal Processing Pipeline

MC-32 Multiboard Programming Adapter

ArduCAM USB Camera SDK

Oracle Hospitality Simphony. Enhanced PMS Interface Specifications

Data File Header Structure for the dbase Version 7 Table File

Nabto Serial Link Protocol

CS Spring 05 - MidTerm

Universal Serial Bus - USB 2.0

Table of Contents. VM201 Protocol

SIMATIC Industrial software Readme SIMATIC S7-PLCSIM Advanced V2.0 SP1 Readme

CEN5501 Computer Networks Project Description

Embedded Controller Programming 2

SE-330 SERIES (NEW REVISION) MODBUS/TCP INTERFACE

WiFi 16 Relay Board TCP ModBus Controlled - User Manual 21 Aug WiFi 16 Relay Board TCP ModBus Controlled

Application User Setup

Networks Homework # 2

InfoTag KE28xx Communications for 186 CPU Firmware Version 4

NVJPEG. DA _v0.1.4 August nvjpeg Libary Guide

PHYTEC-USB-CAM Series communication protocol

VisorALARM-Manager Application Quick Guide. (Ver. 1.3) Dm 380-I. V:3.0

Wifi Attachment Manual

WIRELESS NETWORK USER MANUAL MHz RFT-868-USB USB RFTide Network Interface

AND8386/D. Bootloading BelaSigna 250 Using the I 2 C Interface APPLICATION NOTE

Avro Specification

A Client-Server Exchange

MPEG Video Decoder (VdecMpeg) API 2

Defining Unified CCX CTI Messages

Mellanox Scalable Hierarchical Aggregation and Reduction Protocol (SHARP) API Guide. Version 1.0

Securing Your Wireless LAN

RC1000-PP. Function Reference Manual

Ate. Web Services Integration Toolkit for OpenVMS. Interface Definition File (IDL) Reference. June 2012

Technical Bulletin # Date: August 9, 1999 Product: Message Centers Product Category: PLC Activation

Nubotics Device Interface DLL

Transcription:

DxP Protocol 1. Overview The DxP Protocol is packet based protocol designed to be extensible. This protocol is transmitted over via TCP on a port selected by the user. The factory default port is 9100. The protocol uses a Hello handshake to establish unique sequence numbers to allow for advanced security when AES encryption is used. With AES enabled, all messages must be encrypted with the AES Passphrase set in the device. After the Hello, a Command and Response sequence follows. Any number of Command Response sequences are permitted after Hello. 2. Hello Handshake The client sends a Hello message in the form of the text string hello-000. The DxP enabled device will respond with a packet containing the unsigned 16 bit sequence number. This sequence number is incremented by the client and server with each correct packet sent. 2.1. EXAMPLE Client Server hello 000 1234 (seq 1234) Command (seq 1235) Response Command (seq 1237) Response

DxP Protocol Page 2 3. DxP Packet The packet is broken up into 2 parts. The first part is the header and the second is the payload. Each of these elements are described below. 3.1. Header The header is used to carry general information such as shown in the C programming structure below; typedef struct { ecmnd command; char[21] uname; char[21] password; uchar desc; uchar param; uint16 seq; }THeader command The command variable is and enumerated type that tells the DxP server what class of command is being sent. See Commands for a full list of command classes.. uname This variable is reserved for future use. It will contain the user name of a user on the ipio that is being accessed. password This variable is reserved for future use. It will contain the password of the user above. desc This variable is the command descriptor that describes the individual command within a command class. By extension it lets the server know what the payload is. There is a different set of descriptors for each command class. See Descriptors for a full list of descriptors by command class. param This is an optional parameter that can be passed to the server in addition to the descriptor. Reserved for future use. seq This is the packets sequence number. It is used as part of the security scheme. 3.2. Payload The payload is determined by a combination of the command class and the descriptor. The payloads are described with the descriptor. See descriptors for derails.

DxP Protocol Page 3 4. Commands Currently there are 7 command classes. All classes are defined in the C programming enumerated type definition below. ecmnd_null, ecmnd_set, ecmnd_get, ecmnd_io, ecmnd_keepalive, ecmnd_rss, ecmnd_rcu } ecmnd; 0 ecmnd_null This is a null command and should not be sent to the server. 1 ecmnd_set This command is used to set programmable variables on the server 2 ecmnd_get This command is used to get programmable variables from the server. 3 ecmnd_io This command is used to monitor and control the I/O on the server. 4 ecmnd_keepalive This command is sent to the server as a means of the client validating the communications path to the server. 5 ecmnd_rss This command class is used to control the RSS nest using the RCU. 6 ecmnd_rcu This command class is used to update the display of the RCU. Note: The RSS and RCU commands were added for a specific project and are not for general use. 5. Descriptors Descriptors are used to describe the individual command with in a command class and the payload that the packet contains. All of the descriptors and their payloads are outlined by command class below. 5.1. ecmnd_set The descriptors for this command class will be product specific. 5.2. ecmns_get The descriptors for this command class will be product specific.

DxP Protocol Page 4 5.3. ecmnd_io eio_null, eio_changerelay, eio_changerelays, eio_getrelay, eio_getrelays, eio_getinput, eio_getinputs, eio_pulserelay, }eio; eio_changerelay This command is used to change the status of an individual relay. It carries the TChangeRelay payload. See Payloads for details. The server will respond to this command with a single byte of 0 or 1. 0 if the command was successful, and 1 if there was an error; eio_changerelays This command is used to set ALL of the relays on a device. It carries the TChangeRelays payload. See Payloads for details. The server will respond to this command with a single byte of 0 or 1. 0 if the command was successful and 1 if there was an error. eio_getrelay This command has not yet been implemented eio_getrelays This command is used to get the status of all the relays on the server. The server will respond with an array of bytes containing the status of each relay. The size of the array is dependent on the number of relays on the server. eio_getinput This command is not yet implemented. eio_getiputs This command is used to get the status of all input on the server. The server will return an array of bytes containing the status of each input on the server. The size of the array returned is dependent on the number of inputs on the server. eio_pulserelay This command is used to pulse a relay. It carries the TPulseRelay payload. The server responds with a single byte of either 0 or 1, 0 upon success and 1 upon failure.

DxP Protocol Page 5 5.4. ecmnd_keepalive ekeepalive_null; } ekeepalive; 0 ekeepalive_null This is the only valid descriptor that the keep alive command supports. It is define as null as it carries no payload. The server responds with a single byte of 0 or 1, 0 upon success and 1 upon failure. 5.5. ecmnd_rss These commands are sent from the RCU to the RSS. erss_null, erss_switch, erss_lock, erss_unlock, erss_querry }erss; 1 erss_switch This command is sent to the RSS when an operator has pressed and released an RCU switch to either the A or B position. It carries the TSwitch payload. The server responds with an array of bytes containing the status of all 16 switches. 2- erss_lock This command is sent to the RSS when the operator has held an RCU switch in either the A or B position for more than 3 seconds. Upon receipt of this command the RSS will lock the selected card. This command carries tswitch as its payload. The server responds with an array of bytes containing the status of all 16 switches. 3 erss_unlock This command is sent to the RSS when the operator has pressed and released the switch of a looked card to either the A or B position. Upon receipt of this command the RSS will unlock the selected card. This command carries tswitch as its payload. The server responds with an array of bytes containing the status of all 16 switches. 4 erss_query This command is sent to the RSS every X seconds to keep the RCU in sync with the RSS

DxP Protocol Page 6 5.6. ecmnd_rcu ercu_null, ercu_statusupdate, ercu_frontpanel, ercu_rcu, ercu_autoswitch, ercu_manualswitch } ercu; 1 ercu_statusupdate This command is sent from the RSS controller to the RCU whenever one of the following changes 1. Control is changed to NMO 2. Control is changed to Front Panel 3. Control id changed to RCU 4. A switch changes position regardless of the cause (manual/automatic). 5. A switch is locked. The command carries the TSwitchStatus structure as its payload.

DxP Protocol Page 7 6. Payloads 6.1. TChangeRelay typedef struct{ unsigned char relay; unsigned char state; }TChangeRelay; Where relay is the number of the relay to be affected-1 (i.e. 0 for relay 1 and 1 for relay 2)and state sets the state of the relay, 1=Energize 2=Relax. 6.2. TChangeRelays typeded struct{ unsigned char relaystates[32]; }TChangeRelays; Where relaystates is an array of relay states as defined below: #define NO_CHANGE 0 #define ENERGIZE 1 #define RELAX 2 This payload is supported by devices that support the DxP protocol with 2-32 controllable relays. 6.3. TPulseRelay typedef struct { unsigned char relay; unsigned char state; uint16 pulsewidth; }TPulseRelay; //the relay to be pulsed //the state to pulse //the pulse width in seconds Where relay is the number of the relay to be affected, state is the state to pulse, and pulsewidth is the time to pulse for in seconds. 6.4. TSwitch typedef sruct { unsigned char card; unsigned char pos; } TSwitch; //the card to be switched //position to put the card in Where card is the number of the card to be switched (1-16) and post is the position to place the card in (0=A 1=B).

6.1. TSwitchStatus typedef struct { unsigned char status[16]; } #define SWITCH_STATUS_A #define SWITCH_STATUS_B #define SWITCH_STATUS_LOCK #define SWITCH_STATUS_UNLOCK #define SWITCH_STATUS_NMO #define SWITCH_STATUS_RCU #define SWITCH_STATUS_FRONTPANEL #define SWITCH_STATUS_NOCARD //The status of all 16 cards 0x00 0x01 0x02 0x00 0x04 0x08 0x10 0xFF Where status is an array of bit fields used to reflect the status of each switch in the RSS nest. Slots without a card will be SWITCH_STATUS_NOCARD