Overhaul source layout to facilitate MUXes being added

This commit is contained in:
KemoNine 2020-09-09 19:36:39 -04:00
parent 324e4d969e
commit b0aaece493
79 changed files with 100 additions and 171 deletions

5
.gitignore vendored
View file

@ -1,5 +0,0 @@
build/
serial_debugger*.bak
gui_backup/
serial_debugger.ino.beta
serial_debugger.ino.orig

View file

@ -1,6 +0,0 @@
{
"board": "adafruit:nrf52:feather52840",
"configuration": "softdevice=s140v6,debug=l0",
"sketch": "serial_debugger.ino",
"port": "COM4"
}

View file

@ -6,6 +6,7 @@
"C:\\Users\\mcros\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\**", "C:\\Users\\mcros\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\**",
"C:\\Users\\mcros\\AppData\\Local\\Arduino15\\packages\\adafruit\\tools\\**", "C:\\Users\\mcros\\AppData\\Local\\Arduino15\\packages\\adafruit\\tools\\**",
"C:\\Users\\mcros\\AppData\\Local\\Arduino15\\packages\\adafruit\\hardware\\nrf52\\0.21.0\\**", "C:\\Users\\mcros\\AppData\\Local\\Arduino15\\packages\\adafruit\\hardware\\nrf52\\0.21.0\\**",
"C:\\Users\\mcros\\AppData\\Local\\Arduino15\\packages\\adafruit\\hardware\\samd\\1.6.1\\**",
"C:\\Program Files (x86)\\Arduino\\libraries\\**", "C:\\Program Files (x86)\\Arduino\\libraries\\**",
"C:\\Program Files (x86)\\Arduino\\hardware\\**", "C:\\Program Files (x86)\\Arduino\\hardware\\**",
"C:\\Users\\mcros\\OneDrive\\Documents\\Arduino\\libraries\\**", "C:\\Users\\mcros\\OneDrive\\Documents\\Arduino\\libraries\\**",

15
.vscode/settings.json vendored
View file

@ -1,15 +0,0 @@
{
"files.associations": {
"xtemplate.h": "c",
"guislice_drv.h": "c",
"xradial.h": "c",
"*.tpp": "cpp",
"array": "cpp",
"deque": "cpp",
"string": "cpp",
"unordered_map": "cpp",
"vector": "cpp",
"string_view": "cpp",
"initializer_list": "cpp"
}
}

View file

@ -1,54 +1,8 @@
# Serial Debugger # Serial Debugger
A debug console for serial TTL. This can be used to work with serial TTL directly or operate as a pass through for a computer. This project is a set of hardware builds that allow working with serial devices in an 'easy' way. The goal is to build a configurator that works with a series of modules (Muxers) to provide serial access via USB.
## Hardware / BoM Please see the ```hardware``` directory for a break down of how to build the various components of this project.
| Item | Quantity | Unit Cost |
| ---- | -------- | --------- |
| [Keyboard FeatherWing (Keyboard + LCD)](https://www.tindie.com/products/arturo182/keyboard-featherwing-qwerty-keyboard-26-lcd/) | 1 | $55.00 |
| [Feather nRF52840 Express](https://www.adafruit.com/product/4062) | 1 | $24.95 |
| [Feather M0 Basic Proto](https://www.adafruit.com/product/2772) | 1 | $19.95 |
| [FeatherWing Proto](https://www.adafruit.com/product/2884) | 1 | $4.95 |
| [2x20 pin IDC Box Header](https://www.adafruit.com/product/1993) | 1 | $0.75 |
| [GPIO Ribbon Cable for Raspberry Pi](https://www.adafruit.com/product/1988) | 1 | $2.95 |
| [Header Kit for Feather](https://www.adafruit.com/product/2886) | 1 | $0.96 |
| [I2C Non-Volatile FRAM Breakout](https://www.adafruit.com/product/1895) | 2 | $9.95 |
## Hardware Docs
- [https://www.solder.party/docs/keyboard-featherwing/downloads/](https://www.solder.party/docs/keyboard-featherwing/downloads/)
- [https://github.com/arturo182/bbq10kbd_i2c_sw](https://github.com/arturo182/bbq10kbd_i2c_sw)
- [https://github.com/lvgl/lv_arduino](https://github.com/lvgl/lv_arduino)
## Implementation (Incomplete)
- Main board has FRAM break out for configuration persistence
- Converter board has FRAM break out for configuration persistence
- Setup 2nd feather + proto board as a 40 pin socket
- 2nd feather acts as a mux between different rpi uarts (0 and 1 and 5 in particular)
- 2nd feather talks via qwiic connector over i2c to main board
- User button on feather to flip between usb and local serial (aka : can be used as a serial adapter)
- Note this on the UI
- Fall back to internal uart pins if no expander is present
- Note this on the UI
- Adapter board falls back to saved config *and* goes into stand alone via usb port *if* it's not seeing the main board
- Main board startup shows connection setup + waits for OK prompt via main hat switch
- Main board has a status bar @ bottom with battery level, selected uart, selected speed
- Main board does simple display of serial in/out via lcd
- Main board has a button for accessing symbols via pop-up list that aren't on keyboard
- Main board has a button for accessing a uart selection pop-up that maps to rpi uarts
- Main board has a button for accessing password selection pop-up to help with password entry over serial
- Main board has a button for accessing uart speed pop-up to help with configuring line speeds
## Implementation (Complete)
- Battery level on feather neopixel (green = >80% ; yellow >=40% ; orange >= 25% ; red < 25%)
- User LED (red) always on when feather is running
## Building / Uploading
The ```make.ps1```, ```build.ps1``` and ```upload.ps1``` scripts can be used to build/upload this project. These scripts call the ```arduino-cli``` commands programatically.
## Licensing ## Licensing

12
hardware/README.md Normal file
View file

@ -0,0 +1,12 @@
# Hardware
This folder contains all of the different hardware (Arduino) builds that are part of this project.
Please see the below table for what hardware is currently available and its status.
## Hardware Status
| Device | Folder | Status |
| ------ | ------ | ------ |
| Main Controller | ```_controller``` | In Progress / Alpha |
| Raspberry Pi Muxer | ```mux_rpi``` | Early development / Pre Alpha |

5
hardware/_controller/.gitignore vendored Normal file
View file

@ -0,0 +1,5 @@
build/
_controller*.bak
gui_backup/
_controller.ino.beta
_controller.ino.orig

View file

@ -0,0 +1,38 @@
# Controller
A debug console and configuration shield for serial TTL muxers. See the ```muxers``` folder for what connects to this shield.
## Hardware / BoM
| Item | Quantity | Unit Cost |
| ---- | -------- | --------- |
| [Keyboard FeatherWing (Keyboard + LCD)](https://www.tindie.com/products/arturo182/keyboard-featherwing-qwerty-keyboard-26-lcd/) | 1 | $55.00 |
| [Feather nRF52840 Express](https://www.adafruit.com/product/4062) | 1 | $24.95 |
## Hardware Docs
- [https://www.solder.party/docs/keyboard-featherwing/downloads/](https://www.solder.party/docs/keyboard-featherwing/downloads/)
- [https://github.com/arturo182/bbq10kbd_i2c_sw](https://github.com/arturo182/bbq10kbd_i2c_sw)
- [https://github.com/lvgl/lv_arduino](https://github.com/lvgl/lv_arduino)
## Implementation (Incomplete)
- Startup shows connection setup + waits for OK prompt via main hat switch
- Status bar @ top with selected uart, selected speed
- Simple display of serial in/out via lcd
- Button for accessing symbols via pop-up list that aren't on keyboard
- Bccessing a uart selection pop-up that maps to rpi uarts
- Button for accessing password selection pop-up to help with password entry over serial
- Button for accessing uart speed pop-up to help with configuring line speeds
- Way to display pinouts stored on micro sd card
- Configuration read from muxes (if attached)
## Implementation (Complete)
- Battery level on feather neopixel (green = >80% ; yellow >=40% ; orange >= 25% ; red < 25%)
- User LED (red) always on when feather is running
- Battery level shown as progress bar in the upper right corner of the screen
## Building / Uploading
The ```make.ps1```, ```build.ps1``` and ```upload.ps1``` scripts can be used to build/upload this project. These scripts call the ```arduino-cli``` commands programatically.

View file

@ -1,5 +1,5 @@
//<App !Start!> //<App !Start!>
// FILE: [serial_debugger.ino] // FILE: [_controller.ino]
// Created by GUIslice Builder version: [0.15.b004] // Created by GUIslice Builder version: [0.15.b004]
// //
// GUIslice Builder Generated File // GUIslice Builder Generated File
@ -24,7 +24,7 @@
#include <CircularBuffer.h> #include <CircularBuffer.h>
// Various local includes // Various local includes
#include "serial_debugger_GSLC.h" #include "_controller_GSLC.h"
//<Includes !End!> //<Includes !End!>

View file

@ -1,5 +1,5 @@
//<File !Start!> //<File !Start!>
// FILE: [serial_debugger_GSLC.h] // FILE: [_controller_GSLC.h]
// Created by GUIslice Builder version: [0.15.b004] // Created by GUIslice Builder version: [0.15.b004]
// //
// GUIslice Builder Generated GUI Framework File // GUIslice Builder Generated GUI Framework File

View file

@ -1 +1 @@
arduino-cli compile --log-level=warn --fqbn adafruit:nrf52:feather52840 serial_debugger.ino arduino-cli compile --log-level=warn --fqbn adafruit:nrf52:feather52840 _controller.ino

View file

@ -0,0 +1,38 @@
# MUX - Raspberry Pi Edition
This folder contains the necessary sources and information to build a MUX for Raspberry Pis. This mux can be used independently or with the controller.
Note : The mux needs to be configured via sources if not used with the controller.
## Important Considerations
- The Raspberry Pi 4 has 5 available UARTS and we only document how to wire for UART0/1 and UART5
- The Raspberry Pi's prior to the 4 had only UART0 exposed. Please use ONLY the UART0 configuration and setup for these devices.
## Hardware / BoM
| Item | Quantity | Unit Cost |
| ---- | -------- | --------- |
| [Feather M0 Basic Proto](https://www.adafruit.com/product/2772) | 1 | $19.95 |
| [FeatherWing Proto](https://www.adafruit.com/product/2884) | 1 | $4.95 |
| [2x20 pin IDC Box Header](https://www.adafruit.com/product/1993) | 1 | $0.75 |
| [GPIO Ribbon Cable for Raspberry Pi](https://www.adafruit.com/product/1988) | 1 | $2.95 |
| [Header Kit for Feather](https://www.adafruit.com/product/2886) | 1 | $0.96 |
| [I2C Non-Volatile FRAM Breakout](https://www.adafruit.com/product/1895) | 2 | $9.95 |
## Implementation (Incomplete)
- FRAM break out for configuration persistence
- Fall back to saved config *and* goes into stand alone via usb port *if* it's not seeing the main board
- Receive configuration over i2c
- Save configuration to FRAM
- FRAM config reading
- Ability to have USB *and* i2c for the UART output
- Use ring buffer @ 16k for i2c
- Send direct to USB and then add to ring buffer (always send over usb even if not used)
## Implementation (Complete)
## Building / Uploading
The ```make.ps1```, ```build.ps1``` and ```upload.ps1``` scripts can be used to build/upload this project. These scripts call the ```arduino-cli``` commands programatically.

View file

@ -1,93 +0,0 @@
# Notes
A dumping ground of notes and ideas
## cpp_settings.json
```
{
"configurations": [
{
"name": "Linux",
"includePath": [
"/home/USER/.arduino15/packages/arduino/tools/**",
"/home/USER/.arduino15/packages/arduino/hardware/samd/1.8.7/**",
"/usr/local/share/arduino/libraries/**",
"/usr/local/share/arduino/hardware/**",
"/home/USER/Arduino/libraries/**",
"${workspaceFolder}/**"
],
"forcedInclude": [
"/home/USER/.arduino15/packages/arduino/hardware/samd/1.8.7/cores/arduino/Arduino.h"
],
"intelliSenseMode": "clang-x64",
"compilerPath": "/usr/bin/clang",
"cStandard": "c11",
"cppStandard": "gnu++14"
}
],
"version": 4
}
```
## clang formatter
```
BasedOnStyle: LLVM
Language: Cpp
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: true
AlignConsecutiveDeclarations: true
AlignConsecutiveMacros: true
AlignEscapedNewlines: Left
# AlignOperands: AlignAfterOperator
AlignOperands: true
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowAllConstructorInitializersOnNextLine: false
AllowShortBlocksOnASingleLine: true
AllowShortCaseLabelsOnASingleLine: true
AllowShortFunctionsOnASingleLine: true
AllowShortIfStatementsOnASingleLine: true
AllowShortLoopsOnASingleLine: false
BreakBeforeBraces: Attach
BreakStringLiterals: true
IncludeBlocks: Regroup
#IndentCaseBlocks: true
IndentCaseLabels: true
KeepEmptyLinesAtTheStartOfBlocks: false
PointerAlignment: Right
ReflowComments: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceBeforeSquareBrackets: false
UseTab: ForContinuationAndIndentation
IndentWidth: 4
TabWidth: 4
BinPackArguments: false
BinPackParameters: false
```
## Makefile
```
compile=arduino-cli compile --log-level=warn -v
upload=arduino-cli upload
serial := $(shell arduino-cli board list | grep mkrwifi1010 | awk '{print $$1}')
all:
cd ../ && $(compile) --fqbn arduino:samd:mkrwifi1010 PROJECT
upload:
cd ../ && $(upload) --fqbn arduino:samd:mkrwifi1010 -p ${mkr1010_serial} PROJECT
monitor:
screen ${mkr1010} 9600
```