Skip to main content

RC-3.1 (OS v0.9.8.1, ESP v.0.9.8.0)

We have a new release candidate, with a few fixes in the operating system but some big driver updates! This release resolves several issues with applying OTA updates via Meadow Cloud, and includes improvements to the Meadow.Foundation peripheral library.

Updating to RC-3.1

This is a full stack release requiring an OS update, new nuget packages, a new Meadow CLI and new Visual Studio extensions.

Updating Meadow.CLI

Start by making sure you have the latest version of the CLI (0.98.x) by running:

dotnet tool update Wildernesslabs.Meadow.CLI --global

Updating Meadow.OS

Download the latest os:

meadow download os

And update by putting your Meadow device in boot loader mode and running:

meadow flash os

Meadow Tooling

  • .NET Dynamic Method Fix - A fix in Mono should now enable execution of .NET code generated at run-time
  • Meadow CLI - This release should now work on MacOS Apple processors (M1/M2) as well as Intel processors
  • Visual Studio Code - Output is now color coded between IDE (white) and Meadow (blue)
  • Visual Studio for Windows - Project templates have been updated
  • Visual Studio for MacOS - Project templates have been updated

Meadow.Core

  • MeadowOS.Start() modified to accept an IApp parameter to allow platforms to do App creation manually
  • Added WSL2 Platform to Meadow.Linux
  • Platform configuration now supports reserving pins to prevent Core from initializing them and preventing applications from accessing them
  • Bug fixes and improvements to OtA Updating
  • Bug fixes and improvements to the full Meadow.Linux stack
  • Added ParticleDensity to Meadow.Units

Meadow.Foundation

Meadow.Foundation updates for RC3-1 include new drivers, improved APIs and improved performance.

  • SPI drivers auto set bus speed and mode - every SPI driver now automatically sets the correct SPI and mode when writing to the bus allowing devices with different bus requirements to work in the same project
  • TftSpi drawing performance - improvements of over 50%
  • Bus communications APIS - under the hood we cleaned up the API names and abstractions while adding support for dynamic SPI bus settings
  • New Audio Library - added MicroAudio, a light weight music and sound effects API that works with piezo speakers
  • New MCP960x thermocouple driver
  • New LIS2MDL magnetometer driver
  • New LSN303AGR magnetometer driver
  • New NEXT particle sensor driver
  • New PMSA003I particle sensor driver
  • New SH1107 OLED display driver
  • New 14 and 16 segment display drivers
  • New ANO Navigation Encoder driver

We've also updated all our LED drivers to be more thread safe and prevent memory leaks on long running application, and because of this we made a few API adjustments:

  • LED method Stop() has been renamed to StopAnimation() so its self-explanatory to stop any blinking/pulsing animations running on any LED
  • For RGB LED drivers (RgbLed and RgbPwmLed) - SetColor() is independent of any running animations, so you can change the color of the LED without having to call StartBlink() or StartPulse(). If you want a steady color, you need to call StopAnimation() first
  • For PWM LED drivers (PwmLed, RgbPwmLed and PwmLedBarGraph) - StartBlink() and StartPulse() can now be called multiple times and it will no longer run multiple animations at once, it will stop whatever animation is doing before switching animations
  • For All LED drivers - StopAnimation(), StartBlink() and StartPulse() are now awaitable Tasks to better manage threading for these peripherals
  • For LED bar graphs (LedBarGraph and PwmLedBarGraph) - We removed the setter for the Percentage property to set the percentage on the bar graph, use awaitable Task SetPercentage(float value) instead

You can see the complete list of additions and fixes here.

Meadow Samples

As usual, all our samples repos and API docs have been updated to latest API changes:

RC-3 (v0.9.6.3)

Our next release candidate is here! This release improves system and app reliability, adds Meadow Cloud devices provisioning, and fixes several issues with Over-The-Air (OTA) updates for Meadow.OS on the way to 1.0.

RC3 includes:

  • Async I/O and Threadpool Stability Improvements - We landed a critical fix regarding thread scheduling during the App runtime. Very frequently, the app would hang, usually when attempting asynchronous I/O over multiple threads. The threadpool has also been bound to a small number of threads (four).
  • Meadow Cloud Device Authentication - We have added device provisioning and secure authentication for the Over-The-Air (OTA) update service.
  • File Transfer Progress Bars in Mac and Windows IDEs - We now have a slighter nicer UX during file transfers, which includes progress bars for each file transfer. There is now also a separation between messages generated on the Host side and the Meadow device side. As such they now appear in separate output windows. So the respective outputs should be a little cleaner too.
  • Ethernet Stability Improvements - A critical fix in ethernet setup has dramatically improved the stability of Ethernet connections.
  • HCOM Protocol Version Change - The Meadow HCOM communication protocol version has been bumped from 6 to 7. This improves communication between Meadow and your development environment, and it means that you'll need to update Meadow OS, Meadow CLI and the Visual Studio extension(s) at the same time.
  • meadow.config.yaml Format Change - The config format for network interface has changed in this release; users must update their existing apps if they have including custom network configuration.
  • Improved displays and graphics support - This release includes additional drawing optimizations in MicroGraphics along with two new OLED display drivers

Updating to RC-3

This is a full stack release requiring an OS update, new nuget packages, a new Meadow CLI and new Visual Studio extensions.

Updating Meadow.CLI

Start by making sure you have the latest version of the CLI (0.96.x) by running:

dotnet tool update Wildernesslabs.Meadow.CLI --global

Updating Meadow.OS

Download the latest os:

meadow download os

And update by putting your Meadow device in boot loader mode and running:

meadow flash os

Known Issues

Meadow.CLI Mx (MacOS silicon) Support - We have a workaround for those developers who have installed the CLI, but the basics work, like

meadow list ports

but you get an error similar to libusb-1.0 library not found. when you try:

meadow flash os

or similar. The workaround is to download the latest binary files here. Unzip them to safe location. Open a command line prompt at that location. This will then allow you to flash etc with the following command line.

dotnet meadow.dll flash os

meadow.config.yaml Format Change

If you are using the Network section of meadow.config.yaml to configure network access, you will now have to match this example's format instead:

Network:
Interfaces:
- Name: Ethernet
UseDHCP: false
IPAddress: 192.168.1.60
NetMask: 255.255.255.0
Gateway: 192.168.1.254
- Name: WiFi
UseDHCP: true
IPAddress: 192.168.1.10
NetMask: 255.255.255.0
Gateway: 192.168.1.254
#
# Which interface should be used?
#
DefaultInterface: WiFi

RC-2.2 (v0.9.4.0)

Here's another update with API improvements and new drivers! This release includes nugets and Visual Studio extensions - you don't need to flash a new OS - but that doesn't mean it's a small release.

RC-2.2 includes:

  • Meadow Desktop Support - it's now possible build Meadow apps on a desktop! This release includes preliminary support with more coming soon
  • New Pin Controller API pattern - We've overhauled the way Meadow creates ports from pins. This both simplifies using peripheral drivers and makes Meadow far more flexible when using IO expanders.
  • Improved MicroGraphics APIs - We added a new circular arc API to draw angles as well a top-to-bottom API cleanup
  • New Drivers - We've added three new drivers for Meadow Desktop including a display driver for Windows Forms, a display driver for Gtk and a keyboard driver! We've also added support for the GNSS 5 mikro click board.

Updating to RC-2.1

You just need to grab the latest Meadow nugets (verion 0.95.0) and install the latest Visual Studio extension(s) (version 0.9.5.0). There's no new CLI for this release.

Pin Controller pattern

Meadow.Foundation drivers no longer require passing in the Meadow Device when using constructor overloads the accept Meadow pins. This means existing applications will need to be updated. This just requires removing the Device parameter when instantiating drivers.

For example:

RC2-1 (old) var myLed = new Led(Device, Device.Pins.D02);

RC2-2 (new!) var myLed = new Led(Device.Pins.D02);

Under the hood, Meadow pins are now aware of their parent controller. This means a pin for your Meadow F7 knows about the Meadow F7 device which is why the Device parameter is no longer needed. This also brings a big improvement when using IO expanders such as the MC23xxx family of digital IO expanders. It's now possible to pass in pins from different controllers to the same peripheral. This is useful for complex peripheral devices that have multiple IO pins.

RC-2.1 (v0.9.4.0)

We're following up the release of Meadow RC2 with a point release that addresses a couple of key issues and includes some API improvements and fixes throughout the entire stack.

This release includes:

  • System stability - Fixed an edge-case MPU configuration bug that caused seemingly random application hangs when accessing the file system. As .NET execution can load assemblies at any time, this bug could cause hangs even for applications not directly using the file system.
  • Increased capacity for open files - This is particularly useful for complex apps/apps that use SQLite
  • GitGub repo organization - We've made it easier to view and contribute to Meadow by adding Meadow.Linux to the Meadow.Core repo

Updating to RC-2.1

This is a full stack release requiring an OS update, and new nuget packages. Meadow CLI and the extensions are unchanged.

Updating Meadow.OS

Download the latest os:

meadow download os

And update by putting your Meadow device in boot loader mode and running:

meadow flash os

Release Details

Meadow.Foundation

  • New Magnetometer sensor - The MMC5603 magnetometer is now supported
  • Added GNSS 10 Click Mikrobus driver - The click board uses the Neo M8 GNSS module
  • Improved peripheral abstraction - We've reworked the interfaces and base classes supporting the Meadow.Foundation peripherals making it easier to write Meadow apps that are abstracted from specific hardware
  • Bug fixes and cleanup - You can see the issues we've addressed here

RC-2 (v0.9.2.5)

We're excited to release the 2nd Meadow v1.0 Release-Candidate! This is another milestone release with new features and more performance improvements. To mark the occasion, we're continuing our goal of contributing to the .NET open-source community by open-sourcing Meadow.Core! This means the entire stack that sits above the .NET runtime is now open and available on GitHub.

This release includes:

  • SD Card Support - APIs are now available to use the SD card reader with the Meadow Core-Compute Module
  • Static IP Address Support - Meadow now supports setting a static IP address for the WiFi connection
  • Network Credentials Enhancements - New methods have been added to work with data in wifi.config.yaml file

Updating to RC-2

This is a full stack release requiring an OS update, new nuget packages, a new Meadow CLI and new Visual Studio extensions.

Updating Meadow.CLI

Start by making sure you have the latest version of the CLI (0.90.4) by running:

dotnet tool update Wildernesslabs.Meadow.CLI --global

Updating Meadow.OS

Download the latest os:

meadow download os

And update by putting your Meadow device in boot loader mode and running:

meadow flash os

NOTE: - After flashing Meadow.OS, if the runtime upload does not complete with an error of cannot connect to Meadow, push the RST button on your Meadow device and then execute:

meadow flash os -d

This skips the initial (already completed) Meadow.OS upload and retries the runtime upload. We're not sure what's causing this issue, but it's under investigation.

If you experience any stability or deployment issues you may need to erase the flash on Meadow and then re-install the latest OS:

meadow flash erase

Release Details

Meadow.OS

JIT

JIT is now turned on by default giving existing applications a performance boost.

Interpreted mode can be re-enabled by adding the following to the application meadow.config.yaml file:

MonoControl:
Options: --interp

SD Card Support (CCM)

SD cards are now supported on the Core Compute Module. The SD card interface can be enabled in the meadow.config.yaml file:

Device:
SdStorageSupported: true

Network Credentials Enhancements

Two new methods have been added to work with the data in the wifi.config.yaml file:

  • ConnectToDefaultAccessPoint
  • ClearStoredAccessPointInformation

ConnectToDefaultAccessPoint will us the SSID and password information previously loaded from the wifi.config.yaml an attempt to connect to the specified access point.

ClearStoredAccessPointInformation can be used to remove the stored credentials from non volatile memory.

TLS Update

TLS library has been updated.

Improved Low Power Support

The delay between the OS waking and calls to Console.WriteLine is no longer necessary.

Static IP Address Support for WiFi

The system now supports setting a static IP address for the WiFi connection. The address can be set through the meadow.config.yaml file by adding the following to the config file:

Network:
WiFi:
Default: true
#
# DHCP will be used if the IP address information is omitted.
#
IPAddress: 192.168.1.10
NetMask: 255.255.255.0
Gateway: 192.168.1.254

Meadow.Foundation

  • New Air quality sensor - The ENS160 air quality sensor is now supported

This release also includes several Meadow.Foundation bug fixes - details are here

RC-1.1 (v0.9.0.4)

We're happy to announce an amendment release to RC1, providing an out-of-band critical fix for the AMQP protocol and therefore for connecting to Azure Iot Hubs and other cloud services. To get started on connecting your Meadow to the cloud, check out our sample!

In addition, this release includes:

Meadow.OS + Meadow.Core

  • Debugging fix - A Meadow Debugging connection fix for the latest versions of Visual Studio
  • Battery voltage API - Device.GetBatteryInfo().Voltage now properly works on FeatherV2 devices
  • Sensor abstractions - A new ISamplingSensor abstraction makes it easier to swap sensor hardware with minimal code changes
  • Fixed Device.Connect never returns

Meadow.Foundation

  • New GPS driver - The NEO-M8 GPS module is now supported over serial
  • New Air quality sensor - The SCD40/41 air quality sensor is now supported
  • MicroGraphics vertical text alignment - It's now possible to align text both horizontally and vertically with MicroGraphic

This release also includes several Meadow.Foundation bug fixes - details are here

Updating to RC-1.1

This release includes an OS update, and new Meadow nuget packages. The CLI and extensions are unchanged.

Updating Meadow.OS

Download the latest os:

meadow download os

Update by putting your Meadow device in boot loader mode and running:

meadow flash os

If you experience any stability or deployment issues you may need to erase the flash on Meadow and then re-install the latest OS:

meadow flash erase

RC-1 (v0.9.0.4)

We're so excited to present to you the first Meadow v1.0 Release-Candidate!!! This is a MASSIVE release with a pile of fixes and way more features than we expected.

Meadow.Cloud

  • OtA Updates - Meadow.OS and Meadow applications can now be updated Over-the-Air via Meadow.Cloud!

  • Push Messaging - Meadow.OS now supports push-messaging from Meadow.Cloud as well as MQTT as a first-class feature. Meadow.OS + Meadow.Core

  • Power & Sleep APIs - Meadow.OS now supports Sleep and Wake operations for the device, and has a new set of APIs that expose the ability ability to put the device to sleep and then wake up on schedule.

  • Just-in-Time (JIT) Compilation - Meadow applications can now enable JIT execution, providing a ~5x-10x performance boost for app execution.

  • New App Lifecycle - We've greatly simplified the boilerplate code needed to create a Meadow application, as well as provided an easy way to integrate with the new Power, Sleep, and OS/App update lifecycle.

  • Lower Power Use on Idle - The STM32 CPU now idles using its hardware capabilities, reducing total Meadow power consumption considerably.

  • TLS Certificate Validation & other improvements - The OS now checks the full validity of TLS (aka. HTTPS/SSL) server certificates against a root Certificate Authority registry. We also implemented logic for more edge cases of TLS datastream processing.

  • Faster WiFi Connection - We have made changes to the event model on the 32 resulting in a 90% decrease in WiFi connection times, reducing WiFi connection time to 3-5 second on average.

  • Faster Meadow.OS Startup - We removed an errant 10 second wait time on startup.

  • Core-Compute Module Ethernet Support - Ethernet connectivity is now available on the Core-Compute Module.

  • Network Improvements - We've spent a lot of cycles on advanced web socket features that weren't implemented yet that unlock a number of important service connectivity use cases.

  • Configuration Files - Meadow now has robust support for compile-time configuration via YAML or JSON files.

  • Improved Meadow.OS Stability - Some deep assembly-level instruction calls have been fixed up, providing stability around long-running processes, advanced socket operation, and more.

  • System.IO.Compression - Meadow apps can now zip and unzip files and streams!

  • Memory Usage Decrease - The .NET runtime was configured to reduce its memory use for internal data structures.

Meadow.Foundation

  • MicroGraphics - We've optimized the APIs, combined with JiT and you'll see a 10x improvement in drawing speed. We've also cleaned up APIs and added an 8x16 font!
  • ePaper driver updates - We've updated APIs and added new drivers including 12 new WaveShare ePaper drivers.
  • IO Expanders - This release includes the long awaited updates to the MCP23008 with working interrupts! It also includes 7 other MCP expanders and we released drivers for the AS1115 and the SerialWombat!
  • BMI270 - We've added a driver for this top-of-the line motion sensor which is included on the Project Lab board!

Tooling

  • App Linking - Meadow apps are now linked at deploy time, which removes unused code. Deployment size with linking is typically reduced by 2/3rds. The result is a massive reduction of space on flash, RAM usage and results in faster startup and faster deployment.
  • Deployment/Debugging Stability - We've fixed lots of paper cuts in the IDE extensions and added a number of new features that massively improve the day to day development experience with Meadow.
  • App Template Updates - We've updated the Meadow App templates to support the new app lifecycle.

Updating to RC-1

This is a full stack release requiring an OS update, new nuget packages, a new Meadow CLI and new Visual Studio extensions.

Updating Meadow.CLI

Start by making sure you have the latest version of the CLI (0.90.0) by running:

dotnet tool update Wildernesslabs.Meadow.CLI --global

Updating Meadow.OS

Download the latest os:

meadow download os

And update by putting your Meadow device in boot loader mode and running:

meadow flash os

NOTE: - After flashing Meadow.OS, if the runtime upload does not complete with an error of cannot connect to Meadow, push the RST button on your Meadow device and then execute:

meadow flash os -d

This skips the initial (already completed) Meadow.OS upload and retries the runtime upload. We're not sure what's causing this issue, but it's under investigation.

If you experience any stability or deployment issues you may need to erase the flash on Meadow and then re-install the latest OS:

meadow flash erase

Release Details

Meadow.Cloud

With Meadow.OS v1.0 RC-1, we've also launched the first beta of Meadow.Cloud, including two core features:

  • MQTT Push-Messaging - Each Meadow device is now individually addressable and you can push messages containing arbitrary data to them.
  • Over-the-Air (OtA) Updates - You can now push App updates remotely to devices.

Users interested in the beta can sign up using this form. Meadow Cloud OtA is available via Meadow.CLI right now, with a Web UI coming in the future.

Meadow.OS

Faster OS and App Startup

There was a leftover 10 second startup delay from debugging Meadow.OS startup and initialization code that we removed. Additionally, linking (see below) also greatly improved app startup speed. The net effect of these improvements has seen a dramatic increase in OS and App startup speed.

Meadow.OS and .NET Stability

We've fixed several issues with the Mono runtime's execution on Meadow, including a bad value in a bespoke ARM-Thumb2 assembly-code trampoline that caused .NET runtime stability issues when using runtime internal calls from .NET code (e.g. in file and network I/O).

We also did a lot of work around the .NET Runtime -> Meadow.OS glue that fixed up a number of stability issues.

Just-in-Time (JiT) Compilation

Meadow.OS now has JiT compilation support, which compiles code on startup to low-level assembly language, rather than executing .NET Intermediate-Language (IL) in a virtual machine as interpreted instructions. This provides around a magnitude of performance improvement across the board, with some code instructions seeing even more improvements. Check out the Meadow Benchmarks Sample for specific performance improvement benchmarks.

Enabling JiT

While we've thoroughly tested JiT with all samples, there may still be edge cases where unexpected behavior is seen, so JiT is off by default. A later release will make it on by default.

To enable JIT in your Meadow application

  1. Add a Meadow config file - add a text file named meadow.config.yaml

  2. Configure Build Action - Ensure file is set to a Build configuration of none and is always copied to the Output Directory

  3. Enable JiT in Config - Enable JIT in the meadow.config.yaml file - add the following YAML

    MonoControl:
    Options: --jit
  4. Deploy - Deploy your app using the IDE extension or Meadow.CLI as you normally would, at startup, Meadow.OS will compile your app for all the speed!

Networking Stack

Faster WiFi Connection

WiFi connection time has been reduced by 90%. Meadow should now connect to WiFi in 3 seconds or less.

Stabilization

We've invested a huge amount of effort in this release resolving customer reported networking issues (thank you for filing issues with repros!) that exercised advanced socket features.

This release fixes a number of issues around web request stability as well as cloud integrations with Azure IoT, Google Cloud, and more.

Core-Compute Ethernet Support

Ethernet is now available for use on the Core-Compute module.

Configuration Files

We did a major overhaul to app, network, and OS build-time configuration support. We also re-enabled the WiFi configuration which was disabled in the last release due to a crasher bug.

Meadow apps now have sophisticated support for a number of configuration files and formats (both YAML and JSON).

Check out the Configuration Guide for more information.

Meadow.Core

Since breaking APIs after release is never a good thing, we're driving hard toward a solid, future-proof Core API. The largest change here is in the application lifecycle. With the addition of Over-the Air (OtA) updating capability, Meadow needs to be able to do controlled shutdown and startup of the application. These changes require updating existing applications, and those changes are outlined below.

API and Stability Fixes

Serial Ports

We've exposed public setters for Parity, DataBits and StopBits so they don't have to be set only during construction.

More Unitized

An underlying philosophy on Meadow is that to improve code clarity and reduce bugs, data should always carry units with it and all methods should use units where applicable. PWMs have been reworked to use Frequency units and DigitalInputPorts have been changed to use TimeSpan for both GlitchDuration and DebounceDuration

Disposable Objects

While it's common for many applications to allocate and use a Port for its lifetime, it's not required. We've implemented the IDisposable pattern in the lower levels of many of the Port classes to free up pin allocations when the consuming port has been Disposed.

New Meadow App Lifecycle

Meadow applications now have a prescriptive lifecycle that greatly simplifies the amount of boilerplate code necessary to create an app, including removal of the static void Main() launch method. There are also a number of new lifecycle events overridable in the App class that provide an easy way to hook into the new lifecycle features such as the Power & Sleep APIs, as well as OtA updates.

If you're moving from a Meadow.OS Beta app to a Meadow.OS Release Candidate app, you'll need to make a few updates.

For more information check out the following docs:

  • Lifecycle Update - Instructions for updating apps from previous betas to the new app pattern.
  • Meadow Apps - Provides an overview of the new app model and lifecycle events.

Service Resolver

Meadow.Core now contains a static service resolver called Resolver that can be used to create, store, retrieve and even do dependency injection of class instances. The Resolver is the new mechanism for retrieving the existing IApp or IMeadowDevice in your application instead of static instances in the Application.

Logging

The Resolver also contains an instance of a simple Logger. This Logger supports the same methods as the larger .NET logging interface and provides the ability to add log providers to allow your application to log to things like files, databases or REST endpoints. The default instance logs to the Console.

Application Configuration

Meadow.Core now supports application configuration through config files names app.config.json or app.config.yaml. These files use the Microsoft Configuration Extensions API to maintain familiarity and a common API. Take a look at the Application Settings Configuration Guide for more information.

Network APIs

A unified API for getting access to the devices INetworkAdapters has been introduced and the old mechanisms for interacting with the WiFi adapter have been deprecated. See the updates in the Networking Guide for more information.

Power & Sleep APIs

Sleep API

The Sleep API has been implemented and moved to PlatformOS.

To put your Meadow into a low-power Sleep state, use the following call:

Device.PlatformOS.Sleep(TimeSpan.FromSeconds(5));

Known Issue: When waking from sleep, if your application attempts to write to the Console within less than approximately half a second, the underlying serial connection will not be available and the application will get stuck. For this reason, we recommend adding a Thread.Sleep(500); immediately after any call to Sleep() or at the top of any Device.PlatformOS.AfterWake handler.

Device.PlatformOS.AfterWake += () =>
{
// RC1 known-issue workaround: small delay before logging to avoid app getting stuck.
Thread.Sleep(TimeSpan.FromMilliseconds(500));
Resolver.Log.Info("Device has returned from sleep mode");
};

Reset API

The Reset API has been moved to PlatformOS.

To reset your meadow, use the following call:

Device.PlatformOS.Reset();

Serial Ports

We've exposed public setters for Parity, DataBits and StopBits so they don't have to be set only during construction.

Counters

We've added support for a Counter class on the device to count interrupt edges or pulses.

Meadow.Foundation

This release includes new drivers, improved APIs, improved performance, and bug fixes. You can see the full is of fixes, improvements and new drivers here.

New drivers

  • BMI270 - We've added a driver for this top-of-the line motion sensor which is included on the Project Lab board!
  • MCP23xxx - This release includes a complete rewrite of the MCP23008 driver and adds the MCP23S08, MCP23009, MCP23S09, MCP23017, MCP23S17 MCP23018, MCP23S18.
  • UC8151C - An ePaper controller driver commonly used by WaveShare.
  • SSD1680 - Another ePaper driver used in a variety of displays including Adafruit.
  • WaveShare ePaper drivers - We've added 12 WaveShare-specific drivers that make it easy to use WaveShare displays without hunting for drivers controller names.
  • SerialWombat - We've added support for the popular PIC powered Serial Wombat IO expander.
  • AS1115 - This is a commonly used commodity priced IO expander and LED driver.
  • Altair 8800 Click board - This special edition Click board includes 16 buttons and a 8x8 LED matrix.

MicroGraphics

We've optimized the APIs, combined with JiT and you'll see a 10x improvement in drawing speed. We've also cleaned up APIs and added a 8x16 font!

CommonType Moved

The CommonType enum has moved out of the Leds class.

If you've previously used CommonType with a fully qualified name - i.e. Meadow.Peripherals.Leds.CommonType.CommonAnode, update it to CommonType.CommonAnode and add using Meadow.Foundation.Leds.

displayColorMode display driver parameter renamed to colorMode

This parameter has been renamed for simplicity and consistency. Will only impact code that explicitly assigns the ctor parameter by name.

Tooling (Meadow.CLI, IDE Extensions, and Templates)

We've been reviewing the tooling code line-by-line and this release delivers dozens of fixes and optimizations. You should see better stability, consistency, and performance with both the Meadow CLI and the Visual Studio extensions.

  • Application Templates - We've also updated the Meadow application templates to reflect the new and improved Meadow lifecycle APIs.
  • Just-in-time compilation - JiT is enabled by default when creating new applications in Visual Studio.(JiT can be disabled by editing meadow.config.yaml in your Meadow project).

Linking Enabled by Default

With RC-1, app code is linked by default. Linking (AKA "Tree-Shaking") walks the code tree and removes unused functions. This drastically reduces the amount of deployed code (Hello, World goes from ~26MB to 5MB) and has a number of massive benefits, including:

  • Faster Deployments - App deployment is much faster, due to less code being uploaded.
  • More Available Storage - Less uploaded code means more room on non-volatile storage (flash).
  • Faster App Startup and More Available Memory - Less code means less code loaded into memory, reducing app startup and more available memory for allocations.

Project Template Changes

With the greatly simplified boilerplate code needed to create a Meadow application, the project templates have been updated with the new lifecycle methods.

Just-in-time compilation - JiT is enabled by default when creating new applications in Visual Studio. (JiT can be disabled by editing meadow.config.yaml in your Meadow project).

Debugging Stability

As part of the stability and performance work, we've invested significant time on debugging. Debugging should be more consistent and more stable across Visual Studio on Windows, Visual Studio for Mac and Visual Studio Code.

RC-1 Bug Fixes

Known Issues

  • If the Deploy fails during the file transfer, you MUST reset the board before deploying again. Deploy will fail if you don't. After resetting and re-deploying the transfer should then continue where it left off. A fix is being worked on for RC2
  • There is some extra logging code that shows how many bytes are being sent and received between the Meadow and Visual Studio, so we can track down a buffer overflow bug. This extra logging will be removed in RC2.
  • Occasionally (hopefully rarely) you may get an error which relates to serial port/addresses already being in use. You may have to reboot your machine and meadow device to be able to free up the port/address and be able to redeploy your Meadow. If you see it and can supply us with a consistent repro, that would be very useful to squashing this bug.
  • [Windows Extensions] Due to an MS API change auto-deploy when debugging does not currently work. WORK AROUND: To debug on Windows deploy your app 1st, then hit the Debug button to step through your deployed code etc. We are working on a fix for this issue for RC2. Apologies for the inconvenience.

Meadow.OS Deploy, App Deploy/Debug Workflow

This release has been a long journey that added our final v1.0 features, and did final polishes to our APIs, however, the OS Deploy, App Deploy/Debug cycles still have some hiccups that we'll spend time stabilizing for RC-2/v1.0.