Hub communication (#12)

* Add persistent accessibility pane

This will facilitate more extensive usage of the menu than the
context menu.

* Fixed missing files

* Add missing semicolon

* Implement HubController

* Parse messages on arrival

Rather than queuing inbound messages, the HubController now saves
pending promises/rejects for each pending request. Each inbound packet
is checked at the time of arrival, and if the ID matches a pending
response, the corresponding promise is called.

This fixes a problem where the longer the time between reads, the more
garbage responses queue up that are guaranteed to get thrown away the
next time the next response was gathered.

* Add clarification comment to send

* Add logger, output

* Use stat+stream instead of reading entire file on upload

* Split MindReader view into accessability and hub sub-views

* Add missing comma from conflict resolution

* Fix issues, split commands into sub-lists

* Add rebuild instructions

* More accurate

* Add tools for native modules instructions to README.md

* Move commands to correct spot

* Remove automatic connection

I did not heed the warning where 'only the path is guaranteed' when
listing open serial ports and made the assumption that the manufacturer
would be known (hint: it wasn't).

* Use device specific language for output title
This commit is contained in:
Jake Grossman
2021-12-01 21:40:01 -06:00
committed by GitHub
parent 913be402b1
commit b3984daad5
11 changed files with 1982 additions and 195 deletions

View File

@@ -1,6 +1,6 @@
<!-- header with logo -->
<p align="center">
<img alt="Mind Reader Logo" src="./media/logo.png"></img>
<img alt="Mind Reader Logo" src="media/logo.png"></img>
</p>
<h1>Mind_Reader</h1>
@@ -27,21 +27,77 @@ Python programming with LEGO Mindstorms. Our goal is to:
- [JAWS](https://www.freedomscientific.com/products/software/jaws/)
- [Apple VoiceOver](https://support.apple.com/guide/voiceover-guide/welcome/web/)
<!-- TODO: still need this -->
- Play audio alerts for syntax and runtime errors.
- Present a summary of the scope for an individual line of code.
- Save and load programs directly onto the LEGO Hub from within Visual Studio Code
# For Developers
## Dependencies
<!-- TODO: version information -->
<!-- TODO: how to support native-usb functionality? -->
- [Git](https://git-scm.com/)
- [Node.js](https://nodejs.org/en/)
**NOTE**: While installing Node.js, there will be a section titled "Tools for Native Modules". Make sure that
'Automatically install the necessary tools' is checked:
<p align="center">
<img width="50%" height="50%" alt="tools for native modules page with tool installation checked" src="media/nodejs_setup.png"></img>
</p>
If the compiled serial port version is incompatible, you may see no options presented in the Mind_Reader actions panel:
<p align="center">
<img width="50%" height="50%" alt="mind reader actions panel with no items:" src="media/missing_actions.png"></img>
</p>
In this case, you will also need to rebuild the serial port component with `electron-rebuild`. This is a one-time setup
for each version of Visual Studio Code. You may need to repeat this process if you update your version of Visual Studio
Code.
## Installing `electron-rebuild`
**Use Git Bash on Windows, and the terminal on MacOS/Linux. These steps will refer to this as 'the terminal'**
### 1 Install the `electron-rebuild` tool
In the terminal install electron rebuild with `npm` that is included with [Node.js](https://nodejs.org/en/):
```console
$ npm install -g electron-rebuild
```
### 2 Finding your electron version
On MacOS, go to Code > About Visual Studio Code.
On Windows and Linux, go to Help > About.
The electron version should be listed, e.g.: `Electron: 13.5.2`
<p align="center">
<img width="35%" height="35%" alt="vscode information" src="media/vscode_info.png"></img>
</p>
### 3 Finding the Mind_Reader extension directory
On MacOS and Linux this is `~/.vscode/extensions`.
On Windows this is `C:\<YOUR USER>\.vscode\extensions\`. However, in Git Bash, it will appear like on MacOS and Linux
e.g.: `~/.vscode/extensions`.
---
Find the Mind_Reader extension folder, this should look like `xxx.mind-reader-x.x.x`.
Navigate to the found folder in the terminal.
```console
$ cd ~/.vscode/extensions/<mind_reader_folder>
```
### 4 Running `electron-rebuild`
Then, run `electron-rebuild` with `ELECTRON_VERSION` replaced with the electron version found in step 2:
```console
$ electron-rebuild --version=ELECTRON_VERSION
```
# For Developers
## Development Quick Start
Use the following to set up the extension for development.