Code Monkey home page Code Monkey logo

electrostat-lab / electrostatic-sandbox Goto Github PK

View Code? Open in Web Editor NEW
2.0 0.0 2.0 64.13 MB

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

License: BSD 3-Clause "New" or "Revised" License

Shell 0.57% CMake 0.06% C 1.92% Java 5.65% C++ 3.90% HTML 74.82% CSS 1.27% JavaScript 11.31% Makefile 0.44% Assembly 0.05%
arduino avrsandbox embedded-systems-engineering hardware hardware-software-codesign ieee-1284 jmonkeyengine3 rs-232 serial-communications serial4j

electrostatic-sandbox's Introduction

Electrostatic-Sandbox

Preface:

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).

Hardware-Software specification overview:

Item Explanation
Problem Definition Obtaining an integrated environment to efficiently integrate embedded systems with other resources like graphics-based applications and games, with an essential predicate of providing the blend of the old communication protocols, and externally pluggable electronic modules.
Scientific Recall of the Problem Using the abstract Set Theory and Predicate Logic annotations, the main problem can be described as a universal set of predicates. In other words, the main problem is the universe set $P_{Env.}$; where P designates a problem universe set, and Env. stands for the environment. Now, $P_{Graphics}$ represents another requirement set of graphics-based applications, and $P_{COM}$ represents the problem set of COM protocols and finally $P_{Modules}$ designating a problem set of pluggable electronic modules including sensor modules that are indirectly established with the $P_{Env.}$. Thus, the general scientific model for the problem is $P_{Env.} = [ P_{Motherboard}, P_{Graphics}, P_{COM}, P_{Modules} ]$, and then recall their binary relations set in a duplex transmission system as $$R_{Env.} = [(P_{Motherboard}, P_{Motherboard}), (P_{Motherboard}, P_{Graphics}), (P_{Motherboard}, P_{COM}), (P_{Motherboard}, P_{Modules}), (P_{Motherboard}, P_{Null}),$$ $$(P_{Graphics}, P_{Motherboard}), (P_{Graphics}, P_{Graphics}), (P_{Graphics}, P_{COM}), (P_{Graphics}, P_{Modules}), (P_{Graphics}, P_{Null}),$$ $$(P_{COM}, P_{Motherboard}), (P_{COM}, P_{Graphics}), (P_{COM}, P_{COM}), (P_{COM}, P_{Modules}), (P_{COM}, P_{Null}),$$ $$(P_{Modules}, P_{Motherboard}), (P_{Modules}, P_{Graphics}), (P_{Modules}, P_{COM}), (P_{Modules}, P_{Modules}), (P_{Modules}, P_{Null})]$$, with a cardinality of $|R_{Env.}| = P^{e} + R_{Null} = 4^2 + 4 = 20$; where $P$ is the number of problems in the $R_{Env}$ set, $e$ is the number of problems per relation, and $R_{Null}$ is the number of null relations. Thus the final analogy of the problem is: $$P_{Env.} = [ P_{Motherboard}\ U\ P_{Graphics}\ U\ P_{COM}\ U\ P_{Modules} \ |\ R_{Env.}\ {\neq}\ {\phi}]$$
General Approach The general approach entails buying one of the available workstations or toolkits for embedded systems.
Draw Backs of the General Approach The problem with the general solution that it didn't address providing an efficient realtime graphics simulation environment, so the performance is quite poor when advanced graphics-based applications are required to be tested in conjunction with the communication protocols and the electronic modules.
Specific Minimal Approach The minimal approach utilizes this simplistic model that uses the Set Theory. Nonetheless, we are merely concerned about the relation set $R_{Env.}$ inside the integrated environment, as it maps the behavior we are seeking from the system.
Upgrading the system Theoretically, the previously mentioned scientific model includes the complements of the problem elements described, therefore for instance, the $P_{Modules}$ has its complement $P'_{Modules}$ which means that we can add expansion modules designated as complements for the pre-existing modules to our system, as well. The practicability of this is well-demonstrated, but half-revealed in a way that it's very much related to the original equation: Which motherboard are we going to use? AND Which type of COM and modules are utilized in this set? Are they really compatible? We will see about these details when we scope down on the circuit-design level...
Scientific Recall of the solution Again, using the Set Theory and the Group Theory, envision the environment to build is a universe set E with a main board known as GA standing for Gigabyte, a set of peripherals P, and a set of communication modules providing communication protocols COM, and a set of external electronic modules M; thus the final scientific model will be $E = [GA, P, COM, M]$; where COM = {com | "com" is a communication protocol provided by a SoC module providing the relations between "GA", "P" and "M" sets}, P = {p | "p" is a peripheral device connected directly to the "GA" motherboard}, and M = {m | "m" is an electronic module connected indirectly to the "GA" motherboard using one or more of the board communication protocols "com"}.

The main board General layout Scheme
image image image

Table of content (WIP):

Hardware:

  • General Components.
  • General Circuitry scheme layout.
  • Substantial Circuitry description (i.e., main board, peripherals, and modules).

Software:

  • Basic Environment Setup.
  • Electrostatic-Sandbox Tools (i.e., development tools, frameworks, and APIs).
  • Electrostatic-Sandbox Framework (a set of APIs blending Serial4j, Socket4j, ShiftAvr, and Parallel4j for building distributed simulation systems).

Main Attachments:

DIY Tutorial:

Find the do-it-yourself tutorial at diy-tutorial.

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 the Set 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.

Circuitry Explanation:

  • GA-H61M-S2P Rev-2.0 circuit connections details.
  • Scientific modelling to the circuitry and connection details.
  • ShiftAvr circuitry explanation.
  • Digital electronics and digital design.

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 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.

electrostatic-sandbox's People

Contributors

scrappers-glitch avatar

Stargazers

 avatar

electrostatic-sandbox's Issues

[Sandbox-Framework] Design a general purpose API to initialize, control, and finalize comm. protocols

The electrostatics-sandbox-framework project should have a good abstraction that serves the following communication protocols, and is open for external plugins (other protocols implementations):

  • Serial RS232.
  • Serial USB.
  • Parallel IEEE-1284.
  • TCP/IP Sockets.
  • UDP Sockets.
  • PCI-e direct IO Reconnoitering.

To design better abstraction layer, use the Set Theory to find and map relations that are common (intersecting sectors) among these protocols, which are initialization, read/write in a byte-order, polling, blocking, IO addressing, and finalization.

  • Initialization:
  • R/W in a byte-order:
  • Polling:
  • Blocking:
  • I/O Addressing:
  • Finalization:

[NASA-TOPS] Conclude documents aligned with the NASA TOPS program

This open source project has a lot of theoretical backgrounds which necessitates a couple of documents in order to promote the project to be completely aligned with the NASA Transform To Open Science (NASA TOPS) program. The following are the required documents:

  • Open Science Data Management Plans (OSDMPs).
  • Open Science Strategy Document.
  • Open Workflow Document.
  • Open Milestone Document.
  • Preservation and maintenance plan document.
  • Code of conduct Document for the collaboration rules.
  • Appendix-A: Catalog for terminology document.
  • Appendix-B: Resources, references, and publications used.
  • Appendix-C: Social platforms, promotion, and posting documents.

[Digital-design] Migrate AVR-Sandbox topics

It is better to have all data in one place, so I propose archiving the AVR-Sandbox repository and migrating its content here into electrostatic-sandbox-examples directory entry.

[Sandbox-Scripting] Merge the CMakeLists script for the native library build types

The electrostatic-core/CMakeLists.txt script is essentially the same as the electrostatic4j/electrostatic4j-native/CMakeLists.txt but with different parameters, so it's recommended to merge them. The general approach for library scripting should be to merge all build variants together with changing parameters (build compilers and targets associating architecture).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.