Skip to content

Commit

Permalink
Merge pull request #737 from WildernessLabs/develop
Browse files Browse the repository at this point in the history
Add Release Notes to v1.11.0
  • Loading branch information
patridge authored May 1, 2024
2 parents 35f6d19 + 6c98c7d commit 004c115
Show file tree
Hide file tree
Showing 13 changed files with 125 additions and 38 deletions.
52 changes: 51 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,56 @@ Changes should automatically be picked up and displayed on the site.

Please use the [Docusaurus guides and documentation](https://docusaurus.io/docs/2.x) if you wish to make serious modifications to the user experience of the site. If you run into any issues editing content, like getting links to resolve or html to render, checkout the [Docusaurus tips and tricks](Contributing/docusaurus-tips) page.

## Developer tips

### Table of Contents changes

Depending on changes you want to make to navigation elements, you will need to look in special locations within Docusaurus files. Note that navigation changes may require more review in the pull request process as well, to ensure we keep things ideal for user experience.

### Top navigation

If we need to alter the top navigation elements, it will require modifications to the `/Documentation/docusaurus-config/theme-config.js` file. Edits to this file will definitely require local testing and more review before we make high-impact user-facing changes.

#### Sidebars

If you want to add or alter the left-hand table of contents, there are special JavaScript files Docusaurus uses. These sidebar files are available in the [`/Documentation/src/sidebars/`](https://github.com/WildernessLabs/Documentation/tree/main/src/sidebars) folder, and they are all processed in the [**sidebars.js** file](https://github.com/WildernessLabs/Documentation/blob/main/src/sidebars/sidebars.js), where it is configured for when a specific sidebar will be used based on the current requested path.

### When links don't seem to work

If you see an error for a link you are adding that you are fairly certain is correct, verify that the page filename doesn't contain any special characters. While they may be valid for URL use, sometimes Docusaurus will fail to handle links with characters.

For example, if you want to link to the [`Deploying_Meadow.OS` path](https://developer.wildernesslabs.co/Meadow/Getting_Started/Deploying_Meadow.OS/), the period (`.`) in that last folder name should be fine, but Docusaurus will fail to find the desired destination. Instead, you will need to link to a URL-encoded folder: `.../Deploying_Meadow%2EOS/` (where `%2E` is the "percent-encoded" period character).

### Redirects

When files move or shortcuts are needed, we can use the [Docusaurus plug-in **plugin-client-redirects**](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-client-redirects/) that is available on the docs site. While not as effective as server-side redirects and HTTP status codes, it allows us to keep old user links, bookmarks, and archived docs content taking users to the latest content.

These redirect rules are established in the [`/Documentation/docusaurus.config.js` file within the `plugins` section](https://github.com/WildernessLabs/Documentation/blob/main/docusaurus.config.js#L52). (The exact line may change as that configuration file is modified, but look for the `@docusaurus/plugin-client-redirects` section.)

Rules include a `from` location(s) and a desired `to` destination. If you need a single `from`, just use a string (`from: "/old/url"`). If you need to redirect multiple pages to a single new location, make the `from` field an array of strings (`from: ["/some/url", "/another/url"]`).

### Tabs

In several places, we want to present similar variations of instructions based on operating system (OS) or development environment without requiring the user to scroll through other options. This is handled by using tabs with a special XML syntax of `Tabs` and `TabItem`, where the user will select their choice and be presented with just those instructions. This [tab functionality is built into Docusaurus](https://docusaurus.io/docs/next/markdown-features/tabs) and is also documented there.

Currently, we use tabs with the `groupId` of `os` and `ide`. Here's an example use, separated by OS. If the user hasn't selected a tab, the `default` attribute indicates which TabItem is shown.

```xml
<Tabs groupId="os" queryString="currentOs">
<TabItem value="windows" label="Windows" default>
...
</TabItem>
<TabItem value="macos" label="macOS">
...
</TabItem>
<TabItem value="linux" label="Linux">
...
</TabItem>
</Tabs>
```

Adding the `queryString` attribute to the Tabs group allows the selected tab to be set by the requested URL querystring. In this case, if the URL contains `?currentOs=macOS`, the user will load the page with the macOS tab preselected. This allows links to be made to specific tabs or even sections within a tab.

## [Contributing](Contributing)

Wilderness Labs welcomes and encourages constrictive contributions. We believe that documentation is best when a diverse community of folks with a variety of perspectives and experience share their wisdom and findings with others. Additionally, documentation contributions are a great way to capture learnings that you may even reference yourself.
Expand All @@ -53,4 +103,4 @@ Attribution + Noncommercial + NoDerivatives (CC BY-NC-ND) license](Licenses/Crea

### Code Samples and Code Snippets

All code samples and code snippets, whether they be full applications, or embedded snippets within the documentation are released under the [Apache 2 license](Licenses/Apache2_License.md). Feel free to use and distribute the code as you see fit, under the very permissive terms of the license.
All code samples and code snippets, whether they be full applications, or embedded snippets within the documentation are released under the [Apache 2 license](Licenses/Apache2_License.md). Feel free to use and distribute the code as you see fit, under the very permissive terms of the license.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 2 additions & 8 deletions docs/Meadow/Getting_Started/Deployment/index.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,7 @@
---
layout: Meadow
title: Deployment
subtitle: Guides and documentation for Meadow
subtitle: Deploy a Meadow application
---

# Deploy a Meadow application

* [macOS](macos/)
* [Windows](Windows/)
* [Linux](Linux/)

## [Next - Hello, World](/Meadow/Getting_Started/MCUs/F7_Feather/)
[This document has been moved](../Deploying_Meadow%2EOS/)
Original file line number Diff line number Diff line change
Expand Up @@ -141,11 +141,13 @@ What this Meadow application does is creates an `RgbPwmLed` object on the CCM De

### Step 7 - Deploy your application

With no code changes, let's deploy this app to your new board.
With no code changes, let's deploy this app to your new board.

In the bottom toolbar, click on the COM port button that will open a drop down menu at the top, where you’ll select the corresponding port your board is using.
In the Activity Bar on the side of the window, select the **Run and Debug** icon.

![Create new Meadow Application](../../Common_Assets/wildernesslabs_meadow_vscode_deploy.jpg)
Within the **Run and Debug** side bar, select the configuration drop-down and select the port corresponding to your connected Meadow device.

![Visual Studio Code screenshot showing Run and Debug activity with a highlight of the Meadow COM3 port selected.](../../Common_Assets/wildernesslabs_meadow_vscode_deploy.png)

:::caution
When deploying a project for the first time, the transfer will take several minutes, since it's transferring all the necessary libraries to run the application. Once the app is running for the first time, deployment will be faster as it will transfer only the files that have been changed.
Expand Down
6 changes: 4 additions & 2 deletions docs/Meadow/Getting_Started/MCUs/F7_Feather/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,9 +151,11 @@ What this Meadow application does is creates an `RgbPwmLed` object on the onboar

With no code changes, let's deploy this app to your new board.

In the bottom toolbar, click on the COM port button that will open a drop down menu at the top, where you’ll select the corresponding port your board is using.
In the Activity Bar on the side of the window, select the **Run and Debug** icon.

![Deploying an app to the COM3 port.](../../Common_Assets/wildernesslabs_meadow_vscode_deploy.jpg)
Within the **Run and Debug** side bar, select the configuration drop-down and select the port corresponding to your connected Meadow device.

![Visual Studio Code screenshot showing Run and Debug activity with a highlight of the Meadow COM3 port selected.](../../Common_Assets/wildernesslabs_meadow_vscode_deploy.png)

:::caution
When deploying a project for the first time, the transfer will take several minutes, since it's transferring all the necessary libraries to run the application. Once the app is running for the first time, deployment will be faster as it will transfer only the files that have been changed.
Expand Down
6 changes: 4 additions & 2 deletions docs/Meadow/Getting_Started/MCUs/Project_Lab/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -149,9 +149,11 @@ This project creates a Project Lab demo app that will activate all its onboard s

With no code changes, let's deploy this app to your new Project Lab.

In the bottom toolbar, click on the COM port button that will open a drop down menu at the top, where you’ll select the corresponding port your board is using.
In the Activity Bar on the side of the window, select the **Run and Debug** icon.

![Deploying Project Lab app on VS Code](../../Common_Assets/wildernesslabs_meadow_vscode_deploy.jpg)
Within the **Run and Debug** side bar, select the configuration drop-down and select the port corresponding to your connected Meadow device.

![Visual Studio Code screenshot showing Run and Debug activity with a highlight of the Meadow COM3 port selected.](../../Common_Assets/wildernesslabs_meadow_vscode_deploy.png)

:::caution
When deploying a project for the first time, the transfer will take several minutes, since it's transferring all the necessary libraries to run the application. Once the app is running for the first time, deployment will be faster as it will transfer only the files that have been changed.
Expand Down
4 changes: 2 additions & 2 deletions docs/Meadow/Meadow.Cloud/Command_Control/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ A command can be sent to a set of collections or devices:
**Collections**

```log
POST /api/collections/commands
POST https://www.meadowcloud.co/api/collections/commands
Authorization: Bearer <user token> or Authorization: apikey <apikey>
{
"collectionIds": ["COLLECTION_ID_1", "COLLECTION_ID_2"],
Expand All @@ -35,7 +35,7 @@ Authorization: Bearer <user token> or Authorization: apikey <apikey>
**Devices**

```log
POST /api/devices/commands
POST https://www.meadowcloud.co/api/devices/commands
Authorization: Bearer <user token> or Authorization: apikey <apikey>
{
"deviceIds": ["DEVICE_ID_1", "DEVICE_ID_2"],
Expand Down
28 changes: 14 additions & 14 deletions docs/Meadow/Meadow.OS/Networking/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ subtitle: Network options and operation.

Both the Meadow F7 Feather development board and Core-Compute Module have Wi-Fi networking via the ESP32 co-processor. The Meadow Core-Compute Module also adds optional ethernet capabilities.

# WiFi
## WiFi

## Connecting to a WiFi Network
### Connecting to a WiFi Network

### Option 1 - Programatically using C#
#### Option 1 - Programatically using C#

To connect to a Wi-Fi network, call the async function `Connect`, passing in the network name (SSID) and password. It will return a `Connection.Status` to verify if the connection was successful or if something went wrong, and allowing you to handle those situations.

Expand Down Expand Up @@ -41,7 +41,7 @@ wifi.NetworkConnected += (networkAdapter, networkConnectionEventArgs) =>
};
```

### Option 2 - Using Config Files
#### Option 2 - Using Config Files

Another option is you can make your Meadow device join a network at startup automatically using the app's configuration files.

Expand Down Expand Up @@ -79,7 +79,7 @@ Optionally you can set the `ClearDefaultCredentials: true` , to remove the last

It is important to note when the `ClearDefaultCredentials` is set, then the `SSID` and `Password` properties will be ignored.

## Scanning for WiFi Networks
### Scanning for WiFi Networks

You can also scan for WiFi networks via the `Scan()` method on the `IWiFiNetworkAdapter`. This method will return a list of the discovered networks.

Expand Down Expand Up @@ -109,7 +109,7 @@ async Task ScanForAccessPoints(IWiFiNetworkAdapter wifi)
}
```

# Ethernet
## Ethernet

If you're using an [Dual, Switching Ethernet Add-on module](https://store.wildernesslabs.co/collections/meadow-core-compute/products/dual-ethernet-add-on), or a [Meadow F7v2 Core-Compute Dev Kit](https://store.wildernesslabs.co/collections/frontpage/products/meadow-f7v2-core-compute-breakout-board), you can easily use Ethernet network connectivity by switching the `DefaultInterface` setting in the meadow.config.yaml file:

Expand All @@ -131,13 +131,13 @@ Network:
```
Optionally you can set the `UseDHCP: true` to get an IP Address automatically. If `DefaultInterface` is not set on the config file, it will default to WiFi.

# Performing Requests
## Performing Requests

Once the network is connected, you can generally use the built-in .NET network methods as usual.

Note: SSL validation can sometimes fail if Meadow's clock is too far from the current time. This can be resolved by either [configuring Meadow to acquire the network time at startup](/Meadow/Meadow.OS/Configuration/OS_Device_Configuration/), or by [setting the clock manually](/Meadow/Meadow.OS/RTC/) at runtime.

## HTTP Get Request Example
### HTTP Get Request Example

The following code illustrates making a request to a web page via the `HttpClient` class:

Expand All @@ -150,7 +150,7 @@ using (HttpClient client = new HttpClient()) {
}
```

## HTTP Post Request Example
### HTTP Post Request Example

You can also modify the request to `POST` data. For example, the following code posts a temperature reading to the Adafruit IO data platform:

Expand All @@ -165,27 +165,27 @@ using (HttpClient client = new HttpClient()) {
}
```

# Antenna
## Antenna

Both the Meadow development board and production module have an onboard ceramic chip antenna and a U.FL connector for an external antenna for the 2.4GHz WiFi and Bluetooth radio.

For more information on getting the current antenna information and switching, see the [Antenna guide](Antenna).

# Creating RESTful Web APIs with Maple Server
## Creating RESTful Web APIs with Maple Server

If you need to expose simple RESTful Web APIs, Meadow.Foundation includes a lightweight web server called `Maple Server` that may be useful. Check out the [Maple Server guide](/Meadow/Meadow.Foundation/Libraries_and_Frameworks/Maple%2EServer) for more information.

# Sample projects
## Sample projects

## Core project samples
### Core project samples

For example code, see the following networking sample apps in the [Meadow.Core.Samples repo](https://github.com/wildernesslabs/Meadow.Core.Samples):

* **[WiFi_Basics](https://github.com/WildernessLabs/Meadow.Core.Samples/tree/main/Source/Network/WiFi_Basics)** - Covers the basics of enumerating and connecting to WiFi networks.
* **[HttpListener](https://github.com/WildernessLabs/Meadow.Core.Samples/tree/main/Source/Network/HttpListener)** - Shows how to respond to HTTP requests with `HttpListenerContext`, `HttpListenerRequest`, and `HttpListenerResponse`.
* **[Antenna_Switching](https://github.com/WildernessLabs/Meadow.Core.Samples/tree/main/Source/Network/Antenna_Switching)** - Shows how to use the antenna API to switch between the onboard and external antenna connection.

## Additional project samples
### Additional project samples

You can look through these practical projects available on [Hackster](https://www.hackster.io/WildernessLabs).

Expand Down
10 changes: 6 additions & 4 deletions docs/Meadow/Meadow_Tools/VSCode/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,20 @@ If you havent, download and Install [Visual Studio Code](https://visualstudio.mi
## Installation

1. In VSCode go to the Extensions tab (macOS: Cmd+Shift+X. Others: Ctrl+Shift+X)
1. In the search bar type `VSCode Tools for Meadow`. It should be the first extension in the list.
1. In the search bar type `VSCode Tools for Meadow`. It should be the first extension in the list, with an ID of `Wildernesslabs.meadow`.

![vscode meadow extension](vscode-extension-marketplace.png)

1. Click it the **Install** button on the bottom right of the listed item.
1. Click it the **Install** button on the bottom right of the listed extension.
1. The extension should now be installed.

## Usage

In the bottom toolbar, click on the COM port button that will open a drop down menu at the top, where you’ll select the corresponding port your board is using.
In the Activity Bar on the side of the window, select the **Run and Debug** icon.

![Create new Meadow Application](wildernesslabs_meadow_vscode_deploy.jpg)
Within the **Run and Debug** side bar, select the configuration drop-down and select the port corresponding to your connected Meadow device.

![Visual Studio Code screenshot showing Run and Debug activity with a highlight of the Meadow COM3 port selected.](../../Getting_Started/Common_Assets/wildernesslabs_meadow_vscode_deploy.png)

## References

Expand Down
Binary file not shown.
36 changes: 36 additions & 0 deletions docs/Meadow/Release_Notes/v1/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,42 @@ subtitle: Release Notes
* [Meadow.CLI](/Meadow/Meadow_Tools/Meadow_CLI/)
* [Meadow.OS](/Meadow/Getting_Started/Deploying_Meadow%2EOS/)

## v1.11.0

This is a full stack update (OS, Tooling and NuGet packages) release that improves [what?] stability and with some minor performance improvements.

### Meadow.OS

* Bugfix in WiFi implementation of POSIX `poll()` function should result in increased network stability, and increased performance for `static HttpClient`
* Resolved crashing issue when using the “read-ahead data” `Socket.Available` property
* Better error reporting for Cell networking connections and the TLS/HTTPS layer

### Meadow.Core

* Added `OnBootFromCrash` virtual method to `App`
* Added `IsEnabled` property to `MeadowCloudConnectionService`
* All `Desktop` platform Displays are now `SilkDisplay` and implement `IResizablePixelDisplay`

#### Breaking changes

* Desktop-based applications need to remove GTK/WinForms startup and replace with `SilkDisplay.Run()`

### Meadow.Foundation

* Added [`SilkDisplay`](https://www.nuget.org/packages/Meadow.Foundation.Displays.Silk) driver
* Bug fix for [`Bmx280`](https://www.nuget.org/packages/Meadow.Foundation.Sensors.Atmospheric.Bmx280) driver
* Added `SimulatedAccelerometer`, `SimulatedCurrentSensor`, and `SimulatedAnalogInputPort` drivers included in our [Meadow.Foundation](https://www.nuget.org/packages/Meadow.Foundation) package

### Tooling

#### Meadow Project Templates

Update your project templates with `dotnet new install WildernessLabs.Meadow.Template` command. It includes:

* All templates now use C# 10
* Meadow.Desktop template now uses new [Silk.NET](https://dotnet.github.io/Silk.NET/)
* Minor cleanup on the Project Lab template

## v1.10.2

This is a managed (NuGet packages) only release that improves Meadow.Cloud stability and with some minor performance improvements.
Expand Down
3 changes: 1 addition & 2 deletions docusaurus-config/theme-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ const algolia = require('./algolia.js');

let themeConfig = /** @type {import('@docusaurus/preset-classic').ThemeConfig} */
({
// TODO: Replace with your project's social card
image: 'img/docusaurus-social-card.jpg',
navbar: {
// title: 'My Site',
Expand Down Expand Up @@ -143,4 +142,4 @@ let themeConfig = /** @type {import('@docusaurus/preset-classic').ThemeConfig} *
algolia
});

module.exports = themeConfig;
module.exports = themeConfig;

0 comments on commit 004c115

Please sign in to comment.