![]() |
![]() |
|
TI-OpenThread
1.08.00.16
|
This document discusses how to use the Door Lock Example App and the different parts that compose it. Door Lock Example Application is a standalone CoAP server example running on Thread.
Some of the areas explored are:
This section describes software components and the corresponding source file.
doorlock.[ch]: Contains the application's event loop, CoAP callback functions, and device initialization function calls, and all door lock specific logic.otstack.[ch]: OpenThread stack processing, instantiation and network parameters.task_config.h: This file contains the definitions of the RTOS task priorities and stack sizes.images.[ch]: Contains the raw binary of the images being displayed on the LCD screen.tiop_config.[ch]: Contains OpenThread stack configurations. If using a SysConfig-enabled project (see the Configuration with SysConfig section below), these files are generated and configured through the SysConfig GUI. If using a non-SysConfig project, the files are a part of the project and parameters can be directly modified.tiop_ui.[ch]: Contains functions and defines to enable Thread-specific functionality for the Common User Interface (CUI).tiop_app_defs.h: Contains application-specific configurations for CUI.This application provides an example implementation of a door lock using the Thread wireless protocol and CoAP as the application layer protocol. The door lock application is configured as a Minimal Thread Device (MTD) which supports CoAP commands to lock and unlock the door. The door lock can be in two states: lock, and unlock.
SysConfig is a GUI configuration tool that allows for TI driver and stack configurations. In order to configure projects using SysConfig, use the SysConfig-enabled version of the Thread examples located in <SDK_ROOT>/examples
To configure using SysConfig, import the SysConfig-enabled project into CCS. Double click the *.syscfg file from the CCS project explorer, where * is the name of the example project. The SysConfig GUI window will appear, where Thread stack and TI driver configurations can be adjusted. These settings will be reflected in the generated files tiop_config.[ch].
The example project comes with working default settings for SysConfig. It is not recommended to change the default driver settings, as any changes may impact the functionality of the example. The Thread stack settings may be changed as required for your use case.
One important note about TI-OpenThread SysConfig is how SysConfig settings and non-volatile storage settings are applied. If the LaunchPad non-volatile holds a valid Thread dataset, SysConfig settings will not be applied on boot. SysConfig settings are only applied when non-volatile storage does not hold a valid Thread dataset. To guarantee SysConfig settings are applied, perform a factory reset of the non-volatile storage, as described below.
This section describes how to set up and run the Door Lock Example Application.
BTN-2 at boot: A factory reset of the non-volatile storage is performed. This must be pressed at the start of the OtStack_task function.BTN-1 at boot: A reset to factory image is performed for OAD capable devices. This must be pressed at the start of the OtStack_task function.BTN-2: Start the joining process. This may be pressed after the hold image appears on-screen.There are 2 ways that this application will display information to the user which can be used simultaneously and are described below:
Ctrl
- Shift + Alt + T, select
Serial Terminal under Choose terminal, select 115200 for Baud Rate and click OK. PuTTY may also be used as the serial terminal emulator. The serial interface implements a Common User Interface (CUI). More details are provided in the "Example Applications" section in the Thread docs of the SDK. Application-specific portions of CUI are described below.
Sharp128 LCD boosterpack: There is no extra configuration needed to use the LCD boosterpack other than plugging it to the LaunchPad running the example application.This section describes how to set up a Thread network. The application supports the ability to be commissioned into a Thread network. Commissioning may be bypassed by setting the TIOP_CONFIG_SET_NW_ID parameter to 1 in tiop_config.h and setting the network ID parameters there. This can also be done through SysConfig in the TI-OpenThread stack module, under the Network ID submodule. By setting the PAN ID to a valid, non-broadcast ID (not 0xFFFF), the device can be pre-commissioned to an existing network.
commissioner start. It will display Done if it succeeds in becoming the active commissioner.commissioner joiner add 00124b000f6e6113 DRRLCK1. It will display Done if it is successful in adding the joiner entry.BTN-2 to start the joining process. The display will show Joining Nwk ....Nwk Joined. If the LCD is used, it will then switch to the door lock image. The green LED should turn on on the LaunchPad once it has joined the network.ping ff03::1 to send an ICMP echo request to the realm-local all nodes multicast address. All devices on the Thread network will respond with an ICMP echo response. You will see in the terminal a response like the one below.
The door lock application hosts a simple CoAP server with one registered resource for the lock state. This resource supports CoAP GET and POST commands. Any device with scope of the door lock's IPv6 address can send commands to the door lock application.
Door lock Attribute URI:
doorlock/lockstateOpen up the serial terminal to the cli_ftd application and also to the Door lock application.
In the CLI FTD serial terminal, execute coap start at the prompt to start the CoAP service. It will display the following message if it successful in starting the CoAP service: Coap service started: Done .
To get the door lock's lock state, execute the following command on the CLI FTD terminal.
NOTE: The IPv6 address will be different for your setup
The door lock should respond, and the cli_ftd will print a message like the following.
Converting the payload from hex to ascii we get unlock.
The door lock state can be changed by sending the appropriate payload in a CoAP confirmable (con) POST command message, to the IPv6 address of the door lock and the resource URI attribute.
Use the following command in the CLI FTD terminal to set the door lock's lock state to lock.
NOTE: The IPv6 address will be different for your setup
The initial command will result in the message Sending coap request: Done. The door lock will respond, and the CLI FTD will print the following message.
If the POST was successful, then the door lock will indicate this on the LCD or UART terminal. If a LCD boosterpack is used, the door lock will change the image displayed. If a UART terminal is used, the door lock will print its updated state.
The above process can be repeated with the string unlock in place of lock to set the door lock example to the unlocked state.
The application-specific action for the Door Lock example is TOGGLE LOCK.
This action will toggle the state of the door lock. For example, if the state of the door lock is "lock", this action will change it to "unlock", and vice versa. To use, hit the "Enter" key.