Giter VIP home page Giter VIP logo

vscode-arduino's Issues

Boards Manager fundamental utilities

There are two kinds of boards in Arduino IDE.

  • Official boards
  • 3rd party boards

Given that we haven't decided the config file schema, in this sprint, we only support the official Arduino boards.

The board manager fundamental utilities should include:

  • Parse the board json file from http://downloads.arduino.cc/packages/package_index.json
  • Verify the json file from the signature http://downloads.arduino.cc/packages/package_index.json.sig
  • Generate the local cache for each toolchain
  • Compare with downloaded toolchain. (Installed? New version?)
  • Download the toolchain of specified board and version.
  • Unzip it and put it to the platform folder of Arduino IDE.

Serial Monitoring

Provide a integrated window in VSCode to support serial monitoring for sending and receiving the serial messages. The expected behavior should be the same as the serial monitoring tool in Arduino IDE. Due to the UI limitation in VSCode, we could use a F1 task to send messages. Also, the COM port and band rate should be configurable.

  • Serial listening from the integrated window
  • F1 task: send a message
  • Configurable COM port and band rate

The library for serial stuffs need to be built in different platforms.

  • Windows
  • macOS

In this sprint, we don't support Linux distros.

[ArduinoDebug]Integrate gdb into vscode.

Features:

  1. Start/Stop Debug, (F5, shift+F5)
  2. Insert/Remove/Disable BreakPoint(BP).
  3. Hit on BP, with locals, threads, watch support
  4. Step/Step in/Step out/Run to cursor
  5. Termination of process detect
  6. Configuration for debug feature.

Boards Manager in Tree Explorer

Boards manager UI integration in VSCode Insiders - Tree Explorer

The list should come from the #19 .
Context Menu (showQuickPick): Still need discussion.

UI Integration - Sprint 1

This is the checklist for all the UI tasks in Spring 1

  • COM port for serial monitoring - Status bar
  • Band rate for serial monitoring -Status bar
  • Serial monitoring - Integrated output window
  • Arduino output - Integrated output window
  • Built-in samples - Tree explorer
  • [ ] F5 integration with build and deploy

Example list - Built-in example

The users should have installed Arduino IDE before they try this extension. The extension will provide a tree view on the left side in VS Code Insiders. There are three types of examples. The list below shows the file locations on Windows.

  • Build-in examples
    • File location: {Installation Path}\Arduino\examples
  • Examples for any board
    • File location for default libs: {Installation Path}\libraries\{lib name}\examples
    • File location for imported libs: {User documents path}\Arduino\libraries\{lib name}\examples
  • Example for specified board
    • File location: {UserAppdata}\Local\Arduino15\packages\arduino\hardware\{hw name}\{version}\libraries\{lib name}\examples
    • {UserAppdata}\Local\Arduino15\packages\arduino\hardware\samd\1.6.9\libraries\USBHost\examples

This sprint, we only cover the built-in examples.

Read sketch configuration from Arduino IDE

At the end of the day, we will build the VS Code extension without installing Arudino IDE. We should think about the project file structure in that extension.

But at current stage, we believe the right approach is to read the config file from Arduino IDE. To leverage as much config as we can. The limitation in this approach is that users have to config everything correctly in Arduino IDE first before they turn to VS Code to do code editing.

The expected behavior is

  1. Configure everything correctly in Arduino IDE, including board type, COM port and so on.
  2. Go to VS Code to open the *.ino file and start coding.
  3. Use VS Code to verify and upload.

Arduino integration - Upload

The users should have installed Arduino IDE before they try this extension. The extension will provide a F1 task - upload. Basically it will run a local excitable command like below.

  • Windows: arduino.exe --upload [sketch path] -v --board [board name] --port [port]

We don't support Linux distros and macOS in this sprint.

Arduino integration - Verify/Compile

The users should have installed Arduino IDE before they try this extension. The extension will provide a F1 task - Verify. Basically it will run a local excitable command like below.

  • Windows: arduino.exe --verify [sketch path] -v

We don't support Linux distros and macOS in this sprint.

Boards Manager in HTML preview

Use the previewHTML to show the Boards manager. The UI in previewHTML should be almost the same as what we see in Arduino IDE.

There should be a new task resisted in VSCode command palette - Boards Manager. When start the Boards Manager, there will be a Board Manager window showing in previewHTML side by side with the editor area (vscode.ViewColumn.Two). There are more things in this previewHTML, from top to bottom.

  • [P2] Drop-down Filter and search form
  • [P1] Platform package name. format: {package name} by {Company Name} [version] [INSTALLED]
  • [P1] Boards included in this package
  • [P2] Online help link
  • [P2] More info link
  • [P1] Version selector
  • [P1] Install/Update/Remove

The info shows in this previewHTML should come from #19

Need UX input.

Arduino integration - Output UI integration

The users should have installed Arduino IDE before they try this extension. The extension will provide an integrated output window - Arduino. The behavior of this output window should be the same as the output in Arduino IDE, i.e., all the output from Arduino executable command.

  • Windows
  • macOS

Press F5 to build .ino file and deploy to device

Currently pressing F5 while an INO file is opened triggers nothing. The expected behavior is:

  1. User press F5
  2. Start the build process and show the output window for user to see the build result
  3. After build succeeded, upload the binaries to current device

IntelliSense - code completions for *.ino codes

Provide context-aware code completion for *.ino files. The expected behavior is showing the pop-up list when the user type a letter in the editor. The pop-up list should automatically lists all the available member functions and all the available member attributes.

Syntax highlighting for *.ino files

The expected behavior of *.ino Syntax highlighting is,

  • Syntax highlighting support for all C/C++keywords
  • Syntax highlighting support for Arduino keywords (e.g. Serial...)

We don't cover *.pde sketch file in this sprint.
We don't cover in-line assembly code in this sprint either.

Language Mode - Associate *.ino with Arduino

We'd like to have a language identifier for *.ino files in the VS Code. This would be great if someday the VS Code can automatically suggest the user to install our Arduino extension when he/she open a *.ino file in VS Code.

The mock-up is showing below.
image

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.