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) + { + + } }