- Notifications
You must be signed in to change notification settings - Fork5
A high-performance infrastructure framework for distributed systems simulation based on the IEEE-1516 HLA Spec. and NASA DSES.
License
Electrostat-Lab/Electrostatic-Sandbox
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
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
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- 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...
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...
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...
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:#999timelinetitle 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 JOSSImportant
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)".
- 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.
- 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..
API used:
- Serial4j.
- Articular-ES.
- Automata4j.
- Jector.
- ShiftAvr.
- Parallel4j.
- Socket4j.
- Electrostatic-sandbox-framework.
Environment Setup:
setup-toolsscripting.setup-frameworkscripting.
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.
- GNU/Linux glibc reference manual on terminal I/O
- GNU/Linux glibc reference manual on low-level I/O
- Linux Kernel Userspace APIs
- Linux Manual Page Generic IO using IOCTL
- Linux Generic IOCTL Functions to control data routing
- Linux Manual Page Serial IOCTL
- Linux Serial IOCTL Magic Macros
- Linux Parallel IOCTL Magic Macros
- Linux IOCTL CDROM Magic Macros
- Linux IOCTL PCI-e Magic Macros
- Linux IOCTL USB FS Magic Macros
- Linux Kernel Test Hashing
- TWOs Discrete Event Simulation
- VME TWOs Discrete Event Simulation
- NASA Distributed System simulation
- C/C++ IBM Language Reference
- GNU C Language Reference Manual
- GCC Compiler Reference Manual
- libstdc++ Reference Manual
- GNU libc Reference Manual
- Java-20 APIs Documentation Oracle
- Java-20 JNI API Documentation
- Java-20 Language Reference Oracle
- Java-20 VM Oracle
- NASA C/C++ Native Coding Style
- Java Google Coding Style
- Ubuntu-bionic Internals
- Serial Port Complete by Jan Axelson's
- Parallel Port Complete by Jan Axelson's
- USB Complete by Jan Axelson's
- USB Embedded Hosts Complete by Jan Axelson's
- USB Mass Storage Complete by Jan Axelson's
- Embedded Ethernet and Internet Complete by Jan Axelson's
- The Microcontroller Idea Book
- Making Printed Circuit Boards
- PCI-e Programming
- AVR Microcontroller Programming
- In-serial Programmer software protocol
- Parallel Programmer software protocol
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.
About
A high-performance infrastructure framework for distributed systems simulation based on the IEEE-1516 HLA Spec. and NASA DSES.
Topics
Resources
License
Contributing
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors2
Uh oh!
There was an error while loading.Please reload this page.


