diff options
Diffstat (limited to 'Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/readme.txt')
-rw-r--r-- | Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/readme.txt | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/readme.txt b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/readme.txt new file mode 100644 index 000000000..17e590456 --- /dev/null +++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/readme.txt @@ -0,0 +1,197 @@ +/** + @page Thread_Coap_DataTransfer application + + @verbatim + ****************************************************************************** + * @file Thread/Thread_Coap_DataTransfer/readme.txt + * @author MCD Application Team + * @brief Description of the Thread_Coap_DataTransfer application + ****************************************************************************** + * + * Copyright (c) 2019 STMicroelectronics. All rights reserved. + * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + @endverbatim + +@par Application Description + +How to transfer large blocks of data through the CoAP messaging protocol. + +This application requires the use of at least two STM32WB55xx_Dongle boards.It demonstrates the +ability to transfer large blocks of data through the CoAP messaging protocol. This application could be +further developed into an Over The Air Firmware Update. However at the current state it stands as a +Proof of Concept for the ability of transferring large blocks of data through the network. Namely +5 blocks of data of 128bits length. + +In a Thread network, IPv6 addressing is split into 3 modes and 3 scopes. +Multicast, Unicast and Anycast modes: + Multicast is used to communicate messages to multiple devices at once depending on the scope used in the address. +Unicast is used to communicate messages to a specific node in the network. +Anycast is used when the thread interface's routing locator is unknown. + +The scope determines the level of network access to be targeted : +Link-Local scope : all interfaces are reachable through a single radio transmission hop. +Mesh-Local scope : all interfaces reachable from within the same thread network. +Global scope : all interfaces reachable from within and outside the same thread network. + +In our application, we will use the MEsh-local scope and multicast addressing types to probe the +mesh-local IP addresses of the child devices to which the File would be transferred. + nodes are split into two forwarding roles: Router or End Device. +The Thread Leader is a Router that is responsible for managing the set of Routers in a +Thread network. An End Device (or child) communicates primarily with a single Router. + +In our Application, which uses two devices, one device will act as a Leader (Router) +and the other one will act as an End Device (child mode) + +After the reset of the 2 boards, one board will be in Leader mode (Green LED2 ON) and +the other one will be in Child mode (Red LED3 ON) Once the child mode is established for +one of the devices, it starts the provisioning procedure in multicast mode in order to probe +the IP address of the leader device. Then this is used to start the File transfer procedure +in unicast mode, which success is marked by the lightening of the blue LED. + + + ___________________________ ___________________________ + | Device 1 | | Device 2 | + |_________________________| |_________________________| + | | | | + | | | Provisioning enabled() | + | | | | + | | | | + | | | | + | Provisioning Request | | | + | send() |======> COAP =========>|------------- | + | |Resource "provisioning"| | | + | |Mode : Multicast | v | + | |Type : Non-Confirmable | Provisioning Request | + | |Code : Get | Handler() | + | |Payload: empty | | | + | | | v | + | | | Provisioning Response | + | | | send() | + | | | | | + | -------------|<===== COAP ========== |<------------ | + | | |Resource "provisioning"| | + | v |Mode : Multicast | | + | Provisioning Response |Type : Non Confirmable | | + | Handler() |Code : Put | | + | | |Payload : MeshLocal EUI| | + | | | | | + | | | | | + | v | | | + | ---->Get_NextBuffer() | | | + || | | | | + || v | | | + || Unicast_Data_Send() | | | + || | | | + || | | | | + || v | | | + || ----------->|=====>CoAP============>|------------- | + || |Resource : "File" | | | + || |Mode : Unicast | v | + || |Type : Confirmable | Data_Request_Handler() | + || |Code : Put | | + || |Payload : Buffer[] | | | + || | | v | + || | | Check_Message_Validity | + || | | | | + || | | v | + || | | Data_Response_Send() | + || | | | + || | | | | + || Data_Response_Handler()|<=====CoAP=============|<------------ | + || |Resource: "File" | | + || | |Mode : Unicast | | + || | |Type : Acknowledgment | + || | |Code : Changed | | + || | |Payload : empty | | + || v | | | + || /\ | | | + || / \ | | | + || Yes / \ | | | + | <---- /ID <5?\ | | | + | \ / | | | + | \ / | | | + | \ / | | | + | \/ | | | + | | NO | | | + | v | | | + | Blue Led ON | | | + | | | | + | | | | + | | | | + --------------------------- --------------------------- + | Role : Child | | Role : Leader | + | | | | + | LED : Red | | LED : Green | + | | | | + |_________________________| |_________________________| + + +@par Keywords + +COAP,THREAD + +@par Directory contents + + - Thread/Thread_Coap_DataTransfer/Core/Inc/app_common.h Header for all modules with common definition + - Thread/Thread_Coap_DataTransfer/Core/Inc/app_conf.h Parameters configuration file of the application + - Thread/Thread_Coap_DataTransfer/Core/Inc/app_entry.h Parameters configuration file of the application + - Thread/Thread_Coap_DataTransfer/STM32_WPAN/App/app_thread.h Header for app_thread.c module + - Thread/Thread_Coap_DataTransfer/Core/Inc/data_transfer.h Array definition for Data Transfer application + - Thread/Thread_Coap_DataTransfer/Core/Inc/hw_conf.h Configuration file of the HW + - Thread/Thread_Coap_DataTransfer/Core/Inc/main.h Header for main.c module + - Thread/Thread_Coap_DataTransfer/Core/Inc/stm_logging.h Header for stm_logging.c module + - Thread/Thread_Coap_DataTransfer/Core/Inc/stm32wbxx_hal_conf.h HAL configuration file + - Thread/Thread_Coap_DataTransfer/Core/Src/stm32wbxx_it.h Interrupt header file + - Thread/Thread_Coap_DataTransfer/Core/Inc/system_infra.h System infrastructure header file + - Thread/Thread_Coap_DataTransfer/Core/Inc/utilities_conf.h Configuration file of the utilities + - Thread/Thread_Coap_DataTransfer/Core/Src/app_entry.c Initialization of the application + - Thread/Thread_Coap_DataTransfer/STM32_WPAN/App/app_thread.c Thread application implementation + - Thread/Thread_Coap_DataTransfer/STM32_WPAN/Target/hw_ipcc.c IPCC Driver + - Thread/Thread_Coap_DataTransfer/Core/Src/stm32_lpm_if.c Low Power Manager Interface + - Thread/Thread_Coap_DataTransfer/Core/Src/hw_uart.c UART driver + - Thread/Thread_Coap_DataTransfer/Core/Src/main.c Main program + - Thread/Thread_Coap_DataTransfer/Core/Src/stm_logging.c Logging module for traces + - Thread/Thread_Coap_DataTransfer/Core/Src/stm32xx_it.c Interrupt handlers + - Thread/Thread_Coap_DataTransfer/Core/Src/system_stm32wbxx.c stm32wbxx system source file + +@par Hardware and Software environment + + - This example runs on STM32WB55xx devices (Nucleo board and dongle). + + - This example has been tested with an STMicroelectronics STM32WB55RG-Dongle + board and can be easily tailored to any other supported device + and development board. + + +@par How to use it ? + +This application requests having the stm32wb5x_Thread_FTD_fw.bin binary flashed on the Wireless Coprocessor. +If it is not the case, you need to use STM32CubeProgrammer to load the appropriate binary. +All available binaries are located under /Projects/STM32_Copro_Wireless_Binaries directory. +Refer to UM2237 to learn how to use/install STM32CubeProgrammer. +Refer to /Projects/STM32_Copro_Wireless_Binaries/ReleaseNote.html for the detailed procedure to change the +Wireless Coprocessor binary. + + +In order to make the program work, you must do the following: + - Connect 2 STM32WB55xx_Dongle boards to your PC + - Open your preferred toolchain + - Rebuild all files and load your image into target memory + - Run the example on one board first wait until it switches to Leader Role + (indicated through the lightning of a green LED) + - Run the example on the second board and wait until it switches to Child Role + (indicated through the lightning of the Red LED) + - After a few seconds, if everything goes right, a blue LED should be lit indicating the end of the File transfer + - If the above step didn't go as planned, you should look through the traces to locate the source of the error. + + Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application. + + * <h3><center>© COPYRIGHT STMicroelectronics</center></h3> + */ +
\ No newline at end of file |