Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automate Generation of Boards Feature #30

Open
wants to merge 76 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
9601eca
Fix red box bug by moving context menu inside the Area's UI
rebdiaz Oct 20, 2024
c45652a
Add link to contributions google sheet
rebdiaz Oct 22, 2024
1520388
Delete contributions.pdf to make better
rebdiaz Oct 22, 2024
88bcac5
Push testing changes to make code build
rebdiaz Oct 22, 2024
8743378
Merge pull request #1 from rebdiaz/rebecca-testing
rebdiaz Oct 22, 2024
30e7749
Add Design Doc 24-25
rebdiaz Oct 22, 2024
9878da0
Create contributions.txt
rebdiaz Oct 22, 2024
4bea753
changed tool-chain to use nightly compiler
e-morandi Oct 22, 2024
e23a29b
Draft and comments for automation of new boards feature - mostly plan…
rebdiaz Oct 22, 2024
2c7bdd7
Create personal_time_sheet_link
e-morandi Oct 23, 2024
db5313e
Create README.md
e-morandi Oct 24, 2024
2e9c27a
Added new comments to generate SVG elements to follow "parse, don't v…
rebdiaz Oct 24, 2024
639b34c
Update README.md
e-morandi Oct 25, 2024
fb47a55
Created architecture for example code, example code folder and interf…
e-morandi Oct 25, 2024
6bbcebc
Merge branch 'ethan-dev' of https://github.com/CAPSTONE-24-25-IRON-CO…
e-morandi Oct 25, 2024
6bb9aee
Update README to add to work done section: mainly architecture for au…
rebdiaz Oct 25, 2024
f4e5d06
Update README.md
julianbeloiu Oct 26, 2024
d7e335a
Update README.md
julianbeloiu Oct 26, 2024
8bcbffd
Update README.md
erictobon Oct 26, 2024
16dbe24
Add arduino uno toml and svg files
rebdiaz Nov 5, 2024
5f285b0
Update pin IDs in svg for arduino uno
rebdiaz Nov 5, 2024
0245b7a
Add template simple blinky LED program for Arduino Uno - was able to …
rebdiaz Nov 11, 2024
428fbca
Add example code for simple alarm clock program for Arduino Uno
rebdiaz Nov 12, 2024
f981efd
Updated example buttons/paths
e-morandi Nov 12, 2024
9d2706a
Add SVG and toml drafts for yellow LED
rebdiaz Nov 12, 2024
6ef4f8a
Add example-code folder with new examples
e-morandi Nov 12, 2024
6414e51
Merge pull request #2 from CAPSTONE-24-25-IRON-CODER/ethan-dev
julianbeloiu Nov 12, 2024
e18689a
Merge remote-tracking branch 'origin/main-dev' into rebecca-dev
rebdiaz Nov 12, 2024
ca30794
Merge remote-tracking branch 'origin/rebecca-dev' into main-dev
rebdiaz Nov 12, 2024
3b5f0da
Rename AlarmClock example program path to match code
rebdiaz Nov 12, 2024
c9e87a0
Merge remote-tracking branch 'origin/main-dev' into rebecca-dev
rebdiaz Nov 12, 2024
b60a236
Add piezo buzzer, push button, and resistor to Iron Coder. also add s…
rebdiaz Nov 14, 2024
8f75934
Fix tomls to have more accurate pinouts
rebdiaz Nov 14, 2024
13e767f
Modified board struct to allow more than 2 types of boards (changed i…
rebdiaz Nov 19, 2024
fa2750c
Add neopixel to iron coder
rebdiaz Nov 19, 2024
058e329
Fix .ironcoder.toml for example code
rebdiaz Nov 19, 2024
592800d
Add .config file to branch, for some reason did not get merged
rebdiaz Nov 19, 2024
628e463
Added led_array example in the example-code folder
julianbeloiu Nov 20, 2024
f75c39e
Fixed blink_leds example
julianbeloiu Dec 6, 2024
66dc861
Merge pull request #4 from CAPSTONE-24-25-IRON-CODER/julian-dev
julianbeloiu Dec 6, 2024
b40e326
Updated .ironcoder.toml for blink_leds
julianbeloiu Dec 6, 2024
1bcc093
Merge pull request #5 from CAPSTONE-24-25-IRON-CODER/julian-dev
julianbeloiu Dec 6, 2024
63ab31b
Merge pull request #6 from CAPSTONE-24-25-IRON-CODER/julian-dev
julianbeloiu Dec 6, 2024
361ce9c
Update README.md to include new section for prototype
rebdiaz Dec 6, 2024
b9957df
Update README.md
e-morandi Dec 6, 2024
3340162
Update README.md to include work done related to adding new component…
rebdiaz Dec 7, 2024
87ea110
Update README.md
erictobon Dec 7, 2024
1c46bba
Update README.md
josuevicente33 Dec 12, 2024
1c0bec4
AUTO GEN BOARDS: Add new button at the end of add components menu tha…
rebdiaz Jan 14, 2025
943081f
AUTO GEN BOARDS: Start creating toml file generation form, collects u…
rebdiaz Jan 18, 2025
487f10f
AUTO GEN BOARDS: Continue toml file generation form, add user input f…
rebdiaz Jan 18, 2025
07b7d9b
AUTO GEN BOARDS: Fix to-dos
rebdiaz Jan 18, 2025
9a435f3
AUTO GEN BOARDS: Change standard field in form from string input to s…
rebdiaz Jan 19, 2025
a41cd12
AUTO GEN BOARDS: When the form is complete and user presses next, pro…
rebdiaz Jan 19, 2025
03ea840
AUTO GEN BOARDS: Add pick new file button for SVG parsing error on de…
rebdiaz Jan 20, 2025
50ff033
AUTO GEN BOARDS: Add done button on designate pinout window
rebdiaz Jan 20, 2025
24fbfc7
AUTO GEN BOARDS: Close form window when designate pinout window opens
rebdiaz Jan 20, 2025
c092383
AUTO GEN BOARDS: Fix todos
rebdiaz Jan 20, 2025
2932d6b
AUTO GEN BOARDS: Do not call display functions unless respective flag…
rebdiaz Jan 20, 2025
e54ff78
AUTO GEN BOARDS: Generate TOML file from struct and copy SVG file int…
rebdiaz Jan 21, 2025
743c12b
AUTO GEN BOARDS: Update todos
rebdiaz Jan 21, 2025
68578cd
AUTO GEN BOARDS: Add confirmation on success
rebdiaz Jan 23, 2025
f5dabb6
AUTO GEN BOARDS: Ensure that clicking the "Generate New Board" butto…
rebdiaz Jan 26, 2025
9af2934
AUTO GEN BOARDS: Delete "idea" files in my add_board folder since the…
rebdiaz Jan 27, 2025
b4325f2
AUTO GEN BOARDS: Add input validation for TOML information form
rebdiaz Feb 2, 2025
0ac01b5
AUTO GEN BOARDS: Clear required flag messages when generation process…
rebdiaz Feb 2, 2025
3b2f43f
AUTO GEN BOARDS: Add validation that user is not attempting to create…
rebdiaz Feb 2, 2025
bc49d41
AUTO GEN BOARDS: My Cargo.lock was changed automatically by cargo
rebdiaz Feb 3, 2025
3a5828a
AUTO GEN BOARDS: Add functionality that allows user to visually add a…
rebdiaz Feb 4, 2025
7c7a152
AUTO GEN BOARDS: Append pin information to the end of the SVG file, a…
rebdiaz Feb 8, 2025
fc75df6
AUTO GEN BOARDS: Clean up old idea file and add instructions to desig…
rebdiaz Feb 8, 2025
885740d
AUTO GEN BOARDS: Small things cleaned up -> clear saved info about pi…
rebdiaz Feb 10, 2025
ebc4afd
AUTO GEN BOARDS: Add pin slider to change radius of pins
rebdiaz Feb 11, 2025
5287eb1
AUTO GEN BOARDS: Small UI cleanups
rebdiaz Feb 12, 2025
6bfbc36
AUTO GEN BOARDS: Create Unit Tests for saving board info
rebdiaz Feb 13, 2025
c1a68a3
AUTO GEN BOARDS: More cleanup
rebdiaz Feb 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
2,530 changes: 1,676 additions & 854 deletions Cargo.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ rfd = "0.14.1"
fs_extra = "1.3.0"
duct = "0.13.6"
enum-iterator = "2.1.0"
ra_ap_rust-analyzer = "0.0.220"
ra_ap_rust-analyzer = "0.0.237"
ra_ap_ide = "0.0.220"
syn = { version = "2.0.25", features = ["full", "extra-traits", "parsing", "visit"] }
quote = "1.0.29"
Expand Down
Binary file added docs/DesignPlan24-25.pdf
Binary file not shown.
60 changes: 60 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Iron Coder Work Done (Pre-Alpha Build)
- Updated version of ra_ap_rust-analyzer to 0.0.237 to allow code to build
- Fixed flagging error when building project by switching to nightly channel
- Fixed red box bug when dragging elements in the hardware editor
- Cloned and built project to a working state
- Setup GitHub organization for project work
- Architecture for example code built, can load examples from menu
- Architecture for automatically generating board planned out, including where the new menu button needs to be added in source code
- Create structs to store persistent state for fields needed to automatically generate boards
- Learning Rust, looking through EGUI documentation to help understand the existing code base
- Research examples of possible IronCoder structure (Wokwi, Fritzing, Arduino)
- Design ideation/wireframing for simulator and debugging modes
- Iron Coder Forum work done is listed in the [forum repository](https://github.com/CAPSTONE-24-25-IRON-CODER/iron-coder-forum)
# Iron Coder Work Done (Prototype)
- Gained a better understanding of the process for creating new components by adding various components through creating TOML files and SVG files
- Added Arduino Uno as a main board
- Added Adafruit's 8x8 NeoPixel as a peripheral board
- Added an 1000 Ω Resistor
- Added a Yellow LED
- Added a push button
- Added a piezo buzzer
- Support the ability to run Rust code on the Arduino Uno
- Example code feature finished
- Added Rust Examples to example folder to be loaded within Iron Coder
- Alarm Clock Example (Arduino Uno)
- LCD Screen Example
- Blink LED Example
- LED Array Example
- Updated board menu
- Changed name of board menu to component menu
- Updated headers of each component to display board type (Main, Peripheral, Discrete)
- Sorted components in the menu by board type and name
- Updated Board struct to support discrete components as a type
- Created new BoardType enum
- Change is_main boolean field in Board struct to a BoardType enum
- Implemented Ord trait for Board (allows us to sort by board type and name)
- Change internal storage of components by adding a discrete components vector. When a component is added to the hardware editor, it is either added to the peripheral device vector, discrete components vector, or the main board variable.
- Update .ironcoder TOML files for Example Code hardware editor state to support new discrete component type and vector
- Create initial module for serial monitor debugger
- Created data struct to contain serial data
- Used egui to start testing with plotter
- Connected example program to serial monitor console on VSCode
- Researched how to connect code variables to serial
- Can run Rust programs on Renode supported boards
- Created an example program to utilize USART on STM32F4 Discovery board
- Made a Renode script to load board and program .elf file
- Researched information on how to support new boards such as the AdaFruit Feather RP2040
- Planned a path to support the AdaFruit Feather RP2040 by production

# Iron Coder Architecture
Iron Coder is split into 3 main crates, one that handels the application itself, one for the boards, and the last for projects. The application uses both the boards and projects to
seemlessly create both the hardware and code editors. Within the project source code the project serves as a container for the path to where the project is stored, the boards that
are being used, functions to load/save projects, and anything else the application would need from it during run time. The boards serve a similar purpose in storing the functions and
parameters that are needed to describe the boards and work within the hardware editor.
# Known bugs
- Window stays open after loading example, need research into egui to figure out how to close after clicking example
- Sometimes drawn wire connections will appear on top of the add board menu
- More than one discrete component cannot be added to the hardware editor
- Rx pin in STM32 board example does not work properly so we can only output data

2 changes: 2 additions & 0 deletions docs/contributions.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Iron Coder 24-25 Contributions
Link to Google Sheets: https://docs.google.com/spreadsheets/d/1Ecf3-wbx-Xyb3s_qLTxuS0VVJ2r2VXaeC92R6MFszus/edit?usp=sharing
1 change: 1 addition & 0 deletions docs/personal_time_sheet_link
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://docs.google.com/spreadsheets/d/14G91KWOlx-rUf3DI5bFuboScmj423MJwGuxOgjJvMsg/edit?usp=sharing
9 changes: 9 additions & 0 deletions example-code/alarm_clock/.cargo/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[build]
target = "avr-specs/avr-atmega328p.json"

#For uploading code to board
[target.'cfg(target_arch = "avr")']
runner = "ravedude uno -cb 57600"

[unstable]
build-std = ["core"]
Loading