You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ad...@apache.org on 2016/04/26 23:02:23 UTC
[1/7] incubator-mynewt-site git commit: Lots of HAL additions by P
Dietrich. This closes #73. BLE security blurb added. Docker container and
quick start docs cleaned up
Repository: incubator-mynewt-site
Updated Branches:
refs/heads/asf-site af2656ceb -> a946b6be0
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/sitemap.xml
----------------------------------------------------------------------
diff --git a/sitemap.xml b/sitemap.xml
index 7732d55..66c62c8 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -4,7 +4,7 @@
<url>
<loc>http://mynewt.apache.org/</loc>
- <lastmod>2016-04-08</lastmod>
+ <lastmod>2016-04-26</lastmod>
<changefreq>daily</changefreq>
</url>
@@ -12,7 +12,7 @@
<url>
<loc>http://mynewt.apache.org/about/</loc>
- <lastmod>2016-04-08</lastmod>
+ <lastmod>2016-04-26</lastmod>
<changefreq>daily</changefreq>
</url>
@@ -20,7 +20,7 @@
<url>
<loc>http://mynewt.apache.org/documentation/</loc>
- <lastmod>2016-04-08</lastmod>
+ <lastmod>2016-04-26</lastmod>
<changefreq>daily</changefreq>
</url>
@@ -28,7 +28,7 @@
<url>
<loc>http://mynewt.apache.org/download/</loc>
- <lastmod>2016-04-08</lastmod>
+ <lastmod>2016-04-26</lastmod>
<changefreq>daily</changefreq>
</url>
@@ -36,7 +36,7 @@
<url>
<loc>http://mynewt.apache.org/community/</loc>
- <lastmod>2016-04-08</lastmod>
+ <lastmod>2016-04-26</lastmod>
<changefreq>daily</changefreq>
</url>
@@ -44,7 +44,7 @@
<url>
<loc>http://mynewt.apache.org/events/</loc>
- <lastmod>2016-04-08</lastmod>
+ <lastmod>2016-04-26</lastmod>
<changefreq>daily</changefreq>
</url>
@@ -53,7 +53,7 @@
<url>
<loc>http://mynewt.apache.org/os/get_started/introduction/</loc>
- <lastmod>2016-04-08</lastmod>
+ <lastmod>2016-04-26</lastmod>
<changefreq>daily</changefreq>
</url>
@@ -93,7 +93,7 @@
<url>
<loc>http://mynewt.apache.org/newt/newt_intro/</loc>
- <lastmod>2016-04-08</lastmod>
+ <lastmod>2016-04-26</lastmod>
<changefreq>daily</changefreq>
</url>
@@ -105,7 +105,7 @@
<url>
<loc>http://mynewt.apache.org/newt/newt_operation/</loc>
- <lastmod>2016-04-08</lastmod>
+ <lastmod>2016-04-26</lastmod>
<changefreq>daily</changefreq>
</url>
@@ -121,13 +121,13 @@
<url>
<loc>http://mynewt.apache.org/newtmgr/overview/</loc>
- <lastmod>2016-04-08</lastmod>
+ <lastmod>2016-04-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://mynewt.apache.org/newtmgr/installing/</loc>
- <lastmod>2016-04-08</lastmod>
+ <lastmod>2016-04-26</lastmod>
<changefreq>daily</changefreq>
</url>
@@ -143,13 +143,13 @@
<url>
<loc>http://mynewt.apache.org/os/tutorials/how_to_edit_docs/</loc>
- <lastmod>2016-04-08</lastmod>
+ <lastmod>2016-04-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>http://mynewt.apache.org/faq/answers/</loc>
- <lastmod>2016-04-08</lastmod>
+ <lastmod>2016-04-26</lastmod>
<changefreq>daily</changefreq>
</url>
[6/7] incubator-mynewt-site git commit: Lots of HAL additions by P
Dietrich. This closes #73. BLE security blurb added. Docker container and
quick start docs cleaned up
Posted by ad...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/mkdocs/search_index.json
----------------------------------------------------------------------
diff --git a/mkdocs/search_index.json b/mkdocs/search_index.json
index 383df2e..2cf2f35 100644
--- a/mkdocs/search_index.json
+++ b/mkdocs/search_index.json
@@ -7,17 +7,17 @@
},
{
"location": "/about/",
- "text": "Features\n\n\nApache Mynewt's open-source embedded software is designed with the following components:\n\n\n\n\nMynewt OS: Real-time operating system kernel (Scheduler, Mutexes, Semaphores, etc.)\n\n\nNewt tool: Command line package management and build system \n\n\nHardware Abstraction Layer unifying common MCU features (e.g. GPIOs, High Resolution Timers, PWM interfaces, UARTs, ADCs, etc.)\n\n\nBoard Support Infrastructure, that defines the framework for building software for various board architectures.\n\n\nImage management and upgrade using the secure bootloader, and flash filesystem.\n\n\nSystem configuration that allows collection of logs and statistics for all packages (with filtering options) ranging from OS-level resources such as memory pools, priorities to interface level counters such as packet exchange and queues\n\n\nCore dump captures to enable remote diagnosis of device failures and hiccups\n\n\nNetwork protocol stacks \n\n\nFirst fully open-sou
rce BLE 4.2 stack\n\n\nSupport for PDUs of up to 251 bytes for high throughput\n\n\nSupport for all 4 roles to be run concurrently - Broadcaster, Observer, Peripheral, Central\n\n\nRandom addresses for link-layer security\n\n\nSecurity Manager Protocol\n\n\nLE Secure Connections\n\n\n\n\n\n\n\n\n\n\n\n\nRoadmap\n\n\n\n\n\n\n\n\nRelease Version\n\n\nDescriptor\n\n\nDate\n\n\nFeatures\n\n\n\n\n\n\n\n\n\n\n0.8.0b2\n\n\nBeta #2 before pre-GA release #1\n\n\nmid-March, 2016\n\n\n* Arduino Zero support\n\n\n\n\n\n\n\n\n\n\n\n\n* OS Time\n\n\n\n\n\n\n\n\n\n\n\n\n* Several new tutorials for OS\n\n\n\n\n\n\n\n\n\n\n\n\n* Tutorials for BLE 4.2\n\n\n\n\n\n\n\n\n\n\n\n\n* BLE 4.2: Random static address\n\n\n\n\n\n\n0.8.0\n\n\npre-GA release #1\n\n\nmid-April, 2016\n\n\n* HAL extensions in OS\n\n\n\n\n\n\n\n\n\n\n\n\n* Arduino DUE support\n\n\n\n\n\n\n\n\n\n\n\n\n* Image verification\n\n\n\n\n\n\n\n\n\n\n\n\n* BLE 4.2 stats and logs\n\n\n\n\n\n\n\n\n\n\n\n\n* Crash dump capture and retrieval\n\n
\n\n\n\n\n0.9.0b1\n\n\nBeta before pre-GA release #2\n\n\nmid-May, 2016\n\n\n* Support images in external flash\n\n\n\n\n\n\n\n\n\n\n\n\n* Support for low power modes in multiple SoCs\n\n\n\n\n\n\n\n\n\n\n\n\n* BLE 4.2: LE legacy pairing\n\n\n\n\n\n\n\n\n\n\n\n\n* BLE 4.2: LE Secure Connections\n\n\n\n\n\n\n\n\n\n\n\n\n* BLE 4.2: Host and Controller separation\n\n\n\n\n\n\n\n\n\n\n\n\n* BLE 4.2: Random private resolvable addresses\n\n\n\n\n\n\n\n\n\n\n\n\n* BLE 4.2 stats and logs\n\n\n\n\n\n\n0.9.0\n\n\npre-GA release #2\n\n\nmid-June, 2016\n\n\n* Test coverage improvements\n\n\n\n\n\n\n\n\n\n\n\n\n* BLE 4.2: GATT based BLE profiles for Mynewt\n\n\n\n\n\n\n\n\n\n\n\n\n* BLE 4.2: Configurability improvements\n\n\n\n\n\n\n\n\n The detailed roadmap is tracked on \nJIRA for Mynewt\n. \n\n\nFeature Request\n\n\nThe WISHLIST at the top of the roadmap on \nJIRA for Mynewt\n features all the new ideas awaiting discussion and review. Once the community decides to go ahead with a request, it
is scheduled into a release. Generally, effort is made to schedule a requested feature into a particular version no later than 6 weeks prior to the planned release date.\n\n\nIf you have suggestions for a new feature, use case, or implementation improvements, file a JIRA ticket with Issue Type set to \"Wish\". Introduce it in the \ndev@\n mailing list with a link to the JIRA ticket. This assumes you have signed up for an account on JIRA and submitted a request to the dev@ mailing list for your JIRA username to be added to the Apache Mynewt (MYNEWT) project. \n\n\nFAQ\n\n\n Questions? \n Click \nhere",
+ "text": "Features\n\n\nApache Mynewt's open-source embedded software is designed with the following components:\n\n\n\n\nMynewt OS: Real-time operating system kernel (Scheduler, Mutexes, Semaphores, etc.)\n\n\nNewt tool: Command line package management and build system \n\n\nHardware Abstraction Layer unifying common MCU features (e.g. GPIOs, High Resolution Timers, PWM interfaces, UARTs, ADCs, etc.)\n\n\nBoard Support Infrastructure, that defines the framework for building software for various board architectures.\n\n\nImage management and upgrade using the secure bootloader, and flash filesystem.\n\n\nSystem configuration that allows collection of logs and statistics for all packages (with filtering options) ranging from OS-level resources such as memory pools, priorities to interface level counters such as packet exchange and queues\n\n\nCore dump captures to enable remote diagnosis of device failures and hiccups\n\n\nNetwork protocol stacks \n\n\nWorld's first fully
open-source BLE 4.2 stack\n\n\nSupport for PDUs of up to 251 bytes for high throughput\n\n\nSupport for all 4 roles to be run concurrently - Broadcaster, Observer, Peripheral, Central\n\n\nRandom addresses for link-layer security\n\n\nSecurity Manager Protocol\n\n\nLE Secure Connections\n\n\n\n\n\n\n\n\n\n\n\n\nRoadmap\n\n\n\n\n\n\n\n\nRelease Version\n\n\nDescriptor\n\n\nDate\n\n\nFeatures\n\n\n\n\n\n\n\n\n\n\n0.8.0\n\n\npre-GA release #1\n\n\nlate-April, 2016\n\n\n* HAL extensions in OS\n\n\n\n\n\n\n\n\n\n\n\n\n* Arduino DUE support\n\n\n\n\n\n\n\n\n\n\n\n\n* Image verification\n\n\n\n\n\n\n\n\n\n\n\n\n* Stats and logs enhancement\n\n\n\n\n\n\n\n\n\n\n\n\n* HAL additions: ADC, DAC, I2C, PWM, SPI\n\n\n\n\n\n\n\n\n\n\n\n\n* BLE 4.2: LE legacy pairing\n\n\n\n\n\n\n\n\n\n\n\n\n* BLE 4.2: Code size optimization\n\n\n\n\n\n\n0.9.0\n\n\npre-GA release #2\n\n\nMay, 2016\n\n\n* Support images in external flash\n\n\n\n\n\n\n\n\n\n\n\n\n* System watchdog\n\n\n\n\n\n\n\n\n\n\n\n\n* Support fo
r low power modes in multiple SoCs\n\n\n\n\n\n\n\n\n\n\n\n\n* BLE 4.2: LE Secure Connections\n\n\n\n\n\n\n\n\n\n\n\n\n* BLE 4.2: Host and Controller separation\n\n\n\n\n\n\n\n\n\n\n\n\n* BLE 4.2: Random private resolvable addresses\n\n\n\n\n\n\n\n\n\n\n\n\n* BLE 4.2: Remote configuration, upgrade, factory reset over BLE 4.2\n\n\n\n\n\n\n\n\n\n\n\n\n* BLE 4.2: Factory reset\n\n\n\n\n\n\n0.10.0\n\n\npre-GA release #3\n\n\nJune, 2016\n\n\n* Test coverage improvements\n\n\n\n\n\n\n\n\n\n\n\n\n* Support for additional Arduino boards\n\n\n\n\n\n\n\n\n\n\n\n\n* BLE 4.2: GATT based BLE profiles for Mynewt\n\n\n\n\n\n\n\n\n\n\n\n\n* BLE 4.2: Configurability improvements\n\n\n\n\n\n\n\n\n The detailed roadmap is tracked on \nJIRA for Mynewt\n. \n\n\nFeature Request\n\n\nThe WISHLIST at the top of the roadmap on \nJIRA for Mynewt\n features all the new ideas awaiting discussion and review. Once the community decides to go ahead with a request, it is scheduled into a release. Generally, effort
is made to schedule a requested feature into a particular version no later than 6 weeks prior to the planned release date.\n\n\nIf you have suggestions for a new feature, use case, or implementation improvements, file a JIRA ticket with Issue Type set to \"Wish\". Introduce it in the \ndev@\n mailing list with a link to the JIRA ticket. This assumes you have signed up for an account on JIRA and submitted a request to the dev@ mailing list for your JIRA username to be added to the Apache Mynewt (MYNEWT) project. \n\n\nFAQ\n\n\n Questions? \n Click \nhere",
"title": "About"
},
{
"location": "/about/#features",
- "text": "Apache Mynewt's open-source embedded software is designed with the following components: Mynewt OS: Real-time operating system kernel (Scheduler, Mutexes, Semaphores, etc.) Newt tool: Command line package management and build system Hardware Abstraction Layer unifying common MCU features (e.g. GPIOs, High Resolution Timers, PWM interfaces, UARTs, ADCs, etc.) Board Support Infrastructure, that defines the framework for building software for various board architectures. Image management and upgrade using the secure bootloader, and flash filesystem. System configuration that allows collection of logs and statistics for all packages (with filtering options) ranging from OS-level resources such as memory pools, priorities to interface level counters such as packet exchange and queues Core dump captures to enable remote diagnosis of device failures and hiccups Network protocol stacks First fully open-source BLE 4.2 stack Support for PDUs of up to 251 byte
s for high throughput Support for all 4 roles to be run concurrently - Broadcaster, Observer, Peripheral, Central Random addresses for link-layer security Security Manager Protocol LE Secure Connections",
+ "text": "Apache Mynewt's open-source embedded software is designed with the following components: Mynewt OS: Real-time operating system kernel (Scheduler, Mutexes, Semaphores, etc.) Newt tool: Command line package management and build system Hardware Abstraction Layer unifying common MCU features (e.g. GPIOs, High Resolution Timers, PWM interfaces, UARTs, ADCs, etc.) Board Support Infrastructure, that defines the framework for building software for various board architectures. Image management and upgrade using the secure bootloader, and flash filesystem. System configuration that allows collection of logs and statistics for all packages (with filtering options) ranging from OS-level resources such as memory pools, priorities to interface level counters such as packet exchange and queues Core dump captures to enable remote diagnosis of device failures and hiccups Network protocol stacks World's first fully open-source BLE 4.2 stack Support for PDUs of up to
251 bytes for high throughput Support for all 4 roles to be run concurrently - Broadcaster, Observer, Peripheral, Central Random addresses for link-layer security Security Manager Protocol LE Secure Connections",
"title": "Features"
},
{
"location": "/about/#roadmap",
- "text": "Release Version Descriptor Date Features 0.8.0b2 Beta #2 before pre-GA release #1 mid-March, 2016 * Arduino Zero support * OS Time * Several new tutorials for OS * Tutorials for BLE 4.2 * BLE 4.2: Random static address 0.8.0 pre-GA release #1 mid-April, 2016 * HAL extensions in OS * Arduino DUE support * Image verification * BLE 4.2 stats and logs * Crash dump capture and retrieval 0.9.0b1 Beta before pre-GA release #2 mid-May, 2016 * Support images in external flash * Support for low power modes in multiple SoCs * BLE 4.2: LE legacy pairing * BLE 4.2: LE Secure Connections * BLE 4.2: Host and Controller separation * BLE 4.2: Random private resolvable addresses * BLE 4.2 stats and logs 0.9.0 pre-GA release #2 mid-June, 2016 * Test coverage improvements * BLE 4.2: GATT based BLE profiles for Mynewt * BLE 4.2: Configurability improvements
The detailed roadmap is tracked on JIRA for Mynewt .",
+ "text": "Release Version Descriptor Date Features 0.8.0 pre-GA release #1 late-April, 2016 * HAL extensions in OS * Arduino DUE support * Image verification * Stats and logs enhancement * HAL additions: ADC, DAC, I2C, PWM, SPI * BLE 4.2: LE legacy pairing * BLE 4.2: Code size optimization 0.9.0 pre-GA release #2 May, 2016 * Support images in external flash * System watchdog * Support for low power modes in multiple SoCs * BLE 4.2: LE Secure Connections * BLE 4.2: Host and Controller separation * BLE 4.2: Random private resolvable addresses * BLE 4.2: Remote configuration, upgrade, factory reset over BLE 4.2 * BLE 4.2: Factory reset 0.10.0 pre-GA release #3 June, 2016 * Test coverage improvements * Support for additional Arduino boards * BLE 4.2: GATT based BLE profiles for Mynewt * BLE 4.2: Configurability improvements The detailed roadmap is tracke
d on JIRA for Mynewt .",
"title": "Roadmap"
},
{
@@ -107,12 +107,12 @@
},
{
"location": "/os/get_started/docker/",
- "text": "Everything You Need in a Docker Container\n\n\nDocker provides a quick and easy way to get up and running with Mynewt. The\nnewt command line tool and the entire build toolchain is available in a single\ndocker container. The container is all that's needed to run your Mynewt based\napplication in the simulator. Enabling USB2 with your docker installation will\nallow you to load your application on a supported device.\n\n\n\n\nInstall Docker\n\n\nInstall docker for your platform. \nMac OS X\n / \nWindows\n / \nLinux\n\n\nMake sure to double click the Docker Quickstart Terminal application if you're on Mac or Windows.\n\n\n\n\nUse the newt wrapper script\n\n\nUse the newt wrapper script to invoke newt. Create the following file, name it\n\nnewt\n, make it executable, and put it in your path. This will allow you to run newt as if it was natively installed. You can now follow the normal tutorials using the newt wrapper script.\n\n\n#!/bin/bash\n\n\ndocker run -ti
--rm --device\n=\n/dev/bus/usb --privileged -v \n$(pwd)\n:/workspace -w /workspace mynewt/newt:latest /newt \n$@\n\n\n\n\n\n\n\n\nNote 1:\n Remember to point to the correct subdirectory level when invoking \nnewt\n. For example, invoke it using \n../newt\n in the example below.\n\n\nuser@~/dockertest$ ls\nmyproj newt\nuser@~/dockertest$ cd myproj\n\nuser@~/dockertest/myproj$ ../newt version\n\nApache Newt (incubating) version: 0.8.0-b2\n\n\n\n\n\n\n\nNote 2:\n You can upgrade your container by running \ndocker pull mynewt/newt:latest\n when updates are made available.\n\n\n\n\nEnable USB2 Support for Mac or Windows\n\n\nIf you plan on loading your application on an actual device, do the steps below.\n\n\n\n\nInstall VirtualBox extension pack\n\n\nDocker uses a VirtualBox Linux VM to run containers. A free VirtualBox\nextension pack is required to enable USB2 support. Download the \nVirtualBox\n5.0.16 Oracle VM VirtualBox Extension\nPack\n\nand double click to install\n\n\n\n\nEn
able USB2 and select your device\n\n\n\n\n\n\nThe \"default\" VM created by docker-machine must first be stopped before you\n can enable USB2. You have two options:\n\n\n\n\nRun the command \ndocker-machine stop default\n in the terminal window or\n\n\nUse the VirtualBox UI. Right click on \ndefault\n -\n Close -\n Power Off\n\n\n\n\n\n\n\n\nEnable USB2 using the VirtualBox UI. Select the \"default\"\n VM-\nSettings-\nPorts-\nUSB2 to enable USB2. Add your device to the USB Device\n Filters to make the device visible in the docker container. See the image below.\n\n\n\n\n\n\n\n\n\n\nRestart the \"default\" VM. You have two options:\n\n\nRun \ndocker-machine start default\n in the terminal window or \n\n\nUse the VirtualBox UI. Make sure the \"default\" machine is highlighted. Click the green \"Start\" button. Select \"Headless Start\".\n\n\n\n\n\n\n\n\n\n\nNote 3\n: When working with actual hardware, remember that each board has an ID. If you swap boards and do not refresh the
USB Device Filter on the VirtualBox UI, the ID might be stale and the Docker instance may not be able to see the board correctly. For example, you may see an error message like \nError: unable to find CMSIS-DAP device\n when you try to load or run an image on the board. In that case, you need to click on the USB link in VirtualBox UI, remove the existing USB Device Filter (e.g. \"Atmel Corp. EDBG CMSIS-DAP[0101]\") by clicking on the \"Removes selected USB filter\" button, and add a new filter by clicking on the \"Adds new USB filter\" button.",
+ "text": "Everything You Need in a Docker Container\n\n\nDocker provides a quick and easy way to get up and running with Mynewt. The\nnewt command line tool and the entire build toolchain is available in a single\ndocker container. The container is all that's needed to run your Mynewt based\napplication in the simulator. Enabling USB2 with your docker installation will\nallow you to load your application on a supported device.\n\n\nThe Docker is the only supported option if you are working on a Windows machine. If you are using Mac OS X or Linux, you have the choice of installing a Docker container of tools and toolchains or installing them natively. This chapter describes how to set up the Docker image for all three platforms.\n\n\n\n\nInstall Docker\n\n\nInstall docker for your platform. \nMac OS X\n / \nWindows\n / \nLinux\n\n\nMake sure to double click the Docker Quickstart Terminal application if you're on Mac or Windows.\n\n\n\n\nUse the newt wrapper script\n\n\nUs
e the newt wrapper script to invoke newt. Create the following file, name it\n\nnewt\n, make it executable, and put it in your path. This will allow you to run newt as if it was natively installed. You can now follow the normal tutorials using the newt wrapper script.\n\n\n#!/bin/bash\n\n\ndocker run -ti --rm --device\n=\n/dev/bus/usb --privileged -v \n$(pwd)\n:/workspace -w /workspace mynewt/newt:latest /newt \n$@\n\n\n\n\n\n\n\n\nNote 1:\n Remember to point to the correct subdirectory level when invoking \nnewt\n. For example, invoke it using \n../newt\n in the example below.\n\n\nuser@~/dockertest$ ls\nmyproj newt\nuser@~/dockertest$ cd myproj\n\nuser@~/dockertest/myproj$ ../newt version\n\nApache Newt (incubating) version: 0.8.0-b2\n\n\n\n\n\n\n\nNote 2:\n You can upgrade your container by running \ndocker pull mynewt/newt:latest\n when updates are made available.\n\n\n\n\nEnable USB2 Support for Mac or Windows\n\n\nIf you plan on loading your application on an actual device,
do the steps below.\n\n\n\n\nInstall VirtualBox extension pack\n\n\nDocker uses a VirtualBox Linux VM to run containers. A free VirtualBox\nextension pack is required to enable USB2 support. Download the \nVirtualBox\n5.0.16 Oracle VM VirtualBox Extension\nPack\n\nand double click to install\n\n\n\n\nEnable USB2 and select your device\n\n\n\n\n\n\nThe \"default\" VM created by docker-machine must first be stopped before you\n can enable USB2. You have two options:\n\n\n\n\nRun the command \ndocker-machine stop default\n in the terminal window or\n\n\nUse the VirtualBox UI. Right click on \ndefault\n -\n Close -\n Power Off\n\n\n\n\n\n\n\n\nEnable USB2 using the VirtualBox UI. Select the \"default\"\n VM-\nSettings-\nPorts-\nUSB2 to enable USB2. Add your device to the USB Device\n Filters to make the device visible in the docker container. See the image below.\n\n\n\n\n\n\n\n\n\n\nRestart the \"default\" VM. You have two options:\n\n\nRun \ndocker-machine start default\n in
the terminal window or \n\n\nUse the VirtualBox UI. Make sure the \"default\" machine is highlighted. Click the green \"Start\" button. Select \"Headless Start\".\n\n\n\n\n\n\n\n\n\n\nNote 3\n: When working with actual hardware, remember that each board has an ID. If you swap boards and do not refresh the USB Device Filter on the VirtualBox UI, the ID might be stale and the Docker instance may not be able to see the board correctly. For example, you may see an error message like \nError: unable to find CMSIS-DAP device\n when you try to load or run an image on the board. In that case, you need to click on the USB link in VirtualBox UI, remove the existing USB Device Filter (e.g. \"Atmel Corp. EDBG CMSIS-DAP[0101]\") by clicking on the \"Removes selected USB filter\" button, and add a new filter by clicking on the \"Adds new USB filter\" button.",
"title": "All-in-one Docker Container"
},
{
"location": "/os/get_started/docker/#everything-you-need-in-a-docker-container",
- "text": "Docker provides a quick and easy way to get up and running with Mynewt. The\nnewt command line tool and the entire build toolchain is available in a single\ndocker container. The container is all that's needed to run your Mynewt based\napplication in the simulator. Enabling USB2 with your docker installation will\nallow you to load your application on a supported device.",
+ "text": "Docker provides a quick and easy way to get up and running with Mynewt. The\nnewt command line tool and the entire build toolchain is available in a single\ndocker container. The container is all that's needed to run your Mynewt based\napplication in the simulator. Enabling USB2 with your docker installation will\nallow you to load your application on a supported device. The Docker is the only supported option if you are working on a Windows machine. If you are using Mac OS X or Linux, you have the choice of installing a Docker container of tools and toolchains or installing them natively. This chapter describes how to set up the Docker image for all three platforms.",
"title": "Everything You Need in a Docker Container"
},
{
@@ -142,7 +142,7 @@
},
{
"location": "/os/get_started/native_tools/",
- "text": "Installing Native Mynewt Tools\n\n\nThis page shows how to install tools for native Mynewt targets (simulated targets on your laptop/computer) without using a Docker container. In other words, it allows you to run Mynewt OS as a native application on your Mac or Linux machine to simulate a target and use the Newt tool running natively on your machine to manage the simulated target. It also allows you to run the test suites for all packages not requiring HW support. You may choose to do this instead of using the build toolchain and Newt tool available in a Docker container.\n\n\nThis page provides guidance for MAC and Linux. See the relevant sections below.\n\n\n\n\nSet up toolchain for Mac\n\n\nInstall Brew\n\n\nIf you have not already installed Homebrew from the \n\nnewt\n tutorials pages\n, install it. \n\n\n\n\nInstall gcc/libc\n\n\nOS X ships with a C compiler called Clang. To build applications for the Mynewt simulator, you will need a different compiler:
gcc.\n\n\n$ brew install gcc\n...\n...\n==\n Summary\n\ud83c\udf7a /usr/local/Cellar/gcc/5.2.0: 1353 files, 248M\n\n\n\n\n\n\n\nInstall gdb\n\n\n$ brew install gdb\n...\n...\n==\n Summary\n\ud83c\udf7a /usr/local/Cellar/gdb/7.10.1: XXX files,YYM\n\n\n\n\n\n\n\nNOTE:\n When running a program with gdb, you may need to sign your gdb\nexecutable. \nThis page\n\nshows a recipe for gdb signing. Alternately you can skip this step and\ncontinue without the ability to debug your mynewt application on your PC.*\n\n\n\n\nSet up toolchain for Linux\n\n\nThe below procedure can be used to set up a Debian-based Linux system (e.g.,\nUbuntu). If you are running a different Linux distribution, you will need to\nsubstitute invocations of \napt-get\n in the below steps with the package manager\nthat your distro uses.\n\n\n\n\nInstall gcc/libc that will produce 32-bit executables:\n\n\n$ sudo apt-get install gcc-multilib libc6-i386\n\n\n\n\n\n\n\nInstall gdb\n\n\n$ sudo apt-get install gdb\n\nReadi
ng package lists... Done\nBuilding dependency tree \nReading state information... Done\nSuggested packages:\n gdb-doc gdbserver\nThe following NEW packages will be installed:\n gdb\n...\nProcessing triggers for man-db (2.6.7.1-1ubuntu1) ...\nSetting up gdb (7.7.1-0ubuntu5~14.04.2) ...\n\n\n\n\n\n\n\nAt this point you have installed all the necessary software to build and test code on a simluator running on your Mac or Linux. Proceed to the \nBuild test code on simulator\n section.",
+ "text": "Installing Native Mynewt Tools\n\n\nThis page shows how to install tools for native Mynewt targets (simulated targets on your laptop/computer) without using a Docker container. In other words, it allows you to run Mynewt OS as a native application on your Mac or Linux machine to simulate a target and use the Newt tool running natively on your machine to manage the simulated target. It also allows you to run the test suites for all packages not requiring HW support. You may choose to do this instead of using the build toolchain and Newt tool available in a Docker container.\n\n\nThis page provides guidance for MAC and Linux. See the relevant sections below.\n\n\n\n\nSet up toolchain for Mac\n\n\nInstall Brew\n\n\nIf you have not already installed Homebrew from the \n\nnewt\n tutorials pages\n, install it. \n\n\n\n\nInstall gcc/libc\n\n\nOS X ships with a C compiler called Clang. To build applications for the Mynewt simulator, you will need a different compiler:
gcc.\n\n\n$ brew install gcc\n...\n...\n==\n Summary\n\ud83c\udf7a /usr/local/Cellar/gcc/5.2.0: 1353 files, 248M\n\n\n\n\n\n\n\nInstall gdb\n\n\n$ brew install gdb\n...\n...\n==\n Summary\n\ud83c\udf7a /usr/local/Cellar/gdb/7.10.1: XXX files,YYM\n\n\n\n\n\n\n\nNOTE:\n When running a program with gdb, you may need to sign your gdb\nexecutable. \nThis page\n\nshows a recipe for gdb signing. Alternately you can skip this step and\ncontinue without the ability to debug your mynewt application on your PC.*\n\n\n\n\nSet up toolchain for Linux\n\n\nThe below procedure can be used to set up a Debian-based Linux system (e.g.,\nUbuntu). If you are running a different Linux distribution, you will need to\nsubstitute invocations of \napt-get\n in the below steps with the package manager\nthat your distro uses.\n\n\n\n\nInstall gcc/libc that will produce 32-bit executables:\n\n\n$ sudo apt-get install gcc-multilib libc6-i386\n\n\n\n\n\n\n\nInstall gdb\n\n\n$ sudo apt-get install gdb\n\nReadi
ng package lists... Done\nBuilding dependency tree \nReading state information... Done\nSuggested packages:\n gdb-doc gdbserver\nThe following NEW packages will be installed:\n gdb\n...\nProcessing triggers for man-db (2.6.7.1-1ubuntu1) ...\nSetting up gdb (7.7.1-0ubuntu5~14.04.2) ...\n\n\n\n\n\n\n\nAt this point you have installed all the necessary software to build and test code on a simluator running on your Mac or Linux. Proceed to the \nCreate Your First Project\n section.",
"title": "Install Native Tools"
},
{
@@ -182,7 +182,7 @@
},
{
"location": "/os/get_started/native_tools/#install-gdb_1",
- "text": "$ sudo apt-get install gdb\n\nReading package lists... Done\nBuilding dependency tree \nReading state information... Done\nSuggested packages:\n gdb-doc gdbserver\nThe following NEW packages will be installed:\n gdb\n...\nProcessing triggers for man-db (2.6.7.1-1ubuntu1) ...\nSetting up gdb (7.7.1-0ubuntu5~14.04.2) ... At this point you have installed all the necessary software to build and test code on a simluator running on your Mac or Linux. Proceed to the Build test code on simulator section.",
+ "text": "$ sudo apt-get install gdb\n\nReading package lists... Done\nBuilding dependency tree \nReading state information... Done\nSuggested packages:\n gdb-doc gdbserver\nThe following NEW packages will be installed:\n gdb\n...\nProcessing triggers for man-db (2.6.7.1-1ubuntu1) ...\nSetting up gdb (7.7.1-0ubuntu5~14.04.2) ... At this point you have installed all the necessary software to build and test code on a simluator running on your Mac or Linux. Proceed to the Create Your First Project section.",
"title": "Install gdb"
},
{
@@ -292,17 +292,27 @@
},
{
"location": "/os/tutorials/tutorials/",
- "text": "Tutorials\n\n\nIf the introduction to Mynewt has piqued your interest and you want to familiarize yourself with some of its functionality, this series of tutorials is for you. The lessons are aimed at the beginner. \n\n\nHere is a sampler of the tutorials available. New ones are being constantly added and can be seen in the navigation bar on the left.\n\n\n\n\nBlinky on Arduino Zero hardware\n\n\nBlinky on Olimex/STM32F407ZGT6 Cortex-M4 hardware\n\n\nBlinky on STM32F3 discovery kit from ST Micro\n\n\nBlinky on nRF52 Development Kit from Nordic Semiconductor\n \nNote:\n This supports BLE.\n\n\nAdd a unit Test for a Package\n\n\nAdd an air-quality sensor\n \n\n\nAdditional Repositories\n\n\nA task to manage multiple events\n\n\n\n\nSend us an email on the dev@ mailing list if you have comments or suggestions!\n If you haven't joined the mailing list, you will find the links \nhere\n.",
+ "text": "Tutorials\n\n\nIf the introduction to Mynewt has piqued your interest and you want to familiarize yourself with some of its functionality, this series of tutorials is for you. The lessons are aimed at the beginner. \n\n\nThe full list of tutorials can be seen in the navigation bar on the left. New ones are being constantly added and will show up there automatically.\n\n\nPrerequisites:\n\n\n\n\nYou have installed Docker container of Newt tool and toolchains or you have installed them natively on your machine\n\n\nYou have created a new project space (directory structure) and populated it with the core code repository (apache-mynewt-core) or know how to as explained in ../get_started/project_create.\n\n\n\n\nTutorial categories:\n\n\nThe tutorials fall into a few broad categories. Some examples in each category are listed below.\n\n\n\n\n\n\nMaking an LED blink (the \"Hello World\" equivalent in the electronics world)\n\n\n\n\nBlinky on Arduino Zero hardware\n\n\
nBlinky on Olimex/STM32F407ZGT6 Cortex-M4 hardware\n\n\nBlinky on STM32F3 discovery kit from ST Micro\n\n\nBlinky on nRF52 Development Kit from Nordic Semiconductor\n \nNote:\n This supports BLE.\n\n\n\n\n\n\n\n\nNavigating the code and adding functionality \n\n\n\n\nAdding more repositories to your project\n\n\nAdding a unit test for a package\n\n\nAdding task to manage multiple events\n\n\n\n\n\n\n\n\nBluetooth Low Energy\n\n\n\n\nRunning the example BLE app included in the repo\n\n\n\n\n\n\n\n\nUsing NewtMgr \n\n\n\n\nEnabling remote communication with a device running Mynewt OS\n\n\n\n\n\n\n\n\nSend us an email on the dev@ mailing list if you have comments or suggestions!\n If you haven't joined the mailing list, you will find the links \nhere\n.",
"title": "toc"
},
{
"location": "/os/tutorials/tutorials/#tutorials",
- "text": "If the introduction to Mynewt has piqued your interest and you want to familiarize yourself with some of its functionality, this series of tutorials is for you. The lessons are aimed at the beginner. Here is a sampler of the tutorials available. New ones are being constantly added and can be seen in the navigation bar on the left. Blinky on Arduino Zero hardware Blinky on Olimex/STM32F407ZGT6 Cortex-M4 hardware Blinky on STM32F3 discovery kit from ST Micro Blinky on nRF52 Development Kit from Nordic Semiconductor Note: This supports BLE. Add a unit Test for a Package Add an air-quality sensor Additional Repositories A task to manage multiple events Send us an email on the dev@ mailing list if you have comments or suggestions! If you haven't joined the mailing list, you will find the links here .",
+ "text": "If the introduction to Mynewt has piqued your interest and you want to familiarize yourself with some of its functionality, this series of tutorials is for you. The lessons are aimed at the beginner. The full list of tutorials can be seen in the navigation bar on the left. New ones are being constantly added and will show up there automatically.",
"title": "Tutorials"
},
{
+ "location": "/os/tutorials/tutorials/#prerequisites",
+ "text": "You have installed Docker container of Newt tool and toolchains or you have installed them natively on your machine You have created a new project space (directory structure) and populated it with the core code repository (apache-mynewt-core) or know how to as explained in ../get_started/project_create.",
+ "title": "Prerequisites:"
+ },
+ {
+ "location": "/os/tutorials/tutorials/#tutorial-categories",
+ "text": "The tutorials fall into a few broad categories. Some examples in each category are listed below. Making an LED blink (the \"Hello World\" equivalent in the electronics world) Blinky on Arduino Zero hardware Blinky on Olimex/STM32F407ZGT6 Cortex-M4 hardware Blinky on STM32F3 discovery kit from ST Micro Blinky on nRF52 Development Kit from Nordic Semiconductor Note: This supports BLE. Navigating the code and adding functionality Adding more repositories to your project Adding a unit test for a package Adding task to manage multiple events Bluetooth Low Energy Running the example BLE app included in the repo Using NewtMgr Enabling remote communication with a device running Mynewt OS Send us an email on the dev@ mailing list if you have comments or suggestions! If you haven't joined the mailing list, you will find the links here .",
+ "title": "Tutorial categories:"
+ },
+ {
"location": "/os/tutorials/arduino_zero/",
- "text": "Running Mynewt on Arduino Zero\n\n\nThis tutorial describes how to run Mynewt OS on Arduino Zero. Follow these simple steps and your board will be blinking in no time!\n\n\nPrerequisites\n\n\nBefore tackling this tutorial, it's best to read about Mynewt in the \nIntroduction\n section of this documentation.\n\n\nEquipment\n\n\nYou will need the following equipment\n\n\n\n\nAn Arduino Zero board. NOTE: There are many flavors of Arduino. Ensure that \nyou have an Arduino Zero. See below for the verions of Arduino Zero that are\ncompatible with this tutorial\n\n\nA computer that can connect to the Arduino Zero over USB\n\n\nA USB cable (Type A to micro B) that can connect the computer to the Arduino\n\n\nThe Mynewt Release\n\n\n\n\nThis tutorial has been tested on the following two Arduino Zero boards - Zero and Zero-Pro.\n\n\n\n\n\n\nInstall Mynewt and Newt\n\n\n\n\nIf you have not already done so, install Newt as shown in the \nNewt install tutorial\n\n\nIf you
have not already done so, create a project as shown in the Quick Start guide on how to \nCreate Your First Project\n. Skip the testing and building the project steps in that tutorial since you will be defining a target for your Arduino board in this tutorial.\n\n\n\n\n\n\nFetch External Packages\n\n\nMynewt uses source code provided directly from the chip manufacturer for \nlow level operations. Sometimes this code is licensed only for the specific manufacturer of the chipset and cannot live in the Apache Mynewt repository. That happens to be the case for the Arduino Zero board which uses Atmel SAMD21. Runtime's github repository hosts such external third-party packages and the Newt tool can fetch them.\n\n\nTo fetch the package with MCU support for Atmel SAMD21 for Arduino Zero from the Runtime git repository, you need to add \nthe repository to the \nproject.yml\n file in your base project directory.\n\n\nHere is an example \nproject.yml\n file with the Arduino Zero repository\nad
ded. The sections with \nmynewt_arduino_zero\n that need to be added to \nyour project file are highlighted.\n\n\n$ more project.yml \nproject.name: \nmy_project\n\n\nproject.repositories:\n - apache-mynewt-core\n\n - mynewt_arduino_zero\n\n\nrepository.apache-mynewt-core:\n type: github\n vers: 0-latest\n user: apache\n repo: incubator-mynewt-core\n\n\nrepository.mynewt_arduino_zero:\n\n type: github\n\n vers: 0-latest\n\n user: runtimeinc\n\n repo: mynewt_arduino_zero\n\n$ \n\n\n\n\n\n\n\nOnce you've edited your \nproject.yml\n file, the next step is to install the \nproject dependencies, this can be done with the \nnewt install\n command \n(to see more output, provide the \n-v\n verbose option.): \n\n\n$ newt install \napache-mynewt-core\nmynewt_arduino_zero\n$\n\n\n\n\n\n\n\nCreate your bootloader target\n\n\nNext, you need to tell Newt what to build. For the Arduino Zero, we are going to \ngenerate both a bootloader, and an image target.\n\n\nTo g
enerate the bootloader target, you need to specify the following options. The output of the commands (indicating success) have been suppressed for easier readability. \n\n\n$ newt target create arduino_boot \n$ newt target set arduino_boot bsp=@mynewt_arduino_zero/hw/bsp/arduino_zero \n$ newt target set arduino_boot app=@apache-mynewt-core/apps/boot \n$ newt target set arduino_boot build_profile=optimized\n\n\n\n\n\n\n\nIf you have an Arduino Zero Pro, you have to set the following next:\n\n\n$ newt target set arduino_boot features=arduino_zero_pro \n\n\n\n\n\nIf you have an Arduino Zero, you have to set the following instead:\n\n\n$ newt target set arduino_boot features=arduino_zero \n\n\n\n\n\n\n\nThese commands do a few things: \n\n\n\n\nCreate a target named \narduino_boot\n, in order to build the Arduino Zero Bootloader.\n\n\nSet the application for the \narduino_boot\n target to the default Apache Mynewt \n bootloader (\n@apache-mynewt-core/apps/boot\n)\n\n\nSet the board s
upport package for the target to \n \n@mynewt_arduino_zero/hw/bsp/arduino_zero\n. This is a reference to the downloaded \n Arduino Zero support from Github.\n\n\nUse the \"optimized\" build profile for the \narduino_boot\n target. This\n instructs Newt to generate smaller and more efficient code for this target.\n This setting is necessary due to the bootloader's strict size constraints.\n\n\nTells the Board Support Package to enable support for the Arduino Zero Pro or the Arduino Zero. Set it to \narduino_zero\n or \narduino_zero_pro\n depending on the board you have.\n\n\n\n\n\n\nBuild your bootloader\n\n\nOnce you've configured the bootloader target, the next step is to build the bootloader for your Arduino. You can do this by using the \nnewt build\n command:\n\n\n$ newt build arduino_boot \nCompiling asprintf.c\nCompiling atoi.c\nCompiling atol.c\nCompiling atoll.c\nCompiling bsearch.c\nCompiling bzero.c\nCompiling calloc.c\nCompiling fgets.c\nCompiling inline.c\n
\nsnip\n\nApp successfully built: myproject/bin/arduino_boot/apps/boot/boot.elf\n\n\n\n\n\nIf this command finishes successfully, you have successfully built the Arduino \nbootloader, and the next step is to build your application for the Arduino \nboard.\n\n\n\n\nBuild your blinky app\n\n\nTo create and download your application, you create another target, this one pointing to the application you want to download to the Arduino board. In this tutorial, we will use the default application that comes with your project, \napps/blinky\n:\n\n\nNote\n: Remember to set features to \narduino_zero\n if your board is Arduino Zero and not a Pro!\n\n\n$ newt target create arduino_blinky \nTarget targets/arduino_blinky successfully created\n$ newt target set arduino_blinky app=apps/blinky \nTarget targets/arduino_blinky successfully set target.app to apps/blinky\n$ newt target set arduino_blinky bsp=@mynewt_arduino_zero/hw/bsp/arduino_zero\nTarget targets/arduino_blinky successfully set targe
t.bsp to @mynewt_arduino_zero/hw/bsp/arduino_zero\n$ newt target set arduino_blinky build_profile=debug \nTarget targets/arduino_blinky successfully set target.build_profile to debug\n\n$ newt target set arduino_blinky features=arduino_zero_pro \n\nTarget targets/arduino_blinky successfully set pkg.features to arduino_zero_pro\n$ \n\n\n\n\n\n\n\nYou can now build the target, with \nnewt build\n: \n\n\n$ newt build arduino_blinky \nCompiling main.c\nArchiving blinky.a\nCompiling cons_fmt.c\nCompiling cons_tty.c\nArchiving full.a\nCompiling case.c\nCompiling suite.c\nCompiling testutil.c\nArchiving testutil.a\n\nsnip\n\nApp successfully built: myproject/bin/arduino_blinky/apps/blinky/blinky.elf\n\n\n\n\n\n Congratulations! \n You have successfully built your application. Now it's time to load both the bootloader and application onto the target.\n\n\n\n\nConnect the Target\n\n\nConnect your computer to the Arduino Zero (from now on we'll call this the \ntarget) with the Micro-USB cable
through the Programming Port as shown below. \nMynewt will download and debug the target through this port. You should see a \nlittle green LED come on. That means the board has power.\n\n\nNo external debugger is required. The Arduino Zero comes with an internal\ndebugger that can be accessed by Mynewt.\n\n\nA image below shows the Arduino Zero Programming Port.\n\n\n\n\n\n\n\n\nDownload the Bootloader\n\n\nExecute the command to download the bootloader. \n\n\n \n$\n \nnewt\n \nload\n \narduino_boot\n\n\n\n\n\n\nIf the newt tool finishes without error, that means the bootloader has been \nsuccessfully loaded onto the target.\n\n\n\n\n Reminder if you are using Docker: \n When working with actual hardware, remember that each board has an ID. If you swap boards and do not refresh the USB Device Filter on the VirtualBox UI, the ID might be stale and the Docker instance may not be able to see the board correctly. For example, you may see an error message like \nError: unable to fi
nd CMSIS-DAP device\n when you try to load or run an image on the board. In that case, you need to click on the USB link in VirtualBox UI, remove the existing USB Device Filter (e.g. \"Atmel Corp. EDBG CMSIS-DAP[0101]\") by clicking on the \"Removes selected USB filter\" button, and add a new filter by clicking on the \"Adds new USB filter\" button.\n\n\n\n\nRun the Image\n\n\nNow that the bootloader is downloaded to the target, the next step is to load \nyour image onto the Arduino Zero. The easiest way to do this, is to use the \n\nnewt run\n command. \nnewt run\n will automatically rebuild your program\n(if necessary), create an image, and load it onto the target device.\n\n\nHere, we will load our \narduino_blinky\n target onto the device, and we \nshould see it run:\n\n\n$ newt run arduino_blinky 0.0.0 \nDebugging myproject/bin/arduino_blinky/apps/blinky/blinky.elf\nOpen On-Chip Debugger 0.9.0 (2015-09-23-21:46)\nLicensed under GNU GPL v2\nFor bug reports, read\n http://op
enocd.org/doc/doxygen/bugs.html\nInfo : only one transport option; autoselect \nswd\n\nadapter speed: 500 kHz\nadapter_nsrst_delay: 100\ncortex_m reset_config sysresetreq\nInfo : CMSIS-DAP: SWD Supported\nInfo : CMSIS-DAP: JTAG Supported\nInfo : CMSIS-DAP: Interface Initialised (SWD)\nInfo : CMSIS-DAP: FW Version = 01.1F.0118\nInfo : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 1 TDO = 1 nTRST = 0 nRESET = 1\nInfo : CMSIS-DAP: Interface ready\nInfo : clock speed 500 kHz\nInfo : SWD IDCODE 0x0bc11477\nInfo : at91samd21g18.cpu: hardware has 4 breakpoints, 2 watchpoints\nGNU gdb (GNU Tools for ARM Embedded Processors) 7.8.0.20150604-cvs\nCopyright (C) 2014 Free Software Foundation, Inc.\nLicense GPLv3+: GNU GPL version 3 or later \nhttp://gnu.org/licenses/gpl.html\n\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law. Type \nshow copying\n\nand \nshow warranty\n for details.\nThis GDB was configured as \n--host=x86_64-apple-d
arwin10 --target=arm-none-eabi\n.\nType \nshow configuration\n for configuration details.\nFor bug reporting instructions, please see:\n\nhttp://www.gnu.org/software/gdb/bugs/\n.\nFind the GDB manual and other documentation resources online at:\n\nhttp://www.gnu.org/software/gdb/documentation/\n.\nFor help, type \nhelp\n.\nType \napropos word\n to search for commands related to \nword\n...\nReading symbols from myproject/bin/arduino_blinky/apps/blinky/blinky.elf...done.\ntarget state: halted\ntarget halted due to debug-request, current mode: Thread \nxPSR: 0x21000000 pc: 0x0000030e msp: 0x20008000\nInfo : accepting \ngdb\n connection on tcp/3333\nInfo : SAMD MCU: SAMD21G18A (256KB Flash, 32KB RAM)\n0x0000030e in ?? ()\n(gdb) r\nThe \nremote\n target does not support \nrun\n. Try \nhelp target\n or \ncontinue\n.\n(gdb) c\nContinuing.\n\n\n\n\n\n\n\nNOTE:\n The 0.0.0 specified after the target name to \nnewt run\n is the version \nof the image to load. If you are not providing remot
e upgrade, and are just \ndeveloping locally, you can provide 0.0.0 for every image version.\n\n\nIf you want the image to run without the debugger connected, simply quit the \ndebugger and restart the board. The image you programmed will come and run on the Arduino on next boot! \n\n\n\n\nWatch the LED blink\n\n\nCongratulations! You have created a Mynewt operating system running on the \nArduino Zero. The LED right next to the power LED should be blinking. It is toggled by one task running on the Mynewt OS.",
+ "text": "Running Mynewt on Arduino Zero\n\n\nThis tutorial describes how to run Mynewt OS on Arduino Zero. Follow these simple steps and your board will be blinking in no time!\n\n\nPrerequisites\n\n\nBefore tackling this tutorial, it's best to read about Mynewt in the \nIntroduction\n section of this documentation.\n\n\nEquipment\n\n\nYou will need the following equipment\n\n\n\n\nAn Arduino Zero board. NOTE: There are many flavors of Arduino. Ensure that \nyou have an Arduino Zero. See below for the versions of Arduino Zero that are\ncompatible with this tutorial\n\n\nA computer that can connect to the Arduino Zero over USB\n\n\nA USB cable (Type A to micro B) that can connect the computer to the Arduino\n\n\nThe Mynewt Release\n\n\n\n\nThis tutorial has been tested on the following three Arduino Zero boards - Zero, M0 Pro, and Zero-Pro.\n\n\n\n\n\n\n\n\nMynewt has not been tested on Arduino M0 which has no internal debugger support.\n\n\nInstall Mynewt and Newt\n\n\n
\n\nIf you have not already done so, install Newt as shown in the \nNewt install tutorial\n\n\nIf you have not already done so, create a project as shown in the Quick Start guide on how to \nCreate Your First Project\n. Skip the testing and building the project steps in that tutorial since you will be defining a target for your Arduino board in this tutorial.\n\n\n\n\n\n\nFetch External Packages\n\n\nMynewt uses source code provided directly from the chip manufacturer for \nlow level operations. Sometimes this code is licensed only for the specific manufacturer of the chipset and cannot live in the Apache Mynewt repository. That happens to be the case for the Arduino Zero board which uses Atmel SAMD21. Runtime's github repository hosts such external third-party packages and the Newt tool can fetch them.\n\n\nTo fetch the package with MCU support for Atmel SAMD21 for Arduino Zero from the Runtime git repository, you need to add \nthe repository to the \nproject.yml\n file in your bas
e project directory.\n\n\nHere is an example \nproject.yml\n file with the Arduino Zero repository\nadded. The sections with \nmynewt_arduino_zero\n that need to be added to \nyour project file are highlighted.\n\n\n$ more project.yml \nproject.name: \nmy_project\n\n\nproject.repositories:\n - apache-mynewt-core\n\n - mynewt_arduino_zero\n\n\nrepository.apache-mynewt-core:\n type: github\n vers: 0-latest\n user: apache\n repo: incubator-mynewt-core\n\n\nrepository.mynewt_arduino_zero:\n\n type: github\n\n vers: 0-latest\n\n user: runtimeinc\n\n repo: mynewt_arduino_zero\n\n$ \n\n\n\n\n\n\n\nOnce you've edited your \nproject.yml\n file, the next step is to install the \nproject dependencies, this can be done with the \nnewt install\n command \n(to see more output, provide the \n-v\n verbose option.): \n\n\n$ newt install \napache-mynewt-core\nmynewt_arduino_zero\n$\n\n\n\n\n\n\n\nCreate your bootloader target\n\n\nNext, you need to tell Newt what to buil
d. For the Arduino Zero, we are going to \ngenerate both a bootloader, and an image target.\n\n\nTo generate the bootloader target, you need to specify the following options. The output of the commands (indicating success) have been suppressed for easier readability. \n\n\n$ newt target create arduino_boot \n$ newt target set arduino_boot bsp=@mynewt_arduino_zero/hw/bsp/arduino_zero \n$ newt target set arduino_boot app=@apache-mynewt-core/apps/boot \n$ newt target set arduino_boot build_profile=optimized\n\n\n\n\n\n\n\nIf you have an Arduino Zero Pro or M0 Pro, you have to set the following next:\n\n\n$ newt target set arduino_boot features=arduino_zero_pro \n\n\n\n\n\nIf you have an Arduino Zero, you have to set the following instead:\n\n\n$ newt target set arduino_boot features=arduino_zero \n\n\n\n\n\n\n\nThese commands do a few things: \n\n\n\n\nCreate a target named \narduino_boot\n, in order to build the Arduino Zero Bootloader.\n\n\nSet the application for the \narduino_boot
\n target to the default Apache Mynewt \n bootloader (\n@apache-mynewt-core/apps/boot\n)\n\n\nSet the board support package for the target to \n \n@mynewt_arduino_zero/hw/bsp/arduino_zero\n. This is a reference to the downloaded \n Arduino Zero support from Github.\n\n\nUse the \"optimized\" build profile for the \narduino_boot\n target. This\n instructs Newt to generate smaller and more efficient code for this target.\n This setting is necessary due to the bootloader's strict size constraints.\n\n\nTells the Board Support Package to enable support for the Arduino Zero Pro or the Arduino Zero. Set it to \narduino_zero\n or \narduino_zero_pro\n depending on the board you have.\n\n\n\n\n\n\nBuild your bootloader\n\n\nOnce you've configured the bootloader target, the next step is to build the bootloader for your Arduino. You can do this by using the \nnewt build\n command:\n\n\n$ newt build arduino_boot \nCompiling asprintf.c\nCompiling atoi.c\nCompiling atol.c\nCompil
ing atoll.c\nCompiling bsearch.c\nCompiling bzero.c\nCompiling calloc.c\nCompiling fgets.c\nCompiling inline.c\n\nsnip\n\nApp successfully built: myproject/bin/arduino_boot/apps/boot/boot.elf\n\n\n\n\n\nIf this command finishes successfully, you have successfully built the Arduino \nbootloader, and the next step is to build your application for the Arduino \nboard.\n\n\n\n\nBuild your blinky app\n\n\nTo create and download your application, you create another target, this one pointing to the application you want to download to the Arduino board. In this tutorial, we will use the default application that comes with your project, \napps/blinky\n:\n\n\nNote\n: Remember to set features to \narduino_zero\n if your board is Arduino Zero and not a Pro!\n\n\n$ newt target create arduino_blinky \nTarget targets/arduino_blinky successfully created\n$ newt target set arduino_blinky app=apps/blinky \nTarget targets/arduino_blinky successfully set target.app to apps/blinky\n$ newt target set a
rduino_blinky bsp=@mynewt_arduino_zero/hw/bsp/arduino_zero\nTarget targets/arduino_blinky successfully set target.bsp to @mynewt_arduino_zero/hw/bsp/arduino_zero\n$ newt target set arduino_blinky build_profile=debug \nTarget targets/arduino_blinky successfully set target.build_profile to debug\n\n$ newt target set arduino_blinky features=arduino_zero_pro \n\nTarget targets/arduino_blinky successfully set pkg.features to arduino_zero_pro\n$ \n\n\n\n\n\n\n\nYou can now build the target, with \nnewt build\n: \n\n\n$ newt build arduino_blinky \nCompiling main.c\nArchiving blinky.a\nCompiling cons_fmt.c\nCompiling cons_tty.c\nArchiving full.a\nCompiling case.c\nCompiling suite.c\nCompiling testutil.c\nArchiving testutil.a\n\nsnip\n\nApp successfully built: myproject/bin/arduino_blinky/apps/blinky/blinky.elf\n\n\n\n\n\n Congratulations! \n You have successfully built your application. Now it's time to load both the bootloader and application onto the target.\n\n\n\n\nConnect the Target\n\
n\nConnect your computer to the Arduino Zero (from now on we'll call this the \ntarget) with the Micro-USB cable through the Programming Port as shown below. \nMynewt will download and debug the target through this port. You should see a \nlittle green LED come on. That means the board has power.\n\n\nNo external debugger is required. The Arduino Zero comes with an internal\ndebugger that can be accessed by Mynewt.\n\n\nA image below shows the Arduino Zero Programming Port.\n\n\n\n\n\n\n\n\nDownload the Bootloader\n\n\nExecute the command to download the bootloader. \n\n\n \n$\n \nnewt\n \nload\n \narduino_boot\n\n\n\n\n\n\nIf the newt tool finishes without error, that means the bootloader has been \nsuccessfully loaded onto the target.\n\n\n\n\n Reminder if you are using Docker: \n When working with actual hardware, remember that each board has an ID. If you swap boards and do not refresh the USB Device Filter on the VirtualBox UI, the ID might be stale and the Docker instance
may not be able to see the board correctly. For example, you may see an error message like \nError: unable to find CMSIS-DAP device\n when you try to load or run an image on the board. In that case, you need to click on the USB link in VirtualBox UI, remove the existing USB Device Filter (e.g. \"Atmel Corp. EDBG CMSIS-DAP[0101]\") by clicking on the \"Removes selected USB filter\" button, and add a new filter by clicking on the \"Adds new USB filter\" button.\n\n\n\n\nRun the Image\n\n\nNow that the bootloader is downloaded to the target, the next step is to load \nyour image onto the Arduino Zero. The easiest way to do this, is to use the \n\nnewt run\n command. \nnewt run\n will automatically rebuild your program\n(if necessary), create an image, and load it onto the target device.\n\n\nHere, we will load our \narduino_blinky\n target onto the device, and we \nshould see it run:\n\n\n$ newt run arduino_blinky 0.0.0 \nDebugging myproject/bin/arduino_blinky/apps/blinky/blinky.elf\
nOpen On-Chip Debugger 0.9.0 (2015-09-23-21:46)\nLicensed under GNU GPL v2\nFor bug reports, read\n http://openocd.org/doc/doxygen/bugs.html\nInfo : only one transport option; autoselect \nswd\n\nadapter speed: 500 kHz\nadapter_nsrst_delay: 100\ncortex_m reset_config sysresetreq\nInfo : CMSIS-DAP: SWD Supported\nInfo : CMSIS-DAP: JTAG Supported\nInfo : CMSIS-DAP: Interface Initialised (SWD)\nInfo : CMSIS-DAP: FW Version = 01.1F.0118\nInfo : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 1 TDO = 1 nTRST = 0 nRESET = 1\nInfo : CMSIS-DAP: Interface ready\nInfo : clock speed 500 kHz\nInfo : SWD IDCODE 0x0bc11477\nInfo : at91samd21g18.cpu: hardware has 4 breakpoints, 2 watchpoints\nGNU gdb (GNU Tools for ARM Embedded Processors) 7.8.0.20150604-cvs\nCopyright (C) 2014 Free Software Foundation, Inc.\nLicense GPLv3+: GNU GPL version 3 or later \nhttp://gnu.org/licenses/gpl.html\n\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law
. Type \nshow copying\n\nand \nshow warranty\n for details.\nThis GDB was configured as \n--host=x86_64-apple-darwin10 --target=arm-none-eabi\n.\nType \nshow configuration\n for configuration details.\nFor bug reporting instructions, please see:\n\nhttp://www.gnu.org/software/gdb/bugs/\n.\nFind the GDB manual and other documentation resources online at:\n\nhttp://www.gnu.org/software/gdb/documentation/\n.\nFor help, type \nhelp\n.\nType \napropos word\n to search for commands related to \nword\n...\nReading symbols from myproject/bin/arduino_blinky/apps/blinky/blinky.elf...done.\ntarget state: halted\ntarget halted due to debug-request, current mode: Thread \nxPSR: 0x21000000 pc: 0x0000030e msp: 0x20008000\nInfo : accepting \ngdb\n connection on tcp/3333\nInfo : SAMD MCU: SAMD21G18A (256KB Flash, 32KB RAM)\n0x0000030e in ?? ()\n(gdb) r\nThe \nremote\n target does not support \nrun\n. Try \nhelp target\n or \ncontinue\n.\n(gdb) c\nContinuing.\n\n\n\n\n\n\n\nNOTE:\n The 0.0.0 specif
ied after the target name to \nnewt run\n is the version \nof the image to load. If you are not providing remote upgrade, and are just \ndeveloping locally, you can provide 0.0.0 for every image version.\n\n\nIf you want the image to run without the debugger connected, simply quit the \ndebugger and restart the board. The image you programmed will come and run on the Arduino on next boot! \n\n\n\n\nWatch the LED blink\n\n\nCongratulations! You have created a Mynewt operating system running on the \nArduino Zero. The LED right next to the power LED should be blinking. It is toggled by one task running on the Mynewt OS.",
"title": "Blinky on Arduino Zero"
},
{
@@ -317,7 +327,7 @@
},
{
"location": "/os/tutorials/arduino_zero/#equipment",
- "text": "You will need the following equipment An Arduino Zero board. NOTE: There are many flavors of Arduino. Ensure that \nyou have an Arduino Zero. See below for the verions of Arduino Zero that are\ncompatible with this tutorial A computer that can connect to the Arduino Zero over USB A USB cable (Type A to micro B) that can connect the computer to the Arduino The Mynewt Release This tutorial has been tested on the following two Arduino Zero boards - Zero and Zero-Pro.",
+ "text": "You will need the following equipment An Arduino Zero board. NOTE: There are many flavors of Arduino. Ensure that \nyou have an Arduino Zero. See below for the versions of Arduino Zero that are\ncompatible with this tutorial A computer that can connect to the Arduino Zero over USB A USB cable (Type A to micro B) that can connect the computer to the Arduino The Mynewt Release This tutorial has been tested on the following three Arduino Zero boards - Zero, M0 Pro, and Zero-Pro. Mynewt has not been tested on Arduino M0 which has no internal debugger support.",
"title": "Equipment"
},
{
@@ -332,7 +342,7 @@
},
{
"location": "/os/tutorials/arduino_zero/#create-your-bootloader-target",
- "text": "Next, you need to tell Newt what to build. For the Arduino Zero, we are going to \ngenerate both a bootloader, and an image target. To generate the bootloader target, you need to specify the following options. The output of the commands (indicating success) have been suppressed for easier readability. $ newt target create arduino_boot \n$ newt target set arduino_boot bsp=@mynewt_arduino_zero/hw/bsp/arduino_zero \n$ newt target set arduino_boot app=@apache-mynewt-core/apps/boot \n$ newt target set arduino_boot build_profile=optimized If you have an Arduino Zero Pro, you have to set the following next: $ newt target set arduino_boot features=arduino_zero_pro If you have an Arduino Zero, you have to set the following instead: $ newt target set arduino_boot features=arduino_zero These commands do a few things: Create a target named arduino_boot , in order to build the Arduino Zero Bootloader. Set the application for the arduino_boot target to the
default Apache Mynewt \n bootloader ( @apache-mynewt-core/apps/boot ) Set the board support package for the target to \n @mynewt_arduino_zero/hw/bsp/arduino_zero . This is a reference to the downloaded \n Arduino Zero support from Github. Use the \"optimized\" build profile for the arduino_boot target. This\n instructs Newt to generate smaller and more efficient code for this target.\n This setting is necessary due to the bootloader's strict size constraints. Tells the Board Support Package to enable support for the Arduino Zero Pro or the Arduino Zero. Set it to arduino_zero or arduino_zero_pro depending on the board you have.",
+ "text": "Next, you need to tell Newt what to build. For the Arduino Zero, we are going to \ngenerate both a bootloader, and an image target. To generate the bootloader target, you need to specify the following options. The output of the commands (indicating success) have been suppressed for easier readability. $ newt target create arduino_boot \n$ newt target set arduino_boot bsp=@mynewt_arduino_zero/hw/bsp/arduino_zero \n$ newt target set arduino_boot app=@apache-mynewt-core/apps/boot \n$ newt target set arduino_boot build_profile=optimized If you have an Arduino Zero Pro or M0 Pro, you have to set the following next: $ newt target set arduino_boot features=arduino_zero_pro If you have an Arduino Zero, you have to set the following instead: $ newt target set arduino_boot features=arduino_zero These commands do a few things: Create a target named arduino_boot , in order to build the Arduino Zero Bootloader. Set the application for the arduino_boot tar
get to the default Apache Mynewt \n bootloader ( @apache-mynewt-core/apps/boot ) Set the board support package for the target to \n @mynewt_arduino_zero/hw/bsp/arduino_zero . This is a reference to the downloaded \n Arduino Zero support from Github. Use the \"optimized\" build profile for the arduino_boot target. This\n instructs Newt to generate smaller and more efficient code for this target.\n This setting is necessary due to the bootloader's strict size constraints. Tells the Board Support Package to enable support for the Arduino Zero Pro or the Arduino Zero. Set it to arduino_zero or arduino_zero_pro depending on the board you have.",
"title": "Create your bootloader target"
},
{
@@ -3572,7 +3582,7 @@
},
{
"location": "/os/core_os/porting/port_bsp/",
- "text": "Create a BSP for your Target\n\n\nIntroduction\n\n\nIf you are using a board or system not currently supported by Mynewt, you will need to create a BSP for the new target. If another similar BSP exists it is recommended to copy that BSP as a starting point. For example, if another BSP exists using the same MCU, start with a copy of that BSP.\n\n\nEither way, this document describes the steps necessary to create a new BSP from scratch. \n\n\nKeep your Reference Documents handy\n\n\nTo build a proper BSP, you will typically need the following:\n\n\n\n\nThe datasheet for the MCU you have chosen\n\n\nThe schematic of your board\n\n\nThe information on the CPU core within your MCU if it is not included in your MCU documentation\n\n\nThis Mynewt documentation\n\n\n\n\nName your BSP\n\n\nSelect a name for your BSP. For the remainder of this document, we'll assume the bsp is named \nmyboard\n. In general its best to select a name that describes the board/system you
are creating.\n\n\nCreate a BSP directory\n\n\nCreate a directory \nhw/bsp/myboard\n using the name chosen above. Within this BSP directory, create the following subdirectories:\n\n\nSelect a name for your BSP. For the remainder of this document, \nwell assume the bsp is named \nmyboard\n. In general its best to select a \nname that describes the board/system you are creating.\n\n\n\n\ninclude\n\n\ninclude/bsp\n\n\nsrc\n\n\n\n\nCreate a Target using Mynewt\n\n\nCreate a newt target for your test project for the BSP. To learn how to create a target, see this \nhowto\n \nTutorial\n. Once you are familiar with creating targets, move on below to create a target to use to test your BSP.\n\n\nIt is recommended that you use a simple \nproject\n like \nblinky\n to minimize time to get a working Mynewt system. For this document, we will assume the \ntarget\n is called \nmyboard_blinky\n and uses project \nblinky\n. \n\n\nSet the \nbsp\n of the project to \n/hw/bsp/myboard\n. While creati
ng your target, you will need to specify your \narch\nand \ncompiler\n. If your platform requires an architecture or compiler that are not defined in Mynewt, you will need to add them first. To add a CPU architecture see \nCPU Porting\n.\n\n\nWhen you are complete, your \ntarget\n may look similar to this.\n\n\n \n$newt\n \ntarget\n \nshow\n \n \nmyboard_blinky\n\n \narch=cortex_m0\n\n \nbsp=hw/bsp/myboard\n\n \ncompiler=arm-none-eabi-m0\n\n \ncompiler_def=debug\n\n \nname=myboard_blinky\n\n \nproject=blinky\n\n\n\n\n\n\nCreate Required Files For Compilation\n\n\nCreate the following files within the BSP directory tree. For now, they can be empty files. We will fill them out one at a time.\n\n\n\n\n\n\n\n\nFile Path Name\n\n\nDescription\n\n\n\n\n\n\n\n\n\n\nLICENSE\n\n\nA File to present the source license for your BSP\n\n\n\n\n\n\nREADME.md\n\n\nA markdown file to write documentation for your BSP\n\n\n\n\
n\n\npkg.yml\n\n\nA package file to describe your BSP contents\n\n\n\n\n\n\ninclude/bsp/bsp.h\n\n\nA header file to include definitions required by system from the BSP\n\n\n\n\n\n\nsrc/os_bsp.c\n\n\nA C source file to provide functions required by the OS from your BSP\n\n\n\n\n\n\nsrc/sbrk.c\n\n\nA C source file to memory from your heap to the OS\n\n\n\n\n\n\nsrc/libc_stubs.c\n\n\nA C source file to provide stubs/methods required by libc\n\n\n\n\n\n\nmyboard.ld\n\n\nA linker script to provide the memory map for your linked code\n\n\n\n\n\n\n\n\nOptionally, create these files as necessary to provide all functionality from Mynewt.\n\n\n\n\n\n\n\n\nFile Path Name\n\n\nDescription\n\n\n\n\n\n\n\n\n\n\nmyboard_boot.ld\n\n\nA linker script to provide the memory map for your bootloader\n\n\n\n\n\n\nmyboard_download.sh\n\n\nA bash script to download code into your platform\n\n\n\n\n\n\nmyboard_debug.sh\n\n\nA bash script to intiate a gdb session with your platform\n\n\n\n\n\n\nsrc/hal_bsp.c
\n\n\nA C source file to provide functions required by the HAL from your BSP\n\n\n\n\n\n\n\n\nFill Out your Package File\n\n\nEdit the package file to describe your BSP. \n\n\nThe package file must contain:\n\n\n \npkg\n.\nname\n: \nhw/bsp/myboard\n\n \npkg\n.\nlinkerscript\n: \nmyboard.ld\n\n\n\n\n\n\n\n\n\n\n\n\nAttribute\n\n\nDescription\n\n\n\n\n\n\n\n\n\n\npkg.name\n\n\nThe name of your bsp package\n\n\n\n\n\n\npkg.linkerscript\n\n\nThe linker script that controls the memory placement of the compiled code sections from the Mynewt OS and your applications.\n\n\n\n\n\n\n\n\nThe linker script is a key component of the BSP and specifies where each section of code and data are stored within your CPU which can vary with the BSP depending on your chosen memory layout. For a tutorial on writing linker scripts, see \nCreate or Copy Linker Script(s)\n.\n\n\nThe package file typically contains:\n\n\n \npkg\n.\nlinkerscript\n.\nbootloader\n.\nOVERWRITE\n: \nmyboard_boot.ld\n\n
\npkg\n.\ndownloadscript\n: \nmyboard_download.sh\n\n \npkg\n.\ndebugscript\n: \nmyboard_debug.sh\n\n \npkg\n.\ndeps\n: \n \n-\n \nhw/mcu/mymcu/variant\n\n\n\n\n\n\nwhere \nmymcu/variant\n should be replaced with the specific MCU and variant used in your design.\n\n\nThe following table describes additional attributes relevant to the BSP \npkg.yml\n file.\n\n\n\n\n\n\n\n\nAttribute\n\n\nDescription\n\n\n\n\n\n\n\n\n\n\npkg.linkerscript.bootloader.OVERWRITE\n\n\nA special linker for creating a bootloader for Mynewt\n\n\n\n\n\n\npkg.downloadscript\n\n\nA script that can download a flash image into your target platform\n\n\n\n\n\n\npkg.debugscript\n\n\nA script that can run the GDB debugger on your board\n\n\n\n\n\n\npkg.deps\n\n\nAny dependencies on your BSP\n\n\n\n\n\n\n\n\nThe BSP will invariably depend upon an MCU ( in this sample it's \nhw/mcu/mymcu/variant\n) since the Mynewt OS runs on an MCU within your target. If your MCU is not supported by Mynewt, see \nMCU Portin
g\n for details on how to create an MCU in Mynewt.\n\n\nThe package file may also contain:\n\n\n \npkg\n.\ncflags\n: \n-D__MY_SPECIAL_BSP_OPTIONS_\n\n \npkg\n.\ndeps\n:\n \n-\n \nlibs/cmsis-core\n\n\n\n\n\n\n\n\n\n\n\n\nAttribute\n\n\nDescription\n\n\n\n\n\n\n\n\n\n\npkg.cflags\n\n\nAny specific compiler flags for your bsp\n\n\n\n\n\n\npkg.deps\n\n\nAny other libraries that may be required. Some architectures (like ARM) have special libraries to make BSP creation easier.\n\n\n\n\n\n\n\n\nCreate or Copy Linker Script\n\n\nIt's probably best to start with a linker script from another BSP using the same MCU. If this is not available, consult your MCU documentation and library samples to find a linker script to start with.\n\n\nTypically, a linker script has to specify the following sections for code:\n\n\n\n\n.text -- the location and alignment of the memory section to store your code\n\n\n.data -- the location and alignment of the memory section to store initialized data\n\
n\n.bss -- the location and alignment of the memory section to store uninitialized data\n\n\n.heap -- the location and alignment of the memory section to provide system memory\n\n\n\n\nThe linker script should specify the location and size of the different memory regions in your BSP and map the code sections described above into these regions. \n\n\nThe linker script should also include an ENTRY point. This is used by the debugger to know where to start the program counter when the target is debugged.\n\n\nThere may be additional requirements from the MCU or OS that you may find easiest to place in the linker script. Some specific variables that the OS and MCU depends on are :\n\n\n\n\n\n\n\n\nVariable\n\n\nDescription\n\n\n\n\n\n\n\n\n\n\n__bss_start__\n\n\na variable located at the start of the BSS section\n\n\n\n\n\n\n__bss_end__\n\n\na variable located at the end of the BSS section\n\n\n\n\n\n\n__isr_vector\n\n\nSome CPUs map their interrupt vectors. They may need to be specifi
ed in the linker\n\n\n\n\n\n\n_user_heap_start\n\n\nthe start of the heap for unallocated memory\n\n\n\n\n\n\n_user_heap_end\n\n\nthe end of the heap for unallocated memory\n\n\n\n\n\n\n\n\nCreate an alternate linker script for the bootloader since it is typically linked to use different addresses to boot the main image. \n\n\nAdd Functions and Defines\n\n\nAt this point, it will be possible to run the \nnewt\n tool to build your target. \n\n\nYou may run into complaints from the linker script that a few Mynewt specific functions are missing. We will describe these below.\n\n\n\n\n\n\n\n\nFunction\n\n\nDescription\n\n\n\n\n\n\n\n\n\n\nos_bsp_init()\n\n\ncode to initialize the bsp\n\n\n\n\n\n\nos_bsp_systick_init()\n\n\ncode to setup the system tick for the OS\n\n\n\n\n\n\n\n\nThere are also several libc definitions that can be stubbed in your first BSP. Examples are \n_write\n, \n_read\n, etc. that can be found in \nlibc_stubs.c\n. But you \nmust\n implement the following function
to provide memory to the OS and system.\n\n\n\n\n\n\n\n\nFunction\n\n\nDescription\n\n\n\n\n\n\n\n\n\n\n_sbrk\n\n\nReturns memory from heap (used by malloc)\n\n\n\n\n\n\n\n\n\n\nImplement \n_sbrk()\n\n\n\n\nsbrk()\n is required by libc to get memory from the heap for things like malloc. Although not strongly BSP dependent, this is currently in the BSP to allow flexibility in providing system memory. See other BSPs for providing \nsbrk\n functionality.\n\n\n\n\nImplement \nos_bsp_init()\n\n\n\n\nos_bsp_init\n should initialize anything required by the OS by the BSP. Typically this is a very small set. \n\n\nNOTE: Currently we are making calls to \n_sbrk()\n and \nclose(0)\n from \nos_bsp_init\n to get around a linker issue where some of libc is not getting included. Please include this in your \nos_bsp_init\n.\n\n\n \n/*\n\n\n * XXX these references are here to keep the functions in for libc to find.\n\n\n */\n\n \n_sbrk\n(\n0\n);\n \n_close\n(\n0\n);\n\n\n\n\n\
n\n\nOther Unresolved Defines or Functions\n\n\n\n\nThere may be other unresolved defines or functions that are required by the specific MCU within your BSP. Below lists some sample defines.\n\n\n\n\n\n\n\n\nUndefined Variable\n\n\nDescription\n\n\n\n\n\n\n\n\n\n\nCONSOLE_UART_PORT\n\n\nWhich communications port on your target runs the console\n\n\n\n\n\n\nLED_BLINK_PIN\n\n\nwhich pin on your target runs the blinky LED\n\n\n\n\n\n\n\n\nThe set of missing functionality depends upon the libraries and dependencies you have included in the project. That's why its best to keep your first project pretty simple then add incrementally. For example, if you include Newtron file system, you will need to define a file system map for your BSP.\n\n\nMissing functionality may take the form of \n#define\n items required to compile, or they may take the form of missing functions. \n\n\n\n\ncmsis_nvic.h\n\n\n\n\nIf you are using an ARM cortex architecture, you need to define the number of interrup
ts supported by your system. If you are not using ARM Cortex architecture this may not be required (but something else might be).\n\n\nAdd Debug Script\n\n\nThe debug script in the bsp directory allows the newt tool to automatically connect to the debugger, and create a debug session with the target. This requires knowledge of your target debug interface. Most of the Mynewt BSP targets use \nopenocd\n to perform debugging. This script typically creates an openocd connection to the target and then connects a gdb instance to this openocd connection. There are several examples in existing BSPs to follow.\n\n\nThe script must take a single argument which is the name of the image file minus the '.elf' suffix.\n\n\nThe BSP is complete without this file, but newt will be unable to establish a debug session without it.\n\n\nAdd Download Script\n\n\nSimilar to the debug script, the download script is a hook for newt to download the image to the target system. The download script also ty
pically uses openocd interface to erase flash, and progam the code into the device.\n\n\nNOTE: The download script needs to command openocd to program the image into the appropriate location, which is typically called \nFLASH_OFFSET\n in these scripts. This location has to match the linker script location of the image link address. For example, if your linker links the code to be run at \n0xC000\n your download script should download the image to the same\naddress in the correct flash. \n\n\nAdd License and Documentation\n\n\nThe \nLICENSE\n file is an ASCII text file that describes the source license for this\npackage.\n\n\nThe \nREADME.md\n is a \nmarkdown\n\n file that contains any documentation you \nwant to provide for the BSP.",
+ "text": "Create a BSP for your Target\n\n\nIntroduction\n\n\nIf you are using a board or system not currently supported by Mynewt, you will need to create a BSP for the new target. If another similar BSP exists it is recommended to copy that BSP as a starting point. For example, if another BSP exists using the same MCU, start with a copy of that BSP.\n\n\nEither way, this document describes the steps necessary to create a new BSP from scratch. \n\n\nKeep your Reference Documents handy\n\n\nTo build a proper BSP, you will typically need the following:\n\n\n\n\nThe datasheet for the MCU you have chosen\n\n\nThe schematic of your board\n\n\nThe information on the CPU core within your MCU if it is not included in your MCU documentation\n\n\nThis Mynewt documentation\n\n\n\n\nName your BSP\n\n\nSelect a name for your BSP. For the remainder of this document, we'll assume the bsp is named \nmyboard\n. In general its best to select a name that describes the board/system you
are creating.\n\n\nCreate a BSP directory\n\n\nCreate a directory \nhw/bsp/myboard\n using the name chosen above. Within this BSP directory, create the following subdirectories:\n\n\nSelect a name for your BSP. For the remainder of this document, \nwell assume the bsp is named \nmyboard\n. In general its best to select a \nname that describes the board/system you are creating.\n\n\n\n\ninclude\n\n\ninclude/bsp\n\n\nsrc\n\n\n\n\nCreate a Target using Mynewt\n\n\nCreate a newt target for your test project for the BSP. To learn how to create a target, see this \nhowto\n \nTutorial\n. Once you are familiar with creating targets, move on below to create a target to use to test your BSP.\n\n\nIt is recommended that you use a simple \nproject\n like \nblinky\n to minimize time to get a working Mynewt system. For this document, we will assume the \ntarget\n is called \nmyboard_blinky\n and uses project \nblinky\n. \n\n\nSet the \nbsp\n of the project to \n/hw/bsp/myboard\n. While creati
ng your target, you will need to specify your \narch\nand \ncompiler\n. If your platform requires an architecture or compiler that are not defined in Mynewt, you will need to add them first. To add a CPU architecture see \nCPU Porting\n.\n\n\nWhen you are complete, your \ntarget\n may look similar to this.\n\n\n \n$newt\n \ntarget\n \nshow\n \n \nmyboard_blinky\n\n \narch=cortex_m0\n\n \nbsp=hw/bsp/myboard\n\n \ncompiler=arm-none-eabi-m0\n\n \ncompiler_def=debug\n\n \nname=myboard_blinky\n\n \nproject=blinky\n\n\n\n\n\n\nCreate Required Files For Compilation\n\n\nCreate the following files within the BSP directory tree. For now, they can be empty files. We will fill them out one at a time.\n\n\n\n\n\n\n\n\nFile Path Name\n\n\nDescription\n\n\n\n\n\n\n\n\n\n\nLICENSE\n\n\nA File to present the source license for your BSP\n\n\n\n\n\n\nREADME.md\n\n\nA markdown file to write documentation for your BSP\n\n\n\n\
n\n\npkg.yml\n\n\nA package file to describe your BSP contents\n\n\n\n\n\n\ninclude/bsp/bsp.h\n\n\nA header file to include definitions required by system from the BSP\n\n\n\n\n\n\ninclude/bsp/bsp_sysid.h\n\n\nA header file to enumerate the devices in your BSP\n\n\n\n\n\n\nsrc/os_bsp.c\n\n\nA C source file to provide functions required by the OS from your BSP\n\n\n\n\n\n\nsrc/sbrk.c\n\n\nA C source file to memory from your heap to the OS\n\n\n\n\n\n\nsrc/libc_stubs.c\n\n\nA C source file to provide stubs/methods required by libc\n\n\n\n\n\n\nmyboard.ld\n\n\nA linker script to provide the memory map for your linked code\n\n\n\n\n\n\n\n\nOptionally, create these files as necessary to provide all functionality from Mynewt.\n\n\n\n\n\n\n\n\nFile Path Name\n\n\nDescription\n\n\n\n\n\n\n\n\n\n\nmyboard_boot.ld\n\n\nA linker script to provide the memory map for your bootloader\n\n\n\n\n\n\nmyboard_download.sh\n\n\nA bash script to download code into your platform\n\n\n\n\n\n\nmyboard_debug
.sh\n\n\nA bash script to intiate a gdb session with your platform\n\n\n\n\n\n\nsrc/hal_bsp.c\n\n\nA C source file to provide functions required by the HAL from your BSP\n\n\n\n\n\n\n\n\nFill Out your Package File\n\n\nEdit the package file to describe your BSP. \n\n\nThe package file must contain:\n\n\n \npkg\n.\nname\n: \nhw/bsp/myboard\n\n \npkg\n.\nlinkerscript\n: \nmyboard.ld\n\n\n\n\n\n\n\n\n\n\n\n\nAttribute\n\n\nDescription\n\n\n\n\n\n\n\n\n\n\npkg.name\n\n\nThe name of your bsp package\n\n\n\n\n\n\npkg.linkerscript\n\n\nThe linker script that controls the memory placement of the compiled code sections from the Mynewt OS and your applications.\n\n\n\n\n\n\n\n\nThe linker script is a key component of the BSP and specifies where each section of code and data are stored within your CPU which can vary with the BSP depending on your chosen memory layout. For a tutorial on writing linker scripts, see \nCreate or Copy Linker Script(s)\n.\n\n\nThe package file typically conta
ins:\n\n\n \npkg\n.\nlinkerscript\n.\nbootloader\n.\nOVERWRITE\n: \nmyboard_boot.ld\n\n \npkg\n.\ndownloadscript\n: \nmyboard_download.sh\n\n \npkg\n.\ndebugscript\n: \nmyboard_debug.sh\n\n \npkg\n.\ndeps\n: \n \n-\n \nhw/mcu/mymcu/variant\n\n\n\n\n\n\nwhere \nmymcu/variant\n should be replaced with the specific MCU and variant used in your design.\n\n\nThe following table describes additional attributes relevant to the BSP \npkg.yml\n file.\n\n\n\n\n\n\n\n\nAttribute\n\n\nDescription\n\n\n\n\n\n\n\n\n\n\npkg.linkerscript.bootloader.OVERWRITE\n\n\nA special linker for creating a bootloader for Mynewt\n\n\n\n\n\n\npkg.downloadscript\n\n\nA script that can download a flash image into your target platform\n\n\n\n\n\n\npkg.debugscript\n\n\nA script that can run the GDB debugger on your board\n\n\n\n\n\n\npkg.deps\n\n\nAny dependencies on your BSP\n\n\n\n\n\n\n\n\nThe BSP will invariably depend upon an MCU ( in this sample it's \nhw/mcu/mymcu/variant\n) since the Mynewt OS
runs on an MCU within your target. If your MCU is not supported by Mynewt, see \nMCU Porting\n for details on how to create an MCU in Mynewt.\n\n\nThe package file may also contain:\n\n\n \npkg\n.\ncflags\n: \n-D__MY_SPECIAL_BSP_OPTIONS_\n\n \npkg\n.\ndeps\n:\n \n-\n \nlibs/cmsis-core\n\n\n\n\n\n\n\n\n\n\n\n\nAttribute\n\n\nDescription\n\n\n\n\n\n\n\n\n\n\npkg.cflags\n\n\nAny specific compiler flags for your bsp\n\n\n\n\n\n\npkg.deps\n\n\nAny other libraries that may be required. Some architectures (like ARM) have special libraries to make BSP creation easier.\n\n\n\n\n\n\n\n\nCreate or Copy Linker Script\n\n\nIt's probably best to start with a linker script from another BSP using the same MCU. If this is not available, consult your MCU documentation and library samples to find a linker script to start with.\n\n\nTypically, a linker script has to specify the following sections for code:\n\n\n\n\n.text -- the location and alignment of the memory section to store your cod
e\n\n\n.data -- the location and alignment of the memory section to store initialized data\n\n\n.bss -- the location and alignment of the memory section to store uninitialized data\n\n\n.heap -- the location and alignment of the memory section to provide system memory\n\n\n\n\nThe linker script should specify the location and size of the different memory regions in your BSP and map the code sections described above into these regions. \n\n\nThe linker script should also include an ENTRY point. This is used by the debugger to know where to start the program counter when the target is debugged.\n\n\nThere may be additional requirements from the MCU or OS that you may find easiest to place in the linker script. Some specific variables that the OS and MCU depends on are :\n\n\n\n\n\n\n\n\nVariable\n\n\nDescription\n\n\n\n\n\n\n\n\n\n\n__bss_start__\n\n\na variable located at the start of the BSS section\n\n\n\n\n\n\n__bss_end__\n\n\na variable located at the end of the BSS section\n\n\
n\n\n\n\n__isr_vector\n\n\nSome CPUs map their interrupt vectors. They may need to be specified in the linker\n\n\n\n\n\n\n_user_heap_start\n\n\nthe start of the heap for unallocated memory\n\n\n\n\n\n\n_user_heap_end\n\n\nthe end of the heap for unallocated memory\n\n\n\n\n\n\n\n\nCreate an alternate linker script for the bootloader since it is typically linked to use different addresses to boot the main image. \n\n\nAdd Functions and Defines\n\n\nAt this point, it will be possible to run the \nnewt\n tool to build your target. \n\n\nYou may run into complaints from the linker script that a few Mynewt specific functions are missing. We will describe these below.\n\n\n\n\n\n\n\n\nFunction\n\n\nDescription\n\n\n\n\n\n\n\n\n\n\nos_bsp_init()\n\n\ncode to initialize the bsp\n\n\n\n\n\n\nos_bsp_systick_init()\n\n\ncode to setup the system tick for the OS\n\n\n\n\n\n\n\n\nThere are also several libc definitions that can be stubbed in your first BSP. Examples are \n_write\n, \n_read\n,
etc. that can be found in \nlibc_stubs.c\n. But you \nmust\n implement the following function to provide memory to the OS and system.\n\n\n\n\n\n\n\n\nFunction\n\n\nDescription\n\n\n\n\n\n\n\n\n\n\n_sbrk\n\n\nReturns memory from heap (used by malloc)\n\n\n\n\n\n\n\n\n\n\nImplement \n_sbrk()\n\n\n\n\nsbrk()\n is required by libc to get memory from the heap for things like malloc. Although not strongly BSP dependent, this is currently in the BSP to allow flexibility in providing system memory. See other BSPs for providing \nsbrk\n functionality.\n\n\n\n\nImplement \nos_bsp_init()\n\n\n\n\nos_bsp_init\n should initialize anything required by the OS by the BSP. Typically this is a very small set. \n\n\nNOTE: Currently we are making calls to \n_sbrk()\n and \nclose(0)\n from \nos_bsp_init\n to get around a linker issue where some of libc is not getting included. Please include this in your \nos_bsp_init\n.\n\n\n \n/*\n\n\n * XXX these references are here to keep the functions
in for libc to find.\n\n\n */\n\n \n_sbrk\n(\n0\n);\n \n_close\n(\n0\n);\n\n\n\n\n\n\n\nOther Unresolved Defines or Functions\n\n\n\n\nThere may be other unresolved defines or functions that are required by the specific MCU within your BSP. Below lists some sample defines.\n\n\n\n\n\n\n\n\nUndefined Variable\n\n\nDescription\n\n\n\n\n\n\n\n\n\n\nCONSOLE_UART_PORT\n\n\nWhich communications port on your target runs the console\n\n\n\n\n\n\nLED_BLINK_PIN\n\n\nwhich pin on your target runs the blinky LED\n\n\n\n\n\n\n\n\nThe set of missing functionality depends upon the libraries and dependencies you have included in the project. That's why its best to keep your first project pretty simple then add incrementally. For example, if you include Newtron file system, you will need to define a file system map for your BSP.\n\n\nMissing functionality may take the form of \n#define\n items required to compile, or they may take the form of missing functions. \n\n\n\n\ncmsis_nvic.h\n\
n\n\n\nIf you are using an ARM cortex architecture, you need to define the number of interrupts supported by your system. If you are not using ARM Cortex architecture this may not be required (but something else might be).\n\n\nAdd Debug Script\n\n\nThe debug script in the bsp directory allows the newt tool to automatically connect to the debugger, and create a debug session with the target. This requires knowledge of your target debug interface. Most of the Mynewt BSP targets use \nopenocd\n to perform debugging. This script typically creates an openocd connection to the target and then connects a gdb instance to this openocd connection. There are several examples in existing BSPs to follow.\n\n\nThe script must take a single argument which is the name of the image file minus the '.elf' suffix.\n\n\nThe BSP is complete without this file, but newt will be unable to establish a debug session without it.\n\n\nAdd Download Script\n\n\nSimilar to the debug script, the download scrip
t is a hook for newt to download the image to the target system. The download script also typically uses openocd interface to erase flash, and progam the code into the device.\n\n\nNOTE: The download script needs to command openocd to program the image into the appropriate location, which is typically called \nFLASH_OFFSET\n in these scripts. This location has to match the linker script location of the image link address. For example, if your linker links the code to be run at \n0xC000\n your download script should download the image to the same\naddress in the correct flash. \n\n\nAdd License and Documentation\n\n\nThe \nLICENSE\n file is an ASCII text file that describes the source license for this\npackage.\n\n\nThe \nREADME.md\n is a \nmarkdown\n\n file that contains any documentation you \nwant to provide for the BSP.",
"title": "BSP Porting"
},
{
@@ -3607,7 +3617,7 @@
},
{
"location": "/os/core_os/porting/port_bsp/#create-required-files-for-compilation",
- "text": "Create the following files within the BSP directory tree. For now, they can be empty files. We will fill them out one at a time. File Path Name Description LICENSE A File to present the source license for your BSP README.md A markdown file to write documentation for your BSP pkg.yml A package file to describe your BSP contents include/bsp/bsp.h A header file to include definitions required by system from the BSP src/os_bsp.c A C source file to provide functions required by the OS from your BSP src/sbrk.c A C source file to memory from your heap to the OS src/libc_stubs.c A C source file to provide stubs/methods required by libc myboard.ld A linker script to provide the memory map for your linked code Optionally, create these files as necessary to provide all functionality from Mynewt. File Path Name Description myboard_boot.ld A linker script to provide the memory map for your bootloader myboard_download.s
h A bash script to download code into your platform myboard_debug.sh A bash script to intiate a gdb session with your platform src/hal_bsp.c A C source file to provide functions required by the HAL from your BSP",
+ "text": "Create the following files within the BSP directory tree. For now, they can be empty files. We will fill them out one at a time. File Path Name Description LICENSE A File to present the source license for your BSP README.md A markdown file to write documentation for your BSP pkg.yml A package file to describe your BSP contents include/bsp/bsp.h A header file to include definitions required by system from the BSP include/bsp/bsp_sysid.h A header file to enumerate the devices in your BSP src/os_bsp.c A C source file to provide functions required by the OS from your BSP src/sbrk.c A C source file to memory from your heap to the OS src/libc_stubs.c A C source file to provide stubs/methods required by libc myboard.ld A linker script to provide the memory map for your linked code Optionally, create these files as necessary to provide all functionality from Mynewt. File Path Name Description myboard_boot.ld A li
nker script to provide the memory map for your bootloader myboard_download.sh A bash script to download code in
<TRUNCATED>
[2/7] incubator-mynewt-site git commit: Lots of HAL additions by P
Dietrich. This closes #73. BLE security blurb added. Docker container and
quick start docs cleaned up
Posted by ad...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal_flash/hal_flash/index.html
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal_flash/hal_flash/index.html b/os/modules/hal/hal_flash/hal_flash/index.html
index 047db14..0c6ae53 100644
--- a/os/modules/hal/hal_flash/hal_flash/index.html
+++ b/os/modules/hal/hal_flash/hal_flash/index.html
@@ -326,6 +326,16 @@
+ <li>
+ <a href="../../hal_architecture/">Architecture</a>
+ </li>
+
+
+
+
+
+
+
<li><a href="
../../hal_api/
@@ -348,7 +358,27 @@
<li>
- <a href="../../hal_gpio/hal_gpio/">GPIO</a>
+ <a href="../../hal_adc/hal_adc/">ADC</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_cputime/hal_cpu_timer/">CPU timer</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_dac/hal_dac/">DAC</a>
</li>
@@ -405,7 +435,7 @@
<li>
- <a href="../../hal_cputime/hal_cpu_timer/">CPU timer</a>
+ <a href="../../hal_gpio/hal_gpio/">GPIO</a>
</li>
@@ -415,7 +445,27 @@
<li>
- <a href="../../hal_uart/hal_uart/">UART</a>
+ <a href="../../hal_i2c/hal_i2c/">I2C</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_pwm/hal_pwm/">PWM</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_spi/hal_spi/">SPI</a>
</li>
@@ -431,6 +481,16 @@
+
+
+
+ <li>
+ <a href="../../hal_uart/hal_uart/">UART</a>
+ </li>
+
+
+
+
</ul>
</li>
@@ -441,7 +501,7 @@
<li>
- <a href="../../hal_in_libraries/">Using</a>
+ <a href="../../hal_in_libraries/">Using HAL</a>
</li>
@@ -451,7 +511,7 @@
<li>
- <a href="../../hal_creation/">Creating</a>
+ <a href="../../hal_creation/">Creating HAL</a>
</li>
@@ -680,9 +740,9 @@
<ul class="nav nav-pills" style="margin-bottom: 10px">
<li>
- <a href=../../hal_gpio/hal_gpio/>
+ <a href=../../hal_dac/hal_dac/>
<span class="fa fa-arrow-left"></span>
- Previous: GPIO
+ Previous: DAC
</a>
</li>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal_flash/hal_flash_int/index.html
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal_flash/hal_flash_int/index.html b/os/modules/hal/hal_flash/hal_flash_int/index.html
index b004571..f777275 100644
--- a/os/modules/hal/hal_flash/hal_flash_int/index.html
+++ b/os/modules/hal/hal_flash/hal_flash_int/index.html
@@ -326,6 +326,16 @@
+ <li>
+ <a href="../../hal_architecture/">Architecture</a>
+ </li>
+
+
+
+
+
+
+
<li><a href="
../../hal_api/
@@ -348,7 +358,27 @@
<li>
- <a href="../../hal_gpio/hal_gpio/">GPIO</a>
+ <a href="../../hal_adc/hal_adc/">ADC</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_cputime/hal_cpu_timer/">CPU timer</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_dac/hal_dac/">DAC</a>
</li>
@@ -405,7 +435,7 @@
<li>
- <a href="../../hal_cputime/hal_cpu_timer/">CPU timer</a>
+ <a href="../../hal_gpio/hal_gpio/">GPIO</a>
</li>
@@ -415,7 +445,27 @@
<li>
- <a href="../../hal_uart/hal_uart/">UART</a>
+ <a href="../../hal_i2c/hal_i2c/">I2C</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_pwm/hal_pwm/">PWM</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_spi/hal_spi/">SPI</a>
</li>
@@ -431,6 +481,16 @@
+
+
+
+ <li>
+ <a href="../../hal_uart/hal_uart/">UART</a>
+ </li>
+
+
+
+
</ul>
</li>
@@ -441,7 +501,7 @@
<li>
- <a href="../../hal_in_libraries/">Using</a>
+ <a href="../../hal_in_libraries/">Using HAL</a>
</li>
@@ -451,7 +511,7 @@
<li>
- <a href="../../hal_creation/">Creating</a>
+ <a href="../../hal_creation/">Creating HAL</a>
</li>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal_flash/hal_flash_map/index.html
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal_flash/hal_flash_map/index.html b/os/modules/hal/hal_flash/hal_flash_map/index.html
index 25b9c92..664eb02 100644
--- a/os/modules/hal/hal_flash/hal_flash_map/index.html
+++ b/os/modules/hal/hal_flash/hal_flash_map/index.html
@@ -326,6 +326,16 @@
+ <li>
+ <a href="../../hal_architecture/">Architecture</a>
+ </li>
+
+
+
+
+
+
+
<li><a href="
../../hal_api/
@@ -348,7 +358,27 @@
<li>
- <a href="../../hal_gpio/hal_gpio/">GPIO</a>
+ <a href="../../hal_adc/hal_adc/">ADC</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_cputime/hal_cpu_timer/">CPU timer</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_dac/hal_dac/">DAC</a>
</li>
@@ -405,7 +435,7 @@
<li>
- <a href="../../hal_cputime/hal_cpu_timer/">CPU timer</a>
+ <a href="../../hal_gpio/hal_gpio/">GPIO</a>
</li>
@@ -415,7 +445,27 @@
<li>
- <a href="../../hal_uart/hal_uart/">UART</a>
+ <a href="../../hal_i2c/hal_i2c/">I2C</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_pwm/hal_pwm/">PWM</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_spi/hal_spi/">SPI</a>
</li>
@@ -431,6 +481,16 @@
+
+
+
+ <li>
+ <a href="../../hal_uart/hal_uart/">UART</a>
+ </li>
+
+
+
+
</ul>
</li>
@@ -441,7 +501,7 @@
<li>
- <a href="../../hal_in_libraries/">Using</a>
+ <a href="../../hal_in_libraries/">Using HAL</a>
</li>
@@ -451,7 +511,7 @@
<li>
- <a href="../../hal_creation/">Creating</a>
+ <a href="../../hal_creation/">Creating HAL</a>
</li>
@@ -688,8 +748,8 @@
</li>
<li class="pull-right">
- <a href=../../hal_cputime/hal_cpu_timer/>
- Next: CPU timer
+ <a href=../../hal_gpio/hal_gpio/>
+ Next: GPIO
<span class="fa fa-arrow-right"></span>
</a>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal_gpio/hal_gpio/index.html
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal_gpio/hal_gpio/index.html b/os/modules/hal/hal_gpio/hal_gpio/index.html
index f61925a..ceeb28b 100644
--- a/os/modules/hal/hal_gpio/hal_gpio/index.html
+++ b/os/modules/hal/hal_gpio/hal_gpio/index.html
@@ -326,6 +326,16 @@
+ <li>
+ <a href="../../hal_architecture/">Architecture</a>
+ </li>
+
+
+
+
+
+
+
<li><a href="
../../hal_api/
@@ -347,8 +357,28 @@
- <li class="active">
- GPIO
+ <li>
+ <a href="../../hal_adc/hal_adc/">ADC</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_cputime/hal_cpu_timer/">CPU timer</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_dac/hal_dac/">DAC</a>
</li>
@@ -370,8 +400,18 @@
+ <li class="active">
+ GPIO
+ </li>
+
+
+
+
+
+
+
<li>
- <a href="../../hal_cputime/hal_cpu_timer/">CPU timer</a>
+ <a href="../../hal_i2c/hal_i2c/">I2C</a>
</li>
@@ -381,7 +421,17 @@
<li>
- <a href="../../hal_uart/hal_uart/">UART</a>
+ <a href="../../hal_pwm/hal_pwm/">PWM</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_spi/hal_spi/">SPI</a>
</li>
@@ -397,6 +447,16 @@
+
+
+
+ <li>
+ <a href="../../hal_uart/hal_uart/">UART</a>
+ </li>
+
+
+
+
</ul>
</li>
@@ -407,7 +467,7 @@
<li>
- <a href="../../hal_in_libraries/">Using</a>
+ <a href="../../hal_in_libraries/">Using HAL</a>
</li>
@@ -417,7 +477,7 @@
<li>
- <a href="../../hal_creation/">Creating</a>
+ <a href="../../hal_creation/">Creating HAL</a>
</li>
@@ -681,16 +741,16 @@ Examine how <code>task1_handler</code> initializes and toggles the GPIO to contr
<ul class="nav nav-pills" style="margin-bottom: 10px">
<li>
- <a href=../../hal_api/>
+ <a href=../../hal_flash/hal_flash_map/>
<span class="fa fa-arrow-left"></span>
- Previous: Summary
+ Previous: flash_map
</a>
</li>
<li class="pull-right">
- <a href=../../hal_flash/hal_flash/>
- Next: Overview
+ <a href=../../hal_i2c/hal_i2c/>
+ Next: I2C
<span class="fa fa-arrow-right"></span>
</a>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal_i2c/hal_i2c/index.html
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal_i2c/hal_i2c/index.html b/os/modules/hal/hal_i2c/hal_i2c/index.html
new file mode 100644
index 0000000..cb89496
--- /dev/null
+++ b/os/modules/hal/hal_i2c/hal_i2c/index.html
@@ -0,0 +1,854 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+
+ <link rel="canonical" href="http://mynewt.apache.org/os/modules/hal/hal_i2c/hal_i2c/">
+ <link rel="shortcut icon" href="../../../../../img/favicon.ico">
+
+ <title>I2C - Apache Mynewt</title>
+
+ <link href="../../../../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
+ <link href="../../../../../css/font-awesome-4.0.3.css" rel="stylesheet">
+ <link rel="stylesheet" href="../../../../../css/highlight.css">
+ <link href="../../../../../css/base.css" rel="stylesheet">
+ <link href="../../../../../css/custom.css" rel="stylesheet">
+ <link href='https://fonts.googleapis.com/css?family=Roboto:400,500,700,900,300,100' rel='stylesheet' type='text/css'>
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
+ <link href="../../../../../extra.css" rel="stylesheet">
+
+ <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
+ <!--[if lt IE 9]>
+ <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
+ <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
+ <![endif]-->
+
+
+ <script>
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+ ga('create', 'UA-72162311-1', 'mynewt.incubator.apache.org');
+ ga('send', 'pageview');
+ </script>
+
+ </head>
+
+
+ <body class="I2C">
+
+
+ <div id="navbar" class="navbar navbar-default navbar-fixed-top" role="navigation">
+ <div class="logo-container">
+ <img src="/img/logo.svg">
+ </div>
+ <div class="container-fluid">
+ <!-- Collapsed navigation -->
+ <div class="navbar-header">
+ <!-- Expander button -->
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+
+ </div>
+
+ <!-- Expanded navigation -->
+ <div class="navbar-collapse collapse">
+ <!-- Main navigation -->
+ <ul class="nav navbar-nav navbar-right">
+ <li>
+ <a href="/">Home</a>
+ </li>
+ <li>
+ <a href="/about/">About</a>
+ </li>
+ <li class="dropdown">
+ <a href="/documentation/" class="dropdown-toggle" data-toggle="dropdown">Docs <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+
+
+
+
+
+
+ <li >
+ <a href="../../../../../documentation/">
+ Overview
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="active">
+ <a href="../../../../get_started/introduction/">
+ Mynewt OS Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../../../newt/newt_intro/">
+ Newt Tool Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../../../newtmgr/overview/">
+ Newt Manager Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../../tutorials/how_to_edit_docs/">
+ Appendix
+ </a>
+ </li>
+
+
+ </ul>
+ </li>
+ <li>
+ <a href="/download/">Download</a>
+ </li>
+ <li>
+ <a href="/community/">Community</a>
+ </li>
+ <li>
+ <a href="/events/">Events</a>
+ </li>
+ </ul>
+
+ <!-- Search, Navigation and Repo links -->
+ <ul class="nav navbar-nav navbar-right">
+
+ </ul>
+ </div>
+ </div>
+</div>
+
+
+
+ <div class="container-fluid">
+
+ <div class="row sm-extra-padding">
+ <div id="docSidebar" class="col-md-3 bg-grey sidebar-container"><div class="bs-sidebar hidden-print" role="complementary">
+ <div class="sidebar-top">
+ <img class="hidden-xs hidden-sm logo-small" src="/img/logo.svg" alt="MyNewt" title="MyNewt">
+ <div class="small" role="search">
+ <form id ="rtd-search-form" class="wy-form" action="../../../../../search.html" method="get">
+ <div class="form-group">
+ <input type="text" name="q" placeholder="Search documentation" />
+ <button class="search-button" type="submit"><i class="fa fa-search"></i></button>
+ </div>
+ </form>
+ </div>
+ </div>
+ <ul class="nav bs-sidenav">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../get_started/introduction/
+">Mynewt OS Manual</a>
+
+
+ <ul class="current-toc">
+
+
+
+
+ <li>
+ <a href="../../../../get_started/introduction/">Introduction</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li ><a href="../../../../get_started/get_started/">Quick Start</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../get_started/vocabulary/">Concepts</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../tutorials/tutorials/">Tutorials</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../os_user_guide/">OS User Guide</a></li>
+
+
+ <ul class="current-toc">
+
+
+
+
+
+
+
+ <li ><a href="../../../../core_os/mynewt_os/">OS Core</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../core_os/porting/port_os/">Porting to your Platform</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../console/console/">Console</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../shell/shell/">Shell</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../bootloader/bootloader/">Bootloader</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+
+
+ ../../../fs/fs/fs/
+
+">File System</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../hal/">Hardware Abstraction Layer</a></li>
+
+
+ <ul class="current-toc">
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_architecture/">Architecture</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li><a href="
+ ../../hal_api/
+">API</a>
+
+
+ <ul class="current-toc">
+
+
+
+
+ <li>
+ <a href="../../hal_api/">Summary</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_adc/hal_adc/">ADC</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_cputime/hal_cpu_timer/">CPU timer</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_dac/hal_dac/">DAC</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li><a href="
+ ../../hal_flash/hal_flash/
+">Flash memory</a>
+
+
+ </li>
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_gpio/hal_gpio/">GPIO</a>
+ </li>
+
+
+
+
+
+
+
+ <li class="active">
+ I2C
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_pwm/hal_pwm/">PWM</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_spi/hal_spi/">SPI</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_system/hal_sys/">System</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_uart/hal_uart/">UART</a>
+ </li>
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_in_libraries/">Using HAL</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_creation/">Creating HAL</a>
+ </li>
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../testutil/testutil/">Test Utilities</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../imgmgr/imgmgr/">Image Manager</a></li>
+
+
+ </li>
+
+
+
+
+
+
+ <li>
+ <a href="../../../baselibc/">Baselibc library</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li ><a href="../../../elua/elua/">Embedded Lua</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../json/json/">JSON</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../stats/stats/">Stats</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../logs/logs/">Logs</a></li>
+
+
+ </li>
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../../network/ble/ble_intro/
+">BLE User Guide</a>
+
+
+ </li>
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../../newt/newt_intro/
+">Newt Tool Manual</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../../newtmgr/overview/
+">Newt Manager Manual</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../tutorials/how_to_edit_docs/
+">Appendix</a>
+
+
+ </li>
+
+
+
+ </ul>
+</div></div>
+
+ <div class="show-sidebar-container">
+ <button class="show-sidebar">Docs Menu</button>
+ </div>
+
+ <div class="col-md-offset-3 col-md-9 documentation-viewer" role="main">
+ <div class="row doc-header">
+ <div class="col-sm-6">
+
+<ul class="nav nav-pills">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="active" role="presentation"><a href="../../../../get_started/introduction/">Mynewt OS</a></li>
+
+
+
+ <li role="presentation"><a href="../../../../../newt/newt_intro/">Newt Tool</a></li>
+
+
+
+ <li role="presentation"><a href="../../../../../newtmgr/overview/">Newt Mgr</a></li>
+
+
+
+
+</ul>
+ </div>
+ <div class="col-sm-6">
+ <div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="/documentation/">Docs</a></li>
+
+
+
+ <li>» <a href="../../hal/">Hardware Abstraction Layer</a></li>
+
+
+
+ <li>» <a href="../../hal_api/">API</a></li>
+
+
+
+ <li>» I2C</li>
+
+
+
+ </ul>
+</div>
+ </div>
+ </div>
+
+ <h1 id="hal_i2c">hal_i2c<a class="headerlink" href="#hal_i2c" title="Permanent link">¶</a></h1>
+<p>The hardware independent interface to I2C Devices.</p>
+<h3 id="description">Description<a class="headerlink" href="#description" title="Permanent link">¶</a></h3>
+<p>An Inter-Integrated Circuit (I²C ] I-squared-C) bus is a multi-master,
+multi-save serial interface used to connect components on a circuit board
+and often peripherals devices located off the circuit board.</p>
+<p>I2C is often though of as a 2-wire protocol because it uses two wires (SDA, SCL)
+to send data between devices. </p>
+<p>For a detailed description of I2C, see the <a href="https://en.wikipedia.org/wiki/I²C">I²C wikipedia page</a></p>
+<h3 id="definition">Definition<a class="headerlink" href="#definition" title="Permanent link">¶</a></h3>
+<p><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_i2c.h">hal_i2c.h</a></p>
+<h3 id="hal_i2c-theory-of-operation">HAL_I2C Theory Of Operation<a class="headerlink" href="#hal_i2c-theory-of-operation" title="Permanent link">¶</a></h3>
+<p>An I²C transaction typically involves acquiring the bus, sending and/or receiving
+data and release the bus. The bus acquisition portion is important because
+the bus is typically multi-master so other devices may be trying to read/write
+the same peripheral. </p>
+<p>HAL_I2C implements a master interface to the I²C bus. Typical usage of the
+interface would involve the following steps.</p>
+<ol>
+<li>initialize an I²C device using <code>hal_i2c_init</code></li>
+<li>when you want to perform an I²C transaction:<ol>
+<li>Issue the <code>hal_i2c_begin()</code> command. </li>
+<li>Issue one or more <code>hal_i2c_read</code> and/or <code>hal_i2c_write</code> commands</li>
+<li>Issue the <code>hal_i2c_end()</code> command.</li>
+</ol>
+</li>
+</ol>
+<p>An addition API was added called <code>hal_i2c_probe</code>. This command combines
+<code>hal_i2c_begin()</code>, <code>hal_i2c_read</code>, and <code>hal_i2c_end()</code> to try to read 0-bytes
+from a specific bus address. its intended to provide an easy way to probe
+the bus for a specific device. NOTE: if the device is write-only, it will
+not appear with this command.</p>
+<h3 id="hal_i2c-data">HAL_I2C Data<a class="headerlink" href="#hal_i2c-data" title="Permanent link">¶</a></h3>
+<p>Data to read/write is passed to the hal_i2c APIs via the </p>
+<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%">struct hal_i2c_master_data {
+ uint8_t address; /* destination address */
+ uint16_t len; /* number of bytes to transmit or receive */
+ uint8_t *buffer; /* data buffer for transmit or receive */
+};
+</pre></div>
+
+
+<p><code>buffer</code> is a pointer to the data to send. <code>len</code> is the number of bytes
+to send over the bus. <code>address</code> is a 7-bit bus address of the device.</p>
+<p>When I²C builds its address, it uses the 7-bit address plus a 1-bit R/W
+(read/write) indicator to identify the device and direction of the
+transaction. Thus when using this API, you should use a 7-bit address
+in the data structure and ensure that address is a value between 0-127.</p>
+<p>As an example, consider an I²C device address that looks like this:</p>
+<table>
+<thead>
+<tr>
+<th>B7</th>
+<th>B6</th>
+<th>B5</th>
+<th>B4</th>
+<th>B3</th>
+<th>B2</th>
+<th>B1</th>
+<th>B0</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>1</td>
+<td>0</td>
+<td>0</td>
+<td>0</td>
+<td>1</td>
+<td>1</td>
+<td>0</td>
+<td>R/W</td>
+</tr>
+<tr>
+<td>MSB</td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td>LSB</td>
+</tr>
+</tbody>
+</table>
+<p>In the HAL_I2C API you would communicate with this device with address
+<code>0b1000110</code>, whic is hex 0x46 or decimal 70. The I²C drive would add the R/W bit
+and transmit it as hex 0x8D or 0x8D depending whether it was a read or
+write command.</p>
+
+ <div class="row">
+
+
+
+
+<ul class="nav nav-pills" style="margin-bottom: 10px">
+ <li>
+
+ <a href=../../hal_gpio/hal_gpio/>
+ <span class="fa fa-arrow-left"></span>
+ Previous: GPIO
+ </a>
+
+ </li>
+ <li class="pull-right">
+
+ <a href=../../hal_pwm/hal_pwm/>
+ Next: PWM
+ <span class="fa fa-arrow-right"></span>
+ </a>
+
+ </li>
+</ul>
+ </div>
+ <div class="row">
+ <footer>
+ <div class="row">
+ <div class="col-md-12">
+
+ <p class="copyright">Copyright © 2015 The Apache Software Foundation, Licensed under the Apache License, Version 2.0 Apache and the Apache feather logo are trademarks of The Apache Software Foundation.<br>The Apache Software Foundation Apache Incubator</p>
+
+ </div>
+ </div>
+ <div class="copyright-logos">
+ <div class="row">
+ <div class="col-xs-6 text-right">
+ <img src="/img/apache-feather.png" alt="Apache" title="Apache">
+ </div>
+ <div class="col-xs-6 text-left">
+ <img src="/img/apache-logo.png" alt="Apache Incubator" title="Apache Incubator">
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-12">
+ <small class="footnote">
+ MyNewt is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
+ </small>
+ </div>
+ </div>
+</footer>
+ </div>
+ </div>
+ </div>
+
+
+ </div>
+
+ <script src="../../../../../js/jquery-1.10.2.min.js"></script>
+ <script src="../../../../../js/bootstrap-3.0.3.min.js"></script>
+ <script src="../../../../../js/highlight.pack.js"></script>
+ <script src="../../../../../js/base.js"></script>
+ <script src="../../../../../js/custom.js"></script>
+
+ </body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal_in_libraries/index.html
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal_in_libraries/index.html b/os/modules/hal/hal_in_libraries/index.html
index c4cfeeb..bee7489 100644
--- a/os/modules/hal/hal_in_libraries/index.html
+++ b/os/modules/hal/hal_in_libraries/index.html
@@ -9,7 +9,7 @@
<link rel="canonical" href="http://mynewt.apache.org/os/modules/hal/hal_in_libraries/">
<link rel="shortcut icon" href="../../../../img/favicon.ico">
- <title>Using - Apache Mynewt</title>
+ <title>Using HAL - Apache Mynewt</title>
<link href="../../../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
<link href="../../../../css/font-awesome-4.0.3.css" rel="stylesheet">
@@ -40,7 +40,7 @@
</head>
- <body class="Using">
+ <body class="Using HAL">
<div id="navbar" class="navbar navbar-default navbar-fixed-top" role="navigation">
@@ -326,6 +326,16 @@
+ <li>
+ <a href="../hal_architecture/">Architecture</a>
+ </li>
+
+
+
+
+
+
+
<li><a href="
../hal_api/
@@ -340,7 +350,7 @@
<li class="active">
- Using
+ Using HAL
</li>
@@ -350,7 +360,7 @@
<li>
- <a href="../hal_creation/">Creating</a>
+ <a href="../hal_creation/">Creating HAL</a>
</li>
@@ -560,7 +570,7 @@
- <li>» Using</li>
+ <li>» Using HAL</li>
@@ -641,16 +651,16 @@ to the correct physical pin in their system.</p>
<ul class="nav nav-pills" style="margin-bottom: 10px">
<li>
- <a href=../hal_system/hal_sys/>
+ <a href=../hal_uart/hal_uart/>
<span class="fa fa-arrow-left"></span>
- Previous: System
+ Previous: UART
</a>
</li>
<li class="pull-right">
<a href=../hal_creation/>
- Next: Creating
+ Next: Creating HAL
<span class="fa fa-arrow-right"></span>
</a>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal_pwm/hal_pwm/index.html
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal_pwm/hal_pwm/index.html b/os/modules/hal/hal_pwm/hal_pwm/index.html
new file mode 100644
index 0000000..657866e
--- /dev/null
+++ b/os/modules/hal/hal_pwm/hal_pwm/index.html
@@ -0,0 +1,824 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+
+ <link rel="canonical" href="http://mynewt.apache.org/os/modules/hal/hal_pwm/hal_pwm/">
+ <link rel="shortcut icon" href="../../../../../img/favicon.ico">
+
+ <title>PWM - Apache Mynewt</title>
+
+ <link href="../../../../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
+ <link href="../../../../../css/font-awesome-4.0.3.css" rel="stylesheet">
+ <link rel="stylesheet" href="../../../../../css/highlight.css">
+ <link href="../../../../../css/base.css" rel="stylesheet">
+ <link href="../../../../../css/custom.css" rel="stylesheet">
+ <link href='https://fonts.googleapis.com/css?family=Roboto:400,500,700,900,300,100' rel='stylesheet' type='text/css'>
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
+ <link href="../../../../../extra.css" rel="stylesheet">
+
+ <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
+ <!--[if lt IE 9]>
+ <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
+ <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
+ <![endif]-->
+
+
+ <script>
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+ ga('create', 'UA-72162311-1', 'mynewt.incubator.apache.org');
+ ga('send', 'pageview');
+ </script>
+
+ </head>
+
+
+ <body class="PWM">
+
+
+ <div id="navbar" class="navbar navbar-default navbar-fixed-top" role="navigation">
+ <div class="logo-container">
+ <img src="/img/logo.svg">
+ </div>
+ <div class="container-fluid">
+ <!-- Collapsed navigation -->
+ <div class="navbar-header">
+ <!-- Expander button -->
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+
+ </div>
+
+ <!-- Expanded navigation -->
+ <div class="navbar-collapse collapse">
+ <!-- Main navigation -->
+ <ul class="nav navbar-nav navbar-right">
+ <li>
+ <a href="/">Home</a>
+ </li>
+ <li>
+ <a href="/about/">About</a>
+ </li>
+ <li class="dropdown">
+ <a href="/documentation/" class="dropdown-toggle" data-toggle="dropdown">Docs <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+
+
+
+
+
+
+ <li >
+ <a href="../../../../../documentation/">
+ Overview
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="active">
+ <a href="../../../../get_started/introduction/">
+ Mynewt OS Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../../../newt/newt_intro/">
+ Newt Tool Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../../../newtmgr/overview/">
+ Newt Manager Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../../tutorials/how_to_edit_docs/">
+ Appendix
+ </a>
+ </li>
+
+
+ </ul>
+ </li>
+ <li>
+ <a href="/download/">Download</a>
+ </li>
+ <li>
+ <a href="/community/">Community</a>
+ </li>
+ <li>
+ <a href="/events/">Events</a>
+ </li>
+ </ul>
+
+ <!-- Search, Navigation and Repo links -->
+ <ul class="nav navbar-nav navbar-right">
+
+ </ul>
+ </div>
+ </div>
+</div>
+
+
+
+ <div class="container-fluid">
+
+ <div class="row sm-extra-padding">
+ <div id="docSidebar" class="col-md-3 bg-grey sidebar-container"><div class="bs-sidebar hidden-print" role="complementary">
+ <div class="sidebar-top">
+ <img class="hidden-xs hidden-sm logo-small" src="/img/logo.svg" alt="MyNewt" title="MyNewt">
+ <div class="small" role="search">
+ <form id ="rtd-search-form" class="wy-form" action="../../../../../search.html" method="get">
+ <div class="form-group">
+ <input type="text" name="q" placeholder="Search documentation" />
+ <button class="search-button" type="submit"><i class="fa fa-search"></i></button>
+ </div>
+ </form>
+ </div>
+ </div>
+ <ul class="nav bs-sidenav">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../get_started/introduction/
+">Mynewt OS Manual</a>
+
+
+ <ul class="current-toc">
+
+
+
+
+ <li>
+ <a href="../../../../get_started/introduction/">Introduction</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li ><a href="../../../../get_started/get_started/">Quick Start</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../get_started/vocabulary/">Concepts</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../tutorials/tutorials/">Tutorials</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../os_user_guide/">OS User Guide</a></li>
+
+
+ <ul class="current-toc">
+
+
+
+
+
+
+
+ <li ><a href="../../../../core_os/mynewt_os/">OS Core</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../core_os/porting/port_os/">Porting to your Platform</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../console/console/">Console</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../shell/shell/">Shell</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../bootloader/bootloader/">Bootloader</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+
+
+ ../../../fs/fs/fs/
+
+">File System</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../hal/">Hardware Abstraction Layer</a></li>
+
+
+ <ul class="current-toc">
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_architecture/">Architecture</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li><a href="
+ ../../hal_api/
+">API</a>
+
+
+ <ul class="current-toc">
+
+
+
+
+ <li>
+ <a href="../../hal_api/">Summary</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_adc/hal_adc/">ADC</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_cputime/hal_cpu_timer/">CPU timer</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_dac/hal_dac/">DAC</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li><a href="
+ ../../hal_flash/hal_flash/
+">Flash memory</a>
+
+
+ </li>
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_gpio/hal_gpio/">GPIO</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_i2c/hal_i2c/">I2C</a>
+ </li>
+
+
+
+
+
+
+
+ <li class="active">
+ PWM
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_spi/hal_spi/">SPI</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_system/hal_sys/">System</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_uart/hal_uart/">UART</a>
+ </li>
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_in_libraries/">Using HAL</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_creation/">Creating HAL</a>
+ </li>
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../testutil/testutil/">Test Utilities</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../imgmgr/imgmgr/">Image Manager</a></li>
+
+
+ </li>
+
+
+
+
+
+
+ <li>
+ <a href="../../../baselibc/">Baselibc library</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li ><a href="../../../elua/elua/">Embedded Lua</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../json/json/">JSON</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../stats/stats/">Stats</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../logs/logs/">Logs</a></li>
+
+
+ </li>
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../../network/ble/ble_intro/
+">BLE User Guide</a>
+
+
+ </li>
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../../newt/newt_intro/
+">Newt Tool Manual</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../../newtmgr/overview/
+">Newt Manager Manual</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../tutorials/how_to_edit_docs/
+">Appendix</a>
+
+
+ </li>
+
+
+
+ </ul>
+</div></div>
+
+ <div class="show-sidebar-container">
+ <button class="show-sidebar">Docs Menu</button>
+ </div>
+
+ <div class="col-md-offset-3 col-md-9 documentation-viewer" role="main">
+ <div class="row doc-header">
+ <div class="col-sm-6">
+
+<ul class="nav nav-pills">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="active" role="presentation"><a href="../../../../get_started/introduction/">Mynewt OS</a></li>
+
+
+
+ <li role="presentation"><a href="../../../../../newt/newt_intro/">Newt Tool</a></li>
+
+
+
+ <li role="presentation"><a href="../../../../../newtmgr/overview/">Newt Mgr</a></li>
+
+
+
+
+</ul>
+ </div>
+ <div class="col-sm-6">
+ <div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="/documentation/">Docs</a></li>
+
+
+
+ <li>» <a href="../../hal/">Hardware Abstraction Layer</a></li>
+
+
+
+ <li>» <a href="../../hal_api/">API</a></li>
+
+
+
+ <li>» PWM</li>
+
+
+
+ </ul>
+</div>
+ </div>
+ </div>
+
+ <h1 id="hal_pwm">hal_pwm<a class="headerlink" href="#hal_pwm" title="Permanent link">¶</a></h1>
+<p>The hardware independent interface to Pulse Width Modulators</p>
+<h3 id="description">Description<a class="headerlink" href="#description" title="Permanent link">¶</a></h3>
+<p>Pulse Width Modulators (PWMs) are hardware devices that output digital waveforms
+with programmable duty cycle and frequency. They use a digital waveform
+but can contiuously adjust the amount of power delivered to their load via
+duty cycle. They are often used to create analog waveforms via low pass filter,
+drive LEDs at various intensities, and control DC or servo motors.</p>
+<p>For a description of PSM, see <a href="https://en.wikipedia.org/wiki/Pulse-width_modulation">wikipedia</a></p>
+<h3 id="definition">Definition<a class="headerlink" href="#definition" title="Permanent link">¶</a></h3>
+<p><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_pwm.h">hal_pwm.h</a></p>
+<h3 id="hal_pwm-theory-of-operation">HAL_PWM Theory Of Operation<a class="headerlink" href="#hal_pwm-theory-of-operation" title="Permanent link">¶</a></h3>
+<p>The HAL_PWM interface was designed with some specific use cases in mind. It
+was also designed to exploit a subset of the functionality provided by
+common PWM controllers.</p>
+<p>Fundamentally, a PWM has at it root an N-bit COUNTER, a CLOCK source, one or
+more CAPTURE registers, and sometimes a TOP register.</p>
+<p>The clock source feeds the COUNTER register which is continuously counting
+(up or down), When the COUNTER is less than the value of the CAPTURE
+register, the PWM outputs a logic HIGH. When the counter is greater than
+the CAPTURE register the PWM outputs logic LOW. When the counter reaches the TOP
+register, it wraps back to zero. If the PWM has no TOP register, it simply
+wraps back to zero after reaching 2^N-1.</p>
+<p>The HAL_PWM abstracts this implementation and provides methods to set the
+PWM frequency and duty cycle. The frequency is the rate at which the counter
+wraps back to zero. The duty cycle is the fraction of time the PWM is in
+logic HIGH state.</p>
+<p>The HAL_PWM API provides a few methods to get information on the PWM.</p>
+<table>
+<thead>
+<tr>
+<th><strong>Method Name</strong></th>
+<th><strong> Description </strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>hal_pwm_get_source_clock_freq</td>
+<td>gets the frequency of the CLOCK that is driving the COUNTER</td>
+</tr>
+<tr>
+<td>hal_pwm_get_resolution_bits</td>
+<td>gets the number of bits in the COUNTER</td>
+</tr>
+</tbody>
+</table>
+<p>To use a PWM via HAL_PWM, follow these simple steps.</p>
+<p>1) initialize a PWM using <code>hal_pwm_init</code> -- this binds the driver to the device
+for the specific PWM you are using
+2) Optionally set the frequency of the PWM using <code>hal_pwm_set_frequency</code>
+-- PWMs that support a TOP register have fine control over their frequency
+settings. If this command is not supported by the PWM it will return an error
+and its likely that there is no TOP register; the frequency resolution is not
+finely adjustable. See the BSP for coarse adjustment of the PWM frequency.<br />
+3) Enable the PWM to output a specific duty cycle using the
+<code>hal_pwm_enable_duty_cycle</code> API</p>
+<p>To change the duty cycle dynamically, just issue another
+<code>hal_pwm_enable_duty_cycle</code> command.</p>
+<p>To disable the PWM waveform, use <code>hal_pwm_disable</code>.</p>
+
+ <div class="row">
+
+
+
+
+<ul class="nav nav-pills" style="margin-bottom: 10px">
+ <li>
+
+ <a href=../../hal_i2c/hal_i2c/>
+ <span class="fa fa-arrow-left"></span>
+ Previous: I2C
+ </a>
+
+ </li>
+ <li class="pull-right">
+
+ <a href=../../hal_spi/hal_spi/>
+ Next: SPI
+ <span class="fa fa-arrow-right"></span>
+ </a>
+
+ </li>
+</ul>
+ </div>
+ <div class="row">
+ <footer>
+ <div class="row">
+ <div class="col-md-12">
+
+ <p class="copyright">Copyright © 2015 The Apache Software Foundation, Licensed under the Apache License, Version 2.0 Apache and the Apache feather logo are trademarks of The Apache Software Foundation.<br>The Apache Software Foundation Apache Incubator</p>
+
+ </div>
+ </div>
+ <div class="copyright-logos">
+ <div class="row">
+ <div class="col-xs-6 text-right">
+ <img src="/img/apache-feather.png" alt="Apache" title="Apache">
+ </div>
+ <div class="col-xs-6 text-left">
+ <img src="/img/apache-logo.png" alt="Apache Incubator" title="Apache Incubator">
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-12">
+ <small class="footnote">
+ MyNewt is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
+ </small>
+ </div>
+ </div>
+</footer>
+ </div>
+ </div>
+ </div>
+
+
+ </div>
+
+ <script src="../../../../../js/jquery-1.10.2.min.js"></script>
+ <script src="../../../../../js/bootstrap-3.0.3.min.js"></script>
+ <script src="../../../../../js/highlight.pack.js"></script>
+ <script src="../../../../../js/base.js"></script>
+ <script src="../../../../../js/custom.js"></script>
+
+ </body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal_spi/hal_spi/index.html
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal_spi/hal_spi/index.html b/os/modules/hal/hal_spi/hal_spi/index.html
new file mode 100644
index 0000000..68f4e33
--- /dev/null
+++ b/os/modules/hal/hal_spi/hal_spi/index.html
@@ -0,0 +1,830 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+
+ <link rel="canonical" href="http://mynewt.apache.org/os/modules/hal/hal_spi/hal_spi/">
+ <link rel="shortcut icon" href="../../../../../img/favicon.ico">
+
+ <title>SPI - Apache Mynewt</title>
+
+ <link href="../../../../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
+ <link href="../../../../../css/font-awesome-4.0.3.css" rel="stylesheet">
+ <link rel="stylesheet" href="../../../../../css/highlight.css">
+ <link href="../../../../../css/base.css" rel="stylesheet">
+ <link href="../../../../../css/custom.css" rel="stylesheet">
+ <link href='https://fonts.googleapis.com/css?family=Roboto:400,500,700,900,300,100' rel='stylesheet' type='text/css'>
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
+ <link href="../../../../../extra.css" rel="stylesheet">
+
+ <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
+ <!--[if lt IE 9]>
+ <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
+ <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
+ <![endif]-->
+
+
+ <script>
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+ ga('create', 'UA-72162311-1', 'mynewt.incubator.apache.org');
+ ga('send', 'pageview');
+ </script>
+
+ </head>
+
+
+ <body class="SPI">
+
+
+ <div id="navbar" class="navbar navbar-default navbar-fixed-top" role="navigation">
+ <div class="logo-container">
+ <img src="/img/logo.svg">
+ </div>
+ <div class="container-fluid">
+ <!-- Collapsed navigation -->
+ <div class="navbar-header">
+ <!-- Expander button -->
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+
+ </div>
+
+ <!-- Expanded navigation -->
+ <div class="navbar-collapse collapse">
+ <!-- Main navigation -->
+ <ul class="nav navbar-nav navbar-right">
+ <li>
+ <a href="/">Home</a>
+ </li>
+ <li>
+ <a href="/about/">About</a>
+ </li>
+ <li class="dropdown">
+ <a href="/documentation/" class="dropdown-toggle" data-toggle="dropdown">Docs <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+
+
+
+
+
+
+ <li >
+ <a href="../../../../../documentation/">
+ Overview
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="active">
+ <a href="../../../../get_started/introduction/">
+ Mynewt OS Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../../../newt/newt_intro/">
+ Newt Tool Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../../../newtmgr/overview/">
+ Newt Manager Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../../tutorials/how_to_edit_docs/">
+ Appendix
+ </a>
+ </li>
+
+
+ </ul>
+ </li>
+ <li>
+ <a href="/download/">Download</a>
+ </li>
+ <li>
+ <a href="/community/">Community</a>
+ </li>
+ <li>
+ <a href="/events/">Events</a>
+ </li>
+ </ul>
+
+ <!-- Search, Navigation and Repo links -->
+ <ul class="nav navbar-nav navbar-right">
+
+ </ul>
+ </div>
+ </div>
+</div>
+
+
+
+ <div class="container-fluid">
+
+ <div class="row sm-extra-padding">
+ <div id="docSidebar" class="col-md-3 bg-grey sidebar-container"><div class="bs-sidebar hidden-print" role="complementary">
+ <div class="sidebar-top">
+ <img class="hidden-xs hidden-sm logo-small" src="/img/logo.svg" alt="MyNewt" title="MyNewt">
+ <div class="small" role="search">
+ <form id ="rtd-search-form" class="wy-form" action="../../../../../search.html" method="get">
+ <div class="form-group">
+ <input type="text" name="q" placeholder="Search documentation" />
+ <button class="search-button" type="submit"><i class="fa fa-search"></i></button>
+ </div>
+ </form>
+ </div>
+ </div>
+ <ul class="nav bs-sidenav">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../get_started/introduction/
+">Mynewt OS Manual</a>
+
+
+ <ul class="current-toc">
+
+
+
+
+ <li>
+ <a href="../../../../get_started/introduction/">Introduction</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li ><a href="../../../../get_started/get_started/">Quick Start</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../get_started/vocabulary/">Concepts</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../tutorials/tutorials/">Tutorials</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../os_user_guide/">OS User Guide</a></li>
+
+
+ <ul class="current-toc">
+
+
+
+
+
+
+
+ <li ><a href="../../../../core_os/mynewt_os/">OS Core</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../core_os/porting/port_os/">Porting to your Platform</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../console/console/">Console</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../shell/shell/">Shell</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../bootloader/bootloader/">Bootloader</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+
+
+ ../../../fs/fs/fs/
+
+">File System</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../hal/">Hardware Abstraction Layer</a></li>
+
+
+ <ul class="current-toc">
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_architecture/">Architecture</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li><a href="
+ ../../hal_api/
+">API</a>
+
+
+ <ul class="current-toc">
+
+
+
+
+ <li>
+ <a href="../../hal_api/">Summary</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_adc/hal_adc/">ADC</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_cputime/hal_cpu_timer/">CPU timer</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_dac/hal_dac/">DAC</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li><a href="
+ ../../hal_flash/hal_flash/
+">Flash memory</a>
+
+
+ </li>
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_gpio/hal_gpio/">GPIO</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_i2c/hal_i2c/">I2C</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_pwm/hal_pwm/">PWM</a>
+ </li>
+
+
+
+
+
+
+
+ <li class="active">
+ SPI
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_system/hal_sys/">System</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_uart/hal_uart/">UART</a>
+ </li>
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_in_libraries/">Using HAL</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_creation/">Creating HAL</a>
+ </li>
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../testutil/testutil/">Test Utilities</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../imgmgr/imgmgr/">Image Manager</a></li>
+
+
+ </li>
+
+
+
+
+
+
+ <li>
+ <a href="../../../baselibc/">Baselibc library</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li ><a href="../../../elua/elua/">Embedded Lua</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../json/json/">JSON</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../stats/stats/">Stats</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../logs/logs/">Logs</a></li>
+
+
+ </li>
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../../network/ble/ble_intro/
+">BLE User Guide</a>
+
+
+ </li>
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../../newt/newt_intro/
+">Newt Tool Manual</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../../newtmgr/overview/
+">Newt Manager Manual</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../tutorials/how_to_edit_docs/
+">Appendix</a>
+
+
+ </li>
+
+
+
+ </ul>
+</div></div>
+
+ <div class="show-sidebar-container">
+ <button class="show-sidebar">Docs Menu</button>
+ </div>
+
+ <div class="col-md-offset-3 col-md-9 documentation-viewer" role="main">
+ <div class="row doc-header">
+ <div class="col-sm-6">
+
+<ul class="nav nav-pills">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="active" role="presentation"><a href="../../../../get_started/introduction/">Mynewt OS</a></li>
+
+
+
+ <li role="presentation"><a href="../../../../../newt/newt_intro/">Newt Tool</a></li>
+
+
+
+ <li role="presentation"><a href="../../../../../newtmgr/overview/">Newt Mgr</a></li>
+
+
+
+
+</ul>
+ </div>
+ <div class="col-sm-6">
+ <div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="/documentation/">Docs</a></li>
+
+
+
+ <li>» <a href="../../hal/">Hardware Abstraction Layer</a></li>
+
+
+
+ <li>» <a href="../../hal_api/">API</a></li>
+
+
+
+ <li>» SPI</li>
+
+
+
+ </ul>
+</div>
+ </div>
+ </div>
+
+ <h1 id="hal_spi">hal_spi<a class="headerlink" href="#hal_spi" title="Permanent link">¶</a></h1>
+<p>SPI (Serial Peripheral Interface) is a synchronous 4-wire serial interface
+commonly used to connect components in embedded systems.</p>
+<p>For a detailed description of SPI, see <a href="https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus">Wikipedia</a>.</p>
+<h3 id="description">Description<a class="headerlink" href="#description" title="Permanent link">¶</a></h3>
+<p>The Mynewt HAL interface supports the SPI master functionality only. Future
+version will support SPI slave functionality.</p>
+<h3 id="definition">Definition<a class="headerlink" href="#definition" title="Permanent link">¶</a></h3>
+<p><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_spi.h">hal_spi.h</a></p>
+<h3 id="hal_spi-theory-of-operation">HAL_SPI Theory Of Operation<a class="headerlink" href="#hal_spi-theory-of-operation" title="Permanent link">¶</a></h3>
+<p>SPI is called a 4-wire interface because of the 4 signals, MISO, MOSI, CLK,
+and SS. The SS signal (slave select) is an active low signal that activates
+a SPI slave device. This is how a master "addresses" a particular slave
+device. Often this signal is also referred to as "chip select" as it
+selects particular slave device for communications.</p>
+<p>The Mynewt SPI HAL has blocking transfers. This means that the API call
+to transfer a byte will wait until the byte completes transmissions before
+the function returns.</p>
+<p>Since SPI is generally a shared communications bus, the hal_spi API allows
+SPI runtime configuration to be compatible with the data format and speed of the
+slave device. See the <code>hal_spi_config</code> method in the API above for a
+description of the available settings. These settings are critical to the
+operation of the slave device.</p>
+<p>The Mynewt SPI HAL does not include built-in SS signaling. Its up to the
+hal_spi user to control their own SS pins. Typically applications will do
+this with GPIO.</p>
+<p>An example of this would look like this (error handling excluded for brevity):</p>
+<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"> /* each device may have different settings */
+ extern struct hal_spi_settings dev1;
+ extern struct hal_spi_settings dev2;
+
+ gpio_init_out(SS_DEV_1, 1);
+ gpio_init_out(SS_DEV_2, 1);
+ hal_spi *pspi = hal_spi_init(SPI0);
+
+ ...
+ /* write a single byte (0) to device 1 */
+ hal_spi_config(pspi, &dev1);
+ gpio_clear(SS_DEV_1)
+ rc = hal_spi_transfer(pspi, 0)
+ gpio_set(SS_DEV_1)
+
+ /* read a single byte from device 2 */
+ hal_spi_config(pspi, &dev2);
+ gpio_clear(SS_DEV_2)
+ val = hal_spi_transfer(pspi, 0)
+ gpio_set(SS_DEV_2)
+</pre></div>
+
+
+<p>Depending on the device's operation, it may be necessary or more efficient
+to write or read multiple bytes in a single transaction. An example is
+shown below</p>
+<p>```no-highlight</p>
+<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%">void spi_write_buf(struct hal_spi *pspi, uint8_t *buf, int len) {
+ char *ptr = buf;
+
+ hal_spi_config(pspi, &dev2);
+ gpio_clear(SS_DEV_2)
+ while(len-- > 0) {
+ val = hal_spi_transfer(pspi, (uint16_t) *ptr++)
+ }
+ gpio_set(SS_DEV_2)
+}
+</pre></div>
+
+ <div class="row">
+
+
+
+
+<ul class="nav nav-pills" style="margin-bottom: 10px">
+ <li>
+
+ <a href=../../hal_pwm/hal_pwm/>
+ <span class="fa fa-arrow-left"></span>
+ Previous: PWM
+ </a>
+
+ </li>
+ <li class="pull-right">
+
+ <a href=../../hal_system/hal_sys/>
+ Next: System
+ <span class="fa fa-arrow-right"></span>
+ </a>
+
+ </li>
+</ul>
+ </div>
+ <div class="row">
+ <footer>
+ <div class="row">
+ <div class="col-md-12">
+
+ <p class="copyright">Copyright © 2015 The Apache Software Foundation, Licensed under the Apache License, Version 2.0 Apache and the Apache feather logo are trademarks of The Apache Software Foundation.<br>The Apache Software Foundation Apache Incubator</p>
+
+ </div>
+ </div>
+ <div class="copyright-logos">
+ <div class="row">
+ <div class="col-xs-6 text-right">
+ <img src="/img/apache-feather.png" alt="Apache" title="Apache">
+ </div>
+ <div class="col-xs-6 text-left">
+ <img src="/img/apache-logo.png" alt="Apache Incubator" title="Apache Incubator">
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-12">
+ <small class="footnote">
+ MyNewt is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
+ </small>
+ </div>
+ </div>
+</footer>
+ </div>
+ </div>
+ </div>
+
+
+ </div>
+
+ <script src="../../../../../js/jquery-1.10.2.min.js"></script>
+ <script src="../../../../../js/bootstrap-3.0.3.min.js"></script>
+ <script src="../../../../../js/highlight.pack.js"></script>
+ <script src="../../../../../js/base.js"></script>
+ <script src="../../../../../js/custom.js"></script>
+
+ </body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal_system/hal_sys/index.html
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal_system/hal_sys/index.html b/os/modules/hal/hal_system/hal_sys/index.html
index 39788b3..93a2777 100644
--- a/os/modules/hal/hal_system/hal_sys/index.html
+++ b/os/modules/hal/hal_system/hal_sys/index.html
@@ -326,6 +326,16 @@
+ <li>
+ <a href="../../hal_architecture/">Architecture</a>
+ </li>
+
+
+
+
+
+
+
<li><a href="
../../hal_api/
@@ -348,7 +358,27 @@
<li>
- <a href="../../hal_gpio/hal_gpio/">GPIO</a>
+ <a href="../../hal_adc/hal_adc/">ADC</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_cputime/hal_cpu_timer/">CPU timer</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_dac/hal_dac/">DAC</a>
</li>
@@ -371,7 +401,7 @@
<li>
- <a href="../../hal_cputime/hal_cpu_timer/">CPU timer</a>
+ <a href="../../hal_gpio/hal_gpio/">GPIO</a>
</li>
@@ -381,7 +411,27 @@
<li>
- <a href="../../hal_uart/hal_uart/">UART</a>
+ <a href="../../hal_i2c/hal_i2c/">I2C</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_pwm/hal_pwm/">PWM</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_spi/hal_spi/">SPI</a>
</li>
@@ -397,6 +447,16 @@
+
+
+
+ <li>
+ <a href="../../hal_uart/hal_uart/">UART</a>
+ </li>
+
+
+
+
</ul>
</li>
@@ -407,7 +467,7 @@
<li>
- <a href="../../hal_in_libraries/">Using</a>
+ <a href="../../hal_in_libraries/">Using HAL</a>
</li>
@@ -417,7 +477,7 @@
<li>
- <a href="../../hal_creation/">Creating</a>
+ <a href="../../hal_creation/">Creating HAL</a>
</li>
@@ -646,16 +706,16 @@
<ul class="nav nav-pills" style="margin-bottom: 10px">
<li>
- <a href=../../hal_uart/hal_uart/>
+ <a href=../../hal_spi/hal_spi/>
<span class="fa fa-arrow-left"></span>
- Previous: UART
+ Previous: SPI
</a>
</li>
<li class="pull-right">
- <a href=../../hal_in_libraries/>
- Next: Using
+ <a href=../../hal_uart/hal_uart/>
+ Next: UART
<span class="fa fa-arrow-right"></span>
</a>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal_uart/hal_uart/index.html
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal_uart/hal_uart/index.html b/os/modules/hal/hal_uart/hal_uart/index.html
index e6b0f5a..721f8ca 100644
--- a/os/modules/hal/hal_uart/hal_uart/index.html
+++ b/os/modules/hal/hal_uart/hal_uart/index.html
@@ -326,6 +326,16 @@
+ <li>
+ <a href="../../hal_architecture/">Architecture</a>
+ </li>
+
+
+
+
+
+
+
<li><a href="
../../hal_api/
@@ -348,7 +358,27 @@
<li>
- <a href="../../hal_gpio/hal_gpio/">GPIO</a>
+ <a href="../../hal_adc/hal_adc/">ADC</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_cputime/hal_cpu_timer/">CPU timer</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_dac/hal_dac/">DAC</a>
</li>
@@ -371,7 +401,7 @@
<li>
- <a href="../../hal_cputime/hal_cpu_timer/">CPU timer</a>
+ <a href="../../hal_gpio/hal_gpio/">GPIO</a>
</li>
@@ -380,8 +410,28 @@
- <li class="active">
- UART
+ <li>
+ <a href="../../hal_i2c/hal_i2c/">I2C</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_pwm/hal_pwm/">PWM</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_spi/hal_spi/">SPI</a>
</li>
@@ -397,6 +447,16 @@
+
+
+
+ <li class="active">
+ UART
+ </li>
+
+
+
+
</ul>
</li>
@@ -407,7 +467,7 @@
<li>
- <a href="../../hal_in_libraries/">Using</a>
+ <a href="../../hal_in_libraries/">Using HAL</a>
</li>
@@ -417,7 +477,7 @@
<li>
- <a href="../../hal_creation/">Creating</a>
+ <a href="../../hal_creation/">Creating HAL</a>
</li>
@@ -665,16 +725,16 @@
<ul class="nav nav-pills" style="margin-bottom: 10px">
<li>
- <a href=../../hal_cputime/hal_cpu_timer/>
+ <a href=../../hal_system/hal_sys/>
<span class="fa fa-arrow-left"></span>
- Previous: CPU timer
+ Previous: System
</a>
</li>
<li class="pull-right">
- <a href=../../hal_system/hal_sys/>
- Next: System
+ <a href=../../hal_in_libraries/>
+ Next: Using HAL
<span class="fa fa-arrow-right"></span>
</a>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/testutil/testutil/index.html
----------------------------------------------------------------------
diff --git a/os/modules/testutil/testutil/index.html b/os/modules/testutil/testutil/index.html
index ea29c4f..58e8213 100644
--- a/os/modules/testutil/testutil/index.html
+++ b/os/modules/testutil/testutil/index.html
@@ -635,7 +635,7 @@ This should be populated before <code>tu_init()</code> is called.</p>
<a href=../../hal/hal_creation/>
<span class="fa fa-arrow-left"></span>
- Previous: Creating
+ Previous: Creating HAL
</a>
</li>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/tutorials/arduino_zero/index.html
----------------------------------------------------------------------
diff --git a/os/tutorials/arduino_zero/index.html b/os/tutorials/arduino_zero/index.html
index fc5e44a..44efff7 100644
--- a/os/tutorials/arduino_zero/index.html
+++ b/os/tutorials/arduino_zero/index.html
@@ -510,15 +510,17 @@
<p>You will need the following equipment</p>
<ul>
<li>An Arduino Zero board. NOTE: There are many flavors of Arduino. Ensure that
-you have an Arduino Zero. See below for the verions of Arduino Zero that are
+you have an Arduino Zero. See below for the versions of Arduino Zero that are
compatible with this tutorial</li>
<li>A computer that can connect to the Arduino Zero over USB</li>
<li>A USB cable (Type A to micro B) that can connect the computer to the Arduino</li>
<li>The Mynewt Release</li>
</ul>
-<p>This tutorial has been tested on the following two Arduino Zero boards - Zero and Zero-Pro.</p>
-<p><img src="https://www.arduino.cc/en/uploads/Main/Zero_Usb_Ports.jpg" alt="Drawing" style="width: 400px;"/>
-<img src="http://www.arduino.org//images/products/ArduinoZeroPro-flat-org.jpg" alt="Drawing" style="width: 330px;"/></p>
+<p>This tutorial has been tested on the following three Arduino Zero boards - Zero, M0 Pro, and Zero-Pro.</p>
+<p><img src="https://www.arduino.cc/en/uploads/Main/Zero_Usb_Ports.jpg" alt="Drawing" style="width: 390px;"/>
+<img src="http://www.arduino.org/images/products/Arduino-M0Pro-flat.jpg" alt="Drawing" style="width: 310px;"/>
+<img src="http://www.arduino.org//images/products/ArduinoZeroPro-flat-org.jpg" alt="Drawing" style="width: 310px;"/></p>
+<p>Mynewt has not been tested on Arduino M0 which has no internal debugger support.</p>
<h3 id="install-mynewt-and-newt">Install Mynewt and Newt<a class="headerlink" href="#install-mynewt-and-newt" title="Permanent link">¶</a></h3>
<ul>
<li>If you have not already done so, install Newt as shown in the <a href="../../../newt/install/newt_mac/">Newt install tutorial</a></li>
@@ -579,7 +581,7 @@ $ newt target set arduino_boot build_profile=optimized
<p><br></p>
-<p>If you have an Arduino Zero Pro, you have to set the following next:</p>
+<p>If you have an Arduino Zero Pro or M0 Pro, you have to set the following next:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%">$ newt target set arduino_boot features=arduino_zero_pro
</pre></div>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/tutorials/tutorials/index.html
----------------------------------------------------------------------
diff --git a/os/tutorials/tutorials/index.html b/os/tutorials/tutorials/index.html
index 88f1b0b..f63c3cb 100644
--- a/os/tutorials/tutorials/index.html
+++ b/os/tutorials/tutorials/index.html
@@ -502,16 +502,44 @@
<h2 id="tutorials">Tutorials<a class="headerlink" href="#tutorials" title="Permanent link">¶</a></h2>
<p>If the introduction to Mynewt has piqued your interest and you want to familiarize yourself with some of its functionality, this series of tutorials is for you. The lessons are aimed at the beginner. </p>
-<p>Here is a sampler of the tutorials available. New ones are being constantly added and can be seen in the navigation bar on the left.</p>
+<p>The full list of tutorials can be seen in the navigation bar on the left. New ones are being constantly added and will show up there automatically.</p>
+<h3 id="prerequisites">Prerequisites:<a class="headerlink" href="#prerequisites" title="Permanent link">¶</a></h3>
+<ul>
+<li>You have installed Docker container of Newt tool and toolchains or you have installed them natively on your machine</li>
+<li>You have created a new project space (directory structure) and populated it with the core code repository (apache-mynewt-core) or know how to as explained in ../get_started/project_create.</li>
+</ul>
+<h3 id="tutorial-categories">Tutorial categories:<a class="headerlink" href="#tutorial-categories" title="Permanent link">¶</a></h3>
+<p>The tutorials fall into a few broad categories. Some examples in each category are listed below.</p>
+<ul>
+<li>
+<p>Making an LED blink (the "Hello World" equivalent in the electronics world)</p>
<ul>
<li><a href="../arduino_zero/">Blinky on Arduino Zero hardware</a></li>
<li><a href="../olimex/">Blinky on Olimex/STM32F407ZGT6 Cortex-M4 hardware</a></li>
<li><a href="../STM32F303/">Blinky on STM32F3 discovery kit from ST Micro</a></li>
<li><a href="../nRF52/">Blinky on nRF52 Development Kit from Nordic Semiconductor</a> <strong>Note:</strong> This supports BLE.</li>
-<li><a href="../unit_test/">Add a unit Test for a Package</a></li>
-<li><a href="../air_quality_sensor/">Add an air-quality sensor</a> </li>
-<li><a href="../add_repos/">Additional Repositories</a></li>
-<li><a href="../event_queue/">A task to manage multiple events</a></li>
+</ul>
+</li>
+<li>
+<p>Navigating the code and adding functionality </p>
+<ul>
+<li><a href="../add_repos/">Adding more repositories to your project</a></li>
+<li><a href="../unit_test/">Adding a unit test for a package</a></li>
+<li><a href="../event_queue/">Adding task to manage multiple events</a></li>
+</ul>
+</li>
+<li>
+<p>Bluetooth Low Energy</p>
+<ul>
+<li><a href="../bletiny_project/">Running the example BLE app included in the repo</a></li>
+</ul>
+</li>
+<li>
+<p>Using NewtMgr </p>
+<ul>
+<li><a href="../project-slinky/">Enabling remote communication with a device running Mynewt OS</a></li>
+</ul>
+</li>
</ul>
<p><strong>Send us an email on the dev@ mailing list if you have comments or suggestions!</strong> If you haven't joined the mailing list, you will find the links <a href="../../../community/">here</a>.</p>
<p><br></p>
[4/7] incubator-mynewt-site git commit: Lots of HAL additions by P
Dietrich. This closes #73. BLE security blurb added. Docker container and
quick start docs cleaned up
Posted by ad...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal_dac/hal_dac/index.html
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal_dac/hal_dac/index.html b/os/modules/hal/hal_dac/hal_dac/index.html
new file mode 100644
index 0000000..b67e82e
--- /dev/null
+++ b/os/modules/hal/hal_dac/hal_dac/index.html
@@ -0,0 +1,804 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+
+ <link rel="canonical" href="http://mynewt.apache.org/os/modules/hal/hal_dac/hal_dac/">
+ <link rel="shortcut icon" href="../../../../../img/favicon.ico">
+
+ <title>DAC - Apache Mynewt</title>
+
+ <link href="../../../../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
+ <link href="../../../../../css/font-awesome-4.0.3.css" rel="stylesheet">
+ <link rel="stylesheet" href="../../../../../css/highlight.css">
+ <link href="../../../../../css/base.css" rel="stylesheet">
+ <link href="../../../../../css/custom.css" rel="stylesheet">
+ <link href='https://fonts.googleapis.com/css?family=Roboto:400,500,700,900,300,100' rel='stylesheet' type='text/css'>
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
+ <link href="../../../../../extra.css" rel="stylesheet">
+
+ <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
+ <!--[if lt IE 9]>
+ <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
+ <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
+ <![endif]-->
+
+
+ <script>
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+ ga('create', 'UA-72162311-1', 'mynewt.incubator.apache.org');
+ ga('send', 'pageview');
+ </script>
+
+ </head>
+
+
+ <body class="DAC">
+
+
+ <div id="navbar" class="navbar navbar-default navbar-fixed-top" role="navigation">
+ <div class="logo-container">
+ <img src="/img/logo.svg">
+ </div>
+ <div class="container-fluid">
+ <!-- Collapsed navigation -->
+ <div class="navbar-header">
+ <!-- Expander button -->
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+
+ </div>
+
+ <!-- Expanded navigation -->
+ <div class="navbar-collapse collapse">
+ <!-- Main navigation -->
+ <ul class="nav navbar-nav navbar-right">
+ <li>
+ <a href="/">Home</a>
+ </li>
+ <li>
+ <a href="/about/">About</a>
+ </li>
+ <li class="dropdown">
+ <a href="/documentation/" class="dropdown-toggle" data-toggle="dropdown">Docs <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+
+
+
+
+
+
+ <li >
+ <a href="../../../../../documentation/">
+ Overview
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="active">
+ <a href="../../../../get_started/introduction/">
+ Mynewt OS Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../../../newt/newt_intro/">
+ Newt Tool Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../../../newtmgr/overview/">
+ Newt Manager Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../../tutorials/how_to_edit_docs/">
+ Appendix
+ </a>
+ </li>
+
+
+ </ul>
+ </li>
+ <li>
+ <a href="/download/">Download</a>
+ </li>
+ <li>
+ <a href="/community/">Community</a>
+ </li>
+ <li>
+ <a href="/events/">Events</a>
+ </li>
+ </ul>
+
+ <!-- Search, Navigation and Repo links -->
+ <ul class="nav navbar-nav navbar-right">
+
+ </ul>
+ </div>
+ </div>
+</div>
+
+
+
+ <div class="container-fluid">
+
+ <div class="row sm-extra-padding">
+ <div id="docSidebar" class="col-md-3 bg-grey sidebar-container"><div class="bs-sidebar hidden-print" role="complementary">
+ <div class="sidebar-top">
+ <img class="hidden-xs hidden-sm logo-small" src="/img/logo.svg" alt="MyNewt" title="MyNewt">
+ <div class="small" role="search">
+ <form id ="rtd-search-form" class="wy-form" action="../../../../../search.html" method="get">
+ <div class="form-group">
+ <input type="text" name="q" placeholder="Search documentation" />
+ <button class="search-button" type="submit"><i class="fa fa-search"></i></button>
+ </div>
+ </form>
+ </div>
+ </div>
+ <ul class="nav bs-sidenav">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../get_started/introduction/
+">Mynewt OS Manual</a>
+
+
+ <ul class="current-toc">
+
+
+
+
+ <li>
+ <a href="../../../../get_started/introduction/">Introduction</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li ><a href="../../../../get_started/get_started/">Quick Start</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../get_started/vocabulary/">Concepts</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../tutorials/tutorials/">Tutorials</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../os_user_guide/">OS User Guide</a></li>
+
+
+ <ul class="current-toc">
+
+
+
+
+
+
+
+ <li ><a href="../../../../core_os/mynewt_os/">OS Core</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../core_os/porting/port_os/">Porting to your Platform</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../console/console/">Console</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../shell/shell/">Shell</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../bootloader/bootloader/">Bootloader</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+
+
+ ../../../fs/fs/fs/
+
+">File System</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../hal/">Hardware Abstraction Layer</a></li>
+
+
+ <ul class="current-toc">
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_architecture/">Architecture</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li><a href="
+ ../../hal_api/
+">API</a>
+
+
+ <ul class="current-toc">
+
+
+
+
+ <li>
+ <a href="../../hal_api/">Summary</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_adc/hal_adc/">ADC</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_cputime/hal_cpu_timer/">CPU timer</a>
+ </li>
+
+
+
+
+
+
+
+ <li class="active">
+ DAC
+ </li>
+
+
+
+
+
+
+
+
+ <li><a href="
+ ../../hal_flash/hal_flash/
+">Flash memory</a>
+
+
+ </li>
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_gpio/hal_gpio/">GPIO</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_i2c/hal_i2c/">I2C</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_pwm/hal_pwm/">PWM</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_spi/hal_spi/">SPI</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_system/hal_sys/">System</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_uart/hal_uart/">UART</a>
+ </li>
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_in_libraries/">Using HAL</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_creation/">Creating HAL</a>
+ </li>
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../testutil/testutil/">Test Utilities</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../imgmgr/imgmgr/">Image Manager</a></li>
+
+
+ </li>
+
+
+
+
+
+
+ <li>
+ <a href="../../../baselibc/">Baselibc library</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li ><a href="../../../elua/elua/">Embedded Lua</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../json/json/">JSON</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../stats/stats/">Stats</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../logs/logs/">Logs</a></li>
+
+
+ </li>
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../../network/ble/ble_intro/
+">BLE User Guide</a>
+
+
+ </li>
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../../newt/newt_intro/
+">Newt Tool Manual</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../../newtmgr/overview/
+">Newt Manager Manual</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../tutorials/how_to_edit_docs/
+">Appendix</a>
+
+
+ </li>
+
+
+
+ </ul>
+</div></div>
+
+ <div class="show-sidebar-container">
+ <button class="show-sidebar">Docs Menu</button>
+ </div>
+
+ <div class="col-md-offset-3 col-md-9 documentation-viewer" role="main">
+ <div class="row doc-header">
+ <div class="col-sm-6">
+
+<ul class="nav nav-pills">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="active" role="presentation"><a href="../../../../get_started/introduction/">Mynewt OS</a></li>
+
+
+
+ <li role="presentation"><a href="../../../../../newt/newt_intro/">Newt Tool</a></li>
+
+
+
+ <li role="presentation"><a href="../../../../../newtmgr/overview/">Newt Mgr</a></li>
+
+
+
+
+</ul>
+ </div>
+ <div class="col-sm-6">
+ <div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="/documentation/">Docs</a></li>
+
+
+
+ <li>» <a href="../../hal/">Hardware Abstraction Layer</a></li>
+
+
+
+ <li>» <a href="../../hal_api/">API</a></li>
+
+
+
+ <li>» DAC</li>
+
+
+
+ </ul>
+</div>
+ </div>
+ </div>
+
+ <h1 id="hal_dac">hal_dac<a class="headerlink" href="#hal_dac" title="Permanent link">¶</a></h1>
+<p>The hardware independent interface to Digital To Analog Converters.</p>
+<h3 id="description">Description<a class="headerlink" href="#description" title="Permanent link">¶</a></h3>
+<p>For a description of Digital to Analog Converters, see
+<a href="https://en.wikipedia.org/wiki/Digital-to-analog_converter">wikipedia</a></p>
+<h3 id="definition">Definition<a class="headerlink" href="#definition" title="Permanent link">¶</a></h3>
+<p><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_dac.h">hal_dac.h</a></p>
+<h3 id="hal_dac-theory-of-operation">HAL_DAC Theory Of Operation<a class="headerlink" href="#hal_dac-theory-of-operation" title="Permanent link">¶</a></h3>
+<p>DACs have differing conversion resolution (bits), reference voltages (Volts)
+and conversion times (sample rate).</p>
+<p>The hal_dac implements function to query some of these values from the
+BSP.</p>
+<table>
+<thead>
+<tr>
+<th><strong>Method Name</strong></th>
+<th><strong> Description </strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>hal_dac_get_bits</td>
+<td>gets the resolution of the DAC in bits. For example if the DAC is 10 bits, it supports setting of value from 0 through 2^10 - 1 = 1023.</td>
+</tr>
+<tr>
+<td>hal_dac_get_ref_mv</td>
+<td>gets the underlying reference voltage for the DAC in millivolts. For example, if the DAC is 10 bits and the reference voltage is 5000 mV setting the DAC value to 1023 corresponds to 5V; setting the DAC value to 0 corresponds to 0 volts.</td>
+</tr>
+</tbody>
+</table>
+<p>From these two pieces of information the application or library can
+determine how to set a specific output voltage. NOTE: each underlying
+hardware may return different values for these settings.</p>
+<p>The API to set the DAC output value is blocking. This means the function
+will return after the DAC value has been programmed.</p>
+<p>Future HAL_DAC APIs will include A DMA interface to automatically write
+DMA data to the DAC based in events.</p>
+<p>The Mynewt HAL also supports a <a href="../../hal_pwm/hal_pwm/">PWM</a> interface which can
+be used in conjunction with a low pass filter to set an analog output voltage.</p>
+
+ <div class="row">
+
+
+
+
+<ul class="nav nav-pills" style="margin-bottom: 10px">
+ <li>
+
+ <a href=../../hal_cputime/hal_cpu_timer/>
+ <span class="fa fa-arrow-left"></span>
+ Previous: CPU timer
+ </a>
+
+ </li>
+ <li class="pull-right">
+
+ <a href=../../hal_flash/hal_flash/>
+ Next: Overview
+ <span class="fa fa-arrow-right"></span>
+ </a>
+
+ </li>
+</ul>
+ </div>
+ <div class="row">
+ <footer>
+ <div class="row">
+ <div class="col-md-12">
+
+ <p class="copyright">Copyright © 2015 The Apache Software Foundation, Licensed under the Apache License, Version 2.0 Apache and the Apache feather logo are trademarks of The Apache Software Foundation.<br>The Apache Software Foundation Apache Incubator</p>
+
+ </div>
+ </div>
+ <div class="copyright-logos">
+ <div class="row">
+ <div class="col-xs-6 text-right">
+ <img src="/img/apache-feather.png" alt="Apache" title="Apache">
+ </div>
+ <div class="col-xs-6 text-left">
+ <img src="/img/apache-logo.png" alt="Apache Incubator" title="Apache Incubator">
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-12">
+ <small class="footnote">
+ MyNewt is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
+ </small>
+ </div>
+ </div>
+</footer>
+ </div>
+ </div>
+ </div>
+
+
+ </div>
+
+ <script src="../../../../../js/jquery-1.10.2.min.js"></script>
+ <script src="../../../../../js/bootstrap-3.0.3.min.js"></script>
+ <script src="../../../../../js/highlight.pack.js"></script>
+ <script src="../../../../../js/base.js"></script>
+ <script src="../../../../../js/custom.js"></script>
+
+ </body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal_drawing.graphml
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal_drawing.graphml b/os/modules/hal/hal_drawing.graphml
new file mode 100644
index 0000000..d544889
--- /dev/null
+++ b/os/modules/hal/hal_drawing.graphml
@@ -0,0 +1,416 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
+ <!--Created by yEd 3.15.0.2-->
+ <key attr.name="Description" attr.type="string" for="graph" id="d0"/>
+ <key for="port" id="d1" yfiles.type="portgraphics"/>
+ <key for="port" id="d2" yfiles.type="portgeometry"/>
+ <key for="port" id="d3" yfiles.type="portuserdata"/>
+ <key attr.name="url" attr.type="string" for="node" id="d4"/>
+ <key attr.name="description" attr.type="string" for="node" id="d5"/>
+ <key for="node" id="d6" yfiles.type="nodegraphics"/>
+ <key for="graphml" id="d7" yfiles.type="resources"/>
+ <key attr.name="url" attr.type="string" for="edge" id="d8"/>
+ <key attr.name="description" attr.type="string" for="edge" id="d9"/>
+ <key for="edge" id="d10" yfiles.type="edgegraphics"/>
+ <graph edgedefault="directed" id="G">
+ <data key="d0"/>
+ <node id="n0">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="41.31911087036133" width="641.0" x="65.0" y="-595.7535556157429"/>
+ <y:Fill color="#00FFFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="32.265625" modelName="custom" textColor="#000000" visible="true" width="467.2421875" x="86.87890625" y="4.526742935180664">hw/hal/hal_xxx_api.h
+This is used by the application programmer to create and use hardware devices<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n1">
+ <data key="d6">
+ <y:SVGNode>
+ <y:Geometry height="62.31911087036133" width="56.55500030517578" x="372.2224998474121" y="-697.4928887685139"/>
+ <y:Fill color="#CCCCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="163.12890625" x="-53.28695297241211" y="66.31911087036133">Library or App Programmer<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="-0.5" nodeRatioX="0.0" nodeRatioY="0.5" offsetX="0.0" offsetY="4.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:SVGNodeProperties usingVisualBounds="true"/>
+ <y:SVGModel svgBoundsPolicy="0">
+ <y:SVGContent refid="1"/>
+ </y:SVGModel>
+ </y:SVGNode>
+ </data>
+ </node>
+ <node id="n2">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="353.0" width="137.0" x="127.5" y="-189.10722192128503"/>
+ <y:Fill color="#FF99CC" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="node_width" configuration="CroppingLabel" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="203.859375" modelName="custom" textColor="#000000" visible="true" width="137.0" x="0.0" y="74.5703125">BSP
+
+The BSP provides the system description via the SYSID enumeration.
+
+The BSP serves to MAP the init function from the hal into a driver and call the driver intializtion and creation, providing the driver config.<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n3">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="348.0" width="269.0" x="437.0" y="-184.10722192128503"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="node_width" configuration="CroppingLabel" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="62.53125" modelName="custom" textColor="#000000" visible="true" width="269.0" x="0.0" y="142.734375">Device Driver
+This contains the device implementation. This hooks directly to the hal interfacevia the function pointer API defined in hal_xxx_int.h<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n4">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="348.0" width="96.0" x="335.0" y="-184.10722192128503"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="60.53125" modelName="custom" rotationAngle="270.0" textColor="#000000" visible="true" width="314.998046875" x="17.734375" y="16.5009765625">/device/hal_xxx.h: This is where the device provides
+its interface to the hardware. Typically this contains
+the creation function and the configuration the
+device requires.<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n5">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="269.0" x="437.0" y="-524.4344447453816"/>
+ <y:Fill color="#FFFF99" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="267.337890625" x="0.8310546875" y="5.93359375">hal_xxx_method(struct hal_xxx_dev_s *pdev)<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n6">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="262.0" x="65.0" y="-527.6242361863453"/>
+ <y:Fill color="#FFFF99" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="255.671875" x="3.1640625" y="5.93359375">hal_xxx_init(SystemDeviceDescriptor sysid)<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n7">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="53.0" width="272.0" x="434.0" y="-269.83130534489953"/>
+ <y:Fill color="#FFFF99" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="174.90625" x="48.546875" y="17.43359375">pdev->driver_api->method()<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n8">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="53.0" width="262.0" x="65.0" y="-269.83130534489953"/>
+ <y:Fill color="#FFFF99" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="node_width" configuration="CroppingLabel" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="34.265625" modelName="custom" textColor="#000000" visible="true" width="262.0" x="0.0" y="9.3671875">struct hal_adc_device_s *
+bsp_get_hal_adc_device(sysid);<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="-0.5" labelRatioY="0.0" nodeRatioX="-0.5" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n9">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="348.0" width="36.0" x="281.75" y="-184.10722192128503"/>
+ <y:Fill color="#FFFF99" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" rotationAngle="270.0" textColor="#000000" visible="true" width="319.908203125" x="8.93359375" y="14.0458984375">dev_specific_contructor(cont struct dev_cfg_s pconfig)<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n10">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="62.31911087036133" width="641.0" x="65.0" y="-470.8140276273091"/>
+ <y:Fill color="#00FFFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="60.53125" modelName="custom" textColor="#000000" visible="true" width="392.83984375" x="124.080078125" y="0.8939304351806641">hw/hal/hal_xxx.c
+This is a shim in the HAL that dispatches to the proper driver
+and contains the factory to create a new device for the application
+(with help from the BSP).<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n11">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="62.31911087036133" width="382.0" x="65.0" y="-370.3226664861043"/>
+ <y:Fill color="#00FFFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="node_width" configuration="CroppingLabel" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="48.3984375" modelName="custom" textColor="#000000" visible="true" width="382.0" x="0.0" y="6.960336685180664">hw/hal/hal_xxx_int.h -- This is the internal API that a driver will implement. This includes the main interface to the driver and a small iterface for the BSP to help with creation of devices.<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n12">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="366.0" x="65.0" y="199.0"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="left" autoSizePolicy="node_width" configuration="CroppingLabel" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="20.1328125" modelName="custom" textColor="#000000" visible="true" width="366.0" x="0.0" y="4.93359375">DEVICE -- This code is implemented by the device driver<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n13">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="366.0" x="65.0" y="229.0"/>
+ <y:Fill color="#FF99CC" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="left" autoSizePolicy="node_width" configuration="CroppingLabel" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="20.1328125" modelName="custom" textColor="#000000" visible="true" width="366.0" x="0.0" y="4.93359375">BSP -- This code is implemented by the BSP designer<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n14">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="366.0" x="65.0" y="259.0"/>
+ <y:Fill color="#00FFFF" transparent="false"/>
+ <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+ <y:NodeLabel alignment="left" autoSizePolicy="node_width" configuration="CroppingLabel" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="20.1328125" modelName="custom" textColor="#000000" visible="true" width="366.0" x="0.0" y="4.93359375">HAL -- This code is provided in Mynewt<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <edge id="e0" source="n6" target="n8">
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e1" source="n8" target="n2">
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e2" source="n2" target="n4">
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e3" source="n5" target="n7">
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e4" source="n7" target="n3">
+ <data key="d10">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ </graph>
+ <data key="d7">
+ <y:Resources>
+ <y:Resource id="1"><?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="57px" height="63px" viewBox="0 0 57 63" enable-background="new 0 0 57 63" xml:space="preserve">
+<g>
+
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.5" y1="1570.3457" x2="27.741" y2="1600.1431" gradientTransform="matrix(1 0 0 1 0.1602 -1546.3828)">
+ <stop offset="0.2711" style="stop-color:#FFAB4F"/>
+ <stop offset="1" style="stop-color:#FFD28F"/>
+ </linearGradient>
+ <path fill="url(#SVGID_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M49.529,51.225c-4.396-4.396-10.951-5.884-12.063-6.109
+ V37.8H19.278c0,0,0.038,6.903,0,6.868c0,0-6.874,0.997-12.308,6.432C1.378,56.691,0.5,62.77,0.5,62.77
+ c0,1.938,1.575,3.492,3.523,3.492h48.51c1.947,0,3.521-1.558,3.521-3.492C56.055,62.768,54.211,55.906,49.529,51.225z"/>
+
+ <radialGradient id="face_x5F_white_1_" cx="27.7427" cy="1572.1094" r="23.4243" fx="23.1732" fy="1569.6195" gradientTransform="matrix(1 0 0 1 0.1602 -1546.3828)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FFD28F"/>
+ <stop offset="1" style="stop-color:#FFAB4F"/>
+ </radialGradient>
+ <path id="face_x5F_white_3_" fill="url(#face_x5F_white_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M43.676,23.357
+ c0.086,10.2-6.738,18.52-15.247,18.586c-8.502,0.068-15.466-8.146-15.552-18.344C12.794,13.4,19.618,5.079,28.123,5.012
+ C36.627,4.945,43.59,13.158,43.676,23.357z"/>
+
+ <linearGradient id="face_highlight_1_" gradientUnits="userSpaceOnUse" x1="3646.5117" y1="-6644.2471" x2="3670.1414" y2="-6737.6978" gradientTransform="matrix(0.275 0 0 -0.2733 -977.2951 -1807.6279)">
+ <stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.24"/>
+ <stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0.16"/>
+ </linearGradient>
+ <path id="face_highlight_3_" fill="url(#face_highlight_1_)" d="M27.958,6.333c-6.035,0.047-10.747,4.493-12.787,10.386
+ c-0.664,1.919-0.294,4.043,0.98,5.629c2.73,3.398,5.729,6.283,9.461,8.088c3.137,1.518,7.535,2.384,11.893,1.247
+ c2.274-0.592,3.988-2.459,4.375-4.766c0.183-1.094,0.293-2.289,0.283-3.553C42.083,13.952,36.271,6.268,27.958,6.333z"/>
+ <path fill="#656565" stroke="#4B4B4B" stroke-linejoin="round" stroke-miterlimit="10" d="M15.038,26.653
+ c0.145,2.05,3.468,2.593,6.477,2.56c2.298-0.026,3.25-0.889,4.746-2.685c2.539-3.05-0.767-3.715-4.817-3.67
+ C15.984,22.919,14.777,22.933,15.038,26.653z"/>
+ <path fill="#656565" stroke="#4B4B4B" stroke-linejoin="round" stroke-miterlimit="10" d="M41.116,26.653
+ c-0.146,2.05-3.47,2.593-6.478,2.56c-2.299-0.026-3.252-0.889-4.746-2.685c-2.538-3.05,0.769-3.715,4.816-3.67
+ C40.17,22.919,41.377,22.933,41.116,26.653z"/>
+ <path fill="none" stroke="#4B4B4B" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M27.453,24.375
+ c0,0,0.604-0.469,1.305,0"/>
+
+ <line fill="none" stroke="#4B4B4B" stroke-linecap="round" stroke-miterlimit="10" x1="41.727" y1="24.592" x2="41.844" y2="25.375"/>
+
+ <line fill="none" stroke="#4B4B4B" stroke-linecap="round" stroke-miterlimit="10" x1="42.165" y1="24.938" x2="44.027" y2="24.938"/>
+
+ <line fill="none" stroke="#4B4B4B" stroke-linecap="round" stroke-miterlimit="10" x1="14.374" y1="24.592" x2="14.257" y2="25.375"/>
+
+ <line fill="none" stroke="#4B4B4B" stroke-linecap="round" stroke-miterlimit="10" x1="13.937" y1="24.938" x2="12.073" y2="24.938"/>
+ <path id="body_9_" fill="#9B9B9B" stroke="#4B4B4B" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
+ M0.5,62.768c0,1.938,1.575,3.494,3.523,3.494h48.51c1.947,0,3.521-1.559,3.521-3.494c0,0-1.844-6.861-6.525-11.543
+ c-4.815-4.813-11.244-6.146-11.244-6.146c-1.771,1.655-5.61,2.802-10.063,2.802c-4.453,0-8.292-1.146-10.063-2.802
+ c0,0-5.755,0.586-11.189,6.021C1.378,56.689,0.5,62.768,0.5,62.768z"/>
+
+ <path id="turtleneck_6_" fill="#9B9B9B" stroke="#4B4B4B" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
+ M39.715,44.786l-1.557-3.405c0,0-0.574,2.369-3.012,4.441c-2.109,1.795-6.785,2.072-6.785,2.072s-4.753-0.356-6.722-2.031
+ c-2.436-2.072-3.012-4.441-3.012-4.441l-1.555,3.404c0,0-0.552,1.404,1.37,3.479c1.025,1.105,5.203,3.611,9.682,3.582
+ c4.479-0.029,9.264-2.594,10.218-3.623C40.266,46.191,39.715,44.786,39.715,44.786z"/>
+ <path fill="#656565" stroke="#4B4B4B" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M49.529,51.225
+ c-1.094-1.094-2.319-2.006-3.563-2.766c0.193,0.346,0.401,0.68,0.574,1.041c-4.906,6.014-15.921,9.289-21.743,16.709
+ c1.969-7.594-11.166-13.127-14.493-16.926c-0.158-0.182-0.258-0.422-0.332-0.686c-1.015,0.707-2.031,1.525-3.001,2.5
+ c-5.592,5.592-6.47,11.67-6.47,11.67c0,1.936,1.575,3.489,3.523,3.489h48.51c1.948,0,3.521-1.558,3.521-3.489
+ C56.055,62.768,54.211,55.906,49.529,51.225z"/>
+ <path fill="#656565" stroke="#4B4B4B" stroke-linejoin="round" stroke-miterlimit="10" d="M3.007,32.205
+ c1.521,2.295,10.771,12.17,10.771,12.17s-5.137,3.012-3.474,4.908c3.327,3.799,10.533,14.018,14.865,16.467
+ c2.499-4.6-3.906-23.327-5.724-25.833c-1.296-1.786-3.22-3.269-4.598-5.417C14.846,34.5,9.195,34.5,3.007,32.205z"/>
+ <path fill="#656565" stroke="#4B4B4B" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M52.277,32.205
+ c-4.791,3.299-10.368,10.391-11.074,11.066c2.313,1.744,4.9,3.799,6.146,6.406c-4.906,6.014-14.766,9.277-21.747,16.069
+ c2.015-7.771,5.157-20.46,12.517-27.083c1.667-1.5,2.713-2.833,4.043-5.391C42.165,33.275,45.637,33.25,52.277,32.205z"/>
+ <path id="wh2_1_" fill="#9B9B9B" stroke="#4B4B4B" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
+ M28.276,15.5c5.635,0,10.826,1.416,14.979,3.794c-1.614-8.228-7.794-14.34-15.132-14.282c-7.272,0.057-13.299,6.155-14.846,14.294
+ C17.434,16.921,22.632,15.5,28.276,15.5z"/>
+ <path id="wh1_1_" fill="#9B9B9B" stroke="#4B4B4B" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
+ M28.278,20.808c5.662,0,11.937,0.811,16.391,2.207c-0.11-2.059-0.274-2.826-0.413-3.72c-4.154-2.379-10.344-3.795-15.98-3.795
+ c-5.644,0-11.842,1.421-16,3.807c-0.228,1.197-0.362,2.436-0.388,3.707C16.343,21.618,22.618,20.808,28.278,20.808z"/>
+</g>
+</svg>
+</y:Resource>
+ </y:Resources>
+ </data>
+</graphml>
[5/7] incubator-mynewt-site git commit: Lots of HAL additions by P
Dietrich. This closes #73. BLE security blurb added. Docker container and
quick start docs cleaned up
Posted by ad...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/network/ble/ble_intro/index.html
----------------------------------------------------------------------
diff --git a/network/ble/ble_intro/index.html b/network/ble/ble_intro/index.html
index 2bde884..b670a80 100644
--- a/network/ble/ble_intro/index.html
+++ b/network/ble/ble_intro/index.html
@@ -266,6 +266,16 @@
<li>
+ <a href="../ble_sec/">NimBLE Security</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
<a href="../nimble_setup/">Set up application</a>
</li>
@@ -484,8 +494,8 @@
</li>
<li class="pull-right">
- <a href=../nimble_setup/>
- Next: Set up application
+ <a href=../ble_sec/>
+ Next: NimBLE Security
<span class="fa fa-arrow-right"></span>
</a>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/network/ble/ble_sec/index.html
----------------------------------------------------------------------
diff --git a/network/ble/ble_sec/index.html b/network/ble/ble_sec/index.html
new file mode 100644
index 0000000..703b628
--- /dev/null
+++ b/network/ble/ble_sec/index.html
@@ -0,0 +1,541 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+
+ <link rel="canonical" href="http://mynewt.apache.org/network/ble/ble_sec/">
+ <link rel="shortcut icon" href="../../../img/favicon.ico">
+
+ <title>NimBLE Security - Apache Mynewt</title>
+
+ <link href="../../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
+ <link href="../../../css/font-awesome-4.0.3.css" rel="stylesheet">
+ <link rel="stylesheet" href="../../../css/highlight.css">
+ <link href="../../../css/base.css" rel="stylesheet">
+ <link href="../../../css/custom.css" rel="stylesheet">
+ <link href='https://fonts.googleapis.com/css?family=Roboto:400,500,700,900,300,100' rel='stylesheet' type='text/css'>
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
+ <link href="../../../extra.css" rel="stylesheet">
+
+ <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
+ <!--[if lt IE 9]>
+ <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
+ <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
+ <![endif]-->
+
+
+ <script>
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+ ga('create', 'UA-72162311-1', 'mynewt.incubator.apache.org');
+ ga('send', 'pageview');
+ </script>
+
+ </head>
+
+
+ <body class="NimBLE Security">
+
+
+ <div id="navbar" class="navbar navbar-default navbar-fixed-top" role="navigation">
+ <div class="logo-container">
+ <img src="/img/logo.svg">
+ </div>
+ <div class="container-fluid">
+ <!-- Collapsed navigation -->
+ <div class="navbar-header">
+ <!-- Expander button -->
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+
+ </div>
+
+ <!-- Expanded navigation -->
+ <div class="navbar-collapse collapse">
+ <!-- Main navigation -->
+ <ul class="nav navbar-nav navbar-right">
+ <li>
+ <a href="/">Home</a>
+ </li>
+ <li>
+ <a href="/about/">About</a>
+ </li>
+ <li class="dropdown">
+ <a href="/documentation/" class="dropdown-toggle" data-toggle="dropdown">Docs <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+
+
+
+
+
+
+ <li >
+ <a href="../../../documentation/">
+ Overview
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="active">
+ <a href="../../../os/get_started/introduction/">
+ Mynewt OS Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../newt/newt_intro/">
+ Newt Tool Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../newtmgr/overview/">
+ Newt Manager Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../os/tutorials/how_to_edit_docs/">
+ Appendix
+ </a>
+ </li>
+
+
+ </ul>
+ </li>
+ <li>
+ <a href="/download/">Download</a>
+ </li>
+ <li>
+ <a href="/community/">Community</a>
+ </li>
+ <li>
+ <a href="/events/">Events</a>
+ </li>
+ </ul>
+
+ <!-- Search, Navigation and Repo links -->
+ <ul class="nav navbar-nav navbar-right">
+
+ </ul>
+ </div>
+ </div>
+</div>
+
+
+
+ <div class="container-fluid">
+
+ <div class="row sm-extra-padding">
+ <div id="docSidebar" class="col-md-3 bg-grey sidebar-container"><div class="bs-sidebar hidden-print" role="complementary">
+ <div class="sidebar-top">
+ <img class="hidden-xs hidden-sm logo-small" src="/img/logo.svg" alt="MyNewt" title="MyNewt">
+ <div class="small" role="search">
+ <form id ="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
+ <div class="form-group">
+ <input type="text" name="q" placeholder="Search documentation" />
+ <button class="search-button" type="submit"><i class="fa fa-search"></i></button>
+ </div>
+ </form>
+ </div>
+ </div>
+ <ul class="nav bs-sidenav">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../os/get_started/introduction/
+">Mynewt OS Manual</a>
+
+
+ <ul class="current-toc">
+
+
+
+
+ <li>
+ <a href="../../../os/get_started/introduction/">Introduction</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li ><a href="../../../os/get_started/get_started/">Quick Start</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../os/get_started/vocabulary/">Concepts</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../os/tutorials/tutorials/">Tutorials</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../os/os_user_guide/">OS User Guide</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../ble_intro/
+">BLE User Guide</a>
+
+
+ <ul class="current-toc">
+
+
+
+
+ <li>
+ <a href="../ble_intro/">NimBLE Introduction</a>
+ </li>
+
+
+
+
+
+
+
+ <li class="active">
+ NimBLE Security
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../nimble_setup/">Set up application</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li ><a href="../ini_stack/ble_ini_intro/">Initialize stack</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../bletiny_api/">API for bletiny app</a></li>
+
+
+ </li>
+
+
+
+ </ul>
+
+ </li>
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../newt/newt_intro/
+">Newt Tool Manual</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../newtmgr/overview/
+">Newt Manager Manual</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../os/tutorials/how_to_edit_docs/
+">Appendix</a>
+
+
+ </li>
+
+
+
+ </ul>
+</div></div>
+
+ <div class="show-sidebar-container">
+ <button class="show-sidebar">Docs Menu</button>
+ </div>
+
+ <div class="col-md-offset-3 col-md-9 documentation-viewer" role="main">
+ <div class="row doc-header">
+ <div class="col-sm-6">
+
+<ul class="nav nav-pills">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="active" role="presentation"><a href="../../../os/get_started/introduction/">Mynewt OS</a></li>
+
+
+
+ <li role="presentation"><a href="../../../newt/newt_intro/">Newt Tool</a></li>
+
+
+
+ <li role="presentation"><a href="../../../newtmgr/overview/">Newt Mgr</a></li>
+
+
+
+
+</ul>
+ </div>
+ <div class="col-sm-6">
+ <div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="/documentation/">Docs</a></li>
+
+
+
+ <li>» <a href="../../../os/get_started/introduction/">Mynewt OS Manual</a></li>
+
+
+
+ <li>» <a href="../ble_intro/">BLE User Guide</a></li>
+
+
+
+ <li>» NimBLE Security</li>
+
+
+
+ </ul>
+</div>
+ </div>
+ </div>
+
+ <h2 id="ble-security">BLE Security<a class="headerlink" href="#ble-security" title="Permanent link">¶</a></h2>
+<p>The Bluetooth Low Energy security model includes five distinct security concepts as listed below. For detailed specifications, see BLUETOOTH SPECIFICATION Version 4.2 [Vol 1, Part A].</p>
+<ul>
+<li>
+<p><strong>Pairing</strong>: The process for creating one or more shared secret keys. In LE a single link key is generated by combining contributions from each device into a link key used during pairing. </p>
+</li>
+<li>
+<p><strong>Bonding</strong>: The act of storing the keys created during pairing for use in subsequent connections in order to form a trusted device pair. <font color="#F2853F"><em>Bonding is currently a roadmap item for Apache Mynewt.</em> </font></p>
+</li>
+<li>
+<p><strong>Device authentication</strong>: Verification that the two devices have the same keys (verify device identity)</p>
+</li>
+<li>
+<p><strong>Encryption</strong>: Keeps message confidential. Encryption in Bluetooth LE uses AES-CCM cryptography and is performed in the <em>Controller</em>.</p>
+</li>
+<li>
+<p><strong>Message integrity</strong>: Protects against message forgeries.</p>
+</li>
+</ul>
+<p>Bluetooth LE uses four association models depending on the I/O capabilities of the devices. <font color="#F2853F"><em>Apache Mynewt has first implemented support for "Just Works" only.</em></font></p>
+<ul>
+<li>
+<p><strong>Just Works</strong>: designed for scenarios where at least one of the devices does not have a display capable of displaying a six digit number nor does it have a keyboard capable of entering six decimal digits.</p>
+</li>
+<li>
+<p><strong>Numeric Comparison</strong>: designed for scenarios where both devices are capable of displaying a six digit number and both are capable of having the user enter "yes" or "no". A good example of this model is the cell phone / PC scenario.</p>
+</li>
+<li>
+<p><strong>Out of Band</strong>: designed for scenarios where an Out of Band mechanism is used to both discover the devices as well as to exchange or transfer cryptographic numbers used in the pairing process.</p>
+</li>
+<li>
+<p><strong>Passkey Entry</strong>: designed for the scenario where one device has input capability but does not have the capability to display six digits and the other device has output capabilities. A good example of this model is the PC and keyboard scenario.</p>
+</li>
+</ul>
+<h3 id="key-generation">Key Generation<a class="headerlink" href="#key-generation" title="Permanent link">¶</a></h3>
+<p>Key generation for all purposes in Bluetooth LE is performed by the <em>Host</em> on each LE device independent of any other LE device. </p>
+<h3 id="privacy-feature">Privacy Feature<a class="headerlink" href="#privacy-feature" title="Permanent link">¶</a></h3>
+<p>Bluetooth LE supports an optional feature during connection mode and connection procedures that reduces the ability to track a LE device over a period of time by changing the Bluetooth device address on a frequent basis. <font color="#F2853F"><em>Privacy support is currently a roadmap item for Apache Mynewt.</em></font></p>
+<p>There are two variants of the privacy feature. </p>
+<ul>
+<li>
+<p>In the first variant, private addresses are resolved and generated by the <em>Host</em>.</p>
+</li>
+<li>
+<p>In the second variant, private addresses are resolved and generated by the <em>Controller</em> without involving the Host after the Host provides the Controller device identity information. The Host may provide the Controller with a complete resolving list or a subset of the resolving list.</p>
+</li>
+</ul>
+<p>Device filtering becomes possible in the second variant when address resolution is performed in the Controller because the peer’s device identity address can be resolved prior to checking whether it is in the white list.</p>
+<p><strong>Note</strong>: When address resolution is performed exclusively in the Host, a device may experience increased power consumption because device filtering must be disabled.</p>
+<p>For more details on the privacy feature, refer to BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part C] (Published 02 December 2014), Page 592.</p>
+
+ <div class="row">
+
+
+
+
+<ul class="nav nav-pills" style="margin-bottom: 10px">
+ <li>
+
+ <a href=../ble_intro/>
+ <span class="fa fa-arrow-left"></span>
+ Previous: NimBLE Introduction
+ </a>
+
+ </li>
+ <li class="pull-right">
+
+ <a href=../nimble_setup/>
+ Next: Set up application
+ <span class="fa fa-arrow-right"></span>
+ </a>
+
+ </li>
+</ul>
+ </div>
+ <div class="row">
+ <footer>
+ <div class="row">
+ <div class="col-md-12">
+
+ <p class="copyright">Copyright © 2015 The Apache Software Foundation, Licensed under the Apache License, Version 2.0 Apache and the Apache feather logo are trademarks of The Apache Software Foundation.<br>The Apache Software Foundation Apache Incubator</p>
+
+ </div>
+ </div>
+ <div class="copyright-logos">
+ <div class="row">
+ <div class="col-xs-6 text-right">
+ <img src="/img/apache-feather.png" alt="Apache" title="Apache">
+ </div>
+ <div class="col-xs-6 text-left">
+ <img src="/img/apache-logo.png" alt="Apache Incubator" title="Apache Incubator">
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-12">
+ <small class="footnote">
+ MyNewt is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
+ </small>
+ </div>
+ </div>
+</footer>
+ </div>
+ </div>
+ </div>
+
+
+ </div>
+
+ <script src="../../../js/jquery-1.10.2.min.js"></script>
+ <script src="../../../js/bootstrap-3.0.3.min.js"></script>
+ <script src="../../../js/highlight.pack.js"></script>
+ <script src="../../../js/base.js"></script>
+ <script src="../../../js/custom.js"></script>
+
+ </body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/network/ble/bletiny/bletiny_GAP/index.html
----------------------------------------------------------------------
diff --git a/network/ble/bletiny/bletiny_GAP/index.html b/network/ble/bletiny/bletiny_GAP/index.html
index 80df843..32c40c8 100644
--- a/network/ble/bletiny/bletiny_GAP/index.html
+++ b/network/ble/bletiny/bletiny_GAP/index.html
@@ -266,6 +266,16 @@
<li>
+ <a href="../../ble_sec/">NimBLE Security</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
<a href="../../nimble_setup/">Set up application</a>
</li>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/network/ble/bletiny/bletiny_GATT/index.html
----------------------------------------------------------------------
diff --git a/network/ble/bletiny/bletiny_GATT/index.html b/network/ble/bletiny/bletiny_GATT/index.html
index 8519ef8..d50d000 100644
--- a/network/ble/bletiny/bletiny_GATT/index.html
+++ b/network/ble/bletiny/bletiny_GATT/index.html
@@ -266,6 +266,16 @@
<li>
+ <a href="../../ble_sec/">NimBLE Security</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
<a href="../../nimble_setup/">Set up application</a>
</li>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/network/ble/bletiny/bletiny_advdata/index.html
----------------------------------------------------------------------
diff --git a/network/ble/bletiny/bletiny_advdata/index.html b/network/ble/bletiny/bletiny_advdata/index.html
index eb64db7..f9b5b8e 100644
--- a/network/ble/bletiny/bletiny_advdata/index.html
+++ b/network/ble/bletiny/bletiny_advdata/index.html
@@ -266,6 +266,16 @@
<li>
+ <a href="../../ble_sec/">NimBLE Security</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
<a href="../../nimble_setup/">Set up application</a>
</li>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/network/ble/bletiny_api/index.html
----------------------------------------------------------------------
diff --git a/network/ble/bletiny_api/index.html b/network/ble/bletiny_api/index.html
index 9987d83..bd15dc9 100644
--- a/network/ble/bletiny_api/index.html
+++ b/network/ble/bletiny_api/index.html
@@ -266,6 +266,16 @@
<li>
+ <a href="../ble_sec/">NimBLE Security</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
<a href="../nimble_setup/">Set up application</a>
</li>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/network/ble/ini_stack/ble_add_cpu/index.html
----------------------------------------------------------------------
diff --git a/network/ble/ini_stack/ble_add_cpu/index.html b/network/ble/ini_stack/ble_add_cpu/index.html
index 71af09a..cf911d6 100644
--- a/network/ble/ini_stack/ble_add_cpu/index.html
+++ b/network/ble/ini_stack/ble_add_cpu/index.html
@@ -266,6 +266,16 @@
<li>
+ <a href="../../ble_sec/">NimBLE Security</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
<a href="../../nimble_setup/">Set up application</a>
</li>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/network/ble/ini_stack/ble_consolepkg/index.html
----------------------------------------------------------------------
diff --git a/network/ble/ini_stack/ble_consolepkg/index.html b/network/ble/ini_stack/ble_consolepkg/index.html
index e762938..6e2967a 100644
--- a/network/ble/ini_stack/ble_consolepkg/index.html
+++ b/network/ble/ini_stack/ble_consolepkg/index.html
@@ -266,6 +266,16 @@
<li>
+ <a href="../../ble_sec/">NimBLE Security</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
<a href="../../nimble_setup/">Set up application</a>
</li>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/network/ble/ini_stack/ble_controller_ini/index.html
----------------------------------------------------------------------
diff --git a/network/ble/ini_stack/ble_controller_ini/index.html b/network/ble/ini_stack/ble_controller_ini/index.html
index 2a4592a..0a48228 100644
--- a/network/ble/ini_stack/ble_controller_ini/index.html
+++ b/network/ble/ini_stack/ble_controller_ini/index.html
@@ -266,6 +266,16 @@
<li>
+ <a href="../../ble_sec/">NimBLE Security</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
<a href="../../nimble_setup/">Set up application</a>
</li>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/network/ble/ini_stack/ble_devadd/index.html
----------------------------------------------------------------------
diff --git a/network/ble/ini_stack/ble_devadd/index.html b/network/ble/ini_stack/ble_devadd/index.html
index ebeab35..a5dbc34 100644
--- a/network/ble/ini_stack/ble_devadd/index.html
+++ b/network/ble/ini_stack/ble_devadd/index.html
@@ -266,6 +266,16 @@
<li>
+ <a href="../../ble_sec/">NimBLE Security</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
<a href="../../nimble_setup/">Set up application</a>
</li>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/network/ble/ini_stack/ble_host_ini/index.html
----------------------------------------------------------------------
diff --git a/network/ble/ini_stack/ble_host_ini/index.html b/network/ble/ini_stack/ble_host_ini/index.html
index 5027fd6..59d0a6c 100644
--- a/network/ble/ini_stack/ble_host_ini/index.html
+++ b/network/ble/ini_stack/ble_host_ini/index.html
@@ -266,6 +266,16 @@
<li>
+ <a href="../../ble_sec/">NimBLE Security</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
<a href="../../nimble_setup/">Set up application</a>
</li>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/network/ble/ini_stack/ble_ini_intro/index.html
----------------------------------------------------------------------
diff --git a/network/ble/ini_stack/ble_ini_intro/index.html b/network/ble/ini_stack/ble_ini_intro/index.html
index 5d0c175..0a87f12 100644
--- a/network/ble/ini_stack/ble_ini_intro/index.html
+++ b/network/ble/ini_stack/ble_ini_intro/index.html
@@ -266,6 +266,16 @@
<li>
+ <a href="../../ble_sec/">NimBLE Security</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
<a href="../../nimble_setup/">Set up application</a>
</li>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/network/ble/ini_stack/ble_mempool/index.html
----------------------------------------------------------------------
diff --git a/network/ble/ini_stack/ble_mempool/index.html b/network/ble/ini_stack/ble_mempool/index.html
index 7f2e523..ac12d7d 100644
--- a/network/ble/ini_stack/ble_mempool/index.html
+++ b/network/ble/ini_stack/ble_mempool/index.html
@@ -266,6 +266,16 @@
<li>
+ <a href="../../ble_sec/">NimBLE Security</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
<a href="../../nimble_setup/">Set up application</a>
</li>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/network/ble/ini_stack/ble_statpkg/index.html
----------------------------------------------------------------------
diff --git a/network/ble/ini_stack/ble_statpkg/index.html b/network/ble/ini_stack/ble_statpkg/index.html
index 86fac0b..c9dc84f 100644
--- a/network/ble/ini_stack/ble_statpkg/index.html
+++ b/network/ble/ini_stack/ble_statpkg/index.html
@@ -266,6 +266,16 @@
<li>
+ <a href="../../ble_sec/">NimBLE Security</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
<a href="../../nimble_setup/">Set up application</a>
</li>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/network/ble/nimble_setup/index.html
----------------------------------------------------------------------
diff --git a/network/ble/nimble_setup/index.html b/network/ble/nimble_setup/index.html
index 31e0cc6..c906f15 100644
--- a/network/ble/nimble_setup/index.html
+++ b/network/ble/nimble_setup/index.html
@@ -265,6 +265,16 @@
+ <li>
+ <a href="../ble_sec/">NimBLE Security</a>
+ </li>
+
+
+
+
+
+
+
<li class="active">
Set up application
</li>
@@ -610,9 +620,9 @@ apache-mynewt-core's example Nimble apps. These apps can be found at the below
<ul class="nav nav-pills" style="margin-bottom: 10px">
<li>
- <a href=../ble_intro/>
+ <a href=../ble_sec/>
<span class="fa fa-arrow-left"></span>
- Previous: NimBLE Introduction
+ Previous: NimBLE Security
</a>
</li>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/core_os/porting/port_bsp/index.html
----------------------------------------------------------------------
diff --git a/os/core_os/porting/port_bsp/index.html b/os/core_os/porting/port_bsp/index.html
index 352eb4b..fc99802 100644
--- a/os/core_os/porting/port_bsp/index.html
+++ b/os/core_os/porting/port_bsp/index.html
@@ -633,6 +633,10 @@ name that describes the board/system you are creating.</p>
<td>A header file to include definitions required by system from the BSP</td>
</tr>
<tr>
+<td>include/bsp/bsp_sysid.h</td>
+<td>A header file to enumerate the devices in your BSP</td>
+</tr>
+<tr>
<td>src/os_bsp.c</td>
<td>A C source file to provide functions required by the OS from your BSP</td>
</tr>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/get_started/docker/index.html
----------------------------------------------------------------------
diff --git a/os/get_started/docker/index.html b/os/get_started/docker/index.html
index 5610fd2..8f2ce7b 100644
--- a/os/get_started/docker/index.html
+++ b/os/get_started/docker/index.html
@@ -418,6 +418,7 @@ newt command line tool and the entire build toolchain is available in a single
docker container. The container is all that's needed to run your Mynewt based
application in the simulator. Enabling USB2 with your docker installation will
allow you to load your application on a supported device.</p>
+<p>The Docker is the only supported option if you are working on a Windows machine. If you are using Mac OS X or Linux, you have the choice of installing a Docker container of tools and toolchains or installing them natively. This chapter describes how to set up the Docker image for all three platforms.</p>
<p><br></p>
<h3 id="install-docker">Install Docker<a class="headerlink" href="#install-docker" title="Permanent link">¶</a></h3>
<p>Install docker for your platform. <a href="https://docs.docker.com/mac/">Mac OS X</a> / <a href="https://docs.docker.com/windows/">Windows</a> / <a href="https://docs.docker.com/linux/">Linux</a></p>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/get_started/native_tools/index.html
----------------------------------------------------------------------
diff --git a/os/get_started/native_tools/index.html b/os/get_started/native_tools/index.html
index 9a15280..56f53e9 100644
--- a/os/get_started/native_tools/index.html
+++ b/os/get_started/native_tools/index.html
@@ -476,7 +476,7 @@ Setting up gdb (7.7.1-0ubuntu5~14.04.2) ...
<p><br></p>
-<p>At this point you have installed all the necessary software to build and test code on a simluator running on your Mac or Linux. Proceed to the <a href="#build-test-code-on-simulator">Build test code on simulator</a> section.</p>
+<p>At this point you have installed all the necessary software to build and test code on a simluator running on your Mac or Linux. Proceed to the <a href="../project_create/">Create Your First Project</a> section.</p>
<div class="row">
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal/index.html
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal/index.html b/os/modules/hal/hal/index.html
index 482535f..200d7af 100644
--- a/os/modules/hal/hal/index.html
+++ b/os/modules/hal/hal/index.html
@@ -326,6 +326,16 @@
+ <li>
+ <a href="../hal_architecture/">Architecture</a>
+ </li>
+
+
+
+
+
+
+
<li><a href="
../hal_api/
@@ -340,7 +350,7 @@
<li>
- <a href="../hal_in_libraries/">Using</a>
+ <a href="../hal_in_libraries/">Using HAL</a>
</li>
@@ -350,7 +360,7 @@
<li>
- <a href="../hal_creation/">Creating</a>
+ <a href="../hal_creation/">Creating HAL</a>
</li>
@@ -608,6 +618,9 @@ consult the MCU implementation and see if the specific HAL interface you are
using is in the <code>mcu/xxx/src/hal_xxxx.c</code> implementation. Finally, you
can build your project and ensure that there are no unresolved hal_xxx
externals.</p>
+<h3 id="hal-architecture">HAL Architecture<a class="headerlink" href="#hal-architecture" title="Permanent link">¶</a></h3>
+<p>Visit the <a href="../hal_architecture/">HAL architecture</a> page to get a understanding
+of our current hal and its evolution.</p>
<h3 id="implementing-hal-interfaces">Implementing HAL Interfaces<a class="headerlink" href="#implementing-hal-interfaces" title="Permanent link">¶</a></h3>
<p>It might be that a specific HAL interface is not supported on your MCU or
platform. See the specific HAL documentation for that interface for tips
@@ -629,8 +642,8 @@ on implementing this for your MCU.</p>
</li>
<li class="pull-right">
- <a href=../hal_api/>
- Next: Summary
+ <a href=../hal_architecture/>
+ Next: Architecture
<span class="fa fa-arrow-right"></span>
</a>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal_adc/hal_adc/index.html
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal_adc/hal_adc/index.html b/os/modules/hal/hal_adc/hal_adc/index.html
new file mode 100644
index 0000000..c72a149
--- /dev/null
+++ b/os/modules/hal/hal_adc/hal_adc/index.html
@@ -0,0 +1,805 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+
+ <link rel="canonical" href="http://mynewt.apache.org/os/modules/hal/hal_adc/hal_adc/">
+ <link rel="shortcut icon" href="../../../../../img/favicon.ico">
+
+ <title>ADC - Apache Mynewt</title>
+
+ <link href="../../../../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
+ <link href="../../../../../css/font-awesome-4.0.3.css" rel="stylesheet">
+ <link rel="stylesheet" href="../../../../../css/highlight.css">
+ <link href="../../../../../css/base.css" rel="stylesheet">
+ <link href="../../../../../css/custom.css" rel="stylesheet">
+ <link href='https://fonts.googleapis.com/css?family=Roboto:400,500,700,900,300,100' rel='stylesheet' type='text/css'>
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
+ <link href="../../../../../extra.css" rel="stylesheet">
+
+ <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
+ <!--[if lt IE 9]>
+ <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
+ <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
+ <![endif]-->
+
+
+ <script>
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+ ga('create', 'UA-72162311-1', 'mynewt.incubator.apache.org');
+ ga('send', 'pageview');
+ </script>
+
+ </head>
+
+
+ <body class="ADC">
+
+
+ <div id="navbar" class="navbar navbar-default navbar-fixed-top" role="navigation">
+ <div class="logo-container">
+ <img src="/img/logo.svg">
+ </div>
+ <div class="container-fluid">
+ <!-- Collapsed navigation -->
+ <div class="navbar-header">
+ <!-- Expander button -->
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+
+ </div>
+
+ <!-- Expanded navigation -->
+ <div class="navbar-collapse collapse">
+ <!-- Main navigation -->
+ <ul class="nav navbar-nav navbar-right">
+ <li>
+ <a href="/">Home</a>
+ </li>
+ <li>
+ <a href="/about/">About</a>
+ </li>
+ <li class="dropdown">
+ <a href="/documentation/" class="dropdown-toggle" data-toggle="dropdown">Docs <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+
+
+
+
+
+
+ <li >
+ <a href="../../../../../documentation/">
+ Overview
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="active">
+ <a href="../../../../get_started/introduction/">
+ Mynewt OS Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../../../newt/newt_intro/">
+ Newt Tool Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../../../newtmgr/overview/">
+ Newt Manager Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../../tutorials/how_to_edit_docs/">
+ Appendix
+ </a>
+ </li>
+
+
+ </ul>
+ </li>
+ <li>
+ <a href="/download/">Download</a>
+ </li>
+ <li>
+ <a href="/community/">Community</a>
+ </li>
+ <li>
+ <a href="/events/">Events</a>
+ </li>
+ </ul>
+
+ <!-- Search, Navigation and Repo links -->
+ <ul class="nav navbar-nav navbar-right">
+
+ </ul>
+ </div>
+ </div>
+</div>
+
+
+
+ <div class="container-fluid">
+
+ <div class="row sm-extra-padding">
+ <div id="docSidebar" class="col-md-3 bg-grey sidebar-container"><div class="bs-sidebar hidden-print" role="complementary">
+ <div class="sidebar-top">
+ <img class="hidden-xs hidden-sm logo-small" src="/img/logo.svg" alt="MyNewt" title="MyNewt">
+ <div class="small" role="search">
+ <form id ="rtd-search-form" class="wy-form" action="../../../../../search.html" method="get">
+ <div class="form-group">
+ <input type="text" name="q" placeholder="Search documentation" />
+ <button class="search-button" type="submit"><i class="fa fa-search"></i></button>
+ </div>
+ </form>
+ </div>
+ </div>
+ <ul class="nav bs-sidenav">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../get_started/introduction/
+">Mynewt OS Manual</a>
+
+
+ <ul class="current-toc">
+
+
+
+
+ <li>
+ <a href="../../../../get_started/introduction/">Introduction</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li ><a href="../../../../get_started/get_started/">Quick Start</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../get_started/vocabulary/">Concepts</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../tutorials/tutorials/">Tutorials</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../os_user_guide/">OS User Guide</a></li>
+
+
+ <ul class="current-toc">
+
+
+
+
+
+
+
+ <li ><a href="../../../../core_os/mynewt_os/">OS Core</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../../core_os/porting/port_os/">Porting to your Platform</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../console/console/">Console</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../shell/shell/">Shell</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../bootloader/bootloader/">Bootloader</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+
+
+ ../../../fs/fs/fs/
+
+">File System</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../hal/">Hardware Abstraction Layer</a></li>
+
+
+ <ul class="current-toc">
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_architecture/">Architecture</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li><a href="
+ ../../hal_api/
+">API</a>
+
+
+ <ul class="current-toc">
+
+
+
+
+ <li>
+ <a href="../../hal_api/">Summary</a>
+ </li>
+
+
+
+
+
+
+
+ <li class="active">
+ ADC
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_cputime/hal_cpu_timer/">CPU timer</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_dac/hal_dac/">DAC</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li><a href="
+ ../../hal_flash/hal_flash/
+">Flash memory</a>
+
+
+ </li>
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_gpio/hal_gpio/">GPIO</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_i2c/hal_i2c/">I2C</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_pwm/hal_pwm/">PWM</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_spi/hal_spi/">SPI</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_system/hal_sys/">System</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_uart/hal_uart/">UART</a>
+ </li>
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_in_libraries/">Using HAL</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_creation/">Creating HAL</a>
+ </li>
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../testutil/testutil/">Test Utilities</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../imgmgr/imgmgr/">Image Manager</a></li>
+
+
+ </li>
+
+
+
+
+
+
+ <li>
+ <a href="../../../baselibc/">Baselibc library</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li ><a href="../../../elua/elua/">Embedded Lua</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../json/json/">JSON</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../stats/stats/">Stats</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../logs/logs/">Logs</a></li>
+
+
+ </li>
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../../network/ble/ble_intro/
+">BLE User Guide</a>
+
+
+ </li>
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../../newt/newt_intro/
+">Newt Tool Manual</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../../newtmgr/overview/
+">Newt Manager Manual</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../tutorials/how_to_edit_docs/
+">Appendix</a>
+
+
+ </li>
+
+
+
+ </ul>
+</div></div>
+
+ <div class="show-sidebar-container">
+ <button class="show-sidebar">Docs Menu</button>
+ </div>
+
+ <div class="col-md-offset-3 col-md-9 documentation-viewer" role="main">
+ <div class="row doc-header">
+ <div class="col-sm-6">
+
+<ul class="nav nav-pills">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="active" role="presentation"><a href="../../../../get_started/introduction/">Mynewt OS</a></li>
+
+
+
+ <li role="presentation"><a href="../../../../../newt/newt_intro/">Newt Tool</a></li>
+
+
+
+ <li role="presentation"><a href="../../../../../newtmgr/overview/">Newt Mgr</a></li>
+
+
+
+
+</ul>
+ </div>
+ <div class="col-sm-6">
+ <div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="/documentation/">Docs</a></li>
+
+
+
+ <li>» <a href="../../hal/">Hardware Abstraction Layer</a></li>
+
+
+
+ <li>» <a href="../../hal_api/">API</a></li>
+
+
+
+ <li>» ADC</li>
+
+
+
+ </ul>
+</div>
+ </div>
+ </div>
+
+ <h1 id="hal_adc">hal_adc<a class="headerlink" href="#hal_adc" title="Permanent link">¶</a></h1>
+<p>The hardware independent interface to Analog To Digital Controllers</p>
+<h3 id="description">Description<a class="headerlink" href="#description" title="Permanent link">¶</a></h3>
+<p>Analog to Digital converters (ADCs) read analog values (voltage) and convert
+them to digital values to be used in your applications. For a description
+of ADC, see <a href="https://en.wikipedia.org/wiki/Analog-to-digital_converter">wikipedia</a></p>
+<h3 id="definition">Definition<a class="headerlink" href="#definition" title="Permanent link">¶</a></h3>
+<p><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_adc.h">hal_adc.h</a></p>
+<h3 id="hal_adcs-theory-of-operation">HAL_ADCs Theory Of Operation<a class="headerlink" href="#hal_adcs-theory-of-operation" title="Permanent link">¶</a></h3>
+<p>ADCs have different conversion rates, resolution (bits) and reference voltages.</p>
+<p>The HAL_ADC has APIs to allow the application or library to query the capabilities
+of a specific ADC.</p>
+<table>
+<thead>
+<tr>
+<th><strong>Method Name</strong></th>
+<th><strong> Description </strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>hal_adc_get_bits</td>
+<td>gets the resolution of the ADC in bits. For example if the ADC is 10 bits, a read will return a value from 0 through 2^10 - 1 = 1023.</td>
+</tr>
+<tr>
+<td>hal_adc_get_ref_mv</td>
+<td>gets the underlying reference voltage for the ADC in millivolts. For example, if the ADC is 10 bits and the reference voltage is 5000 mV a ADC reading of 1023 corresponds to 5V; a ADC reading of 0 corresponds to 0 volts.</td>
+</tr>
+</tbody>
+</table>
+<p>Given this information, the application or library could convert any reading
+to millivolts. Since this is a common operation, the HAL_ADC API has a helper
+function to perform this function: <code>hal_adc_to_mv()</code>.</p>
+<p>The current HAL_ADC API provides a blocking read command to initiate an ADC
+conversion, and return the result of that conversion. Conversion time is
+hardware dependent, but this is not an instantaneous operation. Libraries
+can use the <a href="../../hal_cputime/hal_cpu_timer/">hal_cputime</a> APIs to
+time conversions if that is relevant to the application.</p>
+<p>Future HAL_ADC APIs will include periodic ADC conversion, non-blocking ADC
+conversion and direct-to-memory DMA conversion. </p>
+
+ <div class="row">
+
+
+
+
+<ul class="nav nav-pills" style="margin-bottom: 10px">
+ <li>
+
+ <a href=../../hal_api/>
+ <span class="fa fa-arrow-left"></span>
+ Previous: Summary
+ </a>
+
+ </li>
+ <li class="pull-right">
+
+ <a href=../../hal_cputime/hal_cpu_timer/>
+ Next: CPU timer
+ <span class="fa fa-arrow-right"></span>
+ </a>
+
+ </li>
+</ul>
+ </div>
+ <div class="row">
+ <footer>
+ <div class="row">
+ <div class="col-md-12">
+
+ <p class="copyright">Copyright © 2015 The Apache Software Foundation, Licensed under the Apache License, Version 2.0 Apache and the Apache feather logo are trademarks of The Apache Software Foundation.<br>The Apache Software Foundation Apache Incubator</p>
+
+ </div>
+ </div>
+ <div class="copyright-logos">
+ <div class="row">
+ <div class="col-xs-6 text-right">
+ <img src="/img/apache-feather.png" alt="Apache" title="Apache">
+ </div>
+ <div class="col-xs-6 text-left">
+ <img src="/img/apache-logo.png" alt="Apache Incubator" title="Apache Incubator">
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-12">
+ <small class="footnote">
+ MyNewt is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
+ </small>
+ </div>
+ </div>
+</footer>
+ </div>
+ </div>
+ </div>
+
+
+ </div>
+
+ <script src="../../../../../js/jquery-1.10.2.min.js"></script>
+ <script src="../../../../../js/bootstrap-3.0.3.min.js"></script>
+ <script src="../../../../../js/highlight.pack.js"></script>
+ <script src="../../../../../js/base.js"></script>
+ <script src="../../../../../js/custom.js"></script>
+
+ </body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal_api/index.html
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal_api/index.html b/os/modules/hal/hal_api/index.html
index fb88453..408f354 100644
--- a/os/modules/hal/hal_api/index.html
+++ b/os/modules/hal/hal_api/index.html
@@ -326,6 +326,16 @@
+ <li>
+ <a href="../hal_architecture/">Architecture</a>
+ </li>
+
+
+
+
+
+
+
<li><a href="
./
@@ -348,7 +358,27 @@
<li>
- <a href="../hal_gpio/hal_gpio/">GPIO</a>
+ <a href="../hal_adc/hal_adc/">ADC</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../hal_cputime/hal_cpu_timer/">CPU timer</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../hal_dac/hal_dac/">DAC</a>
</li>
@@ -371,7 +401,7 @@
<li>
- <a href="../hal_cputime/hal_cpu_timer/">CPU timer</a>
+ <a href="../hal_gpio/hal_gpio/">GPIO</a>
</li>
@@ -381,7 +411,27 @@
<li>
- <a href="../hal_uart/hal_uart/">UART</a>
+ <a href="../hal_i2c/hal_i2c/">I2C</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../hal_pwm/hal_pwm/">PWM</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../hal_spi/hal_spi/">SPI</a>
</li>
@@ -397,6 +447,16 @@
+
+
+
+ <li>
+ <a href="../hal_uart/hal_uart/">UART</a>
+ </li>
+
+
+
+
</ul>
</li>
@@ -407,7 +467,7 @@
<li>
- <a href="../hal_in_libraries/">Using</a>
+ <a href="../hal_in_libraries/">Using HAL</a>
</li>
@@ -417,7 +477,7 @@
<li>
- <a href="../hal_creation/">Creating</a>
+ <a href="../hal_creation/">Creating HAL</a>
</li>
@@ -649,19 +709,24 @@ description of the interfaces are shown below.</p>
</thead>
<tbody>
<tr>
+<td><a href="../hal_adc/hal_adc/">adc</a></td>
+<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_adc.h">hal_adc.h</a></td>
+<td>An interface for controlling Analog To Digital Converters.</td>
+</tr>
+<tr>
<td><a href="../hal_cputime/hal_cpu_timer/">cputime</a></td>
<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_cputime.h">hal_cputime.h</a></td>
<td>An interface for getting the CPU uptime, an interface to set arbitrary timers based on the CPU time, and an interface for a blocking delay if CPU time.</td>
</tr>
<tr>
-<td><a href="../hal_flash/hal_flash/">flash</a></td>
-<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_flash.h">hal_flash.h</a></td>
-<td>A blocking interface to access flash memory</td>
+<td><a href="../hal_dac/hal_dac/">dac</a></td>
+<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_dac.h">hal_dac.h</a></td>
+<td>An interface for controlling Digital to Analog Converters.</td>
</tr>
<tr>
-<td><a href="../hal_flash/hal_flash_int/">flash_int</a></td>
-<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_flash_int.h">hal_flash_int.h</a></td>
-<td>The underlying API that the flash drivers implement. If you are writing a new flash driver, this is how you hook it into the HAL.</td>
+<td><a href="../hal_flash/hal_flash/">flash</a></td>
+<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_flash.h">hal_flash.h</a></td>
+<td>A blocking interface to access flash memory.</td>
</tr>
<tr>
<td><a href="../hal_flash/hal_flash_map/">flash map</a></td>
@@ -671,7 +736,22 @@ description of the interfaces are shown below.</p>
<tr>
<td><a href="../hal_gpio/hal_gpio/">gpio</a></td>
<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_gpio.h">hal_gpio.h</a></td>
-<td>An interface for manipulating General Purpose Inputs and Outputs</td>
+<td>An interface for manipulating General Purpose Inputs and Outputs.</td>
+</tr>
+<tr>
+<td><a href="../hal_i2c/hal_i2c/">i2c</a></td>
+<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_i2c.h">hal_i2c.h</a></td>
+<td>An interface for controlling Inter-Integrated-Circuit (i2c) devices.</td>
+</tr>
+<tr>
+<td><a href="../hal_pwm/hal_pwm/">pwm</a></td>
+<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_pwm.h">hal_pwm.h</a></td>
+<td>An interface for controlling Pulse Width Modulator Devices.</td>
+</tr>
+<tr>
+<td><a href="../hal_spi/hal_spi/">spi</a></td>
+<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_spi.h">hal_spi.h</a></td>
+<td>An interface for controlling Serial Peripheral Interface (SPI) devices.</td>
</tr>
<tr>
<td><a href="../hal_system/hal_sys/">system</a></td>
@@ -681,7 +761,7 @@ description of the interfaces are shown below.</p>
<tr>
<td><a href="../hal_uart/hal_uart/">uart</a></td>
<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_uart.h">hal_uart.h</a></td>
-<td>An interface for communicating via asyncrhonous serial interface</td>
+<td>An interface for communicating via asynchronous serial interface .</td>
</tr>
</tbody>
</table>
@@ -694,16 +774,16 @@ description of the interfaces are shown below.</p>
<ul class="nav nav-pills" style="margin-bottom: 10px">
<li>
- <a href=../hal/>
+ <a href=../hal_architecture/>
<span class="fa fa-arrow-left"></span>
- Previous: Hardware Abstraction Layer
+ Previous: Architecture
</a>
</li>
<li class="pull-right">
- <a href=../hal_gpio/hal_gpio/>
- Next: GPIO
+ <a href=../hal_adc/hal_adc/>
+ Next: ADC
<span class="fa fa-arrow-right"></span>
</a>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal_architecture/index.html
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal_architecture/index.html b/os/modules/hal/hal_architecture/index.html
new file mode 100644
index 0000000..0a0385c
--- /dev/null
+++ b/os/modules/hal/hal_architecture/index.html
@@ -0,0 +1,653 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+
+ <link rel="canonical" href="http://mynewt.apache.org/os/modules/hal/hal_architecture/">
+ <link rel="shortcut icon" href="../../../../img/favicon.ico">
+
+ <title>Architecture - Apache Mynewt</title>
+
+ <link href="../../../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
+ <link href="../../../../css/font-awesome-4.0.3.css" rel="stylesheet">
+ <link rel="stylesheet" href="../../../../css/highlight.css">
+ <link href="../../../../css/base.css" rel="stylesheet">
+ <link href="../../../../css/custom.css" rel="stylesheet">
+ <link href='https://fonts.googleapis.com/css?family=Roboto:400,500,700,900,300,100' rel='stylesheet' type='text/css'>
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
+ <link href="../../../../extra.css" rel="stylesheet">
+
+ <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
+ <!--[if lt IE 9]>
+ <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
+ <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
+ <![endif]-->
+
+
+ <script>
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+ ga('create', 'UA-72162311-1', 'mynewt.incubator.apache.org');
+ ga('send', 'pageview');
+ </script>
+
+ </head>
+
+
+ <body class="Architecture">
+
+
+ <div id="navbar" class="navbar navbar-default navbar-fixed-top" role="navigation">
+ <div class="logo-container">
+ <img src="/img/logo.svg">
+ </div>
+ <div class="container-fluid">
+ <!-- Collapsed navigation -->
+ <div class="navbar-header">
+ <!-- Expander button -->
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+
+ </div>
+
+ <!-- Expanded navigation -->
+ <div class="navbar-collapse collapse">
+ <!-- Main navigation -->
+ <ul class="nav navbar-nav navbar-right">
+ <li>
+ <a href="/">Home</a>
+ </li>
+ <li>
+ <a href="/about/">About</a>
+ </li>
+ <li class="dropdown">
+ <a href="/documentation/" class="dropdown-toggle" data-toggle="dropdown">Docs <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+
+
+
+
+
+
+ <li >
+ <a href="../../../../documentation/">
+ Overview
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="active">
+ <a href="../../../get_started/introduction/">
+ Mynewt OS Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../../newt/newt_intro/">
+ Newt Tool Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../../newtmgr/overview/">
+ Newt Manager Manual
+ </a>
+ </li>
+
+
+
+ <li >
+ <a href="../../../tutorials/how_to_edit_docs/">
+ Appendix
+ </a>
+ </li>
+
+
+ </ul>
+ </li>
+ <li>
+ <a href="/download/">Download</a>
+ </li>
+ <li>
+ <a href="/community/">Community</a>
+ </li>
+ <li>
+ <a href="/events/">Events</a>
+ </li>
+ </ul>
+
+ <!-- Search, Navigation and Repo links -->
+ <ul class="nav navbar-nav navbar-right">
+
+ </ul>
+ </div>
+ </div>
+</div>
+
+
+
+ <div class="container-fluid">
+
+ <div class="row sm-extra-padding">
+ <div id="docSidebar" class="col-md-3 bg-grey sidebar-container"><div class="bs-sidebar hidden-print" role="complementary">
+ <div class="sidebar-top">
+ <img class="hidden-xs hidden-sm logo-small" src="/img/logo.svg" alt="MyNewt" title="MyNewt">
+ <div class="small" role="search">
+ <form id ="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
+ <div class="form-group">
+ <input type="text" name="q" placeholder="Search documentation" />
+ <button class="search-button" type="submit"><i class="fa fa-search"></i></button>
+ </div>
+ </form>
+ </div>
+ </div>
+ <ul class="nav bs-sidenav">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../get_started/introduction/
+">Mynewt OS Manual</a>
+
+
+ <ul class="current-toc">
+
+
+
+
+ <li>
+ <a href="../../../get_started/introduction/">Introduction</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li ><a href="../../../get_started/get_started/">Quick Start</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../get_started/vocabulary/">Concepts</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../tutorials/tutorials/">Tutorials</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../os_user_guide/">OS User Guide</a></li>
+
+
+ <ul class="current-toc">
+
+
+
+
+
+
+
+ <li ><a href="../../../core_os/mynewt_os/">OS Core</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../../core_os/porting/port_os/">Porting to your Platform</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../console/console/">Console</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../shell/shell/">Shell</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../bootloader/bootloader/">Bootloader</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+
+
+ ../../fs/fs/fs/
+
+">File System</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../hal/">Hardware Abstraction Layer</a></li>
+
+
+ <ul class="current-toc">
+
+
+
+
+
+
+ <li class="active">
+ Architecture
+ </li>
+
+
+
+
+
+
+
+
+ <li><a href="
+ ../hal_api/
+">API</a>
+
+
+ </li>
+
+
+
+
+
+
+ <li>
+ <a href="../hal_in_libraries/">Using HAL</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../hal_creation/">Creating HAL</a>
+ </li>
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../testutil/testutil/">Test Utilities</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../imgmgr/imgmgr/">Image Manager</a></li>
+
+
+ </li>
+
+
+
+
+
+
+ <li>
+ <a href="../../baselibc/">Baselibc library</a>
+ </li>
+
+
+
+
+
+
+
+
+ <li ><a href="../../elua/elua/">Embedded Lua</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../json/json/">JSON</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../stats/stats/">Stats</a></li>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li ><a href="../../logs/logs/">Logs</a></li>
+
+
+ </li>
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../network/ble/ble_intro/
+">BLE User Guide</a>
+
+
+ </li>
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../newt/newt_intro/
+">Newt Tool Manual</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../../newtmgr/overview/
+">Newt Manager Manual</a>
+
+
+ </li>
+
+
+
+
+
+
+
+ <li><a href="
+ ../../../tutorials/how_to_edit_docs/
+">Appendix</a>
+
+
+ </li>
+
+
+
+ </ul>
+</div></div>
+
+ <div class="show-sidebar-container">
+ <button class="show-sidebar">Docs Menu</button>
+ </div>
+
+ <div class="col-md-offset-3 col-md-9 documentation-viewer" role="main">
+ <div class="row doc-header">
+ <div class="col-sm-6">
+
+<ul class="nav nav-pills">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="active" role="presentation"><a href="../../../get_started/introduction/">Mynewt OS</a></li>
+
+
+
+ <li role="presentation"><a href="../../../../newt/newt_intro/">Newt Tool</a></li>
+
+
+
+ <li role="presentation"><a href="../../../../newtmgr/overview/">Newt Mgr</a></li>
+
+
+
+
+</ul>
+ </div>
+ <div class="col-sm-6">
+ <div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="/documentation/">Docs</a></li>
+
+
+
+ <li>» <a href="../../../os_user_guide/">OS User Guide</a></li>
+
+
+
+ <li>» <a href="../hal/">Hardware Abstraction Layer</a></li>
+
+
+
+ <li>» Architecture</li>
+
+
+
+ </ul>
+</div>
+ </div>
+ </div>
+
+ <h1 id="hardware-abstraction-layer">Hardware Abstraction Layer<a class="headerlink" href="#hardware-abstraction-layer" title="Permanent link">¶</a></h1>
+<p>This page presents a picture of the HAL architecture in its current state. The
+Mynewt is pre-1.0, and we expect significant changes to the HAL as we add
+support for more functionality and platforms. </p>
+<p><img alt="HAL architecture" src="../hal_drawing.png" /></p>
+
+ <div class="row">
+
+
+
+
+<ul class="nav nav-pills" style="margin-bottom: 10px">
+ <li>
+
+ <a href=../hal/>
+ <span class="fa fa-arrow-left"></span>
+ Previous: Hardware Abstraction Layer
+ </a>
+
+ </li>
+ <li class="pull-right">
+
+ <a href=../hal_api/>
+ Next: Summary
+ <span class="fa fa-arrow-right"></span>
+ </a>
+
+ </li>
+</ul>
+ </div>
+ <div class="row">
+ <footer>
+ <div class="row">
+ <div class="col-md-12">
+
+ <p class="copyright">Copyright © 2015 The Apache Software Foundation, Licensed under the Apache License, Version 2.0 Apache and the Apache feather logo are trademarks of The Apache Software Foundation.<br>The Apache Software Foundation Apache Incubator</p>
+
+ </div>
+ </div>
+ <div class="copyright-logos">
+ <div class="row">
+ <div class="col-xs-6 text-right">
+ <img src="/img/apache-feather.png" alt="Apache" title="Apache">
+ </div>
+ <div class="col-xs-6 text-left">
+ <img src="/img/apache-logo.png" alt="Apache Incubator" title="Apache Incubator">
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-12">
+ <small class="footnote">
+ MyNewt is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
+ </small>
+ </div>
+ </div>
+</footer>
+ </div>
+ </div>
+ </div>
+
+
+ </div>
+
+ <script src="../../../../js/jquery-1.10.2.min.js"></script>
+ <script src="../../../../js/bootstrap-3.0.3.min.js"></script>
+ <script src="../../../../js/highlight.pack.js"></script>
+ <script src="../../../../js/base.js"></script>
+ <script src="../../../../js/custom.js"></script>
+
+ </body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal_cputime/hal_cpu_timer/index.html
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal_cputime/hal_cpu_timer/index.html b/os/modules/hal/hal_cputime/hal_cpu_timer/index.html
index 4b80e22..062b8e5 100644
--- a/os/modules/hal/hal_cputime/hal_cpu_timer/index.html
+++ b/os/modules/hal/hal_cputime/hal_cpu_timer/index.html
@@ -326,6 +326,16 @@
+ <li>
+ <a href="../../hal_architecture/">Architecture</a>
+ </li>
+
+
+
+
+
+
+
<li><a href="
../../hal_api/
@@ -348,7 +358,27 @@
<li>
- <a href="../../hal_gpio/hal_gpio/">GPIO</a>
+ <a href="../../hal_adc/hal_adc/">ADC</a>
+ </li>
+
+
+
+
+
+
+
+ <li class="active">
+ CPU timer
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_dac/hal_dac/">DAC</a>
</li>
@@ -370,8 +400,8 @@
- <li class="active">
- CPU timer
+ <li>
+ <a href="../../hal_gpio/hal_gpio/">GPIO</a>
</li>
@@ -381,7 +411,27 @@
<li>
- <a href="../../hal_uart/hal_uart/">UART</a>
+ <a href="../../hal_i2c/hal_i2c/">I2C</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_pwm/hal_pwm/">PWM</a>
+ </li>
+
+
+
+
+
+
+
+ <li>
+ <a href="../../hal_spi/hal_spi/">SPI</a>
</li>
@@ -397,6 +447,16 @@
+
+
+
+ <li>
+ <a href="../../hal_uart/hal_uart/">UART</a>
+ </li>
+
+
+
+
</ul>
</li>
@@ -407,7 +467,7 @@
<li>
- <a href="../../hal_in_libraries/">Using</a>
+ <a href="../../hal_in_libraries/">Using HAL</a>
</li>
@@ -417,7 +477,7 @@
<li>
- <a href="../../hal_creation/">Creating</a>
+ <a href="../../hal_creation/">Creating HAL</a>
</li>
@@ -666,16 +726,16 @@ may be sufficient and would </p>
<ul class="nav nav-pills" style="margin-bottom: 10px">
<li>
- <a href=../../hal_flash/hal_flash_map/>
+ <a href=../../hal_adc/hal_adc/>
<span class="fa fa-arrow-left"></span>
- Previous: flash_map
+ Previous: ADC
</a>
</li>
<li class="pull-right">
- <a href=../../hal_uart/hal_uart/>
- Next: UART
+ <a href=../../hal_dac/hal_dac/>
+ Next: DAC
<span class="fa fa-arrow-right"></span>
</a>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal_creation/index.html
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal_creation/index.html b/os/modules/hal/hal_creation/index.html
index 27b8591..577d6a8 100644
--- a/os/modules/hal/hal_creation/index.html
+++ b/os/modules/hal/hal_creation/index.html
@@ -9,7 +9,7 @@
<link rel="canonical" href="http://mynewt.apache.org/os/modules/hal/hal_creation/">
<link rel="shortcut icon" href="../../../../img/favicon.ico">
- <title>Creating - Apache Mynewt</title>
+ <title>Creating HAL - Apache Mynewt</title>
<link href="../../../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
<link href="../../../../css/font-awesome-4.0.3.css" rel="stylesheet">
@@ -40,7 +40,7 @@
</head>
- <body class="Creating">
+ <body class="Creating HAL">
<div id="navbar" class="navbar navbar-default navbar-fixed-top" role="navigation">
@@ -326,6 +326,16 @@
+ <li>
+ <a href="../hal_architecture/">Architecture</a>
+ </li>
+
+
+
+
+
+
+
<li><a href="
../hal_api/
@@ -340,7 +350,7 @@
<li>
- <a href="../hal_in_libraries/">Using</a>
+ <a href="../hal_in_libraries/">Using HAL</a>
</li>
@@ -350,7 +360,7 @@
<li class="active">
- Creating
+ Creating HAL
</li>
@@ -560,7 +570,7 @@
- <li>» Creating</li>
+ <li>» Creating HAL</li>
@@ -598,6 +608,29 @@ a <strong>direct HAL</strong> <code>hal_foo.h</code>, there can be many implemen
<p>For example, support there is an ADC attached directly to the MCU and an ADC
that is attached via SPI. There would be no way in this simple paradigm
to use both these devices from the HAL API at the same time.</p>
+<p>Current Direct HAL interfaces include:</p>
+<table>
+<thead>
+<tr>
+<th><strong>Hal Name</strong></th>
+<th><strong> Interface File </strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>[hal_gpio]</td>
+<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_gpio.h">hal_gpio.h</a></td>
+</tr>
+<tr>
+<td>[hal_uart]</td>
+<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_uart.h">hal_uart.h</a></td>
+</tr>
+<tr>
+<td>[hal_cputime]</td>
+<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_cputime.h">hal_cputime.h</a></td>
+</tr>
+</tbody>
+</table>
<p>This brings up the second paradigm.</p>
<h2 id="indirect-hal-interface">Indirect HAL Interface<a class="headerlink" href="#indirect-hal-interface" title="Permanent link">¶</a></h2>
<p>The second paradigm, <strong>indirect HAL</strong> preserves the simple function
@@ -681,6 +714,41 @@ to have that many <code>hal_gpio_int</code> structures around to basically call
same functions. In Mynewt today, the hal_gpio is a <strong>direct HAL</strong> and does
not have this overhead. More HAL paradigms may be added in the future to address
the flexibility of the <strong>indirect HAL</strong> with the memory efficiency of the <strong>direct HAL</strong></p>
+<p>Current Indirect HAL interfaces include:</p>
+<table>
+<thead>
+<tr>
+<th><strong>Hal Name</strong></th>
+<th><strong> Interface File </strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>hal_adc_int</td>
+<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_adc_int.h">hal_adc_int.h</a></td>
+</tr>
+<tr>
+<td>hal_dac</td>
+<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_dac_int.h">hal_dac_int.h</a></td>
+</tr>
+<tr>
+<td>hal_flash_int</td>
+<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_flash_int.h">hal_flash_int.h</a></td>
+</tr>
+<tr>
+<td>hal_pwm_int</td>
+<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_pwm_int.h">hal_pwm_int.h</a></td>
+</tr>
+<tr>
+<td>hal_i2c_int</td>
+<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_i2c_int.h">hal_i2c_int.h</a></td>
+</tr>
+<tr>
+<td>hal_spi_int</td>
+<td><a href="https://github.com/apache/incubator-mynewt-larva/blob/master/hw/hal/include/hal/hal_spi_int.h">hal_spi_int.h</a></td>
+</tr>
+</tbody>
+</table>
<div class="row">
@@ -692,7 +760,7 @@ the flexibility of the <strong>indirect HAL</strong> with the memory efficiency
<a href=../hal_in_libraries/>
<span class="fa fa-arrow-left"></span>
- Previous: Using
+ Previous: Using HAL
</a>
</li>
[3/7] incubator-mynewt-site git commit: Lots of HAL additions by P
Dietrich. This closes #73. BLE security blurb added. Docker container and
quick start docs cleaned up
Posted by ad...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal_drawing.pdf
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal_drawing.pdf b/os/modules/hal/hal_drawing.pdf
new file mode 100644
index 0000000..3eebc32
--- /dev/null
+++ b/os/modules/hal/hal_drawing.pdf
@@ -0,0 +1,2819 @@
+%PDF-1.4
+%����
+1 0 obj
+ <<
+ /Title ()
+ /Author ()
+ /Subject ()
+ /Keywords ()
+ /Creator (yExport 1.5)
+ /Producer (org.freehep.graphicsio.pdf.YPDFGraphics2D 1.5)
+ /CreationDate (D:20160328113408-07'00')
+ /ModDate (D:20160328113408-07'00')
+ /Trapped /False
+ >>
+endobj
+2 0 obj
+ <<
+ /Type /Catalog
+ /Pages 3 0 R
+ /ViewerPreferences 4 0 R
+ /OpenAction [5 0 R /Fit]
+ >>
+endobj
+4 0 obj
+ <<
+ /FitWindow true
+ /CenterWindow false
+ >>
+endobj
+5 0 obj
+ <<
+ /Parent 3 0 R
+ /Type /Page
+ /Contents 6 0 R
+ >>
+endobj
+6 0 obj
+ <<
+ /Length 7 0 R
+ /Filter [/ASCII85Decode /FlateDecode]
+ >>
+stream
+GauEpbGo/;O5@OPU2JnmpA$BN"I]HK88"$(f[0XWfTkLq6e8#&VmU_k+EU0)?mGKTQS$CD/B`)4<M"\)
+bNmL3l3j\imU,)=a6t,Mj2_%P^ON>Eh\uE,YZCStnS[@Xa'V(1o8iqJ[.=h.k4?@foj@"1^]1Jj:$SAN
+q=d,6s61VTe3DplLjXOH+9+QSlRQhdNr:JF^=&%Kq0tils/W=&T76^I.IbYhq_.q0&[]9$>+M=9`'4CT
+[f3.`rVj'k%*&pOL?N1[ef%oSW:8E"J,]I+`W+85r+-TBRONL][!j%b[jbFCT:U9+g(RC]eusc%%)a.#
+7L.7BQ#?r/nunR:o(1a'";p`]rkjfRg95jq`qTJ?qU7`#SFu3<kA.bj?Zl8Yd=1J`Lo4_nUAnE[B5dCn
+7"<PS]Dd?H=$I1DquGaM<5*kTc.[@K\;N7GjQG]-ksVoO'4ANQoaEbUH&ViuGL'G5ImT\%la.JfC#_g@
+mj>Qss3h8qli4Q_:gs0%"Eh5M::K1Wb[Zl%`3RtgcQHiu[>4Zb&_>dQIe6rrebtr3ql;6`YKT6b^W(OB
+.OOJ\Eds?#Lp")B^DO`JGTl4Q1LF/U_^2KnS6t;^AT@"*ZqhXC^(C7p=WHh!JnVpqfAYOm$bt@j#;1`i
+SuFm6\.5Le7otR0UAUHW79URmZfXY2K_+T`R".CEN0,4#*l5qX-rnBfj!pfB,<q"=UAPTCI0Ci[i&[9g
+k9CdX0_,=s'9&HsAj7)bdh783r<_GAlj,@%qDX%h+7Re(a:DbI@,qR"q:=NUQ5LS$BW6CFW[B#Q0o_;)
+O_/nlY3gYA,^p,q.)29Bn'(%?nIWE!&s,<o&0r,g&h3:>/pq(5fQH:?'9Ac0?24_Ae)rOT9lRQEhI!D,
+cNA0V1fn6L$cjM6Rfl<rV__T`gt6gRU^u*4SI:Wti.h_`G"6p,7/L!I(W9_iFXD:"*$%=oJ)=3hPlB"%
+[rcgB/*s"KYh<7Ygd&WrY$:1(WVh-]e]dAUGC!lpB+^,&HRnh_lhL;T2>)%(9DQ0EHPrpYF$X1h[e.iV
+#Q4XI'Ps04!sU[qoa`?XPfmIDr!qY$c3X@D;U/JDgi:W/6Rn=g)!tc)raNh58k-siMG@aC(Ron&kKDXY
+\Gf6e?%21@ZVO"d^n!_QC:$#'TND4*\;Eu3daE%"cl*M(8NDLDAX<H<<I\nB3ljHVU!''P"h4G83jXO'
+_L"oCTmc5:IRN(qgm7cp6@BG5kd--[SC6.'0!&,SG5[:hnmssHI^:A(O/d)#E@bTm7m'gQH#&S>E\dK#
+K$uosbHJPWLbMQoC`MRI9sWMhna*DgZ,O+F\7k\7UP>5u!GsDcP<=Yb7)RLJ;F?WnOIF*!XuNk)j_kFV
+,WkWV((g=d6^)=hj[kXuLfm*/@!j=Y`A@?0((u)q[$if\Lh3\QZG_T6R`#bOVB7F_,ARq]H!5f-l_GuF
+[\6gMjDg>Rq;udu-@,TtSi+VrC/.Wi4Q*B98K9Q]Oq>tc:G]G$Th4aYP;UJ2N2_iW^@UO;,gXfZc'ec.
+4uCMs6C9)k#\Xim,A@L,1CS#IJ$i7iICc(C5Rc[iZBHG*PO,O#TaO,NQ'hBIeS*/:$'gnVKUmeM-`eS.
+&e&i9-@*D[6B`\!g<XETR`#ff,iC.N%F<7n?I,&CM"<*__5\i-5gqO=,S+@O%DpFK2qFZoNZ$heZr<OC
+aG:[N:ZY$q*ng>5jr_bAI:l:6PAQ`kds\MKfsY1Z-@$Lk,;]_\Slq7n<IUr>d$5?7,_=Gj#uO33O(o<s
+p<8t9LSg[0be0Vud'oQ'M=o]ID4+=d]SSrNF=0&E[io!YT;gSYYD=`:Q7A4-)Z<EeB=B8[I+uDhO=J]$
+KA%tQnnd9cCAhAEdXH&VmVo4&&ZRq/3C=A4\"EMT"/5[rZIBT@ZBMopMZUC4k;$Le<FF,JQ*(eZ1`<,T
+*lM_]BiMQ")Z6>l%H8edon"C!b:X[W-rZPYJ$IdloI>'_dGPhE?)P&,?AM*lSMV8WU\-:8g"_n6BU#o6
+1gBnqh@jHq8(9l;cpq"R(.J3kJ+'[5Xh&;Pd6,1r\SGlRY8<q3!;4alRYfGA6&f[X)@0p#dE94WE./hs
+9pjT\1hjk:SBon2Xm9F1@5V5m[g4c4P$'nN<@^qV%H&X+Wrc-bR%csFA05+d:pk%-ga::rm98%)Am,q?
+l,0nYqG+a;Xbi1J:nf$ee2`[m%>8KHN&YXI0%ZP*J!?a/KfV/X2d[NM.M?3Xn"D-abY>J>\OKp5och0j
+C)!:E@8X?1]r1ET&Z,2CMc-o3&@8uL"\>hdB[mMlq`2,BW`9-E=r#sIXu/]_o/a7Y+P*T@R+AqPcCVBm
+&Bb1l5I[0Sk)]p],t=Bl#Z+!\^,M/EiV'FYnVbXVPk1kf<NF,MX&bMM%ODHM=3IA#?+\6ndAiQdPJQ)-
+Tlnte!)%O<RR,?$),UXLVn5tEhX3t9!b"RDAF"TQes*lX#="sO<c6+YE1t"%62DQIq#&[Ccpn[#f\-dX
+I3Wi0"GAkTSk808*?&J@??Nds6hb67-'bO8JNA:HHgfo6OnJSoVRb0ePTMcW_>afm7=TcNTeDn)C;`6S
+2S`eoS(a9u39]Vn:&O[7-0-+r?Etd`,<%p!pJ7[q9qdUj'rai'Cab_Ohh!h%_0*)3U^_kKe`>1fRo1\R
+C3O"*!=+[A<#qV!)#BBc@N2g(j/^-bNmD!b9a5^`fp'MNJ7XpoqMYS0R`,i`/q)uei@?*d3Nk9).#u[A
+I'iGR0r[:_b2m<208@"#mo*qb=9*8-oOYD=S`pD9/&rL</c(4+(%EDIpm]<kq4qP[V(0Vg`.L$$Q,c&s
+/Gt%I7(fc!K=KlY*olISb1AH%piAm6h=5m\[QbqZ9+VC!&kN&>h[FJE:6#4Eb#O/W4hLapD&91hSa&&Z
+o&3?!7jeEoeP"hVR%o01;<R(.VJ#+:+SK:[J04(Cgb!qE2!FZ=Z)TFaD[<OUm`;R;IMR@29,3'Q`"5_N
+>:Mc^qtpc*%Lu$[(hA_NELKdlmO!+>;sIq#[R(i:"GN/-WuGNiC'?"Hj8m;eT5U==/91Ri'Q1h?k6i!#
+&-s:$4t"AWh\!/(abU$k$<RR/p0S<X*cP?`]70>9pb)Fk_jNVX,D_sfmSBoh4aThL5=*L&On"R4)frB/
+LZ<I:L^O=E)$+?Zr=SS5PqASde;?&D<Vh`;.Vr[B_gP--H5]*Q5j.M4J=RGl7KjAELk/u`reLnJ(MU#b
+I"\nTDEIV:hd>JF0%(1[Lt[b2'9+%.\]rY)'*/dLmf=M73P^IPoB1i.-_n4AnG*DT-JQNd54K0J]:?]h
+7@FX^dtb3h(d\Eg34Vhk!?N1R+SLuhWN>!7J60S?oQ/i#GmLBE>"@f4aQmZ3nZ1bE5:362^n]*<9_nKb
+g5/<!9F,X^I$-NoV0)OkeHRP?\K"T6ZrB5fSC-,<J_`dcK^?U0&\9S'd[m1KA(SiM*W:8af"4<'h]_$l
+3]AhcH8Mp<Qd4R\Eso%AReLmF"sS\:l-H7_R[/0Zg85t@<H5/rP-3fDUoJ-k]G;)1Onr`)G/r1D,A]pn
+4^.ZALc'(8I#U5)QF'ZgNefQAN]50>IT-PfpWr!I?e>)#^]Rs(Nj(D/'tD8Uk%\);k>6g-)Li=mVXdB4
+6J(u7Ng&)iK@hL$psER`?/lFK)G^X?nHTbPMQZL4gZR]VIL`JL?fTI?3-ech8'M?Gissc]:C+&lA":Cn
+r\W2A?K4Q99QZ9Sl`mCB1+f\Ld,q.pWup@?^P0(DNF*.9n29V>>N=nH"QLDM5h!_T_ta5TCYYnaj]_m4
+f6@A/NUHF@j'[NUCE/:Pnes`=,iEJ9>SUFIj%o,jNA^]cZ<QfUIZ)B^XRW=r2S-mAa>NCA@HDjS)TTlj
+?K9l[Y&SRWVFC&Z6s/KO']hG_j+/&S7"AsJ/g&r`<s:4G]LQOp2@5&hQ<(`5r*^q&9kti6_aL5haTC8@
+^E2=oehn!cE1R8Pq]fRM-(#8:8.TM[K:/A"<rN"9g4*>[KB6#JE[Q+#KD>8=H[lA5X'4iNB+T,NEI9%s
+C3Nm]FP2+5\--Y[3_Ep)&16`b6n<oe?-5?]AL?(H#aKg86"HTEB8WHJi8T4<A02A2^<2cO\HmFRO<45n
+G3eC\!J#=)ljHX$?Ui8]k*F1SJ8HXdLX+2/A02"cLbh#:>Hg8A`s*35]qi:]Q[Jkc:9kD&/&lNq8@?<`
+Ol"n>qh-jPQ#HVga?G-t"R4F@Rq*2c(C6:S5d]OV:YNQ9gLOn_e1#N`.TbdSAR>YRNK+:,IDQ8%plkEj
+9Z:G8.nTG+n!_E`);fVj#LL[8OaX>O2g>ZnGLUdMfpBO`o]Kg7CUpKZrKrG)X2Hh&Ah'cH:jlJ7,5^Zt
+IDNop5f60Dm7!ZHf8f7'[nqF[31^X]oi#)*mWBT_UW84Hg'$Ef"i=ff`GhtponhKnJ;[XC5R:5`[VkmF
+>@5NUKrnEhP_VU+nkb4&piLY4:<(W)#h/@<;gfgf!1Hnng%s&YNOV-*EnWJAQ%Ma*3[$nITfZh85r=iF
+pIKM3&ZZ5;gNAV6h)gl42g'iF1F,`G\ZN$Sqi\LtSVnUS'1+Uj64d@(K*84bP.kPJ8@]e*=mai(U^)),
+igSC0VHI-nD<f-*C$^DUdrdCJlul?-C&(d>&2"-""P"r*0'"s;\:"&?C`!7ZFD1kebNc&WbbQbkS'=r$
+cr@??0"Fp@5E26%(V/0LBSkg]BOVain!#O]AdJ"s2#$!Z73jbTX[murDu&Tr`3U5T%jbar'k^;<kVIt-
+;Ya?n/S#B2_0;gl0I+:;"jDhM=&=DiIX^,"5rndR3]U,Hnk]G+3P+[GBZ/eZ#T?r2h#*$`03IPZ[23rN
+"7@EKH<"=abu/J`=mXtPf>IFbVl]q:dY#%ZOqrML+f@tT=Fc=,?6CR#-af3^:FcFi%78n#ob7r7rQO+#
+B't0F5-d/7Z.2gVTg5RTFN,b>2GLfg[r'8Pp7'0`.b^i+X-51^1[+'hHSl,pPuQU^?R!?9^kGg2I-PNu
+3^[a1js(%=Hie>9[NMEZ\12ufDhD`?5@)SIQNTfg31Hg:[U_'8k00Odq,F=HA$d=`16[:WX^Ch+n/"HE
+Eh^]WQ]$5l#Wjlg`U27^dF2?\n5MY0NMU.LW_LKRPPe:N!6l!U1P$4*,(FJo+up]Yn;dMdiM0N6B6k`F
+"+`'`ojZF:&Q.Z&G9VV-cWZTP#Vj+N@Yd]">Eoa[l=mJH#=%8Wk'#,BAP-tKG`4qlrqsDGi'C$mE3</2
+/talH-9O0YE6!*i+^>/pWe]D;&MB8ZF5fP6+n@a0L8e(eA^VPOR=s4.U[fXnk4DfL)On/u&C3JSXnFSr
+-%Y'D%tp&JdC].6#kcCH69Oi@l7>a)YM8cfqVUq/QfU['$6?;&o/^-i;e5"7rVA3(S=&T0%n*?^*1#7N
+:TW9HEHQ$HY54UK<W"7sJok=AEjC'6k5nbnM#K:R'/K^kho^R,^9&qXX4BSCC)oU@G3[<X[;'[uAEOSA
+r@fupXkKc"#A&Xfmk+1bLCCSdmFMFm'i(uJ+3G;h'M7U$_LsInk\BPOJQ;$/=g\R0]Q&%OOV#QTg6(gK
+A@8T"#6V>JEB:O+Gu]hhX4AXRXP.r!adH/@1h+q9>"=Z_5S.-0K*3\7EjC%Z\^LN%DQhAX%sE(AfS-p[
++VT@li^u\[E:rD6?-D#9>&Nq)dD(]'2NID?$WUcjURBgk?]M5(!+icnT*GE5oa3otDZ\?2Q;'1tdriO4
+++="BPaIM._8pqFn3_qF-?;K/;'6?2->s$W$Tn&mYUF^8pGjhN'ol"Q09*o)W#-e7Ep)4MN"O?l:D2,u
+d#e)_M9>#-MT*I3pLO7di42^3CXe?U5'D!S!aHt7kU+t<=R>3=B_Xh8BKg:>k9N*emI!`G9'URYT<s"0
+g4>X13L#)!Ir8_5G55ARo;5-6)J=TKRFgRA_bHWpX^N^!`\05/cF;8ggQhAI$T5E=IT-67+qD'<]d!Sd
+;%jLi\oh;)1h2<<RfJh#lft'eMPs2k-#Z,+Ye.W_h#+\hl=iJT[V'4<[QSH\\)ZC:lFW?`hdTCP:*Ko,
+1R6m1D`Y`DU:n:.9TCg]?n^DJ_`$-_GcD1!\6OZ[Y?h4ZEYC@dY8m/CfR="oAnjYB^Oh7_4fnhd4)"L+
+7rZ5[BXPV.IKck.I]mHuQ>t9;cJFY1!,KY=r;:C6n)]-6WlQW!VOf$LXEKiq=1/<ufRhk:YZ:!#Z)$h8
+Y>;-^?Zk[T^Z(pR<uf'Tb18Y8\f\c`L4^K'\>al'+/Q!gq]>X"A*VA7`t?<D7g%/Q,E.+IG]U\c%sYu$
+dE_Z!>9:D)VWHPa;rJh3iYq`9>WrPq*#2Su56a1K(de$g_u#FC[VL*Xc\&19!>#2mI@EfW4ag\2=$L5o
+2_!02r$2R?Fir?I4!OI?;8th5\-*$9SDct6i/]\m,Xe,,YMI;,5CQ`A2#_Itq$4<%g"eJKj.E*omT)Mr
+9i:`,q]>ZVj.)!R'1;OqjJoc`%?[aTgN-oNmt<Bl]>Hd=?P)+!Yqti6kRk:*qMt&$mrknT6#ke0O*X)P
+kP)KA&3B.2MGp(rmW*(Lp;GLfM'[M?!#G`I"0nu`[]`e+GPa*HN>Huu>fKc)F5e#RI8AeAO'[_#P:XqQ
+@CEDM`HnNOIGJpbb7R7JfqF!<!]R)sCUI2lmQ1+d[!S(13!?qsRV='6X$E%/PMU5c<CDKE-p_#2\KRiO
+AZm[_M:26C]!M'nPUH<>LU]i>56<u?.R/tU6CVH-Z3k9&Go\3]1^j4"WU*<&$)q\%RMT&I7A-sA\.YRN
+Qg%_oKbcLH!NR@+aimsY8V/]qH1th2=U"FR?b)t7RRWm)/I0Yh`5bIW:lY=1^n&`ue`.oEI=+_JH?@0P
+Zu@Crk_34Zm20RI)ui:FDGj_uqEUuVT+QEA$RJ,qKJkj/#iAuFQ$;'2Mbu.G:f*,I5c@O5`/G@"J3.ii
+4u`%u\(`2O/(aZ_<dX_0=,_GJ/1qPO-uj5sV<iY``I:#$`o(DU7u30*B]o%'e3/+KV+*TZXhMs&B3LXP
+rAZ%kkN:;0UH[seo)<f.TeP2DP=lcJ@TY]>Hagr50/bc72jGa[I3@%<Qg#!ps/2rXIN3q73Hh^9"Z2!)
+1Nk23<PIO#48$Jph?<,t%tmVhpLo9*f$,F&O1&p?m-KZObr:55D#B@DG:ekH`C\oX`";dplB/-AK"@T/
+OhuRgae`=%He$)H!^tQK<IF;I8[2k/V_,pS-ORMY=0A0AIR0q+N@J9IVF\=ic'dnK&RM<fk3s>,53l4_
++k1WR#]\Z%[-_W2@@EheMX^g;MQ$S89a;(-rM\]?cY\"_Y4g6@/6=<cS#5:)D4F0RmaSHIKF^+q-,1SX
+Yjk=tfE=P.(pEQPiJ('F`U,;>W]6!#m[mUj"HD`h-<9MF0"JLrYhMWm,uD!l+=)t!C*3#J[4YN"nFNCb
+d*&'=/90)3&UO^m+k#+)<o2i_N8SH]F^2*(nTEW@)ppSL9q+.P$7T/&!K/JahR]r9LSU`OY\[S@7Gj9@
+I+/&3VBV$3I`l\.0QX_(F\=@d#3c"A`.>6gC.COH'?cYN^"FV7;Hm7MY6jih1P@/re5!(.9A_b"l/IP)
+mKd=f[_Ato$h_5if^>K+RUp93q)rgD`;FDKXShpJ5>)Q\7464Y"nGIB()9ojm<T<S-o*1U'S3KBhsUBU
+6m2,P+qUK-"cNNjJ0+`$=hnnp:]T9j5QS+P!t(,7SQH0&_IFS(e,tRnKFI*<c"#Sn#K!@6gC!n6YW:tR
+B"cMfIr.B2->UAT,[<s!8aE.OZU-SH!<(,4Ld%8JJ?U+\$i,HMje-M`"!JV31hSlH;+(D4>Lp/;(?Zjo
+TSc5p@#]=;-o@Ej^G^KqE]Y%d3n$G1;R&3u2u8*RNBZ'0Wbl.^ookpMkWs\U3K+2G5&<G-)uTbZUE9cp
+kR6dYX%jO>S7?VfkG7Y^5/B?FhrseH]+(q5&]%+NQSI=fpB>"'1Su,Ui1H]_FN,Ca052cslK)#0<(!>%
+_ee>53D`24dDrPhFYdMCgJ:1c_"&\k=S]a93bs(sq(i5]<<bN/f%@&a6M.bJ4.D)M`q>G@7F4f^WF:Qr
+?u">fM(_iG3bWQf&_(8rRl\i!2]ZSrePo%6NJ16pU@6d[MellJc-Fi9XB)r[F?3W%-a*6U+4.<3%[mTC
+"?!:4VM=cp9uHhZ\c-2^q$+FEl2G*i&T4u517T(o$Oo##pdYD!J$EL:N^W8j!-Mb]L7LoN0K#E3fm6Ac
+c^Z/W@;!]+S%eONdW9Pr0E#R10(qQu__N;O.F^aLbjCulad6S?+s8p_?@.tk1DuWtY8lo?[N%#PpltUj
+3`qJOm!>2K@X>=d*Rnn@8UetH;+?o:[nKn&>u-B0<VfBHXQ;oWJ;^,PJWSePWGR*]c"p]HBN%G:6(=$"
+/PbXX(Y_TBc.C2IJEHKM<-D*X=<Sh9#$:b4iB(L8+_8Lk6GU)O!,s>g6o-AU,&O(QTlUo9I[aml92uus
+97;>h`r8bFV8B2U,7-p+m%2AEe>VA"GVc(j7Pg+;KK]N*63<ET/0K73&+':`/>hG48@k0p=%S"/&",km
+Sh0F+Z,7?AV4:ml.V`]\49!tm^7nN5F*pn4NsMK?2[_H<?s(0A*d<?2?8n'k*HSlaYe>K5K[9\nZ?^VH
+.7sdi\tVURG2bd*I>?n_OJHkBD3iar71;V>3!-]![.WSthEjYf$F\8eCd1[[!:G5*+Pg2"I(Ju%S[H;$
+U3&dOarSJ??(\aK6->?!CFf3B[`+>sFgc1J6Nh)3?_DbsnJGP;!QT%-\3=!hb='u#BWf[7fIStp$eHai
+p=_&MgO%<?\]p1/f-ej[Vh6'H<"i;SI6,5MT*YPMkH6gq6"gq3LtUr`dQO7_:$.PoD`%[^qHU;UT^*7+
++sN^b4GGU)Ene9NhHMq.<j%9DXEMe7&ko-7<_)2rDet(^=R>3P2'ZD!NhFq8]6bhHNY%k&*Ftm/Zcoi4
+/eMSpL0M4I"6[u^3,_up6+_OFf;INL<CZ?NRMEFrOp>[@h1Wb895OU$S8VJskk]CS\NY4[B*;M4&"tS*
+#4.6CYpfW(ds\WgY"ql#-'YLVlh<KlIXuTh-A9I#lc7VH5I]+]Bg9(494qmpm90eLh%=t[]^K$14^8r<
+i\rS_TBQKVoQ5`mbPcS@l3NTFHft0>J3-?KIGOuc8D,m76X)T=XaNfb<%pDl9q.MKF*#F*pUY^2lu"[t
+@SY_F`c=)qce#&Xp+tLJY"6#\Hr#>WErmZ68P]T<oLn+`j,XK!b%67EXeN^Vq\uE`Bl;!--:=lnH!i[#
+PPpZGYdik))g,JY#>+&;reRcg3J&:B&.Xi/P)aH@aE2mn2D.\d=&XmE)6?2c#jm73rYLVU_H8;F]mV,a
+a3O52Q#OR]6!t]L6=2Y3/Xk1OjgXAc>_&mS9K[KfF+KRbI(pc&n+M[[mW`T5n*gkqnCX;G;(%DfLn8kX
+:3RG'`tCoaF+hfr*ErI^_PYfpSC/@3CZ(m*Q[["c\%,'^jdOUqVpq\U;sFYgr`=<7,J6CciJ.mXV_<;Y
+>`ZE?O4eVYq/JoV0`C]i?tK352',jt%r*3*-q8qU1MIp%!1=,A`AiD.jaXl9V-*/2SZ/I_Z]sH.XB9<%
+Y$F\`Gi/QZ*]O_#j@CUT>IUq>DOBj3<spo[f2=g>]1L_qm$e/&*M-a$k0-6QWs:J65iR>\._F2ajBe[n
+DuQg@C-8^C/CfKOQQ5B#_Mj(nUq7\`hk[mP]9?Js--hUJ]Xl3-1XfSPC-6J03!P?IQL'UO&YB@Qrn3F.
+.'Q(NEHii#^ln\;Vt/k,W$]@Q3QY<%7bgnQdY$MmZ,7VVV85*D9!I:K9LZr042SEtdi7@&WB3Ue!OS(4
+O-KamKJlaV3^WQX;Vr[V(>Fn>2NmD^:AR/MG:>:=3bnjeB4nq"n<$0V/$R<HPE-S/diEab-/p54k0c0t
+_Ik`[b$HMmqnN4)&2b$>&o$'&iAZEaM-'M1YX:MEOf)H1M!BepZ6Er0)r[D0Sm(7a64Zoq+buurh>%8l
+9V!*p7KG7<X5&:=*gm*!>3XS0^TQ,iiLqr,.[[D1VIdIp@/_Ht2/@Q`jNWfA_lc;RXZGb@OCt+&]7M>H
+<If7Kr2bPOeN"EOiHTmEVQ$HDeaY(q2t;Wphn4B#^1V4[Ef)4&pja`P4XG#U4r0EbRc2b],b[0nk+M-2
+"!MR4W'-M*Zc+ebTq/G23_b-.P#?VTh5;GL6iE;dHMArj?407C$2"3766(YV4)T[3Z#"1`g>5'p1p[7k
+*V>aUKX_Jfp.Tm]opo7cC;/R"Rs>*?U;6HfNF8$KOjCJ.6]t#F$5^TCmSr$\>a>Napn=CI]:A')CaZ>&
+;m2\IRi)siOZ<4:EnF%1a'@JKVfA,CdSJaO+/S?,Qn5GM0[#h^d:lqk1`J\hr?S.J/h[etGQk1Ke;'l^
+gcAQrqm\[IC'&6%e$[Oqb&;D1FJe3-M3.<X+K"O)$aWR]OYtTp>24M3Cm)3'o!n:Dc9.>rn>UPp<$lP7
+2,]i9>LIs-r:n-/A@1;*D^oQnR,%+:/jfi['_[0HYpgN<^B@7q=g"FHk@LL_j*/V=;#Bcf"'!p50SS>D
+>N(s#ITutJrU'@SWN^_o@AS@^\KRNO_3i)_6n%CVr!\l<oB:0g&G[JVR37U:Eb8\&(tEI'.5)k!Q@O.q
+Uc`VP%Re=jIU.-<@_46sR/Y_M@PUSnh'EN=DJN<IAft-Abii8g_aWJKb@H&5aifF4:5att!o!<?R`n-?
+.BCQQ1`rlhbRU)`S.JZ9Fu#[%.njPsG9iAtUqeB5R@ats>i$\ichnXokpE`a0J$b[D1@ttNhFKV>,YSU
+-(E-B@GRoqpjq0FQp/P3guounlh]G!`U'AQ3ZS#;b9b8(1O!!=**SE54fo@VY^\041:Ldh21[T&!nHD&
+&Y"VLRiWF?Q9JnqFDTjl,$4Lu^Ahm1g\&W<)F-9"$m5+S6E&'f,PI99>11USkib\riKA4QjZ@A7%MH[>
+K!uB1r%!u'Me$I50\'qu1km#]a6L217M7sN5C%"i#YGo"1D"^1'oCIRnaiOS#)iH8DIbGLr=#SMOsA_f
+BQP[**!)d_*7nr9D8dS,!4]Tr!e5)lH#Yi7I;q7L9S)6PR;<DWE0KfRY++%$1RHbL38_*tmE55tA_Z!$
+q^l^0I7gNqeK"\;9]WHi]!mt`@gCac5kZGL_P65e$`)iX#aruZTsFK8P<IBDDA;GRrPSn-qNcalU[MB8
+h<LKjSO<m[c^`\RIHZ=,mqJcIO\_<ua!TG.EV>3d^/FCM_b?_?'HLWZ0akA`N\FDIX*dA27M-Hpp$)oD
+MM?p:l^]dT&H5h5ndT"H77V<lLe"m_B*^P%DF\RYk:8nM5YoXXASW5bRlEpj7M5=\nE!:@F;FIZg12O3
+o>""&&?CP`pK8Jb'q?kW<t#plE:YsP0oqq1@;3t"B-"jV1QknXK('$S=qD14"lT_j&9I`UUMk4#=qFjK
+*jS'>@d;3&Q%AP@Dq/8Mffug[_[Ho^V*%AuqJ(!Wn4^i:DV`*[E6p.lV/KAD_(a-(9Sef^Lj<>C_MZ8n
+ZlkZG0[]G0g$RqJR)lKSk/df0kLR)YZlg>S)dnr@83!D4k@Hq%`BpjQ4:ZtNhk-)Ri*bta60sc*Z2i?2
+LuIO$`a()-JOoTVV_uE8ZIhdU+BH)7nZ^2o['L=c/(2koJk1^BnrkV\A_)iD&:TL2$Na3L=V0?#dq1o(
+P4d"ME.h@*$*d'\P:VLpX=jrj?+4cM^5cjaK*AN?miH1/35R3Pr%M7blfJV+A[Z2_p9%<*X%,2LA=
+"d*]a_h-MmmNT?\@Qtqf$XuV(,$5BeBS$d2_X?*M5lL+pK!jB5(+b7^`\oCS*(l^`;CmX[h.Hp"@dE%m
+b%U"_bC[O7FL!$4]#hC0IUR<Xr:[E=*+9TcVYapji069*&Bc%BZlo:nfdmD&VZub0JcML."d)&BhLlGK
+BA>i^_S\[`Jlj1T3]lBlFkX<k"lXlBq:8'#e:MoYKCg$VE:3-7@EK@"TA(G"[_(G?h)3h=isiW]bjecW
+S>"9P?#OrXQ^E7&/IH!LAZj&r<L/!Id<pKXruMGE`H_*XrXkjomt!H/g>e#>-MtPe"gS*!G`1[li++h%
+=18Z`]*0JABnq94CW+`tpHXCUiN+$8s#VA\1#P%?[sX:1G`X.1FjA'?q=BTprIdth>K$5Y!R38iKo:.]
+FBQHSGO1Pc%T`b^`.3E#`.1b?4J,\Y2qpSm:k>kB(G(s&F,\DKCY[2u8)FBVo'+p1bJbo?_V,QEKmT?W
+ai*(m57q-6"6(hSL42&F)t$JnEP=Z+;F?V?(6f#iSV*@J0G'EI6>B$M5G:>bO;+qc]M^pV3qu,E:CK5N
+IKp=@FQ?'n\WK\tr,_OgW:J!"*iVI)\K`Kd!U)lK=eSn=q,j)k)2K"CeF589q0IR[Z?`6%Fpaa$hR>QJ
+TdcHeip!uFca'GZ!A2QMK_,=S/r_SrI*L.F6).3<cQfoRPV9e2N;&4"R$t<@&Dl7'cL<ImB=V06ULY_W
+6s?r2GIHnkF?a1'4!##)*!f9l*#7PKSMV-;j>1)8Q4;.k?+2(_*[ccW#\\tsP-Ps]D0*4_gbQo5IqQ?V
+.edF.@SShZi+'?l1Nq7lp+6h]"2cD9+pMP5B0rNR=-rl/JB%j-LqSIbG0nm!J0R-]J?YPPd^l7b'aZ+L
+a[n.`]sAR;-@meh2V_FeqiC!.h_etd+>dXc=tgCi\hlC`i1,7E?)7r*QXh(^DsI,!(YESHVIAnYdFiC2
+7G;Yhq&I:AB/-".HD^tr*?:[lG:WbH-]t3@#3)Y2<:IH_+j7L1^dcTT@4(*Ro:`Si0hp=@SIt`r3ZE\9
+b9DQ)S$dRV0\KM0@;"ba(8&!Z5`i>af3C@Ln$o]'b)cH!Ab=a'DAq+qb+O=E/5MD7CBAWc*=1>""14Ol
+K<6)f(:G9pldqEIbW%OIhd70o0t*l-!SX;4O.ZOt4PQ"*?;i9(OE(a&"^fdcp*="slM59cLnT#.m-+ef
+]R>i_f3cL2dN-XPhmC"e0;chr/X%,%mh=s_CAFOjlssI_(=mNEB0qEZ"jj%9LCh\eKbul(*j.VYrar]7
+K'@@;Y+<J@IL!`kMco_hk&1O3SnGb)mXf8^PA?_rVR"Am[FK[!$)",EI&:PbjoP'_Mud@uZa/@3j-hVt
+XQMjIAjZB1rXkjTF!/DIQN!:.K)N%>[;Gm2jtbHV=h%XtdG+(VLKck_L%+TV7kI##[@RI4R^GQs<:PC\
+[bWlt2;FLe/)[bBZE"HuQqe8CT:WFg=o&,V>#+)SQu0>np+/CX`mi=<%8_Hp)6m>Y<P%nDO4ip$X.?L7
+$BVE-Gug\p^2;0rhq3.b%\UOs5cF,r,G6N+G<+oR[_M$t[WI;,jjTV8\tMP"VRa+H.@\C+M&A%dBJ-um
+L<l]...@Qn>&DJ&U`B.10KLZ;6o,7J"8U2SX:MsNB)m,o-K0#!B3Lm\@l%Kl#2d*h@3WV%jW+6C2G.`4U:
+`P)0.qZ+Jg=c2Z8lJ#0`Q1e9k`9WB5D)1KX=NXS+d/*Qlbs.Ham3#2P++[8GLJ2of-6],'h?<F[LFIlB
+B#0k:gY,JHI]puqdb?-GB*kAW9F.'3l/%?CT3KO_4N_I]Zbk"`>U7b,E.r\8^2&"!FIqQa6k#bbY>0%/
+Db$b"5'qXSmL"V=n"-iTJ-RpK\MA!1**pS2(->sdnZ3eqf;BuX\7D$"*/Da6T+N9VfRCa[!aK^Rnfb\>
+f:`2uft2@7q*RW9/rg5%3QaFs=WhhT#_YX65_AZue'Q?Wn[HNWIChcljkI85&#[[dS0_j5FF15[Hk-3/
+3=_jgKBddhK_QUa[LO,oe<`t/p`ApIZN.eFIHU6Pe#p7%m+n#r*Q8\C^q(KT7KJ4>+^Fc&l8dYVLd)JV
+I1JSFoZGj_DqZ6(F;/+M9&=>$TlS5\"p7i^6Qj>A+LT,?JC`!/&sEQ-:VI/"RkC]W"l/i+a,"!KjI[LH
+Wal9mnI?k9A*-aa5]"3dU;&\V*$')gW_um68bD=!1Ti#PU3K3=%3*X-mYH\jjXq7NW4kD`F"Uf/1bRp4
+CB@CZ^*5u.*57lO)BM:m&SB>V6$m!X*7*b8BL'*)rS`HC;!'lp[!'fTMhJmoSE??>ET%uqj'p`%*#]XB
+]Nd9GStW#l`ud)1)90^06C;bT&25a!nh`sH:!b5B9]Gs62Qb?GADJ@_m#5a20e=`@`l/qf)SqO3-`uMk
+hj:*L5e29]93\@.iuX+\$Zipa$HC'?&U*^LMuA%&C8>k.#T=M#H\t$)%l7N(UN,8ed(S39JRMfZ,>/pk
+G4jULMfb"#`l1&XV[B3<[1?h:]8NKHb8n``1RHbl6TO$4>8e<<0]N5`SJ.]*#"D]6QlgDH^pod%/6=WN
+Y^kY)m^5#!aQ`oV\4?mncJdNuc.:-N:?03_#uKY+#6\:?QIcFmo\I^8oUFp46k#d8.Sapi5"CtC>4qi=
+7Nfpb8Eo?3Y?-'*m-='7C`q/CJ,-BQ'DJDF7PZS9@E-7no)Qda[BITf"/b:0e8H7>V<'T.g@Jqc`f,fj
+_*KD2fCc@<3bR#`[Y"Zm*D`4,VHdK6pM%]cPg>k_>68\LcC#DgN329K%'ap"3,$ST8'j9&L<&Nf[bb?9
+)>\j_B$M8"ffWD!LU?((4,5r!<;W.FB@cTi4menb4lc[iR2$OIiLF&5H^W0IFZmhmQ._Ut.E`=c0SXX\
+XmfjYl0`gWB3)ZG,j"PqLep9Ab;&2(RdMPrF2lPrbrN,i*"@8j'j%m&I)3f$QZHb-12n\7IOSnB>[O!W
+478e^"ZjLof6r(,69jn%PFpg=oCiH*0DG02Gm+)]FS2Pac#hdj05&+Ch3M9-VQ5>]\iPG?.r*,0)*eSP
+V<NkMS`A?2@'WeoU%WkM-=]^8[]d<]_>F,l"07J*Q!:7YK7^i]dW5%^b]M[\,rAp%amZI.O8Jn'f3<qa
+65<!E>obcNeIaWDpPN(b71/*c1OS"SEL(^d;H^^^&>ndHIbBM)kq%m.KEQNbbG#,_3&;q2GWp@YO,D94
+4cUT3l1CLp(I*sOAOr_/cT=ub3G?j_&X6%hh*O.cXdb#<l1?+BYm0H77Li'[hqsH\o6TjHTY3]!l#_)"
+<OQf(A<]i\WgqMZ6'G%M6"+k]p_aKKENG6sBD@T/U^mr`Q\4XBcfO[dXAF@mKU,3-A'aA+F?4F;RaUH=
+eU5H)Zf3F$+[&@Ngmi3,U,7Q&44eq0:3tjeoU9k_-f4]1&)q^5,&Upp]Q00W]3hVc?OSk1'[]#U^fK]j
+I\OXh42NL:5/T%0n#]\ucTl.^:TsC2iH[SQ?`;LRcW*Sd"9Dn'CZaK_)%)%&L;=YA+5<&R9EFE)VEes`
+?f,8,@_)3FL<:b:H?16dcDEJ(8pd0<!\nbACigb2"R%KU?MSm@NP8Y,OpZ@@fVEq^ad&J[%Xn]N?KK`/
+.R#U(I5bq8/hns(It$%^i\q$29qYg%$A:C/V7+BkoY]8?neaGe_V#.?4K%R;heR`feJbDL/uVBT\fX\N
+USP3M1nqL6<#0DaV#?mqk/C>&D6"H0B8\<J3;ZjXKp-(*^m_r;X6b4NF!:)DFM;!+aWktRqJP_Q*5erq
+$7!O0B9RCka"0DbQ.gB^NNJZi-u=>-'o-q.1WcQ)at*E=I]dsiXShoII!5TC>+r7p'OWeI/iuIs/.YQg
+q=801<HOutFacWD*Ia(AceRT`$*!l4B@H:?>^eh6)3h=EI84@aOJ=((N[gkP=WRj2`^5cCVaZAALi1Ym
+%?ht-[?WNSVU(C:HG8V4>7eo>>kXO;K/Zi5&T&a[Xsq-n_&H6;JiBL9\GdqL]+1S7n,O4QO#*\?"LN$,
+"E+9K[uA/:23-T<3GKP]9CPD?bfT"sWUq$(!6m&>p$AA[$f8[,b]GjtUUQ&3T"nig$,g.:47hO@,,!g=
+,jjU"Q*fE>ePbX;hBNDFg8j#sj4l(n\)`@fh:%#&-$UXG)S@6CM6&M]IOGg(I^X6mIj:5&chAff/&:$6
+k=&J0h.-XMHp%O7BZCrN3m4uT_&MTDeQp081;7JSN]H]SKJ1.\X"JmE\_qPKl4Ual_7'"!9c6[J_^X%+
+@k)OGGU#6oNX$_-S7d7Q6s*Ojr1j5gpHK3:n4_A^q!empk4?@foj@"1^]1JZJgs"Nld,V/qk*EYoT)3D
+g3M?A?YJX$-e`kGH.ikf&r(?o-NF(MMf&TQp^G(T$i;`[Hp_#$^OH*YpH\c!%j_#KpAMa_#DSYeYhW<H
+b<@#_J,I4!qu-9[oABPV+91jo;T\A*cu`9-AcE5C:\$[q>r[4(h\"'A_!KYFc\P:chd;NZHJI+r'[aL(
+Z"]/;s,QkA.o#rn\J=S'[IObM<LCFdnj==]"FZ#<94*Fip$qlKKPk[YJ1hPK7;i)gPXs"8g::Ecn3cbD
+bPYI&r<0'...@m9>>l;BFb^T8OHj:eY<s>S'o@G=q6k&.*fWO)_]#GSE4qFSpJXB<dX%3&m.L
+*Q69l^=LIFIOhhl:T$lLRMDq\<_o\fK%k4H:0[2@@F;FPL$`^W4RXU7na,As&<Z,?#dDFABH>tWooRY,
+;s8bC87AG%U^D-iIAV&4\X_sY1XE_Dm4fS%YQZ[!_HD*0[f-BGph)96O7CP(m#pnZB_lf1+'__#YOZJq
+KRDYc!#1O*Q4;4uU[@!MXc/D<``F'6DO\C3K'qu)cEf97a8Rk!,JX)2dA<*hG^P#j@ntpt]q)CP@!_1X
+<+G4>NTl29ksd[-$MhORYUbc@-9u4XDW-[+"?FV$CFAUdB#K?fcIO^lI$3A]4uN`4pnh.p(iX&$n%&i!
+0"JFFE_ph"G=R$-7"]f4,:*4L:Qf8e=464laRASeb'E>#ZdY_^6Q)1m>oh>O%:ErAVXk2k1&,FQ1Qr+i
+B/Z@VHF`+8O4o!:6<e*"m\uhrgJWZtbJNO_YhID,_-Aaf#si!m:J/f01>?mYOQiTQ\OQBKfe<Q!##>-m
+;U/J:G0@D3GulJ_!Ye,a9-&j$O6a*faZ_McnVbXVPk/I(ldaM[52"p+jm:Tm#d2ILntV:P9j&0'cG$Zm
+)`rk!8*&Ejo$[<L4^VT(qK#$FFOKE4/g()*/%Fs/;l)/<V%)iEAVAdHmbgV-h9'T&+6^`u`3A=aDi;LE
+/hCWCG'tT/HHt[DFYTY;Alq23%#1@dIZV^-nc*4tFq_;_Im-r"Sl6WG/j6oHDY;2odM(FcWP&$6ONuQf
+9R7U$8^GMW'\L<?$&t>>hg^9>hD^F[16j)mlJ\ecAoXmFV5748:$>ShHrbR!NpF8".:)V&c.9dA5dIHr
+K&,(3$!UDO<Oi2:E#Pp?!$Q'Srg\co_S^+Ic.oHoUNLl,r9Fk[ISMi)bqm%VM%A0;Z\mjj(!^R_i_#96
+n#C3CYA^:GZ+`53>/ChNga6@>b%4=d^$<V^;@s;uR!EuD7+W725AVg6[Z.i,Y:iVn:MUX#!f[*r6;k3_
+m1i74M.K9ahM\1op_HBL?D/UA:'E^(c:4crU2TM71Dt(S*DSV&#\V1@]LuTC-3s7?Zr&ifjkrAcQP\mq
+rqFQI'u55a%d^%X_rQ=m9FgEcL,\4E\)4<:%m0AMHC(b84]P6R%esF*%N$D3JYSMl9Nrib*GWcT)kRFT
+BCT?5'(8j+@1P^_0Jsi*B$!c'p>3#F-J\D`N%Z-P1R/`9&EEc?rQEfW6Auf!BCo4Pi>7/AnSPHY^.k_N
+:>tSI%-<sh44Cq[?/jLMh5NI<gLr_URpp3@mS_5c)_D;3ULa_eB\fZ)NuP2_Fh"m-\g)mgPYA>6C^\?!
+gX6_TfZ]9q*,8><AM[9ON"u!tUe9(h;7=l`9fl&'$IgT2.W<oKH'@9rC9K*)h.R\i)_FR!UNLhmdJ2P;
+kNh(b?#Np'eEZ-b/'Y_DZnBfs,lUY/Y_t9mGD,S6<FsIVX+da>."=c?dqnm_@1,cORr@n<P>;]sS:?&+
+[PKsB^5he\JBC*:+TFuLZ]:Cmp@cEhQ6'*&8!:@$T#e5(3rd:R6>+B\DrMjCT0Cq_8GlsGkF\dq(B0FL
+KZ:9%\DF#XYG?3qjAl2!d.et"_EUrQbcDiF1]@ELpRf8dQcs:D'/Qii1Wn89W[)\>$*Bm[RM*IgbJf.,
+?!1@dSH*6YfVTuYX@#\bM,XUk(<840!U<<6),Zct[40;nc7H*_juLZ"g$"<-P&h.A<T=?F%/$3\K(sUg
+kuKZYKcrc.kMKOA)_F[(6'*A(3!(1=b2Kj8n+:=_qQTN%;eCTKA=H^:lNNlT5Ar$U7q&8tF^uW*6#H#o
+@H+uS[(DOd=F!hMaA!#Kk$Y':+=pIZD4(V;@3PeF:Wr_^_Cg@?gVHaAe<BVC8;^TV%K`Ar=*Y<h%7&NA
+;h%!:ZUV7%L9i5\kH_&,/cT::60h;-gNP=!=W<<g)3.6]d<,D!7QtjlNfYO-A@fY!#?Xu!FQW-F.VZiB
+#M?r8GL0%&5_qPog,-.LFYgr6lSR(eDd`Z;hd=lO03@LR@0(1r-IB0nV2Is\DS?qSRt5<B4+]r9f;=Z`
+X_/m9^J6"\qR.&C?Zc=PWQ7OmWlu2%[5"aNNI1u+IteLjh.tJq%q;N#%q6m3e'P.J?J@`;3CV<9pY+3-
+=5Q$.URN7FZLqE5grM*B]@F'1-Y36<ROK4rg*5.JD1jPU>;G-ebP@k7C.mPY"-9T:7u3Mp;sGGNB4Z,4
+\mg,7ENeEbr*?eZAH%Tmd[K@lk`/=0:AFWc@AEJJmcm,VAcl8b/@CM:P#b-BZ3`$VBmo2UaY>:WV@Xn%
+6)lV]LHb#A$c0hpjl+[BTJjqP.jP8:@-9i:G6A%PI3Fu`\A*3/UY@fVegsS0.s9rK1Hrm4#.ZVlOLFDL
+:KKTQLsGu1AYmPKU)S(B,mPS`NUirUZ:_(6(Ihrhg>Is=,]0Y\T^c8J81"X6,kZ"qP+`,]]dR"<(i;-4
+\TLOPgpQfh=b'5k<$k;Q.MZB,3EX(;3r@'(UIfMo*Gl?U+NJVdZX6`_YKi"OY8\?@aY@)B;c+GWk(!1M
+_A@kSb.^mL;Gm.i[Y8b[d@WLUnsrl92hFk'p8a3/;j<:r7G2T!jUAR>)\.DaAO#mjT@<A5js1\<&&o<[
++d/Qnk6c70!JCghAo^UP)ru!%0+/egEb?jTgjS`m6P@#20]EEVB$_Ws4tV6)+fQgue5M?c3%XO0H\JGQ
+O-ppCg6npp?=h8f3nNHB![AY(Lr$I.Af&Uh7Nh>&,9nK(WHi'c*'g![mMTI$96guMBd5@VCH?T[ds-eC
+X6S#oEsYE"*(R)nei/OAp-1S;ON5uN$;rqq!>j4j%[G:ZWWDUVRJR2hrVYlICL\.4iJIi_Gt_S*&4^6q
+&aZbRUGL1I=Delh[NYKPX.O,,Z'DZV<+EGi?;<A4*>'-`fgag9EO\59bDW>[c<OiM&*<_kXoLK4Lrn4H
+%@QWD`;#S(caN]cG&;,s5e@K]bhB%N9W)Vq8c)`B,pc=3$o5k#651bh[UZ<+;*lrS0<:P1$r<M/m7d
+>&j$VqJPE'biMga$Sb2Em0'?Z1kZ7[EIqKR#a:k?\9A#VC#&(06>G;B2\W`DHXc2Ah)^YqV4l*k;aSJ9
+Ya"n;S>:je3C<B+Q'Y;@m9mKKWG]5K)6,OPWpT]GdOc#SKaDQaIpPLq0HFnBImS*9s$gfOY2/q?Qs.t!
+E4]`Oa7r[bD^tW''93uRoGpe!`:rqTrYm%B'Srm%N3,HA^c!21p^tusno;PdbY5d"k7/@RBqK\+(aY4\
+_HCXEXf"B+N5nuhh%dG-'pW:!ARn\enJInBNUlLA9rZB6]&9hNS-u-?jQ=INq03*.?a#I[MPqB]fNQ!d
+T9]Yf,p'r96fP?RP/e!i1UpIlUC#mXRLkiaKJqR)<WW)Ua*;YZb(nE2;sMl;.5aM@^\RltNJJ&J@P`.C
+8NaG]>Nk-&T2$skmU+Bn]CX!OL.FG8LE#V;MKb+hQQc/_:U4@do5KCmg%D1Dn=F8!`IaIL4"M/P]]/Q)
+gH"DhU!UOT_IToVQf\>'bX1VB2=mW4B7q5$?$q'._mHJuk@D&-,D\fm7jc\1nrT;>BD5@+h&p+k,@\Md
+52<2i/?]O!?MG4fl:4W#g<1:ca)*P4WEF_AM-8(ii;5'p+mr[nh..)>%p+Q[2re,O9MO/oF'FtU4qj[4
+%W+-hmt-8%X%PEUE4b=g<Qg<4F/ATrF6io0]gIAh_?JNI^?PTJ0F>1sMZq1hIFOscPBQW^5,lQo?G;UZ
+DI;3TfH.pB[`@%PGBqhNT`$k!"5$u+\:%T`9=aG?\B"*TfH.pAYlaseOB)fkI28(F3>RMK8,PUMj,_ph
+nm+E<NVNIIna;)S4q1@,J,<q;^;<_Jh>:7Va4A8[+197C7?:VAHlCue!i\a%mL0$[a++*Y?[pSC=0*m3
+#gc<h0(!*>)!WmgQa0F"!3u;L0+ZQ:rT>@rJH2n*,5EhUjV&X7HVNG\rJWum=Mq(#UcGu(/DiVo`G(A'
+?&3ad4DMdDW^Y28!pn]I"@=js"0Bq^pp-X!au@4hBUst5jQgkIYs=_b*Q57bLJLHVK>.Qj=eZ1bF56CZ
+VT&U\8PI]R]QsnfZigr"e?+G_b$aCdNf;UXRQI#"W;N#[8"TKDBC7&)q2.l=$"=r>OKIG2)Vq2erTf.u
+70gK;,F!\\,NP%L@@',n3o)guqLX6bSFBG_h@+:.*=[\_F9#DJ_+.P$1T*7#7rW^bko%=6!KL<1rr*Z9
+gCQcdEkW_?BVZMEKdFf<L1i[uOUB*-q^7hJ$HeT-*IhXPe9[Go?-AR:63&rZo8GsPK(NLLOt[$^V_YV1
+7K\#8g^nm*\Le(i?//W6U=TV1F'TZ\94sR]:VQs3AJ^O$nrA>V7+\]9lK]*kZahINmX7ef/HK#@7EXfO
+m$@VPB@ibOS\<%8n"Z%Wn7,*;c]OhUqU>]!<6C&,P/1*&3>$(&bI>ctgdnO@W$o/&)[mnEMbhWW1>?F<
+9?W$1Bq[%Jg?k0JVp:6Y8OfRXhOie8-jYKYX/=\V=CqUnO&IiDOGULZ2?a,*J<ea>fU8TBl2+GZ[5a.=
+4/;P1KN(#$qs)h3Y3N`T=N3gS#tW2ImQZ5(MJ/e;H+p',$n@_`6I%7c^-jA:)(K^Pl4Q*,QeD8$fCNdk
+6Ya).Zp@]DJP_oh8lP":K(m+rd>GTr6LO%J3)pCQ2*rGJEo(K*Rt)#8"5NM[#%E-4!"Ka^cZ3a==CKW`
+#t.^40/V:Gd0Jlc^:3>LIVrmq&>'8+BIa"H:m0Jk[nr_$Jg@n_&br;E^c2CaR$Z>LIFKE'1'HO>Q/<7b
+)%MfAcRJs/EkCo*7@0Iu?c(uB3D=n8?5N4sl<$Ue`9:G8r:BNpik!#pBA'tS1/e<^/#O!0)9)(cnQ7qp
+dSU5o3PH`4$La@06g//O.1J`t78FU@l/C<3QhgE2GjO?5ZO-hG0iI@&2H(WTR(s@8OHtOFn0n(5)LYi6
+bEmIUn]^i^#)F"T"T9$a#Z!X9kd^UL,V^%KrW4%jU`jQ5BFnChmg)$b2DYDmi^aS6kK#L]+YafgL(DGm
+g/Z%kT+2Sa:3?[!7>-'l'^?7JccKR$cF<&"-_ntZ:/%Sh%Ta6VNmpp\ID"?2X89[HIKSVN1;HY.RpA;3
+RL25Q:)]I*cA2ibf?j[a[BaeiP9%AHqJPZ6*go$U[:UX;mK<fqL]T75/qP]i:+'R<5S$&b.=!sbp>KO,
+3=`FPA1WWm___1Ra*.mMkH`9eEb7B8ZTQ5h^r`S>PkS+nG%@md7o)_2!jH(2#%E1nr*0i_G[p:koF$3`
+))r*IlC`X2P!CQ8Y*2X0/'..M>g?G-m.7IeZ&.g.fmf,(9tE1Yf"!A`p^@:cZ`AIol>hsu;SX\OqW_O#
+3<M4Qp?Qed_%i#68,u)3?s*mq9aCq7.AHCU1I0o<k/r8-3F'CY3pT(*oO0Jmo&/`t3f%(QS16K"-Q2i-
+43CB*5#s+\W]W\"EYtBM5nBmC70<WFDLfJ1*$VKRF%936`8]<-n\f5EAMM(F=PA(p3&u'&f6[d@:hGAs
+&TY$hF$-XfF7FZB7?F$&&-/E>i2a`kd0*b5&NSAC@ZdK>`9$"O@(<(Wcet(5#"KeP[S$ADjU17`(d>MC
+.S!t>Q5UV"oUe%l:/%6<.ejUN,N:Ki(q+M;!RL!9%N&M,7E?jWb#](OE.2:"U+g!KOs#\Re`L4(`$Z%i
+%hTU)+NV)ul(Ko;aV9[G\5L6N%V6(.j#@+OJ.tj<bnoFg2O9720Ti!oJKhlZ*:P;u@YR0j5)"o&H'pEO
+-`J6Ro8qbN)$GiN:jC1FZd-C!`!\d'&.Y@*-s;K0DVF]:^h)4Gjc*Zg:20;")?R*FB+>LYHPsMHJ[A,'
+"YRg$Cnq(SGOir[$peI9pc>.P:OlI.*hQZ\a!d."P]g!E'dP%q8V)oa*5m2cbt(RID-+m=X2\[:4"Qg-
+#A<\iDJ&b[5t/qSA-.B)%]2>/Z*+f%S,#nkS>"8*2?W:V6:s3LMEhT,Ceclqh*lPM-1+gK?ro&:\UgR4
+4K4kJ4;!cU#'3qZh5c0Z+Md0E]jOGeOCB`6'ca"'fSQQ4P]^;O<UU3<\B#GfR`3k]nIEtmW<VO>e&\H1
+`<a%IW_#W@gX`X1U3ZH&69Am'ftX]:XqL*^S'?!cM!7d5Hr<WIm'I1CW>::jpi@7FjCtm??lU0JGr)1T
+13$XHYOsMGHh75<-p^:TcI7\$$,N)WV?GF$$mc2)<L5Y/+B`^U!C,NPnCE_S1\e+]6j?cEd@W(g5IA;i
+9C;K[]Q9RDJD2]1jP67gjEs46b7'pK,BGXc[=\1aW];7e"-KZ[6_S(r9_L;1":10$:IeBP>QL=AFIAMg
+oDrhG"U?Tdq;s<n!^RLXjYjpd&3q4UV4i,L><eA<jcEktYO#ZA(+CoApH_m8a_F(2Qdrn9</!:6&Mr/Q
+8-0uUrU:\hmg.eXSLH`bgBnt8.W/I]_k[=<'fsR[kiFoHQ8M8G7tW!)Q[2LjD4cej51aEQ4u<A6OjdlY
+#adSnLr)A)Q4I8e>>8*Xm/j$H^&T^^$.`qEE0uP;FqpH.c-%L3hIq0RAIr2s*,5aWQNSCB]0OC6(@%ml
+[H<WJQK)f^>jj$8m]VuC)B#n$$q+pkZ16Kc.Pe`?qm+2%WSLh2ddbkYb*i#mFr'CVRe^.;OM8@j(c'#@
+c7V'j3.F7Ss'5C]N.8!`2E?8c_`.AR1;.QThcqpZ&Nh;-8qt.!+A9DHMhh_p$LP#6Z9A:),e;b)*\;6<
+g"K_m6n!0&RW\lJ`\Mu#-Z<"7M[Sq%i1d9ArJ-:L4_d<*>YDZn%tkFHmF0V)7UtV?&g3^[eQe_'GL'lB
+L$NBB&Zm8mV>9_?m7lj64$?H-c]BF;o3bH.il`9I)rNlYoqmdol.5s-U4'WS_X?^co>@8n`h2R+L=PIh
+_^e,><hUH9PQN?Oam*trdJ^t[@ef6a/]5-B&SQ,]>VtuG.2`"6Ac[kFjF`fBV3_q8,,jZ,/!Vp.$#7AY
+?sq3K,4K_<DO@]YhgMD<<>VI555=-e%E6:uY.K@[Y>cJ^9b9G)8AF)V>!ae#:LiVn07J=t=:nl=nlF7a
+`:m;-;-E)gZT"u6G6Fs;/!\e)UG%AclK`2-EOXV3HOR,bkDNB=3R>bnXU\RP/FVAPi,)&;6`36@[K078
+PIV2;[`X-GNKeoU5hrUZ=03WR.9(#aE.Q5'ci]f&KhW'Bd@$`oET60*h/(7F@H-6Hr/dV\RE?=O1Ir,T
+n?Z!3(t9,bkA6D"TYDZ@ZrnneS1+SJk3jehcYG9fr<iD2hB*b`<QGG[,)oS)_u\.@$?2or%a-6A%<%8*
+TW<-(B"+]/AS*\+0^h)F#ik4i0#Nc4k\4jm+a`Kg"B\^/6XucdYY.pXPa,<S)XoQbCfK?b1cC#Tp7LJ]
+"K5O+GT%SZ:ST/uBl&)%8Ni&H]i&(^dg1WoGeiU(EDPjkC^^:O:Le1rr(nqGcDRQPi73[Sr:r0b(\Wkc
+NkAS,W!\uk;%RimOE]'`=hc'p(CN?b:%(cT-P=$j>DJe>FK!_h5,^'sC%R5j:LiE2L%$pnMJh87BljK+
+L%qIt,/(8e\j<-i&O!3GPquFQf7&..4h0oM&`qp(a[uo5SOLWtnn%s5kOO7_^iP&N8$)h6Z92$7QV_'a
+4jg,PJ5F:DPoo;'nW9pH@b0ZS`u>S\c,$mi37Q-(Z`aA@G_$J/VAm<CI9mt<`5`(a;550W#*<4tS-Kne
+;=beU:Q:.BfKbcB+ANoc&jm8`5QfM7Lb>L]K>lJ3hPHiCmOpO*Cr]8fc/-^tLQGI_ajseBP-#6d!GZK5
+mU#:>k"70o6BisplY[\.T/V1AbN*!Am`.!3?1VMuq6;`M,"l3-Ql\bIY)#+H)1f.VF-@37AlcT'3j)6Q
+^pJ;rf)#:Gi8rZT*FQ9BJN8GpG>L'&_/cq.+K,o4qUM4aV/hpah2L(-O-.\Eppdsm\6RQUWn;QE=[]Qu
+3n#=m]'=$XBpF/&\T..fAspI?FnV35>L[nao"g$1'/g)XU$Cjf8*g:B]u=R\%H.MP<V_MkgBE")5AfG$
+:de8#`B!^QLsI."c+FWU*,Gq4e,U"`l")+R#b@$nLVW-*:334Yn1?W)\X.h@2pd^ofb%g<TYB-U'8Q+K
+fA1gX?IL5WWHT?!IT&Ye+G8PAD[>5e!jT7l&NM\8?,K^Kk)P=aNoSBTb*T_KSp:=73g?PI5[6*I5S?9E
+TVo%$jCt\?S0U)lh1%cDBriP()CqKKfcH=[i22h!Be0gA4Fkm_J0U(]!NI.!Be7?!Afo3A/OWBESX=R=
+l\K*B9a8gsNAPoFhJ=IuN_8V[[d5>dR[e,j=?/`dbsiW'Cc&P^`heu$)eg9eQeFt7\rC5+[?8J:#n\*_
+(E+]7eOHk9::63r$+99Hro>T&@3\K(9!"O9=.,%)]1H_EOX@ELRZ0/SH;kj*5dujai?ls2_[/gil<(<R
+-A.`2#+Eb_&2qsQ:/!,"AS8?3Ca,(&1f\8%NAU<Ic>=goW0K0.Gtc-\RPc24P.nLE=^EY$K!esX@s6Y]
+R4pq`L14s)Dp^&/p;5u5O_q*+.'In;4"iG/'h?(&&$LMIJb`65)ZhoWU3k?o[fW;<^6BZ"MrbsS?G%W;
+"IqS@mkbD"Hm'p,9GA!8?6-td#.\oB&E:7hI*?CA&SD*3h8YKT<H[:0<GnaD0T#kJb?uVWqq$A=`kZK>
+#(\`n/*dTFQ!D=-5fr_Q9j$#naUK>nXsTs-5]pUgWpJP^OJJ%)F">kT)Xt3o!N#K$D_B'_Ja2`*D2mcl
+"?0jZ<)tGPBtjfc#?9kb;$ndqAh'^LJeR)5!^$@#JLGZ)&P0OifK([$aUnqOa"[IIQkk:l.sI&>[q'kQ
+4[^D(jNZ=I4-DWlo,^$b%cr(om[<?':'T67U^/Z;Q5=RYHWI%lC^?M;H31K1njHY)WCC&:Y=0`9/q8TG
+fn;umD;W'h(hqATYMtXBPu"A7pC"eBgMeC<ClPug$bQCrTi^*GMS1r#T4Q63^*`;!>Q^q+o7L,QCkWCS
+P/dngKWf?qTIX87N,/ZY_'`93Kb(bO;n5"`V(6pe^5Ci!*%JA:$6P];>Z\FeZ,-Sd.t$jB"'a`oUYG>H
+++-@%<qp@@TqX&b=Mc5aE!(NB#=;Jd+<T5C+5I^>Y&LutXXecQ?H?1:@&-Drn=eP#XF0SK]#)usM&$"l
+7rnXM=1BE$Ko]q!<A[m\U_Q!]?LURXT$$_\Uos1eFbL&e<qtmI#*pcefS*1,iFD(O(L,jILRBY4O`2OG
+pfMi`bZ=L@-B)Mi%mKYs.m-(&iJOiS5+(rp<k,"UN>8UeYnaE%;14S>(6QR6Xe"(oA9J3]_X&4T;#$W[
+C%M,d*N$D</tX>MDMJU.+Z)_U0`%@:o>A]$e!tF!/:TpPFRUbe&50Y=T+ZN!/@BR1is;hD24_l3&GB81
+nceP7ac[U^d(i[#jCSI%<`A640G$KO?KEM1&2Q/D>6p1C0n]p8e>G.CN`]ciP,s+.)eY>3k7Do+AG+Gb
+T^i"DHGFK&Dh6T(]`ePmh)+Yc@EW=ZU[f2@fB$b]K\37p"(S@a#X66_Uk)OuQ9fsnV"oho0$P-6nVK[p
+l*eTpPq.(R\utR_0FrSr;FJZn^<=h/iodnqXIKcI\[RHWD:;?#TJe_^llo'g8icA74geIDeTcIZ'=SQ[
+a:*6Pi#A0VZ6a!-O7EK-]$+aZ?/s1gW@tV]3A5]/[Kn[oM7dl'bIR#/Y4"*fjW`>^RR'UYT7MOk`6%F7
+A`+;TNTD;IX*,9%BfLA)fB71mU[i%c4N<OfHL:>D!o(\nLrE[oNB6CI;I'0YV7?0WWKh7r$EL<)mFaOQ
+'\0Et!837l1oBQW1.tPL>PV^<l8XIfW",=+U,q@Bn5*\4O+&*n@fk.Y?U_nRk"Aq9&R[YF5K+4?%X%j;
+PSK&MdhKS#):d84.d)`\?tm1*B\EFId#$7$mg`4@I7'e?.AAW`H?H!$3Q5J4'kC9S5H2:N4Y&S3W(:5e
+p't*O1]0G2B<Gr!jY9,-3@t2p#bO\^#fdD6>>A;%FY=uNMR:&j!j\>*@ibiK8ou.V+bLdn/X`Tc@9[fS
+((&!#&8)PUJ'QOui^oKj>XLJp8*fh*@9`=3_2u<gr9;&R>BAgdpVTR.;Y`$R\L1j-1nC!Q4bhUp0h53&
+k4ne1p]J>Y5Z]-;[Ur^Y[\T#!bJ,7K7IQ:P*W[eC]Ym?sErrH&8,;Xn0ZhRY(iZlrJJSbr)@ho3[Ki/i
+@hu_1fim9+"Jd&d]%Jt!iU&eWJ4H4_;Kf:B$_:R`X#u\lg01KW:ZFO)XoT&SBp]*XHgugp1se+Q+]JOb
+?MlMeGkC)*f79dR``4i<*mIC<ltAuq(M=Y$j5nJ&R:sA@S0kp#;!78nJ=t[(%;;DM^d+j&38O;-J`o6R
+i#-o,8N#;P]7.'j4S5:m3>4ZI#.04\)XqiC=^`6</DkbP!uaLKfU4B%Vf.ZO#!C_c8sX6.-`d4B*+M4#
+F<W8I]ajDq_T3MIJY$?Y;g4mhn/\H-clM>H;pu/pbO^rP-un''q4On)/>tYWbEO?Y"24PWR-m4ZF*kq;
+<5I4<#"#]_<U$VIcs&@0U/CA_b#R2Iio[VR%!J<,\-9-=JA)*pK^:tM,s1?$oN^/?kmm>j;`:A@ERd.m
+7eA;A$'*gX"3W?#6$Ao&T7QMQk\\h^^&p6Gmm'10qpTb^[g$d@U3A+PP?baHbUm.r<^TE$TE4<f1_?qp
+]p?I*44%1g?'=S?Y9n\g*N6\hC-0es1u/I^TN;dNq%!%?c$mkWkZ([8*GBs=K[e7-[;tke*bGhJ/+5aj
+TiKp"hJ*t@gD07DAF<e;jL!6K>qOgPFM40ue<NsWpXV5HKDh:bfnYo.[u0-#"0?YZ^^s64U=EQg'ogfA
+CFU4g@s[mPQgY$c>Mkrp\1Xl\16E$/9JPBs*A*&_WJ3[:&[1Kj@Mfr!0kSTGBehrt4<N#R`*VQK<n6TT
+00.3c[2'n9e<r<65c-HmQoi)5#)WTp&lB"*CD7AU/\ehHF<B5)U/%r?rJJ&IbJq7<#>(pq;u*gq&j(0Z
+hmT#:C+C7q@\cn_?Q"<Pft$7a<?HO&G2t66+ah<SiG\Hd#i!3=*j4-BA'%_Ohj<o.Z2ED0!Jk#fj[X1%
+:=+*/[;39R>u_e(2^jE9Ue-^BeY_\Z0/oC<HI90snnrIO4!Gb?'5RH^8!bbn`9R$kU(Iuo,ho-X)tA\a
+e3fF'GrE8)3h<bN%:N!P%I\)Sq.tl^ZpsY88,.J^C<f>;07?4:k/5Vfqg;Q+F":ni0G_D+f+!&lEM7uH
+IZq[$DhQM[9T$`T"TslLV!62Q(Qa;P<-=`VEQja"eH=VF9;>)1_=7dqWBIk@0U/s=@:3IpWP"\m$4G0.
+j5u">_T2)o.lM6?)fr&W_-"Vo/h_b@h./HsS`T^j!Z_5'5Wf'+D1!%H9g\/f];a#4nZC$j[Fo/EjjfYD
+j!647^.KUYLES4O=:gD#1PH;J._7MMg37=QD#uH0[0^e/GAS8^Y"_CpO'#u[rLXY@Y5<Y:i<WWk&jD^h
+RuZtf9p;4J!F_Vn.UNbLg,+Jo2B27Wa#m\_(>CrY^.BF.H56S6VL6-*f;9cd5W%V[2V0:k3RY:IVTm!I
+e7u3A]P>Z!KC3Z]Yp$DPZ:Za7%,jOo>5<nD;Fs7$JudT\^0u]MZ>K<HN,_fKfefX$hgW7Z\Q!#L\Sm(f
+m\&fP7l8oJ>&EfK7-g"uNtH8<XrrrEI1%EToKBh=,j=Qko'9$TeCNitB\cQPldn!$9DZ'uXJ2Eao?6/d
+`_`ou7_Ye0/o8GN>^+L6#-9*[re9b^2ANJAqCO:`'o^hKq&9mGm\'=#&7&`uRO+sT)W1:0IZV!RV=J3<
+jLC`?@*G,bMX24Vp.Tm]opm7?br:aFE_@/89\gR*nf?]cXq*;o7Gi6Z9A9;e2<]Ge4)Hr1h_sG+/Om!b
+;,'V=#_[)[l9dN;MBap76k$:8Mii?H6(8lBImp;-Oq9UOSj+eT%L`U1n+mYs(]ItF#=!L-JGZWh,]7[3
+oL^`BmK0-.<6fGog%1t]-"^)ZK-@N/)>]r<c]L@fl;KJ9jMDH:`Y(4m#Sh\j0n+-/^sWe;U0%91Z^>[S
+U25XA8sB!2^ENU'8r,`"\AY^S^*/XFSBG.N?!]Sm,&P`]S9`G9R%YcJ)7.iAb+@FM(9im42llSlITL!t
+FQHIk9^.!:GM<R[Q,*J"5b+tX9O.7=Z*k_AC^-?RToYd-]AY)bf?H6`.PW]<pY^a7+Ok830pdXYH9Wr(
+cEf/)fTXg0g0`N7d.Gu8bBZJ`N]ug49&(_^G=TG+_Tsq=R^bhuZsT$8T7#9R<rCF;R<C-&8+7!Sp#/^#
+TQ>1,1F+pli6hK7emj5A/cGLm=H=](L*FinSB"n&ob*e66.B!9I[$nQJ<pW$<fj;G^`sW@,&s.EQmi'6
+0YitlET],WG'B0PH'sMK?Yo_8S?H8-/*Z8FZE&XMF7u$uro$Vo`+1<mM#aLE5dN5;Nc.0I>AIF^bS9pk
+CKrq>#pQX?!VU-\UBnAXNI.=-20_rGKWA,O\P`uO'Z,4G9f;1iaHi=hh92.1Ju3q^71>0o>?'UC'VnL4
+>O[N3K=*5&3"_Ih:BGKNZ3&l)7,YrDYoQe#_A^u2&E^4q>S,Kt*I2/Z)r_HOHeH6iqBNk@2(`,j5SU4F
+j%tD1fh=^*%?Wit.c1h2&lp7\*;@*a&%b]1XdoM[CFI9iq-ZrJhmDqTik/'.l:N7sW]qRNXLcG2j!G?>
+!jCOFeAF!mYA*%ir[,[hg;7bu9\qW*Pl(H!#^o(uET5dg+_N.c9]m!*l$*RHLh-;pjEZn>5V$2:A_aZK
+b@[Fi4!:R$H0N4b_rL&5JR:(N-^$#j^+Y;;pIcKGR6G*/I_o=5Kh$O-g'CP/HGF[U"!fR^nK%0cebf!^
+6+p(/;E;)7TloGk0k)394DkGj/oQAP73Vk,*jUtc/$?=@bIa[cB)+8=NQj6(Uj>Vo`OK=8<+b`X+$=_9
+*\qp0i/qgZHrCq,9"6Ni+Ppk#Fs]40!h9Ok2O?g%QCZ9r.2Y4S&KhP!P3H5mRY\F54.2cP!QAFnaQ#5L
++'Q4p2AYHL3o*o?kReT&0-1g6694aVY8cCX3>;`\?=FD3(Lh?;ii3ai=-Zn/iH5uHV]`TuHReJ.R`1lZ
+H!+'S@!@S@PC<sO(oTL),nQ]"JBO1@]lZ9U#alH%6./gN,KonINn8`.c7\9u/f;hjE;:2u,-!hJ$>-?_
+\3%->cd>[\6/fNM(o8'HHIm3OV,?1`ei=62.&$*/c4D0+NZ:0;+?7G,&#++L[Udp!l;rY[m?PM-F)'@4
+QkU'=Onlt=-9:`Af]T\AP:?hZ'TgtOjVQ7l@!:KDFZj?p&JTJ^nm?Is66%j(@5Z2^NmA^MQU-jTWG23<
+9\,Z(VZMohP`ik0/^&hj&7NJUJDV3[rDiIa:'&tN'.;Ro'N:Ea(U#KPS3$sS*7P(rS]^V5*.c_,WElR3
+IPl\T,,uo8qW,j7q*ij-(\OiiDULYn$BfRA=BIR*!0N`X4Ai-/[5/%4P+g#%,oKo!:bnpPW4<'@;4*hK
+k65n$o4*L4cj[cb:Hsd.I!(k6Ga;I$WW4C]`=0%*I0Q/]3V*8g$FS=/lk-7nMB>VGo%i$tq'MS&fTCa;
+()s5q:#%oqfnCt2o(;$i4kk#LG1Ch[q*b"(I][feGgJr=!Xs)0SGuNJho8Vr@Xa8)B3cW4%>cT)gSZEA
+n6b)r@dPgK-?WZ52^:Z`+VV[18NHlLQ6RY*BliNl_iR`ZFE3%+VoCjA-ClDVluhRAQn(%iPFQ?O<6da7
+Pth>J:!s=Q*::7X!f40%PthX]F@lhL,f\oO-Ck-oZ8(ShT:7I(!+HJ@dRc2Jlm/,IBC/IB8Ih2D9..gd
+gKZd2^=\mM'+h0j+e>&c&$42.JWroiTQIJL.[<d(=M79e8\X'KdKuIuAl@k<K,I6A!O6DiVq4P;'@Kb-
+RA?#k9KG&.[5I1oZs,/2!33Q&F:u;LWI/a07Hl'k30SFsarZmENELd+3[IVkg)5LjalZ$gP8k-o,b9T[
+LJ'#:cI#lX$)u-62,^Q?Um&,&V%^X+>rmO9C*XPU)t'n03]1O52<j1p8LI#)3W[_Ff9N8[9%$:u]XW'h
+M=C39>43PZ?o:Q>:50%r;AnZr%?UgN*r;^6Le*f\D]+@*r[4H1BbKC0_h4dQQI$S5I*E%T.7Zn[p6TWo
+"-Y3;P'CATW6C0E^1h^uNdGs]99m]>&6fX];-T@WP$@Bq3^^G6oiUP6T&IJa;RmchoTkD&5uO+`%WVr#
+BYFu4PkR)#*%-1Ya%;fpe^stdbNk:L9m\S)MangI,6r%'84E]d4ndn_1,ZpiXL8uB4FJ^7]f191.s#gS
+[6i0`;!PpZ_'_rgZ`g:.HHM!K+!u3B>ec)nODH&i_%.oJ,!OQA_'CSAKYHPVM8`\;\2lR9:_NstH3;jT
+o<*Uqn7!+-MNptDE^k+()(%_3ER.Anp<mZ,[k83OeZk-\'A_Ui;D^)>XWdsJ18=J0:)j^6BK`PCMm&Y%
+rJ\^ICE7cYaa=&,bY)-T_OhM>n5QMrhSd-ZV]K&e`0PLZr@Z9a$KlW*P(Ul^iqC44`s-#E`fu<:no8Z/
+H_/@R`*N_N*kYnglYuFBN34lcE3(Vrfj1Zh0B^;Kh"&o^WJ+_bX5J?j\<tm/VJ:ft7M28DQjdM.]HW.T
+b6XO,8O:c@6IErpf,;!RT4<%LWY@-#2hHcLGgB>2=0$g;9K?N]0,T0^L>cTN.81Z8"<-[1TSBZ-<6hDR
+dCs3oh5oG03Lbm98b6%BS`?;,K\&*[H&D]OMUN,pl8rHWG[V_4B9pn2[VD:<`5D&)]miMY5+ZrR9I;jC
+nlrq2*2FBjQ;l-G;)'B$P)YjHie.bLh>Ktd76!ns3AQ6m84jLKq8M-2#0A@E-,8P5S0Sa>)(mT27P[R!
+N`8uZXU3m/1C594iO:GOb(Rb=2G(g'TA,$^@5dT1IRc6T+@AD5G3RB53a7bP;dN[o&%]+4Z3R[Tfu$3Y
+<D]ZidE\6$[[6UH:@8aUT2&'B4)9EGj5"!QCAj16F/5NRk"$(jl0s7qmg*8jLK@So*?F!^Y]Y!MTo4&8
+#%uW3)%Pf:Gu7IDf-'L\j[5c:XZ;6;V9pBZpM=V_CWroHYKE6e_8[DR7Lq;F@$OKHajmS1ilk%JfCZ"r
+n3r2[bs*@rUELd-,FZq:8]W%3AZPIMh2CgZ<6d!F?*c($FbX5pG=5%%Y;?33L^nRZ2M4<PPMiF!\\Hlb
+qWRcMjjaXf%g2`0#$H`H>AWiCU/SBEJG@P)QGDV0V_.5h.;=1_,?QlVHZ_!/-#gD7%SPaN<hNRs=-^*q
+!X?4^?jO.C1rS0#JQkiMX!M_cXUhZ>e6?>IG.Yj-AOj7Y&j'j$X]Y^LRS$IN5XTD5&ch#_=98]<,nL?Q
+Cq'l-(W=!q$,@5'6doE=J&;o/4<3t`8K1>T!Lq/@$)i>//:kt`5@Fj86?W*(TrshjSM+CX>^8%Oar.)E
+[9oQ4;!AW[m<9[X?sQjh?P"j+mPV8b9phB@PYdYidj8*H/eV=4FEF(Qb5lcE[`?ggG?)<!?E^=rm*:!N
+]&[gL#4OGS59rOl=qX(kB9aa50ts!o&[M^&,$(B'H$.h:;7BA'j*YeRNQmBa0R9`HY<[Faa33!WKm11#
+%.33R?B#nCqP^*4-d,MNFW$g(B35&B+IX;-bM+sWGdsd6"FD";fPLZ&Mrq3RVU9U3]#FF7I&TX6mkd[%
+Z?7VuHbG*J9t9M-(Q%+JhM1/8]b.ZLEh4mlG%A?`?RKGUB3u8?N7gQlZ`-Qk9<QOX9S55i0\c6EKp47F
+M6'<gOqfk6Z7qn.H7-76\#WGMWN#kVV5em9E(Sr5eG5dD$-=[ObW7"6#.U+SXKS.(jdVF(c4'u"#p\*c
+e4)eD)h)[eQ0?QH`]7S:D2`(ca@Han=(3!c^Y&HO*MS<I(.&=W#6GKP`X[Y!eX8@r$koXh9m<!lU^lt0
+bR\T=ptDBig%LZ\Uq.F&K4UL,[F:#fVZulpL(>!T.*#5Rf(pPa0"M3t0iUa5/q$q6IRN(qHud\@RHF*8
+%/M]YG[Qf0oG6i$e8$cXS:8Clp('"l&<ldj&;tK'8m]+J+>UgdcUZ&7-H9>@7$t4P.c1e\M%b<%h;h<C
+mrRYAQ"Rbe&cUJK445d<-:'g%JN)<nA#h%'EIUScB[ad.+m^Y]En/(;c6V;NH/]6@6<i`]5pi/ad@!eR
+CYCtrA%.UBF@6O`RN(5o,&%Cb7,k(Ei*#BVdPlj(a'\8*8mLJ$1V;!-1U(a9_o@u-9/lm7-s66j2</T'
+2,sbFHHXhNK0mju:GMFRodTXrkR=N!#DTbB:6rE<pM^5]o=/;f0DS.ceAcRc-b%s$EO:,,WUW$:*7R55
+s/5ko;#):.a(nc$f%GGa=7^3&<SVP*o6'Dml\k0Hn8BNG2@].VR4=/PCodI8*3B]?rtI16AjC,":jtkb
+=,qNGHDPXgcB?m-^mI,N<5rODG-%DkI:mfr0_(rDhL,4q^I`cn*Sk`_8BgP#\1c2\mY`N0!!-S#11Uar
+r6rY;@3iNN0IJ&"P<<2XDlfr]^U%q%9]g)J]%Ab57tXH]n2bIM]ZP&pQaBiTNd&bJH84?`2<!!\0H[?u
+QJMiU-3-="j&n<8mh=(@51'o\^T@0d1)aEdF#?5Oj2l46mfV4sYG:i#:/eh,K3l\5c]hak51_sU(ELS<
+]D>#gRp7&k:Qq@X\%g7Yo%D;A9&pH7NhC>8*r/S@k:Zf)'R!8.1<Zq7\2PPc>t.]75Pq3!,8Ud7+*C\Z
+d#Wp&#pddhLB`)Vc`hBcT!((M6^F7<P[:G_qUt?HkH)8^-IY9."N1@B)'NC*A:?%/4uW0N)8MtRJJkEF
+d?L8\Q!']*-lGN*aodW7hj(s6rH\#M&:)>@pD4b-)f^@`<^.LaGW_m*_nZNIrApP>FE^%ur'XlJC%&5a
+C`0c*RcRX>,^:]dkR`2_FI9A`qPtoJIcplt_J(]$4\D+EXPobG-<UJAPd6l.7=*Mn7'kZZeH'/kd]H*E
+!eXiP.lFJYq5D1C_pXfM_RZN-Yj?!rii;?XQnB54>765hrpUn1FCKq-ehV>e6M;u/<-s#,?q53-c@/>P
+3Nf$/5o`$#4i"Xr!e.CXjdoO<Mt#_@Q70"k<6keB%aXduj6C=%?D`C]E5R>>T0ZEuY5WK"`7hG[>'C)!
+6Dsp[**cd%`R9*-E@M1-3&C6qQ`_7SD,^8<-rg%Rs3(;gO6bIDA_GkIe*oF;Y[D:QPI?+Xd.53aC9k)^
+UYeZTq:2[halX`opd5(`i=M;=X[[7dGhHF^d&PJ"R1,d):c"+qDXdd@5p.$1EiEdj.\*i:T+qrjJD0AQ
+g2N6E<4ZOiO]H\J5XlQ=ps'U1YqS,ao8Kg+kmM8F/RT6sdbW$&+"E'%blDC(rMJ#Z/4qn,>A6n_-#f#[
+[7K[I)_B=lA5L/mD[bjrqloE]X$sqp84[;$\7OcVhlGrI<:2upqO$K^k"rKXUW[`0,9<j#&1)b$B8qYb
+n&Nu4Y-mT`+9dQqS]T*6oVBD[=WbS<!uoI%+_?74nTEFPqta\[!`?8c74T9mrNp729p."`Oo@.l#3i1<
+JS"&!m3KkG`YE=]0=W-Jq@'%uDX1FP:(S+LH?_@/3eQT'Jgp]"MNCs0O3":R5a^/`#1sAf[e^jd\kct.
+^Pk^^bKL7:Yq0on*+;]e)&gJF1h@*R&,<!l...@cu>-QZ$VL<OjnaAJ9%kA"[P
+gpGj6;#Va=SBaDK2]1X@@8VLir)=jmk%ApL[%d,`oXT39:S*`.Hm//QgAKi*qUG3dL4W9-W-:!'7@f;j
+)q\(XY+S/C:f;Jpm1/L;CmAac91tU?(Q&g7@!?sb-r4RVG&RF(Ti,l+UJ*3\2O[Y/p=pdLe\CrBk7sEf
+QMqk)qqL+A]E._(.r2,13UjIq1CCV.gU$-aXTm:fVgS/=c4!Gh3CbAq6p<'oKb\b7LV%SI@=OVdb'HCc
+FlU(Pg85nB9%(Rd9dOK]q.d3mG=-hNe(;8)1Xi7!V@3_rbuYX$NhP*&[Voe4ht)h+K>ma#aCME9T_.80
+n3FFeUYF&bX/Q58M*f3[`\iNH'<D5&",DiD7RFM['o!)*Hh3(6U<Cd&_X&r-IX^\Y0<9%QlcfR7iUFLZ
+'P:E6+W5>J3/a&qIftEu)eg$_<&cHMr[$N5jhiL8.%;$=%5iqTNF`5k"0)>8KaTT=kS[m]F0o0V.--]M
+`lm>2\m75)VY.$@&]S,_IaQ#-`tpW2NeUd'ZmL#5'f*'DLMgnSO>%E1)?@/H3[IuL+/H2@k*p(MWf_q,
+Z[Z`QD_kTnNW@b&I]eE*bf\bLo2CrP]TB;*,/-7ID24hK';bSF2Lkjrq.9a&FZ17ibPVi)q)`%">]*"S
+d6]aa.9V$@&eut2YSrV^5^^m1GZLg/#pp=mAtdtf'Q"%c@4^I(QY$Zf!_3RojE!+u]O#29H6aG5Ga5ZB
+NpW.J9Q1i4ZA)tHZmA&]j/sGhaTc"/>Sc?F(8d/?)QKeqWQGdN:>0d)B76'Yi?/iQ[D/V>n3oCF8_>Kb
+-a.^YB?$qSBh?8km>/9XT*joj\[!4XXC!F1OZt3B*(*f>R#f<**AQZ?lj`H_e^lD+?6=1m>m)bZ8O@OH
+k`d"47V?$*ZE$:3?WKEOQ;eB<;+"jkJ-BF*H69M:WPU_Jp!%-XF8(hdgY4T&='E$aPm]FIqYDLpDq\0k
+EYJ#a1eVc<85*$];%TQcFhj#lka2(<S[41o53oYB;-\rS5tmWnLA3*@D^*0/BPu/dFifQbO0;36S[cS5
+7en$2Q]*6<01Q(.^*:n\lhJ'8[VNq8V4^IG^)B,S=)7<cl`q4%G'mRV&"_f3Ep[/Qf/6euiUM"a>M"=O
+?&KsRqNp__*FD[HoQ>Oe9"*^!=6'_#NirZ5nJ)Mt5-7#P]3iV1V3j/*^91m7IiV<^n2&tBf-MNqkZ;p;
+5JGi>hT+5Zrn2:=77l(^n^SQU!4o7JZ5l`-<Fn457nF&^J,!/4=2,e(1V*5YiS<1E6+,an<l+PQ%7buW
+,o=,o$`<hpJ[Lb6i)$&JfY4Cn.ZCgFHlkb)r.&5cLa=SB?*Fqt&%PkeIu.>8#FMV1EJ*Cg0s5tnM6SLq
+,+f_%0>@2r?[&jIXhrcC(j4H@q2e.]\f,Yr__+io[9;tY(GPROpGcqG?Os$eFC/80Xg#8,4]R_`D;+Mt
+bn\KPj6COsHYi#s6CG$Z&!QWL>G%$)7s!cG[_=]Qed#GMF%$K!Xgt0[oPAs%s(,E(k13aXjYkoXQ`mf6
+I0Oi\C[9GWS7Cm6_H^R94,g;fL0J^fK516rfOsMsFu%h+1b%=N.lXt.^FHqNf(Y$6[QYdXCT\Lm0WqPH
+%CUN_bLua[WY&I-%M.slYGPC/X'^p/)fJN=^ufp9I(<d!D)[$*-J`qRCu,^)RpTP))fN2P+ELIm#])>/
+cE"_4\XijATYru,f[(bc%L"cAp.QX6*G>MD2jhD#g[,R)n8-3b5'gAG4!Ciem;ibg%3MVq!<kB:+g?6E
+$#E;MFp'^lbL7cAd;$<]@,o^OO@5+&^.9TkAmYGT#VH9=VIllq^kN&Z)KgVU)a[rmkgU0rgrsR9)4uBd
+ChQB:l;+F0-\9NN#]-Di!ZS=<+g=D41`+g>Fla7gpi\e'2S?_fC_YN('m<g`)fr!D&D1ZbmNJep%"[e&
+7),^^q@q0N'%m+n9OQo(Y%s662N_Y1U;\MR'o\n(RC9]$E.41S8ucr*bhfdlc.J?BCN>ol@WUHI[G0$j
+%0!+4Ac#74L\KFI58pu['hXFn95%*r_muQW?bu2co2rWc7miQYk&/7F<[F6J,_Ait1i\+ES3fVn'g_(e
+"\h)!EM_YAoR:k%1_e6c:.qiYQ`U-?D48R4)KO)5-QS7@'L`=.Al=(5;cHq>?E#:A4_'^U@l6oI%LQeZ
+\^0BRAdq,ohQMZI_)dS#A\C4]`1"UW@9KAEoahSHHb3u_O\8aI99P77-!FZ"f7>fN^.C#61ft6]k)A#l
+,,j2>h`Z[VeaF!5`$qWVfcrkX`HSosQ1qf/<0WdIDgouLf4%Q7S1<o__s@9N!07[IDi6]7T\3]nJlfN4
+>HGT-O^o1W;p<V*1NR<07S^'HDnOijh3GaVgY+NIdMkM;`r'<EeR6\$;WRk<g5Y839ho1_)U8h+`U%@^
+%>[&<eXdu6H=,J9BBnTR6$^B[8iHFoE!rfSFsW!KcprO@D:a"qLXE[&$XK"SQ8IBN!LM6e.bC$Oik7Vj
+n+Ai'$gDD.jQkEb.'pp-kf"gZlh.;1f6@rd>SiCG]?K$p="J=7e="OgZn?K5l.\&`Pe@HG]8&Gr@Akuq
+_:4m_STKchB*-Y)WABs!.YTns0?Y2*W@K2lOfL:+#A[W19Q,.b8\^OUheZ[e5Z_SRrE#!`AqZVHcLgW5
+FXH!cL,tOoVIlb_*JQWH1b@`,S#-\XYmmq89:^oo]L&0GQ]Z,M4PoB!KK@SsmS[]sLBZ_2d"/'YiV]\m
+B:&k_atG*)<H1&Z1E_[5MBpVrJ@r0fV=.f4J>-dbW%,Qs0`7(hcaTpApk`F6P#o5Ds,!/p`naUceH,F-
+<=Z`l:[S-/^7NC&Iq#KbF's"#=UC-l)=XIB#F^/OIIZ/RFIum<02^RT'6T=<XiZ#"$t7N+jWRV6%NM%c
+g#\1l4Z?a1M$%%XY5WUg,-&W;DK%$"^kcCS`Op.LlA8,eatfq5(oS;5P[Z%G=J@b/GTrduLng:g]WSO1
+"`b>OX0pRK<&lcH4_rZ4^^-PEGj\T*%m4:/=Z:5=9OYTMKL)XO,s6AfX/3i*(PMg,H/1U;N!674&]\?/
+[2co0XQZdf*eJL#/>:1*6Y*Dnfa,V[b23Dp3_Bu2Q]04<_n>;PhXcQ)%+dVIAm7F31q)C=6bXC/X%*b0
+NIc(/CToc<@blOMCMl""n1I^u,%30RF0ac75I-0nZZ2'Zdq0Cn?I+":VGLtX8-PJ;hhY7VOSimcJ"i:D
+#Y9!S;M"J\UI@s/J\f4-mR-BsW9uq]V7[g'_34ilfdSUM:+r.3N7/0P1lc]-\!j%R_8^;MdP`AKRP[bm
+I4=-82XE#O;E>jV%iJ`qd#`);SnU%ZgG.IbL?<DpFmGNq+#TkI9_n=(kaUSSq`4(9K9?_LK7si,'$pNp
+pWCr"7LA)b&;"GickW04.-J?p=bQPB%`HsTR0r?q+"B%5<5GQTaL69IQCi%E12%S^?J5jYMD.us77ETT
+4/dt:b>(KZ%M]R><!3+9qZf;a`3H8^TN9C<#V0Uo<+PLBj]$ni5_Dfc>PU]VL/B)ZV5KDR&WPP=,/X(Z
+,)PTrAjZ9Or#gFf`'<^0<eKn0I9lB"n's*0Sphr8afJlFSL2+m,lko,*sk2`h_"plBH.=$O@]GhLZ=Ef
+Q3`/IDrpFPnW<fZY.Z+]iUcrg1>AGr4AW`l`('k79F5)^acuDl8_qdV!%&p1U6g`gQN/@tE^p0b*%Q/P
+a1)6P"8UmbYIXJ7R,nrfna6+_S*8c8^:oaZ&jPnD9)SW`S5Ld@,CgI2G*;^^bdWg%/ltOuBd,)&l%L+<
+_gkG2LaW?%b\#1K0VVp0,'RbsL;OW>&akm5+V/OYOh;r01(:?!]s&I9%3ORT.rn#7)U$<u4jjI21+-WU
+/>.uF=aEH0A_o/YB.R)0Y>F0p9:<@:c.RP(N,L.WHNTI%T^%W0EQ26.+(;aV"CuCdVmfiJg9U,VY-;Wk
+?rAPY56[`napbn`$X$n8iTi"oq"YltT_?7U,*!Hk*frlC^)\OnW76U9o,q,[;^i/7pIpu1ZBjWD7b-<i
+D`;FI7$8ItNKcrf/:Q^RN_E+DM/Tu(>$BNO&>(J7jfSQuLW=9"4Qg^RWak4$Wg@gPgofY/f%Z.<PK.O+
+$U-[j1OkV[38!b!n2R,Zj+P`bI\)0Xs1jE13>R\1S."M"Rko23S?a(pO5!Z4g[K<4*"1qLS(@N$c/=o5
+j"tY/`sLWZYurdUn<_CA4MIu-bAH`Z[1YcuPu2K+T9:aoST`nmrFlPcDt:b=!trJ.\kM2'R_L9]hmWJ!
+H/p+HAr[>L1WB:Z$Rl.f#,[6@o#t]8W[oTF\[@51PukT7?'AfdOfF#&/(R%bDr0?>qsG]<?bK*6c@W.<
+./Urn<1sBON3=0+N+C<bN'q)L>"?2-cp$tU$,`beAaX/!psVg(j6QGFS.-h$f\<>3]`C&Lp4bCVD)fP%
+KClqcB+j/?"M2'Y>e4P#19Al"bi1]"Edk-HHbFYDCIr.B0k*4>=#B[^QV_>sX@GU^k\ZM[(kC=F69.RL
+MW(5k/;Nj2#L0L1J)ZPd/35j<'Z8Pkl$2`TYNIdFVDetkj^=NR?jH-QK.n!e*XN!pQFg4_g$QG_*XTfj
+mpTNa>sb4sH^rKukN9tTq3Ocjq"dU;*.Hn*@b;D=di&]6eunedQV:%^=h@^.B$!,aB,*nQC7JnkdQ4gM
+e;Q0j38@==n3^-j%;0YpHctoC'Ot32kA+M+SL<hF;6DqN`/QnJWn-617>6m7c,gBtM-afDN%9[*3,r<V
+^kemD*#+Zr?lp3%n5TGTK:/?[s0=0>]"J!U>SCGeW_()_<K([i1P5ArH3CCA";9l+V6N?7`^3a3WN<-D
+FM/DDErFAs9&CDZeM]0K\S30nVjICB\.Z=aKs')Pk#5he5!.d&^A<HC\k]A3iNl9j55`>B0u2(9QV.b2
+_0<CY@1oq'^TuQ^D`-A62?V[NDaIn5*lB9.TN,6+0GG.PiNmT`jMVQK&jtS(Mc>69AeG1W,p8BgBSe8m
+1%:+\*/q(lo109*.3#tM(RW-Kit`8[iHtT+(,h..NoBRE.MVN3&"P8qSH"Glbj"jdZ(5kCgDL5%)aL;<
+$g3I)%PU"h:@GOKm#4l1[c<lt%*'6@^[?QjYrgVf#,p$m`k`LnIX7DHd*=U93]lSb"8k\&G/gf7ZSP?!
+46%0l`hH$#H/n4LK-E>;VXMCR'o;S^J^6MG[.oZ0;H\h.G=%i]Zhlqc;]I`B#BpVEQg9m%C33UqKa2?Q
+BiWO+&iL>fY+!u,+/f=?rM"G<f@/J[G/X%;rGBl.q=i\1'tWpXELW7H#o>"ti&5_I4C[*C0!d?qgJin`
+41>e_oM!oJ9r5DRl+ZS4\:U=;4JSa2^YjP'4j&b`bG1DT9lXa07Qp1o9G6Gc>;Q7KDBj8e]!-7FUWE_L
+C"9%OE>q'k\IIEZnE\^$IeefgMq^(c^N8,cWp,MbD1o($,'Ik!/"N;GA.H(_e2qoYbf7qFKW`uOG&F'*
+j,NL$eJBp+mFaqFB@fE3S:BJ'MjTepG#@#R+?"l,c6tTcXHsO4Wo)l=p+3i.2K-`EF;!*Wn&=^j;FK(%
+7Aj#qFk+A;'hSG6MFtocn!#DLN<2SAO^t>E:3Tbfd\-dVRZ`m-gO=4KhTUH>_XR3%MG(n_#1e9=iW^DH
+9e7?N*9m?D3k_n)_;>r=1Q;Q:AF#fX,n^'@WIFc\f6\e'Quo4k8L)oNm%>c.f?i,V2Ik.HA1'smqP:Yc
+mid'USH!iP3"cpE#6<fELY3eI.gq02]LoYpJroD8egq`lT+s<<9A;<[:-!(8W"o1]%h)/$o33!NT,>["
+p,%\;q?(%tj_K,Ai&,E&O;u=0S$^K`pj+!2rrXJQm(+:QVT>cm_Q$4GKmU)G&Ws/KnG,5\[%dRFlP]@4
+V6`pVILA9*e6DAFnc@Y/`F%eN7fT&!fpc)PgogX"S0omd\/YCS5;Ar^Bqnk<;+E>_g'B]N%-h97&P$G=
+Co;L0Gd>J=Rl5R]kP[mL>4CWFFtWRLBdEm#gOD<64Ta^"5B($8pk'`h'YXh.(B5gWcnPH-DAt6L!8AQT
+Yg4.f,p/MEj'Fhfh2n_.oMr;*8ftProS,8Acr\=1/F;g2gK0#/.7u>g:>6TP8GEA+Ni<9TH0hmN`B<9X
+.NZ:FAiYEnGA;u=?=kqH-<\rAG?I*K&W;/YWiTd)hZ>$j:1LKISY\38qpI-cq:5!F4E6\*KTCAQAh,%p
+IArAS_J]ga'&LeeHFOU)FD"i-]JQ%3%[\<Us1hKlUVut2r&18.oV42Xq0@IZq9D$m0+@T]LEA3W1pcm`
+?U8K27qn!t3<$=U?>>E,JgL+DT;uk9q6-@mf<_Big?`6J$3(L*=fW)^Bm'$:kZDOiZWZGTQ'C`=hTo'g
+-f)/T%Mh5iG-DCr-U'V:0[HB[@)Ulm4Z[\"M]IaAg3Iu^I,mA60G*=3@)ZaT%N\<;krUkdm9mi:@g=<c
++#nGJ@GAVNRV^lt-ic61*K5OA)ESe`ZRPSrlY0Ze(b*5GrZ9Rkq[U&SM]HX/g;1#3O^GpprS%^L@37,P
+/R'[t.'c7%CBoo3,G8B*_SX!Uie^+o[on:HDM=@de>m_\Xm@#2/LXWd[lg<;&KL,W&M`%JP"T;oX2NRs
+)-`W=QSN:8[n-D+49X3](VbrbD;sH(@3`u4<fSRN(ACYuXhgaSL1GccmIW$#',Dq4[r\FQ1'8JMQIp&\
+ponTQbj!1,lOu28ENS)sduX7/TGXjH)HHO&DE$ZL5c+O>#3MB>(RimlQSW>(8lnDsFm3KeV$.:hO-@rW
+NcaY\G;$\5X)QNudU1;+m'FniO&_=uDEPo&S$)-kIEc4Okh(I*Dqmri;ln3p\s4jKZ\O'S\%DgpJ+E6b
+VII>5I5;pi3bAlq6)qPM&lC<Rn=6KZV+hu;++XBAcid6Ed=]OgCh5k]VbHTDUQ_VE+H9DZ)o&1#``(oW
+p*DNJqcYZH.8dAHK]h)I)XT+$#p5$cjX9_PDp"^SBBKcA8![C@-%=dEG;*b(g]>,Ylajt]G3S^->'N]P
+hgtQK-?C&Qikm,TaI7]V."A\oV+'ZlG1rZs.sacYS51]UXrfj$nm]ll[No5?'7l*<(_49aBJ][>K23=B
+5-\cYG<W:!1%+N;7(9V_'?EG1K+fe]0*\%n^4*04bO@m^'/jaE-Oa@'\J]a<:.QkAja2&MQX6`P-$:Ce
+#tJ.-rIgubd=+D;'IP0DE?[^"k+DFm\:4G[`sHId7-6KQ)*YfJ:A@V44g2Rq9SVS\ACsXJ8kJD_TM7)U
+F$eS38eA\[!p1jUKrgm%DE(Z'XrVLKg5OI=dD+l,bH8_CSh55Rq!Seo#/k=nZKC.0<8&%p?HLo[X^s4*
+coS$d+%?L!'mglHfoa>-Q'plRc2*A^dbPh1WaosL:+s>ij^6qm&N7iF&fn;b0>EZIYiXZ,8Y2hEeT)r,
+N?X'3hKO4SWm23^DGhhmg0@8*[sL"+`7P-M;O1>US6k(4)^E(EDSPuN4#s1WQKN"K))cTn8f1UZ`@($t
+GA(NIgp(#23I4g0*`oc_kff'kde0)P3`b/:^)l#hb)lfY/ZnPIL*O\S1N`.Jb5pdJHC+5dVQs4'b\WFb
+'/pGg">.jJ,XFpQ#s,5T&pTQ8<Qb[74PA1,1X2O`Jp?/eZ6"WEf9$2e><e:DA![<=T8^BrqNs'L24kc&
+F(\mRe6N^J\$mRg3d+)Vj&TCtA-?T8-cUL>r/$8Vc^r3O:1BBZfjI/["D7Qh,sdIf1eI20BsE<-/dXT,
+@GPMVElr\:X3='H,bB4`Udg*+jQcRaZV4AsBM-d2CPPQ7Gg6e)!T0SXlV#gck]P"cm?D8>qF\co\KpCk
+,sfi>30GE-RT7C%9O1m9AAiLOOs"D=\Kj^MH#lRH+AXZZG]M!5[$""4>cmBaJkSU=>nZ5t$<`F.FD9)!
+IBD,pW?f=S[jqli>e7B4^tn&\=s?NEBF@b%?6ADu?2$2eRsWcMJT]R0+c@X22Ee!*FI2M4L>1e.f`lpG
+JZ="!3A+PU/9&TDb-=281.a@WDg<9*9K`(rqQ&8O-k&U1H_t>;%b+_^WRCKZo9\'cc>Z=m#gd'bWAhP%
+,/6KWKaj#XdGDop]O[588/FmAI>L*=\Mf-u7C#+ijE@3mO2Y*;DQH<<($DOGWW'kkoYi&I?J7Os#Hbu^
+2srX9Of[YN)tK&6Ba?GSD>q<o?Sa%7\pVbQaaHXJ-`Ur7W3a6bNT1PCV0Q8#I_2EU(tEHJ3p@i9g[8l5
+),O%f/8TC!??)HnjEeT=r?Z6/`V3VY>+'X!N/6s@JQhEIrk^ng&>pSiI`h1BI,]54Jc55BZu;ctme8LV
+UVRE]UmBAflAggn]_]b900Dr^)t2SGh\:Cl_WliX`s'UO"_dF1(JSR%XbL[f[M%eDMkZ1tO%[Z1E]l$O
+9<Q<XjEb(Odc1B`nm99;'MT<g>Zr&PlZ!f93aG[BpW]D@Q,Rd)e([RQLE78Q1ao@Od^kts)=ZGF<GQnc
+8$9la8n8le>J*mAD`kYtEUf&9NSu#5WbGG.a"=0DpKi/(Ri^2ElKE5%&$8?_>84+PH<eM=`WGBubaK[l
+ST=A4GV=q/ek>iW=5M9NPGas6Co%K2Q)8f':OM@rgLdE-rIC_%W&O+Fm@k]$ffJQX]n1]T`=iCQ&3f`]
+]1brq+UbGO#aEkF(]A$Ml!nWFT/QOSmiV1sq74XldXN)Coh6$8AW(j_AUB0>%&UR)m6Bsj[$#D]%*?BW
+d%ff9\O8j>0iEsE[crVk.h?DG,3gk_pYgb/f7<r@>&^%;h[69`%,UJm6'9$]V_k'Z_obo,<E(f^>h%dM
+;rGi"p?WP^ML/RHnaF9L`r4h3RAlf[8,9BlkduW')3Q9QIR;mq)/0*:PeQS=ON\]Zm<a@lWNKjlCV3^M
+]4rn#N2f'7A,MjK%-a<)%N2tPcK(6Wn0r)nA^ac5&WrhmEIH1&0g9_cBUMRnGd1;un%`-T`l@4ObSEa5
+p5'qq".uR&HLZ.!A[n#q>"BsdJN$YaU/Dq'nUXk=?!FN*74lin^'9"!]pG_4@V+E^f&QT\Hgn#&[ZZ36
+-Y/k:`g'J9Z-VDJL,fV\W+E*mc+_SRV'?15KiW^RTB(/cTclR<hut9tZ*8K/ZE5u2&qdk]q0hcCS#*F$
+VDta.9fIB#)#B-aoj7&bghFlFHG9@$@oPHlAh=\9asl*3FLDB\\C8du2_AR$+H3_I[+Fk6ZW5YW[5r(;
+`O=C_A[7cI]L9%_G+b/WITX!rT[%orr8%tiI3\LolF/pj5o.2GJ)E@Ym1+l[F8oh&7Bb=`$K0VIe)!*)
+4SFrG=$$WnRXm:R9DQ[kF"'O2.kEKI`VS]V2EZ"M38RN`__nWc&B9US>:ZE\P]A9lE1AehC;4CO+A'@0
+]o7?TNaT+rlEd_dU`&JlfS/M(=P3rBkW.$8%+3G/b2JB$5=tuPO#TP.-^>6<UcD)4&#fhji?Q?Qh:LH2
+ZfP@.N&(.a_$$[7@0\0")i()bL,1+Z=\\GA&,^KZnXaUOa;3c7P37OC$EZY7k@r7hVg3S9pGZWY&nkHC
+H,iRS$p0A:@ilIt-T=(cL4/Tjd6":^_Apc3?bEI*M6&re.,MGR<;QM&C1j'ra\icd%sGOd4jRB]UoP60
+dsI`*Q5ef!Z/h20:Q4(6`^P7r[`u9n8b$p]K/6e(2QqH"1>`tU-ci%6\80NQ1:,be8PsqoUVs_^g[/Qs
+$]@,QgQCi[=7=dbjka%!R'U[Q;doF^f.F=QD16c"2%XPG\4)=#(UFs"7%%P.0XF!af>e%OE3k]ghh^kd
+P&.V>37>=DIX6pS(qp*RM!QXSa1-2VZhVsZDDZ<'9:DBsMKl6>XWSBt54[GJ7Vu+=QRVUeC<GOkRS9"l
+NS_Yl>EdqkX7IA-D:1M`jYs!)Xs(Ot$Mc8-jYp_M/g7u(qK3eR9soFUI[_m!kOKSO;p-K%4]q@5j>Xt"
+^BIZ'A>YO^*KH7!f.*Eb/;dcR*Ou#*H(I%eS)KId-N+lhI[a$!'mi2$g"@P?VN6pi<%br1AN\&p\%.GV
+;LY,-giN9CONDEq6[gh-nsa*0>sb%8Uhu=Q-7u].Dcn6u:"o?&r&1Of3:`OO27rcE=l(]1&2brhqP+!s
+oMSGCQ$KQ;?ce\KOP^J%r+>O<o%P/F-76L,U:/6`PFaL!I`%,HOP_D6]t=1XaQ0hGPi$(/\X;sBlm<O<
+r&3fmlLN]r-JceQJA-;!I^AeAhI0:^jgWjNIp''sNN>\\_M9'SV=jV7Dsk-(8I'\L8RCQeB%ZmspDmcl
+4ksaMlg=;S=\OD=+qnOYpSsPf(:>-(6_jAqkXDV)eitC.X0\'q24aSn@ZsgPpM\:*2eH'<(6oW34S\ig
+Oe;Zla"".I^[]2hbC)TWE+DZqV!__Bo%#dOHiXro*50VXJO)_9F,k-`K8GY:]3-hXhPQ-R?KI.F4ZB\2
+nSEI4>PQG2SiktZifNqHIrgHr1G=R5XUTR<:c2;9%B9VCj#L)h=/.."T1+7-9Dl.q<gWRlP/M8u7Y&m[
+lN[oVhm"GU.pqWUs/$%DOna,k%EiR^.:i:gNP_1'^Zbt:]cf$pijWn8M-p&32mB(lnl8M(`@sn[_U=-P
+(k7mSQ$b%CO]cVGl"r?%V5WDAf'8)!XHiA;[X>TAnd7PN%>"Bjqeb?6PoS2TOI;!Fc'"^$Uj);a>.16M
+a^fX])9-TK'JDN4l(-=81hK'`b$o']P$=;=Zcr-,(rZLB0u$Fr)Z;YJB:e\8$TCYl8Wft2E.]maik[_C
+Z@fD_hFkUrloMJr(@C4>@:d/+6j4<d5g=k0#OWB)9V6q%<\qi!c*b$[fq)(p]dVp`q`,^OR/>RQL?#)N
+JtC.]MMTqJe<gi<QXko^b-S5^=#l#-'S/k:-Uis"[$)[cT>OH^Nr5^:==6OLRa$:Z`-ir.0=([PA"f)1
+@nK8<N6I5ULSA>EI\M%TFG;T-O+YVnNh)?\ZBp(!HUld)IT",_,u*?oaH6m:*`.2HXdeH@]e!]4-UgOS
+;KT"(,3NA0=ccuQc:O-oc)4X@C7Q(;IEtL4/7iI2#R:lm[;=-\fVps,6VDRec</JU=]n@=>]WbEQRI0l
+TBWg]k'l3FLbfJ8H'mE-$WlF%S_Z:TOO;kNdB1gsW0\9CSk<!9G#"t-?iE4_S/.F/^.*eN)?K8l:]0eo
+-9%GVA/7!dGPK*/BD`^rQKK9%6U/mb6/$Ejk0>3j<YT4)qV_=s<heV`S0Qn$\MhQS$`QG]Q:ed%ms7D(
+*L]fm%3g+rnQ,4H3_[S0]VRA-gj)P(&ImnTL4ZlO2Vs#kaq;:_%atIrDlNAKFP]o`ZIcWWQ%gN.Mb7DI
+YKl%F>FKXs_-:;egVI)4rL'1b(^f-J,YnUtWJm%O0Jh0=Dc(>MF,rrNTu1)ZJr/@(\1d"sbr'pc>O!nZ
+K^kAN8<Leo$lau[3?u%(AObXr>H7#Je13,A?[4k+[]e\:GdFuHQV:[Yp\]l#IPcB33rNa74(f8%Z0K?&
++3H!VopU&K$akB0&&U[t)Dr:*5MC)4j-E,TXc%Y8DL=a`Y!"-1YkJ\)+ai[Qs%oorHkWm2.UXQ]KY"/b
+e7gH4`:eOH'^5sM?(=!L1iU(pn;5so6SV0R[s6b\pj+:Qao&rDSs@1!U7ZRb3kZc#&(+!<f&9.\:RilI
+Q^JG*k:QYri0D!d2E(*7?8N=@#N7tt04YeGKk"Ad"YN#ZilhP&j\c7"Oj+Vg0REgpjtQN*PCq3(<kP[p
+TO^T'@>.PIp%e4ilHZ*BbJ.lKTUekbjtW4S>Rj302P/Dtj:Re5Kinq)nb5Ut"ZKLL[Z#lu(.13Pj["7u
+&bZHiQ4Qfdr`a&8[\#`RVJPs_A&dp1TD1end/j[0T@jm2cgN<:r4qK@qY^ZeL#.%ZUY9,*`l",i705VO
+f8q2-OP.R!R4B*I+;S#]D'ga\dgF,F;%Z!N2e,hN,oi\0ccqg<52>nh'u%C[\u-):RVuIDHe36'<P--r
+^@pujV[L3e94Pr2aKTW+7>mE%"c<eH0;)X\SmHFjXtJ0TF6-uVNObaRA@1?<NBErk)"f1SW51AD20#;o
+Pp^%\/m=CL"B=KR4'@RDh?I7#o<^lP]l_\HZFc_0E*J?P3sH.uN/Wc)6fD-s&Cb3h1nQ2@Yo5_d.sdUP
+'C3sOnQ#"$q+!K#2fR7\'\-C0bd\.rS'7sSkhW&LBCo6oEF)eHf?9tZk/fh,-*?j$CA5j=!E:ISBQ)K6
+,3Kp+5\VErCZs.^OmF"#lIQ<$@CgfdFq__OUp]8G]8jIDbqt]F`P&XQZF#T?SJB)Kg=Q19Ya.d4mEDgj
+mreM=.iGZtkr8V_(nTGFgR0Ri.@9!-9bV+a<sS"rW3^F1=QpKoQ)[m]-DE+=d&[iN`Xt`W0p[V028kkV
+XS_/S'pTe>oc.UblG>J`(Tj*#Ok$L\>3S-KrcZm]Vjk+#2u+:`f:MjMI++D#Gc,TfiBrT*Ia_uhT6E9E
+a`('$]>H#1W7.bbl,GF>?L^\;H"lg(O(8.,k8fs4mKYqjkK32(5L2Y\nF_csI^qJAEXhl6h:Ygc3UVOb
+c#FgVhEm77l##N%f2-EkiU`q9;2[YXI$ss4'*lQH"hC,_)Etq9(qKT"ZM+/+HoS9;j1(R"Qd/M]s($(R
+BV51XgCD9[Z-Tfc$jXi/e`fY&k/VoFeSB&u?P_a\od"p5j`nrt_QWdd'sXVF`u;BJI,_K0TcYoIX;GPL
+m,sqKm@lY,@kifEN9NB/Y/`YhpT]MaoarUAYHd+5qQDCmU#t_9D31U+l'2K68M,h4WPNYScVB6?+blo%
+e'!\IE?uh>ikEbMVWgmQ[]o:]W4s(![bONN<H=lrp"RF@OOs(#@N;J2>Hni3SVfZ^1!f=YrULP]eb?1.
+LrhC>%Jc_pTAf"H'esbJ<'I9okPAh%N^_oi(cK(iH0'-ic&QbJfS"A6M"gf3$\hLnfB:;;bh"<9\bA..
+lmF>R!+eB'0oi0();JI70u&V+nQs2QfEhq!olJ!U-m(NZ!S-TcXFk\,Z`D^'AaQr)'Di*ZYar"SMP%*i
+T<ZZJMfCl(:KSA_AS3F2II)$l_UnO1HKfui-S-4G3+4g2qnLJ[qT-hq)dlR#Bl/8EAtJm/,uPuA:9QDu
+8R;V$j2fEn-"iR2RJ3qr]^3`$jb"^0j%;l(P*c+r/hc6*oS'oXC`.]fT)6a^d>qX!9596pCcLM;K1i\`
+O:ln-OXb!^A9i`On)>7L]Zb<O7p^B*nhS7&\@`6WY4]mF3G8"?@Q8ZO($>(m7>-?,$nP*ToD02nDG4A#
+BQ&rI!T.mBfs0UL<[e...@8nX>l9Rb[2`aQ^P8N:q@ir1"KF"T2"t+ccK8N
+CYaHm8er/+]^4;4A^4pPnhO]aQ=DFHBC[h<LXqTS3Fgh*A^'>o/h\;'/UQWeP@;VO=,+i?N)EhL?FC+e
+PF&hWMTZ3_>"V:_nFo)ZP,9BU^V='L_-!I"@>,4\/ZN"EM1`[>khHLPCO1D9L!o4U29H2mk[!hO1^[I^
+9o$S$q9Kq4/^!R#'K2%M=Q)VEb?J?33%1l4;qSs4E!fg::#o.'#L="s[P6.^BkWnm(.M`UE:"3`BhrgX
+X)U38f'l+:C#QX8_Jo1WY4RA2:"anEF3XKKYOl6f4/*L&>kHl^j2"9gRR>uo=XQ",8-)Gbbk;Qm(;UoD
+:`NJ=IGr+Mb'5/R#[EX[]+QmG>4rG[Qr03S]UZN&SC('E.P8NbgMQ@AX(-&a75aEZ39\QES+M8]N\'%.
+--LZbX^u+[V0m-=6J#tBhOdh$I0[*7E_\"!qh.3P`/b<C`Rn3\;:lbD?T]=mMebAeIf=q;P0\M!mJF3%
+ELGK>QcX9Y,'(bE7MOVP75*+]oPAs<`M">RHOCQVQl_]BfJ.%SG1?J$DRde)c)uHNP!ofCBu*t,qCSNS
+kVV7D=6\UuHqD[`<(??oqI1JLI._MrO?n]UhKY>PobM-#0ao.CeI3tTd0p_PmCX3W>nF9Hq4)*J)>`>P
+h7^q5/0bhmrMQsE'ZT#S!tt5DL%^u@c$E2F/$@nugD@&p5fd!OqehBHoj3mqAFS>B=>asMS;euir%Y!e
+.HC'#g=k%<eB7]FPHgPpQ`=1hrf0Uq2)<20SLS^Opkj<u(Y'Yobl#)_ik>L^e#BqgS48"d8e37WN-*HN
+W%=>Qo1;`:CURrj\9]*,RlQko4-k_hs)qqtOk2d4`3aA\Q8]$eWpc4=UG$46XSqds:aWJKnOgKEo/mhD
+Qg$@+AQ6\-LpaBF$X2-O$V&t!lL*]3R&Cit<%u4r]U(?^\C4H_%!/HAX?'%Ri%pYQ0QI,d+GV-,^M1Fd
+L)d!OL_!A&rnFIFB)Bp>H`<#3@]UnlW\r$,j,6mi9h<Y]WLmL3'6%M[0##7SpP@O7gje-pQVG1+o@b)!
+ks*p@T8Sf)9U[0XEn;6`Y5UO`Ih(-gc"FX;Vrr1#2kk5n?<Sk`(UbNi##Y0>29+3U^[>pEf:1gXJZJ^Y
+)g*gO[$-K[b7&)CCH9(b\Wd!7q`,^iUGi:'<I@PE6%,6RZ`f=5m7P>s[<D9krcU+eI1>W5WlPZ\>Ke(J
+Prsd.,6/`TT[Z-].[*%rlc&:IDr-MP+E,*#G8Qjf`;$+HhoZS$.0hm0ijZ&Nq"KKKoO!=b]jhomMfT/a
+`45RGpj56=4RHP6-Uih#Xh!P],mUEuYie^BBZ5fpn!nUK(NAP_;'4!7C;$2/4Kh_ua2XB_ri;S-Q>%"3
+mhX1623>OP^BMVjb+@pD=MD_tfh9Gm-O*HgP#d;2%T7tn'qlrMYiiIP0!6'[`r<]T7GN(S>-#)`3pV![
+ojt[M]pEB\=IJopop%(W"$ZW'(pO:_B")dAFNY-9*-d4EjYH8HLtA#@DBJt&XRo5I3Rh8hB[I9rPf;)?
+2!QoWIO[O!)U7KDWZgnCNBkRDr2-/&=-KD_G[Kpi5+To8nG[U7nQ3jZ@jun>N$YM]1)&VW9\L[L0fmAh
+1$<LXr0fV>?@cLZo\\6Y>YCXlr=:kIZ2OY8LGpnu?!r]u'L'8RI.L-]Su:Iqik\`OK:a$Smf>Sqn>24D
+3b-PHI;o[.^O*FZ,qCl*pM4p\4%JG@jM-T<@\q6brHiE=>EeXpnr2Q!Q-?T6"(1u`Y0]/J*BHs>o3CgB
+A).*LT>A$<bUBnLA4&#Yqg,96+`f&liCamk8\p=1BqQ(@p;[LSd\l%N\n"m:H<#n#+st`d'QTI<+Ff,5
+)k!rf?'KB.Wg3=%PLFV"]i)'2%\>ZXWRSW?NNe`XF\8P-m34KP`s$O[1Y66!qbE`G^-!&Y7qp@T?lnV,
+)W*1inQ:4s]K2lkDhCn,THiA-L<a"GP;F*(Oq2/7G&Ch8'>03Cmcda%@q_o@TJJ[KhLTYnW1:EE)r9t`
+03C\DCu$"iFfJ-65B+^&aN'Z8%[ToGB+WI*[i@U)0&Fc"IrI_X;H:[LPsf.q<>EhP.RL2B8cL;;@icoo
+G256(Z:a9j/D9pYC,HlODLi5M4P#TV\(EcDS_8=4cN_`C,&p3ufoa`I]ud(2OfN,ZKeH':(*7cF*tVsf
+q_]Tf-89JK.7sn('@J\KM,?L!5e#i;*HlUndj'O!I0=eu+'</D77?hJ'?AeOYiUCi'mnq7R!nAphHskJ
+*dgo9Re_,Sf$J/T;Ld_/;l`jFZo,7u6Z(AT@<C#M'QRF/e'"c.TG^aCl6IPQJ[J4tmTm@T-#$6i1B`c9
+C;4UJ;cb<F;...@bLQG4CY9>
+MTL6]gsfuA0%4r%HGW0*o*Id1ga1<g2ou2WiD[CR5;^Ekf"NP-]k^lN@(oLiBs#;i2:G"l95Ambl&FY(
+$_)J<+#qi+<>DmKZ'e>&B7Ej(G1O[1Vs2`I)PJ<2qfV<c*9[=GGSra?gR[^N2kqG>#jc:R<:r""Yb1g[
+rSu[OptGIh?#na[UO_K05C8he9s-'0p>O_p("f$l5A7F^g4k24(cJP1=e3S.Vqj;AX$,!Xn")IFhTL)K
+O7IH'8ls6&kW#`PCliXD<]1@h!=8!`>hbD48&sWCI\jP4,K'66gAY(3g9Bi`=m\)\?U!KJinA`d1*e@_
+DWf`6c<DTaCN=:(deL,-9Q9CDBW^K0S>L@E6YCRqNGI:6[T?i)l]FX%g-q;81j0>pjeLV@g\jb9aJ2f)
+rae1Qr-lC].C21gqha(kY$I/m@H.UlGmB[S%>R&]=+'"#^4hQHXQpl8:ZLcJ^lll@g8^_,d@-]>SVOT[
+(h'dID`([)&N#Y>-L3`C$_qlJ@hN6B&#^/q"*Mr2Q!MsK*i[?lrKJ6G1F20PnS"mRNO@<V444^NSFY?E
+r0hVO#N&UoDBFWP^&u;Z&_s\I5!Sq_pY<\-<`ZlcYa&IZWWD8/UTi&#lY4Th-M:E7/$(13#i:?k^R3Gm
+CAQpjUf4UuY2i,\X:pG:LM>NdF85VBl6+lB3r?<C%**ZFR?ZnK?XmJF`;103lVU`2id6*>Au@tF#N>9u
+DHc<aG2<G9Qh*,fmuCqrLnT/YP]a0b_T[3N9/Cai*a+pIal0N^ZNq>5V&d)tmF]G_pF>b^G$3P(A8.e!
+ZF!am6^FTdZa_R20+)D287NfG)IG.7SU-'^GT]ZV\@F0XpmTAuN>?:81s8=DHA@tMkU[X0rMm\fVZ8GA
+BB@giO=Yc>SR-"E,^2=RN%VL4V(V`;0Is-0@u2X]Ror9mc'6d`8G5+/qpe?3DcD.`Z>E5%;h\LHMhsq=
+ok%r\lC<Dd.rCbEF_Jdrb+JGmiZThYMIU3+[kBX:Ub:tC%f(qnB'!3I[9Y[JHt`oQRu]q`#fEq<.jGgZ
+@$HLa(WLbmN'UXE/"&eoJSa5a/<Hf\5s$G?)4m!*1R<;anHs]8Pq!IG4IAq83N$D-qPl$46=5\M933cf
+/)l4peI^('qD,*(h?jjeh<a5AJYh_M2EjT-CU:E%$ZgB)J;mSe%@gY#Z`Z,8YKf`]2-.rHOB;b8V+oP6
+1^$S5/$)@hR8d`q;@hlib/eEeRU'V=eLU&JA$4.e.OM7M%%2$@CIU2&?!B2#$sb/U>=Vc:9T6l3Q)pdj
+?!$:3Fd7tm2or([kpML6A\\8`&`8KTTDdt'*M;55^A0-?cdV>IZ0Nk[9396FZ5dmsP7H!:3p,4&GH\AQ
+crC,fc*;^Z0BigGp/OQt[r.WuNW)("T"VGcZCLEH%iTlf54RT1b$O=[$@;V0*AC^ZASGeJ^iarlLQ,)P
+<J1lHeP"!,l5_JOPbI#6L1:@4[T3"?_5@\\T2NWYk>SD>FSJh]^>m"UPXEn[&[H"T3ZkDcke54u%-1>F
+DS`4Z?[Sm&lSE@kV+Y;ARkN,7_=hS$*0Xe-0Q*WAmQMF\MVZ11YBkn?Y:M5rU=62[^5h"2lW?(&@TE`e
+Hu\%+Nm/Ab/@YH7NG;R<n\-?D.'IK[-C(NRR8ndb`dQMYP0Fg',+A`6`&bR>c0"?5D8$8PbVRi3L#m4S
+RkNXG:=-'bl.-gFiU"b-9tcIrL2#=>\*6hcE^5rqf587sIET[nlWBHWIfFMj0$pj'CGnW'eD!^XU+>]q
+Qj4*j0)o+omELAA[18)mHU`)lAUGB>`Jci6<VlW+K,OMp']h+ehV4IEHkhY`j!5F;:*)k"0EaKCq;5ST
+G^^#a\/`b1&_`83<K:R\]K$kC$e1#jZj;KKI.0s#&i/ki+OicuqkDZAODGZXqaYR:4k2hKToHs[@8d`'
+LT"Ynn_=Xkj!ZF8hZ;Ea^A5-)g^jiSW3<N(dh6[cXYUcPpNCil,'R$ZJMq_8I<!:u1B'tJCLp+'p;MdY
+`K(uP^!o,R%VG;c?AZ2qUsisuo<gK4Tg(/eo43OK%m1`C+l#&kZRXEEUgkK`7bh<k_7BVJn$@"a[SZ(6
+CA-Nd_k-/%KIgA/gj,(7ii-]SqP%7>f@)falZFZabMI_op*8OC:+'f`Se2Pu,;?Z454Qr\b\kt!*C'Hb
+n*:IUf_kgMrQB6D?15S=aQo7o7scrMf2lSX'T3EIoeSu,lhC#LeVb;&<adRgbM+n)(Q53.o.5(`U6Kq:
+_P0guoMYPjRK-]^`V9Pr#uf]s`S?]&;asZj<l0GY?u\#Ie3t%*2aQVt$Ki"$)h:`iqO-B^os2Z*-d1lI
+*O\fG]KL&:)>[6)=uj9U2@7kCm6mL\-d2BqdGo89jaE8hc(utJL,LUhdar.">4^cWPRUs/C6kNb`L(=L
+O:HY<)fP>*=f`5S]r[L@Y=cQWY4@F4_NQn7CTFVm@a8f-^B6h^S+s'T3gf'9Yim0@80^.hknX0h/+;Zb
+ae3"m8ejN?D6^Ck%ik3DG*`g56^AFa&=`JS&,k.fP$Pc7"o[*GQ9Y#ZE6sZj84KL!45!\t69H[*MghaE
+<1U^Y3(uV&m/;Qc#i@^XZ[Ro$#3k?j'r@OVk9Y<W'CPb3h9.<P%8uoRUnb-I*N_B>m][+-_CI*I%=SE"
+EDo1`]EV.P_>!ZqOlJF($V<j\Y$UD60s8a&Q(/=5C;B>7%cFg*UpMY-FR,[LH()`74&WH?h)k#HatfgB
+W;W`inKud=b:7>ub854"$>oAp2S9Si-YinZ;.9\1Akg_aCn=(tP?6$UmD&$ZWrP$ZBjC3i]p(QYju[N%
+(3a;HET(iJWb?9Na<<F+<FkL',4>-`)Z-,O$=YPlr#Y_377o;7l>ort@&\H)]?)^@`G0-6I/T]aKIB=4
+nP]=1?&9:!c&hA:4JEn3\$UaQ,4J(g9YTu'K$8fX]u/E[XrKp?rP"6BMPkJYpdQRVjs]N(R&qXiJ?HhW
+_A?PQ`Am'lU8MIb=C6uP`YcO=Ht1+jlSN0kkceM6`k<ju05C05Y.#%84HJ-[[e"lWHlk*G?9Q!GBT=TU
+%<Q3;(f0OVe#`5TdJ^ddAhg9O*+q7pY!iNn^eTY&(YG5f"0IZR@@<MSRbu=/kL!Ln[^;a`A;OBj*#a=/
+,8SdDYQs*coq9:ZXSQd@LR-?m;L`)L]f45*)<<9Xg0CqU86Y5WG*/VpK4gcUlk5l+\b/6,$eb.Ip#YgD
+-V=jc'uqG\9TQmR01h$5:s$8g\)Zd)-;R&PfR>Ks<;lt`1H1:W^G0JeNXId[))<e^n<hn/U%D$:TeES_
+FnJ'2XZE-l<m\_J7s3Jn2eLlEF;`A%L]LO],4<r3f:Sj]+[psaI!V2<(g$8;H1Jq&X%/+7P&&;;m%`66
+X"]W(ob]l&Z!XfJ@in?TZn(Ot-c5$R`VP#BH[b>hQgPm+2",Y``(.COI_'1:+A8J"Y(<<KB)[s1VmF,P
+fe]3=5orO.`$0XWA@A%PH5Fm[Pr_?(`AQA(1LkQ<O-.YSR:C/uD\h"U$b_o:a_nEMl0ZK5=FEl2qnNT9
+%50?9.a#,<r?GN^EWkYf4R6>t&!@rkPuPQn&O09_Q&7>G[WcCX14IW\"P3\.j.]C^RQRNT7O=N$A)hO,
+ZJdV&X<mUt(MX&t$UZhU[#/_Thao];3!3a%4`(bVVQ*nZ4NIRKlPb"IUE.;0K6U2:#BVJ%>c5rO@7W;[
+I.bnhb]?)Koj2"2G\Z@SlY1eIF[fatO#&?1obNK+4C"m[4&,TcND"3+pCLWl8s&aS>#'7DA5W-'/<6IV
+/(Ho3AbZVMWd,jIQF*C4#pcNcZ^VqKFsXVs<tmR5>b>r"]uA<q[c\)m$N0;!_g^OMkPt/*s8LXMqq(l=
+^]+6$s8LpOf73\ts.X"/qXsjZs8BDk\,RQMjfeT[G&.#fb=uo,76T/kq_)a[gKL>F-6D2rs"t14k<H4Y
+J62`brq_-4(UdsbQf69](]IqAo>9bDs7R6SWsAUTs/?M^XD.\n^#D$HUYQBo]n((&4@A=i:OFeipTOVg
+YCbBTT`!D+IHLBN]g&qiYLf!Uno%G.I/c(Q\/TmD6bJFbnVPQq==sOd"4erSUAm[u7X@Ht9sQ_Up'.a'
+.]r)q^mb/GFT9,T`a5N9lO>Oo2Vb4JE*?QWe8Tb%=7@/:AV)>]QitVA`^)u4%6L\3J.ES"6qC-E.+ofg
+PcE*Gr^QFP2l>U0)tlq%4Yd:T<VUWN83C>NlK;_E?5[P&P*UU8HXUH3RHLQ!e(%msh.qkNkGOof!)_r6
+Z;+^[[`2rF-M.KOa$.8R/Z7N=L*<SHn3VPAH\:#H_POXr*2mPX%g96+p2`,kecXj\SYMAW(;\:0VTpak
+CtN$7dl#dG8Yt?F5Ziqn5'8rWHS?G@B`ZjZj`$G)n1+^\)R+sB,87kSm0P5<2f`#\+X=F<&+E^KeDn*[
++m+i"Qqr2_a3C\'&2H85o(M=-k=Z4rAe"qJOoTAHg_3'epF>lX2ItC4iRNXWMss[#]f(mfm<TXRXO48?
+?\h<<$mmf]G^'/"R=Z"-QLiYQ\89G"j4MHbEO2OMf;Q<sdl4Ue+M^KGbs6K*fn-K]d.oCuN5,13[W5-\
+Zf:t]02CNm%NDM!ppteTeEaPdoi%^3F^+18Qq/VG'Kj>>C2FGq(iY7mU>bi\.*T'7!R^\MX>f'X&_(@C
+IJ&d`SuZ4Ziu<(e=hCUGigg_&(noB&K<6S\L/&gdXUpYrcG9)L(JWq7)OP-XT>G0qH`U[>fG^oNCp/4E
+r8B9\2J_2o$!QV<q9bj.GSaMXI#EBY+n`0S"uA#Tc[[(Sd'Y^Te;pAufJ5`^L/(f&/>Il+rWAG:+<$?(
+7(:(aQmBWAj6eh'X<tl`CRLr>!T))q"C0bP\KQFIP1Z\IC;i"ZkduF<\:nU-NX!!&EI@!8.!iCGs/m):
+5lg+r*UntSp$0kPF[etrf\3\9Vl8!NkQr.7a:#)<<@\]Xh-hLIe^(@kJ=bED7JW6ppLWC!m:ER]+LG7$
+UDRtiI.qZSL2-F_^P\0mT,H2TOKg]^OOoC"Pt3F)h-c\fZYEgIMS"iXBf@VFor=\HF:>\IYfM2%/Z1,l
+eNZUnS<f4'O$q.rII)QO,@"q(>&NiVEc3X8NiVK>jY07!S!Ls9D&leT#LPo>l1]5IE]?USX.L82JsO:h
+XPL721+Q_YnsMo1N0ZO6>!?ZG\k)Q4@bc/p.u0FOl%0:W[E>.J[![\U8&&RcVr^+)(G3[H*7Ct"jj"9<
+mL;XF#BO,RXes:Y:!8fap@Jk&<cRfuEEZWV]"(A32&t>JJk^HA&K?oj(IN[>dTe+JL85.IFZGU3m3P9N
+U`/6Y1fmPh8XbQ/PXEl@(m:aTR&%80gE2U@._`B/448:t,Y]*onrYbC)gb5HFBl=%9q6b"/SWAS)&,?E
+c&ac%YV!>[$%#*$P,8bF8X^,Vde!a-1`,b.KVZ/a86ncT)#\b+9c@Z*V"qg]Db5#=fP?Z4[)HX?k$5B'
+q%\O%9:DnCf<b-[%>P$=R^<"?!#>LAL*6SOb\W,D3AXR[e]"V#[Cc=*ab)sb)\$N!Iboj"(N-4[[,g.Y
+g!9PiopLK4"iU)_cT:?hDG?Y1rJHZX(.7!h\%o9BLY-&FB1R48kBFfcmW-5]DhsD;GPTX*M(Q?MW,M.!
+>bUneX39,Od'[LQG2#q`rqp5^6/S$qpE5F5bX7/FNMP_S)]OVG_p5+Zlcf]*ZCU=[M%Y`O0u2jdRbMZ-
+(`dF/1\4qW0nY7@H%WB,]d4:1)r"SPD.d@'>\h0qn8:5iRf_B#CZ4GFCW?72Ar2KJc?-<G$rnpr`].ur
+fN:CO@r*P0f>?9^KA6oQ"WPAV\P.XkMc;MFcGo??:_lG`m=ij*@Nl=%ird?@`c+M@(E88:0qoi_R'S6S
+OGO9QA%:J==22!W^\[U_]tq3Y#2df>96-gWKuf;Z-UVS"29=-89;a2#R?8b;"W9WohlhJjB7^O$V8tc0
+-lSTaTu!N@O<NJ1"IT;O*'+tSlh#>m9>=nG-pGYmO>gE+n3;E1c7#O(F1$;aL6=!As8K(P_<kl&@<S$9
+The6758rMoB%?fHK0:"=de],5n@XSr9&Zee79es;cN[LHkcNW>.JN9>-2mblE;m_SKg/*O`%fj$fCSU.
+K=:O'.iqc1A6L$rdc/N=<=]NMhX[O*"Q6)Qn.E2(%1?GaUVX\Wp[@KF%?iSk28DM,n:`Q+aC:$Y4G31f
+r*68Sd/_1<]Sf>T2jeds0H9*:#_$c8G.[V8eA/[\6p(Yeg'iG52dCEWUVU`R=@5[(-A*t=3m2n/r8B8%
+#!21a_ufMAr+OG']Z\NJ@lUYSGF=V1XJ$)87cT,`F*,db")sBu7`-Ge'tpSPcrf1`\(cQNfkQf/^u6*%
+hq"iXWZMhTJ=MP;ZpFII;tBn3C1bfORER/WG=HS1HG`@i\uUB4)7RN6K4fTtE5(ZkE-PNIRZ..[b<Eoa
+^s2qjQ=4E/#;5%C=2RK/j["qVXH^km_Lr*J$&jPVj7k?uN_XtJ4o8o)*Kag'bq)kqpD<'S&rSdQip,lu
+?I<0HGW4pK]g3MVePLB[Sf2FD$aDFKic`a[d@lOp])%UtSQLffTJD;fkLKWs0At40/JQ*$,m"Q&oe?<T
+b(eWN^YN9"!YtbrHA]CMaF,d"<EZ(apBs_C;E;X$5</7m$Rqb@376*I^M).u(*Y1irkWHHAm\*;Ml5]l
+rO,;SRg=DJdI)AMX2X-tEQQXsPstT>^s1mef=aXL-O-YgA;%t]W9A;!Em,\ko9pV6QmCt0>#\JeIe+Ou
+VG^`qBNWK9rMK(giT>LK/Z&n?r>L$a4Qb(nH?X1Q^:Q<H[4YQ,0@8bMd/BHb4\Xg^g^<hqZ$Z.V^H+(a
+F4/)of3doTW]h34R=JF-d<W.9B;h0up1h[m8h-5=0tAi3P4\15iF$sL**Y[[:nkc9h/qRhI.r#]L2+)r
+^H0'Vb=JOj<EGIqe[/o'm)0kn,P6Aq=Edq+Y>qEQ`[&4k6=\!AF32ceKXMaO`4.0HFA5ff6:BZN,kl."
+&mYXki>FdoGSXK3m>@:qi'Q__(U*t'?Mi21R4[=`,%3GDVUn.=c3VtH6<J7#N`Bk=hb9dZ:Z"'1PKCfH
+%ZW,iD@N.kppdp*i"UBR9N-\4YrrDam,lLNn.F^W)Y]VV_ooc>#>,cOg`Eu4e8X7P)"6VsMs$A6[S'Ak
+[l.@?-6CH.e?AHuY%B##K4j>JTo7X.i?V1ep3Lq3N_1g/@Z!#_WFRr[^N[R--$L$Q2c128hL=T'%_:tu
+s/hWFr[Fj`U85G102Zac(H!X6b#:/caTG8%oS/GIi<Hpoe.A@M2jc!"=FPrP\VJaKLm!,[)cDpU3\.b>
+\;/D'M3=>sKMFb,RmWG4_$j2h)ibK^PKBuAqg4Klh&6:"<[i1`M6Vbb&e`R<D2"^_=-@ESV,R,>c`G+3
+X3&(<la=E3R"%'5P42+n2Rj<UG6GI3a4Qc'_mr0IP918(=MNp0",b"Q2oV[\\Rd-u>ONEL5-O(/L07j]
+d++:=i9Eq:#,jWt(e''Q%BgT<5aW?q)qVI0VN(FK'kDIo!&M`AI[:Ul)L`1E*JT%2GNc%'Yt4gV%Lg_X
+VC&jb1A:j!hPe60#A*Rtr%hL0`*fL>7mFJ;%?5^Lidu,f?0>Yc_TVX.6i3fI>Q29OQYb9HCITo@'(CgO
+C>5o=;(!9JWtnLKB'T+^J]()dQ^dRiNEpZq:4N#g!E##4TkumURMQDEPOpiS%SJS/qj0[9!;F"E(-cJ<
+rQ>_93&L]i*Z7=0?V\$ZJ%imf(0To+<F.*m3[<O3T8"]1;j(2b.S4QpEM0J,q:4pH!3.rRXd?jjnAcDV
+)[r4q"^4O3li#P"6233*'\:n/Ie>@60jhr(AZh;:F5&-=I\2@'`I9i'>$nUNs"i8f2ZQl!#"I1t2kd(n
+fGcm8jf3d$q[eWKDQ(5:=$pk/h0)2_nLJ_oI3^`C]._PA<1;q&b<[*BDYljPLAtNW[`ot&Y$W9'_=>Y#
+#Ma,ueo8]=2SY@"L7;-:7BS8!#1j@'?%+UMF[=>JX6%!P)QlR@q,r)'KM6oNd6]2D3:U:D7ukmHk/oa=
+7/qGl'P%9\^+YnIb5p@/Jr]S-+VS*W1-m`"iQ`V/I5JH-&.Od/pjPA:K!&Q(7jdH".H3*KVm[^m5%(CW
+9YfU8=9!7$*+XX<9U?'[iL4JGr4$9h;RM$l8!YCO_:40B/D@m;ksU0)FQ*A$FE"j@Ufos"goRh=?h)u;
+I)cU5]obpb(LnLakl;J\pk$s7.$`*.^srO*BTWM1Dnp?rUr*VsV2Em78d?GJ%4'5q`+a4o"'qaE2*du?
+BX:W?8@F>]\k33gb>.maLM@e0QQoGt[9_LEEKi)J)Q@fYD53K*-:d'jdYS00l#:`<*h+'a;[SWtiqY5k
+M>+XW.*B9iC8c4U\k;.#a=N9I,m?i9_hG=D*L.,L:?O@2FSL#?4H^5Amb0OsF9%;:9;U+\OO,/9%Uc]>
+.2PlIF3X60(B%C:QG,&LMi5,<LG.\8:31L"=78j/hoI/#AaCpYR>FRO%?V%(2JcXPFZ+S;%:gY1\.H>k
+IYFlj0P#$=#a)QEb..+C::<fE2MA/;X*""XCO<t0Uq]pUhJbWd\mk0(+_5G.0NhWUTRn<9jsh&i(q$pF
+bPPR%B)uL&_AidF%7-\''?N+7)]fKUJF]9ic/e@%N/Lh+fL4X99"+HHE4?b_JG8#3E(rK"S"@.!neM[E
+?MuW%3u;\+CGd`!EYRPQZ'M4c2_K9HEA;Bf+_f&Z+!1s.`EMJ#aMh>']*l/O1Fk_0Z,Sc$i*n*?EK7@"
+H6Z,'`Tib8fDEfBAR*Fa1Urf2>[.\+!),3"Re];(M.aVt""AGsrS$>1I)OC_,mS[EpJnH]%GJ13Tr'&K
+K6+"+`/0a_X/c7;h6IJ"Or""DfPm9pVbIH(G.;lT3\(fI2:of#H@bh.()Gf@omlUe/`l8iY*__2$4MSb
+l!!`NjVlN<a4qsA'DeGHi,Ca,==fcdZE4SjE2TCfpjjG[Gqn'.Uso/3%9_l]ko9TE$*Sa/QV.jXm!gl4
+dVSP$0Bsu]TSD@%!=MA\D*jl,*nM-'PO08uF'VQ*]))(ZH.jn&],CkBL?AB.9+D.$7[Z@"%Z9ADe3V],
+lht.>J45S!:WTeZl@UQ6eJ>e)S?Nrl6HYj>i*_5DI\(+N`0h%<l2,_bkk9Fo8b;R09b#JJiFUKc\cJtc
+n[7[F*rW@X?lXub$),0R%W1Q::+;eEpNH8B+F9d8JD1YVeMfJ%o11'2reoAq]69S9gC\9WU-%;;@XQSM
+)(3Y]Yp10CSW/.cNIZkml<g^ELNt3&^%26jre5.Ee-U7P>]7CAT@ki6b_Tbm/Jk51\s<_O=4a-@k2q#h
+P;:PkFW+E$g8L4QTMF?Oe-QoXEN%>Gk*P'\PObDBUE3IDq!N"Ve7hHmMLJe*7\/K&3H+1>jO`MCaW)b#
+3]RW61km+Oh,2Z!#u3jQ)V:q:W1h;P<Z?%K0^:L]nF-<CSB7_YLspTF-R@*>2g$$ri],H0)iVKbPLcEk
+K>H@[FW,;AMZ2lJ*aS_j>^.U1:AjV=I7\-_^GYJiA9D*"nt))Zo_M#T32sgnrUq;sZeoX)hpHCK1jnlO
+%=bn2;)NScBGULu58l.S!t9+W@1,hrQdQR3Q$01(@`_kK6a;<!C*Nd#hH]&DZChDD$YhN>Jf7_6K'L(]
+LE908/NJs3]3Q\*jg.D:9e3u5kVjkO=]"?fWtcieC,EF('b.UP?pWoAN'+tj'[F0FTY+93rSc**$S!04
+`EZt?775\I_L`+sbr0LcX7`n%?4F-3`mqAfo'YVkZ(U[Pg7X(Y\RBZ6Kp;$i!c"[b^A<`j:K^LS1?JQ\
+o&:*r601o\CJXN^*S7<:YGs8Is/bO`j_O*[CpY1ZZ&;YdQf'=5e6BDs9_WD2Hj)Yg>/$GIf1*pqd%1b"
+G8R^B)iU)d(=#VO\fO=,dIPh1\2%7%(a^?3HHfr=e`b9<;mLk_#HuVI[9PA&[+l+Z7a%-tJrQ'X$sJ)u
+N-(gu_u=?5j3[?C5C06XCMG&FQETDM.J5>q`QEtl-M!nm.].14ntdap6d*0ZW:?=>e;RG'=N2N?RVWd6
+f\_,?kj$d[p]dtm]h#.\*"'9R^&HDuP>o:F8?+TO"nfM*BXgUu?>e0aG?N5VrR'AbXm_!(pX2S(S9sLo
+HX&r%TmJj+degO[rRH1gY--2Kl0`T&25S>]0qS^=Z[@OBg10rq)7A"qhrHh4hr(MKLX<j;-MQ?WH<1'M
+V^":aJL+Paa*juMj5usP(2;U*!L[6oc,0pP3SrZCD%b@Gi/TPY2pEfB4dIlbP:83H5<RgV<8:XFUZ&j^
+1r.ZCkXm.BW#e$nSA@oQU&H<7;/(#[1&),F_c`s\a2J-:1JN9f6S,5,FM04.hJh%Jc4\07Q/qFViu6'6
+2L_d5>SUQ(r@LP_dVD42X[Q)EMRiWK$+XgObo-nBn-'JbK@00.5`g=NG?6k<pm?[G))iL\R24S2M34j>
+R_Tn40"4j_5;0KhMI18X3Z*>g)-<(lK1;10mS2M.!ucn>+Zf8YE1*eTJ+F=9\#b$B=21k'd$K4>@,Z##
+54aS<EJYTHce?_>$0qCmE++6^8pE)"fJW8`(%=4^r8).P2oOs$QpKh(_n?CMpZ&i0qLEm9#>YTKf<gcg
+42!h]%4a`XqK!YN=H=uEl;g#qTITmMSdoFD#bE*aH$V<'Vt90p4<8W)Z6c*?!4l$0[`c<khjr$%#p
+*[du,:Gqb8@KuY7*K#:e7qjTddWP6t:ClYOI?^t4)TaF2@s9laE>^kZYM7@u$ZC50f=j4#AR>?&SB]Nd
+R)m1o3?7/?ksLk]%Sr,iEFfX$d12.GUTl51;SoVrrRicI]))(Z]tq>tgikRpP(oX]qM0emj3%'_,ACDj
+3#eW$2+aVW1p4P&&>P!GY-'CkXc/=llAULG[+9:[jP#p7_c\b&]9A9O]0pc$UNO)!VX`%p>Qu;mXi(,)
+a[Zju53`TnV.t2mq9]ailSO]a?8`)?:C[_MI'coje'qa\,F!T*7jn)12k9&D5>-G^S/7%eo$NnYYqqr!
+dNKk1W(j2aQQ7W4PsEq+A+t_9Jls^^6buU(H6*FEb&*diYTV`aRK3ls7H%3k3[gB]kC\@dUS1/nl>gYS
+.@A#G@,>9*X=g,c;D9@b))h`"gMPlE@-p!,0>;cOpMtX"eg8nTijK(iYZ>#fA/#H;^#u(sXiB/T;]Q&G
+6c4gi<CI2,)N<dAJg"jO7A6<^)i()7EG"dOqMVDt8\ocu0+*Hm39kD+D*9`<pLu<"KE4(?mpSdt%L$Xi
+`A[GA/NM:_IQrj2d/#?9IRh:!=DbQGpt]m;=:=Rkd\%ot;Q!?'AN1At[>.QXp0$0%0V5'@FUK$)gr7J5
+c)2NsYRAST((IO$<VZD$%;l3)#$Jb:I`IKOY\FSX!CMLEAQZb;I9.6si>n?Q:)QK\/N80b\aQc;_/!
+U>_gH0H(oKjI6V?.$YlXliuUgo&%tHJ?ADa:5Z87%tp_r-fkUL2gA@"H#^[9iqQ>T@fE([/.&rLB7lg:
+n]J4k]"L*Bc6_:ldC\@`XN>3A)Vj0h%C.np?84mYiT5dl`@'17lL-W+O@ae$]4>i?L0.#b?BMo=nFD,,
+Qo=B@@H+!XG)j:(BncCK.+W?/RshgOa_5s,m_u7+)<P_cD4&UCjkGUr5;d!D&%AIS[kj]SG$YXImDROe
+HtqG]8sC"'STpPPC'*9f]XsT/i4FhA/M5ls^V(_%cekY:I64V:piZ^F^7-+3'i<5KoBK[XqU3gX3iCNu
+bo>HIP8BT"%;QqVZg2/$bFe-_XeFqkmiU[X/`4i.Z9'8R[hB3oFKJ:9_sQ[TL@X_j#5@MD#!9JWm)Mco
+DN5;m,P(4i6`mP@pZb1Y@+^Usa`lFa?#ZWY-a,J\$'aS&S`s=6,N"8X]l%.XJ%1\`)8DNKYP`:\@/>%9
+KDTh4]!]95gW:<mcCUOJ4)\Xq4-.Il'+G`?OR;4C\u)!@TR8i)#)X21HK<i&[B0InDs-V/>5<>^m2`r[
+]P8oL;R-2`llSgQ=o!5i%#2bL6:$UNO7'SDNGo7u.VLrM!m[:T%q>o8j+k0Q)3&hW1u91'P`GT`1@g/e
+NpW"%%70#_&$.^LpP*b2nDhR$iHf<a=lQ2"BY68@N?A+Z/&_s5^1mK^*oH/Zj7j=JnaaNHcdtg;5W56^
+B`&^VmHJ-71m@6k2nl'GqWRlY[X,j9oDKlbo1"A5FlP)=)NLD5b]Z'q5'NDJrPk5`!K*8KiDHm%'/l_5
++"8OQG`8e7_?.;3-lNd5(0<"9/+2h&>C=""N)Ae`esk[Yh>?S"2.f)01$B.5WidCOl*@qILr\Z,br8'G
+@0&OR.N0!7(0<"5CoAP6Q4:B]5@$!PI()`mH]S&j9uZ3Fqp!Ht!_[LMC>(bjKauH+N>#?^q7t1Idg,1m
+7ur8pro.fPL^=H6B$M;/'?7*EokpsWfB;MT2";RqB2PknZ(g]AF)G+5jZ/nO<^'-(<9#I;U>pO><F60e
+,:;g5J/TK+itmVXc1udmrbfGIXN):,c4/VA)h6Dmg\trDF+ZF(\RALa-bsd*ng7KFSB_QZ/aMR(PWLi7
+hnqcrcaa(oOfj-Z;=ej]%q_=N]]#S.CYVPXn'fWhRBauFksrY%bCBM+NUucnAJB1\G5O9/19AaRW\XGK
+BL(:ra_3Au.a&nPc6Z0cY+H0s<2M'WN3^(P6W&'SV:[)X6i*PYDP^>BXOm>.FGYh.CJ;\G2o>)+^=\N<
+GQpR]L;^u3oLhErYlGO_ZsSUr@C80R?qV`joKu7OEEJ"NHX@R_PA/pV+heL`HhR(ZrYp,9/.m[VOR/b-
+FlD`n1GV:M];,dEL1cVb1fQYX,EE9V"E_0G4Tim?,;nBq'9V?roe/'qR+i5CBL<(ZHKo+DiLV-^^<ZZ/
+Baj+qPRJB6Yk>?]k<5DJO@h+V:!UndS,?s(96?NFqi6tCZ.p_QD[eYIHI&O`e/GWn4G3G\HV*4Os*j2.
+ih!BHs8D<W\d#@XZ/_HS"t)],2M7=YA%_X]+[#B2/pt_QJk:2N\ML]*)PC#T<[\'fLCsoe.Qrq@(rYB"
+;;0Ej"[#I_!XhQZ_\f<SR8thY.7Xca)^\MIdi)7S'KA8l.<_:gnPBaO8?L4.:o@a=I1`])`>9dl!o0<l
+?56WPYuqaqq)UQ7`V*_3[sNHV;ge4uAG^(.e73qB><^3C?tV#_oL^j4#(#J&l\:4'#DL\KQpD]#6_cG0
+5T?8:oe0V\6XEn3XL0\X3?":T1M\.Qm)H1s$__Vi]7SJC]PC>X,B\Jt.+b)PDOOepae#K@r%a4^7]CuR
+T1]@q\##r!1LL4/p)`7GAW$7b"1o6D6"!8Z[I0Wurf`N[j\9=V+A67)%!m>Ogq/=Ri.GI(B4hTZKQbH.
+pd`5q]L[l7&*9A1Mu2""R5rR@J1,[pN@A3WVn>r_RR;@mL>EI&20$VbDa:55C,hH$@R'h,(Zi%/Vn>q/
+(J]875hBqsq_XOb..9j<:IJ?`kk:^_6i4[r0i\$H?5q$SH.?k49pV0XkhW&.`TM<JeF'Z%2\W&:p?%Kp
+RUXgFU*`]KSiK-]B,q\#"@O!3=mbC3l[7ijT20Ku?;ccp580/rW;5qt]>fSDG0_]),Mr%+\87pigQo=L
+'nL]!DXM]IoHb9/GAAEGEl2bo3Q5MKU=1d1qOrUH27bjZ&52IeQ.@21Th651/Y,2@L]#=Ci=Q!,ILFXJ
+c3^?cqI!Dcn@Y8K+P.U>nE=U7:,Z"*Gd2M6eZWXc>hr;nCYC=CeOZH@*Ui]JG9sMEBAKtm(:.oUk:\kG
+qjOg$-YH.*Kb!sJ>*`%,es+#BEn9/ab-$b-e_RE3Q^>(_MC#_B?Sb?0j0PU6)+jHN#X,>^<+B0WQPY$3
+>oYZOPV^Zg;\l=tCJ%\*R^,=/B2.XT^8;YTX>-[JON/WrHVH)Gqtn#L=6;V\b2Dr5C@F)l=8SGkOZI8m
+Z*_R9Q\2]L.>-6ZR00n".D%XtmIfoD*:C&K7t`P(Z/r[sUB)N[X<5iO4L<p#jH`0ReR/][T4qG#7`'1.
+LUqD9N4s6nj5K'si?kf+hYZ2&3-+.Ukt,-Qg]JbS&L`>dJ^Uil\3RU4J:-#=W.#,=>L&S_cXO@,:i>gR
+,>]R;k<8t/QI+^pV84BQ7YCL,(@Q6oE\AX^/l6Gb9ohQMV_q#<gr!YJ$'YXT5T("D.(<pr\3RTiQgP-D
+gSpbIb,le#hoV?&JZbQXpO.R%%[%e5,nc66H3ogL&@4-CdMn33M:&:mT\Ouadf.mV#<DZoYF!&8SWZO:
+%-Rbh27Po^V[8:p.(>@H++Y&3=)WY1>6[S(P^*(q6D3\2`%qNg1shC9JJ+(,/.%OGRR$*H-;ZHb9FZQ9
+K=NXd;X`THj^p9(fH9kU;(@3?$"2YNT4^;#a2lY%o?hV?7q#-QQ2o=^%@C7,TA))#692`<R<q+\_]Ks<
+6*PY*Sk4PgW24c'Xn/TKFAU:Mfejm7Q/q(C%FG(u2fV`/0bgEVq'O\BnrR4c-#r,mO\Be83"tn3e8)a@
+bAcbF=lCDu%)Sps"soS%2["7kl39BNZf.W`ILW@"q+t]cjWOOG.8Q!fKNUEDcU8]$FS/ECFj&ol#Ssps
+<$)+CU5U#\S/RuJB48@k%=g_R!7n[SB<>PY?.t)8^e#kWNf`$EGFXB99GB2Ghm;n6Il=ro7+[*P_&G_;
+i&CJZE9S4$T4.Bh9r@I+Gd,<pr+LmBOf,Ff1D)ED>cX]s>AR/oMX*7X9/^h!pKiLcQ1qQe$%=ql8_I%"
+ErNrEDk6c(\$#oP7dADnTTN!!N`4&%9$`'LYp7\`J)*9576@cU?0J:p(uC.ok!M]LB'`t2iR_j@(ZmuC
+hC>4uTYN@H/Pr;7T]s!)Yiq\+@8pbd-C.=PJ2^Ruk:Ee?:G@E`'La`9c`m])0UUofj03@P=ZI/-1,4n^
+o0&'?DbOZg!\0bVaB-+b7L0\q#\FsWK@jJ_#8H)eb94OK'#6`D'-S_-9<bL,\Ua_EWj]rI%/$BhOl>c?
+omW<]<B[C;U^KN&m]KXki!JZDij%nHJ2hjY7>53][CKpe>18LdhpHuGX%fr/Q-8_Kb^^U=f>?0F95A6C
+^E0;OI:``o@B?dl6*-??FD)<o.AF&m$o\pe-o0=:/2K"tLkTq7'XSp;S6tu22,mFT^Ui*Y/TPJce?[50
+_'sV'Y8pm`SUYf>1-s^o`Uj;FA`]&9[V[>0hHL*ClDa[gg'J$+?k'8*K*8j;^u0!JBgdg\k)$VF<QY:E
+!n"nCnRHONhoe3\n7,D:9YcpU6h-,r#T0H?Da:2VU2Qqc/P9&Fh0jA"bP%Q\)Ej$<,Lj7Ro>.c422cK?
+0W:]1j6E!"0&D9s]N"7]OdpaC2H8%ce7W0UNtc]MKiKWQS^Crdh!7N^CgPW3dR*$dHc@Ic>Zb0ekC`cU
+FXRS*FZ0pZNed&.S)4BDe:B<97hQ24,Y2L3`+&YT_>-W,o$J$($#bX97O>2qY(l6T76CIA+Wfs9Ho*tW
+1g(+4)kONK)'Dn@3sQR\iAc.(bO&-/I[qaUVe5&q=e[`1("#l9"@(l,c^aZ6&E6\-L*&3lc^/6_?ac5<
+a-WUO`'$=(DZ5@,>ko2QB:$bk0mDK"UK5GJcPX**RY>E/-OqRHQ-Q&:A:h6`k8b#Q[c@tlC0L:.`)n$5
+s7G/Y6IB9/$n"8tYq,.&01L!loYp$cK!?/piQQR#Y,_D9nFqo84rV^Ulq75%(8E`lQ]/CZkVU4frK<4r
+ZP]g\(LpO@%:<qbhl8Y/e'P8s@H9n9Z)^RG=c@)T;if+G/B5t3LmX<O^(a+5_o=QdN*)+tb;^eJ)Nuf7
+99mMm$o:jsh;-_Z8oo6UYVhdtc*'$:QJXii?$uEEY]fVBEeZE8m,]q&Tht:C06U[ReL5Ihn%0*!+8F;T
+[1b,lBb!L7jUJ(Zo;bTNk'%>9RQ]J+Bmd<baM*Gb-_]WpQ,Yjq7mFsRA1^bp%^23tK;m;1R9TSoA0Z4B
+JZ_+#h@E]5)QGWLf<hNn<,'#AU6Y1kpXB3?13!Af%n9`Q7ken^0^&^iW5@1brYecRdV:aA0R0P5#fEl`
+^7k+kIq\<\*1)%0*3*DS_@BS5To?6LVPL%Q2#(S@P)k>b's,6N_G%-^2nR>.$<']h=21\gVuiQ_DQ9@a
+6PXQc&#q<td.8-#c'N%H?:Li2`tq6TOnV'sS-.j=2XV2J;-E8>STETKeLssi\p$(@>_c2$Mc#1*X\[J[
+0r#ZF*+;f.d#;_jE/b'S[Qj::Wd047ebF;>N,!kp>t-^&`Yr8b"&-ab!?Wh'M&Fi')!U<eA<Rn]Hmln2
+Adp]r8,WA!Nj$fBml8%aFra[^,]-emMqeCNO&h)l5JAb\NL]%p8j#`CnT@taAim^F4NCN=nDih,2@hj_
+Y3`7=Nj%S8jMt>t;4-NkC=V.cnJ-LPrT\;jdWKqC9"B,*YH+-=<6*UejEc9&20b.bQ4r5I<`_0_o@:)A
+3PI+W_"$IL;Z,6/^+Mk-7_c3V42,G:?cQ6OmhWsqV6J$^I'j/CJ>.(,3lf]LSV+A<l<:CjCbA5$p$6Ti
+"@2#;g%WA82W(farFe1fITI36[I5[h\F8ac,XZ5%ms_T_5\VgXn$d'\I,Aj$OD3TjjmDSd+40bq)U:P(
+9L/Q5YC1<u^@/NTNdT`&WS5Y3hq`qkmJF#q<SuCiN_?hLGBGO3rb<p2m<]epZgZF`m<aT-k>3%D1D[\@
+f-haUI`9D2W*I1\!o_1._g>$mSBNFn(YM5p>tHTUlK8&/*s$#[RnNR&*f!/q'h+p%NJ>EJS=[%F)6KbC
+C<SO+N:L6I-7jrF&-@Lk6MXD?8f:P2_,t/E;#(uN\nAqLBL&$1SmDkirqK%c$7=]8T\-A+Aq#P/EP/c_
+@G*.(1>P<iWnM+q0`?*qP&1>MFg"Wm@LY+X6+PQ+/"G.j?RilEZ]s's6V`lJr!(]]7q&bqP-\bae9iCR
+>sBttRrq.M=MqI_1>GHb.GaR9>P71;oO(MIYOUnUdLA[U_K6;NIH8r?KoZ"O?q.gZ'I(Y.q5g<jF:eCS
+JYWIS!a5=NT3fNna4bqnm4V]2QrU/V<7e7>?DfG+R5iT!=WR/neW=N&?tSJteEAo`/E>hZP'=?g86=o.
+Ub=<!L5<^-[9^$'ip0VS@R+OVKDh.d6!fJqbO+8B!]bEXaQR3>%897O]<t:Bo667EV-/%,TYkF:4W#*0
+rfY\<+6&7/*\Ste)K(FqbN15LmJ'5\9V/J;2Z15.0j8fhfI6YE58l/L`Q1_\J%`sKX"]oOU&Uf0GRorg
+UgpbKAd@gR7q_7:?P^V3H%-DD1>[YNHC:7]pRn3$hSYib.<s0i`d=d1`eb!:g(/RUO#IpEiS,C01Q'\k
+_0\Y6#GLZ/I%>B28P(JA%9E$F(N'emI\dZ5hW$s@]Z1rY=dH3Q:3F?$'U;4%5`(r-3p'(;k>]Lg#!G_(
+SmT</FcgRX:NbM*LF6UsfRIf.[1J[P1rK`2;MfRflFc)eAA"0lV]d,IQ[CX.WQlIL<6)ols+@\&f?klL
+R`,,LMKscf`V[W=[=Ecb,T3nA#'S$H/ZbcB#IYg#1WfK>]RQG-dJU#%`?LLk%3DPZ2b_88roOmbI'kcH
+=&p=agtkOhkRZ8b)Vj=`e_spa%I3o*<75&c-+MJ*N21,i%:fu/U:[;g?JhQ1f[na;Ys2hXJ/Nn:/[lYf
+#6ckr22l#+RBd_NL=P430WP4nn$!^L1J=5qG*fLOJ#(Tp3)`o_k]kF?eU[D*bQpIJR'[bc#*L`R2;f!W
+aL3C$"s2qWX2/4H%He76,bVcN,<LBOieLYGJD>Wc'p,5b>ZLt+0^a+T_I?PuIDX`Rhuh#223<Q&>ZQLW
+_=W2l>/Dc)J@0Q'%Hq4b5r&*5]))@bbq&XEO5q(jekmH"RXP+m8FGbh]d.fmGOYd6)q(98LHjkmC6q-)
+E&4.,?5@GP5=E#Le.=LSc$k.Hep.$+?,lO]l&,1C)7L#5qo_C;g&>s6cBc_8i=186%qd%E#,j`U-"oPu
+naCts0o\girW'qDPpb9-^n:t]WMYgfbh"16#ZWYlMDCp(=8V.1$\b%FN0#?QRD%U0^nLBMZ#!S^?mZk&
+aO'>&ZRb6Z4.m1#jK"g].pU>nZDRETF8'*B#MGVh*@-P,_?`I%*H3EMqL*dC(nL6&@Dj7(K`<2[Jg/KX
+DLoX9L<B@cHmE;KX5T2.NP'5Xg8(dsg]E**FE7h"[uS!&8EZSg/VdbPSNkKV!`ZTlbq4:l0t2o-MS$D&
+f($r=190\NDRF3/!cDm5:TSPW/,gZ4lPYJ+R9ON])a`[flgCiQH_W?(jqc"3?07IQ+j;NCT?8mtR[@r?
+nUm8-AT"otC@,],*YtK\eN=Afbq4UZ/p"'Fe)OtV"a"h/rc$(5qh(AB9o4@;:,ST)H-ECf[.11;0C.a9
+(d6SiDLq>Q>iq>)GB6EikqU5'WmN[+)9.V9L0J-T^8CV5c$#q`\@L-PK?DH@Aqs!4\^a[Tl/pRgAX#;/
+F0!El'BU&pA.*Gd+*nrKlTd88c6'E72cHhhDK/^lbcN5\N14$RO7S`;9bbrEQa4=qq_7>1k14l53'P#^
+;4J^@M6sV);.-kBG^FmDZfHRLOkTo8kUYbY_oV675?MfY?Z!=o]R.4k=O/$<,9^CFiR5FAHG'\*^<&g,
+me18YPIV^p,0<o(L]8N<4)dJ-Ok[_,e]?P`(>+W%%fG;9?>TLLD?lgS)OB-/QWYn\3ri8j_V>WV&YAPX
+=DeAImZH8?]B:]RK25j:gVLUpg^Wtj?b%2QD-9rP'r37e@p".djEB/t,.E1LeNC;CG@/s\\`]1AoBC6Y
+$Mn/pOXoXi/W$NHDk9gdo[?DQg(e];]H.6iO5$cIa9#XGcj_$"]mJnK'_DXUGnb@j!P`OV]hbi4Tn;,;
+PK[;5mn2.m$9Cf<`b?N$Jg:L?-bHQd5p'NZ2e+dDZpY84_5!YBchu22&U*"QJ%4;1cJILe\<Y2W"l2cO
+^"l<B>X?shHn"8eVeNVlDT-ch6+9(gMETDTefPZH4UQLB[p,L'^TN#Mc5AamXe80<gi]5dht`qT@OQ)5
+C<;P4@2k9hh@fhj:"`b:*?;ZVZ.o2\I`[PCjjtT'hrF8ZfcQ5)a_p\8&%?Ik%cq)P+uae-P=t5pY8eQZ
+$B/u,X9[p7>-$pVUrZ94iDAU4N^e1\DTWRRMO_MXaMf6sa?<VJ5:K#rO1H%9WKY5)Odk/>^no+Hl!6fA
+HiDCcXiT0;NZo9hO<QW+/>+M.Z^[`D\!bq;U&r-;NZpD,444g'qnl:lB!X72.<>"p%)V'$bK?;8VBOZK
+:JrZ_F.*-jMB&@ro-eVbiO5N&"a!2YrbrQ3qh$D>e&6heC/[];8!08r3j3^]85,/8WfT2tgfuT7>`lr&
+FsqD&V5hf9QL0lX=4''.1MLq)27:29[^41)'KQ'.;<6lDEXZ%1VGZZI+ubu?H;`h$.".+"2k/?@99G]!
+5[9EZk_`XC5n`&:N@T$JjJk_46Q,&LMO_Z'>u@*NgHLLbof_#O7%5]In%mrWXF>jHIY`&IDID4LSnsul
+"EE2Xa]plJbrqJqC6Fr3e)9b,g)l@.DKT[nnctM4EQQ6CN[N9]ooCKLrbu-u/-,D0&+Nc:jPpckPA,Mc
+:Zgs)RZs^jM/W'317&Kf]@sC,S"@j#o/+c`diXUf@kk+24diA.hT"1AdMH0W=ForVkQ%Z5qj0MeO4-i^
+mS^$.HGp6"[dbT#:q:cfQ+Qek;c<(!UZo%8k7;d<?rp,m@&tKD`sVHo1E+U,?a0[k.op&-n6!LZY?8UC
+o,XaKlg,:_#+R&9%G:).2$RRAX$+.*"ZDSm<hMZ^]CnW\1gQ!?,%[puDRpDXl_4IHp,)5`AKVI_iOL/E
+LNuNuOko"cF@C?l!LG7@#*0sDIrIi"H\R=j=e'p>nhffD"\;O%;&jk,ReOCo/b&An<AA7G[f&d[7<gLl
+MX4$._bNXd@obsZFVoues7#S9UNeSEr.1`).C*0U[(<!CQR/$0,.l)WiU'ZT/k+>TiCf<hi[[*JX;,t$
+7FqIrWp!b)9U)9_Vf<$Q,)ZNIEOCR/<EHpVpMGRJ,SUCc>L"MJ+XRpI`W4LNO7E%&mIu*$&2\lHcp632
+IfG7eSAoV^%E!fV5X[spWb54p2'9cs3=UD#8-k&:hFdfUa4r7rK-1HqNR'!6Y%/A%M4oB@=?03W_3goX
+Tm#NP:&(7C#hP7-rb?iss)[9g=_K%`35S:GAY>$P$()3!&['N.oSGH6,ErN&CqkDf2&8;Ti"O.5r^0k]
+B<p1RrrdeH)gAG3#$m=5PsLk2B9eW3YE@>tq>,i[abTMi`b=JeCZ%2-S#GgK&ZT:3Sh?5i5B1K]l%#\+
+[+.tr23r^gi9MuYmJk*B#GJm%Y2U@GG,ANd?%tOT5.@N>Zr'C?Fla<3dJB?qlRa<?`LJ,$@Kj!F@Us`@
+R`1W#prp=ff0Xl]fJ?RV-]V=_ZD',C00stk6'A9EN1f^lQX\N+4pd("L1Wb)Um%KBeW@jbSk0p(@(!nC
+OUBo4N="IH.H2^18N_LXcOL',0SA)Ha\g'tm([E/>0CAtrIn1o/n,BXD"Zia(?!^leVTRL9VnM=r'5LI
+JZdm@1IE5O9#RtWqW:o(Hs1g,%]ZQ:T#,KjaEnU5O7;fg5_#2L*eU,?>\lU-LWc_&8d97(Nk`\9b3qN]
+Ittp0:oc_B<6V...@PBZ>a:J<"KB..;lON'C7OsDh*q\g/
+%jG]i19=&1BG_4#*q70VF6!s+k]O`b:5-U0(ernZkaUUQ[k__*Se$p)kVt_e8Cll#hg_t;=Dugek*+Ro
+6I9G$rO-ds1:`0^A`4ek]^O5BH68_Q([IE@=Oj4iC)WG1*.@G7;E_/S2IeVN%q'^KgflZh^nC772D/"A
+f$Ht3CI[+N72/6cmC6cT2CYZ`POB7\1.IkTX39!31!]rbZ/W7AhFJVc6;TBngPF24pu)&h+.8h[Iq%mm
+D!+fM^'Gsg*.33"dsLNu^7MekS)--BH*o75h)UUd#V3*ATc*TN1d"._]Q`%QX!BJnl1nS4=j8S:+_PEX
+'jF(gPj0.bqqHpBLZs4Wnd8`BaeS)bnLZJ;KoKTt!GD:cq*A)0iY_E>8FKLK2.MlTmX:Z`"uFe9,0eXa
+:6<ST+ma0pE8Ui@g'q\f=BgNRR>T4f@g.q;ET2CDZZ#U";jSa`HZ\riSRctUc=@ZG[k8;6q3?lY5+h_T
+XBDR$,(k<K8'_ffPe$5S>@@4`lJHb2hK3Vj=0bo59MaauM;G4j1P5ArIf"rAm/,`\oH*Vk\Q@q,`MFf$
+H:886!8MA$dU[KZN(\&6]qUbrb#Us&U$M"M=#+ICQ*CDYre^]2,u&%/$D2Sn:WOnI)T-=<8[RM+]fs.Q
+/X,dS(IPRW9&7cML1U4KCCH-3)QkeG(+$Q3+ETFE_m+6Kl\TO")M>80%#\g@Xt_ICE?'sHn^(@h(`(qF
+XqRn1Z#G['ao1n>2X)..(c6,#@k`;4s37<iE#;+ZUCZl4q+Y2[:OKmp[U!$C@P_3JA%d/$p%]5i3bl$R
+TcP^9@4c=;4oo/!,I#!sMtb:sPVnjZ%=>jb7gB?TQHYVKg_4!c)3_[oG1i.NRV$>ZI)Hju3P4%;V?<8e
++FcY`ZCE"<0(bLjE+H[kNMAtoIuthDl%aK+P]``=j3Ll7HX8dgH<JQ(Jj/e8M=`bo3$rbE)aRh6EuN(m
+lso`YL@ds9SlSlSTEpbAVZ%pk:]>XZ[9_h_oAFpt9jK+aRUcZO)b@:/PjSDlfn%jtamR5]LLWo!]@(4@
+mT\/&_"L`kcg4NQ..ijIaQ?]&Y!8q/8B0;IA?rr;9;:`s.TruMZ9*(El<'5*Xu+7<pC56iV_4>&lqonj
+fO"0o7XQ<"No/1LR&iC"-+fr$.q4_/]X#'6Nfc'<NcD,qZkh=7PjF.-Y>_M5OR0V8SK?VceJjVM3[D>r
+O<<Ddl1l.0,a)FF)N!G"5jXA(HtaiH>%Y>A+FH>Yb"d?EOD18O^WSIo]^]-hR0@s"=M?(fk91t^])_MI
+Fr0'oI!5TgN+>+q(IPI>3;.@.F4U8KI<RD^]*hL,h$%K9Zb$53lFRE8<uCZB]Ih1@Fr0'l:Fib1Cj3.(
+MquABodrhIXG7m<nVkg(air5hRK2m'b/]qNQJN$c!_>?Tl[fSV2.8JOGEDIhhtVS=rVdJN*(%ueNpkPP
+iTp5<RaE(HkNV`5333G,Z6k*&NAX_YV9OjoB;W:`D7:kegjH10a"^3oalCX7!'3<JpU:a2br1%QjR<[O
+?\YWiPh7Kd3j,(+]tR']e#tFZc-!sJTKpp0=4Po;p4ak('&aO.=tQjAn2(RN/atP4Yina/GC<.f4b_aT
+e?g!62BjFE&B,3'\X]e:WAtTBd)r8/aU_6-qlh>!G1F/U>FO<A5)K06EGm7Q2k_4tf!0]*8c0M<Ia)+V
+qcG^2.,?PPc8$Zn*OD'a\ffC/oag?lOk/ARH4osjG]EEL9&MpoT7ntS`a_ltf/k^fdZD0iFYdejS^4IO
+TAr=-mBT%fT@JMQ"k,,PjDD#c%LFsZ_LhHWmn;NgG3P5VMr2%=U:;tA]F\WBp06gD76/K&QF[[/7<N6I
+UHkq&9o6PSVmSkcK88bq[aoql^#/fQ\(kcDr'H8\J.^n2I5!ekH.8'tD!eg.S+O$ACck3(Vo?Xj-/CPo
+X:5`QjJre6AO5!Om#pkAhn*Qk/pjA>m`k8C&>(J!HJbF&T\=?dU)aab8n:o;5q,WqK2;aBF<RLl1uUf8
+,m@HnaY4.G@E?&eAV2Q[NSl7LdQe&D!,("ERnmUaG0]_fU;+!]ZV"+7C!R7g$%.earW4ugY+SOI5f4Lk
+eK!U`NNHYC@7L(4&^&XM<p0Y2OArna^?c4*f24DG/`C>.-5?158pFkbcD\U.2eGfV`am!9=,16O5WEEa
+k<S<llZ<hZCtLaid]FAn?f.+G/t_n[,Fg!#cP",:Fm5ZjI>+Umf-*Ss.u\XS>N.[-jg:2>$@Bc.C?A/'
+j%;$:-tG)87i"6V,M,1g+q[\-0R17K?p`2rXA,VqV4F,lKsIU6Ei[\o]"e\X0A//XjXK2YL0r]TiFpl\
+#[2A1$]1<9naDUraAek91qIe=JchA7m-queBCkf'.LBmm<VtcBI*W?6dT0eU@B<:fccC#,C!JXiNqC?^
+-)m//L%s4Zq&@5`SX&LBmYK^PrF&Ud\Ge1_8LT%)1"Do,0Nj8IX^iJrrF%%2FIE+^GdN.i%hGZroERaW
+58Z<W@;Pa3Ud%ONj;n2--MJDgnWq\O(sq0q0E#=bi$;L,X;^=6P@`!/J!aUa%K0]jU"T)D6_Q^I2E<sb
+q:Q7D2+IO1`rii+!':.*kmt,s\?V=^R_/Q,hs/W3B!P^eoS:PeaO)*,77j9YbbDdO)T"%l^7_Z$>ME>F
+,e@9,5=\M@(pAb%)a8W%*9R!EiM0])0&,QKO1m?n7XO0OZQ$>4HPZq"7FK$7!pZH2SL4/kU6TAN=e$KH
+,bTYX34n.*Zh)f)j6Uq:MkoAn3&/V:m(g^.33=Sk;Oea5)'p>:#=]o$ip8RL(2#Q?EH]7O=F=4?o5-Md
+_me9"FP$#m@^26b'AnsI<ud-)q!9cIiY12b4V"`3G9;XEB>2'DL6%)"kim*sEt*DU--+Uo*R^b]@WH%e
+ROoY?IVhXW\*2G07oL3%,.E2/oKpTm2]T1!\T?N?EEMkMDUGYa33b%2[H+H1Mgd82T<d[Ia4=q1YA&<c
+=nM28YL?*nL0O;nI=PqW)ns&J*[\?j`p`=U0jPbGq+1&3?<J'%+;nh,hlts)`[e+VaET#M\W#DX97_KH
+&S[Adh[tWpN8IcF5r*m*`B.>E,FNG'N8N/p6.u+(a!Kb3Z#VBdV16%7hd(<EAc*Ul:Q^T;G*L0p6QtK@
+k9\T$H-?+kb_J_,^T2'8PiA0&eK5Zi/@0>"=a9!_hS.Mdj#:K<8&fJn-nlOR/MfbW)Xi0W5d9S@9?-EM
+?^J0h&(.PmTB#hfj0B7;]A<gpL_03u@3/k%PTe3BCED;O:nTp<DqrOUcLf,ibV)](E@X@mHD@1\)\&:n
+\<hS8dMn<TQ7opkDg>0U2sr8c8=>&.c78s-ll+8T1s;gVg,Oa4B/oNOUJUd)f8?pc6>n,pa)J_S,J!dP
+A>^<3hRL%?!N7sF/Pi&37\QS9)E,8@hdF'.a>]\\DrajgBe?3%6>uKLJ+UaC8GIVXN@iu/V"r(S%fM)g
+A&'U(LG9c1MI#b/Y8mfm+n^^`)SVfrjNDu3fO78;g)7E<!:>S5JmIFp+7d',b!7a,P2OL(=%!\2777ce
+7mtd%lnFHJ>f`tnIUh8D%,290?:@6pW*Bp+i"Qbp][;Um,Z)6"P'Hk(:MX%-P<4__>O4&(YAX_jO*Z3\
+iNiSRR/VrgQRHI&kt;_K@;Dsf;Pok3$1L*Ze%-:kf9[miqS.N:Z=P'?9,,fHq3MXR?c$c@Hsm')0-"=c
+fY<)!0)SA,AU/(b--B,U7phumY*m9Jlk\2Z&"M3b*QjJlQdE7504FYP&s[2+Q6@TX"j?!mSp;X:R`jnu
+/aai$:%F*`>)R_:N7]=sH2:[U;mUh\Roh.$,re\f%[;iL<WEr,mp(-Gd^,D*(4SbOj@Y-.Q,G7Vl_qP!
+Q!SX\QDsVj3;VdLk3_riKrqj_(h_Tc"JX"b/?)h-/)q(7CAkLTq^-C<]AnhA?FKNhQ;c[%J@lZ:L^K?c
+`H:P>ZW^\3ce`F6ZaFu"ojM-"m>@*f,Yis63$aHAQ:N5DM\MJ7+a[;h[SfH\,mF`c7BXa'U%lP?g;B':
+.oJR5S:<fAQo9WO[,3@ZV<cW2r)tm+lcpmSc9CTAIWb5nW3ohD;)@g8\)0*-ZXWGcs4QltQ^YX3@h('P
+<]-DFiuo%XkQtPP6sdm@A#<0`buJ+t85jC&6E;F0XgD9]8oSAReSa_,6msA0/5hf%6sW3_[\G%p_]J1Y
+p[S6/X4HP,)a<A4GE'VJOYmFqHmC14_T+<W9*UK2(M#Ud[Z+`!(q+s>$Kf*4rBBEt/rL3E".Ne*S'sQ[
+.o$M%JNII*_A>9i^DQmp\'BN`l?g;6X?1uLcn<`3>=-444)UQ>`h1_ckKfKU+6D)Nnq<_Q[[-4g7(n$A
+@(^NK:g%#Nr<B'05OBjg:@I(UNnPG2Cq6%lj*aA0<GJUo97)<:9V)%i5imC4l>`!c=P"LN,!@5ujIU\<
+h6J<m%E=Wn1>:>1p<TbpEPK=F>LIg[VF;aN1\Q4Q!#`-)r<A.*`&ojro+"d$s+7G"3,]?%O5n]%cQ.Dn
+]+;L4kaqD56anR0nZ@/t^r9OX'gBqH1%+mlO2eM"a-XfPMT%`h/$(5hN:.WlkWP6SC6iF(NFuD^QYS^A
+nM8^@<g/kF)NW7mGRVX%_m/:o2\(g;fJT730ct*lX3*s$)UGFh8u;(A5]PCi<k5j\phc/%Bs"JoGE#,Q
+Fu18Xf=,#/8W.tM&O%-$15j1u>J@sVe"iqDHJf_;$:#p.'c_M5K&Q4)=U!h5^:sAAf#\lO*(&!:Q*4Tj
+r-g"^^Yeg4hKi2R(litIa3%H`RZXehMS(HH!I1EPF[j(HT6oZM3'OZZS!SX_Ebf%4$h&#/)R4[(eN\VM
+@K2+JNk,)-fCt$7j-G54BBS"pjnlu/j_alI>'[&,Mcpi2Ug88cW)l'g%R[V1[dm5pQfhLs/;W&pnpm,-
+ad$Ke<hA=g_nBD;hMu+-$2_kDI\a/0pAk!2gKWMjXZY]?qV'Y8V>/3fbb^;"ZQHUG1i?sf)*VEe^]!i?
+s7QEkotUF.J,[JQs*+J>^]4=`JT125rnd\QJ,fK)s8INGQbW++rS@JJ+.`2qR9;TJNMJ?/iBQZ^nV<QH
+eGT,X(@Jo/fIoLVs0'3:T=`#7/?gY;3rH12Ila,!rnm]Ao]AI>ofr'-9j7.<ABFD7B0qRS%tFKfH&rX#
+O'hF6cNX@Homcs@cohi\J,R^+B!)$f]iOb%C%d>GNa;13n*^.`B<M.;+*%7G=.MBRq#9pcri=c7@Vn6Z
+rL"5sM%B+PORUpI9,K[Ae-6t"i->B_9ciNnLhrCS3!MeSZo%_&mq.;-[.a]-`A&oWr.8XuP\N(T5YK\\
+[$9:7*.?iLNcnSLoPIBU5rt*P%4dJs?!-@ADTLldUm8duU?Woogl</8...@H>>1<9g_>+NnAk!#V2P9p/SC
+$,rk8ClfeoYT*-Nd[kKmp>P62D.3IX'i[rTXQks/K5lEte[l,4Tq-NQKZX4QD&faA7@em_[`C5IVT]\`
+6ljbF&+bf!Jc7Kj$_:=SCKsG/#t'qp`SPi[lu6JB#&OcKJLQ]8P9[e]Od=9nHjjSlbDkCZ!JB234!)ft
+#<f&O\gC<%m2_f@K#Ca)DLQH4X4B-E^r[O:,GQM]oh=#j0ueV=b)k_(=DmCSGuJ!dAt,n@#WXkI^MR3/
+)M/r"CZeGnooqehVk&j*"PCZ:T*.St;)uMFcKm4>6&*,DDFe:r%)-8tS,-6%ImY%`6oDGu2NU\U(gb,=
+^DJ9b;l)ZB1;nfERsmGp"_qB%]LmUc^aQM+]-I+]%`6TJSj"@B&pde[!Mj.q.k/ef;_J?qZl,&1*50Rm
+I6Mf&fB`(i&cZhZUF>Yl'7JRsckrO19)UD)hDd<<-sCVdf^^QMcf)Nf"DpZ+PXi!Z)#8b:qE,Yn`VICL
+$Rp*5",c#g&7W9*_7<o*r"sUWj79S^#H7Pep-dlL!]%OR?hj@9OGMQ;\O/n_]AaLYmr8TDLgnC(quq;t
+%SUN(FP97H6+UFS3i"Y9k=_$;rs1#6jcn*C>G/o7qYXB=9ChREl@aWDFNG+WPr"a^%6Ie[0(2'eC,;I0
+&<=3"("ti%mnh&--]N!`UK7.o@;,ET*\D3moUdC2^:7,#liG3;>_+o^2ob*"IJUl5g&`U%\<=M%\uYk=
+=WEB1R)sUB(g=fhlSt&VRk<[g&`^Ne;?S"O)Q.1L[lu';Tu4X&*Xu,-ikC%01;n/M[O0B_R1]g1jnU.@
+@I_()(Y#rC\%9tBJ8p\t"4A/M'l2$Lf6h"t)Vf)faBR$:VW.0TQ!9t@/XEoXWBA:,Oj$!phH!i$/oN8i
+mcO)KZ7ahlXWs1AL/$N*PR;;p[hZn`3qDuiC1S^qj_[B=77^C>;/jdL]LB^$#i&6?eQq%k5el!5]Htrm
+GBjQ+<N6(a[t[6+@LT[7CLoHg"65*9^+SIu*/V;<6u>hJ:=V%Wr>D`&75ZE1rEC:fM\OjUNkAp9DEm^C
+YXqQND(nJH&sZE:q8h=R?>urlCSHa2YC&K'<RfFs>RL]).S@li<^#"<`oq)eP=_R:(.c0cFQB@Ycu/((
+m(Y6+KfU-M+o[B>-V,DVH)ArhE+n./8'^bC&gD6_^*m.mCBflGMK'K!dkk?29Va^Dm]D:sis;MrqeiE:
+q/k>9?)E8-;,qHd%'t1`(e,h_H[EIZa-\5j,E#/3G023SFD$4F!4gmU!JY7DD]X5Gh9-B#@$qG]X`E(P
+gEB'Rj+b2U41Wp"B&A@JdN#^a%#@E*@FOr[Umd>1WuNbFP)g"O^#Y;/i7(`VDatNeNg3Y"Mk+YD12du;
+<m>_,fAe8*A[)MR<]ku);j"`7;cL9E:gRu2@2[Mt1+T$r-oVhP1F*B07u/C/#;Z5?i&"(i(]d/qOhaVT
+HuFB"]^rP[i>f^6UG^a&b[#.rR:GoKUqJiDoAfWd\<J.T$8cnP9=1(i3:3qTZZd*fR;,/EAarBSbof\8
+Gi'fFi+Hre[qdYDn:$XuN#k@iL$W+@>@;.7SM;>+a;s6C9eu**ZuU0)CY,LdlW3]lrZRPZm&hOe9a65(
+.u%LZ?V;.TI7d&()DQj_;pWef19JN!.kMU1RBLn:\.?=qfdV"iK5e]4P^"t/1_"mGi`%*g$n>6,i/U-g
+b>c.(Aie#LYh(7OmI$+hFs4d\q-2iF"W&tiZ<,3HiRc#\cSg^6#Ll"Y-5;B9JU.a`]C"fDqJ33eP):.]
+U20M8Ml7??*(Rja%Z*6>;=.`cQ4+nSVQE&i-%fVGO,GMR3VdSq^F+5.LHIYH!"Gah)/@/$"h)7pO-U24
+`d2@H315j@G:_1)0%hJs:A8tDI]n/*)B*>]=+3eU>VE:g0Sh"g^M9KM)+FQ',oq!@?b]&BoS2s`"1[O;
+AN@P]ZgSr!3cDdj@+#TMm;SfffC+L#VsOpOY<QqZV&KX,9SJB`^qk<,h/BN]$pB(B,idF$h>ls/lI!ls
+K7b[Sc$4lsWPP+u_0'uV\Yd[lOBLu90s5G],t+YR5B!cg7Ta#9!2&hrhS?@;lfSUejo*2cB-cTBIJ]Of
+O"Vfa9&^M>[K0&pT%ZY'<H&6t:*SZanaRkom\?$p0:B6L6j>Ks2LmelW,:U+S1rGN%#),u38P"gg#EkY
+D8WSl)sl*uD$,U,?)DH=e!d#>_)GQ#:B752ZjjZ2F%WR"Oa>J7CtqA30`:b[gF=oT9*cc7!4*taegUI5
+^[?WdYBK=Fo?XT7`:eQ7+YV#,YW`>V$^Y4)fkm?@[+T)=7X">M5/2lJ.f[B[3u"knYT=(Bq,_fijsN@a
+Ymel;bsu;1SJbK[,<gL8A>P+5V+a5#a0HH7p%aF(C0&PKS-IJP4pmkV."(/a=iL^:_Il%>qg8Mr0cu>8
+V#,O-/SC";=NFh31TjE2L!N9=G+RBEOXW",2/[%j$GUtcq)oOIcg7@;itq]CL[a=@5-mUXI,`>1PH2%3
+aH)OcU.=@fXPI"L#)ccu`Eb!8b8`b#"fZ/5f>TY^nKg=-dE/JRJ.-kt\QX@:3_c4J&n<&k62d+n0j'bn
+;dWn[@L<FHK^tIXOhdO;,g5JZ$Iuq+);2"l5n>?FBfOntIpmY-nTO!9(gK=3\I32@LYQi[UnEk["1g.L
+UR3,-c'YnjG`ML^c4I!UaI"'@'es@?<7Xf7la$GD`e<b+?H:+]f=3N4'(dLrP;S:lMQfOL'-[aqo*@!r
+SQ_H?nK1k1d5ihu%BDS;1r"@EI/I6Z.1G</57:IuP-p^Q;q'or`Ga?He,#l_VqgqsQY"G$CFR.(iIGM.
+Vg>\fBr>'KVQ]-T<K$fV^41&QdUfE+0B3%_S(HfDQ;sT?=CF_6f)n1Z@`LU3<;<Q;2Vre2n@_G:`EB%S
+B3"5S:OK?DA5%]ll\@HjGXL5OPK-\WQK8D).Q&3He:)88ZmT'n>_el?>\B>qA=T'&c,Kq*<Jml]FKJG@
+ch]-YjC@j_C+*+s@'3D_WPg8DcHKCeW"cDd.`KLi2-)0_Y/Mk*3igc8<b^SVn5\1E,Bd+e.XHN.Wl!H@
+TebWQ.b2?ed@.i6GLe8279B=8oa55:V-]k^X0cO(6X$<L93,^Hp2mE>)iO1fTZ:M,jXPE6X&R_QBhua)
+_GuK^]WY=m0AE[1W^C`QQ(i$)`%';W3G4V#nR1!!mE4(g<>rqZC%m!MDcQFiX43^RX46uRX&K>opl'^)
+#HgsDN*^gVmdmQ;.DtU^SBVX(.r\PFI'a](dXdYeH@F`t`M7i(TBl1IHacM`rO/PAJ*%.Mn5lVSj(82N
+Z##ES)[RV"Cp776'-B@HN.rSLZtW2tR^&(>_k6`eXV0Jo&L.`JD6j$%k\8N@(8RkQWp2h5C")Xn>Yc"s
+D`td;jb8be-L?'4bgNYiVp2<E*nSkQ2J,#8C"$0pUl!?tZ#DjC-IjrQ'dL%O:Xcfo4\b_N&hBCCUI[h&
+9RUnL0rR='=UBua0$B0YaRJi7Cpaa_(/\V0[2^PL4B[I-Ol=DlZ90mY-mHRG*Z;t_ksU8cT.2&&VLL!L
+4NH'19q[!BS4Eh[Ij2dT;as4oW;totZ:G/gNlWnEWHk;V:dcdhlQ$9Y"8iOr?&bINEqXchGe1nm8-SJt
+2kKn>*\R_Vls&;.iM!>AMcAX"*>*uiN[)9]g>IecOu;AiL:t1O>)-hsm)o2cI.Aao\+df0OV*M[gF#08
+(n$j*B0_>L4+#9<]%0q:NciuuCKCujbTsD0i]^MuP_Kd(,eG_6r5Wo,YATU:$1944WF6(a2WGWTX"fNV
+b&d75<qEf8cb5LM=/4D?g<'*m\WV-A3`W>J[@NN%E\,enaghCL[Nel%P%GddBan9L>Y3-71qAbX`Ca<7
+@AT6rL)@M0P1Gjdk::7@klI)[Z!=/<os`d.$2Kp#-#F\qm42n7>NDk235/"d,`GX^=;X(L.BooobE]cG
+eP%[;@[U9:[Bda.(b9;J><C!C:pQIj,l:Wo8m8+8qb#S^i9Dgaf[n#9RdF9/bH1Z`YukJ0ZdpR+!F>MI
+%\F_7PG\@0s"gs#6D'%m\<m#>I(X\R0k(4NeMI^Og6n_[`$tYna5"]S3<S(FT,"EaJ)\i1d?hsYaiRd]
+_^Do<-*>l[^7MfmYN^b'[8cIG$XMFgXIlYtl^Wj-bG1*+43!JiAEn5K5'Iub^LLW]^o!#4gq:,\2B)Pk
+gFsiV25uq_dr8tM,unX"T/bmQn-k@j&\k&3[K;c8bMroAqe7'/T$U_mk2l,\/.q]XW4;nnn9>iYc,K00
+!orB:1`VsB@FJK6X71?LH"B?a.:Sl*c%U'M4sZeKGs(WjD4FWJL2NH<NE^'KL@76sge8ZlS@2\9g'fuY
+\Qn$sADaN]*D=\T];[[@=,+A92"[t5V[ZaR,*98["cMZGJR%%M2L3IrZccPqHMpOo(0:7C]Ii3=Ef#\Q
+c$&/b@9i-*<_6E:Brd[iOjf%G\WbLnU]FXo)psr"ekD:40;%-j$nr]qPdfjV$=0Lh@b#pne!>o-Hu,pn
+CFQ/Uhs/9e53^4p^t!d=3GlX)e!A,P@hKOT)"YgQgl&lkCF+mb>^8Ph:G2#b?(Q)WSgR`7[5pb/eYSL'
+)F&$)lXYT1:GsOlDbXgK+]#O#&b"f&QFtHdXSchflH529lcA[.%9oDTY?[YHMu1r6Z92:J&UC\Gd>;V5
+pUOWDV-p2\XgHh6Vp*.(luBp5P(AU4rPJ;de.n)nMu/DG)L8V.aftMjlK`.ePpt:!Ym':3)N$X[a3'V-
+2i'S!^2Z5[ZG:OPenR63AWQKFY<:KA9Zi_rWS)$--rXllZo4R>n$t]U9?`+O9V%7o`Ut"1.:nqYO"pm1
+p)Pp-:rj>ZQRTGMLJ0/:!T5_%>`C@7$I>qsWDU,$AgLAjOu8o`RcTTs9L6)Y\7A2hCK3-d(=b67V?e31
+;N#O4Rg_TZq0_4+6`-N"4u0Ik-cP^PVEB*/XdN0J-<'88>quS%?S7aueBU-O<nJ]#hZ$-+ZK3<NR8T>u
+e^h;oqN:DecZ:p]\t-HA1'Oq=b8Mk<]r[o*Fe1n[ahjBolUl;hTC)RUm6N0QIFZLgAGBC1VTAH=s1ZCm
+P8+R'X^1IR0@+KLc9a#*[C#@7$"7`:"=VGC.BOHuV6W]cA"Ba`aTC#\H*WGm:Y)c3an!U>H*W-<JsRIn
+;^;#Y4mGNU[W*JgG08QLXlMRL4PA/-?;T_))NHp_rjmHJCf-b/A]!Feb_WVgfqNPoU:';Zk/d[en]^Q7
+d=61E0M`I?nH\3u)N$X[a3'St3f2Y_A8ttI_kT?IU6ESK:R40/SdEU>#1C$&+/mb)H8lN_3"G98aZB,X
+=cSDC]q'@Rf8R6&Mt5')inWUs%\Ioiqk-TVG-?HUH/#[E8_'7\hFMqH6]O^o2RaJNDd,V6+E*b$\XC*I
+<p(fTgU:j"-#\orH.=2Tq=@nKG5CH.U;H**/pZ3P8!DV0jaE9(`TcITP./-(N_f5S2c[C\h?k9KgRF`i
+AFd,Uis7YIAL`qR:EOpS=S1!M+Hj4I)IJe6X2R1MDs^b7o!Tq!nh+j-Q++TkXftICDHa(dWd%:"]RBWV
+lY0)Q<jO...@WkM>78W)jE!l'^0dUUAi?3G0Pa*`?SJN1l&R
+gK<3?W0WQ+Knf*Q,Z+t_:j2>'><]o:UB+9DREf5.+1<"C@J`3dSonIXW3It0ZT5%nR"gK^ibTUODK`+$
+UeHhV,\DVcq@_J>*3$0SMk(K(maf,+Z,0!iNsjAO*?bHPZW7pG%`k$b`.LWg5Z'Wer,R2M3itgh;!U:A
+)o8Z4Wm-Oror;.,^?3<3b53!hk/PupeD.jM8eG8Uihnn["0mT&[kcj*Sk1'Y/EW?W*1f`.45;X64.g_e
+VQ'=rbbPp:C]q3.#!l^$s2-X,ptk7t%X@HkZ^Hd7%%5Yl5CA\G+L.q"Nb:Y27'Y$-TE6u4d@pc$rCD/`
+0@m9o*>E%@mL(Lhm2NB(^S9V94Z]0pfrrU<r-!nl^fmXP)S:$YhWFR?$l=9U&h@P4)6\eA?WIh%cHM-N
+/+KL3q0hKp;BMc):;@Uc*Zb9sCOEmF`.tOL+25PsmhP8eGQ94u*M$M2frl'X'!D`B-:Z"_SS<DH[8sUI
+(V`^fXsj0.ebXdtT:uFiUITNXq$'K4+BHnNWMrrF=41=a>hl'97_>*5d*^^XNiq9cpFKV1MB`$Z^93hA
+M)YE^LSN6(*t;7PI,\A*h9C2"]_\^tf?nsJ`^FOTJR'i(Og>&N(QV3!n!B)L-d1MDDdXs!?-G68nGr.i
+/D!\])d'88Qu?B#INm[bo#Ne="$:5j]5I\),e*7Pm!SUFdJK*1<ORfiMeoNDL8@CU*6u215/)Qlkh[]$
+^Q#BU^&acOmCn-WjSdLhhA2lGVr`8klelFM%1"!3J78$Yltfg0[/TU8<t-bNC8\Jn=W?uBfU"h:JXS]U
+03tu_Co\VgC)(rfI;PWtq\sP;nF9!9jaJE;Wo-+OrJ`cL3?k:bl1c2,Kruol\gjjFrl/gQ['$ItV%`a%
+X)?+aOu<YsH9JhhqEL-Q]P.\%,LEsuNAXjDS%:(>.K#0[6<>JIrJc/l:3:H781AkM_kW#O[EIG5]W]n&
+3HrhMrEER=l8Id/doGr8FSQjbS&WSEO%:_r0dE9bO^,qJYV!mn]'ATARQ(1\?h'[:07V1[EogDPPL2if
+IZn9fDt76c^PR/lr$FVjb&=:oR."(Xif[;j'@=>]RqeD["0M@8e&EF(9o_?Nl!S10]MmlM!U4u5jYrl/
+rQ9%Fs*OA8-GEdH2]7MNVSLDo!\14cH'BYKETK.<3@XNgpsbC9m*fP="-7P-bm2&^-D5hL2Z^*4^WCHU
+2fUC'k;VqVOl++?c6L<\X)_C'pQPDIJLnRXYiRfDSc33r9i\87Ol+)1Hf[2k:QaN;UoH'.2mNBaIT&t!
+>)i*BJ4el]*MiT[a!Fnfj>ZTX=+6A-62=4pQ[EEC]cQOYo]J7b-'Z>4JY/N-18$k+LI%(6XP`X!4M)eW
+*l]5krj!G.?1Ed=pT0*oejkM4D`Sh.FEV'%RgP:C94t9B?Xe#pDlCg`"9\W9"Q@/Ig]Co,lF4Wa`LhYZ
+)PC,9^TkPSs8E[YcVZe-LK/qGE+/c0[`8"ofUq?As26C;3V[k=VNqq-kePat$J:XbM8:AF`sfo%R/P`.
+T9V3peN4'62roYZ*,j7Q09j$"keFmW[l?A`'lj+S&=K@UVR).nMEq'dpjfq2[gWf4o#RKUY9D$Kr7ADP
+G50RYf,HVgAU#_c>OHm:@YaD1T\8\@37P38_,r(U-r4_Q(J;hS1#*jB.6>skYBs(\,nlgNrC^e6cj52<
+M@j_!+&qI#.J"*ckgKo-;u;931,fX%&ilWXm?<Jm:sBa97]6B=AVc^6$@77R"*'d05)nf_n(LFF>5&S+
+i>R`jj:#"Bkqc':(fc$7!_`,/:,#;5!Ke;'1Rpq#;*9%M7iDc;Sg=&;@UR@e)@_O3b].3NF&p7-@UO@e
+9Z\83qOBhX3]Y4%10HK@@;d<Q'g/Q_SQW3sh=*SK@\*$dq=QG8EUY'QK_2Gag>n<;4Of7p,W),mf%h:s
+>&DD9`>Rd-eKR6D#b0S-J#rrE6hIf>;]WIi^bF:9)]tL5=1Cp]*&?$Hpr&Lm`Cn[Zi-d:!c[;$N9##@S
+nLF?%C)/,<ZRSeSdYH.'"LmYW1Cse\XW=NJCE+*#G%UO-34%jF@HaV1L*c3#cYDJKK=lA\HircT_EKS#
+jk9SkXt2oSEC(]KMQ$<GM=.>A)G_ig$bf=.f)eV'=etBh4G;WbfujuoGPF.l(!0[mmoU98*4JNnh04h<
+q3Kqm8bL.tY\N6\YFmirZ+GQLQjs7'Y9:!uDG+RPUrXn?h&Q7Yk1FmA$AH7o`r<sUpRg+$&@auK41h!B
+pc[&$eo)PSZep7Ahq]8fGJhgGB6Q]\bUc9XUCa<pX**La],R?B4iOd=_u9gY/Y.LKh*A)(HAqjhgQ2XA
+:0Xk?PTp-X';VWU3$k8lauso8n7)$<Y"!\-.<4gqUN:E&=@n]5e`\=*@R*6&jN`P*'9p_&H/M(3J_HIT
+R>-hE_)l'j0s@;0bqINhE[QL_P#GRIaE<W<Rh>WpXqBoA3lS0DBd,QTR8p:i\!pVI@'Y@ATg,;`MTqmL
+ClHg'8uptL+DNfMJ[',MrrPji`J(9G^cE<C9,[X3?qN[4F:LfMn`YOnNjpYb]^ThsD!h2=[qC6e$Q;%?
+?HV*oT>6/F$@)SR[=]4dA,-%(1m3cjI'kTK6XBM:Nq:PT9BN_9V6r?\S5\usm..T-"rp=n[RWVuZ)<6F
+0%V=d)c)p7>.JZMiB]:o<uCX8@djG/(#iEUo(3$.:9eCCI-f\:2`OZ<$/B@#/[Qq>s,t(QnNKJ2FZ9h>
+rVm#o?]\^X?a._3#)>VBNFN+YpRaF-Ys'l8aGmOA\\EcM$VViP!%^W"#FF2/[h_R_OIb?P-@GAU>-Xg.
+:k^hW/oXE1^GP/g^_)/[AW_HS[CR@J3GG:&70li,`Ao><>R...@KLTak>66l*jkTEN[6*2m'j+S
+<a$Ybi%OG,M6lN>q'MT(n:W0&:=@X3rXIX%+VtaaSE7gPn?K?^Ta2X9V&bN]/5?"E<R3q#/kO>%Br*fu
+&kF!q-oska(cM-fRiuHuN#rYfq%P)R2K"WC!sh[pUBp9I[#jUDV`G:ScpD97)(@ZHF5b!,c#M-&`C!O.
+H7_Tq[%m;;E.%lWfYaXP6T;ur05;(dBCT!RMl*'J-8EUFS3,TKaCM=g$okSc23)l_TlK`kGBK$t!";)T
+l8jt0$pTZ`8<p;UWu1HYOkuA<-&1`Vk8FS[:B1OYS_l1c_Pe]I\iIX\;U;H.="E0GdZ3UKqoDqSgWuW^
+0apI"fcOOiV"J8)Rr`8iS`aZmo4sL"a'8*%B4em?mC-[_^E+jf[Uq9L1,OrbW+b>O/-MK)q=HL*#1&J"
+<J*(J]K@Iso9m<P,>2N^6=:'GaLmV[7W:K"Rs)-(#,Ar#X\1_jGNmu6LI'odbc)R#9S]`i=mOpOCE9_-
+L<bR']fS5PMZ2Vh-48+'?uiS)+%q:T7lb)4`GpXE@=CCl-e%d+4BkCU)9[ru8j=u4[(V$L0Wis5B(4;D
+klflaHF.0o1T[.m]E\\eeS;Nmk5-=C4a<SgWU73Wif.25i:Oj#jCo=SCIg8(jH`q)&=I2!<ZI&KlP1_R
+R7BOsIkb++2rD$!)eVMr8g$-/1uQK?6ek7[_^ju&_MML,mq<VHSc85ZV"QB[/e"0*W$)djo5?IV3^Pd"
+[oRO#@fBoD,5!E[g:</u-V8YE/osTN%rr.kfs[C_YPEbf1m&82Ns<fQ2lg`0!sOg"5!crr]L+4sN0QIu
+;j@PLi1_5^"%L.^,S-,*'L)6X)R(I<J/q8b`g%j\"q29?QB)54-B2K`JAD73CUB1q*6uKt!TU-+*-c;2
+.ng%7i*X21Btu\@ZOPN:0hTecV#`Yu%@B*qNH\e#c3mF:^SV#BPlGjWEEO\LNs<f1:mYZ3XBLp*_#CHr
+#)jq3I5G=G-15b0@)p]*nbt[ngk!DsE\q/DGUm!hXc,ijQ*9@ihVdVnIO#Ga\/\otU#\po!(el,K\J+4
+ma1`s(KXkMm_q$t?<kCNbKR,;oFm#3epdXUh9O"0ReX%'k;nX\DcrR%31acts28g<3gQ=pU;Q#h73Q1J
+X7mS-c?!<oFbCPIAWlB5(EC'dN&1R4>)3CY=dd=RnGY?@=t$X+m<l%4+K51mOb=ttJARC!DqL`0q$%((
+d]N]$GU9Jr:1(%HQ\USOV$X=Vo#W05QVoau>B=MQ'qJ]e*ZZa9r>h5R[)@"MXdsdH?eO\^480cVs7<,u
+m5UC!+\.MYKYJi$XSUqAr-!lYj1\Ih1o$1\.`\WcKG[4aKOfIkYE/JKf`0k=p5!XJd`P-qLb'$+d4<+g
+KRL@NL5+t<j1F\.gt]RXG'hZ&,>`b._h7qp>^:]Nn,D;UG*B<*3O>d!`tg,&j>F=[NjJlT$sMUP?F'>5
+haP7hX`-eE_B&N2_BBLSs2MbsrV)r:=#a)JYUfMVG9"BdTpNN54O8KVM1((>[Q%!H#N"Gs0e5)<)bJ%,
+>.a]m>2a^DSS*X<p(`U'=,An2PP;p`s7L7([@Wf!_\;k+(fmb@acN%EIc9cei33L+,bWWFR#)hIhOKsm
+HX[PC=ejB%k_"54JJ8ig`ls-][X3N\EYuXqm)V?*N_cH#IGI'ha6isl30Ch22%8UJ#*QGc*amp?h#j0I
+RqOul+SgKI!QNmGmWb4<,7h#>RsTZ++&<1;]]9`l7[4X.02/,B$X+'4%<UoGi)<8rerZ9BAJu;.b@WaQ
+'lXYT,+-MRFcFP+CK-=j;;k,qKuq7jSFUYV.Ql8RpF7f''ja8fIg_5CrNH+*,5'eM._N5QeB,uR@)]fn
+<#h...@W5oZS>\?AV8pD3'a-f^R[Ue!gr*(2$b1P]?UVbPs*f\=IoHKqD5/jT3
+J^C@:8iKKqce47-n)s2^\UA2*CBYZ;'h]=Oq$Y4McC((J[Xtj20_I;l=]KHB0Ff$=V\L8Q=MYNRkbM6u
+k36p#Jl-Ad@Kd^.'l5j1CgLIarl23p"*4WYnuMNmcHA]'<\SrBZ%=b^Y^?WG\:h2?J]h3RR@,J3JplF%
+"ZsG!0Q$gL/^')4\fD6E6ds;[@QZ.Xmnunrq<Hoj"-SrmDcn\PUX6\c5[*'>>BM30R:CNcE$qcCc17%g
+AbM<)Epu6/>DE+uIi.#oVrK?2Y3U>U%PAOg(7)E\doR/Zi5/`m'-f-2(lHo(hdi^Id`UW&F6qa=Na$RC
+):4>@2kJJND344*B!42abZb;N4RMk5QB=rr]Oa@A]!onGHcmD@\*RMRW:OBjLOmDt?f!QtICIA!:/h(F
+FW><;YUi%bbBWDpD]/?Ne!WM>Art?BnWhgBmDtlZR<d-5Dk"l>\]S.=fY(i5ft
<TRUNCATED>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/os/modules/hal/hal_drawing.png
----------------------------------------------------------------------
diff --git a/os/modules/hal/hal_drawing.png b/os/modules/hal/hal_drawing.png
new file mode 100644
index 0000000..a437da7
Binary files /dev/null and b/os/modules/hal/hal_drawing.png differ
[7/7] incubator-mynewt-site git commit: Lots of HAL additions by P
Dietrich. This closes #73. BLE security blurb added. Docker container and
quick start docs cleaned up
Posted by ad...@apache.org.
Lots of HAL additions by P Dietrich. This closes #73. BLE security blurb added. Docker container and quick start docs cleaned up
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/commit/a946b6be
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/tree/a946b6be
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/diff/a946b6be
Branch: refs/heads/asf-site
Commit: a946b6be0affbee330f8b2fbab0a59e80c0f8e27
Parents: af2656c
Author: aditihilbert <ad...@runtime.io>
Authored: Tue Apr 26 14:02:12 2016 -0700
Committer: aditihilbert <ad...@runtime.io>
Committed: Tue Apr 26 14:02:12 2016 -0700
----------------------------------------------------------------------
about/index.html | 66 +-
mkdocs/search_index.json | 273 +-
network/ble/ble_intro/index.html | 14 +-
network/ble/ble_sec/index.html | 541 ++++
network/ble/bletiny/bletiny_GAP/index.html | 10 +
network/ble/bletiny/bletiny_GATT/index.html | 10 +
network/ble/bletiny/bletiny_advdata/index.html | 10 +
network/ble/bletiny_api/index.html | 10 +
network/ble/ini_stack/ble_add_cpu/index.html | 10 +
network/ble/ini_stack/ble_consolepkg/index.html | 10 +
.../ble/ini_stack/ble_controller_ini/index.html | 10 +
network/ble/ini_stack/ble_devadd/index.html | 10 +
network/ble/ini_stack/ble_host_ini/index.html | 10 +
network/ble/ini_stack/ble_ini_intro/index.html | 10 +
network/ble/ini_stack/ble_mempool/index.html | 10 +
network/ble/ini_stack/ble_statpkg/index.html | 10 +
network/ble/nimble_setup/index.html | 14 +-
os/core_os/porting/port_bsp/index.html | 4 +
os/get_started/docker/index.html | 1 +
os/get_started/native_tools/index.html | 2 +-
os/modules/hal/hal/index.html | 21 +-
os/modules/hal/hal_adc/hal_adc/index.html | 805 +++++
os/modules/hal/hal_api/index.html | 114 +-
os/modules/hal/hal_architecture/index.html | 653 ++++
.../hal/hal_cputime/hal_cpu_timer/index.html | 80 +-
os/modules/hal/hal_creation/index.html | 80 +-
os/modules/hal/hal_dac/hal_dac/index.html | 804 +++++
os/modules/hal/hal_drawing.graphml | 416 +++
os/modules/hal/hal_drawing.pdf | 2819 ++++++++++++++++++
os/modules/hal/hal_drawing.png | Bin 0 -> 455792 bytes
os/modules/hal/hal_flash/hal_flash/index.html | 74 +-
.../hal/hal_flash/hal_flash_int/index.html | 70 +-
.../hal/hal_flash/hal_flash_map/index.html | 74 +-
os/modules/hal/hal_gpio/hal_gpio/index.html | 80 +-
os/modules/hal/hal_i2c/hal_i2c/index.html | 854 ++++++
os/modules/hal/hal_in_libraries/index.html | 26 +-
os/modules/hal/hal_pwm/hal_pwm/index.html | 824 +++++
os/modules/hal/hal_spi/hal_spi/index.html | 830 ++++++
os/modules/hal/hal_system/hal_sys/index.html | 78 +-
os/modules/hal/hal_uart/hal_uart/index.html | 80 +-
os/modules/testutil/testutil/index.html | 2 +-
os/tutorials/arduino_zero/index.html | 12 +-
os/tutorials/tutorials/index.html | 38 +-
sitemap.xml | 26 +-
44 files changed, 9688 insertions(+), 207 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/a946b6be/about/index.html
----------------------------------------------------------------------
diff --git a/about/index.html b/about/index.html
index 5ecfb9e..19aab19 100644
--- a/about/index.html
+++ b/about/index.html
@@ -189,7 +189,7 @@
<li>System configuration that allows collection of logs and statistics for all packages (with filtering options) ranging from OS-level resources such as memory pools, priorities to interface level counters such as packet exchange and queues</li>
<li>Core dump captures to enable remote diagnosis of device failures and hiccups</li>
<li>Network protocol stacks <ul>
-<li>First fully open-source BLE 4.2 stack<ul>
+<li>World's first fully open-source BLE 4.2 stack<ul>
<li>Support for PDUs of up to 251 bytes for high throughput</li>
<li>Support for all 4 roles to be run concurrently - Broadcaster, Observer, Peripheral, Central</li>
<li>Random addresses for link-layer security</li>
@@ -212,70 +212,58 @@
</thead>
<tbody>
<tr>
-<td>0.8.0b2</td>
-<td>Beta #2 before pre-GA release #1</td>
-<td>mid-March, 2016</td>
-<td>* Arduino Zero support</td>
+<td>0.8.0</td>
+<td>pre-GA release #1</td>
+<td>late-April, 2016</td>
+<td>* HAL extensions in OS</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
-<td>* OS Time</td>
+<td>* Arduino DUE support</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
-<td>* Several new tutorials for OS</td>
+<td>* Image verification</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
-<td>* Tutorials for BLE 4.2</td>
+<td>* Stats and logs enhancement</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
-<td>* BLE 4.2: Random static address</td>
-</tr>
-<tr>
-<td>0.8.0</td>
-<td>pre-GA release #1</td>
-<td>mid-April, 2016</td>
-<td>* HAL extensions in OS</td>
+<td>* HAL additions: ADC, DAC, I2C, PWM, SPI</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
-<td>* Arduino DUE support</td>
+<td>* BLE 4.2: LE legacy pairing</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
-<td>* Image verification</td>
+<td>* BLE 4.2: Code size optimization</td>
</tr>
<tr>
-<td></td>
-<td></td>
-<td></td>
-<td>* BLE 4.2 stats and logs</td>
+<td>0.9.0</td>
+<td>pre-GA release #2</td>
+<td>May, 2016</td>
+<td>* Support images in external flash</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
-<td>* Crash dump capture and retrieval</td>
-</tr>
-<tr>
-<td>0.9.0b1</td>
-<td>Beta before pre-GA release #2</td>
-<td>mid-May, 2016</td>
-<td>* Support images in external flash</td>
+<td>* System watchdog</td>
</tr>
<tr>
<td></td>
@@ -287,42 +275,48 @@
<td></td>
<td></td>
<td></td>
-<td>* BLE 4.2: LE legacy pairing</td>
+<td>* BLE 4.2: LE Secure Connections</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
-<td>* BLE 4.2: LE Secure Connections</td>
+<td>* BLE 4.2: Host and Controller separation</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
-<td>* BLE 4.2: Host and Controller separation</td>
+<td>* BLE 4.2: Random private resolvable addresses</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
-<td>* BLE 4.2: Random private resolvable addresses</td>
+<td>* BLE 4.2: Remote configuration, upgrade, factory reset over BLE 4.2</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
-<td>* BLE 4.2 stats and logs</td>
+<td>* BLE 4.2: Factory reset</td>
</tr>
<tr>
-<td>0.9.0</td>
-<td>pre-GA release #2</td>
-<td>mid-June, 2016</td>
+<td>0.10.0</td>
+<td>pre-GA release #3</td>
+<td>June, 2016</td>
<td>* Test coverage improvements</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
+<td>* Support for additional Arduino boards</td>
+</tr>
+<tr>
+<td></td>
+<td></td>
+<td></td>
<td>* BLE 4.2: GATT based BLE profiles for Mynewt</td>
</tr>
<tr>