From 33e53ec4692d460579f144ed07bdf3b311216758 Mon Sep 17 00:00:00 2001
From: WYR2019_ProjectAdmin <2434005456@qq.com>
Date: Sat, 22 Nov 2025 20:16:58 +0800
Subject: [PATCH] =?UTF-8?q?11.22=EF=BC=9A=E5=AE=8C=E5=96=84=E6=B3=A8?=
=?UTF-8?q?=E9=87=8A=EF=BC=9B=E6=8F=90=E9=AB=98=E4=BB=A3=E7=A0=81=E7=9A=84?=
=?UTF-8?q?=E7=A7=BB=E6=A4=8D=E6=80=A7=EF=BC=9B=E5=AE=8C=E5=96=84=E4=B8=B2?=
=?UTF-8?q?=E5=8F=A3=E7=A8=8B=E5=BA=8F=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
STM32/Environment_Node/.vscode/settings.json | 3 +-
STM32/Environment_Node/Drivers/DHT11.c | 2 +-
STM32/Environment_Node/Drivers/DHT11.h | 6 +-
STM32/Environment_Node/Drivers/LED.h | 5 +
STM32/Environment_Node/Drivers/LoRa.c | 48 +-
STM32/Environment_Node/Drivers/LoRa.h | 21 +-
.../STM32Template.uvguix.Exploration | 104 +-
STM32/Environment_Node/System/SysTick.h | 28 -
STM32/Environment_Node/System/USART3.c | 12 +-
STM32/Environment_Node/System/USART3.h | 29 +-
STM32/Environment_Node/User/main.c | 107 +-
STM32/Gateway_Node/.vscode/settings.json | 6 +
STM32/Gateway_Node/Drivers/ESP8266.c | 1 +
STM32/Gateway_Node/Drivers/ESP8266.h | 5 +
STM32/Gateway_Node/Drivers/LED.c | 35 +
STM32/Gateway_Node/Drivers/LED.h | 18 +
STM32/Gateway_Node/Drivers/LoRa.c | 195 ++
STM32/Gateway_Node/Drivers/LoRa.h | 151 ++
.../STM32Template.uvguix.Exploration | 1871 ++++++++++++++++-
STM32/Gateway_Node/STM32Template.uvoptx | 184 +-
STM32/Gateway_Node/STM32Template.uvprojx | 54 +
.../SysTick.c => Gateway_Node/System/Delay.c} | 76 +-
STM32/Gateway_Node/System/Delay.h | 40 +
STM32/Gateway_Node/System/USART.c | 281 +++
STM32/Gateway_Node/System/USART.h | 43 +
STM32/Gateway_Node/System/USART2.c | 132 ++
STM32/Gateway_Node/System/USART2.h | 35 +
STM32/Gateway_Node/System/USART3.c | 142 ++
STM32/Gateway_Node/System/USART3.h | 37 +
STM32/Gateway_Node/User/main.c | 109 +-
.../STM32Template.uvguix.Exploration | 1753 ++++++++++++++-
STM32/Safety_Node/User/main.c | 41 +-
32 files changed, 5308 insertions(+), 266 deletions(-)
delete mode 100644 STM32/Environment_Node/System/SysTick.h
create mode 100644 STM32/Gateway_Node/.vscode/settings.json
create mode 100644 STM32/Gateway_Node/Drivers/ESP8266.c
create mode 100644 STM32/Gateway_Node/Drivers/ESP8266.h
create mode 100644 STM32/Gateway_Node/Drivers/LED.c
create mode 100644 STM32/Gateway_Node/Drivers/LED.h
create mode 100644 STM32/Gateway_Node/Drivers/LoRa.c
create mode 100644 STM32/Gateway_Node/Drivers/LoRa.h
rename STM32/{Environment_Node/System/SysTick.c => Gateway_Node/System/Delay.c} (54%)
create mode 100644 STM32/Gateway_Node/System/Delay.h
create mode 100644 STM32/Gateway_Node/System/USART.c
create mode 100644 STM32/Gateway_Node/System/USART.h
create mode 100644 STM32/Gateway_Node/System/USART2.c
create mode 100644 STM32/Gateway_Node/System/USART2.h
create mode 100644 STM32/Gateway_Node/System/USART3.c
create mode 100644 STM32/Gateway_Node/System/USART3.h
diff --git a/STM32/Environment_Node/.vscode/settings.json b/STM32/Environment_Node/.vscode/settings.json
index aaa2532..ff141f6 100644
--- a/STM32/Environment_Node/.vscode/settings.json
+++ b/STM32/Environment_Node/.vscode/settings.json
@@ -2,6 +2,7 @@
"files.associations": {
"stm32f10x_crc.h": "c",
"stm32f10x.h": "c",
- "semaphore.h": "c"
+ "semaphore.h": "c",
+ "freertos.h": "c"
}
}
\ No newline at end of file
diff --git a/STM32/Environment_Node/Drivers/DHT11.c b/STM32/Environment_Node/Drivers/DHT11.c
index 5921254..ce1c751 100644
--- a/STM32/Environment_Node/Drivers/DHT11.c
+++ b/STM32/Environment_Node/Drivers/DHT11.c
@@ -5,7 +5,7 @@ void vDht11Rst(void)
{
vDht11Mode(OUT); //SET OUTPUT
DHT11_Low; //拉低DQ
- vTaskDelay(20); //主机拉低18~30ms
+ vDelayMs(20); //主机拉低18~30ms
DHT11_High; //DQ=1
vDelayUs(13); //主机拉高10~35us
}
diff --git a/STM32/Environment_Node/Drivers/DHT11.h b/STM32/Environment_Node/Drivers/DHT11.h
index 79d9b1b..abafbbe 100644
--- a/STM32/Environment_Node/Drivers/DHT11.h
+++ b/STM32/Environment_Node/Drivers/DHT11.h
@@ -1,10 +1,8 @@
-#ifndef __DHT11_H
-#define __DHT11_H
+#ifndef __DHT11_H__
+#define __DHT11_H__
#include "stm32f10x.h" // Device header
#include "Delay.h"
-#include "FreeRTOS.h"
-#include "task.h"
/* DHT11的设置 */
#define DHT11_GPIO_CLK RCC_APB2Periph_GPIOB
diff --git a/STM32/Environment_Node/Drivers/LED.h b/STM32/Environment_Node/Drivers/LED.h
index 2b11730..89cc265 100644
--- a/STM32/Environment_Node/Drivers/LED.h
+++ b/STM32/Environment_Node/Drivers/LED.h
@@ -4,6 +4,11 @@
#include "stm32f10x.h" // Device header
+#define LED_PC13_WORK_MODE LED_PC13_LIGHT_MODE
+
+#define LED_PC13_STM32_STATE_MODE 0
+#define LED_PC13_LIGHT_MODE 1
+
/* PC13LED的设置 */
#define LED_PC13_GPIO_CLOCK RCC_APB2Periph_GPIOC
#define LED_PC13_GPIO_PORT GPIOC
diff --git a/STM32/Environment_Node/Drivers/LoRa.c b/STM32/Environment_Node/Drivers/LoRa.c
index 1af8c32..2194205 100644
--- a/STM32/Environment_Node/Drivers/LoRa.c
+++ b/STM32/Environment_Node/Drivers/LoRa.c
@@ -1,5 +1,11 @@
#include "LoRa.h"
+/**
+ * @brief LoRa发送节点ID数据包封装函数。
+ * @note LoRa在定点模式下执行节点间通信的主要函数。
+ * @param ucNodeId 节点ID,如Node1,也就是D1等等。
+ * @retval None
+ */
void vLoRaConnectionPkt(uint8_t ucNodeId)
{
if (ucNodeId == xLoRaNode1Config.ucLoRaNode1Identifier)
@@ -20,9 +26,9 @@ void vLoRaConnectionPkt(uint8_t ucNodeId)
}
/**
- * @brief LoRa发送发送hex数据包函数,也是LoRa在定点模式下执行节点间通信的主要函数。
- * @note hex数据包的格式为固定包长
- * @param None
+ * @brief LoRa发送节点ID数据包封装函数。
+ * @note 通过发送节点ID以声明自己是什么节点。
+ * @param ucNodeId 节点ID,如Node1,也就是D1等等。
* @retval None
*/
void vLoRaToGateIdPkt(uint8_t ucNodeId)
@@ -38,6 +44,12 @@ void vLoRaToGateIdPkt(uint8_t ucNodeId)
}
}
+/**
+ * @brief LoRa发送传感器ID数据包封装函数。
+ * @note 通过发送传感器ID以声明自己是什么传感器。
+ * @param ucSensorId 传感器ID,如DHT11温湿度传感器,也就是ucIdDht11等等。
+ * @retval None
+ */
void vLoRaToGateSenIdPkt(uint8_t ucSensorId)
{
if (ucSensorId == xLoRaSensorID.ucIdDht11)
@@ -59,6 +71,12 @@ void vLoRaToGateSenIdPkt(uint8_t ucSensorId)
}
}
+/**
+ * @brief LoRa发送执行器ID数据包封装函数。
+ * @note 通过发送执行器ID以声明自己是什么执行器。
+ * @param ucExeId 执行器ID,如LED灯,也就是ucIdLed等等。
+ * @retval None
+ */
void vLoRaToGateExeIdPkt(uint8_t ucExeId)
{
if (ucExeId == xLoRaExecutorID.ucIdLed)
@@ -84,6 +102,12 @@ void vLoRaToGateExeIdPkt(uint8_t ucExeId)
}
}
+/**
+ * @brief LoRa节点接收返回数据封装函数。
+ * @note 通过从串口消息队列接收什么数据判断是什么指令。
+ * @param *pucData 接收到的数据。
+ * @retval eLoRaMsgRecStatus 枚举,包括节点ID、传感器ID、执行器ID和开关指令。
+ */
eLoRaMsgRecStatus xLoRaMessageReceived(uint8_t *pucData)
{
switch (*pucData)
@@ -121,13 +145,21 @@ eLoRaMsgRecStatus xLoRaMessageReceived(uint8_t *pucData)
}
}
-eLoRaMsgRecStatus xLoRaMsgProcess(uint8_t ucDataRecNodeId, uint8_t ucDataRecExeId, uint8_t ucDataRecExeSta)
+/**
+ * @brief LoRa节点处理返回数据封装函数。
+ * @note 通过LoRa节点接收返回数据封装函数判断是什么指令,并细化处理,可减少代码复杂度。该API可直接被其他函数调用。
+ * @param ucDataRecNodeId 要判断的节点ID。
+ * @param ucDataRecExeId 要判断的执行器ID。
+ * @param ucDataRecExeStatus 要判断的传感器ID。
+ * @retval eLoRaMsgRecStatus 枚举,包括节点ID、传感器ID、执行器ID和开关指令。
+ */
+eLoRaMsgRecStatus xLoRaMsgProcess(uint8_t ucDataRecNodeId, uint8_t ucDataRecExeId, uint8_t ucDataRecExeStatus)
{
switch (xLoRaMessageReceived(&ucDataRecNodeId))
{
case statusNode1:
/* code */
- while (xLoRaMessageReceived(&ucDataRecExeSta) == statusExeOn)
+ while (xLoRaMessageReceived(&ucDataRecExeStatus) == statusExeOn)
{
/* code */
if (xLoRaMessageReceived(&ucDataRecExeId) == statusExeLed)
@@ -144,7 +176,7 @@ eLoRaMsgRecStatus xLoRaMsgProcess(uint8_t ucDataRecNodeId, uint8_t ucDataRecExeI
return statusHumidifierOn;
}
}
- while (xLoRaMessageReceived(&ucDataRecExeSta) == statusExeOff)
+ while (xLoRaMessageReceived(&ucDataRecExeStatus) == statusExeOff)
{
/* code */
if (xLoRaMessageReceived(&ucDataRecExeId) == statusExeLed)
@@ -163,7 +195,7 @@ eLoRaMsgRecStatus xLoRaMsgProcess(uint8_t ucDataRecNodeId, uint8_t ucDataRecExeI
}
case statusNode2:
- while (xLoRaMessageReceived(&ucDataRecExeSta) == statusExeOn)
+ while (xLoRaMessageReceived(&ucDataRecExeStatus) == statusExeOn)
{
/* code */
if (xLoRaMessageReceived(&ucDataRecExeId) == statusExeBuzzer)
@@ -176,7 +208,7 @@ eLoRaMsgRecStatus xLoRaMsgProcess(uint8_t ucDataRecNodeId, uint8_t ucDataRecExeI
return statusServoOn;
}
}
- while (xLoRaMessageReceived(&ucDataRecExeSta) == statusExeOff)
+ while (xLoRaMessageReceived(&ucDataRecExeStatus) == statusExeOff)
{
/* code */
if (xLoRaMessageReceived(&ucDataRecExeId) == statusExeBuzzer)
diff --git a/STM32/Environment_Node/Drivers/LoRa.h b/STM32/Environment_Node/Drivers/LoRa.h
index 35dcd59..9790f39 100644
--- a/STM32/Environment_Node/Drivers/LoRa.h
+++ b/STM32/Environment_Node/Drivers/LoRa.h
@@ -1,12 +1,9 @@
#ifndef __LORA_H__
#define __LORA_H__
-#include "USART3.h"
-
-// #define LORA_MODE
-
/* LoRa的静态设置 */
#define LORA_MODE_INIT 1
+#define LORA_IS_GATEWAY_NODE 0
#define LORA_GPIO_PIN_TX GPIO_Pin_10
#define LORA_GPIO_PIN_RX GPIO_Pin_11
#define LORA_GPIO_PIN_ATK_AUX GPIO_Pin_4 //PA4
@@ -34,6 +31,8 @@
#define LORA_EXECUTOR_COMMAND_ON 0x01
#define LORA_EXECUTOR_COMMAND_OFF 0x00
+#include "USART3.h"
+
/* LoRa移植层 */
typedef enum {
@@ -141,10 +140,14 @@ static LoRaExecutorCmd_t xLoRaExecutorCommand = {
};
void vLoRaConnectionPkt(uint8_t ucNodeId);
-void vLoRaToGateIdPkt(uint8_t ucNodeId);
-void vLoRaToGateSenIdPkt(uint8_t ucSensorId);
-void vLoRaToGateExeIdPkt(uint8_t ucExecutorId);
-eLoRaMsgRecStatus xLoRaMessageReceived(uint8_t *pucData);
-eLoRaMsgRecStatus xLoRaMsgProcess(uint8_t ucDataRecNodeId, uint8_t ucDataRecExeId, uint8_t ucDataRecExeSta);
+
+#if(LORA_IS_GATEWAY_NODE == 1)
+#elif(LORA_IS_GATEWAY_NODE == 0)
+ void vLoRaToGateIdPkt(uint8_t ucNodeId);
+ void vLoRaToGateSenIdPkt(uint8_t ucSensorId);
+ void vLoRaToGateExeIdPkt(uint8_t ucExecutorId);
+ eLoRaMsgRecStatus xLoRaMessageReceived(uint8_t *pucData);
+ eLoRaMsgRecStatus xLoRaMsgProcess(uint8_t ucDataRecNodeId, uint8_t ucDataRecExeId, uint8_t ucDataRecExeStatus);
+#endif
#endif
diff --git a/STM32/Environment_Node/STM32Template.uvguix.Exploration b/STM32/Environment_Node/STM32Template.uvguix.Exploration
index ddb901a..9cd90e0 100644
--- a/STM32/Environment_Node/STM32Template.uvguix.Exploration
+++ b/STM32/Environment_Node/STM32Template.uvguix.Exploration
@@ -110,8 +110,8 @@
0
- 1223
- 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000008000000000000000100000063433A5C55736572735C4578706C6F726174696F6E5C4465736B746F705C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C456E7669726F6E6D656E745F4E6F64655C557365725C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF67433A5C55736572735C4578706C6F726174696F6E5C4465736B746F705C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C456E7669726F6E6D656E745F4E6F64655C53797374656D5C5553415254332E6800000000085553415254332E6800000000FFDC7800FFFFFFFF67433A5C55736572735C4578706C6F726174696F6E5C4465736B746F705C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C456E7669726F6E6D656E745F4E6F64655C53797374656D5C5553415254332E6300000000085553415254332E6300000000BECEA100FFFFFFFF66433A5C55736572735C4578706C6F726174696F6E5C4465736B746F705C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C456E7669726F6E6D656E745F4E6F64655C447269766572735C4C6F52612E6800000000064C6F52612E6800000000F0A0A100FFFFFFFF66433A5C55736572735C4578706C6F726174696F6E5C4465736B746F705C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C456E7669726F6E6D656E745F4E6F64655C447269766572735C4C6F52612E6300000000064C6F52612E6300000000BCA8E100FFFFFFFF7A433A5C55736572735C4578706C6F726174696F6E5C4465736B746F705C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C456E7669726F6E6D656E745F4E6F64655C53797374656D46696C65735C737461727475705F73746D3332663130785F6D642E730000000016737461727475705F73746D3332663130785F6D642E73000000009CC1B600FFFFFFFF67433A5C55736572735C4578706C6F726174696F6E5C4465736B746F705C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C456E7669726F6E6D656E745F4E6F64655C447269766572735C52656C61792E63000000000752656C61792E6300000000F7B88600FFFFFFFF67433A5C55736572735C4578706C6F726174696F6E5C4465736B746F705C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C456E7669726F6E6D656E745F4E6F64655C447269766572735C52656C61792E68000000000752656C61792E6800000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000030030000
+ 1215
+ 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000008000000000000000100000062453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C456E7669726F6E6D656E745F4E6F64655C557365725C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF66453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C456E7669726F6E6D656E745F4E6F64655C53797374656D5C5553415254332E6800000000085553415254332E6800000000FFDC7800FFFFFFFF66453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C456E7669726F6E6D656E745F4E6F64655C53797374656D5C5553415254332E6300000000085553415254332E6300000000BECEA100FFFFFFFF65453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C456E7669726F6E6D656E745F4E6F64655C447269766572735C4C6F52612E6800000000064C6F52612E6800000000F0A0A100FFFFFFFF65453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C456E7669726F6E6D656E745F4E6F64655C447269766572735C4C6F52612E6300000000064C6F52612E6300000000BCA8E100FFFFFFFF79453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C456E7669726F6E6D656E745F4E6F64655C53797374656D46696C65735C737461727475705F73746D3332663130785F6D642E730000000016737461727475705F73746D3332663130785F6D642E73000000009CC1B600FFFFFFFF66453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C456E7669726F6E6D656E745F4E6F64655C447269766572735C52656C61792E63000000000752656C61792E6300000000F7B88600FFFFFFFF66453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C456E7669726F6E6D656E745F4E6F64655C447269766572735C52656C61792E68000000000752656C61792E6800000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000030030000
@@ -174,7 +174,7 @@
16
- 22000000390000003E01000075020000
+ BE000000D5000000DA01000011030000
@@ -274,7 +274,7 @@
16
- 22000000390000001201000002010000
+ BE000000D5000000AE0100009E010000
@@ -314,7 +314,7 @@
16
- 22000000390000001201000002010000
+ BE000000D5000000AE0100009E010000
@@ -374,7 +374,7 @@
16
- 2200000039000000EA020000C7000000
+ BE000000D50000008603000063010000
@@ -454,7 +454,7 @@
16
- 22000000390000003E01000075020000
+ BE000000D5000000DA01000011030000
@@ -474,7 +474,7 @@
16
- 22000000390000003E01000075020000
+ BE000000D5000000DA01000011030000
@@ -526,7 +526,7 @@
0
32767
0
- 4096
+ 32768
0
16
@@ -554,7 +554,7 @@
16
- 2200000039000000EA020000C7000000
+ A4000000BB0000006C03000049010000
@@ -614,7 +614,7 @@
16
- 22000000390000001201000002010000
+ BE000000D5000000AE0100009E010000
@@ -694,7 +694,7 @@
16
- 22000000390000001201000002010000
+ A4000000BB0000009401000084010000
@@ -714,7 +714,7 @@
16
- 2200000039000000EA020000C7000000
+ A4000000BB0000006C03000049010000
@@ -734,7 +734,7 @@
16
- 22000000390000001201000002010000
+ BE000000D5000000AE0100009E010000
@@ -754,7 +754,7 @@
16
- 22000000390000001201000002010000
+ BE000000D5000000AE0100009E010000
@@ -774,7 +774,7 @@
16
- 22000000390000001201000002010000
+ BE000000D5000000AE0100009E010000
@@ -874,7 +874,7 @@
16
- 22000000390000001201000002010000
+ A4000000BB0000009401000084010000
@@ -934,7 +934,7 @@
16
- 22000000390000001201000002010000
+ A4000000BB0000009401000084010000
@@ -954,7 +954,7 @@
16
- 22000000390000001201000002010000
+ A4000000BB0000009401000084010000
@@ -974,7 +974,7 @@
16
- 22000000390000001201000002010000
+ A4000000BB0000009401000084010000
@@ -994,7 +994,7 @@
16
- 22000000390000001201000002010000
+ BE000000D5000000AE0100009E010000
@@ -1014,7 +1014,7 @@
16
- 22000000390000001201000002010000
+ BE000000D5000000AE0100009E010000
@@ -1034,7 +1034,7 @@
16
- 22000000390000001201000002010000
+ A4000000BB0000009401000084010000
@@ -1094,7 +1094,7 @@
16
- 22000000390000001201000002010000
+ A4000000BB0000009401000084010000
@@ -1154,7 +1154,7 @@
16
- 22000000390000003E01000075020000
+ BE000000D5000000DA01000011030000
@@ -1186,7 +1186,7 @@
0
32767
0
- 4096
+ 32768
0
16
@@ -1266,7 +1266,7 @@
0
32767
0
- 4096
+ 32768
0
16
@@ -1314,7 +1314,7 @@
16
- 22000000390000001201000002010000
+ A4000000BB0000009401000084010000
@@ -1334,7 +1334,7 @@
16
- 22000000390000001201000002010000
+ A4000000BB0000009401000084010000
@@ -1354,7 +1354,7 @@
16
- 22000000390000001201000002010000
+ A4000000BB0000009401000084010000
@@ -1374,7 +1374,7 @@
16
- 22000000390000001201000002010000
+ A4000000BB0000009401000084010000
@@ -1394,7 +1394,7 @@
16
- 22000000390000001201000002010000
+ A4000000BB0000009401000084010000
@@ -1454,7 +1454,7 @@
16
- 22000000390000001201000002010000
+ A4000000BB0000009401000084010000
@@ -1474,7 +1474,7 @@
16
- 22000000390000001201000002010000
+ A4000000BB0000009401000084010000
@@ -1494,7 +1494,7 @@
16
- 22000000390000001201000002010000
+ A4000000BB0000009401000084010000
@@ -1514,7 +1514,7 @@
16
- 22000000390000001201000002010000
+ A4000000BB0000009401000084010000
@@ -1554,7 +1554,7 @@
16
- 22000000390000001201000002010000
+ A4000000BB0000009401000084010000
@@ -1634,7 +1634,7 @@
16
- 22000000390000001201000002010000
+ BE000000D5000000AE0100009E010000
@@ -1654,7 +1654,7 @@
16
- 22000000390000001201000002010000
+ BE000000D5000000AE0100009E010000
@@ -1674,7 +1674,7 @@
16
- 22000000390000001201000002010000
+ BE000000D5000000AE0100009E010000
@@ -1694,7 +1694,7 @@
16
- 22000000390000001201000002010000
+ BE000000D5000000AE0100009E010000
@@ -1794,7 +1794,7 @@
16
- 22000000390000001201000002010000
+ A4000000BB0000009401000084010000
@@ -1822,7 +1822,7 @@
Build
976
- 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000002001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000
+ 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000
583
@@ -3606,9 +3606,9 @@
0
.\User\main.c
- 9
- 43
- 57
+ 13
+ 112
+ 203
1
0
@@ -3624,9 +3624,9 @@
.\System\USART3.c
- 33
- 44
- 58
+ 24
+ 1
+ 106
1
0
@@ -3634,7 +3634,7 @@
.\Drivers\LoRa.h
6
- 25
+ 3
4
1
@@ -3642,9 +3642,9 @@
.\Drivers\LoRa.c
- 36
+ 18
1
- 46
+ 18
1
0
diff --git a/STM32/Environment_Node/System/SysTick.h b/STM32/Environment_Node/System/SysTick.h
deleted file mode 100644
index 1f64bc0..0000000
--- a/STM32/Environment_Node/System/SysTick.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef __SysTick_H__
-#define __SysTick_H__
-
-#include "stm32f10x.h" // Device header
-
-#define SYSTEM SYSTEM_FREERTOS
-#define SYSTEM_NONE 0
-#define SYSTEM_FREERTOS 1
-#define SYSTEM_UCOSII 2
-#define SYSTEM_UCOSIII 3
-#define SYSTEM_RT_THREAD 4
-#define SYSTEM_AZURE_RTOS 5
-
-typedef struct {
- uint8_t ucFacUs;
- int16_t usFacMs;
-} UcFacInit_t;
-
-static UcFacInit_t xUcFacInit = {
- .ucFacUs = 0,
- .usFacMs = 0
-};
-
-void vSysTickInit(uint8_t ucSYSCLK);
-void vDelayUs(uint32_t ulNus);
-void vDelayMs(uint16_t usNms);
-
-#endif
diff --git a/STM32/Environment_Node/System/USART3.c b/STM32/Environment_Node/System/USART3.c
index bc7cf43..74c08e9 100644
--- a/STM32/Environment_Node/System/USART3.c
+++ b/STM32/Environment_Node/System/USART3.c
@@ -128,11 +128,15 @@ void USART3_IRQHandler(void)
if (USART_GetITStatus(USART3, USART_IT_RXNE) == SET)
{
/* code */
- BaseType_t xHigherPriorityTaskWoken = pdFALSE;
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART3);
- xQueueSendFromISR(xQueueUsart3IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
+ #if (USE_NONE_SYSTEM == 1)
+ #elif (USE_FREERTOS == 1)
+ BaseType_t xHigherPriorityTaskWoken = pdFALSE;
+ xQueueSendFromISR(xQueueUsart3IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
+ /* 问题根源:请求上下文切换 */
+ portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
+ #elif (USE_OSAL == 1)
+ #endif
USART_ClearITPendingBit(USART3, USART_IT_RXNE);
- /* 问题根源:请求上下文切换 */
- portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
}
}
diff --git a/STM32/Environment_Node/System/USART3.h b/STM32/Environment_Node/System/USART3.h
index 7a96048..850ab56 100644
--- a/STM32/Environment_Node/System/USART3.h
+++ b/STM32/Environment_Node/System/USART3.h
@@ -1,21 +1,32 @@
#ifndef __USART3_H__
#define __USART3_H__
-#include "stm32f10x.h" // Device header
-#include "FreeRTOS.h"
-#include "queue.h"
-#include
-#include
-#include
-
+#define USE_NONE_SYSTEM 0
+#define USE_FREERTOS 1
+#define USE_OSAL 0
#define vLoRaIrqHandler USART3_IRQHandler
-
#define USART3_GPIO_PIN_TX GPIO_Pin_10
#define USART3_GPIO_PIN_RX GPIO_Pin_11
#define USART3_GPIO_PIN_ATK_AUX GPIO_Pin_4 // PA4
#define USART3_GPIO_PIN_ATK_MD0 GPIO_Pin_3 // PB3
-extern QueueHandle_t xQueueUsart3IrqHdlr;
+#if (USE_NONE_SYSTEM == 1)
+#elif (USE_FREERTOS == 1)
+ #include "FreeRTOS.h"
+ #include "queue.h"
+#elif (USE_OSAL == 1)
+#endif
+
+#include "stm32f10x.h" // Device header
+#include
+#include
+#include
+
+#if (USE_NONE_SYSTEM == 1)
+#elif (USE_FREERTOS == 1)
+ extern QueueHandle_t xQueueUsart3IrqHdlr;
+#elif (USE_OSAL == 1)
+#endif
void vUsart3Init(uint32_t ulUsart3Baudrate);
void vUsart3SendByte(uint8_t ucByte);
diff --git a/STM32/Environment_Node/User/main.c b/STM32/Environment_Node/User/main.c
index d2a219e..ce1a202 100644
--- a/STM32/Environment_Node/User/main.c
+++ b/STM32/Environment_Node/User/main.c
@@ -108,21 +108,21 @@ void vTaskLoRaToGatePkt(void *pvParameters)
{
uint8_t ucRecTempData = 0, ucRecHumiData = 0;
/* 定义一个返回值判断是否接收成功 */
- BaseType_t xQueueTempRetval, xQueueHumiRetval;
+ BaseType_t xRetvalQueueTemp, xRetvalQueueHumi;
while (1)
{
/* code */
/* 接收队列:队列句柄、传输转存的目标变量或数组和未接收到数据的等待时长,分3种情况,分别为0、0~portMAX_DELAY和portMAX_DELAY三种,分别对应
* 一点不等、等一点时间和等最大时间。在等待队列数据的情况下,该接收队列所在的任务会一直处于阻塞态。
*/
- xQueueTempRetval = xQueueReceive(xQueueTempHdlr, &ucRecTempData, pdMS_TO_TICKS(10));
- xQueueHumiRetval = xQueueReceive(xQueueHumiHdlr, &ucRecHumiData, pdMS_TO_TICKS(10));
+ xRetvalQueueTemp = xQueueReceive(xQueueTempHdlr, &ucRecTempData, pdMS_TO_TICKS(10));
+ xRetvalQueueHumi = xQueueReceive(xQueueHumiHdlr, &ucRecHumiData, pdMS_TO_TICKS(10));
/* 发送 */
vLoRaConnectionPkt(xLoRaGateConfig.ucLoRaGateChannel);
vLoRaToGateIdPkt(xLoRaNode1Config.ucLoRaNode1Identifier);
vLoRaToGateSenIdPkt(xLoRaSensorID.ucIdDht11);
/* 检测接收队列是否成功 */
- if (xQueueTempRetval == pdTRUE && xQueueHumiRetval == pdTRUE)
+ if (xRetvalQueueTemp == pdTRUE && xRetvalQueueHumi == pdTRUE)
{
/* code */
vUsart3SendArray(&ucRecTempData, 1);
@@ -179,49 +179,60 @@ void vTaskLoRaMsgRec(void *pvParameters)
void vCreateTasksList(void)
{
+ #if defined __LED_H__
+ #if LED_PC13_WORK_MODE == LED_PC13_STM32_STATE_MODE
/* 创建任务,参数分别为任务函数名称、任务名字、栈大小、返回参数值、优先级、任务句柄。 */
- // xTaskCreate(
- // (TaskFunction_t ) vTaskStateLed,
- // (char * ) "TaskName_StateLed",
- // (configSTACK_DEPTH_TYPE) 256,
- // (void * ) NULL,
- // (UBaseType_t ) 2,
- // (TaskHandle_t * ) &xTaskStateLedHdlr);
- xTaskCreate(
- (TaskFunction_t ) vTaskLedControl,
- (char * ) "TaskName_LedControl",
- (configSTACK_DEPTH_TYPE) 256,
- (void * ) NULL,
- (UBaseType_t ) 2,
- (TaskHandle_t * ) &xTaskLedCtrlHdlr);
- xTaskCreate(
- (TaskFunction_t ) vTaskFanControl,
- (char * ) "TaskName_FanControl",
- (configSTACK_DEPTH_TYPE) 256,
- (void * ) NULL,
- (UBaseType_t ) 2,
- (TaskHandle_t * ) &xTaskFanCtrlHdlr);
- xTaskCreate(
- (TaskFunction_t ) vTaskDht11,
- (char * ) "TaskName_DHT11",
- (configSTACK_DEPTH_TYPE) 512,
- (void * ) NULL,
- (UBaseType_t ) 2,
- (TaskHandle_t * ) &xTaskDht11Hdlr);
- xTaskCreate(
- (TaskFunction_t ) vTaskLoRaToGatePkt,
- (char * ) "TaskName_LoRaSendToGateway",
- (configSTACK_DEPTH_TYPE) 512,
- (void * ) NULL,
- (UBaseType_t ) 2,
- (TaskHandle_t * ) &xTaskLoRaToGateHdlr);
- xTaskCreate(
- (TaskFunction_t ) vTaskLoRaMsgRec,
- (char * ) "TaskName_LoRaReceivedMessage",
- (configSTACK_DEPTH_TYPE) 512,
- (void * ) NULL,
- (UBaseType_t ) 2,
- (TaskHandle_t * ) &xTaskLoRaMsgRecHdlr);
+ xTaskCreate(
+ (TaskFunction_t ) vTaskStateLed,
+ (char * ) "TaskName_StateLed",
+ (configSTACK_DEPTH_TYPE) 256,
+ (void * ) NULL,
+ (UBaseType_t ) 2,
+ (TaskHandle_t * ) &xTaskStateLedHdlr);
+ #else
+ xTaskCreate(
+ (TaskFunction_t ) vTaskLedControl,
+ (char * ) "TaskName_LedControl",
+ (configSTACK_DEPTH_TYPE) 256,
+ (void * ) NULL,
+ (UBaseType_t ) 2,
+ (TaskHandle_t * ) &xTaskLedCtrlHdlr);
+ #endif
+ #endif
+ #if defined __RELAY_H__
+ xTaskCreate(
+ (TaskFunction_t ) vTaskFanControl,
+ (char * ) "TaskName_FanControl",
+ (configSTACK_DEPTH_TYPE) 256,
+ (void * ) NULL,
+ (UBaseType_t ) 2,
+ (TaskHandle_t * ) &xTaskFanCtrlHdlr);
+ #endif
+ #if defined __DHT11_H__
+ xTaskCreate(
+ (TaskFunction_t ) vTaskDht11,
+ (char * ) "TaskName_DHT11",
+ (configSTACK_DEPTH_TYPE) 512,
+ (void * ) NULL,
+ (UBaseType_t ) 2,
+ (TaskHandle_t * ) &xTaskDht11Hdlr);
+ #endif
+ #if defined __LORA_H__
+ xTaskCreate(
+ (TaskFunction_t ) vTaskLoRaToGatePkt,
+ (char * ) "TaskName_LoRaSendToGateway",
+ (configSTACK_DEPTH_TYPE) 512,
+ (void * ) NULL,
+ (UBaseType_t ) 2,
+ (TaskHandle_t * ) &xTaskLoRaToGateHdlr);
+ xTaskCreate(
+ (TaskFunction_t ) vTaskLoRaMsgRec,
+ (char * ) "TaskName_LoRaReceivedMessage",
+ (configSTACK_DEPTH_TYPE) 512,
+ (void * ) NULL,
+ (UBaseType_t ) 2,
+ (TaskHandle_t * ) &xTaskLoRaMsgRecHdlr);
+ #endif
}
void vCreateQueuesList(void)
@@ -249,8 +260,8 @@ void vCreateSemaphoresList(void)
{
xSemLedOnHdlr = xSemaphoreCreateBinary();
xSemLedOffHdlr = xSemaphoreCreateBinary();
- xSemFanOnHdlr = xSemaphoreCreateBinary();
- xSemFanOffHdlr = xSemaphoreCreateBinary();
+ xSemFanOnHdlr = xSemaphoreCreateBinary();
+ xSemFanOffHdlr = xSemaphoreCreateBinary();
}
int main(void)
diff --git a/STM32/Gateway_Node/.vscode/settings.json b/STM32/Gateway_Node/.vscode/settings.json
new file mode 100644
index 0000000..7b56f15
--- /dev/null
+++ b/STM32/Gateway_Node/.vscode/settings.json
@@ -0,0 +1,6 @@
+{
+ "files.associations": {
+ "stm32f10x.h": "c",
+ "core_cm3.h": "c"
+ }
+}
\ No newline at end of file
diff --git a/STM32/Gateway_Node/Drivers/ESP8266.c b/STM32/Gateway_Node/Drivers/ESP8266.c
new file mode 100644
index 0000000..ec97834
--- /dev/null
+++ b/STM32/Gateway_Node/Drivers/ESP8266.c
@@ -0,0 +1 @@
+#include "ESP8266.h"
diff --git a/STM32/Gateway_Node/Drivers/ESP8266.h b/STM32/Gateway_Node/Drivers/ESP8266.h
new file mode 100644
index 0000000..89ff7c3
--- /dev/null
+++ b/STM32/Gateway_Node/Drivers/ESP8266.h
@@ -0,0 +1,5 @@
+#ifndef __ESP8266_H__
+#define __ESP8266_H__
+
+
+#endif
diff --git a/STM32/Gateway_Node/Drivers/LED.c b/STM32/Gateway_Node/Drivers/LED.c
new file mode 100644
index 0000000..a162540
--- /dev/null
+++ b/STM32/Gateway_Node/Drivers/LED.c
@@ -0,0 +1,35 @@
+#include "LED.h"
+void vPc13LedInit(void)
+{
+ RCC_APB2PeriphClockCmd(LED_PC13_GPIO_CLOCK,ENABLE);
+ GPIO_InitTypeDef GPIO_InitStructure;
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
+ GPIO_InitStructure.GPIO_Pin = LED_PC13_GPIO_PIN; //PC13
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+ GPIO_Init(LED_PC13_GPIO_PORT,&GPIO_InitStructure);
+
+ GPIO_SetBits(LED_PC13_GPIO_PORT,LED_PC13_GPIO_PIN);
+}
+
+/* 如果led较多,可以定义一个LED_Set函数,然后定义两个参数控制,一个参数选择操作哪个灯,一个参数选择开还是关 */
+void vPc13LedOn(void)
+{
+ GPIO_ResetBits(LED_PC13_GPIO_PORT,LED_PC13_GPIO_PIN);
+}
+
+void vPc13LedOff(void)
+{
+ GPIO_SetBits(LED_PC13_GPIO_PORT,LED_PC13_GPIO_PIN);
+}
+
+/* 实现按一下熄灭,再按一下点亮该如何实现,就是按键按下,LED的状态取反,实现电平翻转,一般用于输出模式下 */
+void vPc13LedTurn(void)
+{
+ if(GPIO_ReadOutputDataBit(LED_PC13_GPIO_PORT,LED_PC13_GPIO_PIN) == 0)//如果PA0的输出寄存器为0
+ {
+ GPIO_SetBits(LED_PC13_GPIO_PORT,LED_PC13_GPIO_PIN); //将PA0置1
+ }else
+ {
+ GPIO_ResetBits(LED_PC13_GPIO_PORT,LED_PC13_GPIO_PIN);
+ }
+}
diff --git a/STM32/Gateway_Node/Drivers/LED.h b/STM32/Gateway_Node/Drivers/LED.h
new file mode 100644
index 0000000..2b11730
--- /dev/null
+++ b/STM32/Gateway_Node/Drivers/LED.h
@@ -0,0 +1,18 @@
+/* 添加一个防止头文件重复包含的代码if not define,如果没有定义该字符串,那么就先定义一个 */
+#ifndef __LED_H__
+#define __LED_H__
+
+#include "stm32f10x.h" // Device header
+
+/* PC13LED的设置 */
+#define LED_PC13_GPIO_CLOCK RCC_APB2Periph_GPIOC
+#define LED_PC13_GPIO_PORT GPIOC
+#define LED_PC13_GPIO_PIN GPIO_Pin_13
+
+/* 变量声明 */
+void vPc13LedInit(void);
+void vPc13LedOn(void);
+void vPc13LedOff(void);
+void vPc13LedTurn(void);
+
+#endif
diff --git a/STM32/Gateway_Node/Drivers/LoRa.c b/STM32/Gateway_Node/Drivers/LoRa.c
new file mode 100644
index 0000000..af2dcb1
--- /dev/null
+++ b/STM32/Gateway_Node/Drivers/LoRa.c
@@ -0,0 +1,195 @@
+#include "LoRa.h"
+
+void vLoRaConnectionPkt(uint8_t ucNodeId)
+{
+ if (ucNodeId == xLoRaNode1Config.ucLoRaNode1Identifier)
+ {
+ /* code */
+ vUsartSendArray(USART3, (uint8_t *)&xLoRaNode1Config, 3);
+ }
+ else if (ucNodeId == xLoRaNode2Config.ucLoRaNode2Identifier)
+ {
+ /* code */
+ vUsartSendArray(USART3, (uint8_t *)&xLoRaNode2Config, 3);
+ }
+ else
+ {
+ /* code */
+ vUsartSendArray(USART3, (uint8_t *)&xLoRaGateConfig, 3);
+ }
+}
+
+/**
+ * @brief LoRa发送发送hex数据包函数,也是LoRa在定点模式下执行节点间通信的主要函数。
+ * @note hex数据包的格式为固定包长
+ * @param None
+ * @retval None
+ */
+void vLoRaToGateIdPkt(uint8_t ucNodeId)
+{
+ if (ucNodeId == xLoRaNode1Config.ucLoRaNode1Identifier)
+ {
+ /* code */
+ vUsartSendArray(USART3, (uint8_t *)&xLoRaNode1Config.ucLoRaNode1Identifier, 1);
+ } else if (ucNodeId == xLoRaNode2Config.ucLoRaNode2Identifier)
+ {
+ /* code */
+ vUsartSendArray(USART3, (uint8_t *)&xLoRaNode2Config.ucLoRaNode2Identifier, 1);
+ }
+}
+
+void vLoRaToGateSenIdPkt(uint8_t ucSensorId)
+{
+ if (ucSensorId == xLoRaSensorID.ucIdDht11)
+ {
+ /* code */
+ vUsartSendArray(USART3, (uint8_t *)&xLoRaSensorID.ucIdDht11, 1);
+ } else if (ucSensorId == xLoRaSensorID.ucIdMq2)
+ {
+ /* code */
+ vUsartSendArray(USART3, (uint8_t *)&xLoRaSensorID.ucIdMq2, 1);
+ } else if (ucSensorId == xLoRaSensorID.ucIdFire)
+ {
+ /* code */
+ vUsartSendArray(USART3, (uint8_t *)&xLoRaSensorID.ucIdFire, 1);
+ } else if (ucSensorId == xLoRaSensorID.ucIdLight)
+ {
+ /* code */
+ vUsartSendArray(USART3, (uint8_t *)&xLoRaSensorID.ucIdLight, 1);
+ }
+}
+
+void vLoRaToGateExeIdPkt(uint8_t ucExeId)
+{
+ if (ucExeId == xLoRaExecutorID.ucIdLed)
+ {
+ /* code */
+ vUsartSendArray(USART3, (uint8_t *)&xLoRaExecutorID.ucIdLed, 1);
+ } else if (ucExeId == xLoRaExecutorID.ucIdFan)
+ {
+ /* code */
+ vUsartSendArray(USART3, (uint8_t *)&xLoRaExecutorID.ucIdFan, 1);
+ } else if (ucExeId == xLoRaExecutorID.ucIdHumidifier)
+ {
+ /* code */
+ vUsartSendArray(USART3, (uint8_t *)&xLoRaExecutorID.ucIdHumidifier, 1);
+ } else if (ucExeId == xLoRaExecutorID.ucIdBuzzer)
+ {
+ /* code */
+ vUsartSendArray(USART3, (uint8_t *)&xLoRaExecutorID.ucIdBuzzer, 1);
+ } else if (ucExeId == xLoRaExecutorID.ucIdServo)
+ {
+ /* code */
+ vUsartSendArray(USART3, (uint8_t *)&xLoRaExecutorID.ucIdServo, 1);
+ }
+}
+
+eLoRaMsgRecStatus xLoRaMessageReceived(uint8_t *pucData)
+{
+ switch (*pucData)
+ {
+ case 0xD1:
+ /* code */
+ return statusNode1;
+
+ case 0xD2:
+ return statusNode2;
+
+ case 0xFA:
+ return statusExeLed;
+
+ case 0xFB:
+ return statusExeFan;
+
+ case 0xFC:
+ return statusExeHumidifier;
+
+ case 0xFD:
+ return statusExeBuzzer;
+
+ case 0xFE:
+ return statusExeServo;
+
+ case 0x01:
+ return statusExeOn;
+
+ case 0x00:
+ return statusExeOff;
+
+ default:
+ return null;
+ }
+}
+
+eLoRaMsgRecStatus xLoRaMsgProcess(uint8_t ucDataRecNodeId, uint8_t ucDataRecExeId, uint8_t ucDataRecExeSta)
+{
+ switch (xLoRaMessageReceived(&ucDataRecNodeId))
+ {
+ case statusNode1:
+ /* code */
+ while (xLoRaMessageReceived(&ucDataRecExeSta) == statusExeOn)
+ {
+ /* code */
+ if (xLoRaMessageReceived(&ucDataRecExeId) == statusExeLed)
+ {
+ /* code */
+ return statusLedOn;
+ } else if (xLoRaMessageReceived(&ucDataRecExeId) == statusExeFan)
+ {
+ /* code */
+ return statusFanOn;
+ } else if (xLoRaMessageReceived(&ucDataRecExeId) == statusExeHumidifier)
+ {
+ /* code */
+ return statusHumidifierOn;
+ }
+ }
+ while (xLoRaMessageReceived(&ucDataRecExeSta) == statusExeOff)
+ {
+ /* code */
+ if (xLoRaMessageReceived(&ucDataRecExeId) == statusExeLed)
+ {
+ /* code */
+ return statusLedOff;
+ } else if (xLoRaMessageReceived(&ucDataRecExeId) == statusExeFan)
+ {
+ /* code */
+ return statusFanOff;
+ } else if (xLoRaMessageReceived(&ucDataRecExeId) == statusExeHumidifier)
+ {
+ /* code */
+ return statusHumidifierOff;
+ }
+ }
+
+ case statusNode2:
+ while (xLoRaMessageReceived(&ucDataRecExeSta) == statusExeOn)
+ {
+ /* code */
+ if (xLoRaMessageReceived(&ucDataRecExeId) == statusExeBuzzer)
+ {
+ /* code */
+ return statusBuzzerOn;
+ } else if (xLoRaMessageReceived(&ucDataRecExeId) == statusExeServo)
+ {
+ /* code */
+ return statusServoOn;
+ }
+ }
+ while (xLoRaMessageReceived(&ucDataRecExeSta) == statusExeOff)
+ {
+ /* code */
+ if (xLoRaMessageReceived(&ucDataRecExeId) == statusExeBuzzer)
+ {
+ /* code */
+ return statusBuzzerOff;
+ } else if (xLoRaMessageReceived(&ucDataRecExeId) == statusExeServo)
+ {
+ /* code */
+ return statusServoOff;
+ }
+ }
+ default:
+ return null;
+ }
+}
diff --git a/STM32/Gateway_Node/Drivers/LoRa.h b/STM32/Gateway_Node/Drivers/LoRa.h
new file mode 100644
index 0000000..5889939
--- /dev/null
+++ b/STM32/Gateway_Node/Drivers/LoRa.h
@@ -0,0 +1,151 @@
+#ifndef __LORA_H__
+#define __LORA_H__
+
+//#include "USART3.h"
+#include "USART.h"
+
+// #define LORA_MODE
+
+/* LoRa的静态设置 */
+#define LORA_MODE_INIT 1
+#define LORA_GPIO_PIN_TX GPIO_Pin_10
+#define LORA_GPIO_PIN_RX GPIO_Pin_11
+#define LORA_GPIO_PIN_ATK_AUX GPIO_Pin_4 //PA4
+#define LORA_GPIO_PIN_ATK_MD0 GPIO_Pin_3 //PB3
+#define LORA_GATE_ADDR_HIGH 0x03
+#define LORA_GATE_ADDR_LOW 0xE9
+#define LORA_GATE_CHANNEL 0x17
+#define LORA_NODE1_ADDR_HIGH 0x03
+#define LORA_NODE1_ADDR_LOW 0xEA
+#define LORA_NODE1_CHANNEL 0x17
+#define LORA_NODE1_IDENTIFIER 0xD1
+#define LORA_NODE2_ADDR_HIGH 0x03
+#define LORA_NODE2_ADDR_LOW 0xEB
+#define LORA_NODE2_CHANNEL 0x17
+#define LORA_NODE2_IDENTIFIER 0xD2
+#define LORA_SENSOR_DHT11 0xEA
+#define LORA_SENSOR_MQ2 0xEB
+#define LORA_SENSOR_LIGHT 0xEC
+#define LORA_SENSOR_FIRE 0xED
+#define LORA_EXECUTOR_LED 0xFA
+#define LORA_EXECUTOR_FAN 0xFB
+#define LORA_EXECUTOR_HUMIDIFIER 0xFC
+#define LORA_EXECUTOR_BUZZER 0xFD
+#define LORA_EXECUTOR_SERVO 0xFE
+#define LORA_EXECUTOR_COMMAND_ON 0x01
+#define LORA_EXECUTOR_COMMAND_OFF 0x00
+
+/* LoRa移植层 */
+
+typedef enum {
+ statusGatawayNode = 1,
+ statusNode1,
+ statusNode2,
+ statusExeLed,
+ statusExeFan,
+ statusExeHumidifier,
+ statusExeBuzzer,
+ statusExeServo,
+ statusExeOn,
+ statusExeOff,
+ statusLedOn,
+ statusLedOff,
+ statusFanOn,
+ statusFanOff,
+ statusHumidifierOn,
+ statusHumidifierOff,
+ statusBuzzerOn,
+ statusBuzzerOff,
+ statusServoOn,
+ statusServoOff,
+ null
+}eLoRaMsgRecStatus;
+
+typedef struct {
+ uint8_t ucLoRaGateAddrHigh;
+ uint8_t ucLoRaGateAddrLow;
+ uint8_t ucLoRaGateChannel;
+} LoRaGateConfig_t;
+
+typedef struct {
+ uint8_t ucLoRaNode1AddrHigh;
+ uint8_t ucLoRaNode1AddrLow;
+ uint8_t ucLoRaNode1Channel;
+ uint8_t ucLoRaNode1Identifier;
+} LoRaNode1Config_t;
+
+typedef struct {
+ uint8_t ucLoRaNode2AddrHigh;
+ uint8_t ucLoRaNode2AddrLow;
+ uint8_t ucLoRaNode2Channel;
+ uint8_t ucLoRaNode2Identifier;
+} LoRaNode2Config_t;
+
+typedef struct {
+ uint8_t ucIdDht11;
+ uint8_t ucIdMq2;
+ uint8_t ucIdLight;
+ uint8_t ucIdFire;
+} LoRaSensorID_t;
+
+typedef struct {
+ uint8_t ucIdLed;
+ uint8_t ucIdFan;
+ uint8_t ucIdHumidifier;
+ uint8_t ucIdBuzzer;
+ uint8_t ucIdServo;
+} LoRaExecutorID_t;
+
+typedef struct {
+ uint8_t ucCommandOn;
+ uint8_t ucCommandOff;
+} LoRaExecutorCmd_t;
+
+static LoRaGateConfig_t xLoRaGateConfig = {
+ .ucLoRaGateAddrHigh = LORA_GATE_ADDR_HIGH,
+ .ucLoRaGateAddrLow = LORA_GATE_ADDR_LOW,
+ .ucLoRaGateChannel = LORA_GATE_CHANNEL
+};
+
+static LoRaNode1Config_t xLoRaNode1Config = {
+ .ucLoRaNode1AddrHigh = LORA_NODE1_ADDR_HIGH,
+ .ucLoRaNode1AddrLow = LORA_NODE1_ADDR_LOW,
+ .ucLoRaNode1Channel = LORA_NODE1_CHANNEL,
+ .ucLoRaNode1Identifier = LORA_NODE1_IDENTIFIER,
+};
+
+static LoRaNode2Config_t xLoRaNode2Config = {
+ .ucLoRaNode2AddrHigh = LORA_NODE2_ADDR_HIGH,
+ .ucLoRaNode2AddrLow = LORA_NODE2_ADDR_LOW,
+ .ucLoRaNode2Channel = LORA_NODE2_CHANNEL,
+ .ucLoRaNode2Identifier = LORA_NODE2_IDENTIFIER
+};
+
+static LoRaSensorID_t xLoRaSensorID = {
+ .ucIdDht11 = LORA_SENSOR_DHT11,
+ .ucIdMq2 = LORA_SENSOR_MQ2,
+ .ucIdLight = LORA_SENSOR_LIGHT,
+ .ucIdFire = LORA_SENSOR_FIRE
+};
+
+static LoRaExecutorID_t xLoRaExecutorID = {
+ .ucIdLed = LORA_EXECUTOR_LED,
+ .ucIdFan = LORA_EXECUTOR_FAN,
+ .ucIdHumidifier = LORA_EXECUTOR_HUMIDIFIER,
+ .ucIdBuzzer = LORA_EXECUTOR_BUZZER,
+ .ucIdServo = LORA_EXECUTOR_SERVO
+};
+
+static LoRaExecutorCmd_t xLoRaExecutorCommand = {
+ .ucCommandOn = LORA_EXECUTOR_COMMAND_ON,
+ .ucCommandOff = LORA_EXECUTOR_COMMAND_OFF,
+};
+
+void vLoRaConnectionPkt(uint8_t ucNodeId);
+void vLoRaToGateIdPkt(uint8_t ucNodeId);
+void vLoRaToGateSenIdPkt(uint8_t ucSensorId);
+void vLoRaToGateExeIdPkt(uint8_t ucExecutorId);
+eLoRaMsgRecStatus xLoRaMessageReceived(uint8_t *pucData);
+eLoRaMsgRecStatus xLoRaMsgProcess(uint8_t ucDataRecNodeId, uint8_t ucDataRecExeId, uint8_t ucDataRecExeSta);
+
+#endif
diff --git a/STM32/Gateway_Node/STM32Template.uvguix.Exploration b/STM32/Gateway_Node/STM32Template.uvguix.Exploration
index d9b0ba0..5a73a9c 100644
--- a/STM32/Gateway_Node/STM32Template.uvguix.Exploration
+++ b/STM32/Gateway_Node/STM32Template.uvguix.Exploration
@@ -6,7 +6,7 @@
### uVision Project, (C) Keil Software
- E:\Data\Project\IoTProjects\妯℃澘\FreeRTOS_STM32F103C8T6鏍囧噯搴撶増\FreeRTOS\src
+ E:\Data\Project\IoTProjects\FreeRTOS_LoRa_Environment_Assistant\STM32\Gateway_Node\System
@@ -15,7 +15,7 @@
38003
Registers
- 140 90
+ 140 82
346
@@ -101,17 +101,17 @@
-1
- 52
- 52
- 1634
- 754
+ 59
+ 78
+ 1389
+ 863
0
- 883
- 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000600000001000000010000004B453A5C446174615C50726F6A6563745C496F5450726F6A656374735CC4A3B0E55C4672656552544F535F53544D33324631303343385436B1EAD7BCBFE2B0E65C557365725C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF53453A5C446174615C50726F6A6563745C496F5450726F6A656374735CC4A3B0E55C4672656552544F535F53544D33324631303343385436B1EAD7BCBFE2B0E65C557365725C73746D3332663130785F69742E63000000000E73746D3332663130785F69742E6300000000FFDC7800FFFFFFFF60453A5C446174615C50726F6A6563745C496F5450726F6A656374735CC4A3B0E55C4672656552544F535F53544D33324631303343385436B1EAD7BCBFE2B0E65C4672656552544F535C636F6E6669675C4672656552544F53436F6E6669672E6800000000104672656552544F53436F6E6669672E6800000000BECEA100FFFFFFFF6A453A5C446174615C50726F6A6563745C496F5450726F6A656374735CC4A3B0E55C4672656552544F535F53544D33324631303343385436B1EAD7BCBFE2B0E65C4672656552544F535C706F727461626C655C525644535C41524D5F434D335C706F72746D6163726F2E68000000000B706F72746D6163726F2E6800000000F0A0A100FFFFFFFF65453A5C446174615C50726F6A6563745C496F5450726F6A656374735CC4A3B0E55C4672656552544F535F53544D33324631303343385436B1EAD7BCBFE2B0E65C4672656552544F535C706F727461626C655C525644535C41524D5F434D335C706F72742E630000000006706F72742E6300000000BCA8E100FFFFFFFF53453A5C446174615C50726F6A6563745C496F5450726F6A656374735CC4A3B0E55C4672656552544F535F53544D33324631303343385436B1EAD7BCBFE2B0E65C4672656552544F535C696E635C7461736B2E6800000000067461736B2E68000000009CC1B600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000030030000
+ 1727
+ 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000C00000009000000010000005E453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C557365725C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF66453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C557365725C73746D3332663130785F69742E63000000000E73746D3332663130785F69742E6300000000FFDC7800FFFFFFFF73453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C4672656552544F535C636F6E6669675C4672656552544F53436F6E6669672E6800000000104672656552544F53436F6E6669672E6800000000BECEA100FFFFFFFF7D453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C4672656552544F535C706F727461626C655C525644535C41524D5F434D335C706F72746D6163726F2E68000000000B706F72746D6163726F2E6800000000F0A0A100FFFFFFFF78453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C4672656552544F535C706F727461626C655C525644535C41524D5F434D335C706F72742E630000000006706F72742E6300000000BCA8E100FFFFFFFF66453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C4672656552544F535C696E635C7461736B2E6800000000067461736B2E68000000009CC1B600FFFFFFFF61453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C447269766572735C4C6F52612E6300000000064C6F52612E6300000000F7B88600FFFFFFFF61453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C53797374656D5C44656C61792E63000000000744656C61792E6300000000D9ADC200FFFFFFFF61453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C53797374656D5C44656C61792E68000000000744656C61792E6800000000A5C2D700FFFFFFFF61453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C53797374656D5C55534152542E63000000000755534152542E6300000000B3A6BE00FFFFFFFF61453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C447269766572735C4C6F52612E6800000000064C6F52612E6800000000EAD6A300FFFFFFFF61453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C53797374656D5C55534152542E68000000000755534152542E6800000000F6FA7D00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000EC000000660000008007000030030000
@@ -134,7 +134,7 @@
16
- 30010000A2000000CC05000030010000
+ 4A010000A9000000E605000037010000
@@ -150,11 +150,11 @@
0
16
- 0300000066000000ED00000000030000
+ 0300000066000000E5000000CD030000
16
- 22000000390000001201000002010000
+ 98FFFFFF1202000088000000DC040000
@@ -170,11 +170,11 @@
0
16
- 0300000066000000ED00000000030000
+ 0300000066000000E5000000CD030000
16
- 22000000390000003E01000075020000
+ 98FFFFFF1202000088000000DC040000
@@ -450,11 +450,11 @@
0
16
- 0300000066000000ED00000000030000
+ 0300000066000000E5000000CD030000
16
- 22000000390000003E01000075020000
+ 98FFFFFF1202000088000000DC040000
@@ -470,11 +470,11 @@
0
16
- 0300000066000000ED00000000030000
+ 0300000066000000E5000000CD030000
16
- 22000000390000003E01000075020000
+ 98FFFFFF1202000088000000DC040000
@@ -490,7 +490,7 @@
0
16
- 03000000340300007D070000CD030000
+ EF000000340300007D070000CD030000
16
@@ -530,7 +530,7 @@
0
16
- 0300000034030000BB0300002C040000
+ EF000000340300007D070000CD030000
16
@@ -1150,11 +1150,11 @@
0
16
- 0300000066000000ED00000098020000
+ 0300000066000000E5000000CD030000
16
- 22000000390000003E01000075020000
+ 98FFFFFF1202000088000000DC040000
@@ -1170,7 +1170,7 @@
0
16
- 03000000340300007D070000CD030000
+ EF000000340300007D070000CD030000
16
@@ -1190,7 +1190,7 @@
0
16
- 0300000034030000BB0300002C040000
+ EF000000340300007D070000CD030000
16
@@ -1250,7 +1250,7 @@
0
16
- 0300000034030000BB0300002C040000
+ EF000000340300007D070000CD030000
16
@@ -1270,7 +1270,7 @@
0
16
- 0300000034030000BB0300002C040000
+ EF000000340300007D070000CD030000
16
@@ -1798,15 +1798,15 @@
- 3312
- 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E65002000000000000030010000A2000000CC05000030010000F40000004F00000090050000DD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000025020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000DC040000A2000000CC05000078020000A00400004F000000900500002502000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F400000019030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000003C000000A20000002C01000004030000000000004F000000F0000000190300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000800000000000003C00000068020000CC0500000A030000000000001502000090050000B702000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000019030000800700001D030000010000000100001004000000010000009AFDFFFF26010000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000003C00000008030000FA03000030040000000000001D03000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000
+ 3332
+ 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E6500200000000000004A010000A9000000E605000037010000F40000004F00000090050000DD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000025020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000F6040000A9000000E60500007F020000A00400004F000000900500002502000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000560000006F020000E605000011030000000000001502000090050000B702000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFFEC00000019030000800700001D030000010000000100001004000000010000009AFDFFFF26010000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000004201000077030000D607000040040000EC0000001D03000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000010000001000000FFFFFFFFFFFFFFFFE80000004F000000EC000000E603000001000000020000100400000001000000000000000000000000000000000000000000000001000000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000056000000A90000003E01000040040000000000004F000000E8000000E60300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000000000000000000
59392
File
- 2829
- 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000077563537461746596000000000000001200077563537461746504756349640D784C6F526155534152543352780B75635052785061636B65740A6C6F52614E6F646549440873656E736F7249440D4C45445F504331335F504F52540D55534152545F54797065446566027538067072696E7466056670757463075379735469636B11707852656164795461736B734C6973747314636F6E6669674D41585F5052494F5249544945530C5461736B48616E646C655F7412494E434C5544455F765461736B44656C61790B5356435F48616E646C65721278506F727450656E64535648616E646C6572000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
+ 2578
+ 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000012785175657565557361727433526548646C729600000000000000010012785175657565557361727433526548646C7200000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
1423
@@ -1855,6 +1855,1747 @@
1080
+
+ 1
+ Debug
+
+ -1
+ -1
+ 1
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ C40300007C02000080070000E6030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1005
+ 1005
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED0000005F020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 109
+ 109
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED0000005F020000
+
+
+ 16
+ 560000006D00000072010000A9020000
+
+
+
+ 1465
+ 1465
+ 1
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1466
+ 1466
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1467
+ 1467
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1468
+ 1468
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1506
+ 1506
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 16384
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 1913
+ 1913
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ F700000066000000BD030000C4000000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 1935
+ 1935
+ 1
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1936
+ 1936
+ 1
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1937
+ 1937
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1939
+ 1939
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1940
+ 1940
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1941
+ 1941
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1942
+ 1942
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 195
+ 195
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED0000005F020000
+
+
+ 16
+ 560000006D00000072010000A9020000
+
+
+
+ 196
+ 196
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED0000005F020000
+
+
+ 16
+ 560000006D00000072010000A9020000
+
+
+
+ 197
+ 197
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 03000000400200008D0500009E020000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 198
+ 198
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 000000007C02000080070000E6030000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 199
+ 199
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000400200008D0500009E020000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 203
+ 203
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ F40000006300000080070000DD000000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 204
+ 204
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ F700000066000000BD030000C4000000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 221
+ 221
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 00000000000000000000000000000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 2506
+ 2506
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 2507
+ 2507
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 343
+ 343
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ F700000066000000BD030000C4000000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 346
+ 346
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ F700000066000000BD030000C4000000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 35141
+ 35141
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ F700000066000000BD030000C4000000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35824
+ 35824
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ F700000066000000BD030000C4000000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 35885
+ 35885
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35886
+ 35886
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35887
+ 35887
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35888
+ 35888
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35889
+ 35889
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35890
+ 35890
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35891
+ 35891
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35892
+ 35892
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35893
+ 35893
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35894
+ 35894
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35895
+ 35895
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35896
+ 35896
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35897
+ 35897
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35898
+ 35898
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35899
+ 35899
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35900
+ 35900
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35901
+ 35901
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35902
+ 35902
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35903
+ 35903
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35904
+ 35904
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35905
+ 35905
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 38003
+ 38003
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED0000005F020000
+
+
+ 16
+ 560000006D00000072010000A9020000
+
+
+
+ 38007
+ 38007
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000400200008D0500009E020000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 436
+ 436
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000400200008D0500009E020000
+
+
+ 16
+ 560000006D00000072010000A9020000
+
+
+
+ 437
+ 437
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 440
+ 440
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 463
+ 463
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000400200008D0500009E020000
+
+
+ 16
+ 560000006D00000072010000A9020000
+
+
+
+ 466
+ 466
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000400200008D0500009E020000
+
+
+ 16
+ 560000006D00000072010000A9020000
+
+
+
+ 470
+ 470
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ F700000066000000BD030000C4000000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 50000
+ 50000
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50001
+ 50001
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50002
+ 50002
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50003
+ 50003
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50004
+ 50004
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50005
+ 50005
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50006
+ 50006
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50007
+ 50007
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50008
+ 50008
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50009
+ 50009
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50010
+ 50010
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50011
+ 50011
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50012
+ 50012
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50013
+ 50013
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50014
+ 50014
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50015
+ 50015
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50016
+ 50016
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50017
+ 50017
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50018
+ 50018
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50019
+ 50019
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 59392
+ 59392
+ 1
+ 0
+ 0
+ 0
+ 966
+ 0
+ 8192
+ 0
+
+ 16
+ 0000000000000000D10300001C000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 59393
+ 0
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 00000000E603000080070000F9030000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 59399
+ 59399
+ 0
+ 0
+ 0
+ 0
+ 476
+ 0
+ 8192
+ 1
+
+ 16
+ 000000001C000000E701000038000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 59400
+ 59400
+ 1
+ 0
+ 0
+ 0
+ 612
+ 0
+ 8192
+ 2
+
+ 16
+ 000000001C0000006F02000038000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 824
+ 824
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 3383
+ 000000000A000000000000000020000001000000FFFFFFFFFFFFFFFFF4000000DD00000080070000E1000000010000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000001000000B40400006600000080070000F4000000F40000004F00000080070000DD0000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000025020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000006008000066000000500900003C020000A00400004F000000900500002502000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F400000078020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000C003000066000000B00400008F020000000000004F000000F0000000780200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF0000000078020000800700007C020000010000000100001004000000010000003EFEFFFFD500000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFFC00300007C020000C4030000E603000000000000020000000400000000000000000000000000000000000000000000000000000001000000C600000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF00000000250200009005000029020000000000000100000004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000000000000C00300004002000050090000CE020000000000002902000090050000B70200000000000040820046060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC500000001000000FFFF02001200434D756C746950616E654672616D65576E6400010094B8030000BC020000740700002604000001000000000000000200000000000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800040000001000000B8030000BC0200007407000026040000C40300007C02000080070000E603000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF05000000000000000000000000000000000000000000000001000000FFFFFFFF8F0700000000000000000000
+
+
+ 59392
+ File
+
+ 2883
+ 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D4C45445F504331335F504F5254960000000000000012000D4C45445F504331335F504F52540D55534152545F54797065446566027538067072696E7466056670757463075379735469636B11707852656164795461736B734C6973747314636F6E6669674D41585F5052494F5249544945530C5461736B48616E646C655F7412494E434C5544455F765461736B44656C61790B5356435F48616E646C65721278506F727450656E64535648616E646C65720D50656E64535648616E646C65721D764170706C69636174696F6E47657449646C655461736B4D656D6F727913764170706C69636174696F6E47657449646C6524636F6E6669674D41585F53595343414C4C5F494E544552525550545F5052494F5249545901310341542B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000300150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
+
+
+ 1423
+ 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000
+
+
+ 1423
+ 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000
+
+
+
+ 59399
+ Build
+
+ 955
+ 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000
+
+
+ 583
+ 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000
+
+
+ 583
+ 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000
+
+
+
+ 59400
+ Debug
+
+ 2362
+ 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
+
+
+ 898
+ 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000
+
+
+ 898
+ 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000
+
+
+
+ 0
+ 1920
+ 1080
+
+
@@ -1862,12 +3603,12 @@
0
100
- 1
+ 9
.\User\main.c
0
- 1
- 26
+ 13
+ 9
1
0
@@ -1875,7 +3616,7 @@
.\User\stm32f10x_it.c
0
- 25
+ 22
51
1
@@ -1883,18 +3624,18 @@
.\FreeRTOS\config\FreeRTOSConfig.h
- 0
+ 61
1
- 1
+ 30
1
0
.\FreeRTOS\portable\RVDS\ARM_CM3\portmacro.h
- 19
- 1
- 55
+ 5
+ 83
+ 97
1
0
@@ -1917,6 +3658,60 @@
0
+
+ .\Drivers\LoRa.c
+ 1
+ 1
+ 20
+ 1
+
+ 0
+
+
+ .\System\Delay.c
+ 0
+ 1
+ 1
+ 1
+
+ 0
+
+
+ .\System\Delay.h
+ 0
+ 1
+ 1
+ 1
+
+ 0
+
+
+ .\System\USART.c
+ 0
+ 156
+ 160
+ 1
+
+ 0
+
+
+ .\Drivers\LoRa.h
+ 18
+ 1
+ 5
+ 1
+
+ 0
+
+
+ .\System\USART.h
+ 0
+ 1
+ 41
+ 1
+
+ 0
+
diff --git a/STM32/Gateway_Node/STM32Template.uvoptx b/STM32/Gateway_Node/STM32Template.uvoptx
index 69cbcb1..d8a749e 100644
--- a/STM32/Gateway_Node/STM32Template.uvoptx
+++ b/STM32/Gateway_Node/STM32Template.uvoptx
@@ -120,7 +120,7 @@
0
ST-LINKIII-KEIL_SWO
- -U/ -O206 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("") -D00(00000000) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8000 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM) -WA0 -WE0 -WVCE4 -WS2710 -WM0 -WP2 -WK0
+ -U/ -O206 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(1BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8000 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM) -WA0 -WE0 -WVCE4 -WS2710 -WM0 -WP2 -WK0-R0
0
@@ -172,7 +172,7 @@
- 1
+ 0
0
0
2
@@ -883,14 +883,134 @@
0
0
0
+
+ 4
+ 57
+ 1
+ 0
+ 0
+ 0
+ .\System\Delay.c
+ Delay.c
+ 0
+ 0
+
+
+ 4
+ 58
+ 5
+ 0
+ 0
+ 0
+ .\System\Delay.h
+ Delay.h
+ 0
+ 0
+
+
+ 4
+ 59
+ 1
+ 0
+ 0
+ 0
+ .\System\USART.c
+ USART.c
+ 0
+ 0
+
+
+ 4
+ 60
+ 5
+ 0
+ 0
+ 0
+ .\System\USART.h
+ USART.h
+ 0
+ 0
+
Drivers
- 0
+ 1
0
0
0
+
+ 5
+ 61
+ 1
+ 0
+ 0
+ 0
+ .\Drivers\LED.c
+ LED.c
+ 0
+ 0
+
+
+ 5
+ 62
+ 5
+ 0
+ 0
+ 0
+ .\Drivers\LED.h
+ LED.h
+ 0
+ 0
+
+
+ 5
+ 63
+ 1
+ 0
+ 0
+ 0
+ .\Drivers\LoRa.c
+ LoRa.c
+ 0
+ 0
+
+
+ 5
+ 64
+ 5
+ 0
+ 0
+ 0
+ .\Drivers\LoRa.h
+ LoRa.h
+ 0
+ 0
+
+
+ 5
+ 65
+ 1
+ 0
+ 0
+ 0
+ .\Drivers\ESP8266.c
+ ESP8266.c
+ 0
+ 0
+
+
+ 5
+ 66
+ 5
+ 0
+ 0
+ 0
+ .\Drivers\ESP8266.h
+ ESP8266.h
+ 0
+ 0
+
@@ -901,7 +1021,7 @@
0
6
- 57
+ 67
5
0
0
@@ -913,7 +1033,7 @@
6
- 58
+ 68
5
0
0
@@ -925,7 +1045,7 @@
6
- 59
+ 69
5
0
0
@@ -937,7 +1057,7 @@
6
- 60
+ 70
5
0
0
@@ -949,7 +1069,7 @@
6
- 61
+ 71
5
0
0
@@ -961,7 +1081,7 @@
6
- 62
+ 72
5
0
0
@@ -973,7 +1093,7 @@
6
- 63
+ 73
5
0
0
@@ -985,7 +1105,7 @@
6
- 64
+ 74
5
0
0
@@ -997,7 +1117,7 @@
6
- 65
+ 75
5
0
0
@@ -1009,7 +1129,7 @@
6
- 66
+ 76
5
0
0
@@ -1021,7 +1141,7 @@
6
- 67
+ 77
5
0
0
@@ -1033,7 +1153,7 @@
6
- 68
+ 78
5
0
0
@@ -1045,7 +1165,7 @@
6
- 69
+ 79
5
0
0
@@ -1057,7 +1177,7 @@
6
- 70
+ 80
5
0
0
@@ -1069,7 +1189,7 @@
6
- 71
+ 81
5
0
0
@@ -1081,7 +1201,7 @@
6
- 72
+ 82
5
0
0
@@ -1093,7 +1213,7 @@
6
- 73
+ 83
5
0
0
@@ -1105,7 +1225,7 @@
6
- 74
+ 84
5
0
0
@@ -1125,7 +1245,7 @@
0
7
- 75
+ 85
1
0
0
@@ -1137,7 +1257,7 @@
7
- 76
+ 86
1
0
0
@@ -1149,7 +1269,7 @@
7
- 77
+ 87
1
0
0
@@ -1161,7 +1281,7 @@
7
- 78
+ 88
1
0
0
@@ -1173,7 +1293,7 @@
7
- 79
+ 89
1
0
0
@@ -1185,7 +1305,7 @@
7
- 80
+ 90
1
0
0
@@ -1197,7 +1317,7 @@
7
- 81
+ 91
1
0
0
@@ -1217,7 +1337,7 @@
0
8
- 82
+ 92
1
0
0
@@ -1229,7 +1349,7 @@
8
- 83
+ 93
1
0
0
@@ -1241,7 +1361,7 @@
8
- 84
+ 94
5
0
0
@@ -1261,7 +1381,7 @@
0
9
- 85
+ 95
5
0
0
diff --git a/STM32/Gateway_Node/STM32Template.uvprojx b/STM32/Gateway_Node/STM32Template.uvprojx
index b424cab..4bcc50e 100644
--- a/STM32/Gateway_Node/STM32Template.uvprojx
+++ b/STM32/Gateway_Node/STM32Template.uvprojx
@@ -679,9 +679,63 @@
System
+
+
+ Delay.c
+ 1
+ .\System\Delay.c
+
+
+ Delay.h
+ 5
+ .\System\Delay.h
+
+
+ USART.c
+ 1
+ .\System\USART.c
+
+
+ USART.h
+ 5
+ .\System\USART.h
+
+
Drivers
+
+
+ LED.c
+ 1
+ .\Drivers\LED.c
+
+
+ LED.h
+ 5
+ .\Drivers\LED.h
+
+
+ LoRa.c
+ 1
+ .\Drivers\LoRa.c
+
+
+ LoRa.h
+ 5
+ .\Drivers\LoRa.h
+
+
+ ESP8266.c
+ 1
+ .\Drivers\ESP8266.c
+
+
+ ESP8266.h
+ 5
+ .\Drivers\ESP8266.h
+
+
FreeRTOS/inc
diff --git a/STM32/Environment_Node/System/SysTick.c b/STM32/Gateway_Node/System/Delay.c
similarity index 54%
rename from STM32/Environment_Node/System/SysTick.c
rename to STM32/Gateway_Node/System/Delay.c
index 5a44a80..d9687df 100644
--- a/STM32/Environment_Node/System/SysTick.c
+++ b/STM32/Gateway_Node/System/Delay.c
@@ -1,11 +1,13 @@
-#include "SysTick.h"
+#include "Delay.h"
+
+#if MODE == USE_SYS_TICK
-#if SYSTEM == SYSTEM_NONE
//初始化延迟函数
//SYSTICK的时钟固定为AHB时钟的1/8
//SYSCLK:系统时钟频率
-void vSysTickInit(uint8_t ucSYSCLK)
+void vDelayInit(void)
{
+ uint8_t ucSYSCLK;
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
xUcFacInit.ucFacUs=ucSYSCLK/8;
xUcFacInit.usFacMs=(uint16_t)xUcFacInit.ucFacUs*1000;
@@ -24,7 +26,7 @@ void vDelayUs(uint32_t ulNus)
ulTemp=SysTick->CTRL;
} while((ulTemp&0x01)&&!(ulTemp&(1<<16))); //等待时间到达
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //关闭计数器
- SysTick->VAL =0X00; //清空计数器
+ SysTick->VAL =0x00; //清空计数器
}
//延时nms
@@ -58,7 +60,71 @@ void vDelayMs(uint16_t usNms)
ulTemp = SysTick->CTRL;
} while ((ulTemp & 0x01) && !(ulTemp & (1 << 16)));
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
- SysTick->VAL = 0X00;
+ SysTick->VAL = 0x00;
}
}
+
+#elif MODE == USE_DWT
+
+void vDelayInit(void)
+{
+ //使能DWT外设
+ DEMCR |= (uint32_t)TRCENA;
+
+ //DWT CYCCNT寄存器计数清0
+ DWT_CYCCNT = (uint32_t)0u;
+
+ //使能Cortex-M3 DWT CYCCNT寄存器
+ DWT_CTRL |= (uint32_t)DWT_CTRL_CYCCNTENA;
+}
+
+// 微秒延时
+void vDelayUs(uint32_t ulNus)
+{
+ if(ulNus > 10000) ulNus = 10000;
+
+ uint32_t ulTicksStart, ulTicksEnd, ulTicksDelay;
+
+ ulTicksStart = DWT_CYCCNT;
+ ulTicksDelay = ( ulNus * ( SystemCoreClock / (1000000) ) ); // 将微秒数换算成滴答数
+ ulTicksEnd = ulTicksStart + ulTicksDelay;
+
+ // ulTicksEnd没有溢出
+ if ( ulTicksEnd >= ulTicksStart )
+ {
+ // DWT_CYCCNT在上述计算的这段时间中没有溢出
+ if(DWT_CYCCNT > ulTicksStart)
+ {
+ while( DWT_CYCCNT < ulTicksEnd );
+ }
+ // DWT_CYCCNT溢出
+ else
+ {
+ // 已经超时,直接退出
+ return;
+ }
+ }
+ else // ulTicksEnd溢出
+ {
+ // DWT_CYCCNT在上述计算的这段时间中没有溢出
+ if(DWT_CYCCNT > ulTicksStart)
+ {
+ // 等待DWT_CYCCNT的值溢出
+ while( DWT_CYCCNT > ulTicksEnd );
+ }
+ // 等待溢出后的DWT_CYCCNT到达ulTicksEnd
+ while( DWT_CYCCNT < ulTicksEnd );
+ }
+}
+
+void vDelayMs(uint16_t usNms)
+{
+ for(uint16_t i = 0; i < usNms; i++)
+ {
+ // delay 1 ms
+ vDelayUs(1000);
+ }
+}
+
+#else
#endif
diff --git a/STM32/Gateway_Node/System/Delay.h b/STM32/Gateway_Node/System/Delay.h
new file mode 100644
index 0000000..b1b7763
--- /dev/null
+++ b/STM32/Gateway_Node/System/Delay.h
@@ -0,0 +1,40 @@
+#ifndef __DELAY_H__
+#define __DELAY_H__
+
+#include "stm32f10x_conf.h"
+#include "stm32f10x.h"
+
+#define MODE USE_DWT
+
+#define USE_SYS_TICK 0
+#define USE_DWT 1
+
+// 0xE000EDFC DEMCR RW Debug Exception and Monitor Control Register.
+#define DEMCR ( *(__IO uint32_t *)0xE000EDFC )
+#define TRCENA ( 0x01 << 24) // DEMCR鐨凞WT浣胯兘浣
+#define DBGMCU_CR *(__IO uint32_t *)0xE0042004 //MCU璋冭瘯妯″潡鎺у埗瀵勫瓨鍣紝璇︾粏鍐呭鍙傝冦妔tm32涓枃鍙傝冩墜鍐屻嬭皟璇曟敮鎸侊紙DBG锛夌珷鑺傦紝747椤
+
+// 0xE0001000 DWT_CTRL RW The Debug Watchpoint and Trace (DWT) unit
+#define DWT_CTRL ( *(__IO uint32_t *)0xE0001000 )
+#define DWT_CTRL_CYCCNTENA ( 0x01 << 0 ) // DWT鐨凷YCCNT浣胯兘浣
+
+// 0xE0001004 DWT_CYCCNT RW Cycle Count register,
+#define DWT_CYCCNT ( *(__IO uint32_t *)0xE0001004) // 鏄剧ず鎴栬缃鐞嗗櫒鐨勫懆鏈熻鏁板
+
+//#define DWT_DELAY_mS(mSec) DWT_DELAY_uS(mSec*1000)
+
+typedef struct {
+ uint8_t ucFacUs;
+ int16_t usFacMs;
+} UcFacInit_t;
+
+static UcFacInit_t xUcFacInit = {
+ .ucFacUs = 0,
+ .usFacMs = 0
+};
+
+void vDelayInit(void);
+void vDelayUs(uint32_t ulNus);
+void vDelayMs(uint16_t usNms);
+
+#endif
diff --git a/STM32/Gateway_Node/System/USART.c b/STM32/Gateway_Node/System/USART.c
new file mode 100644
index 0000000..9073347
--- /dev/null
+++ b/STM32/Gateway_Node/System/USART.c
@@ -0,0 +1,281 @@
+#include "USART.h"
+
+/**
+ * @brief 串口1的初始化函数
+ * @note 使用USART1串口(PA9->USART1_RX,PA10->USART1_TX),波特率设置为115200。
+ * @param *xUsartId 选择串口号
+ * @param ulBaudrate 要设置的波特率
+ * @retval None
+ */
+void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate)
+{
+ if (xUsartId == USART1)
+ {
+ /* code */
+ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
+
+ GPIO_InitTypeDef GPIO_InitStructure;
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+ GPIO_InitStructure.GPIO_Pin = USART1_GPIO_PIN_TX;
+ GPIO_Init(GPIOA, &GPIO_InitStructure);
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+ GPIO_InitStructure.GPIO_Pin = USART1_GPIO_PIN_RX;
+ GPIO_Init(GPIOA, &GPIO_InitStructure);
+
+ USART_InitTypeDef USART_InitStructure;
+ USART_InitStructure.USART_BaudRate = ulBaudrate; // 设定后,USART_Init函数内部会自动算好9600对应的分频系数,并写到BRR寄存器
+ RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
+ USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // 硬件流控制,不使用流控
+ USART_InitStructure.USART_Mode = USART_Mode_Tx|USART_Mode_Rx; // 串口模式,如果既使用输入和输出模式就用或符号,发送模式和接收模式
+ USART_InitStructure.USART_Parity = USART_Parity_No; // 无校验位
+ USART_InitStructure.USART_StopBits = USART_StopBits_1; // 一位停止位
+ USART_InitStructure.USART_WordLength = USART_WordLength_8b; // 字长,不需要校验,字长就选择8位
+ USART_Init(USART1,&USART_InitStructure);
+ // 上面是串口的查询模式,如果使用中断,还需要开启中断,配置NVIC
+ USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); // 选择RXNE的中断,并开启RXNE标志位到NVIC的输出,如果RXNE标志位置1,就会向NVIC申请中断,之后可以在中断函数中接收数据
+
+ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); // 分组,分组4为4bit抢占优先级和0bit响应优先级,抢占优先级可设置为0-15。由于FreeRTOS没有响应优先级,而优先级分组4相当于4位抢占优先级和0位响应优先级。
+ NVIC_InitTypeDef NVIC_InitStructure; // 初始化NVIC的USART1通道
+ NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; // 中断通道
+ NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
+ NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5; // 抢占优先级配置,根据FreeRTOS设置配置,在范围内可以调用FreeRTOS的以“FromISR()”结尾的api函数。
+ // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 响应优先级配置,用不上了
+ NVIC_Init(&NVIC_InitStructure); // 指向NVIC_InitStructure的地址
+
+ USART_Cmd(USART1,ENABLE);
+ } else if (xUsartId == USART2)
+ {
+ /* code */
+ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
+ GPIO_InitTypeDef GPIO_InitStructure;
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+ GPIO_InitStructure.GPIO_Pin = USART2_GPIO_PIN_TX;
+ GPIO_Init(GPIOB, &GPIO_InitStructure);
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
+ GPIO_InitStructure.GPIO_Pin = USART2_GPIO_PIN_RX;
+ GPIO_Init(GPIOB, &GPIO_InitStructure);
+
+ USART_InitTypeDef USART_InitStructure;
+ USART_InitStructure.USART_BaudRate = ulBaudrate; // 设定后,USART_Init函数内部会自动算好9600对应的分频系数,并写到BRR寄存器
+ RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
+ USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // 硬件流控制,不使用流控
+ USART_InitStructure.USART_Mode = USART_Mode_Tx|USART_Mode_Rx; // 串口模式,如果既使用输入和输出模式就用或符号,发送模式和接收模式
+ USART_InitStructure.USART_Parity = USART_Parity_No; // 无校验位
+ USART_InitStructure.USART_StopBits = USART_StopBits_1; // 一位停止位
+ USART_InitStructure.USART_WordLength = USART_WordLength_8b; // 字长,不需要校验,字长就选择8位
+ USART_Init(USART2,&USART_InitStructure);
+ // 上面是串口的查询模式,如果使用中断,还需要开启中断,配置NVIC
+ USART_ITConfig(USART2,USART_IT_RXNE,ENABLE); // 选择RXNE的中断,并开启RXNE标志位到NVIC的输出,如果RXNE标志位置1,就会向NVIC申请中断,之后可以在中断函数中接收数据
+
+ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); // 分组,分组4为4bit抢占优先级和0bit响应优先级,抢占优先级可设置为0-15。由于FreeRTOS没有响应优先级,而优先级分组4相当于4位抢占优先级和0位响应优先级。
+ NVIC_InitTypeDef NVIC_InitStructure; // 初始化NVIC的USART1通道
+ NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn; // 中断通道
+ NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
+ NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5; // 抢占优先级配置,根据FreeRTOS设置配置,在范围内可以调用FreeRTOS的以“FromISR()”结尾的api函数。
+ // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 响应优先级配置,用不上了
+ NVIC_Init(&NVIC_InitStructure); // 指向NVIC_InitStructure的地址
+
+ USART_Cmd(USART2, ENABLE);
+ } else if (xUsartId == USART3)
+ {
+ /* code */
+ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
+
+ GPIO_InitTypeDef GPIO_InitStructure;
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+ GPIO_InitStructure.GPIO_Pin = USART3_GPIO_PIN_TX;
+ GPIO_Init(GPIOB, &GPIO_InitStructure);
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
+ GPIO_InitStructure.GPIO_Pin = USART3_GPIO_PIN_RX;
+ GPIO_Init(GPIOB, &GPIO_InitStructure);
+
+ USART_InitTypeDef USART_InitStructure;
+ USART_InitStructure.USART_BaudRate = ulBaudrate; // 设定后,USART_Init函数内部会自动算好9600对应的分频系数,并写到BRR寄存器
+ RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);
+ USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // 硬件流控制,不使用流控
+ USART_InitStructure.USART_Mode = USART_Mode_Tx|USART_Mode_Rx; // 串口模式,如果既使用输入和输出模式就用或符号,发送模式和接收模式
+ USART_InitStructure.USART_Parity = USART_Parity_No; // 无校验位
+ USART_InitStructure.USART_StopBits = USART_StopBits_1; // 一位停止位
+ USART_InitStructure.USART_WordLength = USART_WordLength_8b; // 字长,不需要校验,字长就选择8位
+ USART_Init(USART3,&USART_InitStructure);
+ // 上面是串口的查询模式,如果使用中断,还需要开启中断,配置NVIC
+ USART_ITConfig(USART3,USART_IT_RXNE,ENABLE); // 选择RXNE的中断,并开启RXNE标志位到NVIC的输出,如果RXNE标志位置1,就会向NVIC申请中断,之后可以在中断函数中接收数据
+
+ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); // 分组,分组4为4bit抢占优先级和0bit响应优先级,抢占优先级可设置为0-15。由于FreeRTOS没有响应优先级,而优先级分组4相当于4位抢占优先级和0位响应优先级。
+ NVIC_InitTypeDef NVIC_InitStructure; // 初始化NVIC的USART1通道
+ NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; // 中断通道
+ NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
+ NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5; // 抢占优先级配置,根据FreeRTOS设置配置,在范围内可以调用FreeRTOS的以“FromISR()”结尾的api函数。
+ // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 响应优先级配置,用不上了
+ NVIC_Init(&NVIC_InitStructure); // 指向NVIC_InitStructure的地址
+
+ USART_Cmd(USART3, ENABLE);
+ }
+}
+
+/**
+ * @brief 串口发送单个字节函数
+ * @note 调用这个函数,就可以从TX引脚发送一个字节数据。
+ * @param *xUsartId 选择串口号
+ * @param ucByte 要发送的字节
+ * @retval None
+ */
+void vUsartSendByte(USART_TypeDef *xUsartId, uint8_t ucByte)
+{
+ USART_SendData(xUsartId, ucByte); // 调用这个函数,Byte就写入TDR寄存器了
+ // 写完之后还需要等待一下,等TDR的数据转移到移位寄存器就可以了,如果数据还在TDR寄存器中,再写入数据就会产生数据覆盖,所以在发送之后还需要等待一下标志位
+ while(USART_GetFlagStatus(xUsartId, USART_FLAG_TXE) == RESET); // 发送数据寄存器空标志位,等待TXE置1,所以需要套一个while循环 TXE:发送数据寄存器空,发送完标志位自动置0,不用手动复位。
+}
+
+/**
+ * @brief 串口发送数组函数
+ * @note 一般用于16进制模式下。uint8_t的指针类型,指向待发送数组的首地址,由于数组无法判断是否结束,所以需要再传递一个Length进来。
+ * @param *xUsartId 选择串口号
+ * @param *pucArray 要发送的十六进制数字
+ * @param usLength 发送长度
+ * @retval None
+ */
+void vUsartSendArray(USART_TypeDef *xUsartId, uint8_t *pucArray, uint16_t usLength)
+{
+ for(uint16_t i = 0; i < usLength; i ++) // for循环执行Length次,可以对Array数据进行遍历,实际定义数组不要超出uint16_t的范围即可
+ {
+ vUsartSendByte(xUsartId, pucArray[i]); // 依次取出数组Array的每一项
+ }
+}
+
+/**
+ * @brief 串口发送字符串函数
+ * @note 将字符串封装成指针数组的形式,定义数组长度直到检测到字符串的末尾结束,并将字符串根据长度拆成带个字符发送。
+ * @param *xUsartId 选择串口号
+ * @param *pcString 要发送的数据
+ * @retval None
+ */
+void vUsartSendString(USART_TypeDef *xUsartId, char *pcString) // 给uint8_t *也可以,由于字符串自带一个标志位,所以就不需要再传递长度参数了
+{
+ for(uint8_t i = 0; pcString[i] != '\0'; i++) // 循环结束就可以用标志位来判断了,填'\0'是空字符的转义字符表示形式,和直接写0是一样的
+ {
+ vUsartSendByte(xUsartId, pcString[i]); // 将String字符串一个个取出来,通过SendByte发送
+ }
+}
+
+/**
+ * @brief 串口打印函数
+ * @note 将字符串封装成指针数组的形式,定义数组长度直到检测到字符串的末尾结束,并将字符串根据长度拆成带个字符发送。
+ * @param *xUsartId 选择串口号
+ * @param *format 字符串
+ * @param ... 可变参数列表
+ * @retval None
+ */
+void vUsartPrintf(USART_TypeDef *xUsartId, char *format, ...)
+{
+ char cBuffer[100];
+ va_list arg; // arg是定义一个参数列表变量
+ va_start(arg, format); // 从format位置开始接收参数表,放在arg里面
+ vsprintf(cBuffer, format, arg); // 封装格式要用vsprintf,因为sprintf只能接收直接写的参数;打印字符串格式是format,参数表是arg,
+ va_end(arg); // 释放参数表
+ char *p = cBuffer;
+ if (xUsartId == USART1)
+ {
+ /* code */
+ while (*p)
+ {
+ /* code */
+ while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); // 等待发送缓冲区为空
+ USART_SendData(USART1, *p++);
+ }
+ } else if (xUsartId == USART2)
+ {
+ /* code */
+ while (*p)
+ {
+ /* code */
+ while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
+ USART_SendData(USART2, *p++);
+ }
+ } else if (xUsartId == USART3)
+ {
+ /* code */
+ while (*p)
+ {
+ /* code */
+ while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
+ USART_SendData(USART3, *p++);
+ }
+ }
+}
+
+/**
+ * @brief 串口1接收中断处理函数
+ * @note 接收串口中断发送的每帧数据到串口消息队列中,以便后续处理数据。
+ * @param None
+ * @retval None
+ */
+void USART1_IRQHandler(void)
+{
+ if (USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
+ {
+ /* code */
+ uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART1);
+ #if (USE_NONE_SYSTEM == 1)
+ #elif (USE_FREERTOS == 1)
+ BaseType_t xHigherPriorityTaskWoken = pdFALSE;
+ xQueueSendFromISR(xQueueUsart1IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
+ /* 问题根源:请求上下文切换 */
+ portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
+ #elif (USE_OSAL == 1)
+ #endif
+ USART_ClearITPendingBit(USART1, USART_IT_RXNE);
+ }
+}
+
+/**
+ * @brief 串口2接收中断处理函数
+ * @note 接收串口中断发送的每帧数据到串口消息队列中,以便后续处理数据。
+ * @param None
+ * @retval None
+ */
+void USART2_IRQHandler(void)
+{
+ if (USART_GetITStatus(USART2, USART_IT_RXNE) == SET)
+ {
+ /* code */
+ uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART2);
+ #if (USE_NONE_SYSTEM == 1)
+ #elif (USE_FREERTOS == 1)
+ BaseType_t xHigherPriorityTaskWoken = pdFALSE;
+ xQueueSendFromISR(xQueueUsart2IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
+ /* 问题根源:请求上下文切换 */
+ portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
+ #elif (USE_OSAL == 1)
+ #endif
+ USART_ClearITPendingBit(USART2, USART_IT_RXNE);
+ }
+}
+
+/**
+ * @brief 串口3接收中断处理函数
+ * @note 接收串口中断发送的每帧数据到串口消息队列中,以便后续处理数据。
+ * @param None
+ * @retval None
+ */
+void USART3_IRQHandler(void)
+{
+ if (USART_GetITStatus(USART3, USART_IT_RXNE) == SET)
+ {
+ /* code */
+ uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART3);
+ #if (USE_NONE_SYSTEM == 1)
+ #elif (USE_FREERTOS == 1)
+ BaseType_t xHigherPriorityTaskWoken = pdFALSE;
+ xQueueSendFromISR(xQueueUsart3IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
+ /* 问题根源:请求上下文切换 */
+ portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
+ #elif (USE_OSAL == 1)
+ #endif
+ USART_ClearITPendingBit(USART3, USART_IT_RXNE);
+ }
+}
diff --git a/STM32/Gateway_Node/System/USART.h b/STM32/Gateway_Node/System/USART.h
new file mode 100644
index 0000000..b1cdbbb
--- /dev/null
+++ b/STM32/Gateway_Node/System/USART.h
@@ -0,0 +1,43 @@
+#ifndef __USART_H__
+#define __USART_H__
+
+#define USE_NONE_SYSTEM 0
+#define USE_FREERTOS 1
+#define USE_OSAL 0
+#define vUsart1IrqHandler USART1_IRQHandler
+#define vEsp8266IrqHandler USART2_IRQHandler
+#define vLoRaIrqHandler USART3_IRQHandler
+#define USART1_GPIO_PIN_TX GPIO_Pin_9
+#define USART1_GPIO_PIN_RX GPIO_Pin_10
+#define USART2_GPIO_PIN_TX GPIO_Pin_2
+#define USART2_GPIO_PIN_RX GPIO_Pin_3
+#define USART3_GPIO_PIN_TX GPIO_Pin_10
+#define USART3_GPIO_PIN_RX GPIO_Pin_11
+
+#if (USE_NONE_SYSTEM == 1)
+#elif (USE_FREERTOS == 1)
+ #include "FreeRTOS.h"
+ #include "queue.h"
+#elif (USE_OSAL == 1)
+#endif
+
+#include "stm32f10x.h" // Device header
+#include
+#include
+#include
+
+#if (USE_NONE_SYSTEM == 1)
+#elif (USE_FREERTOS == 1)
+ extern QueueHandle_t xQueueUsart1IrqHdlr;
+ extern QueueHandle_t xQueueUsart2IrqHdlr;
+ extern QueueHandle_t xQueueUsart3IrqHdlr;
+#elif (USE_OSAL == 1)
+#endif
+
+void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate);
+void vUsartSendByte(USART_TypeDef *xUsartId, uint8_t ucByte);
+void vUsartSendArray(USART_TypeDef *xUsartId, uint8_t *pucArray, uint16_t usLength);
+void vUsartSendString(USART_TypeDef *xUsartId, char *pcString);
+void vUsartPrintf(USART_TypeDef *xUsartId, char *format, ...);
+
+#endif
diff --git a/STM32/Gateway_Node/System/USART2.c b/STM32/Gateway_Node/System/USART2.c
new file mode 100644
index 0000000..c10a6d3
--- /dev/null
+++ b/STM32/Gateway_Node/System/USART2.c
@@ -0,0 +1,132 @@
+#include "USART2.h"
+
+/**
+ * @brief 串口2的初始化函数
+ * @note 使用USART2串口(PB10->LoRa_RX,PB11->LoRa_TX),波特率设置为115200。
+ * @param ulUsart2Baudrate
+ * @retval None
+ */
+void vUsart2Init(uint32_t ulUsart2Baudrate)
+{
+ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
+
+ GPIO_InitTypeDef GPIO_InitStructure;
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+ GPIO_InitStructure.GPIO_Pin = USART2_GPIO_PIN_TX;
+ GPIO_Init(GPIOB, &GPIO_InitStructure);
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+ GPIO_InitStructure.GPIO_Pin = USART2_GPIO_PIN_RX;
+ GPIO_Init(GPIOB, &GPIO_InitStructure);
+
+ USART_InitTypeDef USART_InitStructure;
+ USART_InitStructure.USART_BaudRate = ulUsart2Baudrate; // 设定后,USART_Init函数内部会自动算好9600对应的分频系数,并写到BRR寄存器
+ RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
+ USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // 硬件流控制,不使用流控
+ USART_InitStructure.USART_Mode = USART_Mode_Tx|USART_Mode_Rx; // 串口模式,如果既使用输入和输出模式就用或符号,发送模式和接收模式
+ USART_InitStructure.USART_Parity = USART_Parity_No; // 无校验位
+ USART_InitStructure.USART_StopBits = USART_StopBits_1; // 一位停止位
+ USART_InitStructure.USART_WordLength = USART_WordLength_8b; // 字长,不需要校验,字长就选择8位
+ USART_Init(USART2,&USART_InitStructure);
+ // 上面是串口的查询模式,如果使用中断,还需要开启中断,配置NVIC
+ USART_ITConfig(USART2,USART_IT_RXNE,ENABLE); // 选择RXNE的中断,并开启RXNE标志位到NVIC的输出,如果RXNE标志位置1,就会向NVIC申请中断,之后可以在中断函数中接收数据
+
+ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); // 分组,分组4为4bit抢占优先级和0bit响应优先级,抢占优先级可设置为0-15。由于FreeRTOS没有响应优先级,而优先级分组4相当于4位抢占优先级和0位响应优先级。
+ NVIC_InitTypeDef NVIC_InitStructure; // 初始化NVIC的USART1通道
+ NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn; // 中断通道
+ NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
+ NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5; // 抢占优先级配置,根据FreeRTOS设置配置,在范围内可以调用FreeRTOS的以“FromISR()”结尾的api函数。
+ // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 响应优先级配置,用不上了
+ NVIC_Init(&NVIC_InitStructure); // 指向NVIC_InitStructure的地址
+
+ USART_Cmd(USART2,ENABLE);
+}
+
+/**
+ * @brief 串口发送单个字节函数
+ * @note 调用这个函数,就可以从TX引脚发送一个字节数据。
+ * @param ucByte
+ * @retval None
+ */
+void vUsart2SendByte(uint8_t ucByte)
+{
+ USART_SendData(USART2, ucByte); // 调用这个函数,Byte就写入TDR寄存器了
+ // 写完之后还需要等待一下,等TDR的数据转移到移位寄存器就可以了,如果数据还在TDR寄存器中,再写入数据就会产生数据覆盖,所以在发送之后还需要等待一下标志位
+ while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET); // 发送数据寄存器空标志位,等待TXE置1,所以需要套一个while循环 TXE:发送数据寄存器空,发送完标志位自动置0,不用手动复位。
+}
+
+/**
+ * @brief 串口发送数组函数
+ * @note 一般用于16进制模式下。
+ * @note uint8_t的指针类型,指向待发送数组的首地址,由于数组无法判断是否结束,所以需要再传递一个Length进来。
+ * @param *pucArray,usLength
+ * @retval None
+ */
+void vUsart2SendArray(uint8_t *pucArray, uint16_t usLength)
+{
+ for(uint16_t i = 0; i < usLength; i ++) // for循环执行Length次,可以对Array数据进行遍历,实际定义数组不要超出uint16_t的范围即可
+ {
+ vUsart2SendByte(pucArray[i]); // 依次取出数组Array的每一项
+ }
+}
+
+/**
+ * @brief 串口发送字符串函数
+ * @note 将字符串封装成指针数组的形式,定义数组长度直到检测到字符串的末尾结束,并将字符串根据长度拆成带个字符发送。
+ * @param *pcString
+ * @retval None
+ */
+void vUsart2SendString(char *pcString) // 给uint8_t *也可以,由于字符串自带一个标志位,所以就不需要再传递长度参数了
+{
+ for(uint8_t i = 0; pcString[i] != '\0'; i++) // 循环结束就可以用标志位来判断了,填'\0'是空字符的转义字符表示形式,和直接写0是一样的
+ {
+ vUsart2SendByte(pcString[i]); // 将String字符串一个个取出来,通过SendByte发送
+ }
+}
+
+/**
+ * @brief printf重定向函数
+ * @note fputc是printf函数的底层,printf函数在打印的时候,就是不断调用fputc函数打印。
+ * @param ch,*f
+ * @retval ch
+ */
+int fputc(int ch, FILE *f)
+{
+ vUsart2SendByte(ch);
+ return ch;
+}
+
+/**
+ * @brief printf封装函数
+ * @note 第一个参数是接收字符串,第二个是接收可变参数列表。
+ * @param *format,...
+ * @retval None
+ */
+void vUsart2Printf(char *format, ...)
+{
+ char String[100];
+ va_list arg; // arg是定义一个参数列表变量
+ va_start(arg, format); // 从format位置开始接收参数表,放在arg里面
+ vsprintf(String, format, arg); // 封装格式要用vsprintf,因为sprintf只能接收直接写的参数;打印字符串格式是format,参数表是arg,
+ va_end(arg); // 释放参数表
+ vUsart2SendString(String);
+}
+
+void USART2_IRQHandler(void)
+{
+ if (USART_GetITStatus(USART2, USART_IT_RXNE) == SET)
+ {
+ /* code */
+ uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART2);
+ #if (USE_NONE_SYSTEM == 1)
+ #elif (USE_FREERTOS == 1)
+ BaseType_t xHigherPriorityTaskWoken = pdFALSE;
+ xQueueSendFromISR(xQueueUsart2IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
+ /* 问题根源:请求上下文切换 */
+ portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
+ #elif (USE_OSAL == 1)
+ #endif
+ USART_ClearITPendingBit(USART2, USART_IT_RXNE);
+ }
+}
diff --git a/STM32/Gateway_Node/System/USART2.h b/STM32/Gateway_Node/System/USART2.h
new file mode 100644
index 0000000..73db8f5
--- /dev/null
+++ b/STM32/Gateway_Node/System/USART2.h
@@ -0,0 +1,35 @@
+#ifndef __USART2_H__
+#define __USART2_H__
+
+#define USE_NONE_SYSTEM 0
+#define USE_FREERTOS 1
+#define USE_OSAL 0
+#define vEsp8266IrqHandler USART2_IRQHandler
+#define USART2_GPIO_PIN_TX GPIO_Pin_2
+#define USART2_GPIO_PIN_RX GPIO_Pin_3
+
+#if (USE_NONE_SYSTEM == 1)
+#elif (USE_FREERTOS == 1)
+ #include "FreeRTOS.h"
+ #include "queue.h"
+#elif (USE_OSAL == 1)
+#endif
+
+#include "stm32f10x.h" // Device header
+#include
+#include
+#include
+
+#if (USE_NONE_SYSTEM == 1)
+#elif (USE_FREERTOS == 1)
+ extern QueueHandle_t xQueueUsart2IrqHdlr;
+#elif (USE_OSAL == 1)
+#endif
+
+void vUsart2Init(uint32_t ulUsart2Baudrate);
+void vUsart2SendByte(uint8_t ucByte);
+void vUsart2SendArray(uint8_t *pucArray, uint16_t usLength);
+void vUsart2SendString(char *pcString);
+void vUsart2Printf(char *format, ...);
+
+#endif
diff --git a/STM32/Gateway_Node/System/USART3.c b/STM32/Gateway_Node/System/USART3.c
new file mode 100644
index 0000000..46a3486
--- /dev/null
+++ b/STM32/Gateway_Node/System/USART3.c
@@ -0,0 +1,142 @@
+#include "USART3.h"
+
+/**
+ * @brief 串口3的初始化函数
+ * @note 使用USART3串口(PB10->LoRa_RX,PB11->LoRa_TX),波特率设置为115200。
+ * @param ulUsart3Baudrate
+ * @retval None
+ */
+void vUsart3Init(uint32_t ulUsart3Baudrate)
+{
+ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
+
+ GPIO_InitTypeDef GPIO_InitStructure;
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+ GPIO_InitStructure.GPIO_Pin = USART3_GPIO_PIN_TX;
+ GPIO_Init(GPIOB, &GPIO_InitStructure);
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+ GPIO_InitStructure.GPIO_Pin = USART3_GPIO_PIN_RX;
+ GPIO_Init(GPIOB, &GPIO_InitStructure);
+
+ USART_InitTypeDef USART_InitStructure;
+ USART_InitStructure.USART_BaudRate = ulUsart3Baudrate; // 设定后,USART_Init函数内部会自动算好9600对应的分频系数,并写到BRR寄存器
+ RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);
+ USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // 硬件流控制,不使用流控
+ USART_InitStructure.USART_Mode = USART_Mode_Tx|USART_Mode_Rx; // 串口模式,如果既使用输入和输出模式就用或符号,发送模式和接收模式
+ USART_InitStructure.USART_Parity = USART_Parity_No; // 无校验位
+ USART_InitStructure.USART_StopBits = USART_StopBits_1; // 一位停止位
+ USART_InitStructure.USART_WordLength = USART_WordLength_8b; // 字长,不需要校验,字长就选择8位
+ USART_Init(USART3,&USART_InitStructure);
+ // 上面是串口的查询模式,如果使用中断,还需要开启中断,配置NVIC
+ USART_ITConfig(USART3,USART_IT_RXNE,ENABLE); // 选择RXNE的中断,并开启RXNE标志位到NVIC的输出,如果RXNE标志位置1,就会向NVIC申请中断,之后可以在中断函数中接收数据
+
+ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); // 分组,分组4为4bit抢占优先级和0bit响应优先级,抢占优先级可设置为0-15。由于FreeRTOS没有响应优先级,而优先级分组4相当于4位抢占优先级和0位响应优先级。
+ NVIC_InitTypeDef NVIC_InitStructure; // 初始化NVIC的USART1通道
+ NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; // 中断通道
+ NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
+ NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5; // 抢占优先级配置,根据FreeRTOS设置配置,在范围内可以调用FreeRTOS的以“FromISR()”结尾的api函数。
+ // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 响应优先级配置,用不上了
+ NVIC_Init(&NVIC_InitStructure); // 指向NVIC_InitStructure的地址
+
+ USART_Cmd(USART3,ENABLE);
+
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+ GPIO_InitStructure.GPIO_Pin = USART3_GPIO_PIN_ATK_MD0;
+ GPIO_Init(GPIOB, &GPIO_InitStructure);
+
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+ GPIO_InitStructure.GPIO_Pin = USART3_GPIO_PIN_ATK_AUX;
+ GPIO_Init(GPIOB, &GPIO_InitStructure);
+}
+
+/**
+ * @brief 串口发送单个字节函数
+ * @note 调用这个函数,就可以从TX引脚发送一个字节数据。
+ * @param ucByte
+ * @retval None
+ */
+void vUsart3SendByte(uint8_t ucByte)
+{
+ USART_SendData(USART3, ucByte); // 调用这个函数,Byte就写入TDR寄存器了
+ // 写完之后还需要等待一下,等TDR的数据转移到移位寄存器就可以了,如果数据还在TDR寄存器中,再写入数据就会产生数据覆盖,所以在发送之后还需要等待一下标志位
+ while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET); // 发送数据寄存器空标志位,等待TXE置1,所以需要套一个while循环 TXE:发送数据寄存器空,发送完标志位自动置0,不用手动复位。
+}
+
+/**
+ * @brief 串口发送数组函数
+ * @note 一般用于16进制模式下。
+ * @note uint8_t的指针类型,指向待发送数组的首地址,由于数组无法判断是否结束,所以需要再传递一个Length进来。
+ * @param *pucArray,usLength
+ * @retval None
+ */
+void vUsart3SendArray(uint8_t *pucArray, uint16_t usLength)
+{
+ for(uint16_t i = 0; i < usLength; i ++) // for循环执行Length次,可以对Array数据进行遍历,实际定义数组不要超出uint16_t的范围即可
+ {
+ vUsart3SendByte(pucArray[i]); // 依次取出数组Array的每一项
+ }
+}
+
+/**
+ * @brief 串口发送字符串函数
+ * @note 将字符串封装成指针数组的形式,定义数组长度直到检测到字符串的末尾结束,并将字符串根据长度拆成带个字符发送。
+ * @param *pcString
+ * @retval None
+ */
+void vUsart3SendString(char *pcString) // 给uint8_t *也可以,由于字符串自带一个标志位,所以就不需要再传递长度参数了
+{
+ for(uint8_t i = 0; pcString[i] != '\0'; i++) // 循环结束就可以用标志位来判断了,填'\0'是空字符的转义字符表示形式,和直接写0是一样的
+ {
+ vUsart3SendByte(pcString[i]); // 将String字符串一个个取出来,通过SendByte发送
+ }
+}
+
+///**
+// * @brief printf重定向函数
+// * @note fputc是printf函数的底层,printf函数在打印的时候,就是不断调用fputc函数打印。
+// * @param ch,*f
+// * @retval ch
+// */
+//int fputc(int ch, FILE *f)
+//{
+// vUsart3SendByte(ch);
+// return ch;
+//}
+
+///**
+// * @brief printf封装函数
+// * @note 第一个参数是接收字符串,第二个是接收可变参数列表。
+// * @param *format,...
+// * @retval None
+// */
+//void vUsart3Printf(char *format, ...)
+//{
+// char String[100];
+// va_list arg; // arg是定义一个参数列表变量
+// va_start(arg, format); // 从format位置开始接收参数表,放在arg里面
+// vsprintf(String, format, arg); // 封装格式要用vsprintf,因为sprintf只能接收直接写的参数;打印字符串格式是format,参数表是arg,
+// va_end(arg); // 释放参数表
+// vUsart3SendString(String);
+//}
+
+void USART3_IRQHandler(void)
+{
+ if (USART_GetITStatus(USART3, USART_IT_RXNE) == SET)
+ {
+ /* code */
+ uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART3);
+ #if (USE_NONE_SYSTEM == 1)
+ #elif (USE_FREERTOS == 1)
+ BaseType_t xHigherPriorityTaskWoken = pdFALSE;
+ xQueueSendFromISR(xQueueUsart3IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
+ /* 问题根源:请求上下文切换 */
+ portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
+ #elif (USE_OSAL == 1)
+ #endif
+ USART_ClearITPendingBit(USART3, USART_IT_RXNE);
+ }
+}
diff --git a/STM32/Gateway_Node/System/USART3.h b/STM32/Gateway_Node/System/USART3.h
new file mode 100644
index 0000000..850ab56
--- /dev/null
+++ b/STM32/Gateway_Node/System/USART3.h
@@ -0,0 +1,37 @@
+#ifndef __USART3_H__
+#define __USART3_H__
+
+#define USE_NONE_SYSTEM 0
+#define USE_FREERTOS 1
+#define USE_OSAL 0
+#define vLoRaIrqHandler USART3_IRQHandler
+#define USART3_GPIO_PIN_TX GPIO_Pin_10
+#define USART3_GPIO_PIN_RX GPIO_Pin_11
+#define USART3_GPIO_PIN_ATK_AUX GPIO_Pin_4 // PA4
+#define USART3_GPIO_PIN_ATK_MD0 GPIO_Pin_3 // PB3
+
+#if (USE_NONE_SYSTEM == 1)
+#elif (USE_FREERTOS == 1)
+ #include "FreeRTOS.h"
+ #include "queue.h"
+#elif (USE_OSAL == 1)
+#endif
+
+#include "stm32f10x.h" // Device header
+#include
+#include
+#include
+
+#if (USE_NONE_SYSTEM == 1)
+#elif (USE_FREERTOS == 1)
+ extern QueueHandle_t xQueueUsart3IrqHdlr;
+#elif (USE_OSAL == 1)
+#endif
+
+void vUsart3Init(uint32_t ulUsart3Baudrate);
+void vUsart3SendByte(uint8_t ucByte);
+void vUsart3SendArray(uint8_t *pucArray, uint16_t usLength);
+void vUsart3SendString(char *pcString);
+void vUsart3Printf(char *format, ...);
+
+#endif
diff --git a/STM32/Gateway_Node/User/main.c b/STM32/Gateway_Node/User/main.c
index 99b188d..f93e884 100644
--- a/STM32/Gateway_Node/User/main.c
+++ b/STM32/Gateway_Node/User/main.c
@@ -1,25 +1,110 @@
#include "stm32f10x.h" // Device header
#include "FreeRTOS.h"
#include "task.h"
+#include "queue.h"
+#include "semphr.h"
+#include "Delay.h"
+#include "USART.h"
+#include "LED.h"
+/* 待验证的改动:合并串口。 */
/* 创建一个新任务,需要创建任务句柄,任务句柄与任务函数一一对应。 */
-TaskHandle_t xSampleTaskHandler;
+TaskHandle_t xTaskStateLedHdlr;
+TaskHandle_t xTaskWifiConnectHdlr;
+
+/* 创建队列句柄 */
+QueueHandle_t xQueueUsart1IrqHdlr;
+QueueHandle_t xQueueUsart2IrqHdlr;
+QueueHandle_t xQueueUsart3IrqHdlr;
+
+/* 创建二值信号量句柄 */
+SemaphoreHandle_t xSemWifiRetOkHdlr;
+SemaphoreHandle_t xSemWifiRetErrHdlr;
/* 创建任务 */
-void vSampleTask(void *pvParameters)
+void vTaskStateLed(void *pvParameters)
{
- while(1)
- {
-
- }
+ while(1)
+ {
+ vPc13LedOn();
+ vTaskDelay(1000);
+ vUsartPrintf(USART3, "USART3 Printf Test\r%d\n", 123);
+ vPc13LedOff();
+ vTaskDelay(1000);
+ }
+}
+
+void vTaskWifiConnection(void *pvParameters)
+{
+ uint8_t ucRetvalQueueWifiSt = 0;
+ uint8_t ucBufferQueueRec = 0;
+ while (1)
+ {
+ vUsartSendString(USART2, "AT\r\n");
+ vTaskDelay(1000);
+ ucRetvalQueueWifiSt = xQueueReceive(xQueueUsart2IrqHdlr, &ucBufferQueueRec, pdMS_TO_TICKS(30));
+ /* code */
+ if (ucRetvalQueueWifiSt == pdTRUE)
+ {
+ /* code */
+ vUsartSendString(USART3, (char *)&ucBufferQueueRec);
+ } else
+ {
+ vUsartSendString(USART3, "Queue Receive failed!\r\n");
+ vTaskDelay(300);
+ }
+ }
+}
+
+void vCreateTasksList(void)
+{
+ xTaskCreate(
+ (TaskFunction_t ) vTaskStateLed,
+ (char * ) "TaskName_StateLed",
+ (configSTACK_DEPTH_TYPE) 256,
+ (void * ) NULL,
+ (UBaseType_t ) 2,
+ (TaskHandle_t * ) &xTaskStateLedHdlr);
+ xTaskCreate(
+ (TaskFunction_t ) vTaskWifiConnection,
+ (char * ) "TaskName_WifiConnectToAP",
+ (configSTACK_DEPTH_TYPE) 512,
+ (void * ) NULL,
+ (UBaseType_t ) 2,
+ (TaskHandle_t * ) &xTaskWifiConnectHdlr);
+}
+
+void vCreateQueuesList(void)
+{
+ xQueueUsart1IrqHdlr = xQueueCreate(
+ (UBaseType_t) 64,
+ (UBaseType_t) sizeof(uint8_t *));
+ xQueueUsart2IrqHdlr = xQueueCreate(
+ (UBaseType_t) 64,
+ (UBaseType_t) sizeof(uint8_t *));
+ xQueueUsart3IrqHdlr = xQueueCreate(
+ (UBaseType_t) 64,
+ (UBaseType_t) sizeof(uint8_t *));
+}
+
+void vCreateSemaphoresList(void)
+{
+ xSemWifiRetOkHdlr = xSemaphoreCreateBinary();
+ xSemWifiRetErrHdlr = xSemaphoreCreateBinary();
}
int main(void)
{
- xTaskCreate(vSampleTask, "SampleTask", 128, NULL, 2, &xSampleTaskHandler);
- vTaskStartScheduler();
- while(1)
- {
-
- }
+ vUsartInit(USART1, 115200);
+ vUsartInit(USART2, 115200);
+ vDelayInit();
+ vPc13LedInit();
+ vCreateTasksList();
+ vCreateQueuesList();
+ vCreateSemaphoresList();
+ vTaskStartScheduler();
+ while(1)
+ {
+
+ }
}
diff --git a/STM32/Safety_Node/STM32Template.uvguix.Exploration b/STM32/Safety_Node/STM32Template.uvguix.Exploration
index d9b0ba0..6ec9353 100644
--- a/STM32/Safety_Node/STM32Template.uvguix.Exploration
+++ b/STM32/Safety_Node/STM32Template.uvguix.Exploration
@@ -111,7 +111,7 @@
0
883
- 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000600000001000000010000004B453A5C446174615C50726F6A6563745C496F5450726F6A656374735CC4A3B0E55C4672656552544F535F53544D33324631303343385436B1EAD7BCBFE2B0E65C557365725C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF53453A5C446174615C50726F6A6563745C496F5450726F6A656374735CC4A3B0E55C4672656552544F535F53544D33324631303343385436B1EAD7BCBFE2B0E65C557365725C73746D3332663130785F69742E63000000000E73746D3332663130785F69742E6300000000FFDC7800FFFFFFFF60453A5C446174615C50726F6A6563745C496F5450726F6A656374735CC4A3B0E55C4672656552544F535F53544D33324631303343385436B1EAD7BCBFE2B0E65C4672656552544F535C636F6E6669675C4672656552544F53436F6E6669672E6800000000104672656552544F53436F6E6669672E6800000000BECEA100FFFFFFFF6A453A5C446174615C50726F6A6563745C496F5450726F6A656374735CC4A3B0E55C4672656552544F535F53544D33324631303343385436B1EAD7BCBFE2B0E65C4672656552544F535C706F727461626C655C525644535C41524D5F434D335C706F72746D6163726F2E68000000000B706F72746D6163726F2E6800000000F0A0A100FFFFFFFF65453A5C446174615C50726F6A6563745C496F5450726F6A656374735CC4A3B0E55C4672656552544F535F53544D33324631303343385436B1EAD7BCBFE2B0E65C4672656552544F535C706F727461626C655C525644535C41524D5F434D335C706F72742E630000000006706F72742E6300000000BCA8E100FFFFFFFF53453A5C446174615C50726F6A6563745C496F5450726F6A656374735CC4A3B0E55C4672656552544F535F53544D33324631303343385436B1EAD7BCBFE2B0E65C4672656552544F535C696E635C7461736B2E6800000000067461736B2E68000000009CC1B600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000030030000
+ 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000600000000000000010000004B453A5C446174615C50726F6A6563745C496F5450726F6A656374735CC4A3B0E55C4672656552544F535F53544D33324631303343385436B1EAD7BCBFE2B0E65C557365725C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF53453A5C446174615C50726F6A6563745C496F5450726F6A656374735CC4A3B0E55C4672656552544F535F53544D33324631303343385436B1EAD7BCBFE2B0E65C557365725C73746D3332663130785F69742E63000000000E73746D3332663130785F69742E6300000000FFDC7800FFFFFFFF60453A5C446174615C50726F6A6563745C496F5450726F6A656374735CC4A3B0E55C4672656552544F535F53544D33324631303343385436B1EAD7BCBFE2B0E65C4672656552544F535C636F6E6669675C4672656552544F53436F6E6669672E6800000000104672656552544F53436F6E6669672E6800000000BECEA100FFFFFFFF6A453A5C446174615C50726F6A6563745C496F5450726F6A656374735CC4A3B0E55C4672656552544F535F53544D33324631303343385436B1EAD7BCBFE2B0E65C4672656552544F535C706F727461626C655C525644535C41524D5F434D335C706F72746D6163726F2E68000000000B706F72746D6163726F2E6800000000F0A0A100FFFFFFFF65453A5C446174615C50726F6A6563745C496F5450726F6A656374735CC4A3B0E55C4672656552544F535F53544D33324631303343385436B1EAD7BCBFE2B0E65C4672656552544F535C706F727461626C655C525644535C41524D5F434D335C706F72742E630000000006706F72742E6300000000BCA8E100FFFFFFFF53453A5C446174615C50726F6A6563745C496F5450726F6A656374735CC4A3B0E55C4672656552544F535F53544D33324631303343385436B1EAD7BCBFE2B0E65C4672656552544F535C696E635C7461736B2E6800000000067461736B2E68000000009CC1B600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000030030000
@@ -1822,7 +1822,7 @@
Build
976
- 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000002001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000
+ 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000
583
@@ -1855,6 +1855,1747 @@
1080
+
+ 1
+ Debug
+
+ -1
+ -1
+ 1
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ C40300007C02000080070000E6030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1005
+ 1005
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED0000005F020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 109
+ 109
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED0000005F020000
+
+
+ 16
+ 560000006D00000072010000A9020000
+
+
+
+ 1465
+ 1465
+ 1
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1466
+ 1466
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1467
+ 1467
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1468
+ 1468
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1506
+ 1506
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 16384
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 1913
+ 1913
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ F700000066000000BD030000C4000000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 1935
+ 1935
+ 1
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1936
+ 1936
+ 1
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1937
+ 1937
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1939
+ 1939
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1940
+ 1940
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1941
+ 1941
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 1942
+ 1942
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 195
+ 195
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED0000005F020000
+
+
+ 16
+ 560000006D00000072010000A9020000
+
+
+
+ 196
+ 196
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED0000005F020000
+
+
+ 16
+ 560000006D00000072010000A9020000
+
+
+
+ 197
+ 197
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 03000000400200008D0500009E020000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 198
+ 198
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 000000007C02000080070000E6030000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 199
+ 199
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000400200008D0500009E020000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 203
+ 203
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ F40000006300000080070000DD000000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 204
+ 204
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ F700000066000000BD030000C4000000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 221
+ 221
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 00000000000000000000000000000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 2506
+ 2506
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 2507
+ 2507
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 343
+ 343
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ F700000066000000BD030000C4000000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 346
+ 346
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ F700000066000000BD030000C4000000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 35141
+ 35141
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ F700000066000000BD030000C4000000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35824
+ 35824
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ F700000066000000BD030000C4000000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 35885
+ 35885
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35886
+ 35886
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35887
+ 35887
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35888
+ 35888
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35889
+ 35889
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35890
+ 35890
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35891
+ 35891
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35892
+ 35892
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35893
+ 35893
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35894
+ 35894
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35895
+ 35895
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35896
+ 35896
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35897
+ 35897
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35898
+ 35898
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35899
+ 35899
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35900
+ 35900
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35901
+ 35901
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35902
+ 35902
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35903
+ 35903
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35904
+ 35904
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 35905
+ 35905
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 38003
+ 38003
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000ED0000005F020000
+
+
+ 16
+ 560000006D00000072010000A9020000
+
+
+
+ 38007
+ 38007
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000400200008D0500009E020000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 436
+ 436
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000400200008D0500009E020000
+
+
+ 16
+ 560000006D00000072010000A9020000
+
+
+
+ 437
+ 437
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 440
+ 440
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 463
+ 463
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000400200008D0500009E020000
+
+
+ 16
+ 560000006D00000072010000A9020000
+
+
+
+ 466
+ 466
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000400200008D0500009E020000
+
+
+ 16
+ 560000006D00000072010000A9020000
+
+
+
+ 470
+ 470
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ F700000066000000BD030000C4000000
+
+
+ 16
+ 560000006D0000001E030000FB000000
+
+
+
+ 50000
+ 50000
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50001
+ 50001
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50002
+ 50002
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50003
+ 50003
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50004
+ 50004
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50005
+ 50005
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50006
+ 50006
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50007
+ 50007
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50008
+ 50008
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50009
+ 50009
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50010
+ 50010
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50011
+ 50011
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50012
+ 50012
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50013
+ 50013
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50014
+ 50014
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50015
+ 50015
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50016
+ 50016
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50017
+ 50017
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50018
+ 50018
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 50019
+ 50019
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ A3040000660000008D0500000C020000
+
+
+ 16
+ 560000006D0000004601000036010000
+
+
+
+ 59392
+ 59392
+ 1
+ 0
+ 0
+ 0
+ 966
+ 0
+ 8192
+ 0
+
+ 16
+ 0000000000000000D10300001C000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 59393
+ 0
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 00000000E603000080070000F9030000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 59399
+ 59399
+ 0
+ 0
+ 0
+ 0
+ 476
+ 0
+ 8192
+ 1
+
+ 16
+ 000000001C000000E701000038000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 59400
+ 59400
+ 1
+ 0
+ 0
+ 0
+ 612
+ 0
+ 8192
+ 2
+
+ 16
+ 000000001C0000006F02000038000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 824
+ 824
+ 0
+ 1
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ C7030000930200007D070000CD030000
+
+
+ 16
+ B8030000BC0200007407000026040000
+
+
+
+ 3383
+ 000000000A000000000000000020000001000000FFFFFFFFFFFFFFFFF4000000DD00000080070000E1000000010000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000001000000B40400006600000080070000F4000000F40000004F00000080070000DD0000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000025020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000006008000066000000500900003C020000A00400004F000000900500002502000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F400000078020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000C003000066000000B00400008F020000000000004F000000F0000000780200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF0000000078020000800700007C020000010000000100001004000000010000003EFEFFFFD500000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFFC00300007C020000C4030000E603000000000000020000000400000000000000000000000000000000000000000000000000000001000000C600000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF00000000250200009005000029020000000000000100000004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000000000000C00300004002000050090000CE020000000000002902000090050000B70200000000000040820046060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC500000001000000FFFF02001200434D756C746950616E654672616D65576E6400010094B8030000BC020000740700002604000001000000000000000200000000000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800040000001000000B8030000BC0200007407000026040000C40300007C02000080070000E603000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF05000000000000000000000000000000000000000000000001000000FFFFFFFF8F0700000000000000000000
+
+
+ 59392
+ File
+
+ 2883
+ 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D4C45445F504331335F504F5254960000000000000012000D4C45445F504331335F504F52540D55534152545F54797065446566027538067072696E7466056670757463075379735469636B11707852656164795461736B734C6973747314636F6E6669674D41585F5052494F5249544945530C5461736B48616E646C655F7412494E434C5544455F765461736B44656C61790B5356435F48616E646C65721278506F727450656E64535648616E646C65720D50656E64535648616E646C65721D764170706C69636174696F6E47657449646C655461736B4D656D6F727913764170706C69636174696F6E47657449646C6524636F6E6669674D41585F53595343414C4C5F494E544552525550545F5052494F5249545901310341542B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000300150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
+
+
+ 1423
+ 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000
+
+
+ 1423
+ 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000
+
+
+
+ 59399
+ Build
+
+ 955
+ 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000
+
+
+ 583
+ 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000
+
+
+ 583
+ 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000
+
+
+
+ 59400
+ Debug
+
+ 2362
+ 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
+
+
+ 898
+ 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000
+
+
+ 898
+ 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000
+
+
+
+ 0
+ 1920
+ 1080
+
+
@@ -1862,12 +3603,12 @@
0
100
- 1
+ 0
.\User\main.c
- 0
+ 1
1
- 26
+ 11
1
0
@@ -1875,7 +3616,7 @@
.\User\stm32f10x_it.c
0
- 25
+ 7
51
1
diff --git a/STM32/Safety_Node/User/main.c b/STM32/Safety_Node/User/main.c
index 99b188d..6f6cc6b 100644
--- a/STM32/Safety_Node/User/main.c
+++ b/STM32/Safety_Node/User/main.c
@@ -8,18 +8,41 @@ TaskHandle_t xSampleTaskHandler;
/* 创建任务 */
void vSampleTask(void *pvParameters)
{
- while(1)
- {
+ while(1)
+ {
- }
+ }
+}
+
+void vCreateTasksList(void)
+{
+ xTaskCreate(
+ (TaskFunction_t ) vSampleTask,
+ (char * ) "TaskName_SampleTask",
+ (configSTACK_DEPTH_TYPE) 256,
+ (void * ) NULL,
+ (UBaseType_t ) 2,
+ (TaskHandle_t * ) &xSampleTaskHandler);
+}
+
+void vCreateQueuesList(void)
+{
+
+}
+
+void vCreateSemaphoresList(void)
+{
+
}
int main(void)
{
- xTaskCreate(vSampleTask, "SampleTask", 128, NULL, 2, &xSampleTaskHandler);
- vTaskStartScheduler();
- while(1)
- {
-
- }
+ vCreateTasksList();
+ vCreateQueuesList();
+ vCreateSemaphoresList();
+ vTaskStartScheduler();
+ while(1)
+ {
+
+ }
}