TIYCam Software Development Guide

Introduction

The TIYCam Software is called JES (Jovision Embedded System). JES is designed using the layers and blocks concepts. The layer concept is from the vertical point of view of the software system, while the block concept is from the horizontal point of view of the software system.

JES uses the bus mode, i.e., JES software consists of multiple processes, each process needs to be registered on the JES bus, it‘s called mounting application process to the bus. All processes communicate through the bus, and are managed by the bus. The process runs independently of other process. The service provided by the process could depend on the services provided by other processes. If the dependent services are missing, the service could not be provided by the process. The process can notify the log module, and it will return the error code when the user calls the service it provides.

Many services of JES software are mounted based on needs by mounting the corresponding application processes to bus. The unused processed can be unmounted or deleted from the software system.

Architecture of JES Software

Layers of JES

JES software system can be divided into four layers from bottom up.

  • Application layer:
    • Implement services provided by the TIYCam. The services can be mounted on as-need basis. One process provide one or more services. This layer is open to developers.
  • Application development and protocol interface layer
    • Support application layer by providing APIs, and SDK that packing the inter-processes communication protocol interfaces. This layer is provided to developers in the form of SDK and API documents.
  • Framework and adaptation layer
    • Provide upper layers with fundamental capacities, such as bus management, inter-process communication, shared buffer, video/audio codec, etc. It is in the form of libraries such as jbus, jbuffer, and jmedia, etc. This layer is also responsible for isolating the differences between hardware platforms, and provides an unified interface for the upper layers.
  • System layer
    • A basic embedded linux system that includes operation system, drivers, database engine etc. It includes the board support package provided by the application processor chipset vendors, and open source libraries, such has OpenSSL/WolfSSL, libcurl, libdbus, libdrm, etc.

As shown in the following figure, the upper layer can be based on the lower layer or use the services provided by the lower layer. The application layer can directly call the libraries of the system layer, etc.

JES Software Modules

The block concept of JES software mainly refers to the application layer and application development and protocol interface layer. In the framework and adaption layer, although it consists of multiple modules, generally, we treat it as a whole unit.

In TIYcam software, VideoSource is the fundamental module. VideoSource provides RAW video stream, main channel and side channel. The RAW video stream can be utilized by the AI video analytics application. The encoded channel video stream can be provided to application processed. The bus is implemented by jbus, and the data moves using jbuffer.

Resources

Application Layer

Application Development and Protocol Interface Layer

System Layer