diff --git a/STM32/Environment_Node/Drivers/LoRa.h b/STM32/Environment_Node/Drivers/LoRa.h index b8effc2..e5708a5 100644 --- a/STM32/Environment_Node/Drivers/LoRa.h +++ b/STM32/Environment_Node/Drivers/LoRa.h @@ -120,23 +120,23 @@ static LoRaNode2Config_t xLoRaNode2Config = { }; static LoRaSensorID_t xLoRaSensorID = { - .ucIdDht11 = LORA_SENSOR_DHT11, - .ucIdMq2 = LORA_SENSOR_MQ2, - .ucIdLight = LORA_SENSOR_LIGHT, - .ucIdFire = LORA_SENSOR_FIRE + .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 + .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, + .ucCommandOn = LORA_EXECUTOR_COMMAND_ON, + .ucCommandOff = LORA_EXECUTOR_COMMAND_OFF, }; void vLoRaConnectionPkt(uint8_t ucNodeId); diff --git a/STM32/Gateway_Node/Application/App_MQTT/App_MQTT.c b/STM32/Gateway_Node/Application/App_MQTT/App_MQTT.c index 6b01b23..3f15065 100644 --- a/STM32/Gateway_Node/Application/App_MQTT/App_MQTT.c +++ b/STM32/Gateway_Node/Application/App_MQTT/App_MQTT.c @@ -1,9 +1,75 @@ #include "App_MQTT.h" -bool bMqttDefaultSubscribe(char *pcTopic, char *pcMessage) +/** + * @brief bMqttPublish + * @note 通过ESP8266模块向MQTT服务器发布消息,该函数被外部调用。 + * @param pcTopic:发布的主题字符串 + * @param pcMessage:发布的消息字符串 + * @retval true:发布成功 + * @retval false:发布失败 + */ +bool bMqttPublish(char *pcTopic, char *pcMessage) { char cCmd[256] = {0}; - snprintf(cCmd, sizeof(cCmd), "AT+MQTT_SUBSCRIBE=\"%s\",\"%s\"", pcTopic, pcMessage); - // Add logic to send the command and handle the response - return true; + uint8_t ucLen = strlen(pcMessage); + snprintf(cCmd, sizeof(cCmd), "AT+MQTTPUBRAW=0,\"%s\",%d,1,0", pcTopic, ucLen); + return bEsp8266Command(cCmd, "OK", ">", 3000) && bEsp8266Command(pcMessage, "OK", NULL, 3000); +} + +/** + * @brief bMqttSubMsgFormat + * @note 解析MQTT订阅消息,该函数被外部调用。 + * @param pcTopic:订阅的主题字符串 + * @param pcMessage:订阅的消息字符串 + * @retval true:解析成功 + * @retval false:解析失败 + */ +bool bMqttSubMsgFormat(char *pcTopic, char *pcMessage) +{ + // 此函数用于解析订阅消息,根据不同的模式提取主题和消息内容 + // 具体实现根据实际的消息格式进行编写 + char *pcSubRecMsg; + pcSubRecMsg = strstr(xSerialFrameRecord.cSerialReceivedBuffer, pcMessage); + if (strstr(xSerialFrameRecord.cSerialReceivedBuffer, pcTopic), pcSubRecMsg) + { + /* code */ + vUsartPrintf(USART1, "MQTT Subscribe Message Matched: %s\r\n", pcSubRecMsg); + return true; + } + return false; // 占位符,实际实现需要返回解析结果 +} + +/** + * @brief xMqttCmdParse + * @note 解析MQTT命令,该函数被外部调用。 + * @param pcTopic:订阅的主题字符串 + * @retval eMqttCmd_t:解析得到的命令枚举值 + */ +eMqttCmd_t xMqttCmdParse(char *pcTopic) +{ + if (bMqttSubMsgFormat(pcTopic, "{\"cmd\":{\"led\":\"on\"}}") == true) + { + return MQTT_CMD_LED_ON; + } + else if (bMqttSubMsgFormat(pcTopic, "{\"cmd\":{\"led\":\"off\"}}") == true) + { + return MQTT_CMD_LED_OFF; + } + else if (bMqttSubMsgFormat(pcTopic, "{\"cmd\":{\"fan\":\"on\"}}") == true) + { + return MQTT_CMD_FAN_ON; + } + else if (bMqttSubMsgFormat(pcTopic, "{\"cmd\":{\"fan\":\"off\"}}") == true) + { + return MQTT_CMD_FAN_OFF; + } + else if (bMqttSubMsgFormat(pcTopic, "{\"cmd\":{\"humidifier\":\"on\"}}") == true) + { + return MQTT_CMD_HUMIDIFIER_ON; + } + else if (bMqttSubMsgFormat(pcTopic, "{\"cmd\":{\"humidifier\":\"off\"}}") == true) + { + return MQTT_CMD_HUMIDIFIER_OFF; + } + return MQTT_CMD_UNKNOWN; // 未识别的命令 } diff --git a/STM32/Gateway_Node/Application/App_MQTT/App_MQTT.h b/STM32/Gateway_Node/Application/App_MQTT/App_MQTT.h index e14b4c2..2686838 100644 --- a/STM32/Gateway_Node/Application/App_MQTT/App_MQTT.h +++ b/STM32/Gateway_Node/Application/App_MQTT/App_MQTT.h @@ -13,8 +13,21 @@ typedef enum MQTT_MODE_PROPERTY, }eMqttMode_t; -bool bMqttSubMsgFormat(eMqttMode_t ucMode, char *pcReceivedMsg, char *pcTopic, char *pcMessage); -bool bMqttDefaultSubscribe(char *pcTopic, char *pcMessage); -bool bMqttNormalPublish(char *pcTopic, char *pcMessage); +typedef enum +{ + /* data */ + MQTT_CMD_LED_ON = 0, + MQTT_CMD_LED_OFF, + MQTT_CMD_FAN_ON, + MQTT_CMD_FAN_OFF, + MQTT_CMD_HUMIDIFIER_ON, + MQTT_CMD_HUMIDIFIER_OFF, + MQTT_CMD_UNKNOWN = -1, +}eMqttCmd_t; + + +bool bMqttPublish(char *pcTopic, char *pcMessage); +bool bMqttSubMsgFormat(char *pcTopic, char *pcMessage); +eMqttCmd_t xMqttCmdParse(char *pcTopic); #endif /* __APP_MQTT_H__ */ diff --git a/STM32/Gateway_Node/Application/NetFIFO/NetFIFO.c b/STM32/Gateway_Node/Application/App_NetFIFO/App_NetFIFO.c similarity index 96% rename from STM32/Gateway_Node/Application/NetFIFO/NetFIFO.c rename to STM32/Gateway_Node/Application/App_NetFIFO/App_NetFIFO.c index 1ff946e..e0a0e8b 100644 --- a/STM32/Gateway_Node/Application/NetFIFO/NetFIFO.c +++ b/STM32/Gateway_Node/Application/App_NetFIFO/App_NetFIFO.c @@ -1,8 +1,8 @@ -#include "NetFIFO.h" +#include "App_NetFIFO.h" /** * @brief 初始化环形缓冲区 - * @param pBuffer: 缓冲区结构体指针 + * @param pxBuffer: 缓冲区结构体指针 * @retval None */ void vNetBufferInit(NetFifoBuffer_t *pxBuffer) diff --git a/STM32/Gateway_Node/Application/NetFIFO/NetFIFO.h b/STM32/Gateway_Node/Application/App_NetFIFO/App_NetFIFO.h similarity index 100% rename from STM32/Gateway_Node/Application/NetFIFO/NetFIFO.h rename to STM32/Gateway_Node/Application/App_NetFIFO/App_NetFIFO.h diff --git a/STM32/Gateway_Node/BSP/USART.c b/STM32/Gateway_Node/BSP/USART.c index 663405b..22e80b3 100644 --- a/STM32/Gateway_Node/BSP/USART.c +++ b/STM32/Gateway_Node/BSP/USART.c @@ -25,24 +25,24 @@ void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate) GPIO_Init(USART1_GPIO_PORT, &GPIO_InitStructure); USART_InitTypeDef USART_InitStructure; - USART_InitStructure.USART_BaudRate = ulBaudrate; // 设定后,USART_Init函数内部会自动算好9600对应的分频系数,并写到BRR寄存器 + USART_InitStructure.USART_BaudRate = ulBaudrate; // 设定后,USART_Init函数内部会自动算好9600对应的分频系数,并写到BRR寄存器 RCC_APB2PeriphClockCmd(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_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申请中断,之后可以在中断函数中接收数据 - USART_ITConfig(USART1, USART_IT_IDLE, ENABLE); // 使能串口总线空闲中断 - 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 + USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); // 选择RXNE的中断,并开启RXNE标志位到NVIC的输出,如果RXNE标志位置1,就会向NVIC申请中断,之后可以在中断函数中接收数据 + USART_ITConfig(USART1, USART_IT_IDLE, ENABLE); // 使能串口总线空闲中断 + 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 = 6; // 抢占优先级配置,根据FreeRTOS设置配置,在范围内可以调用FreeRTOS的以“FromISR()”结尾的api函数。 - // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 响应优先级配置,用不上了 - NVIC_Init(&NVIC_InitStructure); // 指向NVIC_InitStructure的地址 + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 6; // 抢占优先级配置,根据FreeRTOS设置配置,在范围内可以调用FreeRTOS的以“FromISR()”结尾的api函数。 + // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 响应优先级配置,用不上了 + NVIC_Init(&NVIC_InitStructure); // 指向NVIC_InitStructure的地址 USART_Cmd(USART1, ENABLE); } else if (xUsartId == USART2) @@ -59,17 +59,17 @@ void vUsartInit(USART_TypeDef *xUsartId, uint32_t ulBaudrate) GPIO_Init(USART2_GPIO_PORT, &GPIO_InitStructure); USART_InitTypeDef USART_InitStructure; - USART_InitStructure.USART_BaudRate = ulBaudrate; // 设定后,USART_Init函数内部会自动算好9600对应的分频系数,并写到BRR寄存器 + 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_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申请中断,之后可以在中断函数中接收数据 - USART_ITConfig(USART2, USART_IT_IDLE, ENABLE); // 使能串口总线空闲中断 + // 上面是串口的查询模式,如果使用中断,还需要开启中断,配置NVIC + USART_ITConfig(USART2, USART_IT_RXNE, ENABLE); // 选择RXNE的中断,并开启RXNE标志位到NVIC的输出,如果RXNE标志位置1,就会向NVIC申请中断,之后可以在中断函数中接收数据 + USART_ITConfig(USART2, USART_IT_IDLE, ENABLE); // 使能串口总线空闲中断 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); // 分组,分组4为4bit抢占优先级和0bit响应优先级,抢占优先级可设置为0-15。由于FreeRTOS没有响应优先级,而优先级分组4相当于4位抢占优先级和0位响应优先级。 NVIC_InitTypeDef NVIC_InitStructure; // 初始化NVIC的USART1通道 @@ -258,14 +258,14 @@ void USART2_IRQHandler(void) if ( USART_GetITStatus ( USART2, USART_IT_RXNE ) != RESET ) { ucRxData = USART_ReceiveData( USART2 ); - if ( xSerialFrameRecord .Bits_t .usFrameLength < ( BUFFER_MAX_LENGTH - 1 ) ) //预留1个字节写结束符 - xSerialFrameRecord .cSerialReceivedBuffer [ xSerialFrameRecord .Bits_t .usFrameLength ++ ] = ucRxData; + if ( xSerialFrameRecord.Bits_t.usFrameLength < ( BUFFER_MAX_LENGTH - 1 ) ) // 预留1个字节写结束符 + xSerialFrameRecord.cSerialReceivedBuffer [ xSerialFrameRecord.Bits_t.usFrameLength ++ ] = ucRxData; } - if ( USART_GetITStatus( USART2, USART_IT_IDLE ) == SET ) //数据帧接收完毕 + if ( USART_GetITStatus( USART2, USART_IT_IDLE ) == SET ) // 数据帧接收完毕 { - xSerialFrameRecord .Bits_t .usFrameFinishFlag = 1; - ucRxData = USART_ReceiveData( USART2 ); //由软件序列清除中断标志位(先读USART_SR,然后读USART_DR) - ucTcpClosedFlag = strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "CLOSED\r\n" ) ? 1 : 0; + xSerialFrameRecord.Bits_t.usFrameFinishFlag = 1; + ucRxData = USART_ReceiveData( USART2 ); // 由软件序列清除中断标志位(先读USART_SR,然后读USART_DR) + ucTcpClosedFlag = strstr ( xSerialFrameRecord.cSerialReceivedBuffer, "CLOSED\r\n" ) ? 1 : 0; } #elif (USE_RTOS == FREERTOS && ENABLE_FREERTOS_API_QUEUE_USART2_IRQ == 1) if (USART_GetITStatus(USART2, USART_IT_RXNE) == SET) @@ -283,14 +283,14 @@ void USART2_IRQHandler(void) if ( USART_GetITStatus ( USART2, USART_IT_RXNE ) != RESET ) { ucRxData = USART_ReceiveData( USART2 ); - if ( xSerialFrameRecord .Bits_t .usFrameLength < ( BUFFER_MAX_LENGTH - 1 ) ) //预留1个字节写结束符 - xSerialFrameRecord .cSerialReceivedBuffer [ xSerialFrameRecord .Bits_t .usFrameLength ++ ] = ucRxData; + if ( xSerialFrameRecord.Bits_t.usFrameLength < ( BUFFER_MAX_LENGTH - 1 ) ) // 预留1个字节写结束符 + xSerialFrameRecord.cSerialReceivedBuffer [ xSerialFrameRecord.Bits_t.usFrameLength ++ ] = ucRxData; } - if ( USART_GetITStatus( USART2, USART_IT_IDLE ) == SET ) //数据帧接收完毕 + if ( USART_GetITStatus( USART2, USART_IT_IDLE ) == SET ) //数据帧接收完毕 { - xSerialFrameRecord .Bits_t .usFrameFinishFlag = 1; - ucRxData = USART_ReceiveData( USART2 ); //由软件序列清除中断标志位(先读USART_SR,然后读USART_DR) - ucTcpClosedFlag = strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "CLOSED\r\n" ) ? 1 : 0; + xSerialFrameRecord.Bits_t.usFrameFinishFlag = 1; + ucRxData = USART_ReceiveData( USART2 ); // 由软件序列清除中断标志位(先读USART_SR,然后读USART_DR) + ucTcpClosedFlag = strstr ( xSerialFrameRecord.cSerialReceivedBuffer, "CLOSED\r\n" ) ? 1 : 0; } USART_SendData(USART1, ucRxData); #endif diff --git a/STM32/Gateway_Node/BSP/USART.c.bkp b/STM32/Gateway_Node/BSP/USART.c.bkp deleted file mode 100644 index f9c8f58..0000000 --- a/STM32/Gateway_Node/BSP/USART.c.bkp +++ /dev/null @@ -1,289 +0,0 @@ -#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(USART1_GPIO_CLOCK, 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(USART1_GPIO_PORT, &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(USART1_GPIO_PORT, &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 = 7; // 抢占优先级配置,根据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(USART2_GPIO_CLOCK,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(USART2_GPIO_PORT, &GPIO_InitStructure); - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; - GPIO_InitStructure.GPIO_Pin = USART2_GPIO_PIN_RX; - GPIO_Init(USART2_GPIO_PORT, &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(USART3_GPIO_CLOCK,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(USART3_GPIO_PORT, &GPIO_InitStructure); - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; - GPIO_InitStructure.GPIO_Pin = USART3_GPIO_PIN_RX; - GPIO_Init(USART3_GPIO_PORT, &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 = 6; // 抢占优先级配置,根据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_RTOS == NONE) - #elif (USE_RTOS == FREERTOS) - BaseType_t xHigherPriorityTaskWoken = pdFALSE; - xQueueSendFromISR(xQueueUsart1IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken); - /* 问题根源:请求上下文切换 */ - portYIELD_FROM_ISR(xHigherPriorityTaskWoken); - #elif (USE_RTOS == OSAL) - #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_RTOS == NONE) - #elif (USE_RTOS == FREERTOS) - BaseType_t xHigherPriorityTaskWoken = pdFALSE; - // 添加队列状态检查 - if(xQueueUsart2IrqHdlr != NULL) { - if (xQueueSendFromISR(xQueueUsart2IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken) != pdTRUE) { - // 队列发送失败处理 - vUsartSendString(USART3, "Queue Full or Error!"); - } - } else { - vUsartSendString(USART3, "Queue Not Initialized!"); - } - /* 问题根源:请求上下文切换 */ - portYIELD_FROM_ISR(xHigherPriorityTaskWoken); - #elif (USE_RTOS == OSAL) - #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_RTOS == NONE) - #elif (USE_RTOS == FREERTOS) - BaseType_t xHigherPriorityTaskWoken = pdFALSE; - xQueueSendFromISR(xQueueUsart3IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken); - /* 问题根源:请求上下文切换 */ - portYIELD_FROM_ISR(xHigherPriorityTaskWoken); - #elif (USE_RTOS == OSAL) - #endif - USART_ClearITPendingBit(USART3, USART_IT_RXNE); - } -} diff --git a/STM32/Gateway_Node/BSP/USART.h.bkp b/STM32/Gateway_Node/BSP/USART.h.bkp deleted file mode 100644 index 337ee6f..0000000 --- a/STM32/Gateway_Node/BSP/USART.h.bkp +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef __USART_H__ -#define __USART_H__ - -/* 是否使用RTOS,若需要使用RTOS,则将下面对应的操作系统的预编译设置需要使用到的RTOS名称,反之则设置为NONE。 */ -#define USE_RTOS FREERTOS -#define NONE 0 -#define FREERTOS 1 - -#define vUsart1IrqHandler USART1_IRQHandler -#define vEsp8266IrqHandler USART2_IRQHandler -#define vLoRaIrqHandler USART3_IRQHandler -#define USART1_GPIO_CLOCK RCC_APB2Periph_GPIOA -#define USART2_GPIO_CLOCK RCC_APB2Periph_GPIOA -#define USART3_GPIO_CLOCK RCC_APB2Periph_GPIOB -#define USART1_GPIO_PORT GPIOA -#define USART2_GPIO_PORT GPIOA -#define USART3_GPIO_PORT GPIOB -#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_RTOS == NONE) -#elif (USE_RTOS == FREERTOS) - #include "FreeRTOS.h" - #include "queue.h" -#endif - -#include "stm32f10x.h" // Device header -#include -#include -#include - -#if (USE_RTOS == NONE) -#elif (USE_RTOS == FREERTOS) - extern QueueHandle_t xQueueUsart1IrqHdlr; - extern QueueHandle_t xQueueUsart2IrqHdlr; - extern QueueHandle_t xQueueUsart3IrqHdlr; -#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/Drivers/ESP8266.c b/STM32/Gateway_Node/Drivers/ESP8266.c index 3e33388..5b55565 100644 --- a/STM32/Gateway_Node/Drivers/ESP8266.c +++ b/STM32/Gateway_Node/Drivers/ESP8266.c @@ -54,19 +54,19 @@ void vEsp8266Rst ( void ) */ bool bEsp8266Command ( char * pcCmd, char * pcAck1, char * pcAck2, uint32_t ulWaittime ) { - xSerialFrameRecord .Bits_t .usFrameLength = 0; //从新开始接收新的数据包 + xSerialFrameRecord.Bits_t.usFrameLength = 0; //从新开始接收新的数据包 vUsartPrintf ( USART2, "%s\r\n", pcCmd ); if ( ( pcAck1 == 0 ) && ( pcAck2 == 0 ) ) //不需要接收数据 return true; vDelayMs( ulWaittime ); //延时 - xSerialFrameRecord .cSerialReceivedBuffer [ xSerialFrameRecord .Bits_t .usFrameLength ] = '\0'; + xSerialFrameRecord.cSerialReceivedBuffer [ xSerialFrameRecord.Bits_t.usFrameLength ] = '\0'; if ( ( pcAck1 != 0 ) && ( pcAck2 != 0 ) ) - return ( ( bool ) strstr ( xSerialFrameRecord .cSerialReceivedBuffer, pcAck1 ) || - ( bool ) strstr ( xSerialFrameRecord .cSerialReceivedBuffer, pcAck2 ) ); + return ( ( bool ) strstr ( xSerialFrameRecord.cSerialReceivedBuffer, pcAck1 ) || + ( bool ) strstr ( xSerialFrameRecord.cSerialReceivedBuffer, pcAck2 ) ); else if ( pcAck1 != 0 ) - return ( ( bool ) strstr ( xSerialFrameRecord .cSerialReceivedBuffer, pcAck1 ) ); + return ( ( bool ) strstr ( xSerialFrameRecord.cSerialReceivedBuffer, pcAck1 ) ); else - return ( ( bool ) strstr ( xSerialFrameRecord .cSerialReceivedBuffer, pcAck2 ) ); + return ( ( bool ) strstr ( xSerialFrameRecord.cSerialReceivedBuffer, pcAck2 ) ); } /** @@ -80,9 +80,10 @@ void vEsp8266AtTest ( void ) char count=0; macESP8266_RST_HIGH_LEVEL(); vDelayMs( 1000 ); - while ( count < 10 ) + while ( count < 3 ) { - if( bEsp8266Command ( "AT", "OK", NULL, 500 ) ) return; + if( bEsp8266Command ( "AT", "OK", NULL, 500 ) != true ) + return; vEsp8266Rst(); ++ count; } @@ -120,9 +121,14 @@ bool bEsp8266NetModeChoose ( eNetMode_t xMode ) */ bool bEsp8266JoinAp ( char * pcSsid, char * pcPassWord ) { - char cCmd [120]; + char cCmd [128]; sprintf ( cCmd, "AT+CWJAP=\"%s\",\"%s\"", pcSsid, pcPassWord ); - return bEsp8266Command ( cCmd, "OK", NULL, 5000 ); + if (strstr ( xSerialFrameRecord.cSerialReceivedBuffer, "WIFI CONNECTED" ) != NULL) + { + /* code */ + return true; + } + return bEsp8266Command ( cCmd, "OK", "WIFI CONNECTED", 8000 ); } /** @@ -140,31 +146,31 @@ bool bEsp8266MqttInit ( char * pcMqttUserName, char * pcMqttPassword, char * pcM char * pcMqttServerIp, uint16_t usMqttServerPort, char * pcMqttSubscribeTopic ) { - char cCmd[512] = {0}; + char cCmd[256] = {0}; /* 1. 配置MQTT用户信息 */ snprintf(cCmd, sizeof(cCmd), "AT+MQTTUSERCFG=0,1,\"NULL\",\"%s\",\"%s\",0,0,\"\"", pcMqttUserName, pcMqttPassword); - if (!bEsp8266Command(cCmd, "OK", NULL, 2000)) + if (bEsp8266Command(cCmd, "OK", NULL, 2000) != true) return false; /* 2. 设置客户端ID */ memset(cCmd, 0, sizeof(cCmd)); snprintf(cCmd, sizeof(cCmd), "AT+MQTTCLIENTID=0,\"%s\"", pcMqttClientId); - if (!bEsp8266Command(cCmd, "OK", NULL, 2000)) + if (bEsp8266Command(cCmd, "OK", NULL, 2000) != true) return false; /* 3. 连接到MQTT服务器 */ memset(cCmd, 0, sizeof(cCmd)); snprintf(cCmd, sizeof(cCmd), "AT+MQTTCONN=0,\"%s\",%u,1", pcMqttServerIp, usMqttServerPort); - if (!bEsp8266Command(cCmd, "OK", NULL, 5000) && !bEsp8266Command(cCmd, "+MQTTCONN", NULL, 5000)) + if (bEsp8266Command(cCmd, "OK", NULL, 8000) != true && bEsp8266Command(cCmd, "+MQTTCONN", NULL, 8000) != true) return false; /* 4. 订阅主题 */ memset(cCmd, 0, sizeof(cCmd)); snprintf(cCmd, sizeof(cCmd), "AT+MQTTSUB=0,\"%s\",1", pcMqttSubscribeTopic); - if (!bEsp8266Command(cCmd, "OK", NULL, 2000)) + if (bEsp8266Command(cCmd, "OK", NULL, 2000) != true) return false; return true; @@ -181,7 +187,7 @@ bool bEsp8266MqttInit ( char * pcMqttUserName, char * pcMqttPassword, char * pcM */ bool bEsp8266BuildAp ( char * pcSsid, char * pcPassWord, eApPsdMode_t xPsdMode ) { - char cCmd [120]; + char cCmd [128]; sprintf ( cCmd, "AT+CWSAP=\"%s\",\"%s\",1,%d", pcSsid, pcPassWord, xPsdMode ); return bEsp8266Command ( cCmd, "OK", 0, 1000 ); } @@ -210,7 +216,7 @@ bool bEsp8266EnableMultipleId ( FunctionalState xEnumEnUnvarnishTx ) */ bool bEsp8266LinkServer ( eNetPro_t xNetProtocol, char * pcIp, char * pcComNum, eIdNo_t xId) { - char cStr [100] = { 0 }, cCmd [120]; + char cStr [128] = { 0 }, cCmd [128]; switch ( xNetProtocol ) { case enumTCP: @@ -240,7 +246,7 @@ bool bEsp8266LinkServer ( eNetPro_t xNetProtocol, char * pcIp, char * pcComNum, */ bool bEsp8266StartOrShutServer ( FunctionalState xMode, char * pcPortNum, char * pcTimeOver ) { - char cCmd1 [120], cCmd2 [120]; + char cCmd1 [128], cCmd2 [128]; if ( xMode ) { sprintf ( cCmd1, "AT+CIPSERVER=%d,%s", 1, pcPortNum ); @@ -268,12 +274,12 @@ uint8_t ucEsp8266GetLinkStatus ( void ) { if ( bEsp8266Command ( "AT+CIPSTATUS", "OK", 0, 500 ) ) { - if ( strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "STATUS:2\r\n" ) ) + if ( strstr ( xSerialFrameRecord.cSerialReceivedBuffer, "STATUS:2\r\n" ) ) return 2; - else if ( strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "STATUS:3\r\n" ) ) + else if ( strstr ( xSerialFrameRecord.cSerialReceivedBuffer, "STATUS:3\r\n" ) ) return 3; - else if ( strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "STATUS:4\r\n" ) ) + else if ( strstr ( xSerialFrameRecord.cSerialReceivedBuffer, "STATUS:4\r\n" ) ) return 4; } return 0; @@ -290,23 +296,23 @@ uint8_t ucEsp8266GetIdLinkStatus ( void ) uint8_t ucIdLinkStatus = 0x00; if ( bEsp8266Command ( "AT+CIPSTATUS", "OK", 0, 500 ) ) { - if ( strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "+CIPSTATUS:0," ) ) + if ( strstr ( xSerialFrameRecord.cSerialReceivedBuffer, "+CIPSTATUS:0," ) ) ucIdLinkStatus |= 0x01; else ucIdLinkStatus &= ~ 0x01; - if ( strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "+CIPSTATUS:1," ) ) + if ( strstr ( xSerialFrameRecord.cSerialReceivedBuffer, "+CIPSTATUS:1," ) ) ucIdLinkStatus |= 0x02; else ucIdLinkStatus &= ~ 0x02; - if ( strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "+CIPSTATUS:2," ) ) + if ( strstr ( xSerialFrameRecord.cSerialReceivedBuffer, "+CIPSTATUS:2," ) ) ucIdLinkStatus |= 0x04; else ucIdLinkStatus &= ~ 0x04; - if ( strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "+CIPSTATUS:3," ) ) + if ( strstr ( xSerialFrameRecord.cSerialReceivedBuffer, "+CIPSTATUS:3," ) ) ucIdLinkStatus |= 0x08; else ucIdLinkStatus &= ~ 0x08; - if ( strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "+CIPSTATUS:4," ) ) + if ( strstr ( xSerialFrameRecord.cSerialReceivedBuffer, "+CIPSTATUS:4," ) ) ucIdLinkStatus |= 0x10; else ucIdLinkStatus &= ~ 0x10; @@ -324,20 +330,20 @@ uint8_t ucEsp8266GetIdLinkStatus ( void ) */ uint8_t ucEsp8266InquireApIp ( char * pcApIp, uint8_t ucArrayLength ) { - char uc; + char c; char * pCh; bEsp8266Command ( "AT+CIFSR", "OK", 0, 500 ); - pCh = strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "APIP,\"" ); + pCh = strstr ( xSerialFrameRecord.cSerialReceivedBuffer, "APIP,\"" ); if ( pCh ) pCh += 6; else return 0; - for ( uc = 0; uc < ucArrayLength; uc ++ ) + for ( c = 0; c < ucArrayLength; c ++ ) { - pcApIp [ uc ] = * ( pCh + uc); - if ( pcApIp [ uc ] == '\"' ) + pcApIp [ c ] = * ( pCh + c); + if ( pcApIp [ c ] == '\"' ) { - pcApIp [ uc ] = '\0'; + pcApIp [ c ] = '\0'; break; } } @@ -381,7 +387,7 @@ void vEsp8266ExitUnvarnishSend ( void ) */ bool bEsp8266SendString ( FunctionalState xEnumEnUnvarnishTx, char * pcStr, uint32_t ulStrLength, eIdNo_t xId ) { - char cStr [20]; + char cStr [256]; bool bRet = false; if ( xEnumEnUnvarnishTx ) { @@ -409,16 +415,16 @@ bool bEsp8266SendString ( FunctionalState xEnumEnUnvarnishTx, char * pcStr, uint char * pcEsp8266ReceiveString ( FunctionalState xEnumEnUnvarnishTx ) { char * pRecStr = 0; - xSerialFrameRecord .Bits_t .usFrameLength = 0; - xSerialFrameRecord .Bits_t .usFrameFinishFlag = 0; - while ( ! xSerialFrameRecord .Bits_t .usFrameFinishFlag ); - xSerialFrameRecord .cSerialReceivedBuffer [ xSerialFrameRecord .Bits_t .usFrameLength ] = '\0'; + xSerialFrameRecord.Bits_t.usFrameLength = 0; + xSerialFrameRecord.Bits_t.usFrameFinishFlag = 0; + while ( ! xSerialFrameRecord.Bits_t.usFrameFinishFlag ); + xSerialFrameRecord.cSerialReceivedBuffer [ xSerialFrameRecord.Bits_t.usFrameLength ] = '\0'; if ( xEnumEnUnvarnishTx ) - pRecStr = xSerialFrameRecord .cSerialReceivedBuffer; + pRecStr = xSerialFrameRecord.cSerialReceivedBuffer; else { - if ( strstr ( xSerialFrameRecord .cSerialReceivedBuffer, "+IPD" ) ) - pRecStr = xSerialFrameRecord .cSerialReceivedBuffer; + if ( strstr ( xSerialFrameRecord.cSerialReceivedBuffer, "+IPD" ) ) + pRecStr = xSerialFrameRecord.cSerialReceivedBuffer; } return pRecStr; } diff --git a/STM32/Gateway_Node/Drivers/ESP8266.c.bkp b/STM32/Gateway_Node/Drivers/ESP8266.c.bkp index c318c5d..776aa7d 100644 --- a/STM32/Gateway_Node/Drivers/ESP8266.c.bkp +++ b/STM32/Gateway_Node/Drivers/ESP8266.c.bkp @@ -265,21 +265,3 @@ void vTaskWifiConnection(void *pvParameters) vTaskDelete(NULL); } } - - // bool bMqttConnectResult = false; - // bEsp8266Command("AT+MQTTUSERCFG=0,1,\"NULL\",\"GATEWAY_STM32_ESP8266&k11ilqnf8mF\",\"8457286184495376a925f47ca284bb46a2fe8f6a6b76b0479ddb066038fe0d26\",0,0,\"\"", "OK", NULL, 1500); - // bEsp8266Command("AT+MQTTCLIENTID=0,\"k11ilqnf8mF.GATEWAY_STM32_ESP8266|securemode=2\\,signmethod=hmacsha256\\,timestamp=1768114890602|\"", "OK", NULL, 1500); - // bEsp8266Command("AT+MQTTCONN=0,\"iot-06z00by9al78fmz.mqtt.iothub.aliyuncs.com\",1883,1", "OK", NULL, 5000); - // bMqttConnectResult = bEsp8266Command("AT+MQTTSUB=0,\"/k11ilqnf8mF/GATEWAY_STM32_ESP8266/user/get\",1", "OK", NULL, 1500); - // if (bMqttConnectResult == true) - // { - // /* code */ - // vUsartPrintf(USART1, "MQTT Init Success\r\n"); - // vTaskDelete(NULL); - // } - // if (bEsp8266MqttInit(ESP8266_ALIYUN_MQTT_USERNAME, ESP8266_ALIYUN_MQTT_PASSWORD, ESP8266_ALIYUN_MQTT_CLIENT_ID, ESP8266_ALIYUN_MQTT_IP, ESP8266_ALIYUN_MQTT_PORT, ESP8266_ALIYUN_MQTT_SUBSCRIBE_TOPIC) == true) - // { - // /* code */ - // vUsartPrintf(USART1, "MQTT Init Success\r\n"); - // vTaskDelete(NULL); - // } \ No newline at end of file diff --git a/STM32/Gateway_Node/Drivers/ESP8266.h b/STM32/Gateway_Node/Drivers/ESP8266.h index 7c10825..582fae9 100644 --- a/STM32/Gateway_Node/Drivers/ESP8266.h +++ b/STM32/Gateway_Node/Drivers/ESP8266.h @@ -62,29 +62,34 @@ typedef enum{ #define macESP8266_RST_LOW_LEVEL() GPIO_ResetBits ( macESP8266_RST_PORT, macESP8266_RST_PIN ) /* 用户需要设置的参数 */ -#define ESP8266_APSSID "CMCC-5bjx" // 要连接的热点的名称 -// #define ESP8266_APSSID "TESTAP" -#define ESP8266_APPWD "jp7qpqn3" // 要连接的热点的密钥 +#define ESP8266_APSSID "CMCC-5bjx" // 要连接的热点的名称 +#define ESP8266_APPWD "jp7qpqn3" // 要连接的热点的密钥 #define ALIYUN 0 #define EMQX 1 -#define ESP8266_MQTT_SERVER_MODE ALIYUN // 选择MQTT服务器模式:ALIYUN/EMQX +#define ESP8266_MQTT_SERVER_MODE EMQX // 选择MQTT服务器模式:ALIYUN/EMQX -#define ESP8266_EMQX_MQTT_SERVER_IP "121.36.104.9" // MQTT服务器IP地址 -#define ESP8266_EMQX_MQTT_SERVER_PORT 1883 // MQTT服务器端口号 -#define ESP8266_EMQX_MQTT_CLIENTID "LoRaEnvAssistant&stm32" // MQTT客户端ID -#define ESP8266_EMQX_MQTT_USERNAME "stm32" // MQTT用户名 -#define ESP8266_EMQX_MQTT_PASSWORD "123456789" // MQTT密码 -#define ESP8266_EMQX_MQTT_SUBSCRIBE_TOPIC "/LoRaEnvAssistant/LoRaEnvAssistant&mqttfx/topics" // 订阅主题 -#define ESP8266_EMQX_MQTT_PUBLISH_TOPIC "/LoRaEnvAssistant/LoRaEnvAssistant&stm32/topics" // 发布主题 +#define ESP8266_EMQX_MQTT_SERVER_IP "121.36.104.9" // MQTT服务器IP地址 +#define ESP8266_EMQX_MQTT_SERVER_PORT 1883 // MQTT服务器端口号 +#define ESP8266_EMQX_MQTT_PROJECTID "LoRaEnvAssistant" // MQTT项目ID +#define ESP8266_EMQX_MQTT_DEVICENAME "stm32" // MQTT设备名称 +#define ESP8266_EMQX_MQTT_SUB_DEVICENAME "mqttfx" // MQTT订阅设备名称 +#define ESP8266_EMQX_MQTT_CLIENTID ESP8266_EMQX_MQTT_PROJECTID"&"ESP8266_EMQX_MQTT_DEVICENAME // MQTT客户端ID +#define ESP8266_EMQX_MQTT_USERNAME ESP8266_EMQX_MQTT_DEVICENAME // MQTT用户名 +#define ESP8266_EMQX_MQTT_PASSWORD "123456789" // MQTT密码 +#define ESP8266_EMQX_MQTT_SUBSCRIBE_TOPIC "/"ESP8266_EMQX_MQTT_PROJECTID"/"ESP8266_EMQX_MQTT_PROJECTID"&"ESP8266_EMQX_MQTT_SUB_DEVICENAME"/topics" // 订阅主题 +#define ESP8266_EMQX_MQTT_PUBLISH_TOPIC "/"ESP8266_EMQX_MQTT_PROJECTID"/"ESP8266_EMQX_MQTT_CLIENTID"/topics" // 发布主题 #define ESP8266_ALIYUN_MQTT_IP "iot-06z00by9al78fmz.mqtt.iothub.aliyuncs.com" #define ESP8266_ALIYUN_MQTT_PORT 1883 -#define ESP8266_ALIYUN_MQTT_CLIENTID "k11ilqnf8mF.GATEWAY_STM32_ESP8266|securemode=2\\,signmethod=hmacsha256\\,timestamp=1768415322303|" -#define ESP8266_ALIYUN_MQTT_USERNAME "GATEWAY_STM32_ESP8266&k11ilqnf8mF" +#define ESP8266_ALIYUN_MQTT_PRODUCTKEY "k11ilqnf8mF" +#define ESP8266_ALIYUN_MQTT_DEVICENAME "GATEWAY_STM32_ESP8266" +#define ESP8266_ALIYUN_MQTT_CLIENTID ESP8266_ALIYUN_MQTT_PRODUCTKEY"."ESP8266_ALIYUN_MQTT_DEVICENAME \ + "|securemode=2\\,signmethod=hmacsha256\\,timestamp=1768415322303|" +#define ESP8266_ALIYUN_MQTT_USERNAME ESP8266_ALIYUN_MQTT_DEVICENAME"&"ESP8266_ALIYUN_MQTT_PRODUCTKEY #define ESP8266_ALIYUN_MQTT_PASSWORD "a74261b04d7dda672342776b88e956f26f74f4d9d104461f8b65cbf544ab9c03" -#define ESP8266_ALIYUN_MQTT_SUBSCRIBE_TOPIC "/k11ilqnf8mF/GATEWAY_STM32_ESP8266/user/get" -#define ESP8266_ALIYUN_MQTT_PUBLISH_TOPIC "/k11ilqnf8mF/GATEWAY_STM32_ESP8266/user/update" +#define ESP8266_ALIYUN_MQTT_SUBSCRIBE_TOPIC "/"ESP8266_ALIYUN_MQTT_PRODUCTKEY"/"ESP8266_ALIYUN_MQTT_DEVICENAME"/user/get" +#define ESP8266_ALIYUN_MQTT_PUBLISH_TOPIC "/"ESP8266_ALIYUN_MQTT_PRODUCTKEY"/"ESP8266_ALIYUN_MQTT_DEVICENAME"/user/update" /* ESP8266 函数声明 */ void vEsp8266GpioConfig ( void ); diff --git a/STM32/Gateway_Node/STM32Template.uvguix.Exploration b/STM32/Gateway_Node/STM32Template.uvguix.Exploration index c263af3..29ce5c1 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_LoRa_Environment_Assistant\STM32\Gateway_Node\BSP + E:\Data\Project\IoTProjects\FreeRTOS_LoRa_Environment_Assistant\STM32\Gateway_Node\Application\App_MQTT @@ -103,8 +103,8 @@ 44 - 2 - 3 + 0 + 1 -32000 -32000 @@ -114,17 +114,17 @@ -1 - 3 - -8 - 1924 - 1048 + 2 + -7 + 1925 + 1047 0 - 786 - 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000500000000000000010000005E453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C557365725C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF64453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C447269766572735C455350383236362E630000000009455350383236362E6300000000FFDC7800FFFFFFFF64453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C447269766572735C455350383236362E680000000009455350383236362E6800000000BECEA100FFFFFFFF61453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C447269766572735C4C6F52612E6300000000064C6F52612E6300000000F0A0A100FFFFFFFF61453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C447269766572735C4C6F52612E6800000000064C6F52612E6800000000BCA8E100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F400000066000000800700006B030000 + 1070 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000700000006000000010000005E453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C557365725C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF64453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C447269766572735C455350383236362E630000000009455350383236362E6300000000FFDC7800FFFFFFFF64453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C447269766572735C455350383236362E680000000009455350383236362E6800000000BECEA100FFFFFFFF61453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C447269766572735C4C6F52612E6300000000064C6F52612E6300000000F0A0A100FFFFFFFF61453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C447269766572735C4C6F52612E6800000000064C6F52612E6800000000BCA8E100FFFFFFFF72453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C4170706C69636174696F6E5C4170705F4D5154545C4170705F4D5154542E63000000000A4170705F4D5154542E63000000009CC1B600FFFFFFFF72453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C4170706C69636174696F6E5C4170705F4D5154545C4170705F4D5154542E68000000000A4170705F4D5154542E6800000000F7B88600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F5000000700000007D0700006A030000 @@ -147,7 +147,7 @@ 16 - F40000006600000090050000F4000000 + F50000007000000091050000FE000000 @@ -163,7 +163,7 @@ 0 16 - 0000000063000000F000000054030000 + 0000000063000000F000000049030000 16 @@ -207,7 +207,7 @@ 16 - A4000000BB0000006C03000049010000 + BE000000D50000008603000065010000 @@ -227,7 +227,7 @@ 16 - A4000000BB0000006C03000049010000 + BE000000D50000008603000065010000 @@ -247,7 +247,7 @@ 16 - A4000000BB0000006C03000049010000 + BE000000D50000008603000065010000 @@ -267,7 +267,7 @@ 16 - A4000000BB0000006C03000049010000 + BE000000D50000008603000065010000 @@ -327,7 +327,7 @@ 16 - 22000000390000001201000002010000 + BE000000D5000000AE010000A0010000 @@ -347,7 +347,7 @@ 16 - A4000000BB0000009401000084010000 + BE000000D5000000AE010000A0010000 @@ -367,7 +367,7 @@ 16 - A4000000BB0000009401000084010000 + BE000000D5000000AE010000A0010000 @@ -407,7 +407,7 @@ 16 - 2200000039000000EA020000C7000000 + BE000000D50000008603000065010000 @@ -427,7 +427,7 @@ 16 - A4000000BB0000006C03000049010000 + BE000000D50000008603000065010000 @@ -447,7 +447,7 @@ 16 - A4000000BB0000006C03000049010000 + BE000000D50000008603000065010000 @@ -503,7 +503,7 @@ 0 16 - 000000006C03000080070000E6030000 + 00000000610300007C070000DB030000 16 @@ -523,11 +523,11 @@ 0 16 - 000000001502000090050000B7020000 + 000000001502000090050000BD020000 16 - 2200000039000000EA020000C7000000 + BE000000D50000008603000065010000 @@ -543,7 +543,7 @@ 0 16 - 030000006F03000079070000CD030000 + 030000006403000079070000C2030000 16 @@ -647,7 +647,7 @@ 16 - A4000000BB0000006C03000049010000 + BE000000D50000008603000065010000 @@ -887,7 +887,7 @@ 16 - A4000000BB0000009401000084010000 + BE000000D5000000AE010000A0010000 @@ -907,7 +907,7 @@ 16 - 22000000390000001201000002010000 + BE000000D5000000AE010000A0010000 @@ -927,7 +927,7 @@ 16 - 22000000390000001201000002010000 + BE000000D5000000AE010000A0010000 @@ -947,7 +947,7 @@ 16 - 22000000390000001201000002010000 + BE000000D5000000AE010000A0010000 @@ -967,7 +967,7 @@ 16 - 22000000390000001201000002010000 + BE000000D5000000AE010000A0010000 @@ -987,7 +987,7 @@ 16 - 22000000390000001201000002010000 + BE000000D5000000AE010000A0010000 @@ -1007,7 +1007,7 @@ 16 - 22000000390000001201000002010000 + BE000000D5000000AE010000A0010000 @@ -1027,7 +1027,7 @@ 16 - 22000000390000001201000002010000 + BE000000D5000000AE010000A0010000 @@ -1047,7 +1047,7 @@ 16 - A4000000BB0000009401000084010000 + BE000000D5000000AE010000A0010000 @@ -1067,7 +1067,7 @@ 16 - A4000000BB0000009401000084010000 + BE000000D5000000AE010000A0010000 @@ -1087,7 +1087,7 @@ 16 - A4000000BB0000009401000084010000 + BE000000D5000000AE010000A0010000 @@ -1107,7 +1107,7 @@ 16 - A4000000BB0000009401000084010000 + BE000000D5000000AE010000A0010000 @@ -1127,7 +1127,7 @@ 16 - A4000000BB0000009401000084010000 + BE000000D5000000AE010000A0010000 @@ -1147,7 +1147,7 @@ 16 - A4000000BB0000009401000084010000 + BE000000D5000000AE010000A0010000 @@ -1183,11 +1183,11 @@ 0 16 - 030000006F03000079070000CD030000 + 030000006403000079070000C2030000 16 - 2200000039000000EA020000C7000000 + BE000000D50000008603000065010000 @@ -1203,11 +1203,11 @@ 0 16 - 030000006F03000079070000CD030000 + 030000006403000079070000C2030000 16 - A4000000BB000000C0010000F7020000 + BE000000D5000000DA01000015030000 @@ -1227,7 +1227,7 @@ 16 - A4000000BB0000009401000084010000 + BE000000D5000000AE010000A0010000 @@ -1263,11 +1263,11 @@ 0 16 - 030000006F03000079070000CD030000 + 030000006403000079070000C2030000 16 - A4000000BB000000C0010000F7020000 + BE000000D5000000DA01000015030000 @@ -1283,11 +1283,11 @@ 0 16 - 030000006F03000079070000CD030000 + 030000006403000079070000C2030000 16 - A4000000BB000000C0010000F7020000 + BE000000D5000000DA01000015030000 @@ -1327,7 +1327,7 @@ 16 - A4000000BB0000009401000084010000 + BE000000D5000000AE010000A0010000 @@ -1347,7 +1347,7 @@ 16 - A4000000BB0000009401000084010000 + BE000000D5000000AE010000A0010000 @@ -1367,7 +1367,7 @@ 16 - A4000000BB0000009401000084010000 + BE000000D5000000AE010000A0010000 @@ -1387,7 +1387,7 @@ 16 - A4000000BB0000009401000084010000 + BE000000D5000000AE010000A0010000 @@ -1407,7 +1407,7 @@ 16 - A4000000BB0000009401000084010000 + BE000000D5000000AE010000A0010000 @@ -1427,7 +1427,7 @@ 16 - A4000000BB0000009401000084010000 + BE000000D5000000AE010000A0010000 @@ -1447,7 +1447,7 @@ 16 - A4000000BB0000009401000084010000 + BE000000D5000000AE010000A0010000 @@ -1467,7 +1467,7 @@ 16 - A4000000BB0000009401000084010000 + BE000000D5000000AE010000A0010000 @@ -1487,7 +1487,7 @@ 16 - A4000000BB0000009401000084010000 + BE000000D5000000AE010000A0010000 @@ -1743,7 +1743,7 @@ 0 16 - 00000000E603000080070000F9030000 + 00000000DB0300007C070000EE030000 16 @@ -1812,14 +1812,14 @@ 3312 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F4000000F40000004F00000090050000DD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000025020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A004000066000000900500003C020000A00400004F000000900500002502000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F400000054030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000060030000000000004F000000F0000000540300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000002C02000090050000CE020000000000001502000090050000B702000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000540300008007000058030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000640300007C070000F2030000000000005803000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F50000007000000091050000FE000000F40000004F00000090050000DD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000025020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A1040000700000009105000046020000A00400004F000000900500002502000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F400000049030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000100000070000000F10000006A030000000000004F000000F0000000490300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000010000003602000091050000D8020000000000001502000090050000B702000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000490300007C0700004D030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000010000006E0300007D070000FC030000000000004D0300007C070000DB0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File 2859 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000046C6F6F7096000000000000001400046C6F6F7005656E756D45047472756508756C5278446174611B455350383236365F454D51585F4D5154545F434C49454E545F49441D455350383236365F414C4959554E5F4D5154545F434C49454E545F4944106D6163455350383236365F5573617274067072696E74660C4C43445F53686F774368617209617363325F313230361451756575652046756C6C206F72204572726F722113756352657476616C51756575655769666953740A517565756520496E697404696E697402753812785175657565557361727433526548646C72087644656C61794D730653616D706C65077563537461746504756349640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000046C6F6F7096000000000000001400046C6F6F7005656E756D45047472756508756C5278446174611B455350383236365F454D51585F4D5154545F434C49454E545F49441D455350383236365F414C4959554E5F4D5154545F434C49454E545F4944106D6163455350383236365F5573617274067072696E74660C4C43445F53686F774368617209617363325F313230361451756575652046756C6C206F72204572726F722113756352657476616C51756575655769666953740A517565756520496E697404696E697402753812785175657565557361727433526548646C72087644656C61794D730653616D706C65077563537461746504756349640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 1423 @@ -1835,7 +1835,7 @@ Build 976 - 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000002001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 583 @@ -1851,7 +1851,7 @@ Debug 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 898 @@ -3616,12 +3616,12 @@ 0 100 - 0 + 6 .\User\main.c - 13 - 97 - 130 + 46 + 112 + 149 1 0 @@ -3629,26 +3629,26 @@ .\Drivers\ESP8266.c 21 - 129 - 149 + 113 + 83 1 0 .\Drivers\ESP8266.h - 69 - 62 - 103 + 0 + 63 + 80 1 0 .\Drivers\LoRa.c - 28 - 76 - 99 + 16 + 61 + 119 1 0 @@ -3662,6 +3662,24 @@ 0 + + .\Application\App_MQTT\App_MQTT.c + 24 + 9 + 60 + 1 + + 0 + + + .\Application\App_MQTT\App_MQTT.h + 27 + 1 + 24 + 1 + + 0 + diff --git a/STM32/Gateway_Node/STM32Template.uvguix_Exploration.bak b/STM32/Gateway_Node/STM32Template.uvguix_Exploration.bak deleted file mode 100644 index c304cca..0000000 --- a/STM32/Gateway_Node/STM32Template.uvguix_Exploration.bak +++ /dev/null @@ -1,3668 +0,0 @@ - - - - -6.1 - -
### uVision Project, (C) Keil Software
- - - E:\Data\Project\IoTProjects\FreeRTOS_LoRa_Environment_Assistant\STM32\Gateway_Node\BSP - - - - - System Viewer\USART2 - 35905 - - 80 - - - System Viewer\USART3 - 35904 - - 78 - - - - - - 38003 - Registers - 140 90 - - - 346 - Code Coverage - 1010 160 - - - 204 - Performance Analyzer - 1170 - - - - - - 35141 - Event Statistics - - 200 50 700 - - - 1506 - Symbols - - 80 80 80 - - - 1936 - Watch 1 - - 200 133 133 - - - 1937 - Watch 2 - - 200 133 133 - - - 1935 - Call Stack + Locals - - 200 133 133 - - - 2506 - Trace Data - - 75 135 130 95 70 230 200 150 - - - 466 - Source Browser - 500 - 300 - - - - - - - - 0 - 0 - 0 - 50 - 16 - - - - - - - 44 - 2 - 3 - - -32000 - -32000 - - - -1 - -1 - - - 3 - -8 - 1924 - 1048 - - - - 0 - - 786 - 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000500000000000000010000005E453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C557365725C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF64453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C447269766572735C455350383236362E630000000009455350383236362E6300000000FFDC7800FFFFFFFF64453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C447269766572735C455350383236362E680000000009455350383236362E6800000000BECEA100FFFFFFFF61453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C447269766572735C4C6F52612E6300000000064C6F52612E6300000000F0A0A100FFFFFFFF61453A5C446174615C50726F6A6563745C496F5450726F6A656374735C4672656552544F535F4C6F52615F456E7669726F6E6D656E745F417373697374616E745C53544D33325C476174657761795F4E6F64655C447269766572735C4C6F52612E6800000000064C6F52612E6800000000BCA8E100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F400000066000000800700006B030000 - - - - 0 - Build - - -1 - -1 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - F40000004F00000090050000DD000000 - - - 16 - F40000006600000090050000F4000000 - - - - 1005 - 1005 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 0000000063000000F000000054030000 - - - 16 - A4000000BB0000009401000084010000 - - - - 109 - 109 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 0300000066000000ED00000030030000 - - - 16 - A4000000BB000000C0010000F7020000 - - - - 1465 - 1465 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000002C0200008D0500009E020000 - - - 16 - A4000000BB0000006C03000049010000 - - - - 1466 - 1466 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000002C0200008D0500009E020000 - - - 16 - A4000000BB0000006C03000049010000 - - - - 1467 - 1467 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000002C0200008D0500009E020000 - - - 16 - A4000000BB0000006C03000049010000 - - - - 1468 - 1468 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000002C0200008D0500009E020000 - - - 16 - A4000000BB0000006C03000049010000 - - - - 1506 - 1506 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 1913 - 1913 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - F7000000660000008D050000C4000000 - - - 16 - A4000000BB0000006C03000049010000 - - - - 1935 - 1935 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 030000002C0200008D0500009E020000 - - - 16 - 22000000390000001201000002010000 - - - - 1936 - 1936 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000002C0200008D0500009E020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 1937 - 1937 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000002C0200008D0500009E020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 1939 - 1939 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000002C0200008D0500009E020000 - - - 16 - 2200000039000000EA020000C7000000 - - - - 1940 - 1940 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000002C0200008D0500009E020000 - - - 16 - 2200000039000000EA020000C7000000 - - - - 1941 - 1941 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000002C0200008D0500009E020000 - - - 16 - A4000000BB0000006C03000049010000 - - - - 1942 - 1942 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000002C0200008D0500009E020000 - - - 16 - A4000000BB0000006C03000049010000 - - - - 195 - 195 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 0300000066000000ED00000030030000 - - - 16 - A4000000BB000000C0010000F7020000 - - - - 196 - 196 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 0300000066000000ED00000030030000 - - - 16 - A4000000BB000000C0010000F7020000 - - - - 197 - 197 - 1 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 000000006C03000080070000E6030000 - - - 16 - 2200000039000000EA020000C7000000 - - - - 198 - 198 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 000000001502000090050000B7020000 - - - 16 - 2200000039000000EA020000C7000000 - - - - 199 - 199 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006F03000079070000CD030000 - - - 16 - 2200000039000000EA020000C7000000 - - - - 203 - 203 - 0 - 0 - 0 - 0 - 32767 - 0 - 8192 - 0 - - 16 - F7000000660000008D050000C4000000 - - - 16 - 2200000039000000EA020000C7000000 - - - - 204 - 204 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - F7000000660000008D050000C4000000 - - - 16 - 2200000039000000EA020000C7000000 - - - - 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 - A4000000BB0000009401000084010000 - - - - 2507 - 2507 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000002C0200008D0500009E020000 - - - 16 - A4000000BB0000006C03000049010000 - - - - 343 - 343 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - F7000000660000008D050000C4000000 - - - 16 - 2200000039000000EA020000C7000000 - - - - 346 - 346 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - F7000000660000008D050000C4000000 - - - 16 - A4000000BB0000006C03000049010000 - - - - 35141 - 35141 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - F7000000660000008D050000C4000000 - - - 16 - A4000000BB0000009401000084010000 - - - - 35824 - 35824 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - F7000000660000008D050000C4000000 - - - 16 - A4000000BB0000006C03000049010000 - - - - 35885 - 35885 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 35886 - 35886 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 35887 - 35887 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 35888 - 35888 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 35889 - 35889 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 35890 - 35890 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 35891 - 35891 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 35892 - 35892 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 35893 - 35893 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - 22000000390000001201000002010000 - - - - 35894 - 35894 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - 22000000390000001201000002010000 - - - - 35895 - 35895 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - 22000000390000001201000002010000 - - - - 35896 - 35896 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - 22000000390000001201000002010000 - - - - 35897 - 35897 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - 22000000390000001201000002010000 - - - - 35898 - 35898 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - 22000000390000001201000002010000 - - - - 35899 - 35899 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - 22000000390000001201000002010000 - - - - 35900 - 35900 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 35901 - 35901 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 35902 - 35902 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 35903 - 35903 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 35904 - 35904 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 35905 - 35905 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 38003 - 38003 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 0300000066000000ED00000030030000 - - - 16 - A4000000BB000000C0010000F7020000 - - - - 38007 - 38007 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006F03000079070000CD030000 - - - 16 - 2200000039000000EA020000C7000000 - - - - 436 - 436 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006F03000079070000CD030000 - - - 16 - A4000000BB000000C0010000F7020000 - - - - 437 - 437 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000002C0200008D0500009E020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 440 - 440 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000002C0200008D0500009E020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 463 - 463 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006F03000079070000CD030000 - - - 16 - A4000000BB000000C0010000F7020000 - - - - 466 - 466 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006F03000079070000CD030000 - - - 16 - A4000000BB000000C0010000F7020000 - - - - 470 - 470 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - F7000000660000008D050000C4000000 - - - 16 - A4000000BB0000006C03000049010000 - - - - 50000 - 50000 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 50001 - 50001 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 50002 - 50002 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 50003 - 50003 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 50004 - 50004 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 50005 - 50005 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 50006 - 50006 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 50007 - 50007 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 50008 - 50008 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 50009 - 50009 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 50010 - 50010 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 50011 - 50011 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 50012 - 50012 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 50013 - 50013 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 50014 - 50014 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 50015 - 50015 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 50016 - 50016 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 50017 - 50017 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 50018 - 50018 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 50019 - 50019 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D0500000C020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 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 - 1 - 0 - 0 - 0 - 476 - 0 - 8192 - 1 - - 16 - 000000001C000000E701000038000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 59400 - 59400 - 0 - 0 - 0 - 0 - 612 - 0 - 8192 - 2 - - 16 - 00000000380000006F02000054000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 824 - 824 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000002C0200008D0500009E020000 - - - 16 - A4000000BB0000009401000084010000 - - - - 3312 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F4000000F40000004F00000090050000DD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000025020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A004000066000000900500003C020000A00400004F000000900500002502000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F400000054030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000060030000000000004F000000F0000000540300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000002C02000090050000CE020000000000001502000090050000B702000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000540300008007000058030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000640300007C070000F2030000000000005803000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 - - - 59392 - File - - 2859 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000046C6F6F7096000000000000001400046C6F6F7005656E756D45047472756508756C5278446174611B455350383236365F454D51585F4D5154545F434C49454E545F49441D455350383236365F414C4959554E5F4D5154545F434C49454E545F4944106D6163455350383236365F5573617274067072696E74660C4C43445F53686F774368617209617363325F313230361451756575652046756C6C206F72204572726F722113756352657476616C51756575655769666953740A517565756520496E697404696E697402753812785175657565557361727433526548646C72087644656C61794D730653616D706C65077563537461746504756349640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 - - - 1423 - 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 1423 - 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 - - - - 59399 - Build - - 976 - 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000002001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 - - - 583 - 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 583 - 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 - - - - 59400 - Debug - - 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 - - - 898 - 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 898 - 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 - - - - 0 - 1920 - 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 - - - - - - 1 - 0 - - 100 - 0 - - .\User\main.c - 58 - 97 - 113 - 1 - - 0 - - - .\Drivers\ESP8266.c - 21 - 129 - 149 - 1 - - 0 - - - .\Drivers\ESP8266.h - 69 - 62 - 103 - 1 - - 0 - - - .\Drivers\LoRa.c - 28 - 76 - 99 - 1 - - 0 - - - .\Drivers\LoRa.h - 0 - 1 - 1 - 1 - - 0 - - - - -
diff --git a/STM32/Gateway_Node/STM32Template.uvoptx b/STM32/Gateway_Node/STM32Template.uvoptx index c6b051f..b1ad767 100644 --- a/STM32/Gateway_Node/STM32Template.uvoptx +++ b/STM32/Gateway_Node/STM32Template.uvoptx @@ -1062,7 +1062,7 @@ FreeRTOS/inc - 0 + 1 0 0 0 @@ -1286,7 +1286,7 @@ FreeRTOS/src - 0 + 1 0 0 0 @@ -1441,8 +1441,8 @@ - Application/NetFIFO - 1 + Application/App_MQTT + 0 0 0 0 @@ -1453,8 +1453,8 @@ 0 0 0 - .\Application\NetFIFO\NetFIFO.c - NetFIFO.c + .\Application\App_MQTT\App_MQTT.c + App_MQTT.c 0 0 @@ -1465,8 +1465,8 @@ 0 0 0 - .\Application\NetFIFO\NetFIFO.h - NetFIFO.h + .\Application\App_MQTT\App_MQTT.h + App_MQTT.h 0 0 diff --git a/STM32/Gateway_Node/STM32Template.uvprojx b/STM32/Gateway_Node/STM32Template.uvprojx index c7befad..67e2571 100644 --- a/STM32/Gateway_Node/STM32Template.uvprojx +++ b/STM32/Gateway_Node/STM32Template.uvprojx @@ -341,7 +341,7 @@ --no-multibyte-chars USE_STDPERIPH_DRIVER - .\SystemFiles;.\Libraries\inc;.\User;.\BSP;.\Drivers;.\FreeRTOS\inc;.\FreeRTOS\portable\RVDS\ARM_CM3;.\FreeRTOS\config;.\Application\NetFIFO + .\SystemFiles;.\Libraries\inc;.\User;.\BSP;.\Drivers;.\FreeRTOS\inc;.\FreeRTOS\portable\RVDS\ARM_CM3;.\FreeRTOS\config;.\Application\NetFIFO;.\Application\App_MQTT @@ -903,17 +903,17 @@ - Application/NetFIFO + Application/App_MQTT - NetFIFO.c + App_MQTT.c 1 - .\Application\NetFIFO\NetFIFO.c + .\Application\App_MQTT\App_MQTT.c - NetFIFO.h + App_MQTT.h 5 - .\Application\NetFIFO\NetFIFO.h + .\Application\App_MQTT\App_MQTT.h diff --git a/STM32/Gateway_Node/User/main.c b/STM32/Gateway_Node/User/main.c index 406a2cd..944d84c 100644 --- a/STM32/Gateway_Node/User/main.c +++ b/STM32/Gateway_Node/User/main.c @@ -6,12 +6,14 @@ #include "FreeRTOS.h" #include "task.h" #include "queue.h" +#include "App_MQTT.h" /* 创建一个新任务,需要创建任务句柄,任务句柄与任务函数一一对应。 */ TaskHandle_t xTaskWorkStatusLedHdlr; TaskHandle_t xTaskWifiJoinApHdlr; TaskHandle_t xTaskWifiNwkInitHdlr; -TaskHandle_t xTaskMqttPublishTestHdlr; +TaskHandle_t xTaskMqttPublishHdlr; +TaskHandle_t xTaskMqttSubscribeHdlr; /* 创建队列句柄 */ QueueHandle_t xQueueUsart1IrqHdlr; @@ -19,12 +21,11 @@ QueueHandle_t xQueueUsart2IrqHdlr; QueueHandle_t xQueueUsart3IrqHdlr; /** - * @brief 状态指示LED任务 + * @brief 状态指示LED任务 * @note 通过控制PC13引脚的LED灯,实现系统状态的指示功能。 * @param *pvParameters 任务参数,若没有特定的参数则设置为空指针 * @retval None */ -/* 创建任务 */ void vTaskWorkStatusLed(void *pvParameters) { while(1) @@ -37,7 +38,7 @@ void vTaskWorkStatusLed(void *pvParameters) } /** - * @brief 初始化Wi-Fi模块网络任务 + * @brief 初始化Wi-Fi模块网络任务 * @note 通过ESP8266模块初始化MQTT协议连接。 * @param *pvParameters 任务参数,若没有特定的参数则设置为空指针 * @retval None @@ -73,7 +74,8 @@ void vTaskWifiNetWorkInit(void *pvParameters) /* code */ vUsartSendString(USART1, "Aliyun MQTT Init Successfully.\r\n"); /* 通知MQTT发布任务 */ - xTaskNotifyGive(xTaskMqttPublishTestHdlr); + xTaskNotifyGive(xTaskMqttPublishHdlr); + xTaskNotifyGive(xTaskMqttSubscribeHdlr); vTaskDelete(NULL); } else { @@ -87,7 +89,8 @@ void vTaskWifiNetWorkInit(void *pvParameters) { /* code */ vUsartPrintf(USART1, "EMQX MQTT Init Successfully.\r\n"); - xTaskNotifyGive(xTaskMqttPublishTestHdlr); + xTaskNotifyGive(xTaskMqttPublishHdlr); + xTaskNotifyGive(xTaskMqttSubscribeHdlr); vTaskDelete(NULL); } else { @@ -100,54 +103,86 @@ void vTaskWifiNetWorkInit(void *pvParameters) } /** - * @brief MQTT发布测试任务 + * @brief MQTT发布测试任务 * @note 通过ESP8266模块向MQTT服务器发布测试消息。 * @param *pvParameters 任务参数,若没有特定的参数则设置为空指针 * @retval None */ -void vTaskMqttPublishTest(void *pvParameters) +void vTaskMqttPublish(void *pvParameters) { /* 任务通知接收函数 */ ulTaskNotifyTake(pdTRUE, portMAX_DELAY); - char pcCmd[256] = {0}; char *pcJsonMsg = "{\"temperature\":23,\"humidity\":60}"; while (1) { /* code */ #if (ESP8266_MQTT_SERVER_MODE == ALIYUN) - uint8_t ucLen = strlen(pcJsonMsg); - snprintf(pcCmd, sizeof(pcCmd), "AT+MQTTPUBRAW=0,\"%s\",%d,1,0", - ESP8266_ALIYUN_MQTT_PUBLISH_TOPIC, ucLen); - if (bEsp8266Command(pcCmd, "OK", ">", 3000) == pdTRUE && - bEsp8266Command(pcJsonMsg, "OK", NULL, 3000) == pdTRUE) + while (bMqttPublish(ESP8266_ALIYUN_MQTT_PUBLISH_TOPIC, pcJsonMsg) == pdTRUE) { /* code */ - vUsartSendString(USART1, "Aliyun MQTT Publish Successfully.\r\n"); - } else - { - /* code */ - vUsartSendString(USART1, "Aliyun MQTT Publish Failed.\r\n"); + vUsartSendString(USART1, "MQTT Publish Successfully.\r\n"); } + vUsartSendString(USART1, "MQTT Publish Failed.\r\n"); + vTaskDelay(2000); #elif (ESP8266_MQTT_SERVER_MODE == EMQX) - uint8_t ucLen = strlen(pcJsonMsg); - snprintf(pcCmd, sizeof(pcCmd), "AT+MQTTPUBRAW=0,\"%s\",%d,1,0", - ESP8266_EMQX_MQTT_PUBLISH_TOPIC, ucLen); - if (bEsp8266Command(pcCmd, "OK", ">", 3000) == pdTRUE && - bEsp8266Command(pcJsonMsg, "OK", NULL, 3000) == pdTRUE) - { - vUsartSendString(USART1, "EMQX MQTT Publish Successfully.\r\n"); - } else + while (bMqttPublish(ESP8266_EMQX_MQTT_PUBLISH_TOPIC, pcJsonMsg) == pdTRUE) { /* code */ - vUsartSendString(USART1, "EMQX MQTT Publish Failed.\r\n"); + vUsartSendString(USART1, "MQTT Publish Successfully.\r\n"); } - vTaskDelay(500); + vUsartSendString(USART1, "MQTT Publish Failed.\r\n"); + vTaskDelay(2000); #endif } } /** - * @brief 创建所有任务列表 + * @brief MQTT订阅任务 + * @note 通过ESP8266模块订阅MQTT主题并处理接收到的命令。 + * @param *pvParameters 任务参数,若没有特定的参数则设置为空指针 + * @retval None + */ +void vTaskMqttSubscribe(void *pvParameters) +{ + while (1) + { + /* code */ + if (xMqttCmdParse(ESP8266_EMQX_MQTT_SUBSCRIBE_TOPIC) == MQTT_CMD_LED_ON) + { + /* code */ + vUsartPrintf(USART1, "Lights on\r\n"); + } + else if (xMqttCmdParse(ESP8266_EMQX_MQTT_SUBSCRIBE_TOPIC) == MQTT_CMD_LED_OFF) + { + /* code */ + vUsartPrintf(USART1, "Lights off\r\n"); + } + else if (xMqttCmdParse(ESP8266_EMQX_MQTT_SUBSCRIBE_TOPIC) == MQTT_CMD_FAN_ON) + { + /* code */ + vUsartPrintf(USART1, "Fan on\r\n"); + } + else if (xMqttCmdParse(ESP8266_EMQX_MQTT_SUBSCRIBE_TOPIC) == MQTT_CMD_FAN_OFF) + { + /* code */ + vUsartPrintf(USART1, "Fan off\r\n"); + } + else if (xMqttCmdParse(ESP8266_EMQX_MQTT_SUBSCRIBE_TOPIC) == MQTT_CMD_HUMIDIFIER_ON) + { + /* code */ + vUsartPrintf(USART1, "Humidifier on\r\n"); + } + else if (xMqttCmdParse(ESP8266_EMQX_MQTT_SUBSCRIBE_TOPIC) == MQTT_CMD_HUMIDIFIER_OFF) + { + /* code */ + vUsartPrintf(USART1, "Humidifier off\r\n"); + } + vTaskDelay(1000); + } +} + +/** + * @brief 创建所有任务列表 * @note 在此函数中创建所有需要的任务,并为每个任务分配适当的堆栈大小和优先级。 * @param None * @retval None @@ -169,16 +204,23 @@ void vCreateTasksList(void) (UBaseType_t ) 2, (TaskHandle_t * ) &xTaskWifiNwkInitHdlr); xTaskCreate( - (TaskFunction_t ) vTaskMqttPublishTest, + (TaskFunction_t ) vTaskMqttPublish, (char * ) "TaskName_MqttPublishTest", (configSTACK_DEPTH_TYPE) 512, (void * ) NULL, (UBaseType_t ) 2, - (TaskHandle_t * ) &xTaskMqttPublishTestHdlr); + (TaskHandle_t * ) &xTaskMqttPublishHdlr); + xTaskCreate( + (TaskFunction_t ) vTaskMqttSubscribe, + (char * ) "TaskName_MqttSubscribe", + (configSTACK_DEPTH_TYPE) 512, + (void * ) NULL, + (UBaseType_t ) 2, + (TaskHandle_t * ) &xTaskMqttSubscribeHdlr); } /** - * @brief 创建所有队列列表 + * @brief 创建所有队列列表 * @note 在此函数中创建所有需要的队列,并为每个队列分配适当的长度和项大小。 * @param None * @retval None @@ -204,7 +246,7 @@ void vCreateQueuesList(void) } /** - * @brief 创建所有信号量列表 + * @brief 创建所有信号量列表 * @note 在此函数中创建所有需要的信号量。 * @param None * @retval None @@ -214,7 +256,7 @@ void vCreateSemaphoresList(void) } /** - * @brief 主函数 + * @brief 主函数 * @note 初始化系统各个模块,创建任务、队列和信号量,并启动调度器。 * @param None * @retval int diff --git a/update.md b/update.md deleted file mode 100644 index ae13bb7..0000000 --- a/update.md +++ /dev/null @@ -1,26 +0,0 @@ -## 更新日志 - -### 2026.1.15: - -**1、** -初步实现了MQTT协议发布指令的功能。 - -**2、** -完善了初始化Wi-Fi网络任务和MQTT发布任务之间的运行逻辑,以避免因为两个任务同时启动导致MQTT发布失败。通过 -```c -xTaskNotifyGive(xXxTaskHandle); -``` -和 - -```c -ulTaskNotifyTake(pdTRUE, portMAX_DELAY); -``` -函数实现任务通知功能。其目的是当其中一个任务完成后,需要向另一个任务发送通知,同时另一个任务接收到通知后再启动。 - -**3、** -修改部分函数格式,具体详见代码仓库。 - -### 2026.1.17: - -**1、** -支持以json格式向mqtt服务器发布数据。 \ No newline at end of file