Skip to content

Iron Coder Production Release 2025#33

Open
rebdiaz wants to merge 194 commits intoshulltronics:mainfrom
CAPSTONE-24-25-IRON-CODER:main-dev
Open

Iron Coder Production Release 2025#33
rebdiaz wants to merge 194 commits intoshulltronics:mainfrom
CAPSTONE-24-25-IRON-CODER:main-dev

Conversation

@rebdiaz
Copy link

@rebdiaz rebdiaz commented Mar 12, 2025

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

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 Work Done (Alpha Build)

  • Automate Generation of Boards Vertical Slice
    • Added a generate new boards button to the end of the add components menu
    • Created a TOML information form that allows the user to input information about the new board
      • The generate new boards button navigates to this window
    • Added a file dialog that prompts the user for an SVG file when the user completes the TOML information form
    • Created a new window that displays the selected SVG image or an error message if there was SVG parsing failures
    • Implemented basic error handling for SVG parsing failures
    • Added functionality that creates a new board directory, TOML file, and SVG file based on user input
    • Implemented basic error handling for file operation errors
    • Made a confirmation window pop-up when the user finishes the board generation process
    • Added two structs: BoardTomlInfo and PinoutTomlInfo that are used to save board state from user input
  • Wire clipping bug research
    • Researched how EGUI decides the order in which windows and elements are drawn to the screen
  • Terminal Changes
    • Terminal now editable
    • Terminal accepts commands based on operating system
    • Shell output from commands entered show up in Iron Coder terminal
    • Error handling for invalid commands
    • Basic functions of terminal applications
  • Simulator
    • Added simulator button and window for future use of simulation
    • Support for basic emulation of code through qemu

Iron Coder Work Done (Beta Build)

  • Automate Generation of Boards
    • Add user input validation to the TOML information form
      • Make all fields required, user can’t proceed without providing all fields
      • Ensure user is not attempting to duplicate an existing board
    • Add designate pinout functionality
      • Left-clicking image adds a blue pin circle to the UI with the pin name
      • Right-clicking an existing pin deletes it
      • Double-clicking a pin renames it with the name in the pin name box
      • User can change the size of all pins with the pin radius slider
    • Information about the user’s pinouts are saved as EGUI Rects and a vector of String pin names
    • When the user selects done, the pinout information is translated into SVG circle elements, and these are appended to the end of the SVG file
    • When the user adds the generated board to the editor, they can access their created pins and make connections
    • Improve error messages for user when selecting an SVG file
      • Display the specific error that is thrown
      • Add a new error kind (ImageNotPNG) that specifies that the SVG was not derived from a PNG
        SVG parser only support PNG image types
      • Previously, a confusing NoImage error was thrown when the image type was not a PNG
      • Add supporting error messages for the user when the ImageNotPNG error is thrown
        • “SVG Image must be derived from a PNG”
    • Add Unit Tests for generating TOML File and SVG File
  • Renode Simulator
    • Added better integration of Renode within Iron Coder with the ability to launch a predetermined script for testing
    • Added the option to open and close Renode
    • Added separate threads to read Renode output
    • Added another thread for state saving every 5 minutes
  • Serial Debugger
    • USART functionality
    • Input validation
    • Device detection on user system
    • Serial Debugger Integrated into Iron Coder
    • Created GUI for serial monitor within IronCoder, with the ability to select COM ports, baud rate, and other key variables that determine how data is transmitted over USART.

Iron Coder Work Done (Release Candidate)

  • Automate Generation of Boards
    • Users no longer need to restart the application to use their new component
    • Board generation windows are now displayed separately from the hardware editor to improve aesthetics and performance
    • Users can now use PNG image files to create their boards, SVG files to create their boards, or select a default board image option
      • Sub-system created to convert PNG file contents to SVG
    • For both PNG and SVG file inputs, systems were added to automatically resize the image to be compatible with the Iron Coder UI
    • An improved interface for the Designate Pins window allows users to provide pin names for the TOML form and the board image simultaneously
    • Bug fixes
      • Fix bug where program crashed when attempt to read SVG files that had units included for the height and width fields
      • Removed unwrapped statements from Automate Generation of Boards subsystem and added a failure error screen for file I/O errors
      • Stopped irrelevant fields, such as CPU, from preventing creation of peripheral and discrete devices
      • Out of caution, store the SVG contents as a string after opening the provided file rather than storing the file path and continuously opening the file located on the user’s local filesystem
  • Simulator
    • Iron Coder will not crash if the user doesn't have Renode, rather they are prompted to install it
    • Added support for simultion use in terminal, can run code for STM32f4 discovery board.
    • Simulation output and commands accepted in simulation tab.
    • Script generation is made easier for the user to they can focus on testing
      • Users should be able to just load in a generated script that allows them to select board, elf file, and logging settings depending on what they want to see.
  • Terminal
    • Fixed issues with parsing colored text in terminal when running certain powershell extensions.
    • Added multiple tabs to terminal pane for switching between output, terminal, and simulator.
    • Added error handling if shell is not able to be opened on launch.
  • Serial monitor
    • Added functionality for the plotter based on parsing raw data
    • Added input validation of user program code transmissions to be UTF-8
    • Created color modification window for users to select a particular color for the plot data
    • Created new pop-up window if a device is not selected

Iron Coder Work Done (Production Release)

  • Installation packages for Windows and macOS
    • Quickstart documentation posted on Iron Coder Forum
  • Documentation of all new features
    • Making your First Project
    • Example Code
    • Automatic Generation of Boards
    • Support for Flashing Arduino Boards
    • Simulator
    • Serial Monitor Debugger
  • Automatic Generation Boards Feature Testing
    • Tested with non-team members
  • Terminal
    • Add support for macOS
  • Serial monitor
    • Integrated serial monitor updates to the IronCoder output tab

rebdiaz and others added 30 commits October 20, 2024 19:25
…to generating boards in addition to learning Rust/EGUI and fixing small bugs / build errors
Added hyperlink for forum repository
Updated Dependency to make sure it compiles
Changed the channel for the tool chain to nightly and added a create that was missing.
…build and load onto Arduino Uno through Iron Coder dev window
rebdiaz and others added 29 commits April 11, 2025 14:36
Josue Simulator Parts and Scripts
Added the automatic compilation of code and merged the terminal and other simulator options.
Removal of code no longer needed. This set of code was for Renode and was placed under the UI elements of IronCoder.
Updated the automatic script generator as the file path was being input incorrectly
Added Folders so files can be properly stored
Updated the code for the traffic light example provided to users.
@rebdiaz rebdiaz changed the title Iron Coder Beta Build 2025 Iron Coder Production Release 2025 Apr 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants