Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Flipper-Zero/STM32CubeWB.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/readme.txt')
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/readme.txt226
1 files changed, 226 insertions, 0 deletions
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/readme.txt
new file mode 100644
index 000000000..23d33a234
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/readme.txt
@@ -0,0 +1,226 @@
+/**
+ @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 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 STMicroelectronics STM32WB55RG_Nucleo
+ boards and can be easily tailored to any other supported device
+ and development board.
+
+ - On STM32WB55RG_Nucleo, the jumpers must be configured as described
+ in this section. Starting from the top left position up to the bottom
+ right position, the jumpers on the Board must be set as follows:
+
+ CN11: GND [OFF]
+ JP4: VDDRF [ON]
+ JP6: VC0 [ON]
+ JP2: +3V3 [ON]
+ JP1: USB_STL [ON] All others [OFF]
+ CN12: GND [OFF]
+ CN7: <All> [OFF]
+ JP3: VDD_MCU [ON]
+ JP5: GND [OFF] All others [ON]
+ CN10: <All> [OFF]
+
+
+@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 boards to your PC (can be Nucleo and/or dongle)
+ - Open your preferred toolchain
+ - Rebuild all files of Thread/Thread_Coap_DataTransfer application
+ and load your image into the 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.
+
+If you want to get the traces in real time, you can connect an HyperTerminal
+via an UART RS232 cable using the following connections:
+ RXD: CN10(Pin35)
+ TXD: CN10(Pin37)
+
+
+For the traces, the UART must be configured as follows:
+ - BaudRate = 115200 baud
+ - Word Length = 8 Bits
+ - Stop Bit = 1 bit
+ - Parity = none
+ - Flow control = none
+
+ * <h3><center>&copy; COPYRIGHT STMicroelectronics</center></h3>
+ */
+ \ No newline at end of file