Difference between revisions of "Protocol:SHIPBridge"

From Serious Documentation
Jump to: navigation, search
(SHIPBridge API)
(What is the {{Protocol|SHIPBridge|SHIPBridge Protocol}}?)
Line 1: Line 1:
 
__NOTOC__
 
__NOTOC__
== What is the {{Protocol|SHIPBridge|SHIPBridge Protocol}}? ==
+
== What is the SHIPBridge Protocol? ==
 
SHIPBridge is a comprehensive proprietary communications protocol available in SHIP Version 5 {{v5}}.
 
SHIPBridge is a comprehensive proprietary communications protocol available in SHIP Version 5 {{v5}}.
  
The SHIPBridge protocol enables over-the-wire access to files stored on the SIM/SCM, updates of firmware and GUI, as well as the exchange of typed data variables. SHIPBridge is intended to function over all available communication ports available on a module (i.e., USB, UART, SPI, TCP/IP, etc.), however USB and UART are currently the only validated interfaces on most modules. Future TCP/IP support will enable firmware updates, status and monitoring, and data exchange from cloud-based and server-based entities to the modules.
+
The SHIPBridge protocol enables over-the-wire access to files stored on the SIM/SCM, updates of firmware and GUI, as well as the exchange of typed data variables. SHIPBridge is intended to function over all available communication ports available on a module (i.e., USB, UART, SPI, TCP/IP, etc.), however USB and UART are currently the only validated interfaces on most modules. Future TCP/IP support will enable firmware updates, status and monitoring, and data exchange from cloud or server based entities to the modules.
  
 
SHIPBridge has the following high-level capabilities:
 
SHIPBridge has the following high-level capabilities:
* Robust bi-directional command-response architecture
+
===Robust bidirectional command-response architecture===
** Arbitrary physical layer support including UART, USB Device (future: SPI, Ethernet, WiFi, and Bluetooth)
+
* Arbitrary physical layer support including UART, USB Device (future: SPI, Ethernet, WiFi, and Bluetooth)
** Binary framed packet protocol with CRCs for message integrity
+
* Binary framed packet protocol with CRCs for message integrity
** Multi-session: multiple controllers can simultaneously access a SIM over the same or a different physical interface
+
* Multi-session: multiple controllers can simultaneously access a SIM over the same or a different physical interface
* SIM system information and control
+
 
** Reboots, status checks, firmware validation, and more
+
===SIM system information and control===
* Comprehensive and powerful data movement  
+
* Reboots, status checks, firmware validation, and more
** Shared variable philosophy to exchange status and control data
+
 
** All simple data types ({{DataType|Boolean}}, {{DataType|Byte}}, {{DataType|Short}}, {{DataType|Integer}}, {{DataType|Long}}, {{DataType|Float}}, {{DataType|Double}}, {{DataType|String}}, {{DataType|Buffer}})
+
===Comprehensive and powerful data movement ===
** Polled or Push data, on a per-variable basis
+
* Shared variable philosophy to exchange status and control data
** Run-time prioritizable traffic for flexible bandwidth management
+
* All simple data types ({{DataType|Boolean}}, {{DataType|Byte}}, {{DataType|Short}}, {{DataType|Integer}}, {{DataType|Long}}, {{DataType|Float}}, {{DataType|Double}}, {{DataType|String}}, {{DataType|Buffer}})
** Fully bidirectional communication
+
* Polled or Push data, on a per-variable basis
* Complete upgradability
+
* Able to prioritize run-time traffic for flexible bandwidth management
** Over-the-wire updates for all firmware images (i.e., boot loaders, applications, GUI)
+
* Fully bidirectional communication
* (Coming soon) Flexible over-the-wire file system access
+
 
** Read/write access to all removable and fixed storage media (USB Thumb drives, SDCards, on-board file systems)
+
===Completely Upgradable===
** Write firmware images to file system to allow background transfer of files and automatic upgrade on next boot
+
* Over-the-wire updates for all firmware images (i.e., boot loaders, applications, GUI)
* (Future) Persistent variable storage
+
 
** Read/write access to persistent storage registry variable values
+
==Planned Future Features==
* (Future) Extensive debugging capabilities
+
 
** Breakpoint and step through GUI execution
+
===Flexible over-the-wire file system access===
** Read/write access to GUI variables and node properties
+
* Read/write access to all removable and fixed storage media (USB Thumb drives, SDCards, on-board file systems)
 +
* Write firmware images to file system to allow background transfer of files and automatic upgrade on next boot
 +
 
 +
===Persistent variable storage===
 +
* Read/write access to persistent storage registry variable values
 +
 
 +
===Extensive debugging capabilities===
 +
* Breakpoint and step through GUI execution
 +
* Read/write access to GUI variables and node properties
  
 
SHIPBridge is currently used from [[SHIPTide]] over USB to update the firmware and GUI on SIMs.
 
SHIPBridge is currently used from [[SHIPTide]] over USB to update the firmware and GUI on SIMs.

Revision as of 22:20, 5 August 2016

What is the SHIPBridge Protocol?

SHIPBridge is a comprehensive proprietary communications protocol available in SHIP Version 5 Badge SHIPv5.gif.

The SHIPBridge protocol enables over-the-wire access to files stored on the SIM/SCM, updates of firmware and GUI, as well as the exchange of typed data variables. SHIPBridge is intended to function over all available communication ports available on a module (i.e., USB, UART, SPI, TCP/IP, etc.), however USB and UART are currently the only validated interfaces on most modules. Future TCP/IP support will enable firmware updates, status and monitoring, and data exchange from cloud or server based entities to the modules.

SHIPBridge has the following high-level capabilities:

Robust bidirectional command-response architecture

  • Arbitrary physical layer support including UART, USB Device (future: SPI, Ethernet, WiFi, and Bluetooth)
  • Binary framed packet protocol with CRCs for message integrity
  • Multi-session: multiple controllers can simultaneously access a SIM over the same or a different physical interface

SIM system information and control

  • Reboots, status checks, firmware validation, and more

Comprehensive and powerful data movement

  • Shared variable philosophy to exchange status and control data
  • All simple data types (Boolean, Byte, Short, Integer, Long, Float, Double, String, Buffer)
  • Polled or Push data, on a per-variable basis
  • Able to prioritize run-time traffic for flexible bandwidth management
  • Fully bidirectional communication

Completely Upgradable

  • Over-the-wire updates for all firmware images (i.e., boot loaders, applications, GUI)

Planned Future Features

Flexible over-the-wire file system access

  • Read/write access to all removable and fixed storage media (USB Thumb drives, SDCards, on-board file systems)
  • Write firmware images to file system to allow background transfer of files and automatic upgrade on next boot

Persistent variable storage

  • Read/write access to persistent storage registry variable values

Extensive debugging capabilities

  • Breakpoint and step through GUI execution
  • Read/write access to GUI variables and node properties

SHIPBridge is currently used from SHIPTide over USB to update the firmware and GUI on SIMs.

SHIPBridge Release Status

SHIPBridge protocol core functionality has been in use since the release of v5. Features are continuously being refined and added throughout the v5 releases.

SHIPBridge API

The SHIPBridge API code has not yet been fully released, however it is available to registered SIM owners to use in conjunction with Serious products upon request. Customers are able to port the API to their own target environment for advanced communications and control of the SIM.

The SHIPBridge API code has been validated in the following environments:

  1. Renesas e2studio, GCC embedded C projects for RX, SH, and ARM Cortex-A9 MCU architectures, running on Micrium OS-III
  2. Eclipse IDE for C/C++, IAR embedded C project for ARM Cortex-M4 MCU architecture, running on FreeRTOS V7
  3. QtCreator, GCC C++ project for x86, running on Windows 7 and greater

Currently, the SHIPBridge API code only supports being compiled for 32-bit output. SHIPBridge also requires OS features such as tasks and queues, Serious is investigating how best to provide a unified code base which supports OS-based implementations and "super loop" implementations. Contact Serious for more information on these developments.

SHIPBridge Documentation and More Information