AN1023: HTTP SERVER EXAMPLE

Similar documents
EFM8 Laser Bee Family QSG110: EFM8LB1-SLSTK2030A Quick Start Guide

AN999: WT32i Current Consumption

QSG123: CP2102N Evaluation Kit Quick- Start Guide

SMBus. Target Bootloader Firmware. Master Programmer Firmware. Figure 1. Firmware Update Setup

EFM8 Universal Bee Family EFM8UB2 Errata

QSG144: CP2615-EK2 Quick-Start Guide

EFM32 Pearl Gecko Family QSG118: EFM32PG1 SLSTK3401A Quick- Start Guide

QSG114: CPT007B SLEX8007A Kit Quick- Start Guide

QSG119: Wizard Gecko WSTK Quick-Start Guide

AN125 INTEGRATING RAISONANCE 8051 TOOLS INTO THE S ILICON LABS IDE. 4. Configure the Tool Chain Integration Dialog. 1. Introduction. 2.

EFM32 Happy Gecko Family EFM32HG-SLSTK3400A Quick-Start Guide

AN976: CP2101/2/3/4/9 to CP2102N Porting Guide

EFM8 Busy Bee Family EFM8BB2-SLSTK2021A Quick Start Guide

CP2110-EK CP2110 EVALUATION KIT USER S GUIDE. 1. Kit Contents. 2. Relevant Documentation. 3. Software Setup

AN1160: Project Collaboration with Simplicity Studio

CP2103-EK CP2103 EVALUATION KIT USER S GUIDE. 1. Kit Contents. 2. Relevant Documentation. 3. Software Setup USBXpress Driver Development Kit

CP2104-EK CP2104 EVALUATION KIT USER S GUIDE. 1. Kit Contents. 2. Relevant Documentation. 3. Software Setup USBXpress Driver Development Kit

Figure 1. CP2108 USB-to-Quad UART Bridge Controller Evaluation Board

QSG126: Bluetooth Developer Studio Quick-Start Guide

CP2105-EK CP2105 EVALUATION KIT USER S GUIDE. 1. Kit Contents. 2. Relevant Documentation. 3. Software Setup USBXpress Driver Development Kit

Software Release Note

QSG155: Using the Silicon Labs Dynamic Multiprotocol Demonstration Applications

WT12 EVALUATION KIT DATA SHEET. Monday, 09 September Version 1.7

UG365: GATT Configurator User s Guide

QSG107: SLWSTK6101A/B Quick-Start Guide

Figure 1. Precision32 AppBuilder

UG254: CP2102N-MINIEK Kit User's Guide

Bluegiga WF111 Software Driver Release Notes

QSG159: EFM32TG11-SLSTK3301A Quick- Start Guide

UG369: Wireless Xpress BGX13P SLEXP8027A Kit User's Guide

UG345: Si72xx Eval Kit User's Guide

QSG107: SLWSTK6101A/B Quick-Start Guide

AN324 ADVANCED ENCRYPTION STANDARD RELEVANT DEVICES. 1. Introduction. 2. Implementation Potential Applications Firmware Organization

Translate HCSL to LVPECL, LVDS or CML levels Reduce Power Consumption Simplify BOM AVL. silabs.com Building a more connected world. Rev. 0.

Date CET Initials Name Justification

QSG153: Micrium s μc/probe Tool Quick- Start Guide

EFM8 Universal Bee Family EFM8UB1 Errata

Humidity/Temp/Optical EVB UG

EFM8 Busy Bee EFM8BB1 Errata

AN1143: Using Micrium OS with Silicon Labs Thread

Wireless Development Suite (WDS) is a software utility used to configure and test the Silicon Labs line of ISM band RFICs.

8-Bit MCU C8051F85x/86x Errata

USBXpress Family CP2102N Errata

The process also requires the use of the following files found in the Micriµm Quick Start Package for the FRDM-KL46Z:

AN888: EZR32 Quick Start Guide

EFM32 EFM32GG11 Giant Gecko Family QSG149: EFM32GG11-SLSTK3701A Quick-Start Guide

µc/probe on the Freescale FRDM-KL05Z without an RTOS

AN1106: Optimizing Jitter in 10G/40G Data Center Applications

EFR32 Mighty Gecko Family EFR32MG1 with Integrated Serial Flash Errata History

CP2114 Family CP2114 Errata

BRD4300B Reference Manual MGM111 Mighty Gecko Module

UG313: Thunderboard Sense 2 Bluetooth Low Energy Demo User's Guide

Date CET Initials Name Justification

AN1083: Creating and Using a Secure CoAP Connection with ARM s mbed TLS

UG271: CP2615-EK2 User's Guide

EFM32 Zero Gecko EFM32ZG Errata

QSG107: SLWSTK6101A Quick-Start Guide

Router-E and Router-E-PA Wireless Router PRODUCT MANUAL

ETRX3DVK Development Kit Quick-Start Guide

AN1139: CP2615 I/O Protocol

UG366: Bluetooth Mesh Node Configuration User s Guide

Si1146 UVIRSlider2EK Demo Kit

USB Debug Adapter. Power USB DEBUG ADAPTER. Silicon Laboratories. Stop. Run. Figure 1. Hardware Setup Using a USB Debug Adapter

EFR32MG13, EFR32BG13 & EFR32FG13 Revision C and Data Sheet Revision 1.0

USB Debug Adapter. Power USB DEBUG ADAPTER. Silicon Laboratories. Stop. Run. Figure 1. Hardware Setup Using a USB Debug Adapter

USB Debug Adapter. Power USB DEBUG ADAPTER. Silicon Laboratories. Stop. Run. Figure 1. Hardware Setup using a USB Debug Adapter

QSG166: WF200 Wi-Fi Development Kit Quick Start Guide

UG294: CPT213B SLEXP8019A Kit User's Guide

AN888: EZR32 Simple TRX Application Quick Start Guide

UG370: Wireless Xpress AMW007 Kit User's Guide

Figure 1. Traditional Biasing and Termination for LVPECL Output Buffers

AN1117: Migrating the Zigbee HA Profile to Zigbee 3.0

2. Key Points. F93x F92x F91x F90x. Figure 1. C8051F93x-C8051F90x MCU Family Memory Size Options

AN0059.1: UART Flow Control

Si1140-DK. Si1140 DEVELOPMENT KIT USER S GUIDE. 1. Kit Contents. Figure 1. Si1143 Evaluation Board

UG322: Isolated CAN Expansion Board User Guide

The Si50122-Ax-EVB is used to evaluate the Si50122-Ax. Table 1 shows the device part number and corresponding evaluation board part number.

AN719 PRECISION32 IDE AND APPBUILDER DETAILED TUTORIAL AND WALKTHROUGH. 1. Introduction. Figure 1. Precision32 IDE and AppBuilder Walkthrough Overview

AN1083: Creating and Using a Secure CoAP Connection with ARM s mbed TLS

C8051F411-EK C8051F411 EVALUATION KIT USER S GUIDE. 1. Kit Contents. 2. Kit Overview. 3. Evaluation Board Interface LCD User Interface

AN1119: Using RAIL for Wireless M-Bus Applications with EFR32

AN1095: What to Do When the I2C Master Does Not Support Clock Stretching

Date CET Initials Name Justification

UG274: Isolated USB Expansion Board User Guide

Table 1. Kits Content. Qty Part Number Description. Si4010 Simplified Key Fob Demo Kit 868 MHz

USB Debug Adapter. Power USB DEBUG ADAPTER. Silicon Laboratories. Stop. Run. Figure 1. Hardware Setup Using a USB Debug Adapter

Software Design Specification

UG103.13: Application Development Fundamentals: RAIL

AN0059.0: UART Flow Control

μc/probe on the element14 BeagleBone Black

UDP UPPI Card UG UDP UPPI CARD USER S GUIDE. 1. Introduction. Figure 1. UPPI Cards with and without Radio

EFM32 Pearl Gecko Family EFM32PG1 Errata

AN0018.1: Supply Voltage Monitoring

8-bit MCU Family C8051F93x/92x Errata

UG352: Si5391A-A Evaluation Board User's Guide

USB Debug Adapter. Power USB DEBUG ADAPTER. Silicon Laboratories. Stop. Run. Figure 1. Hardware Setup Using a USB Debug Adapter

C8051F36x-DK. C8051F36x DEVELOPMENT KIT USER S GUIDE. 1. Relevant Devices. 2. Kit Contents. 3. Hardware Setup Using a USB Debug Adapter

AN690. Si4010 DEVELOPMENT KIT QUICK-START GUIDE. 1. Purpose. 2. Kit Content. Table 1. Kit Content

μc/probe on the RIoTboard (Linux)

AN0018.0: Supply Voltage Monitoring

Transcription:

AN1023: HTTP SERVER EXAMPLE APPLICATION NOTE Tuesday, 22 September 2015 Version 1.0

Contents 1 Introduction...3 Figure 1 - http_serv Project Structure...3 3 BGScript Files...5 3.1 Overview...5 3.2 api.bgs...5 Figure 3 - Resource URL's...5 Figure 5 - api_handle_ap_settings_request()...6 Figure 6 - api_handle_ap_settings_request() cont....6 Figure 7 - ap_init_mode...7 Figure 8 - ap_start_mode()...7 Figure 9 - ap_start_mode() cont....8 Figure 10 - ap_start_mode() cont...9 Figure 11 - sme_ap_mode_started()...9 Figure 12 - https paths...9 Figure 13 - sta_init_mode()... 10 Figure 14 - sta_start_mode()... 10 Figure 16 - Imported Files... 11 Figure 17 - system_boot()... 11 Figure 18 - sme_wifi_is_on()... 11 4 HTML Files... 13 4.1 index.html... 13 Figure - index.html... 13 Figure - dogetstatus()... 13 4.2 ap.html... 14 Figure - ap.html... 14 Figure - doapply()... 14 Figure - dostoresettings()... 15 4.3 sta.html... 15 Figure - sta.html... 15 Figure - dogetnetworks()... 16 Figure - doapply()... 16 Figure - dostoresettings()... 16 Silicon Labs Page 2 of 18

1 Introduction The http_serv example included with latest SDK, wf121-1.3.0, demonstrates how the WF121 can be configured to operate in Wi-Fi Access Point mode, Wi-Fi Client mode, and additionally implements HTTP server functionality allowing the Wi-Fi Access point settings to be configured and also the Wi-Fi module to be reconfigured to operate in Wi-Fi Client Mode and connect to an available Wi-Fi network via HTML pages displayed by the server. This application note breaks down the http_serv example into its' respective components so that each can be described in a functional sense individually. The BGScript source files included in the project are responsible for the application logic including HTTP server functionality, Wi-Fi Access Point mode operation, and Wi-Fi Client Mode operation. The HTML source files provide the medium for application related content and/or data to be displayed and interacted with. This application note will begin with a discussion of the http_serv examples' project and hardware configuration followed by a detailed discussion of the application logic provided by each of the BGScript source files and then an explanation of how application content is transferred between the BGScript application and each of the HTML pages. Figure 1 - http_serv Project Structure Silicon Labs Page 3 of 18

2 Project and Hardware Configuration The project and hardware configuration settings for the http_serv example are set in the project.xml file included in the main project folder. The project configuration is broken apart into 3 part, a top level defined by the <project> tag and two sub levels defined by the <hardware> and <files> tags. Within the top level <project> tag, the script to use is defined within the <scripting> tag. The hardware configuration is contained within the <hardware> tags. UART channel 0 is configured for application use by setting the api property to false, with a baud rate of 5000000bps and flow control enabled by setting handshake to true. UART channel 1 is configured for API use with a baud rate of 5000000bps and flow control enabled. The <files> tag is used to define the individual files such as HTML pages which will be included in the compiled firmware. Silicon Labs Page 4 of 18

3 BGScript Files 3.1 Overview The http_serv example includes 4 individual BGScript source files, main.bgs, api.bgs, ap.bgs and sta.bgs. Each of the files implements a specific type of functionality and are all imported into the main.bgs file which comprises the application logic as a whole. The ap.bgs and sta.bgs files contain the Access Point and Station mode functionality respectively. The RESTful API used by the web pages to exchange application data with the BGScript application is implemented in the api.bgs source file. This portion of the App Note will provide an overview of each of the BGScript source files covering the important events and procedures in detail. 3.2 api.bgs The api.bgs BGScript file comprises the RESTful API functionality/logic used by the HTML pages to exchange data with the BGScript application. The api.bgs BGScript source file contains a relatively large number of custom procedures defined written to aid in building JSON formatted responses to HTTP requests received by HTTP server and are called frequently. It would be a good idea to look through the procedures to see what they do so that you understand why they are called in other portions of the script. When an HTTP request is received from one of the HTML pages, the https_api_request event is triggered providing the request number, the HTTP request method (PUT, POST, GET,...), and the resource data. The resource data is then compared with the predefined resources listed as "const" towards the beginning of the api. bgs source file. Figure 3 - Resource URL's Silicon Labs Page 5 of 18

Figure 4 - https_api_request When a match is found between the resource data included with the http request and one of the predefined resource URL's, a procedure written to handle the matching request is called. For example, when the received request is found to match the API_AP_SETTINGS_RESOURCE, the api_handle_ap_settings_request procedure is called. The api_handle_ap_settings_request procedure builds a JSON formatted response containing the Access Point settings to return as the response to the HTTP request. Figure 5 - api_handle_ap_settings_request() After the response has been constructed it is sent using the https_api_response API method followed by completing the response with the https_api_response_finish. It's important to note that the "request" number referenced here corresponds to the original "request" number received with the https_api_request event. Figure 6 - api_handle_ap_settings_request() cont. Silicon Labs Page 6 of 18

3.3 ap.bgs The ap.bgs BGScript file implements the Access Point functionality of the http_serv example project. The ap_init_mode procedure is called from within the system_boot event included in main.bgs and must include the "export" prefix in order to be used by a script that ap.bgs is imported into. Figure 7 - ap_init_mode The ap_init_mode procedure initializes the variables associated with Access Point mode functionality used by the application logic contained within ap.bgs. The ap_start_mode procedure called in main.bgs is responsible for all of the necessary processes, which includes setting the Access Point mode configuration variables, required to start Access point mode. The procedure must include the prefix "export" in order to be used by a script ap.bgs is imported into. Figure 8 - ap_start_mode() Silicon Labs Page 7 of 18

First, the flash locations where the IPV4 address is stored is read and if the location is not empty (a value has been stored previously), the value read is used as the IPV4 address associated with Access Point mode. If the flash memory location is empty, a default value is used and then saved to the flash location. The flash location allocated for the IPV4 netmask is then read and if the value has been set (a value has be stored previously) the value is used as the IPV4 netmask associated with Access Point mode. If the value retrieved is zero, a default value is used and then saved to the flash location. After the appropriate values are saved for the IPV4 address and netmask, the tcpip_configure API method is called to set the final TCPIP configuration to be used for Access Point mode. Figure 9 - ap_start_mode() cont. Next, the DHCP and DNS configurations are set by retrieving the values saved in the appropriate flash locations if values have been set and if not, setting them to default values. The power saving functionality is completely disabled in this example by calling the system_set_max_power_saving_state API method with a value of 0. The Access Point channel and Security configurations are then retrieved from the appropriate flash memory locations and used if values are present and if not, default values are assigned and stored in flash. Silicon Labs Page 8 of 18

Figure 10 - ap_start_mode() cont. The last two operations included in the ap_start_mode procedure are retrieving setting the Access Point SSID and pass phrase values from the appropriate flash locations if values have been set and if not, setting a default value for SSID and disabling security if a pass phrase has not been set. The sme_ap_mode_started event is received after Access Point mode has been successfully started. The content within the sme_ap_mode_started event is responsible for setting the final parameters for the Access Point configuration. Figure 11 - sme_ap_mode_started() The important API method to take note of is the https_add_path method. The https_add_path is used to configure a new HTTP server paths. The possible paths include BGAPI, internal flash, and the external SD memory card. Two new paths are added here, one to the internal flash and the other to BGAPI using the URL constants defined at the top of ap.bgs. Figure 12 - https paths Silicon Labs Page 9 of 18

3.4 sta.bgs The sta.bgs BGScript file implements the Station Mode functionality of the http_serv example project. The sta_init_mode procedure is called from within the system_boot event included in main.bgs and must include the "export" prefix in order to be used by a script sta.bgs is imported into. Figure 13 - sta_init_mode() The sta_init_mode procedure initializes the variables associated with Station mode functionality used by the application logic contained within sta.bgs. The sta_start_mode procedure called in main.bgs is responsible for all of the necessary processes, which includes setting the Station mode configuration variables,required to start Access point mode. The procedure must include the prefix "export" in order to be used by a script ap.bgs is imported into. The first procedure called within sta_start_mode, sta_set_read_ipv4_config, retrieves the IP configuration from the appropriate PS keys and saves the read values into the station mode configuration variables used by sta.bgs. Figure 14 - sta_start_mode() Figure 15 - sta_start_mode() cont. Silicon Labs Page 10 of 18

3.5 main.bgs The main.bgs BGScript source file imports the three companion BGScript source files so that the entire BGScript application is contained within main.bgs, the script file specified to be used in the project configuration (project.xml). Figure 16 - Imported Files The system_boot event performs the necessary setup operations when the WF121 is booted. Figure 17 - system_boot() First each of the imported BGScript files (ap.bgs, sta.bgs, and api.bgs) are initialized by calling their respective init procedures, then operating mode is set to a default operating mode (Access Point Mode). Next, if there is an operating mode stored in flash, it is read and the operating mode is set to the saved value instead of the default value. After the operating mode has been set correctly, it is activated by calling the sme_set_operating_mode API method. Last, the MAC address is retrieved using the config_get_mac API method. If an appropriate MAC address is returned, the WiFi radio is turned on using the sme_wifi_on API method. The sme_wifi_is_on event is triggered upon the successful activation of the Wi-Fi radio. Figure 18 - sme_wifi_is_on() Silicon Labs Page 11 of 18

The script within the sme_wifi_is_on event check to see if the current operating mode is station mode, and if true, calls the procedures start_status_notification (for Station mode "STATUS_PIN_STA") and sta_start_mode defined in main.bgs and sta.bgs respectively. The start_status_notification procedure is defined near the top of main.bgs and is used to indicate the current status on the WF121 using several LED's on the development kit. If the current operation mode is not station mode, the procedure start_status_notifcation (for Access Point mode "STATUS_PIN_AP"), then the API method sme_start_scan is called to begin a scan for available networks which must be completed before Access Point mode can be started. When the scan completes, the sme_scanned event is triggered, within which, the ap_start_mode procedure defined in ap.bgs is called after verifying the current operating mode is Access Point mode. Silicon Labs Page 12 of 18

4 HTML Files 4.1 index.html The index.html source file corresponds to the home page displayed by the HTTP server operating on the WF121. The home page includes two clickable links and information displayed representing the current configuration of the HTTP server running on the WF121. The clickable links positioned in the top navigation bar include a link to the "Access Point" configuration page ap.html and a link to the "Station" configuration page sta. html, also referred to as the Wi-Fi Client configuration. Figure - index.html The information displayed under the "Current configuration:" label is the only information **on this page** retrieved from the BGScript application, all other content on the page is statically defined in the index.html source file. The data used to populate the fields for the "Current configuration:" are retrieved from the BGScript application using an HTTP GET request targeting the resource predefined in the BGScript application source file, api.bgs. When the page loads, the "window.onload" event calls the javascript function "dogetstatus()" defined within the <script> tag. Figure - dogetstatus() Silicon Labs Page 13 of 18

The "dogetstatus()" function creates a new HTTP GET request specifying the resource defined in api.bgs, "api /status". After the BGScript application responds to the request with the requested data, the "updatestatus" javascript function is called taking the data received from the HTTP server (BGScript application) as its parameter. The "updatestatus" function then accesses the desired data parameters included in the response data to update the information displayed for "Current Configuration:". 4.2 ap.html The ap.html source file corresponds to the Access Point configuration page accessed by selecting the "Access Point" link on the home page (index.html). The Access Point configuration page includes two clickable links, "Status" which links back to the home page and "Station" which links to the Station configuration page sta.html, and several user configurable fields representing the Access Point configuration settings. Figure - ap.html The user configurable fields allow the user to configure the Access Point by selecting from available pre-defined options for "Channel" and "Security", manually entering a password, IP address an IP netmask, and selecting check boxes to define whether or not DHCP and/or DNS is used. If DHCP is selected, the user has the option to define a DHCP range and if DNS is selected the user has the option to define a specific URL to use. When the Access Point configuration page loads, the existing Access Point settings are retrieved in the same way they were retrieved on the home page loaded with the exception that the resource specified in the HTTP GET request is "/api/ap/setting" instead of "/api/status". After the Access Point settings have been configured, the "Apply" button is used to submit the new settings. When the "Apply" button is selected, the javascript function "doapply()" defined within the the <script> tag is called. Figure - doapply() The "doapply()" function first retrieves the Access Point settings configured on the page currently and stores them in the "mycurrentsettings" variable. Then the settings contained in the "mycurrentsettings" variable are then compared with the settings contained in the "mystoredsettings" variable which was populated when the page initially loaded with the current settings retrieved from the BGScript application. For each setting configured on the page that does not match stored setting, an HTTP POST request is sent to update the value stored by the BGScript application using the "dostoresetting" function. Silicon Labs Page 14 of 18

Figure - dostoresettings() After each of the new settings has been updated, the "dostoremode" function is called followed by a call to the "doreboot" function. The "dostoremode" function initiates an HTTP POST request specifying the "/api/mode" resource and send the value of 2 which the BGScript application uses to set the correct operating mode for the WF121. The "doreboot" function initiates an HTTP GET request specifying the "/api/reboot" resource for which the BGScript application initiates a reboot of the module so that the new Access Point configuration settings will take affect. 4.3 sta.html The sta.html source file corresponds to the Station configuration page accessed by selecting the "Station" link included on both the home page (index.html) and the "Access Point" configuration page. The Station configuration page includes two clickable links, "Status" which links back to the home page and "Access Point" which links back to the Access Point configuration page ap.html, and several user configurable fields representing the Station (Wi-Fi Client mode) settings. Figure - sta.html The "Available networks:" drop down menu is populated when the page initially loads. A list of available networks is retrieved from the BGScript application with an HTTP GET request specifying the "/api/networks" resource. Silicon Labs Page 15 of 18

Figure - dogetnetworks() The user configurable settings include a drop down menu of the available networks retrieved when the page loaded, an SSID and Password text field, and a check box allowing the user to select whether or not use DHCP. After Station mode settings have been configured, the "Apply" button is used to submit the new settings. When the "Apply" button is selected, the javascript function "doapply()" defined within the the <script> tag is called. Figure - doapply() The "doapply()" function first retrieves the Station mode settings configured on the page currently and stores them in the "mycurrentsettings" variable. Then the settings contained in the "mycurrentsettings" variable are then compared with the settings contained in the "mystoredsettings" variable which was populated when the page initially loaded with the current settings retrieved from the BGScript application. For each setting configured on the page that does not match stored setting, an HTTP POST request is sent to update the value stored by the BGScript application using the "dostoresetting" function. Figure - dostoresettings() After each of the new settings has been updated, the "dostoremode" function is called followed by a call to the "doreboot" function. The "dostoremode" function initiates an HTTP POST request specifying the "/api/mode" resource and send the value of 1 which the BGScript application uses to set the correct operating mode for the WF121. The "doreboot" function initiates an HTTP GET request specifying the "/api/reboot" resource for which the BGScript application initiates a reboot of the module so that the new Station configuration settings will take effect. Silicon Labs Page 16 of 18

Simplicity Studio One-click access to MCU and wireless tools, documentation, software, source code libraries & more. Available for Windows, Mac and Linux! IoT Portfolio www.silabs.com/iot SW/HW www.silabs.com/simplicity Quality www.silabs.com/quality Support and Community community.silabs.com Disclaimer Silicon Laboratories intends to provide customers with the latest, accurate, and in-depth documentation of all peripherals and modules available for system and software implementers using or intending to use the Silicon Laboratories products. Characterization data, available modules and peripherals, memory sizes and memory addresses refer to each specific device, and "Typical" parameters provided can and do vary in different applications. Application examples described herein are for illustrative purposes only. Silicon Laboratories reserves the right to make changes without further notice and limitation to product information, specifications, and descriptions herein, and does not give warranties as to the accuracy or completeness of the included information. Silicon Laboratories shall have no liability for the consequences of use of the information supplied herein. This document does not imply or express copyright licenses granted hereunder to design or fabricate any integrated circuits. The products are not designed or authorized to be used within any Life Support System without the specific written consent of Silicon Laboratories. A "Life Support System" is any product or system intended to support or sustain life and/or health, which, if it fails, can be reasonably expected to result in significant personal injury or death. Silicon Laboratories products are not designed or authorized for military applications. Silicon Laboratories products shall under no circumstances be used in weapons of mass destruction including (but not limited to) nuclear, biological or chemical weapons, or missiles capable of delivering such weapons. Trademark Information Silicon Laboratories Inc., Silicon Laboratories, Silicon Labs, SiLabs and the Silicon Labs logo, Bluegiga, Bluegiga Logo, Clockbuilder, CMEMS, DSPLL, EFM, EFM32, EFR, Ember, Energy Micro, Energy Micro logo and combinations thereof, "the world s most energy friendly microcontrollers", Ember, EZLink, EZRadio, EZRadioPRO, Gecko, ISOmodem, Precision32, ProSLIC, Simplicity Studio, SiPHY, Telegesis, the Telegesis Logo, USBXpress and others are trademarks or registered trademarks of Silicon Laboratories Inc. ARM, CORTEX, Cortex-M3 and THUMB are trademarks or registered trademarks of ARM Holdings. Keil is a registered trademark of ARM Limited. All other products or brand names mentioned herein are trademarks of their respective holders. Silicon Laboratories Inc. 400 West Cesar Chavez Austin, TX 78701 USA http://www.silabs.com