Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A high-performance infrastructure framework for distributed systems simulation based on the IEEE-1516 HLA Spec. and NASA DSES.

License

NotificationsYou must be signed in to change notification settings

Electrostat-Lab/Electrostatic-Sandbox

Repository files navigation

The Electrostatic-Sandbox SDK

Preface and terminology:

The Electrostatic-Sandbox SDK is a complete work-in-progress Software Development Suite written purely in ISO GNU/C99 with stock Java bindings with a software distributed simulation engineering interface based on the IEEE-1516 High-level Architecture (HLA), and the National Aeronautics and Space Administration Distributed space exploration simulation system (NASA DSES).

Electrobox is an electronic monstrosity workstation designed to examine and develop systems for distributed simulations by providing an integrated environment housing the basic nostalgic communication protocols (i.e., Serial and Parallel COMs), the abstract networking interfaces, and a range of other electronic modules providing standards for controller interfaces, and sensor modules (e.g., the underdeveloped ShiftAvr, and Arduinos).

This electronic monstrosity features and leverages a powerful system-engineering infrastructure framework, theElectrostatic-Sandbox Framework for distributed simulation systems, a complete SDK suite written purely in C programming language with a JNI binding based on the IEEE-1516 HLA Spec. and NASA DSES.

Jump to the Electrobox Specification

Provisional Software/Hardware Specification:

Provisional Hardware/Software Abstraction Layer (HAL):

TheHAL is a type of software hierarchial architectural design that provides generic Application Programming Interfaces for the system as abstractions with replaceable infrastructure. TheInfrastructure is decomposed into major bulky partsNetworking Infrastructure,Software Infrastructure, andSimulation Infrastructure (aka. IEEE-1516 HLA RTI). Each infrastructure is further decomposed into finer components that operate on specific resources.System Resources are either OS Resources, Hardware Resources, or Simulation Resources. Development phases are created by introducing a milestone, the milestone operates on one or more of the major bulkyinfrastructures and brings decomposed features to the SDK gradually until the milestone is achieved.

  • Simplified Paradigm:
block-betacolumns 1  block:IEEE    _IEEE["Simulation Infrastructure (ElectroSim Project)"]  end  block:__IEEE    RTI_IEEE["IEEE-1516 RTI"]    FED_IEEE["RTI Federates"]    FOM_IEEE["FOM"]  end  block:MIG    _MIG["Migrated APIs and Frameworks"]  end  block:MIG_APIs      SERIAL["Serial4j"]      JECTOR["Jector"]      ART["Articular-ES"]      JME["Jme-alloc"]      JSNAP["jSnapLoader"]      AUTO["Automata4j"]  end  NETSOFT_INFRA["Networking and Software Infrastructure (ElectroNetSoft Project)"]  OS_RES["Base OS Resources and Std Libraries APIs"]  block:TITLE    block:STD      Std["Std Libs"]    end    block:OS      OSRES["Base OS Resources"]    end  end  block:HAL    block:_STD      ADT["ADTs"]      _STD_CONT["..."]    end    block:_OS      FS["Abstract Filesystems"]      _OS_CONT["..."]    end  end  block:INFRA      _INFRA["Hardware Infrastructure (ElectroIO Project)"]  end  block:ELECTROMIO      _ELECTROMIO["ElectroMIO (formerly ShiftAvr)"]  end  block:__ELECTROMIO      GPIO["GPIO"]      UART["USART"]      ADC["ADC"]      MCONT["..."]  end  MCU["Microcontrollers Toolchains Binaries"]  block:ELECTROKIO      _ELECTROKIO["ElectroKIO"]  end  block:__ELECTROKIO      USB["USB-FS"]      RS232["RS232"]      PARA["IEEE-1284"]      KCONT["..."]  end  KIO["Linux Kernel userspace APIs"]  style INFRA fill:#000,stroke:#999  style ELECTROMIO fill:#000,stroke:#999  style __ELECTROMIO fill:#000,stroke:#999  style MCU fill:#000,stroke:#999  style ELECTROKIO fill:#000,stroke:#999  style __ELECTROKIO fill:#000,stroke:#999  style KIO fill:#000,stroke:#999  style MIG fill:#999,stroke:#999  style MIG_APIs fill:#999,stroke:#999  style NETSOFT_INFRA stroke:#333  style OS_RES stroke:#333  style OS fill:#969,stroke:#333  style STD fill:#999,stroke:#333  style _OS fill:#969,stroke:#333  style _STD fill:#999,stroke:#333
Loading
  • Detailed Architecture:
block-betacolumns 1block:IEEE    _IEEE["Simulation Infrastructure (ElectroSim Project)"]endblock:__IEEE  RTI_IEEE["IEEE-1516 RTI"]  FED_IEEE["RTI Federates"]  FOM_IEEE["FOM"]end
Loading

...

block-betacolumns 1block:MIG  _MIG["Migrated APIs and Frameworks"]endblock:MIG_APIs    SERIAL["Serial4j"]    JECTOR["Jector"]    ART["Articular-ES"]    JME["Jme-alloc"]    JSNAP["jSnapLoader"]    AUTO["Automata4j"]endstyle MIG fill:#999,stroke:#999style MIG_APIs fill:#999,stroke:#999
Loading

...

block-betacolumns 1NETSOFT_INFRA["Networking and Software Infrastructure (ElectroNetSoft Project)"]OS_RES["Base OS Resources and Std Libraries APIs"]block:TITLE  block:STD    Std["Std Libs"]  end  block:OS    OSRES["Base OS Resources"]  endendblock:HAL  block:_STD    ADT["ADTs"]    ELECTROMATHS["ElectroMaths"]    ELECTROAUTO["ElectroAuto"]    ELECTROJECTOR["ElectroJector"]    ELECTROART["ElectroArticular-ES"]    LOG["ElectroLogger"]  end  block:_OS    FS["Abstract Filesystems"]    SOCK["Sockets"]    PROC["Process Control"]    THR["Thread Control"]    MEM["Memory Control"]  endendstyle NETSOFT_INFRA stroke:#333style OS_RES stroke:#333
Loading

...

block-betacolumns 1block:INFRA    _INFRA["Hardware Infrastructure (ElectroIO Project)"]endblock:ELECTROMIO    _ELECTROMIO["ElectroMIO (formerly ShiftAvr)"]endblock:__ELECTROMIO  GPIO["GPIO"]  UART["USART"]  ADC["ADC"]  EEPROM["EEPROM"]  TWI["TWI"]  SPI["SPI"]  SOCKET["WiFi-Sockets"]endMCU["Microcontrollers Toolchains Binaries"]block:ELECTROKIO    _ELECTROKIO["ElectroKIO"]endblock:__ELECTROKIO    USB["USB-FS"]    RS232["RS232"]    PARA["IEEE-1284"]    ETH["IEEE-802.3"]    CD["DVD-CDROM"]    PCI["PCI-e"]endKIO["Linux Kernel userspace APIs"]style INFRA fill:#000,stroke:#999style ELECTROMIO fill:#000,stroke:#999style __ELECTROMIO fill:#000,stroke:#999style MCU fill:#000,stroke:#999style ELECTROKIO fill:#000,stroke:#999style __ELECTROKIO fill:#000,stroke:#999style KIO fill:#000,stroke:#999
Loading

Project Milestones:

timelinetitle The Electrostatic-Sandbox SDK Milestones2024-2025 (Tight Period): Primer version 1.0.0 (v1.0.0-p1): Migration of the supportive projects: ElectroNetSoft (Std Libraries - OS Resources Control): ElectroIO (AVR Only)2025-2026 (Proof-of-concept Period): Intermediary period for testing and prototyping simulation projects: ElectroIO (PIC MCU. Integrations)2025-2026 (Production Period): Software & Networking Infrastructure (Mature ElectroNetSoft): Stable version v1.0.02026-2028 (Production Period): Simulation Infrastructure: Base IEEE-1516 HLA API and RTI integration for distributed simulation building (ElectroSim Project): Stable version v2.0.02028-.... (Open Period): Open period for: testing,: prototyping simulation projects,: communicating with contemplated teams,: and publications on JOSS
Loading

Important

Migration Milestones:

  • Migrating Serial4j to the project.
  • Migrating ShiftAvr to the project.
  • Migrating jSnapLoader to the project.
  • Migrating Automata4j to the project.
  • Migrating Jector to the project.

Important

Primer version 1.0.0 (v1.0.0-p1)"ElectroNetSoft Project & ElectroIO Project":

  • Low-level Abstract Data types (ADTs).
  • Low-level popular text-manipulation algorithms.
  • Low-level popular switching algebra algorithms.
  • Low-level popular elementary algebra algorithms.
  • Low-level popular transcendental algebra algorithms.
  • Abstract filesystem utilities.
  • Thread control utilities and interface.
  • Sockets control utilities and interface.
  • Process control utilities and interface.
  • Logging Utilities.
  • Memory Allocation Utilities.
  • Memory Inspection Utilities.
  • Memory Control Utilities.
  • Crytographic utilities and interfaces.
  • Base System Databases utilities and interfaces.
  • ElectroIO for AVR MCUs (formerly ShiftAvr).

Stable version v1.0.0"The Base OS Resources Control APIs (The Mature ElectroNetSoft Project)".

...

Stable version v2.0.0"The Base IEEE-1516 HLA API and RTI integration (Project ElectroSim)".

Challenges:

  • Building the appropriate HAL on top of the low-level OS resources and communication protocols.
  • Handling security and network firewall dilemmas.
  • Recruiting developers for open-source sofware engineering.
  • Working in a multi-disciplinary environment of both software, hardware engineering perspectives and managing the interactions between them.

Major End-goals:

  • The capability to build a complete distributed system on top of a GNU/Linux in a sandboxed environment bearing in mind all the perspective of truely performant software (e.g., concurrency, security, reliability, failure handlers, ...etc).
  • Connecting to peripheral digital/analog devices via simulation interfaces in a sandboxed environment (Hardware/Software Co-design).
  • Simulating large Space Missions into small finite simulations (e.g., Rocket Launch, Rocket separation stages, Nose separation, Rocket Launch Abort, and Rocket Engine Failure).
  • Building in-home, office, and outdoor distributed IoT projects (e.g., Smart Homes, Smart Hospitals, Switch Control Military and Traffic control systems).
  • Solving the devastating issue ofwork that cannot be fully remote due to the embedded hardware at the company site..

Board Overview (Migrated Projects Dismissed):

HAL-Electrostatic

General progress:

API used:

  • Serial4j.
  • Articular-ES.
  • Automata4j.
  • Jector.
  • ShiftAvr.
  • Parallel4j.
  • Socket4j.
  • Electrostatic-sandbox-framework.

Environment Setup:

  • setup-tools scripting.
  • setup-framework scripting.

Electrostatic-sandbox framework:

  • Electroserial API: wraps Serial4j API providing a generic boundary to the Electrocomponent API.
  • Electroparallel API: wraps Parallel4j API providing a generic boundary to the Electrocomponent API.
  • Electrosocket API: wraps Socket4j API providing a generic boundary to the Electrocomponent API.
  • Electrocomponent API: provides the vertical HAL for interacting with devices through device managers based on the scientific model provided by theSet Theory.
  • Electrostatic-sandbox-examples: examples and techdemos utilizing the HAL API directly to interact with peripheral devices and/or use one of the above core APIs.
  • Deployment to Maven Central.
  • Build the framework into an SDK.

References (Direct links to useful topics):

Operational:

Theoretical papers:

Technical Books:

Credits:

Credits should go to these products and platforms for being open-source and widely available with no constraints, hooray to them:

  • The Java Platform.
  • Oracle Corporation.
  • The CMake Building Framework.
  • The jMonkeyEngine game engine.
  • The Gradle API.
  • The Android Studio IDE.
  • The Jetbrains Fleet Code Editor.
  • The GraalVM team.
  • The Linux Kernel.
  • The GNU/Linux Operating Systems.
  • The Avrdude tool.
  • The Arduino Platform.
  • The OpenAI API (GPT-3) mainly for scripting and project management.
  • The Gigabyte Company (not open-source, but the main board depends on).
  • Zorin OS (the main OS currently in-use).
  • SanDisk (flash drive).
  • Microchip & ATMEL (for AVR microcontrollers).
  • The Linux Man Page & Micheal Kerrisk's Linux Interfacing Book.
  • The GNU/Linux glibc and the interfacing libraries.
  • IEEE for providing the standards of I/O Communication interfaces.
  • The Universal Serial Bus (USB) Corporation.
  • The Microsoft Corp. for providing VsCode, an easy-to-use code editor.
  • The Jetbrains Corp. for providing Intellij-IDEA IDE.
  • The NASA Technical Reports Server (NTRS) for providing open publications from their distributed simulation systems.
  • Maven Central, Sonatype and JIRA services for hosting open-source APIs.
  • Springer Nature for providing Mathematics books and publications on predicate calculus and logic analysis.
  • The ACM digital library for providing publications about distributed simulation systems.
  • The GitHub Platform and Git VCS for hosting this project.
  • The KiCad project.
  • The Fritzing project.

And, To others who I didn't mention, and were essential predicates for the success of this project.

Packages

No packages published

Contributors2

  •  
  •  

[8]ページ先頭

©2009-2025 Movatter.jp