STM32F412G-DISCO Platform Reference Implementation (Single-app, Keil, FreeRTOS, Developer Preview)

PREVIEW
The Platform Reference Implementation for the STM32F412G-DISCO board.
JPF_ST for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Technical Ref.: PRI-EVAL-STM32F412GDISCO-SKF-DV1W7
Last updated:
14 April 2017
<!--
	Copyright 2016 IS2T. All rights reserved.
	For demonstration purpose only
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Build MicroEJ Platform Reference Implementation for STM32F412G-DISCO

## Delivery 

Folders listing:
 * `platformArchitecture`: contains MicroEJ Platform Architecture and Platform Architecture Extensions.
 * `platformSource`: contains a zip file with the MicroEJ Platform Reference Implementation sources.

## Prerequisites

 * Java7 or higher
 * MicroEJ SDK 4.0 or later
 * Keil uVision 5.18

## Import MicroEJ Platform Architecture (Platform Architecture and MicroEJ Architecture Extensions)

 * Open MicroEJ SDK. 
 * Click on `Window > Preferences > MicroEJ`. If no MicroEJ SDK repository is set, select a file system directory to store the MicroEJ SDK repository with the `Browse` button. 
 * Go to `MicroEJ > Architectures` and click on `Import...`.
 * Select `Select directory` and set the path of the `platformsArchitecture` folder of the delivery. Select all elements and check `I agree and accept...` checkbox. 
 * Click on the `Finish` button. The MicroEJ platforms architectures are now imported in the MicroEJ SDK repository. The menu `MicroEJ > Architectures` has been updated.

## Import MicroEJ Platform Reference Implementation Sources

 * Open MicroEJ SDK. 
 * Click on `File > Import... > MicroEJ > Examples and Platform Reference Implementations`
 * Click on `Next`
 * Check the radio button `Select file`
 * Select the MicroEJ Platform Reference Implementation sources zip file with the `Browse` button. 
 * New items appears in the list. Select all items and click on `Finish`. 

The MicroEJ Platform Reference Implementation sources are now imported in the MicroEJ SDK repository.

## Build MicroEJ Platform Reference Implementation 

 * Click on `File > New > MicroEJ > Platform`.
 * Select your MicroEJ Platform Architecture with `Browse` button. Once selected, some platform reference implementation appear in a list.
 * Select `Platform > STM32F412G-DISCO > SingleApp FreeRTOS [DV1W7-1.0.2]` platform reference implementation.
 * Click on `Next`. 
 * Enter some platform reference implementation meta data 
 * Click on `Finish` button. Some projects have been added in your MicroEJ SDK workspace.
 * A new documentation has been opened, follow the new instructions.

MicroEJ SDK Errata

The Errata of MicroEJ SDK versions.
GUIDE for MISC
Supported MicroEJ Version: 3.1,4.0
Supported MicroEJ Edition: SDK
Last updated:
1 February 2017

Examples Custom Events for MicroUI

This project illustrate how to propagate custom events from the hardware to MicroUI.
EXAMPLE for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Last updated:
25 January 2017
# Overview
This example illustrates how to propagate custom events from the hardware to MicroUI. MicroUI already supports generic events like touch, button and joystick.
Hardware events (e.g. sensors movement) can be used for specific display action upon occurrence.

See the Device Developer's Guide at section **Inputs** (13.5) for more information.

# Usage
1. Create a platform with at least the UI module.
2. Before building this platform, some configuration is required. In the **xxx-configuration project** in the **microui/microui.xml** file, add the following xml element as the first eventgenerator.

        <eventgenerator name="CUSTOM" class="com.microej.example.customevent.CustomEventGenerator"/>

3. Build your platform.
4. In the [/com.microej.example.customevent/src/main/c](com.microej.example.customevent/src/main/c) folder
	1. Choose the file corresponding to the board/RTOS used 
	2. Replace the application entry point in the /xxx-bsp project by the file selected in the previous step
5. In MicroEJ, create a launch configuration for the Java application
	1. Set the name to "CustomEvent_Build"
	2. In the **Main** tab
		1. Set the **Project** field to "com.microej.example.customevent"
		2. Set the **Main type** field  to "CustomEventExample"
	3. In the **Execution** tab
		1. In the **Target** frame, set the JPF to the one built in step #3
		2. In the **Execution** frame, select the **Execute on EmbJPF** radio button
6. Run the launch configuration.
7. Compile, link and flash the xxx-bsp project.

# Requirements
- JRE 7 (or later) x86.
- MicroEJ 4.0 or later.
- Java platform with (at least) EDC-1.2, MICROUI-2.0.

# Project structure
- src/main/java
	- Java sources
- src/main/c
	- Entry points (main.c) examples for the given board/RTOS that generates custom events.

# Dependencies
_All dependencies are retrieved transitively by Ivy resolver_.

# Source
N/A

# Restrictions
None.

Excel to NLS

Transform an Excel file (xlsx) to a set of NLS files.
TOOL for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Last updated:
23 January 2017
# Overview
Internalization is an important part of many projects so that users can select the language they want for their system. MicroEJ offers a library named NLS (National Language Support) to help developers internationalize the messages in their applications. NLS imposes the structure of the translation files, with a simple and efficient "[key]=[message]" format. Nevertheless, each company may have its own format for the translation files they share with their translators, often using Microsoft Excel.

Here, we demonstrate how an Excel file (xlsx) can be converted to files in NLS format. We use the Apache POI library to perform this transformation. You can adapt this tool to your specific file format.

Two Eclipse projects are provided:
1. [Excel-to-NLS](/Excel-to-NLS) converts an Excel file to a set of NLS files and saves them as resources of the second project.
2. [HelloWorld](/HelloWorld) takes all the generated files and uses NLS library to display the same message in several languages.

## Project Setup
Excel-to-NLS comes without the JAR files from Apache POI. You have to download them from http://poi.apache.org. You have to copy the following JAR files to the [lib](/Excel-to-NLS/lib) folder of the project:
- poi-[version].jar
- poi-ooxml-[version].jar
- poi-ooxml-schemas-[version].jar
- xmlbeans-[version].jar

Then, right-click on the project and select **Properties**. In the left menu, select **Java Build Path** and open the **Libraries** tab. Add the above JARs to the Java build path.

HelloWorld is already fully configured.

### Project structure
- Tool-Excel-to-NLS

 - Excel-to-NLS
  - `excel/`:  folder with a example xlsx file
  - `launches/`: Java launch configuration
  - `lib/`:  folder to place the required JAR files  
  - `src/main/java/`: Java sources
  
 - HelloWorld
  - `excel/`:  folder with a example xlsx file
  - `launches/`: MicroEJ launch configuration 
  - `src/main/java/`: Java sources
  - `src/main/resources/`: resources
  
 - `LICENCE.md`
 - `README.md`

# Usage
## Run XLS to NLS tool
1. Execute the App class of the Excel-to-NLS project as a regular Java Application. A [Java launch configuration](/Excel-to-NLS/launches/Excel-to-NLS.launch) is provided for convenience, right-click on [launches/Excel-to-NLS.launch](/Excel-to-NLS/launches/Excel-to-NLS.launch) and select **Run as->Excel-to-NLS**. This will generate a set of NLS files and drop them in the appropriate folder of the HelloWorld project.

2. Execute the [Main](/HelloWorld/src/main/java/ej/examples/nls/Main.java) class of the HelloWorld project as a MicroEJ Application. A [MicroEJ launch configuration](/HelloWorld/launches/HelloWorld on STM32429I-DISCO SimJPF.properties) is provided with the path to the [nls.list](/HelloWorld/src/main/resources/nls.list) file properly configured. This will print the same message with all the available locales in the Eclipse console.

## Run on MicroEJ Simulator
1. Right Click on [Main.java](HelloWorld/src/main/java/ej/examples/nls/Main.java)
2. Select **Run as -> Run Configuration** 
3. Select **MicroEJ Application** configuration kind
4. Click on **New launch configuration** icon
5. Go to **Execution** tab
	* Select your platform 
6. Go to **Configuration** tab
	* Go to **Libraries -> NLS**
		* Check Use NLS messages
		* Set the **NLS list file** to`${project_loc:HelloWorld}/src/main/resources/HelloWorld/HelloWorld.nls.list`
7. Press **Apply**
8. Press **Run**


## Run on device
### Build
1. Right Click on [Main.java](HelloWorld/src/main/java/ej/examples/nls/Main.java)
2. Select **Run as -> Run Configuration**
3. Select **MicroEJ Application** configuration kind
4. Click on **New launch configuration** icon
5. Select **Execute on Device**
6. Select **Build & Deploy**
7. Go to **Execution** tab
	* Select your platform 
8. Go to **Configuration** tab
	* Go to **Libraries -> NLS**
		* Check Use NLS messages
		* Set the **NLS list file** to`${project_loc:HelloWorld}/src/main/resources/HelloWorld/HelloWorld.nls.list`
9. Press **Apply**
10. Press **Run**
11. Copy the generated `.out` file path

### Flash
1. Use the appropriate flashing tool.

# Requirements
* MicroEJ Studio or SDK 4.0 or later
* A platform with at least:
	* EDC-1.2 or higher
	* NLS-2.0 or higher
	
## Dependencies
_All dependencies are retrieved transitively by Ivy resolver_.

# License
See the license file [LICENSE.md](LICENSE.md) located at the root of this repository.

# Changes
See the changelog file [CHANGELOG.md](CHANGELOG.md) located at the root of this repository.

Dependencies Discoverer

List all dependencies of a Java code and discover the missing dependencies of this Java code against MicroEJ OS.
TOOL for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
23 January 2017
# Overview
This project is a tool to list all dependencies of a Java code and to discover the missing dependencies of this Java code against MicroEJ OS.

# Usage
## Online
1. In your MicroEJ or Eclipse workspace, import this project and drop all your JARs into [classpath](classpath/) folder.
2. Right click on **DependencyDiscoverer** project.
3. Select **Run As -> Java Application**.
4. Double click on **DependencyDiscoverer**.
5. Right click on **DependencyDiscoverer** project.
6. Select Refresh
7. A **result.txt** file will be generated at the root of the project.

## Offline
1. Drop all your JARs into [classpath](classpath/) folder.
2. Get a MicroEJ offline repository (zip archive). For example repository 4.0 from [developer.microej.com/4.0/ivy](http://developer.microej.com/4.0/ivy).
3. Unzip MicroEJ repository into [againstClasspath](againstClasspath/) folder.
4. Set `OFFLINE` variable in [DependencyDiscovererOptions.java](src/com/microej/tool/dependencydiscoverer/DependencyDiscovererOptions.java) to `true`.
5. Right click on **DependencyDiscoverer** project.
6. Select **Run As -> Java Application**.
7. Double click on **DependencyDiscoverer**.
8. Right click on **DependencyDiscoverer** project.
9. Select Refresh
10. A **result.txt** file will be generated at the root of the project.

## Adding additional MicroEJ libraries.
You may have some additional MicroEJ libraries, to include them, drop them into [againstClasspath](againstClasspath) folder.

## Interpreting the results.
Open the **result.txt** file with a text editor. Each line contains a missing dependency. If the file is empty, your library is compatible with MicroEJ OS!

Each line may be :
  * A **class** described as `package.of.class.Class`.
  * An **inner class** described as `package.of.class.Class$InnerClassName` (InnerClassName is a number if it is an anonymous class).
  * A **field** described as `package.of.class.Class.fieldName`.
  * A **constructor** described as `package.of.class.Class.<init>({parameters types see under})V`.
  * A **method** described as `package.of.class.Class.methodName({parameters types see under}){return type}`.
  
The types may be:
  * **B**: byte
  * **C**: char
  * **D**: double
  * **F**: float
  * **I**: int
  * **J**: long
  * **L{ClassName};**: reference to a {ClassName} instance
  * **S**: short
  * **V**: void
  * **Z**: boolean
  * **[{type}**: array of {type} (type may be an array it self)

## Porting a library to MicroEJ OS
To port your library with missing dependencies to MicroEJ OS, the following steps shall be taken:
1. Contact MicroEJ support, some common libraries are available on demand. 
2. Refactor your libraries to avoid those dependencies.

# Requirements
* MicroEJ Studio 4.0 or later, or MicroEJ SDK 4.0 or later, or Eclipse 4.2 or later.
* A JRE 7 or higher.

# Dependencies
None.

# Source
N/A

# Restrictions
None.

B&W Smartwatch using MWT (Standalone)

A black and white smartwatch. This application has been designed for a 240x240 screen. It has been tested on a STM32-F412-DISCO board.
EXAMPLE for UI
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Last updated:
23 January 2017
# Overview
A black and white smartwatch. This application has been designed for a 2BPP 240x240 screen. It has been tested on a STM32-F412-DISCO board.

![BlackClock](screenshots/BlackClock.png) ![Weather](screenshots/Weather.png) ![DigitalClock](screenshots/DigitalClock.png) ![Distance](screenshots/Distance.png) ![Battery](screenshots/Battery.png) ![Notifications](screenshots/Notifications.png)

## Usage
## Run on MicroEJ Simulator
1. Right Click on the project
2. Select **Run as -> MicroEJ Application**
3. Select your platform 
4. Press **Ok**


## Run on device
### Build
1. Right Click on [SmartWatchApp.java](src/main/java/com/microej/demo/smartwatch/SmartWatchApp.java)
2. Select **Run as -> Run Configuration**
3. Select **MicroEJ Application** configuration kind
4. Click on **New launch configuration** icon
5. In **Execution** tab
	1. In **Target** frame, in **Platform** field, select a relevant platform (but not a virtual device)
	2. In **Execution** frame
		1. Select **Execute on Device**
		2. In **Settings** field, select **Build & Deploy**
6. Press **Apply**
7. Press **Run**
8. Copy the generated `.out` file path shown by the console

### Flash
1. Use the appropriate flashing tool.


# Requirements
* MicroEJ Studio or SDK 4.0 or later
* A platform with at least:
	* EDC-1.2 or higher
	* MICROUI-2.0 or higher
	* MWT-2.0 or higher

## Dependencies
_All dependencies are retrieved transitively by Ivy resolver_.

# Source
N/A

## Restrictions
None.

B&W Smartwatch using MWT (Sandboxed)

A black and white smartwatch. This application has been designed for a 240x240 screen. It has been tested on a STM32-F412-DISCO board.
EXAMPLE for UI
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio
Last updated:
23 January 2017
# Overview
A black and white smartwatch. This application has been designed for a 2BPP 240x240 screen. It has been tested on a STM32-F412-DISCO board.

![WhiteClock](screenshots/WhiteClock.png) ![Weather](screenshots/Weather.png) ![DigitalClock](screenshots/DigitalClock.png) ![Distance](screenshots/Distance.png) ![Battery](screenshots/Battery.png) ![Notifications](screenshots/Notifications.png)

## Usage
## Run on MicroEJ Simulator
1. Right Click on the project
2. Select **Run as -> MicroEJ Application**
3. Select your platform 
4. Press **Ok**


## Run on device
### Build
1. Right Click on [SmartWatchApp.java](src/main/java/com/microej/demo/smartwatch/SmartWatchApp.java)
2. Select **Run as -> Run Configuration**
3. Select **MicroEJ Application** configuration kind
4. Click on **New launch configuration** icon
5. In **Execution** tab
	1. In **Target** frame, in **Platform** field, select a relevant platform (but not a virtual device)
	2. In **Execution** frame
		1. Select **Execute on Device**
		2. In **Settings** field, select **Build & Deploy**
6. Press **Apply**
7. Press **Run**
8. Copy the generated `.out` file path shown by the console

### Flash
1. Use the appropriate flashing tool.


# Requirements
* MicroEJ Studio or SDK 4.0 or later
* A platform with at least:
	* EDC-1.2 or higher
	* MICROUI-2.0 or higher
	* MWT-2.0 or higher

## Dependencies
_All dependencies are retrieved transitively by Ivy resolver_.

# Source
N/A

## Restrictions
None.

Using Foundation Libraries APIs (Standalone)

This project gathers all the basic examples of the foundation libraries.
EXAMPLE for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Last updated:
23 January 2017
# Overview
This project gathers some basic examples of the foundation libraries. Those examples are developed as standalone applications and as such can be run by following the associated instructions (see **README.md** file of each example).

Note that to run them on board:

* If you are using MicroEJ SDK:
 * You need a supported board (see http://developer.microej.com/index.php?resource=JPF for a list of supported boards using MicroEJ SDK evaluation version)
 * And the associated platform binary .jpf file (retrieve it from the previous link and import it into MicroEJ SDK)

* If you are using MicroEJ Studio:
 * You need to convert them from standalone applications to sandboxed applications.
 * Follow the [How-To convert a standalone app into a sandboxed app](https://github.com/MicroEJ/How-To/tree/master/StandaloneToSandboxed) guide.

# Details
## Core
### EDC
EDC contains the minimal standard runtime environment for embedded devices.

**Available Examples**:
* [com.microej.example.foundation.edc.helloworld](com.microej.example.foundation.edc.helloworld): Prints Hello World on the standard output stream.

### BON
BON focuses on devices with non-volatile and volatile memories. This library allows to fully control memory usage and start-up sequences on devices with limited memory resources.

**Available Examples**:

* [com.microej.example.foundation.bon.immortals](com.microej.example.foundation.bon.immortals): Shows how to manipulate the immortals.
* [com.microej.example.foundation.bon.immutables](com.microej.example.foundation.bon.immutables): Shows how to manipulate the immutables.


## Communicate with other hardwares

### ECOM
ECOM libraries provides a standard communication over UART.

**Available Examples**:
* [com.microej.example.foundation.ecom.hotplug](com.microej.example.foundation.ecom.hotplug): Shows how to listen on plug/unplug of dynamic ComConnections and shows their properties.
* [com.microej.example.foundation.ecom.writer](com.microej.example.foundation.ecom.writer): Shows how to write some bytes to a CommConnection.
* [com.microej.example.foundation.ecom.reader](com.microej.example.foundation.ecom.reader): Shows how to read some bytes from a CommConnection.

### HAL
HAL libraries presents an abstraction of the communication with the hardware.

**Available Examples**:
* [com.microej.example.foundation.hal.gpio](com.microej.example.foundation.hal.gpio): Shows how to use gpio.


## Design a user interface

### MicroUI
MicroUI provides the minimal cornerstone for quick construction of advanced, portable and user-friendly applications for a wide and heterogeneous range of devices with just-what-is-needed resources.

**Available Examples**:
* [com.microej.example.foundation.microui.antialiased](com.microej.example.foundation.microui.antialiased): Shows how to use anti-aliased shapes.
* [com.microej.example.foundation.microui.font](com.microej.example.foundation.microui.font): Shows how to create and use a font.
* [com.microej.example.foundation.microui.helloworld](com.microej.example.foundation.microui.helloworld): Shows how to print a string on a display.
* [com.microej.example.foundation.microui.image](com.microej.example.foundation.microui.image): Shows how to create and use images.
* [com.microej.example.foundation.microui.input](com.microej.example.foundation.microui.input): Shows how to listen the MicroUI input events.
* [com.microej.example.foundation.microui.led](com.microej.example.foundation.microui.led): Shows how to use the LEDs.
* [com.microej.example.foundation.microui.movableimage](com.microej.example.foundation.microui.movableimage): Shows how to create and use a movable image.
* [com.microej.example.foundation.microui.mvc](com.microej.example.foundation.microui.mvc): Shows how to create and use a MVC design pattern.
* [com.microej.example.foundation.microui.out](com.microej.example.foundation.microui.out): Shows how to redirect the standard SystemOut to the display.
* [com.microej.example.foundation.microui.transform](com.microej.example.foundation.microui.transform): Shows how to use MicroUI transform.

### MWT
MWT is a widget toolkit designed for a wide range of devices, including embedded devices with limited processing power.

**Available Examples**:
* [com.microej.example.foundation.mwt.helloworld](com.microej.example.foundation.mwt.helloworld): Shows a simple hello world using MWT.
* [com.microej.example.foundation.mwt.mvc](com.microej.example.foundation.mwt.mvc): Shows how to create and use a MVC design pattern.

### NLS
NLS provides tools to use localized strings.

**Available Examples**:
* [com.microej.example.foundation.nls.helloworld](com.microej.example.foundation.nls.helloworld): Shows how to print a localized string on a display.


## Communicate with the world

### NET
NET is a lightweight Java library dedicated to networking applications. It supports stream (TCP/IP) and datagram (UDP) socket connection APIs.

**Available Examples**:
* [com.microej.example.foundation.net.echo](com.microej.example.foundation.net.echo): Shows a simple echo server.
* [com.microej.example.foundation.net.helloworld](com.microej.example.foundation.net.helloworld): Shows a simple helloworld using NET.

## Store data

### FS
FS is a library to access multiple storage devices (in and out data streams) through a simple file system API.

**Available Examples**:
* [com.microej.example.foundation.fs.helloworld](com.microej.example.foundation.fs.helloworld): Creates a list of folders, adds some files and deletes them all.

Examples Eclasspath

This project gather all the examples of eclasspath.
EXAMPLE for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
23 January 2017
# Overview

This project gather all the examples of eclasspath. Eclasspath contains Java runtime libraries.

Note that to run them on board:

* If you are using MicroEJ SDK:
 * You need a supported board (see http://developer.microej.com/index.php?resource=JPF for a list of supported boards using MicroEJ SDK evaluation version)
 * And the associated platform binary .jpf file (retrieve it from the previous link and import it into MicroEJ SDK)

* If you are using MicroEJ Studio:
 * You need to convert them from standalone applications to sandboxed applications.
 * Follow the [How-To convert a standalone app into a sandboxed app](https://github.com/MicroEJ/How-To/tree/master/StandaloneToSandboxed) guide.
 
# Details
## logging
**Available Examples**:
* [com.microej.examples.eclasspath.logging](com.microej.examples.eclasspath.logging) : Writes in the logger.

Arabic Font (Standalone)

Example that shows how to use arabic fonts.
EXAMPLE for UI
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Last updated:
23 January 2017
# Overview
This example shows how to use the arabic fonts.

# Usage

1. First of all, you must have a font containing the characters of the unicode block called `Arabic Presentation Forms-B` i.e. the range `0xFE70-0xFEFF`.

2. Then your strings must be formed with the characters of this range too (as you can see with the strings of HowToUseArabicFontDisplayable.TITLE and HowToUseArabicFontDisplayable.AVAILABLE_TEXTS, /u0020 corresponds to the space character).
3. Finally the order of the strings must be reversed.

## Run on MicroEJ Simulator
1. Right Click on the project
1. Select **Run as -> MicroEJ Application**
1. Select your platform 
1. Press **Ok**

## Run on device
### Build
1. Right Click on [HowToUseArabicFont.java](HowToUseArabicFont/src/main/java/com/microej/example/arabicfont/HowToUseArabicFont.java)
1. Select **Run as -> Run Configuration**
1. Select **MicroEJ Application** configuration kind
1. Click on **New launch configuration** icon
1. Select **Execute on Device**
1. Select **Build & Deploy**
1. Go to **Execution** tab
	* Select your platform 
1. Press **Apply**
1. Press **Run**
1. Copy the generated `.out` file path

### Flash
1. Use the appropriate flashing tool.

# Requirements
* MicroEJ Studio or SDK 4.0 or later
* A platform with at least:
	* EDC-1.2 or higher
	* MICROUI-2.0 or higher
	
## Dependencies
_All dependencies are retrieved transitively by Ivy resolver_.

# Source
N/A

# Restrictions
None.

Using IOT Libraries APIs (Sandboxed)

This project gathers simple Sandboxed application using net libraries.
EXAMPLE for IOT
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
23 January 2017
# Overview
This project gathers simple sandboxed applications using net libraries.

## Requirements
* MicroEJ Studio or SDK 4.0 or later

# Usage
Each subfolder contains a distinct IOT application.

# Changes
- See the change log file [CHANGELOG.md](CHANGELOG.md) located at the root of this repository.

# License
- See the license file [LICENSE.md](LICENSE.md) located at the root of this repository.

Components Hello World

This project illustrates the ej.components library.
EXAMPLE for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
23 January 2017
# Overview
This project illustrates the _ej.library.runtime.components_ library.
It contains a service implementation and two bundles: the service publisher and the service user.

## Project structure
- [com.microej.example.components.helloworld.service](com.microej.example.components.helloworld.service) 
	- [[â¦]/Hello.java](com.microej.example.components.helloworld.service/src/main/java/com/microej/example/components/helloworld/service/Hello.java): the interface defining the service.

- [com.microej.example.components.helloworld.publisher](com.microej.example.components.helloworld.publisher)
	- [[â¦]/HelloPrint.java](com.microej.example.components.helloworld.publisher/src/main/java/com/microej/example/components/helloworld/publisher/HelloPrint.java) : an implementation of the service.
	- [[â¦]/HelloPublisherBundle.java](com.microej.example.components.helloworld.publisher/src/main/java/com/microej/example/components/helloworld/publisher/HelloPublisherBundle.java) : the bundle publishing the service implementation.
	
- [com.microej.example.components.helloworld.user](com.microej.example.components.helloworld.user)
	- [[â¦]/SayHelloToEveryone.java](com.microej.example.components.helloworld.user/src/main/java/com/microej/example/components/helloworld/user/SayHelloToEveryone.java) : an application that uses the service.
	- [[â¦]/HelloUserBundle.java](com.microej.example.components.helloworld.user/src/main/java/com/microej/example/components/helloworld/user/HelloUserBundle.java) : the bundle retrieving the service.
	
- [com.microej.example.components.helloworld](com.microej.example.components.helloworld) : the startup (main) of the example.
	- [src/main/java](com.microej.example.components.helloworld/src/main/java) : Java sources.
	- [src/main/resources](com.microej.example.components.helloworld/src/main/resources) : the properties and bundles list.

  
## Usage
See [README.md](com.microej.example.components.helloworld/README.md).

# Requirements
See [README.md](com.microej.example.components.helloworld/README.md).

# Source
See [README.md](com.microej.example.components.helloworld/README.md).

# Restrictions
See [README.md](com.microej.example.components.helloworld/README.md).

# Changes
See [CHANGELOG.md](CHANGELOG.md).

## License
See [LICENSE.md](LICENSE.md).

S7G2DK Platform Reference Implementation (Single-app, GCC, ThreadX, Developer Preview)

PREVIEW
The Developer Preview of the Platform Reference Implementation for the S7G2DK board.
JPF_RENESAS for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Technical Ref.: PRI-EVAL-S7G2DK-SGT-FI7B4
Last updated:
18 January 2017
# Copyright 2015-2016 IS2T. All rights reserved.
# IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.

MicroEJ BSP example for Renesas Synergy S7G2DK (E2studio/ThreadX)
============================================================

# Delivery 

Folders listing:
 * platforms: contains MicroEJ Platform Architecture and Platform Library.
 * platforms_examples: contains the MicroEJ Platform Examples zip file.

# Prerequisites
 * Java7
 * MicroEJ version 4.0 or later
 * E2Studio v5.0.0.043

# How to import MicroEJ Platforms (Platform Architecture with '*.xpf' extension and MicroEJ Platform Libraries with extension '*.xpfp')

Open your MicroEJ. Click on "Window->Preferences->MicroEJ". If no MicroEJ repository is set, select a file system folder to store your MicroEJ platforms repository with the "Browse" button. 
Then, go to "MicroEJ->Java Platform Architectures" and click on import.
Select "Select directory" and set the path of the "platforms" folder of the delivery. Select the UI pack and select the "I agree and accept..." checkbox. Click on the "Finish" button. Your MicroEJ platforms are now imported in your MicroEJ. You could see it in "MicroEJ->Java Platforms Architectures" view.


# How to import the MicroEJ Platform Examples

Open your MicroEJ. Click on "File->Import...->MicroEJ->Examples" and select the MicroEJ Platform Examples zip file with the Browse button.
New Items appears in the list. Select all items and click on "Finish". Your MicroEJ Platform Examples are now imported in your MicroEJ.


# Start a new MicroEJ Platform Example

Click on "File->New->MicroEJ->Java Platform" and then on "Next" button. Select your MicroEJ Platform Architecture with "Browse" button. Once selected, some examples appears in examples list.
Select "Platform->S7G2DK (ThreadX)->Full" example and click on "Next". Then, enter your example informations and click on "Finish" button. Projects has been added in your MicroEJ workspace: 
 * [my-example]-bsp 
 * [my-example]-configuration
 * [my-example]-fp
 * [my-example]-microuiGeneratorExtension

 
# How to create your MicroEJ Platform associated to the MicroEJ Platform Example for the Renesas Synergy S7G2DK (E2Studio/ThreadX)

Prerequisites:
 * import the MicroEJ Platforms and MicroEJ Platform Libraries 
 * import the MicroEJ Platform Examples
 * start a new MicroEJ Platform Example
 
Open the "[my-example]-configuration" project and click on the "full.platform" file. A new tab is now opened in your MicroEJ. Then, click on the "Build Platform" in the "Build" category. Your platform is building. Once finished, a new platform project appears in your MicroEJ workspace ([my-example]-1.0.0). You could now launch Java application on this platform. 

S7G2DK Platform Binary (Single-app, Developer Preview)

PREVIEW
The Developer Preview of the Platform Binary for the S7G2DK board.
JPF_RENESAS for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Technical Ref.: PTF-EVAL-S7G2DK-SGT-FI7B4
Last updated:
18 January 2017

STM32429I-EVAL Platform Reference Implementation (Multi-app, Keil, FreeRTOS)

The Platform Reference Implementation for the STM32429I-EVAL board.
JPF_ST for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Technical Ref.: PRI-EVAL-STM32F429IEVAL-MKF-UGI57
Last updated:
18 January 2017
<!--
	Copyright 2015-2016 IS2T. All rights reserved.
	For demonstration purpose only
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Build MicroEJ Platform Reference Implementation for STM32F429I-EVAL

## Delivery 

Folders listing:
 * `platformArchitecture`: contains MicroEJ Platform Architecture and Platform Architecture Extensions.
 * `platformSource`: contains a zip file with the MicroEJ Platform Reference Implementation sources.

## Prerequisites

 * Java7 or higher
 * MicroEJ SDK 4.0 or later
 * Keil uVision 5.18

## Import MicroEJ Platform Architecture (Platform Architecture and MicroEJ Architecture Extensions)

 * Open MicroEJ SDK. 
 * Click on `Window > Preferences > MicroEJ`. If no MicroEJ SDK repository is set, select a file system directory to store the MicroEJ SDK repository with the `Browse` button. 
 * Go to `MicroEJ > Architectures` and click on `Import...`.
 * Select `Select directory` and set the path of the `platformsArchitecture` folder of the delivery. Select all elements and check `I agree and accept...` checkbox. 
 * Click on the `Finish` button. The MicroEJ platforms architectures are now imported in the MicroEJ SDK repository. The menu `MicroEJ > Architectures` has been updated.

## Import MicroEJ Platform Reference Implementation Sources

 * Open MicroEJ SDK. 
 * Click on `File > Import... > MicroEJ > Examples and Platform Reference Implementations`
 * Click on `Next`
 * Check the radio button `Select file`
 * Select the MicroEJ Platform Reference Implementation sources zip file with the `Browse` button. 
 * New items appears in the list. Select all items and click on `Finish`. 

The MicroEJ Platform Reference Implementation sources are now imported in the MicroEJ SDK repository.

## Build MicroEJ Platform Reference Implementation 

 * Click on `File > New > MicroEJ > Platform`.
 * Select your MicroEJ Platform Architecture with `Browse` button. Once selected, some platform reference implementation appear in a list.
 * Select `Platform > STM32F429I-EVAL > WithoutSSL` platform reference implementation.
 * Click on `Next`. 
 * Enter some platform reference implementation meta data 
 * Click on `Finish` button. Some projects have been added in your MicroEJ SDK workspace.
 * A readme file has been opened, follow the new instructions.

STM32429I-EVAL Platform Binary (Multi-app, Keil, FreeRTOS)

The Platform Binary for the STM32429I-EVAL board.
JPF_ST for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Technical Ref.: PTF-EVAL-STM32F429IEVAL-MKF-UGI57
Last updated:
18 January 2017

STM32F746-DISCO Platform Reference Implementation (Multi-app, Keil, FreeRTOS)

The Platform Reference Implementation for the STM32F746-DISCO board.
JPF_ST for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Technical Ref.: PRI-EVAL-STM32F746DISCO-MKF-YQ8LU
Last updated:
18 January 2017
<!--
	Copyright 2015-2016 IS2T. All rights reserved.
	For demonstration purpose only
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Build MicroEJ Platform Reference Implementation for STM32F746G-DISCO

## Delivery 

Folders listing:
 * `platformArchitecture`: contains MicroEJ Platform Architecture and Platform Architecture Extensions.
 * `platformSource`: contains a zip file with the MicroEJ Platform Reference Implementation sources.

## Prerequisites

 * Java7 or higher
 * MicroEJ SDK 4.0 or later
 * Keil uVision 5.18

## Import MicroEJ Platform Architecture (Platform Architecture and MicroEJ Architecture Extensions)

 * Open MicroEJ SDK. 
 * Click on `Window > Preferences > MicroEJ`. If no MicroEJ SDK repository is set, select a file system directory to store the MicroEJ SDK repository with the `Browse` button. 
 * Go to `MicroEJ > Architectures` and click on `Import...`.
 * Select `Select directory` and set the path of the `platformsArchitecture` folder of the delivery. Select all elements and check `I agree and accept...` checkbox. 
 * Click on the `Finish` button. The MicroEJ platforms architectures are now imported in the MicroEJ SDK repository. The menu `MicroEJ > Architectures` has been updated.

## Import MicroEJ Platform Reference Implementation Sources

 * Open MicroEJ SDK. 
 * Click on `File > Import... > MicroEJ > Examples and Platform Reference Implementations`
 * Click on `Next`
 * Check the radio button `Select file`
 * Select the MicroEJ Platform Reference Implementation sources zip file with the `Browse` button. 
 * New items appears in the list. Select all items and click on `Finish`. 

The MicroEJ Platform Reference Implementation sources are now imported in the MicroEJ SDK repository.

## Build MicroEJ Platform Reference Implementation 

 * Click on `File > New > MicroEJ > Platform`.
 * Select your MicroEJ Platform Architecture with `Browse` button. Once selected, some platform reference implementation appear in a list.
 * Select `Platform > STM32F746G-DISCO > Evaluation` platform reference implementation.
 * Click on `Next`. 
 * Enter some platform reference implementation meta data 
 * Click on `Finish` button. Some projects have been added in your MicroEJ SDK workspace.
 * A readme file has been opened, follow the new instructions.

STM32F746-DISCO Platform Binary (Multi-app, Keil, FreeRTOS)

The Platform Binary for the STM32F746-DISCO board.
JPF_ST for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Technical Ref.: PTF-EVAL-STM32F746DISCO-MKF-YQ8LU
Last updated:
18 January 2017

FRDM-KL46Z Platform Reference Implementation (Single-app, GCC, Developer Preview)

PREVIEW
The Developer Preview of the Platform Reference Implementation for the FRDM-KL46Z board.
JPF_NXP for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Technical Ref.: PRI-EVAL-FRDMKL46Z-SGB-NBOSE
Last updated:
25 October 2016

FRDM-KL46Z Platform Binary (Single-app, Developer Preview)

PREVIEW
The Developer Preview of the Platform Binary for the FRDM-KL46Z board.
JPF_NXP for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Technical Ref.: PTF-EVAL-FRDMKL46Z-SGB-NBOSE
Last updated:
25 October 2016

STM3220G-EVAL Platform Binary (Single-app, Developer Preview)

PREVIEW
The Developer Preview of the Platform Binary for the STM3220G-EVAL board.
JPF_ST for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Technical Ref.: PTF-EVAL-STM3220G-SKF-WNTBV
Last updated:
25 October 2016

STM3220G-EVAL Platform Reference Implementation (Single-app, IAR, FreeRTOS, Developer Preview)

PREVIEW
The Developer Preview of the Platform Reference Implementation for the STM3220G-EVAL board.
JPF_ST for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Technical Ref.: PRI-EVAL-STM3220G-SIF-9WJNQ
Last updated:
25 October 2016

STM3220G-EVAL Platform Reference Implementation (Single-app, Keil, FreeRTOS, Developer Preview)

PREVIEW
The Developer Preview of the Platform Reference Implementation for the STM3220G-EVAL board.
JPF_ST for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Technical Ref.: PRI-EVAL-STM3220G-SKF-WNTBV
Last updated:
25 October 2016

How-to use the MicroUI Library

This library contains simple examples to understand how to use the main MicroUI library APIs.
HOWTO for UI
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
7 October 2016
<!--
	Markdown
	Copyright 2016 IS2T. All rights reserved.
	Use of this source code is governed by a BSD-style license that can be found at http://www.is2t.com/open-source-bsd-license/.
-->

# Overview
This library contains simple examples to understand how to use the main MicroUI library APIs. It is recommended to study them in the following order :


- [com.microej.howto.microui.drawing.Primitives](/MicroUI-Get-Started/src/main/java/com/microej/howto/microui/drawing/Primitives.java)

![Primitives](screenshots/Primitives.png)

- [com.microej.howto.microui.drawing.PrimitivesAntiAliased](/MicroUI-Get-Started/src/main/java/com/microej/howto/microui/drawing/PrimitivesAntiAliased.java)

![PrimitivesAntiAliased](screenshots/PrimitivesAntiAliased.png)

- [com.microej.howto.microui.font.Text](/MicroUI-Get-Started/src/main/java/com/microej/howto/microui/font/Text.java)

![Text](screenshots/Text.png)

- [com.microej.howto.microui.font.PictosWithCustomFont](/MicroUI-Get-Started/src/main/java/com/microej/howto/microui/font/PictosWithCustomFont.java)

![PictosWithCustomFont](screenshots/PictosWithCustomFont.png)

- [com.microej.howto.microui.image.TransparentImages](/MicroUI-Get-Started/src/main/java/com/microej/howto/microui/image/TransparentImages.java)

![TransparentImages](screenshots/TransparentImages.png)

- [com.microej.howto.microui.image.FlippedImages](/MicroUI-Get-Started/src/main/java/com/microej/howto/microui/image/FlippedImages.java)

![FlippedImages](screenshots/FlippedImages.png)

- [com.microej.howto.microui.image.RotatedImages](/MicroUI-Get-Started/src/main/java/com/microej/howto/microui/image/RotatedImages.java)

![RotatedImages](screenshots/RotatedImages.png)

- [com.microej.howto.microui.image.ScaledImages](/MicroUI-Get-Started/src/main/java/com/microej/howto/microui/image/ScaledImages.java)

![ScaledImages](screenshots/ScaledImages.png)

- [com.microej.howto.microui.image.TilingWithImages](/MicroUI-Get-Started/src/main/java/com/microej/howto/microui/image/TilingWithImages.java)

![TilingWithImages](screenshots/TilingWithImages.png)

- [com.microej.howto.microui.image.DeformedImages](/MicroUI-Get-Started/src/main/java/com/microej/howto/microui/image/DeformedImages.java)

![DeformedImages](screenshots/DeformedImages.png)

- [com.microej.howto.microui.events.InputEvents](/MicroUI-Get-Started/src/main/java/com/microej/howto/microui/events/InputEvents.java)

![InputEvents](screenshots/InputEvents.png)

- [com.microej.howto.microui.animation.AnimationSampleWithFullRepaint](/MicroUI-Get-Started/src/main/java/com/microej/howto/microui/animation/AnimationSampleWithFullRepaint.java)

- [com.microej.howto.microui.animation.AnimationSampleWithFlyingImage](/MicroUI-Get-Started/src/main/java/com/microej/howto/microui/animation/AnimationSampleWithFlyingImage.java)


Note that the same set of resources (images and fonts) is used across all of the examples.

# Usage
For each example:
## Run on MicroEJ Simulator
1. Right Click on the example to run `.java` file
2. Select **Run as -> MicroEJ Application**
3. Select your platform 
4. Press **Ok**


## Run on device
### Build
1. Right Click on the example to build `.java` file
2. Select **Run as -> Run Configuration** 
3. Select **MicroEJ Application** configuration kind
4. Click on **New launch configuration** icon
5. In **Execution** tab
	1. In **Target** frame, in **Platform** field, select a relevant platform (but not a virtual device)
	2. In **Execution** frame
		1. Select **Execute on Device**
		2. In **Settings** field, select **Build & Deploy**
6. Press **Apply**
7. Press **Run**
8. Copy the generated `.out` file path
	
# Requirements
* MicroEJ Studio or SDK 4.0 or later
* A platform with at least:
	* EDC-1.2 or higher
	* BON-1.2 or higher
	* MICROUI-2.0 or higher

# Dependencies
_All dependencies are retrieved transitively by Ivy resolver_.

# Credits


| <p align="center">Font</p> | <p align="center">Author</p> | <p align="center">License</p> |
| --- | :---: | --- |
| Font Awesome | Dave Gandy <br/> http://fontawseome.io  | [SIL OFL 1.1 license - http://scripts.sil.org/OFL](/MicroUI-Get-Started/src/main/resources/fonts/OFL.txt)|
| Sans | Adobe |[SIL Open Font License.txt](/MicroUI-Get-Started/src/main/resources/fonts/Source - SIL Open Font License.txt)|


# Source
N/A

# Restrictions
None.

How-to use the Widget Library

This library contains simple examples to understand how to use the main Widgets library APIs.
HOWTO for UI
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
16 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains simple examples to understand how to use the main Widgets library APIs. It is recommended to study them in the following order :

- [com.microej.howto.mwt.colors.Gradient](/Widgets-Get-Started/src/main/java/com/microej/howto/mwt/colors/Gradient.java)

![Gradient](screenshots/Gradient.png)


# Usage
For each example:
## Run on MicroEJ Simulator
1. Right Click on the example to run `.java` file
2. Select **Run as -> MicroEJ Application**
3. Select your platform 
4. Press **Ok**


## Run on device
### Build
1. Right Click on the example to build `.java` file
2. Select **Run as -> Run Configuration** 
3. Select **MicroEJ Application** configuration kind
4. Click on **New launch configuration** icon
5. In **Execution** tab
	1. In **Target** frame, in **Platform** field, select a relevant platform (but not a virtual device)
	2. In **Execution** frame
		1. Select **Execute on Device**
		2. In **Settings** field, select **Build & Deploy**
6. Press **Apply**
7. Press **Run**
8. Copy the generated `.out` file path
	
# Requirements
* MicroEJ Studio or SDK 4.0 or later
* A platform with at least:
	* EDC-1.2 or later
	* BON-1.2 or later
	* MICROUI-2.0 or later
	* MWT-2.1 or later

* Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.ui" name="widget" rev="2.0.0-alpha.10"/>`


# Dependencies
_All dependencies are retrieved transitively by Ivy resolver_.


# Source
N/A

# Restrictions
None.

Protocol Buffers (protobuf)

Protocol buffers are a language-neutral, platform-neutral extensible mechanism for serializing structured data.
LIBRARY for IOT
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->
# Overview
This library contains the lite part of Google Protocol Buffer library for java.

## Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="com.google" name="protobuf" rev="2.5.0"/>`

And add the following option into your *.proto files :
> option optimize_for = LITE_RUNTIME;

# Requirements
  - EDC-1.2 or higher

## Dependencies
  - collections-1.0.0 or higher
  - collectionsutil-1.0.0 or higher
  - maps-1.0.0 or higher

# Source

This project was created with all the sources from protobuf-2.5.0.
We removed classes so as to only have the classes necessary for the lite version.
A few minors changes were made in the remaining classes to make it compile.
src contains these classes and the missing classes in EDC / Eclasspath

Differences between original sources and theses source of Protocol Buffer:
- ByteString.toString() has been modified to avoid String.format() (twice)
- GeneratedMessageLite.readResolve() has been commented out to avoid reflection on methods

## Restrictions

B-ON (Foundation Library API)

B-ON API allows better memory management of Java Objects.
LIBRARY for CORE
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2012-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains classes and interfaces stubs of Beyond Profile API (ESR001).

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.api" name="bon" rev="1.+"/>`

# Requirements
  - EDC-1.0 or higher
 
# Dependencies
None.

# Source
N/A

# Restrictions
None.

ECOM (Foundation Library API)

The Embedded Communication framework API.
LIBRARY for COMM
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains classes and interfaces stubs of Embedded Communications API (ESR008).

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.api" name="ecom" rev="1.+"/>`

# Requirements
  - EDC-1.2 or higher
 
# Dependencies
None.

# Source
N/A

# Restrictions
None.

ECOM-COMM (Foundation Library API)

The Embedded UART/Serial Communication API.
LIBRARY for COMM
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains classes and interfaces stubs of Embedded Communications API (ESR008).

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.api" name="ecom-comm" rev="1.+"/>`

# Requirements
  - EDC-1.2 or higher
  - ECOM-1.1 or higher
 
# Dependencies
None.

# Source
N/A

# Restrictions
None.

EDC (Foundation Library API)

The Core Runtime API.
LIBRARY for CORE
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2012-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains classes and interfaces stubs of Embedded Device Configuration API (ESR021).

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.api" name="edc" rev="1.+"/>`

# Requirements
None.

# Dependencies
None.

# Source
N/A

# Restrictions
None.

FS (Foundation Library API)

The File System API.
LIBRARY for FILEDATA
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains classes and interfaces stubs of File System API (ESR025).

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.api" name="fs" rev="2.+"/>`

# Requirements
  - EDC-1.2 or higher
 
# Dependencies
None.

# Source
N/A

## Restrictions
None.

HAL (Foundation Library API)

The HAL (Hardware Abstraction Layer) API.
LIBRARY for IO
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains classes and interfaces stubs of Hardware Abstraction Layer API (ESR028).

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.api" name="hal" rev="1.+"/>`

# Requirements
  - EDC-1.2 or higher

# Dependencies
None.

# Source
N/A

# Restrictions
None.

KF (Foundation Library API)

The Kernel & Feature API.
LIBRARY for STORE
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2012-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains classes and interfaces stubs of Kernel & Features API (ESR020).

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.api" name="kf" rev="1.+"/>`

# Requirements
  - EDC-1.2 or higher

# Dependencies
None.

# Source
N/A

# Restrictions
None.

MicroUI (Foundation Library API)

The Micro User Interface API.
LIBRARY for UI
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains classes and interfaces stubs of Micro User Interface API (ESR002).

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.api" name="microui" rev="2.+"/>`

# Requirements
  - EDC-1.2 or higher
  - BON-1.2 or higher

# Dependencies
None.

# Source
N/A

# Restrictions
None.

MWT (Foundation Library API)

The Micro Widget Toolkit API.
LIBRARY for UI
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains classes and interfaces stubs of Micro Widget Toolkit API (ESR011).

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.api" name="mwt" rev="2.+"/>`

# Requirements
  - EDC-1.2 or higher
  - BON-1.2 or higher
  - MICROUI-2.0 or higher

# Dependencies
None.

# Source
N/A

# Restrictions
None.

NET (Foundation Library API)

The Network API.
LIBRARY for NETSEC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2012-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains classes and interfaces stubs of NET API (ESR024).

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.api" name="net" rev="1.+"/>`

# Requirements
  - EDC-1.2 or higher

# Dependencies
None.

# Source
N/A

# Restrictions
None.

NLS (Foundation Library API)

The National Language Support API.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains classes and interfaces stubs of NLS API (ESR021).

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.api" name="nls" rev="2.+"/>`

# Requirements
  - EDC-1.2 or higher
  - BON-1.2 or higher

# Dependencies
None.

# Source
N/A

# Restrictions
None.

SNI (Foundation Library API)

The Safe/Simple Native Interface API.
LIBRARY for CORE
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2012-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains classes and interfaces stubs of Simple Native Interface API (ESR012).

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.api" name="sni" rev="1.+"/>`

# Requirements
  - EDC-1.0 or higher
  - BON-1.2 or higher
 
# Dependencies
None.

# Source
N/A

# Restrictions
None.

SP (Foundation Library API)

The Shielded Plug API.
LIBRARY for CORE
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains classes and interfaces stubs of Shielded Plug API (ESR014).

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.api" name="sp" rev="2.+"/>`

# Requirements
  - EDC-1.2 or higher
  - BON-1.2 or higher

# Dependencies
None.

# Source
N/A

# Restrictions
None.

SSL (Foundation Library API)

The Secure Socket Layer API.
LIBRARY for NETSEC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains classes and interfaces stubs of SSL API (ESR029).

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.api" name="ssl" rev="2.+"/>`

# Requirements
  - EDC-1.2 or higher
  - NET-1.0 or higher

# Dependencies
None.

# Source
N/A

## Restrictions
None.

Eclasspath Bitset

java.util.BitSet implementation.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains the implementation of java.util.BitSet.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="bitset" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or later

# Dependencies
None.

# Source
  - Open JDK 8u20

# Restrictions
  - Removed ByteBuffer and LongBuffer wrapping.
  - Removed serialization support.
  - Removed IntStream support.

Eclasspath BufferedStreams

Buffered Streams implementation.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains the implementation of Buffered streams.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="bufferedstreams" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or later

# Dependencies
None.

# Source
  - Open JDK 8u20

# Restrictions
  - Removed `java.io.BufferedReader.lines()`
  - No atomic modification of `java.io.BufferedInputStream.close()`

Eclasspath Collections

List, Set, Queue and Map abstract classes and interfaces.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains abstract classes and interfaces for implementing List, Set, Queue and Map.

## Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="collections" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or higher

# Dependencies
None.

# Source
  - Open JDK 7u65

# Restrictions
None.

Eclasspath CollectionsUtil

Collections, Arrays and Objects and some Sort algorithms implementations.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains the implementation of Collections, Arrays and Objects and some Sort algorithms.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="collectionsutil" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or higher

# Dependencies
  - ej.eclasspath.collections
  - ej.eclasspath.queues
  - ej.eclasspath.lists

# Source
  - Open JDK 7u65

# Restrictions
  - Removed Arrays.copyOf

Eclasspath Maps

java.util.Map implementations.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains some implementations of java.util.Map.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="maps" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or higher

# Dependencies
  - ej.eclasspath-collections
  - ej.eclasspath-collectionsutil

# Source
  - Open JDK 8u20

# Restrictions
  - Remove java.util.Spliterator references.
  - Remove serialization support.

Eclasspath ByteBuffer

ByteBuffer (and all its derived types such as CharBuffer, LongBuffer...) implementations.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains implementation of ByteBuffer and all its derived types such as CharBuffer, LongBuffer, ...

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="bytebuffer" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or later
  - BON 1.2 or later

# Dependencies
None.

# Source
  - Open JDK 8u20

# Restrictions
  - Remove java.util.Spliterator references.
  - Remove MappedByteBuffer.
  - Remove direct allocation.

Eclasspath Executor

java.util.concurrent interfaces.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains all interfaces for the implementation of the java.util.concurrent.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="executor" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or later

# Dependencies
None.

# Source
  - Open JDK 7u65

# Restrictions
None.

Eclasspath HTTPClient

HTTP client implementation.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains the implementation of an HTTP client.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="httpclient" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or higher
  - NET 1.0 or higher

# Dependencies
  - ej.eclasspath-bufferedstreams
  - ej.eclasspath-collections
  - ej.eclasspath-collectionsutil
  - ej.eclasspath-url
  - ej.eclasspath-stringtokenizer

# Source
  - Open JDK 8u20

# Restrictions
  - Removed java.text.DateFormat dependency APIs
  - Removed java.net.Proxy dependency and proxy tunneling connection
  - Removed traffic capture
  - Removed response caching
  - Removed authentication management
  - Removed restricted headers support
  - Removed cookie management
  - Removed keep-alive management
  - Removed cache request management
  - Removed internal MeteredStream and ProgressSource support

Eclasspath HTTPSClient

HTTPS client implementation.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains the implementation of an HTTPS client.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="httpsclient" rev="1.+"/>`
	
# Requirements
_List of required libraries on the targeted platform:_
  - EDC 1.2 or higher
  - NET 1.0 or higher
  - SSL 1.0 or higher

# Dependencies
  - ej.eclasspath-httpclient
  - ej.eclasspath-bufferedstreams
  - ej.eclasspath-collections
  - ej.eclasspath-collectionsutil
  - ej.eclasspath-url
  - ej.eclasspath-stringtokenizer

# Source
  - Open JDK 8u20

# Restrictions
  - Removed java.net.Proxy dependency and proxy tunneling connection
  - Removed response caching
  - Removed cache request management
  - Removed certificates and keys management
  - Removed server identity checking out of SSLSocket
  - Removed javax.net.ssl.HostnameVerifier dependency

Eclasspath Lists

java.util.List implementations.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains some implementation of java.util.List.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="lists" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or higher

# Dependencies
  - ej.eclasspath-collections

# Source
  - Open JDK 8u20

# Restrictions
None.

Eclasspath Logging

Loggers framework and implemenation.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains some .

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="logging" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or later

# Dependencies
None.

# Source
  - Open JDK 8u20

# Restrictions
None.

Eclasspath PipedStreams

Piped streams implementations.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains the implementation of Piped streams.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="pipedstreams" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or higher

# Dependencies
None.

# Source
  - Open JDK 8u40

## Restrictions
None.

Eclasspath PrintWriter

java.io.PrintWriter implementation.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains the implementation of java.io.PrintWriter.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="printwriter" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or higher

## Dependencies
None.
	
# Source
  - Open JDK 8u20

## Restrictions
None.

Eclasspath Properties

java.util.Properties implementation.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains the implementation of java.util.Properties.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="properties" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or higher

# Dependencies
  - ej.eclasspath-bufferedstreams
  - ej.eclasspath-printwriter

# Source
  - Open JDK 8u20

# Restrictions
  - Removed printf formatting.

Eclasspath Queues

java.util.Queue implementations.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains some implementations of java.util.Queue.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="queues" rev="1.+"/>`

# Requirements
  - EDC 1.2 or higher

# Dependencies
  - ej.eclasspath-collections

# Source
  - Open JDK 7u65

# Restrictions
  - Removed serialization support
  - Removed cloning operations and dynamically typesafe collection wrappers

Eclasspath Sets

java.util.Set implementations.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains some implementations of java.util.Set.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="sets" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or later

# Dependencies
_All dependencies are retrieved transitively by Ivy resolver_.

# Source
  - Open JDK 8u20

# Restrictions
  - Remove java.util.Spliterator references.
  - Remove serialization support.
  - Remove the package private constructor only used by LinkedHashSet.

Eclasspath SocketFactory

SocketFactory and ServerSocketFactory implementation.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains the implementation of SocketFactory and ServerSocketFactory.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="socketfactory" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or later
  - NET 1.0 or later

# Dependencies
None.

# Source
  - Open JDK 8u20

# Restrictions
None.

Eclasspath StringTokenizer

java.util.StringTokenizer implementation.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains the implementation of java.util.StringTokenizer.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="stringtokenizer" rev="1.+"/>`

# Requirements
  - EDC 1.2 or later

# Dependencies
None.

# Source
  - Open JDK 8u20

# Restrictions
  - Removed code point support

Eclasspath URI

java.net.URI implementation.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains the implementation of java.net.URI.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="uri" rev="1.+"/>`

# Requirements
  - EDC 1.2 or later

# Dependencies
None.

# Source
  - Open JDK 8u20

# Restrictions
  - Removed serialization support
  - Removed java.net.URI.toAsciiString to avoid Normalizer dependency
  - Removed java.net.URI.toURL to avoid URL dependency

Eclasspath URL

java.net.URL implementation.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains the implementation of java.net.URL.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="url" rev="1.+"/>`

# Requirements
  - EDC 1.2 or later

# Dependencies
_All dependencies are retrieved transitively by Ivy resolver_.

# Source
  - Open JDK 8u20

# Restrictions
  - Removed serialization support
  - Removed java.net.URI dependency
  - Removed java.text.DateFormat dependency APIs
  - Removed dependency to Internet (two URLs with two host names targeting the same IP address are not equals)
  - Removed guess Content-Type methods (java.net.URLConnection.guessContentTypeFromStream, java.net.URLConnection.guessContentTypeFromName)
  - Removed java.net.URLConnection.getPermission
  - Removed java.net.URLConnection ifModifiedSince support

Eclasspath URLUtil

URLEncoder and URLDecode implementation.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains the implementation of URLEncoder and URLDecoder.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.eclasspath" name="urlutil" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or later

# Dependencies
_All dependencies are retrieved transitively by Ivy resolver_.

# Source
  - Open JDK 8u20

# Restrictions
  - Approximation of Character.isLetter with : Character.isLowerCase or Character.isUpperCase.
  - No support for surrogate pairs.

Android Connectivity

Android Connectivity Utilities.
LIBRARY for NETSEC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains android connectivity utilities.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.iot" name="android.connectivity" rev="1.+"/>`

# Requirements
  - EDC-1.2 or higher

# Dependencies
None.

# Source
N/A

# Restrictions
None.
Connectivity Utilities.
LIBRARY for NETSEC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains connectivity utilities.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.util" name="exit" rev="1.+"/>`

# Requirements
  - EDC-1.2 or higher
  - BON-1.2 or higher
  - NET-1.2 or higher

# Dependencies
_All dependencies are retrieved transitively by Ivy resolver_.

# Source
N/A

# Restrictions
None.
RESTful services client.
LIBRARY for IOT
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
ej.rest is a tiny RESTful services client. 

## Features
- GET, POST, PUT, DELETE for text, JSON, binary
- Fluent-style API to follow hyperlinks easily
- Complex path queries for JSON (simple tests on fields with operators >,=,< and full boolean expressions (&&,||,!))
- Full support for multipart/form-data

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.iot" name="restclient" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or later
  - NET 1.0 or later

# Dependencies
_All dependencies are retrieved transitively by Ivy resolver_.

# Source
- Derived from http://beders.github.com/Resty

# Restrictions
None.

# Embedded constraints
Embedded execution environment has a limited amount of memory (RAM, Flash, etc.). Using Resty library in a such environment encourages the developer to precisely manage resources like sockets, files, etc.

Since HTTP 2.0, server defines keep-alive connections for every HTTP connection. When using Resty, developer has to take care of the number of opened sockets. In fact, many sockets can be opened at the same time and stay alive for a long time (keep-alive). To prevent having too much sockets opened, developers have to close the underlying HTTP connection of each REST call. The following code snippet shows how to correctly close such connection:

Resty allows to create access paths into a JSON object with a JSON query path. The parser of these expressions needs RAM buffers. Two different sizes can be configured:
	- The size of the buffers, through the property `ej.rest.jsonquerypath.buffersize`.
	- The expand size of the buffers, through the property `ej.rest.jsonquerypath.expandbuffersize`.

```java
Resty rest = new Resty();
try {
    // Do a REST call
    RawResource raw = this.rest.raw("http://my.url/data");
    // Close the underlying http connection
    raw.http().disconnect();
} catch (IOException e) {
    // something went horribly wrong
    e.printStackTrace();
}
```
Component-based programming library.
LIBRARY for CORE
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
 <!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
A component-based programming library.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.runtime" name="components" rev="3.+"/>`

# Requirements
  - EDC-1.2 or higher

# Dependencies
_All dependencies are retrieved transitively by Ivy resolver_.

# Source
N/A

# Restrictions
None.
Motion library, providing animated tasks and a set of defined motions.
LIBRARY for UI
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
A motion library, providing animated tasks and a set of defined motions 
(linear, elastic, bounce, etc.), useful for HMI animations.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.runtime" name="components" rev="3.+"/>`

# Requirements
  - EDC-1.2 or higher
  - BON-1.2 or higher

# Dependencies
None.

# Source
N/A

# Restrictions
None.
Widget library.
LIBRARY for UI
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains all that is necessary to create an HMI on MWT 2:
- a dynamic style resolution (_ej.style_),
- a set of widgets (_ej.widget_),
- a set of containers (_ej.container_),
- an animation framework (_ej.animation_),
- a navigation framework (_ej.navigation_),
- some color utilities (_ej.color_).

# Style
The style framework is used to customize a user interface.

A style is a set of attributes to apply to an element (spacing, coloring, font, size, etc.).

The stylesheet is augmented with rules: a selector associated with a partial style. The rules are ordered from the most specific to the least one. The resolution of an element style is done by applying the rules matching the element (in order), then inheriting a part of its parents style (recursively), then completing it by the default style. 

# Widgets
The widgets are graphical elements on which a style can be applied.

The framework contains a set of predefined widgets: label, image, button, toggle, radio, check, switch, text, slider, scrollbar, progress bar.

It is also possible to create its own widgets by subclassing StyledWidget.

# Containers
The containers are graphical elements on which a style can be applied and that can contain other elements (widgets or containers). Each container defines a policy to lay out its children.

The framework contains a set of predefined layout policies: canvas, dock, grid, list, scroll, split.

It is also possible to create its own layout policies by subclassing StyledComposite.

# Animation
The animation framework provides an animator that can schedule several animations at the same framerate.

# Navigation
The navigation framework provides the capability to navigate from one page to another and going back to pages history.

The pages are composed of widgets and containers. A page is represented by a URL.

A URL resolver is responsible for creating the pages from a URL.

A pages stack manages the history of pages. It can either keep the pages in cache or create it again while going back to history.

The navigation desktop associates a URL resolver and a pages stack to navigate between the pages. It may also animate the transition between the pages.

# Color
The color utilities provide some convenient functions to manipulate the colors.

The color helper manipulates (decompose, recompose) the color components red, green, blue.

The light helper computes and modifies the level of light in a color.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.ui" name="widget" rev="2.0.0-alpha.4"/>`
	
# Requirements
  - EDC 1.2 or later
  - BON 1.2 or later
  - MICROUI 2 or later
  - MWT 2 or later

# Dependencies
_All dependencies are retrieved transitively by Ivy resolver_.

# Source
N/A

# Restrictions
None.

Concurrent Executor

java.util.concurrent implementation.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains the implementation of java.util.concurrent.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.util" name="concurrent.executor" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or later

# Dependencies
_All dependencies are retrieved transitively by Ivy resolver_.

# Source
N/A

# Restrictions
None.
Exit utilities.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains exit utilities.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.util" name="exit" rev="1.+"/>`

# Requirements
  - EDC-1.2 or higher

# Dependencies
None.

# Source
N/A

# Restrictions
None.
Maps implementations.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains the implementation of maps implementations.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.util" name="util" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or later

# Dependencies
_All dependencies are retrieved transitively by Ivy resolver_.

# Source
N/A

# Restrictions
None.
Observer design pattern abstract classes.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains classes for the observer design pattern.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.util" name="observable" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or later
  - KF 1.3 or later

# Dependencies
None.

# Source
N/A

# Restrictions
None.
Activity Progress Monitoring implementation.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains classes for monitoring the progress of an activity.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.util" name="progress" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or later

# Dependencies
None.

# Source
N/A

# Restrictions
None.

Wadapps Framework

Multi-app development framework.
LIBRARY for STORE
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2015-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
This library contains classes for multi-app development.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="ej.library.util" name="observable" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or later
  - KF 1.3 or later

# Dependencies
_All dependencies are retrieved transitively by Ivy resolver_.

# Source
N/A

# Restrictions
None.
Paho MicroEJ Client for MQTT v3.
LIBRARY for IOT
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
Paho MicroEJ client for MQTT:
  - This is a fork of Paho: https://eclipse.org/paho/clients/java/ from commit 496f94a58a41557ba2401d4ba94bc099a75ba8ef (just after version 1.0.2).
  - Implements MQTT 3.1.1

# Setup
In addition of adding the library in your buildpath, you have to configure your launch.

## Dependency injection:
The library requires some implementations. It comes with default implementations but you can precise yours. 
To precise your own implementation you have to create a system property with the required interface as the key and the corresponding implementation as the value.
To define a system property see the section 6.1 of the MicroEJ Platform Architecture Reference Manual.
	
The library requires an implementation for the following interfaces:
  - org.eclipse.paho.client.mqttv3.MqttClientPersistence
  - org.eclipse.paho.client.mqttv3.internal.NetworkModuleFactory
  - org.eclipse.paho.client.mqttv3.internal.MessageCatalog
  - org.eclipse.paho.client.mqttv3.logging.InternalLoggerFactory
  - org.eclipse.paho.client.mqttv3.util.SystemProperties

For information about this interfaces see the corresponding javadoc.

example: org.eclipse.paho.client.mqttv3.MqttClientPersistence=org.eclipse.paho.client.mqttv3.persist.MemoryPersistence

The default implementations are defined in the `dependencyinjection.properties` file in the package `org.eclipse.paho.client.mqttv3.internal.dependencyinjection` of `mqttv3-microej-version.jar`.
	
In your launch, in the `Main` tab:
- add the chosen implementations in the `Required types` part.
- add the file containing the default implementations in the `Resources` part.

## Threads
Paho requires 4 threads to run. You have to adapt the value `Number of threads` of your launch to take this in account. You can modify this value by going in the `Configuration` tab in the `Target > Memory` section.

## UTF-8
Paho requires UTF-8 encoding to run. In the `Configuration` tab in the `EDC` section check `Embed UTF-8 encoding`.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="org.eclipse.paho" name="mqttv3-microej" rev="1.+"/>`

# Requirements
  - EDC-1.2 or higher

# Dependencies
_All dependencies are retrieved transitively by Ivy resolver_.

# Source
N/A

# Restrictions
None.

MQTT SSL Client

SSL Add-on for Paho MicroEJ Client for MQTT v3.
LIBRARY for IOT
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
Paho MicroEJ client for MQTT:
  - This is a fork of Paho: https://eclipse.org/paho/clients/java/ from commit 496f94a58a41557ba2401d4ba94bc099a75ba8ef (just after version 1.0.2).
  - Implements MQTT 3.1.1

# Setup
In addition of adding the library in your buildpath, you have to configure your launch.

## Dependency injection:
The library requires some implementations. It comes with default implementations but you can precise yours. 
To precise your own implementation you have to create a system property with the required interface as the key and the corresponding implementation as the value.
To define a system property see the section 6.1 of the MicroEJ Platform Architecture Reference Manual.
	
The library requires an implementation for the following interfaces:
  - org.eclipse.paho.client.mqttv3.MqttClientPersistence
  - org.eclipse.paho.client.mqttv3.internal.NetworkModuleFactory
  - org.eclipse.paho.client.mqttv3.internal.MessageCatalog
  - org.eclipse.paho.client.mqttv3.logging.InternalLoggerFactory
  - org.eclipse.paho.client.mqttv3.util.SystemProperties

For information about this interfaces see the corresponding javadoc.

example: org.eclipse.paho.client.mqttv3.MqttClientPersistence=org.eclipse.paho.client.mqttv3.persist.MemoryPersistence

The default implementations are defined in the `dependencyinjection.properties` file in the package `org.eclipse.paho.client.mqttv3.internal.dependencyinjection` of `mqttv3-microej-version.jar`.
	
In your launch, in the `Main` tab:
- add the chosen implementations in the `Required types` part.
- add the file containing the default implementations in the `Resources` part.

## Threads
Paho requires 4 threads to run. You have to adapt the value `Number of threads` of your launch to take this in account. You can modify this value by going in the `Configuration` tab in the `Target > Memory` section.

## UTF-8
Paho requires UTF-8 encoding to run. In the `Configuration` tab in the `EDC` section check `Embed UTF-8 encoding`.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="org.eclipse.paho" name="mqttv3-ssl-microej" rev="1.+"/>`

## SSL
The path to the certificate list is defined by the System property `org.eclipse.paho.certificates` by default it is `/certificates/paho.certificates.list`
Your application must embed this file. this file is a list of path to the certificates you want to use (one certificate per line).

# Requirements
  - EDC-1.2 or higher
  - SSL-2.0 or higher

# Dependencies
_All dependencies are retrieved transitively by Ivy resolver_.

# Source
N/A

# Restrictions
None.

JSON encoder/decoder

JSON encoder/decoder.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->

# Overview
JSON in Java [package org.json]

JSON is a light-weight, language independent, data interchange format.
See http://www.JSON.org/

The files in this package implement JSON encoders/decoders in Java.
It also includes the capability to convert between JSON and XML.

This is a reference implementation. There is a large number of JSON packages
in Java. Perhaps someday the Java community will standardize on one. Until
then, choose carefully.

The package compiles on Java 1.6-1.8.


JSONObject.java: The JSONObject can parse text from a String or a JSONTokener
to produce a map-like object. The object provides methods for manipulating its
contents, and for producing a JSON compliant object serialization.

JSONArray.java: The JSONObject can parse text from a String or a JSONTokener
to produce a vector-like object. The object provides methods for manipulating
its contents, and for producing a JSON compliant array serialization.

JSONTokener.java: The JSONTokener breaks a text into a sequence of individual
tokens. It can be constructed from a String, Reader, or InputStream.

JSONException.java: The JSONException is the standard exception type thrown
by this package.

JSONString.java: The JSONString interface requires a toJSONString method,
allowing an object to provide its own serialization.

JSONStringer.java: The JSONStringer provides a convenient facility for
building JSON strings.

JSONWriter.java: The JSONWriter provides a convenient facility for building
JSON text through a writer.

XML.java: XML provides support for converting between JSON and XML.

XMLTokener.java: XMLTokener extends JSONTokener for parsing XML text.

Unit tests are maintained in a separate project. Contributing developers can test 
JSON-java pull requests with the code in this project: 
https://github.com/stleary/JSON-Java-unit-test

Numeric types in this package comply with ECMA-404: The JSON Data Interchange Format 
(http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf) and 
RFC 7159: The JavaScript Object Notation (JSON) Data Interchange Format 
(https://tools.ietf.org/html/rfc7159#section-6). 
This package fully supports Integer, Long, and Double Java types. Partial support 
for BigInteger and BigDecimal values in JSONObject and JSONArray objects is provided 
in the form of get(), opt(), and put() API methods.


# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="org.json.me" name="json" rev="1.+"/>`
	
# Requirements
  - EDC 1.2 or later

# Dependencies
None.

# Source
N/A

# Restrictions
None.
XML pull parser.
LIBRARY for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
14 September 2016
<!--
	Markdown
	Copyright 2014-2016 IS2T. All rights reserved.
	IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->
# Overview
kXML is a small XML pull parser, specially designed for constrained environments such as Applets, Personal Java or MIDP devices. In contrast to kXML 1, kXML 2 is based on the common 
XML pull API.

# Usage
Add the following line to your `module.ivy` or your `ivy.xml`:
> `<dependency org="org.kxml2" name="kxml2" rev="2.3.+"/>`
	
# Requirements
  - EDC 1.2 or later

# Dependencies
None.

# Source
N/A

# Restrictions
None.

NXP K65 Platform Reference Implementation (Single-app, GCC, FreeRTOS)

The Platform Reference Implementation for the TWRK65F180M board.
JPF_NXP for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Technical Ref.: PRI-EVAL-TWRK65F180M-SGF-LNTOC
Last updated:
14 September 2016

NXP K65 Platform Binary (Single-app)

The Platform Binary for the TWRK65F180M board.
JPF_NXP for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Technical Ref.: PTF-EVAL-TWRK65F180M-SGF-LNTOC
Last updated:
14 September 2016

NXP K65 Platform Reference Implementation (Multi-app, GCC, FreeRTOS)

The Platform Reference Implementation for the TWRK65F180M board.
JPF_NXP for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Technical Ref.: PRI-EVAL-TWRK65F180M-MGF-2VLQR
Last updated:
31 August 2016

Using SNI and SP Libraries API (Standalone)

This repository contains examples showing how to enable communication between programs written in C and programs written in Java using MicroEJ APIs.
EXAMPLE for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Last updated:
12 August 2016
[](Markdown)
[](Copyright 2016 IS2T. All rights reserved.)
[](IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.)
# Overview

Although MicroEJ lets you leverage Java in an embedded context, there are still some cases where your Java threads need to synchronize and exchange data with OS tasks written in C/C++.

This repository contains examples showing how to enable communication between programs written in C and programs written in Java using MicroEJ APIs.

## Available examples

For tasks/threads synchronisation via function calls and callbacks, MicroEJ provides the SNI API.
For data exchange issues between tasks/threads, MicroEJ provides a few options:
* Shielded Plug API (suitable for sharing structured data, with built-in wait/release synchronisation APIs)
* Immortals API and SNI API (suitable for sharing access to raw data, but you need to provide your own synchronisation mechanism)

The following examples, most of them based on the consumer/producer problem, illustrate how to use those APIs :
* [Making synchronous C functions calls from Java](/CallingCFromJava) using SNI
* [Producer Consumer with ShieldedPlug](/ProducerConsumerUsingShieldedPlug) using Shielded Plug API as the delivery mechanism
* [Producer Consumer with SNI and Immortals](/ProducerConsumerUsingQueues) using SNI and Immortals APIs to wrap the native FreeRTOS message queue API as the delivery mechanism

Each example comes with a launch configuration. These launch configurations require that the target platform (common to each configuration) is built.

To build the platform :
* Open the [full.platform]([/STM32F746GDISCO-SNI_SP-CM7_ARMCC-FreeRTOS-configuration/full.platform]) file
* Click on the **Build Platform** hyperlink in the **Build** frame

## API Selection Criteria

Here are a few things to consider when choosing between Shielded Plug and an SNI and Immortals based solution

* Performance
	* Generally speaking, Shielded Plug (SP for short) will copy data from/to a database block and will therefore take more processing time and memory than an SNI-based solution relying on a shared memory area with less data copying.
	* SP is more suitable for asynchronous (post) processing of published data

* Data Integrity
	* Given that with SP there is no buffering of data, it makes it more suitable for sampling scenarios where losing a value once in a while is not critical .

* API convenience
	* SP requires that you describe your data in an xml based configuration file.
	* However, the SP synchronization API is quite simple
	* Using SNI and Immortals, it is easier to pass data directly to/from C native functions

In summary, for simple use cases, Shielded Plug shall suffice, but for more intensive and more constrained environments, SNI and Immortals may be a better fit.

## Additional references

Additional examples can be found at the following locations:
* Java/C Data Sharing Using SNI application note on www.microej.com.
* Synchronizing a Java thread with C task(s) application note on www.microej.com.

### B-ON Library Specification

Among other things, the **Beyond Profile Specification** document contains detailed information on:

* sharing memory areas between Java and C/C++ using **immortal objects**

**immortal objects** : such objects are never garbage collected and keep the same physical memory location forever. This makes them useful for specifying shared memory areas between C and Java.

To access the document from MicroEJ:

* Select **Help > MicroEJ Resource Center** menu item
	* Select **Library Specification > BON 1.2**

### SNI Library Specification

The **Simple Native Interface for GreenThread Context Profile Specification** document contains detailed information on :

* how to map Java primitive types to portable C types for methods/functions parameters and return types
* naming conventions for C functions implementing Java SNI native implementations
	* these have to be followed to generate valid linker configuration files
* sharing memory areas between Java and C/C++ using **immortal objects**
* controlling (as in suspend and resume) Java Thread execution from C code

To access the document from MicroEJ:

* Select **Help > MicroEJ Resource Center** menu item
	* Select **Library Specification > SNI_GT 1.2**
	
### Shielded Plug Library Specification

The **Shielded Plug Profile Specification** document contains detailed information on :

* the concepts underlying the Shielded Plug API
* how to map Java primitive types to portable C types for methods/functions parameters and return types
* how to create dedicated readers/writers that can translate Shielded Plug Blocks into Java Objects
* the reference API for both C and Java languages

To access the document from MicroEJ:

* Select **Help > MicroEJ Resource Center** menu item
	* Select **Library Specification > SP 1.0**
	
### Simulation

The **Simulation** section of the **platform architecture manual** document contains useful info for :

* creating Java mocks simulating native code using the same naming conventions as SNI
* using the Hardware In the Loop (HIL) engine as a replacement for the SNI/GreenThread interface used on target environments

To access the document from MicroEJ:

* Select **Help > MicroEJ Resource Center** menu item
	* Select **Manual > Platform Architecture - User Manual**
	
# Requirements

* MicroEJ SDK 4.0.0 or later
* Keil MicroVision v5.0 or later

Application Developer's Guide (Sandboxed)

Learn to develop your first sandboxed apps.
GUIDE for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio
Last updated:
26 July 2016

Application Developer's Guide (Standalone)

Learn to develop your first standalone apps.
GUIDE for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Last updated:
26 July 2016

Convert a Standalone App into a Sandboxed App

This document explains how to convert a standalone app into a sandboxed app.
HOWTO for STORE
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio
Last updated:
1 July 2016
# Overview
This document explains how to convert a standalone app into a sandboxed app.

# Usage
## CREATE THE APPLICATION
1. Use the wizard to create a new sandboxed app
	1. **File** â **New** â **MicroEJ Sandboxed Application Project**
	
## ADD THE DEPENDENCIES
1. Open the `module.ivy` file from the **standalone project**
2. Copy all the dependencies located in `<dependencies></dependencies>`
3. Open the `module.ivy` file from the **sandboxed project**
4. Paste the copied dependencies into `<dependencies></dependencies>`

## COPY THE SOURCES AND RESOURCES
1. From the **standalone project**, copy the content of `src/main/java`
2. Paste it into `src/main/java` in the **sandboxed project**.
3. From the **standalone project** copy the content of `src/main/resources`
4. Paste it into `src/main/resources` in the **sandboxed project**.

## LINK THE PROJECT TO A SANDBOXED APP ENTRY POINT
A sandboxed app needs a specific entry point which is not the main of the standalone app.

* If you have a GUI (i.e. using a GUI library such as MicroUI):
	1. Create a new class implementing `ej.wadapps.app.Activity`.
	2. On the **onStart()**, call your project's **main**.
* If you do not have any GUI:
	1. Create a new class implementing `ej.wadapps.app.BackgroundService`.
	2. On the **onStart()**, call your project's **main**.
	
## UPDATE THE META-INF
1. Move the **system.properties** except the services declarations to the **application.properties** file
	* In your code, replace the calls to `System.getProperty()` by calls to `ServiceLoaderFactory.getServiceLoader().getService(ApplicationsManager.class).getCurrentApplication().getProperty()`
2. For each local service declared
	* create a file with the fully qualified name of the service in the folder **services**
	* write one line containing the fully qualified name of the implementation class into this file
3. Update the `MANIFEST.MF` :
	* Set the **Application-Activities** to the created activities (if you have a GU).
	* Set the **Application-BackgroundServices** to the created background services (if you do not have a GUI).

## RUN ON MICROEJ SIMULATOR
1. Right Click on the project
2. Select **Run as -> MicroEJ Application**
3. Select **BackgroundServicesStandalone** or **ActivitiesStandalone**
4. Select your platform 
5. Press **Ok**

## RUN ON A DEVICE
### LOCAL DEPLOY
1. Right Click on /src/.generated~/.java/__YourProject__/generated/YourProjectEntryPoint.java
2. Select **Run as -> Run Configurations...** 
3. Select **MicroEJ Application** configuration kind
4. Click on **New launch configuration** icon
5. In **Execution** tab
	1. In **Target** frame, in **Platform** field, select a relevant platform
	2. In **Execution** frame
		1. Select **Execute on Device**
		2. In **Settings** field, select **Build & Deploy**
6. In **Configuration** tab
	1. In **Board** frame
		1. Set **Host** field to your board IP address
7. Press **Apply**
8. Press **Run**


# Changes
- See the change log file [CHANGELOG.md](StandaloneToSandboxed/CHANGELOG.md).

# License
- See the license file [LICENSE.md](LICENSE.md) located at the root of this repository.

Widget (Standalone)

This demo illustrates the Widget library (ej.widget, ej.container, ej.style, ej.navigation, ej.color) based on MicroUI 2 and MWT 2.
EXAMPLE for UI
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Last updated:
30 June 2016
# Overview
This demo illustrates the Widget library (ej.widget, ej.container, ej.style, ej.navigation, ej.color) based on MicroUI 2 and MWT 2.
The main page allows to lead to all the pages of the application illustrating the following widgets:
- button,
- label,
- scrolling list,
- scroll bar,
- slider,
- radio button,
- check box,
- switch,
- progress bar,
- vertical lists.

# Rendering
This demo includes various implementations of widgets and screen transitions.

## Vector drawings
Widgets are drawn using 2D primitives with and without anti-aliasing. This approach uses more CPU time but no ROM (no graphic resources except the code itself).

See `GraphicsContext` and `AntiAliasedShapes` classes for more information. 

## Raster graphics (images)
Widgets are drawn using images. This approach requires more ROM depending on the size and number of images used. It is most of the time faster than vector drawing and requires less CPU load.

Images can be either embedded encoded (PNG for example, decoded at runtime) or embedded as bitmaps (directly drawn to the display, the conversion is done on at build time).

See UI reference manual for more information.

## Pictograms (monochrome images)
Widgets are drawn using monochrome images that can be colored dynamically. This approach requires less ROM than using colorful images but can only be applied for monochrome elements.

It can be achieved using fonts (MicroEJ font designer can import images into a font) or monochrome images with alpha transparency.

See UI reference manual for more information.

# Transitions
This demo includes two implementations of screens transition.

## Snapshot
Screens are dynamically created as images (buffer in RAM) for the transition. This approach requires more RAM (twice the size of the screen in buffers) but is faster than the 2nd implementation.

## Dynamic
Screens are drawn while moving. For each step of the transition, all widgets are drawn in the moving screen. This approach uses more CPU but less RAM. Transition speed might be slower depending on the number of widgets to draw.


# Project Setup
First of all, you have to download the entire repository by using the `Download` button or by cloning the repository. After having retrieved the repository content, open MicroEJ and then import _Existing project into workspace_ by selecting either the ZIP file or the root directory.

## Requirements
* MicroEJ Studio or SDK 4.0 or later
* A platform with at least:
	* EDC-1.2 or higher
	* MICROUI-2.0 or higher
	* MWT-2.1 or higher
* Hardware: this demo has been tested on ST STM32F746G-DISCO (480x272 display) board.

## Project structure
  - `src/main/java`: Java sources.
  		`ej.demo.ui.widget.page`: pages of the demo.
  		`ej.demo.ui.widget.style`: look and feel management of the demo.
  		`WidgetsDemo`: entry point of the demo.
  - `src/main/resources`: images, fontsâ¦

# Usage
## Run on MicroEJ Simulator
1. Right Click on the project
1. Select **Run as -> MicroEJ Application**
1. Select your platform 
1. Press **Ok**

## Run on device
### Build
1. Right Click on [WidgetsDemo.java](ej.demo.ui.widget/src/main/java/ej/demo/ui/widget/WidgetsDemo.java)
1. Select **Run as -> Run Configuration**
1. Select **MicroEJ Application** configuration kind
1. Click on **New launch configuration** icon
1. In **Execution** tab
	1. In **Target** frame, in **Platform** field, select a relevant platform (but not a virtual device)
	1. In **Execution** frame
		1. Select **Execute on Device**
		2. In **Settings** field, select **Build & Deploy**
1. Press **Apply**
1. Press **Run**
1. Copy the generated `.out` file path shown by the console

### Flash
1. Use the appropriate flashing tool.

# MicroUI vs. MWT+Widget
By default, consider using MWT+Widget.
It is however possible to develop a GUI with MicroUI without MWT+Widget libraries:
* when there is no or little user interaction,
* for simple screens and a limited number of widgets,
* for simple screen layout,
* for small screens (which implies they need to be simple!),
* for quick image-based design tests.

# Changes
- See the change log file [CHANGELOG.md](CHANGELOG.md) located at the root of this repository.

# License
See the license file [LICENSE.md](LICENSE.md) located at the root of this repository.

Widget (Sandboxed)

This demo illustrates the Widget library (ej.widget, ej.container, ej.style, ej.navigation, ej.color) based on MicroUI 2 and MWT 2.
EXAMPLE for UI
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
30 June 2016
# Overview
This demo illustrates the Widget library (ej.widget, ej.container, ej.style, ej.navigation, ej.color) based on MicroUI 2 and MWT 2.
The main page allows to lead to all the pages of the application illustrating the following widgets:
- button,
- label,
- scrolling list,
- scroll bar,
- slider,
- radio button,
- check box,
- switch,
- progress bar,
- vertical lists.

# Rendering
This demo includes various implementations of widgets and screen transitions.

## Vector drawings
Widgets are drawn using 2D primitives with and without anti-aliasing. This approach uses more CPU time but no ROM (no graphic resources except the code itself).

See `GraphicsContext` and `AntiAliasedShapes` classes for more information. 

## Raster graphics (images)
Widgets are drawn using images. This approach requires more ROM depending on the size and number of images used. It is most of the time faster than vector drawing and requires less CPU load.

Images can be either embedded encoded (PNG for example, decoded at runtime) or embedded as bitmaps (directly drawn to the display, the conversion is done on at build time).

See UI reference manual for more information.

## Pictograms (monochrome images)
Widgets are drawn using monochrome images that can be colored dynamically. This approach requires less ROM than using colorful images but can only be applied for monochrome elements.

It can be achieved using fonts (MicroEJ font designer can import images into a font) or monochrome images with alpha transparency.

See UI reference manual for more information.

# Transitions
This demo includes two implementations of screens transition.

## Snapshot
Screens are dynamically created as images (buffer in RAM) for the transition. This approach requires more RAM (twice the size of the screen in buffers) but is faster than the 2nd implementation.

## Dynamic
Screens are drawn while moving. For each step of the transition, all widgets are drawn in the moving screen. This approach uses more CPU but less RAM. Transition speed might be slower depending on the number of widgets to draw.


# Project Setup
First of all, you have to download the entire repository by using the `Download` button or by cloning the repository. After having retrieved the repository content, open MicroEJ and then import _Existing project into workspace_ by selecting either the ZIP file or the root directory.

## Requirements
* MicroEJ Studio or SDK 4.0 or later
* A platform with at least:
	* EDC-1.2 or higher
	* MICROUI-2.0 or higher
	* MWT-2.1 or higher
* Hardware: this demo has been tested on ST STM32F746G-DISCO (480x272 display) board.

## Project structure
  - `src/main/java`: Java sources.
  		`ej.demo.ui.widget.page`: pages of the demo.
  		`ej.demo.ui.widget.style`: look and feel management of the demo.
  		`WidgetsDemo`: entry point of the demo.
  - `src/main/resources`: images, fontsâ¦

# Usage
## Run on MicroEJ Simulator
1. Right Click on the project
1. Select **Run as -> MicroEJ Application**
1. Select your platform 
1. Press **Ok**

## Run on device
### Build and Deploy
1. Right Click on [WidgetsDemo.java](ej.demo.ui.widget/src/main/java/ej/demo/ui/widget/WidgetsDemo.java)
1. Select **Run as -> Run Configurations...** 
1. Select **MicroEJ Application** configuration kind
1. Click on **New launch configuration** icon
1. In **Execution** tab
	1. In **Target** frame, in **Platform** field, select a relevant platform
	1. In **Execution** frame
		1. Select **Execute on Device**
		2. In **Settings** field, select **Build & Deploy**
1. In **Configuration** tab
	1. In **Board** frame
		1. Set **Host** field to your board IP address
1. Press **Apply**
1. Press **Run**

# MicroUI vs. MWT+Widget
By default, consider using MWT+Widget.
It is however possible to develop a GUI with MicroUI without MWT+Widget libraries:
* when there is no or little user interaction,
* for simple screens and a limited number of widgets,
* for simple screen layout,
* for small screens (which implies they need to be simple!),
* for quick image-based design tests.

# Changes
- See the change log file [CHANGELOG.md](CHANGELOG.md) located at the root of this repository.

# License
See the license file [LICENSE.md](LICENSE.md) located at the root of this repository.

Device Developer's Guide

Learn to develop your first platform.
GUIDE for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Last updated:
30 June 2016

Product Overview

Discover the MicroEJ Product Line.
GUIDE for MISC
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: Studio & SDK
Last updated:
30 June 2016
Paho MQTT Client for MicroEJ.
LIBRARY for IOT
Supported MicroEJ Version: 4.0
Supported MicroEJ Edition: SDK
Last updated:
30 June 2016
# Overview
Paho MicroEJ client for MQTT:
- This is a fork of Paho: https://eclipse.org/paho/clients/java/ from commit 496f94a58a41557ba2401d4ba94bc099a75ba8ef (just after version 1.0.2).
- Implements MQTT 3.1.1


Some useful tutorials:
- http://www.infoq.com/articles/practical-mqtt-with-paho
- https://developer.motorolasolutions.com/docs/DOC-2315 android oriented

	
## Setup
In addition of adding the library in your buildpath, you have to configure your launch.

### Dependency injection:
The library requires some implementations. It comes with default implementations but you can precise yours. 
To precise your own implementation you have to create a system property with the required interface as the key and the corresponding implementation as the value.
To define a system property see the section 6.1 of the MicroEJ Platform Architecture Reference Manual.
	
The library requires an implementation for the following interfaces:
- org.eclipse.paho.client.mqttv3.MqttClientPersistence
- org.eclipse.paho.client.mqttv3.internal.NetworkModuleFactory
- org.eclipse.paho.client.mqttv3.internal.MessageCatalog
- org.eclipse.paho.client.mqttv3.logging.InternalLoggerFactory
- org.eclipse.paho.client.mqttv3.util.SystemProperties

For information about this interfaces see the corresponding javadoc.

example: org.eclipse.paho.client.mqttv3.MqttClientPersistence=org.eclipse.paho.client.mqttv3.persist.MemoryPersistence

The default implementations are defined in the `dependencyinjection.properties` file in the package `org.eclipse.paho.client.mqttv3.internal.dependencyinjection` of `mqttv3-microej-version.jar`.
	
In your launch, in the `Main` tab:
- add the chosen implementations in the `Required types` part.
- add the file containing the default implementations in the `Resources` part.

### Threads
Paho requires 4 threads to run. You have to adapt the value `Number of threads` of your launch to take this in account. You can modify this value by going in the `Configuration` tab in the `Target > Memory` section.

### UTF-8
Paho requires UTF-8 encoding to run. In the `Configuration` tab in the `EDC` section check `Embed UTF-8 encoding`.