Commit 3169de12 authored by limm's avatar limm

1,根据V2.0版本需求,更新固件功能

parent 579396ac
......@@ -85,17 +85,17 @@
<yPos>-1</yPos>
</MaxPosition>
<NormalPosition>
<Top>50</Top>
<Left>-1345</Left>
<Right>-262</Right>
<Bottom>749</Bottom>
<Top>-5</Top>
<Left>202</Left>
<Right>1285</Right>
<Bottom>694</Bottom>
</NormalPosition>
</WindowPosition>
<MDIClientArea>
<RegID>0</RegID>
<MDITabState>
<Len>2174</Len>
<Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000A0000000000000001000000A8443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C7372635C646973706C61795F636F6D6D6F6E2E630000000010646973706C61795F636F6D6D6F6E2E6300000000FFDC7800FFFFFFFFA6443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C7372635C636F6E74726F6C5F636F6D6D2E63000000000E636F6E74726F6C5F636F6D6D2E6300000000BECEA100FFFFFFFFB4443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C696E635C4343323533305F7472616E73706172656E745F616E616C797A652E68000000001C4343323533305F7472616E73706172656E745F616E616C797A652E6800000000F0A0A100FFFFFFFFA7443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C7372635C68617264776172655F696E69742E63000000000F68617264776172655F696E69742E6300000000BCA8E100FFFFFFFFB4443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C7372635C4343323533305F7472616E73706172656E745F616E616C797A652E63000000001C4343323533305F7472616E73706172656E745F616E616C797A652E63000000009CC1B600FFFFFFFFA5443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C7372635C6D66675F666163746F72742E63000000000D6D66675F666163746F72742E6300000000F7B88600FFFFFFFFA5443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C696E635C6D66675F666163746F72792E68000000000D6D66675F666163746F72792E6800000000D9ADC200FFFFFFFF9D443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C7372635C4B65792E6300000000054B65792E6300000000A5C2D700FFFFFFFF9D443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C696E635C4B65792E6800000000054B65792E6800000000B3A6BE00FFFFFFFFA6443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C696E635C636F6E74726F6C5F636F6D6D2E68000000000E636F6E74726F6C5F636F6D6D2E6800000000EAD6A300FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD50001000000000000000200000093F9FFFFDDFFFFFF00000000BB020000</Data>
<Len>3761</Len>
<Data>010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000001000000120000000700000001000000A8443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C7372635C646973706C61795F636F6D6D6F6E2E630000000010646973706C61795F636F6D6D6F6E2E6300000000FFDC7800FFFFFFFFA6443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C7372635C636F6E74726F6C5F636F6D6D2E63000000000E636F6E74726F6C5F636F6D6D2E6300000000BECEA100FFFFFFFFB4443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C696E635C4343323533305F7472616E73706172656E745F616E616C797A652E68000000001C4343323533305F7472616E73706172656E745F616E616C797A652E6800000000F0A0A100FFFFFFFFA7443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C7372635C68617264776172655F696E69742E63000000000F68617264776172655F696E69742E6300000000BCA8E100FFFFFFFFB4443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C7372635C4343323533305F7472616E73706172656E745F616E616C797A652E63000000001C4343323533305F7472616E73706172656E745F616E616C797A652E63000000009CC1B600FFFFFFFFA5443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C7372635C6D66675F666163746F72742E63000000000D6D66675F666163746F72742E6300000000F7B88600FFFFFFFFA5443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C696E635C6D66675F666163746F72792E68000000000D6D66675F666163746F72792E6800000000D9ADC200FFFFFFFF9D443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C7372635C4B65792E6300000000054B65792E6300000000A5C2D700FFFFFFFF9D443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C696E635C4B65792E6800000000054B65792E6800000000B3A6BE00FFFFFFFFA6443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C696E635C636F6E74726F6C5F636F6D6D2E68000000000E636F6E74726F6C5F636F6D6D2E6800000000EAD6A300FFFFFFFFA8443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C696E635C646973706C61795F636F6D6D6F6E2E680000000010646973706C61795F636F6D6D6F6E2E6800000000F6FA7D00FFFFFFFFD0443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4C6962726172795C4465766963655C4E75766F746F6E5C4D696E6935385365726965735C536F757263655C41524D5C737461727475705F4D696E6935385365726965732E730000000016737461727475705F4D696E6935385365726965732E7300000000B5E99D00FFFFFFFF95443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C6D61696E2E6300000000066D61696E2E63000000005FC3CF00FFFFFFFFAE443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4C6962726172795C434D5349535C496E636C7564655C636D7369735F61726D63632E68000000000D636D7369735F61726D63632E6800000000C1838300FFFFFFFFA2443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C7372635C424C3535303732412E63000000000A424C3535303732412E6300000000CACAD500FFFFFFFFA6443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4C6962726172795C5374644472697665725C7372635C636C6B2E630000000005636C6B2E6300000000C5D4F200FFFFFFFFA2443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C7372635C56434E4C333034302E63000000000A56434E4C333034302E6300000000FFDC7800FFFFFFFFA2443A5C55736572735C31313733305C53696D706C696369747953747564696F5C76345F776F726B73706163655C4B4B416C6C2D496E2D4F6E65546865726D6F7374617450616E656C4D47323156315C7A33735F746865726D6F73746174616C6C696E6F6E656D67323173646B36363576325C436F64655CBAA3B6D92DB6E0BACFD2BBD0C2B7E7C3E6B0E55C4150505C557365725C696E635C56434E4C333034302E68000000000A56434E4C333034302E6800000000BECEA100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000003601000066000000000500001A020000</Data>
</MDITabState>
</MDIClientArea>
<ViewEx>
......@@ -118,7 +118,7 @@
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>24F9FFFFDDFFFFFF30FCFFFF41000000</Data>
<Data>A400000066000000B0030000CA000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -134,7 +134,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000660000000C01000014030000</Data>
<Data>03000000660000002F010000EA010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -154,7 +154,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000660000000C01000014030000</Data>
<Data>03000000660000002F010000EA010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -434,7 +434,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000660000000C01000014030000</Data>
<Data>03000000660000002F010000EA010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -454,7 +454,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000660000000C01000014030000</Data>
<Data>03000000660000002F010000EA010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -474,7 +474,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000480300007D070000D7030000</Data>
<Data>030000001E020000FD0400006E020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -514,7 +514,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000480300007D070000D7030000</Data>
<Data>030000001E020000FD0400006E020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -1114,7 +1114,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000660000000C01000014030000</Data>
<Data>03000000660000000C0100006E010000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -1134,7 +1134,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000480300007D070000D7030000</Data>
<Data>030000001E020000FD0400006E020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -1154,7 +1154,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000480300007D070000D7030000</Data>
<Data>030000001E020000FD040000EA020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -1634,7 +1634,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>00000000F00300008007000003040000</Data>
<Data>0000000087020000000500009A020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -1683,14 +1683,14 @@
</Window>
<DockMan>
<Len>3119</Len>
<Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFA4000000B3000000B0030000B7000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E65002000000000000024F9FFFFDDFFFFFF30FCFFFF41000000A40000004F000000B0030000B30000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF0C0300004F0000001003000046010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C300000180004000000000000090FBFFFFDDFFFFFF30FCFFFFD4000000100300004F000000B00300004601000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF0F0100004F000000130100002D0300000100000002000010040000000100000062FFFFFF57040000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000080F8FFFFDDFFFFFF8FF9FFFFBB020000000000004F0000000F0100002D0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF000000003D010000B00300004101000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB0900000180008000000000000080F8FFFFCF00000030FCFFFF3C0100000000000041010000B0030000AE01000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFD801000041010000DC010000AE01000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000002D03000080070000310300000100000001000010040000000100000073FEFFFFA0000000FFFFFFFF04000000C5000000C7000000B4010000779400000180008000000100000080F8FFFFBF020000000000007E030000000000003103000080070000F00300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
<Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFA4000000B3000000B0030000B7000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000A400000066000000B0030000CA000000A40000004F000000B0030000B30000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF0C0300004F0000001003000046010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000001003000066000000B00300005D010000100300004F000000B00300004601000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF320100004F000000360100000302000001000000020000100400000001000000F3FEFFFFE8030000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000000F0100009E010000000000004F00000032010000030200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF000000003D010000B00300004101000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB090000018000800000000000000000000058010000B0030000C50100000000000041010000B0030000AE01000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFD801000041010000DC010000AE01000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000030200000005000007020000010000000100001004000000010000006EFEFFFF9B000000FFFFFFFF04000000C5000000C7000000B4010000779400000180008000000100000000000000A2010000000500009E020000000000000702000000050000870200000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
</DockMan>
<ToolBar>
<RegID>59392</RegID>
<Name>File</Name>
<Buttons>
<Len>2498</Len>
<Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000F6167696E675F746573745F666C6167960000000000000014000F6167696E675F746573745F666C61671DC9CFB5E7C4ACC8CFC9E8B1B8C0E0D0CD30A3A8C0E4C8C8B7D6B9DCA3A9214F6C65645F446973706C61795F496E666F2E6167696E675F746573745F666C616709736176655F646174610A6167696E675F7374657017436F6E74726F6C5F4368696C644C6F636B5F4F6E6F66660A6167696E675F746573741151756572795F4465766963655F496E666F1B4F50434F44455F47454E4552414C5F5354415455535F5155455259156E6574776F726B5F73746174655F6D616368696E651746697273745F457869745F466163746F72795F4D6F6465106167696E675F746573745F73746172740F6167696E675F746573745F73746F7005636F756E741C46616E5F73706565645F616E645F6469726563745F636F6E74726F6C1761646A7573745F66616E5F73706565645F73746174757312446973706C61795F55705F436F6E74656E6415446973706C61795F706F7765726F66665F74696D650E74656D705F6F70656E5F74696D65186175746F5F77696E645F7363616E5F7461736B5F73746F700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000</Data>
<Len>2466</Len>
<Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000F7A65726F5F636865636B5F696E6974960000000000000013000F7A65726F5F636865636B5F696E69740E77696E645F6F70656E5F74696D651E6F7065726174655F64656C61795F6F66665F646973706C61795F666C61671973687463335F73656E736F725F6D6561737572655F6C6F6F7009536176655F44617461094C6F61645F4461746113427574746F6E305F35734C6F6E674576656E7417436F6E74726F6C5F4368696C644C6F636B5F4F6E6F66660E6B4C65644973426C696E6B696E670E49735F56616C696465645F4B657912674B65795F427574746F6E5F436F6E6669672B4F6C65645F446973706C61795F496E666F2E4169725F4465766963652E706F7765725F6F66665F74696D650D4465766963655F7374617475730E4765745F4368616E6E656C5F49641373746174655F6368616E67655F7265706F72742044656C61795F5265706F72745F54696D655F44656372656173655F436F756E7405656E646966144465746563745F48756D616E5F44697370616C79124F7065726174655F4C65645F427574746F6E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000</Data>
</Buttons>
<OriginalItems>
<Len>1423</Len>
......@@ -1722,7 +1722,7 @@
<Name>Debug</Name>
<Buttons>
<Len>2373</Len>
<Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
<Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
</Buttons>
<OriginalItems>
<Len>898</Len>
......@@ -1755,11 +1755,11 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>340100004F00000080070000A5000000</Data>
<Data>340100004F000000800700008B000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>B4F9FFFFDDFFFFFF0000000033000000</Data>
<Data>B4F9FFFFDDFFFFFF0000000019000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -1775,7 +1775,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000660000002D010000DE020000</Data>
<Data>03000000660000002D010000CC020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -1795,7 +1795,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000660000002D01000031030000</Data>
<Data>03000000660000002D010000CC020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -1815,11 +1815,11 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000120300007D070000D7030000</Data>
<Data>C7030000000300007D0700009D030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>440000000202000000040000EB020000</Data>
<Data>560000006D0000002E020000C6000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -1835,11 +1835,11 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000120300007D07000084030000</Data>
<Data>C7030000000300007D0700009D030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>440000000202000000040000EB020000</Data>
<Data>560000006D0000002E020000C6000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -1855,11 +1855,11 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000120300007D07000084030000</Data>
<Data>C7030000000300007D0700009D030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>440000000202000000040000EB020000</Data>
<Data>560000006D0000002E020000C6000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -1875,11 +1875,11 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000120300007D07000084030000</Data>
<Data>C7030000000300007D0700009D030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>440000000202000000040000EB020000</Data>
<Data>560000006D0000002E020000C6000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -1915,7 +1915,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>37010000660000007D0700008C000000</Data>
<Data>37010000660000007D07000072000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -1935,11 +1935,11 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000120300007D070000D7030000</Data>
<Data>C7030000000300007D0700009D030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>440000000202000000040000EB020000</Data>
<Data>560000006D000000F6000000F2000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -1955,17 +1955,17 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000120300007D070000D7030000</Data>
<Data>C7030000000300007D0700009D030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>440000000202000000040000EB020000</Data>
<Data>560000006D000000F6000000F2000000</Data>
</RectRecentFloat>
</Window>
<Window>
<RegID>1937</RegID>
<PaneID>1937</PaneID>
<IsVisible>0</IsVisible>
<IsVisible>1</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
......@@ -1975,11 +1975,11 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000120300007D07000084030000</Data>
<Data>C7030000000300007D0700009D030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>440000000202000000040000EB020000</Data>
<Data>560000006D000000F6000000F2000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -1995,11 +1995,11 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000120300007D07000084030000</Data>
<Data>C7030000000300007D0700009D030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>440000000202000000040000EB020000</Data>
<Data>560000006D0000002E020000C6000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -2015,11 +2015,11 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000120300007D07000084030000</Data>
<Data>C7030000000300007D0700009D030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>440000000202000000040000EB020000</Data>
<Data>560000006D0000002E020000C6000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -2035,11 +2035,11 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000120300007D07000084030000</Data>
<Data>C7030000000300007D0700009D030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>440000000202000000040000EB020000</Data>
<Data>560000006D0000002E020000C6000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -2055,11 +2055,11 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000120300007D07000084030000</Data>
<Data>C7030000000300007D0700009D030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>440000000202000000040000EB020000</Data>
<Data>560000006D0000002E020000C6000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -2075,7 +2075,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000660000002D01000031030000</Data>
<Data>03000000660000002D010000CC020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -2095,7 +2095,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000660000002D01000031030000</Data>
<Data>03000000660000002D010000CC020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -2115,7 +2115,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000120300007D07000084030000</Data>
<Data>03000000D10300007D070000D7030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -2125,7 +2125,7 @@
<Window>
<RegID>198</RegID>
<PaneID>198</PaneID>
<IsVisible>0</IsVisible>
<IsVisible>1</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
......@@ -2135,7 +2135,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>00000000F500000000050000DE010000</Data>
<Data>00000000E9020000C0030000B6030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -2155,7 +2155,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000120300007D070000D7030000</Data>
<Data>00000000CE03000080070000F0030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -2175,7 +2175,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>340100006300000080070000A5000000</Data>
<Data>3401000063000000800700008B000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -2195,7 +2195,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>37010000660000007D0700008C000000</Data>
<Data>37010000660000007D07000072000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -2255,11 +2255,11 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000120300007D07000084030000</Data>
<Data>C7030000000300007D0700009D030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>440000000202000000040000EB020000</Data>
<Data>560000006D0000002E020000C6000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -2275,7 +2275,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>37010000660000007D0700008C000000</Data>
<Data>37010000660000007D07000072000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -2295,7 +2295,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>37010000660000007D0700008C000000</Data>
<Data>37010000660000007D07000072000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -2315,7 +2315,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>37010000660000007D0700008C000000</Data>
<Data>37010000660000007D07000072000000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -2755,7 +2755,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000660000002D010000DE020000</Data>
<Data>03000000660000002D010000CC020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -2765,7 +2765,7 @@
<Window>
<RegID>38007</RegID>
<PaneID>38007</PaneID>
<IsVisible>1</IsVisible>
<IsVisible>0</IsVisible>
<IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated>
......@@ -2775,7 +2775,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000120300007D070000D7030000</Data>
<Data>03000000D10300007D070000D7030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -2795,7 +2795,7 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000120300007D07000084030000</Data>
<Data>03000000D10300007D070000D7030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
......@@ -2815,11 +2815,11 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000120300007D07000084030000</Data>
<Data>C7030000000300007D0700009D030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>440000000202000000040000EB020000</Data>
<Data>560000006D000000F6000000F2000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -2835,11 +2835,11 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>03000000120300007D07000084030000</Data>
<Data>C7030000000300007D0700009D030000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>440000000202000000040000EB020000</Data>
<Data>560000006D000000F6000000F2000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -2959,7 +2959,7 @@
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>0A0000000A0000006E0000006E000000</Data>
<Data>560000006D000000F6000000F2000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -2979,7 +2979,7 @@
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>0A0000000A0000006E0000006E000000</Data>
<Data>560000006D000000F6000000F2000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -2999,7 +2999,7 @@
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>0A0000000A0000006E0000006E000000</Data>
<Data>560000006D000000F6000000F2000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -3019,7 +3019,7 @@
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>0A0000000A0000006E0000006E000000</Data>
<Data>560000006D000000F6000000F2000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -3039,7 +3039,7 @@
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>0A0000000A0000006E0000006E000000</Data>
<Data>560000006D000000F6000000F2000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -3059,7 +3059,7 @@
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>0A0000000A0000006E0000006E000000</Data>
<Data>560000006D000000F6000000F2000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -3079,7 +3079,7 @@
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>0A0000000A0000006E0000006E000000</Data>
<Data>560000006D000000F6000000F2000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -3155,11 +3155,11 @@
<RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked>
<Len>16</Len>
<Data>1303000066000000AD0300002D010000</Data>
<Data>47FCFFFF8E020000E7FCFFFFA9020000</Data>
</RectRecentDocked>
<RectRecentFloat>
<Len>16</Len>
<Data>560000006D000000F6000000F2000000</Data>
<Data>0A0000000A0000006E0000006E000000</Data>
</RectRecentFloat>
</Window>
<Window>
......@@ -3323,15 +3323,15 @@
</RectRecentFloat>
</Window>
<DockMan>
<Len>3032</Len>
<Data>000000000A000000000000000020000001000000FFFFFFFFFFFFFFFF34010000A500000080070000A90000000100000001000010040000000100000069FFFFFFED000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000001000000B4F9FFFFDDFFFFFF0000000033000000340100004F00000080070000A50000000000000040280056060000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF0C0300004F0000001003000046010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C300000180004000000000000090FBFFFFDDFFFFFF30FCFFFFD4000000100300004F000000B00300004601000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF300100004F00000034010000F70200000100000002000010040000000100000062FFFFFFD7060000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000080F8FFFFDDFFFFFFB0F9FFFFD8020000000000004F00000030010000F70200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000F100000000050000F50000000000000001000000040000000100000069FEFFFF3300000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFF80020000F500000084020000DE01000000000000020000000400000000000000000000000000000000000000000000000000000001000000C600000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000F702000080070000FB0200000100000001000010040000000100000059FEFFFF95010000FFFFFFFF12000000C5000000C7000000B4010000779400008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB0900000180008000000100000080F8FFFFDC020000000000007E03000000000000FB02000080070000F00300000000000040820056120000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0642726F777365010000007794000001000000FFFFFFFFFFFFFFFF1343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF04000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
<Len>3118</Len>
<Data>000000000B000000000000000020000001000000FFFFFFFFFFFFFFFF340100008B000000800700008F0000000100000001000010040000000100000008FFFFFFD7000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000001000000B4F9FFFFDDFFFFFF0000000019000000340100004F000000800700008B0000000000000040280056060000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF0C0300004F0000001003000046010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C300000180004000000000000090FBFFFFDDFFFFFF30FCFFFFD4000000100300004F000000B00300004601000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF300100004F00000034010000E50200000100000002000010040000000100000062FFFFFFD7060000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000080F8FFFFDDFFFFFFB0F9FFFF73020000000000004F00000030010000E50200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF00000000E502000080070000E90200000100000001000010040000000100000047FDFFFF0000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB0900000180008000000100000044FCFFFF770200000000000044030000C4030000E902000080070000B603000000000000404100560E0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032010000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF050000000000000001000000000000000100000001000000FFFFFFFFC0030000E9020000C4030000B603000001000000020000100400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000B603000080070000BA03000001000000010000100400000001000000B6FEFFFFA3000000FFFFFFFF04000000C5000000C7000000B4010000779400000180008000000100000080F8FFFF48030000000000007E03000000000000BA03000080070000F00300000000000040820056040000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
</DockMan>
<ToolBar>
<RegID>59392</RegID>
<Name>File</Name>
<Buttons>
<Len>2525</Len>
<Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000001864656C61795F3330306D735F7265706F72745F73746172749600000000000000140010434C4B5F5379735469636B44656C61790B4379636C657350657255730B4932435F53575F4F70656E107533325F4932435F53575F44656C61791864656C61795F3330306D735F7265706F72745F73746172741764656C61795F3330306D735F7265706F72745F7461736B1373656E736F725F6D6561737572655F6C6F6F70185A69676265655F556172745F4572726F725F48616E646C650E506F7765725F4F66665F5363616E14427566665F73656E645F73657269616C5F6E756D2B7374617469635F7472616E737072656E745F627566662E427566665F73656E645F73657269616C5F6E756D2A7374617469635F7472616E737072656E745F627566662E446F776E6C6F61645F73657269616C5F6E756D1755736172745F7265636976655F77726974655F6275666613446F776E6C6F61645F73657269616C5F6E756D207374617469635F7472616E73706172656E745F6D73675F696E666F2E446174610D7461736B5F666565645F646F670A7461736B5F636F6D70730C674B65794576656E74434E540D496E7075744B65794576656E740E5365745F4572726F725F436F64650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020003001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000</Data>
<Len>2467</Len>
<Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000195461705F5374617475735F5363616E5F5461736B5F53746F7096000000000000001300195461705F5374617475735F5363616E5F5461736B5F53746F701A5461705F5374617475735F5363616E5F5461736B5F53746172740F5461705F5374617475735F5363616E000F7A65726F5F636865636B5F696E69740E77696E645F6F70656E5F74696D651E6F7065726174655F64656C61795F6F66665F646973706C61795F666C61671973687463335F73656E736F725F6D6561737572655F6C6F6F7009536176655F44617461094C6F61645F4461746113427574746F6E305F35734C6F6E674576656E7417436F6E74726F6C5F4368696C644C6F636B5F4F6E6F66660E6B4C65644973426C696E6B696E670E49735F56616C696465645F4B657912674B65795F427574746F6E5F436F6E6669672B4F6C65645F446973706C61795F496E666F2E4169725F4465766963652E706F7765725F6F66665F74696D650D4465766963655F7374617475730E4765745F4368616E6E656C5F49641373746174655F6368616E67655F7265706F727400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020003001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000</Data>
</Buttons>
<OriginalItems>
<Len>1423</Len>
......@@ -3363,7 +3363,7 @@
<Name>Debug</Name>
<Buttons>
<Len>2362</Len>
<Data>00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000004002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000004002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000004002800000000000000000000000000000000010000000100000001801B80000000000400290000000000000000000000000000000001000000010000000180E57F0000000004002A00000000000000000000000000000000010000000100000001801C800000000004002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000004002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020000002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
<Data>00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000004002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000004002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000004002800000000000000000000000000000000010000000100000001801B80000000000400290000000000000000000000000000000001000000010000000180E57F0000000004002A00000000000000000000000000000000010000000100000001801C800000000004002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000004002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
</Buttons>
<OriginalItems>
<Len>898</Len>
......@@ -3387,21 +3387,21 @@
<ActiveMDIGroup>0</ActiveMDIGroup>
<MDIGroup>
<Size>100</Size>
<ActiveTab>0</ActiveTab>
<ActiveTab>7</ActiveTab>
<Doc>
<Name>.\User\src\display_common.c</Name>
<ColumnNumber>26</ColumnNumber>
<TopLine>5</TopLine>
<CurrentLine>26</CurrentLine>
<ColumnNumber>13</ColumnNumber>
<TopLine>384</TopLine>
<CurrentLine>402</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
<Doc>
<Name>.\User\src\control_comm.c</Name>
<ColumnNumber>30</ColumnNumber>
<TopLine>1</TopLine>
<CurrentLine>1519</CurrentLine>
<ColumnNumber>9</ColumnNumber>
<TopLine>44</TopLine>
<CurrentLine>63</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
......@@ -3409,7 +3409,7 @@
<Doc>
<Name>.\User\inc\CC2530_transparent_analyze.h</Name>
<ColumnNumber>0</ColumnNumber>
<TopLine>145</TopLine>
<TopLine>149</TopLine>
<CurrentLine>167</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
......@@ -3417,17 +3417,17 @@
</Doc>
<Doc>
<Name>.\User\src\hardware_init.c</Name>
<ColumnNumber>21</ColumnNumber>
<TopLine>190</TopLine>
<CurrentLine>203</CurrentLine>
<ColumnNumber>0</ColumnNumber>
<TopLine>305</TopLine>
<CurrentLine>323</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
<Doc>
<Name>.\User\src\CC2530_transparent_analyze.c</Name>
<ColumnNumber>10</ColumnNumber>
<TopLine>443</TopLine>
<ColumnNumber>2</ColumnNumber>
<TopLine>475</TopLine>
<CurrentLine>493</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
......@@ -3453,18 +3453,18 @@
</Doc>
<Doc>
<Name>.\User\src\Key.c</Name>
<ColumnNumber>22</ColumnNumber>
<TopLine>648</TopLine>
<CurrentLine>684</CurrentLine>
<ColumnNumber>31</ColumnNumber>
<TopLine>1625</TopLine>
<CurrentLine>1638</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
<Doc>
<Name>.\User\inc\Key.h</Name>
<ColumnNumber>37</ColumnNumber>
<TopLine>202</TopLine>
<CurrentLine>238</CurrentLine>
<ColumnNumber>0</ColumnNumber>
<TopLine>61</TopLine>
<CurrentLine>76</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
......@@ -3472,8 +3472,80 @@
<Doc>
<Name>.\User\inc\control_comm.h</Name>
<ColumnNumber>0</ColumnNumber>
<TopLine>61</TopLine>
<CurrentLine>109</CurrentLine>
<TopLine>206</TopLine>
<CurrentLine>224</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
<Doc>
<Name>.\User\inc\display_common.h</Name>
<ColumnNumber>0</ColumnNumber>
<TopLine>10</TopLine>
<CurrentLine>14</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
<Doc>
<Name>..\Library\Device\Nuvoton\Mini58Series\Source\ARM\startup_Mini58Series.s</Name>
<ColumnNumber>0</ColumnNumber>
<TopLine>90</TopLine>
<CurrentLine>105</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
<Doc>
<Name>main.c</Name>
<ColumnNumber>13</ColumnNumber>
<TopLine>33</TopLine>
<CurrentLine>51</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
<Doc>
<Name>..\Library\CMSIS\Include\cmsis_armcc.h</Name>
<ColumnNumber>0</ColumnNumber>
<TopLine>298</TopLine>
<CurrentLine>313</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
<Doc>
<Name>.\User\src\BL55072A.c</Name>
<ColumnNumber>2</ColumnNumber>
<TopLine>14</TopLine>
<CurrentLine>32</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
<Doc>
<Name>..\Library\StdDriver\src\clk.c</Name>
<ColumnNumber>0</ColumnNumber>
<TopLine>573</TopLine>
<CurrentLine>586</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
<Doc>
<Name>.\User\src\VCNL3040.c</Name>
<ColumnNumber>4</ColumnNumber>
<TopLine>17</TopLine>
<CurrentLine>35</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
<Doc>
<Name>.\User\inc\VCNL3040.h</Name>
<ColumnNumber>36</ColumnNumber>
<TopLine>11</TopLine>
<CurrentLine>31</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
......
......@@ -140,38 +140,6 @@
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>65</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>5624</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>D:\Users\11730\SimplicityStudio\v4_workspace\KKAll-In-OneThermostatPanelMG21V1\z3s_thermostatallinonemg21sdk665v2\Code\娴烽】-澶氬悎涓€鏂伴闈㈡澘\Library\StdDriver\src\retarget.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\AllToOneThermostatPannel\../Library/StdDriver/src/retarget.c\65</Expression>
</Bp>
<Bp>
<Number>1</Number>
<Type>0</Type>
<LineNumber>1218</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>4294</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>D:\Users\11730\SimplicityStudio\v4_workspace\KKAll-In-OneThermostatPanelMG21V1\z3s_thermostatallinonemg21sdk665v2\Code\娴烽】-澶氬悎涓€鏂伴闈㈡澘\APP\User\src\display_common.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\AllToOneThermostatPannel\User/src/display_common.c\1218</Expression>
</Bp>
<Bp>
<Number>2</Number>
<Type>0</Type>
<LineNumber>303</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>232</Address>
......@@ -186,43 +154,43 @@
<Expression>\\AllToOneThermostatPannel\../Library/StdDriver/src/retarget.c\303</Expression>
</Bp>
<Bp>
<Number>3</Number>
<Number>1</Number>
<Type>0</Type>
<LineNumber>110</LineNumber>
<LineNumber>537</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>26502</Address>
<Address>8968</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>D:\Users\11730\SimplicityStudio\v4_workspace\KKAll-In-OneThermostatPanelMG21V1\z3s_thermostatallinonemg21sdk665v2\Code\娴烽】-澶氬悎涓€鏂伴闈㈡澘\APP\User\src\mfg_factort.c</Filename>
<Filename>D:\Users\11730\SimplicityStudio\v4_workspace\KKAll-In-OneThermostatPanelMG21V1\z3s_thermostatallinonemg21sdk665v2\Code\娴烽】-澶氬悎涓€鏂伴闈㈡澘\APP\User\src\Key.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\AllToOneThermostatPannel\User/src/mfg_factort.c\110</Expression>
<Expression>\\AllToOneThermostatPannel\User/src/Key.c\537</Expression>
</Bp>
<Bp>
<Number>4</Number>
<Number>2</Number>
<Type>0</Type>
<LineNumber>53</LineNumber>
<LineNumber>2136</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>24644</Address>
<Address>25068</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>D:\Users\11730\SimplicityStudio\v4_workspace\KKAll-In-OneThermostatPanelMG21V1\z3s_thermostatallinonemg21sdk665v2\Code\娴烽】-澶氬悎涓€鏂伴闈㈡澘\APP\main.c</Filename>
<Filename>D:\Users\11730\SimplicityStudio\v4_workspace\KKAll-In-OneThermostatPanelMG21V1\z3s_thermostatallinonemg21sdk665v2\Code\娴烽】-澶氬悎涓€鏂伴闈㈡澘\APP\User\src\control_comm.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\AllToOneThermostatPannel\main.c\53</Expression>
<Expression>\\AllToOneThermostatPannel\User/src/control_comm.c\2136</Expression>
</Bp>
</Breakpoint>
<WatchWindow1>
<Ww>
<count>0</count>
<WinNumber>1</WinNumber>
<ItemText>temp1</ItemText>
<ItemText>count</ItemText>
</Ww>
<Ww>
<count>1</count>
......
[Version]
Nu_LinkVersion=V5.14
[Process]
ProcessID=0x0000e77c
ProcessCreationTime_L=0xcec60db7
ProcessCreationTime_H=0x01d6d90f
ProcessID=0x00003c14
ProcessCreationTime_L=0x58827bbd
ProcessCreationTime_H=0x01d7122a
NuLinkID=0x18101887
NuLinkID0=0x18101887
NuLinkIDs_Count=0x00000001
......
......@@ -53,7 +53,6 @@ typedef struct
}Filter_Wash_Calc;
typedef struct KEY_OPERATE
{
u8 operate_delay_off_status; //延时关机操作期间标志位判断
u8 operate_delay_off_display_flag;
volatile u32 operate_delay_off_ms;
volatile u32 operate_delay_off_s;
......@@ -72,7 +71,9 @@ volatile u32 operate_delay_off_h;
}KEY_OPERATE;
typedef void (*KeyProcessCallback)(u8 key_id,u8 KeyPressEvent);
#define IsKeyID12356(keyid) ( (keyid == 1) ||(keyid == 2) || (keyid == 3) ||(keyid == 5) || (keyid == 6) )
#define IsKeyID1356(keyid) ( (keyid == 1) ||(keyid == 3) || (keyid == 5) ||(keyid == 6) )
#define IsKeyID123(keyid) ( (keyid == 1) ||(keyid == 2) || (keyid == 3) )
#define Low 0
#define High 1
......@@ -80,6 +81,7 @@ typedef void (*KeyProcessCallback)(u8 key_id,u8 KeyPressEvent);
#define AntiShakeTime 6 //30ms = 6*5ms 按键防止抖动时间
#define Press0_5sLongTime 100 // 0.5s = 100*5ms 按键长按时间
#define PressLongTime 800 // 4s = 800*5ms 按键长按时间
#define Press10sLongTime 2000 // 10s = 2000*5ms 退出老化
......@@ -178,6 +180,8 @@ A = 0 B = 1 C = 1
#define Key_Rotary 0x02
#define NoButtonEvent 0x00
#define Button0_5sLongEvent 0x60
#define Button0_5sLongUpEvent 0x70
#define ButtonShortEvent 0x80
#define ButtonLongEvent 0x90
#define ButtonLongUpEvent 0xa0
......@@ -217,6 +221,12 @@ typedef struct key_init
/* 有效电平 */
u8 Valid_Level;
/* 支持的按键事件总数 */
u8 Key_Support_Event_Num[3];
/* 支持的按键事件列表 */
u8 Key_Support_Event_List[3][5];
} KeyConfigInit_t;
typedef struct
{
......
......@@ -262,7 +262,6 @@ void Send_Device_Data(u8 channel_id,u16 opcode ,u8 *arg,u8 len);
static void network_state_machine(TP_uc8 recv_network_state);
void state_change_report(TP_u16 opcode, TP_u8 channel);
void Setup_Task_Start(void);
u8 Get_Channel_Id(u8 device_type);
void delay_operate_calibrate_temper_Task_Start(void);
void operate_calibrate_temper_delay_2s_off_Task_Start(void);
void operate_calibrate_temper_delay_2s_off_Task_Stop(void);
......@@ -275,10 +274,11 @@ u8 IsLcdEnterScreenSave(void);
void ChildLockLedFlash(void);
void zero_check_init(void);
void delay_operate_calibrate_temper_Task_Stop(void);
void delay_operate_delay_off_Task_Start(void);
void delay_operate_delay_off_Task_Stop(void);
void Reset_DelayOFF_timer(u8 device_type);
void task_exit_aging_test_start(void);
void Delay_Report_Status(void);
void Delay_Report_Time_Decrease_Count(u8 time);
void Start_Delay_Report_Event(u8 channel);
#define Network_Control(join_or_leave) Send_Device_Data(0,_OPCODE_SET_NET_STATE,&join_or_leave,1)
#define proximity_triagger_report_zigbee() do{ uint8_t res = 1; \
......
......@@ -99,7 +99,6 @@ typedef struct Display_Data
u8 zigbee_Version; //zigbee版本
u8 binding_device; //0 未绑定 1,绑定空调,2,地暖,3,绑定新风
u8 recv_lcd_off; //接受到控制息屏的指令后
u8 is_dispaly_cur_temp;
u8 zigbee_mac[8];
OLED_AIR_DSD Air_Device;
OLED_FLOOR_HEATING_DSD FLOOR_Device;
......@@ -127,7 +126,7 @@ typedef struct{
u8 enter_config_mode;
u8 config_page;
u8 config_page1_func_value;
u8 config_page2_value;
u16 config_page2_value;
u8 support_function_len;
u8 support_function_list[6]; //1,风机盘管管制设置 2,温度校准 3,是否显示当前房间温度设置,4, 超时进入屏保时间设置 10 恢复出厂设置
volatile u32 config_time_ms;
......@@ -136,8 +135,8 @@ typedef struct{
}Local_Config_Operation;
typedef enum {
LOCAL_FUNC_FAN_PANEL_SETTING = 1,
LOCAL_FUNC_CALIBRATE_TEMPER = 2,
LOCAL_FUNC_IS_DISPLAY_CURRENT_TEMPER = 3,
LOCAL_FUNC_IS_DISPLAY_CURRENT_TEMPER = 2,
LOCAL_FUNC_CALIBRATE_TEMPER = 3,
LOCAL_FUNC_SCREEN_SAVING_TIME = 4,
LOCAL_FUNC_NOT_DISTURB = 5,
LOCAL_FUNC_FILTER_TIME = 10,
......@@ -153,7 +152,7 @@ extern Key_Operation_Status gKey_Press_Info;
void Display_poweroff_time(u8 display_time);
extern void display_error(u8 error_value);
void Operate_Led_Button(u8 device_type,u8 on_off);
void Operate_Led_Button(u8 device_type,u8 Type);
void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len);
void display_current_page(void);
u16 GetNetScanTime( void );
......@@ -162,7 +161,7 @@ u8 kNetIndicatorIsBlinking(void);
void kNetIndicatorOptTrigger(uint8_t id, uint32_t duration_on_ms, uint32_t duration_off_ms, uint32_t times, u8 start, u8 end );
void kLedModuleActionDetectCallback(void );
void display_set_temp(u8 display_mode,s16 temp_value,u8 ararm_f);
void Display_Set_Temper(s16 temp_value);
void display_system_mode(u8 heat,u8 dry,u8 cold ,u8 air,u8 sleep,u8 manufture,u8 Auto,u8 Roll);
void display_wind_speed(u8 wind_speed,u8 support_type);
void display_wind_direct(u8 low,u8 mediu,u8 high);
......@@ -174,6 +173,7 @@ void Detect_Human_Dispaly(void);
u8 System_Mode_Trans(u8 device_type,u8 is_support_sleep);
void Fan_Button_Handler(void);
void delay_confirm_fan_speed(void); //提前打断延时,
u8 Get_LED_OnOff_Status(u8 id);
void Control_LED_ON_OFF(u8 onoff_bits);
u8 Key_Operate_Config_Operation(u8 keyid,u8 keyEvent);
u8 IsLocalConfigMode(void);
......@@ -182,14 +182,16 @@ void Display_Up_Contend(u8 device_type);
void Setup_Mode_Handle (void);
void Display_Current_Temper(s16 temper);
void Reset_Flash_Time_10s(void);
void Display_Middle_Contend(u8 device_type);
void Fan_speed_and_direct_control(u8 windspeed_onoff,u8 winddirect_onoff);
void Auto_Led_Display(u8 screen_page);
#define Operation_LED(X) Operate_Led_Button(Oled_Display_Info.screen_page,X)
#define Reload_Save_Time() do{ sBacklight.blacklight_flag = 1;\
sBacklight.time_blacklight_ms = 0;\
sBacklight.time_blacklight_s = 0;\
LCD_CONTROL(1); \
Operation_LED(1);}while(0);
Auto_Led_Display(Oled_Display_Info.screen_page);}while(0);
......
......@@ -14,13 +14,31 @@ KeyScan_t gKey1_Button_t = { High, High, NULL, NULL };
KeyScan_t gKey_Button_t[KeyTotalNum] = { { High, High, NULL, NULL },{ High, High, NULL, NULL },{ High, High, NULL, NULL },\
{ High, High, NULL, NULL },{ High, High, NULL, NULL },{ High, High, NULL, NULL },};
KeyConfigInit_t gKey_Button_Config[] = { { 1, P3, BIT6, High},\
{ 2, P3, BIT1, High},\
{ 3, P3, BIT0, High},\
{ 4, P0, BIT7, High},\
{ 5, P0, BIT5, High},\
{ 6, P0, BIT1, High},\
#define KEY1_SUPPORT_EVENT { {ButtonShortEvent,ButtonLongEvent,ButtonLongUpEvent,Button10sLongEvent,Button10sLongUpEvent},\
{ButtonShortEvent,ButtonLongEvent,ButtonLongUpEvent,Button10sLongEvent,Button10sLongUpEvent},\
{ButtonShortEvent,ButtonLongEvent,ButtonLongUpEvent,Button10sLongEvent,Button10sLongUpEvent}}
#define KEY2_SUPPORT_EVENT { {ButtonShortEvent,Button10sLongEvent,Button10sLongUpEvent},\
{ButtonShortEvent},\
{ButtonShortEvent,Button10sLongEvent,Button10sLongUpEvent}}
#define KEY3_SUPPORT_EVENT { {ButtonShortEvent,ButtonLongEvent,ButtonLongUpEvent,Button10sLongEvent,Button10sLongUpEvent},\
{ButtonShortEvent,ButtonLongEvent,ButtonLongUpEvent,Button10sLongEvent,Button10sLongUpEvent},\
{ButtonShortEvent,ButtonLongEvent,ButtonLongUpEvent,Button10sLongEvent,Button10sLongUpEvent}}
#define KEY4_SUPPORT_EVENT { {ButtonShortEvent},\
{ButtonShortEvent},\
{ButtonShortEvent}}
#define KEY5_SUPPORT_EVENT { {ButtonShortEvent,Button0_5sLongEvent,Button0_5sLongUpEvent},\
{ButtonShortEvent,Button0_5sLongEvent,Button0_5sLongUpEvent},\
{ButtonShortEvent}}
#define KEY6_SUPPORT_EVENT { {ButtonShortEvent,Button0_5sLongEvent,Button0_5sLongUpEvent},\
{ButtonShortEvent,Button0_5sLongEvent,Button0_5sLongUpEvent},\
{ButtonShortEvent}}
KeyConfigInit_t gKey_Button_Config[] = { { 1, P3, BIT6, High,{5,5,5},KEY1_SUPPORT_EVENT},\
{ 2, P3, BIT1, High,{3,1,3},KEY2_SUPPORT_EVENT},\
{ 3, P3, BIT0, High,{5,5,5},KEY3_SUPPORT_EVENT},\
{ 4, P0, BIT7, High,{1,1,1},KEY4_SUPPORT_EVENT},\
{ 5, P0, BIT5, High,{3,3,1},KEY5_SUPPORT_EVENT},\
{ 6, P0, BIT1, High,{3,3,1},KEY6_SUPPORT_EVENT}\
};
u8 boad_test_falg[6] = {0,0,0,0,0,0}; //index 0 - 5分别代表按键1 - 按键6
......@@ -41,7 +59,6 @@ static void KEY6_Botton_Process_Handler(u8 KeyPressEvent);
void KeyProcess_Handler_Callbacks(u8 key_id,u8 KeyPressEvent);
u8 Get_NextOne_By_Current_Speed_Level(u8 plus_or_sub,u8 fan_speed,u8 type_support);
u8 Get_NextOne_By_Current_wind_direct(u8 plus_or_sub,u8 wind_direct);
void Delay_OFF_Rel_Display(u8 stop_flash,u8 delay_timer,u8 dispaly_data,u8 H_char,u8 bell_char,u8 setting_time_char);
static void Tap_Status_Scan_Task_Start(void);
extern BACKLIGHT_CONTROL sBacklight;
......@@ -62,7 +79,7 @@ static _Bool LongLongPress10s_Handler(u8 keyid,u8 KeyPressEvent)
//退老化处理
static u32 last_time = 0;
static u8 first_10s_press = 0;
if((keyid == 6) &&(KeyPressEvent == Button10sLongEvent))
if((keyid == 1) &&(KeyPressEvent == Button10sLongEvent))
{
if(Oled_Display_Info.aging_test_flag != 2)
{
......@@ -103,13 +120,7 @@ static _Bool LongLongPress10s_Handler(u8 keyid,u8 KeyPressEvent)
if(Oled_Display_Info.Air_Device.error == 3)
{
Oled_Display_Info.Air_Device.error = 0;
if(Get_Display_Status()) //清除错误
{
LCDShowTemp_state_t.LCD_place = DELAY_OFF_TIME_DISPLAY;
LCDShowTemp_state_t.LCD_display_count = 0;
LCDShowTemp_state_t.LCD_state = OFF;
LcdShowCTR(LCDShowTemp_state_t);
}
Display_Middle_Contend(AIR_CONDITION);
Oled_Display_Info.Air_Device.filter_wash_time = 3000;
save_data(); //重置滤网时间
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态更新上报
......@@ -125,13 +136,7 @@ static _Bool LongLongPress10s_Handler(u8 keyid,u8 KeyPressEvent)
if(Oled_Display_Info.FAN_Device.error == 3)
{
Oled_Display_Info.FAN_Device.error = 0;
if(Get_Display_Status()) //清除错误
{
LCDShowTemp_state_t.LCD_place = DELAY_OFF_TIME_DISPLAY;
LCDShowTemp_state_t.LCD_state = OFF;
LCDShowTemp_state_t.LCD_display_count = 0;
LcdShowCTR(LCDShowTemp_state_t);
}
Display_Middle_Contend(FAN);
Oled_Display_Info.FAN_Device.filter_wash_time = 3000;
save_data(); //重置滤网时间
state_change_report(OPCODE_GENERAL_REPORT_STATUS,3); //状态更新上报
......@@ -283,10 +288,21 @@ u8 GetKeyEvent(u8 index )
return uReturnEvent;
}
u8 KeyScanState( KeyScan_t* Buttion_T, u8 ButtonState )
u8 IS_Valided_KeyEvent(u8 KeyID,u8 KeyEvent)
{
u8 i = 0;
for(i=0;i<gKey_Button_Config[KeyID-1].Key_Support_Event_Num[Oled_Display_Info.screen_page-1];i++)
{
if(gKey_Button_Config[KeyID-1].Key_Support_Event_List[Oled_Display_Info.screen_page-1][i] == KeyEvent)
return TRUE;;
}
return FALSE;
}
u8 KeyScanState( KeyScan_t* Buttion_T,u8 keyid,u8 ButtonState )
{
u8 EventReturn = NoButtonEvent;
static uint8_t count = 0;
static uint8_t count[6] = {0};
static uint8_t count_0_5s[6] = {0};
//printf("ButtonState = 0x%x\n",ButtonState);
Buttion_T->LastState = ButtonState;
......@@ -299,13 +315,28 @@ u8 KeyScanState( KeyScan_t* Buttion_T, u8 ButtonState )
&&( PressLongTime > Buttion_T->KeyTime)
&&( ButtonLongEvent != (Buttion_T->PreKeyEvent))
&&(Button10sLongEvent != (Buttion_T->PreKeyEvent)) )
{
if(IS_Valided_KeyEvent(keyid,ButtonShortEvent))
{
Buttion_T->KeyTime = NULL;
Buttion_T->PreKeyEvent = ButtonShortEvent;
EventReturn = ButtonShortEvent;//InputKeyEvent( Key_Button, ModeButtonShortEvent );
//DBG_PRINT("EventReturn = 0x%x\n",EventReturn);
EventReturn = ButtonShortEvent;
}
}
///***** 0.5s按键长按事件 ****/
if( (Low == Buttion_T->LastState )&&( Press0_5sLongTime <= (Buttion_T->KeyTime) )&&(Oled_Display_Info.screen_page !=3)&&((keyid == 5)||(keyid == 6)))
{
Buttion_T->KeyTime = NULL;
count_0_5s[keyid-1]++;
if(count_0_5s[keyid-1] >= 2)
{
if(IS_Valided_KeyEvent(keyid,Button0_5sLongEvent))
{
Buttion_T->PreKeyEvent = Button0_5sLongEvent;
EventReturn = Button0_5sLongEvent;
}
}
}
///***** 2s按键长按事件 ****/
if(
( Low == Buttion_T->LastState )
......@@ -313,20 +344,30 @@ u8 KeyScanState( KeyScan_t* Buttion_T, u8 ButtonState )
)
{
Buttion_T->KeyTime = NULL;
count++;
if(count == 5) //10s
count[keyid-1]++;
if(count[keyid-1] == 5) //10s
{
if(IS_Valided_KeyEvent(keyid,Button10sLongEvent))
{
Buttion_T->PreKeyEvent = Button10sLongEvent;
EventReturn = Button10sLongEvent;//InputKeyEvent( Key_Button, ModeButtonLongEvent );
}
else if(count == 2) //4s
}
else if(count[keyid-1] == 2) //4s
{
if(IS_Valided_KeyEvent(keyid,ButtonLongEvent))
{
//老化前长按无效,长按10s有效
if((keyid == 1)&&(Oled_Display_Info.aging_test_flag != 2))
__NOP;
else{
Buttion_T->PreKeyEvent = ButtonLongEvent;
EventReturn = ButtonLongEvent;//InputKeyEvent( Key_Button, ModeButtonLongEvent );
}
}
}
}
///**** 按键计时,用于消除抖动和判断长/短按事件 *****/
......@@ -339,19 +380,33 @@ u8 KeyScanState( KeyScan_t* Buttion_T, u8 ButtonState )
Buttion_T->KeyTime = NULL;
if((count_0_5s[keyid-1]>=2)&&(Button0_5sLongEvent == (Buttion_T->PreKeyEvent)))
{
if(IS_Valided_KeyEvent(keyid,Button0_5sLongUpEvent))
{
Buttion_T->PreKeyEvent = Button0_5sLongUpEvent;
EventReturn = Button0_5sLongUpEvent;
}
}
count_0_5s[keyid-1] = 0;
if( ButtonLongEvent == (Buttion_T->PreKeyEvent) )
{
count = 0;
if(IS_Valided_KeyEvent(keyid,ButtonLongUpEvent))
{
Buttion_T->PreKeyEvent = ButtonLongUpEvent;
EventReturn = ButtonLongUpEvent;
}
}
else if(Button10sLongEvent == (Buttion_T->PreKeyEvent))
{
count = 0;
if(IS_Valided_KeyEvent(keyid,ButtonLongUpEvent))
{
Buttion_T->PreKeyEvent = Button10sLongUpEvent;
EventReturn = Button10sLongUpEvent;
}
}
count[keyid-1] = 0;
}
///**** 状态更新 *****/
if( Buttion_T->LastState != Buttion_T->PreState ) Buttion_T->PreState = Buttion_T->LastState;
......@@ -369,7 +424,7 @@ void key_scan(void)
SetkeyScanTime(SyskeyScanTimer);
for(i = 0;i<KeyTotalNum;i++)
{
if( NoButtonEvent != (EventTemp[i] = KeyScanState( &gKey_Button_t[i], Get_Key_Pin_By_Index(i) )) )
if( NoButtonEvent != (EventTemp[i] = KeyScanState( &gKey_Button_t[i],i+1, Get_Key_Pin_By_Index(i) )) )
{
InputKeyEvent(i,EventTemp[i]);
}
......@@ -385,6 +440,60 @@ void key_scan(void)
}
}
static u8 Is_Valided_Key(u8 device_type,u8 keyid,u8 KeyPressEvent)
{
u8 ret = FALSE;
switch(device_type)
{
case 1:
{
if((Oled_Display_Info.Air_Device.lock_flage)&&(keyid == 3))
ret = TRUE;
else if((Oled_Display_Info.Air_Device.lock_flage==0)&&(Oled_Display_Info.Air_Device.on_off == 0)&&(keyid == 1))
ret = TRUE;
else if((Oled_Display_Info.Air_Device.lock_flage==0)&&(Oled_Display_Info.Air_Device.on_off == 0)&&(keyid == 3)&&(KeyPressEvent == Button10sLongEvent))
ret = TRUE;
else if((Oled_Display_Info.Air_Device.lock_flage ==0)&&(Oled_Display_Info.Air_Device.on_off)&&(IsKeyID12356(keyid)))
ret = TRUE;
break;
}
case 2:
{
if((Oled_Display_Info.FLOOR_Device.lock_flage)&&(keyid == 3))
ret = TRUE;
else if((Oled_Display_Info.FLOOR_Device.lock_flage==0)&&(Oled_Display_Info.FLOOR_Device.on_off == 0)&&(keyid == 1))
ret = TRUE;
else if((Oled_Display_Info.FLOOR_Device.lock_flage==0)&&(Oled_Display_Info.FLOOR_Device.on_off == 0)&&(keyid == 3)&&(KeyPressEvent == Button10sLongEvent))
ret = TRUE;
else if((Oled_Display_Info.FLOOR_Device.lock_flage ==0)&&(Oled_Display_Info.FLOOR_Device.on_off)&&(IsKeyID1356(keyid)))
ret = TRUE;
break;
}
case 3:
{
if((Oled_Display_Info.FAN_Device.lock_flage)&&(keyid == 3))
ret = TRUE;
else if((Oled_Display_Info.FAN_Device.lock_flage==0)&&(Oled_Display_Info.FAN_Device.on_off == 0)&&(keyid == 1))
ret = TRUE;
else if((Oled_Display_Info.FAN_Device.lock_flage==0)&&(Oled_Display_Info.FAN_Device.on_off == 0)&&(keyid == 3)&&(KeyPressEvent == Button10sLongEvent))
ret = TRUE;
else if((Oled_Display_Info.FAN_Device.lock_flage ==0)&&(Oled_Display_Info.FAN_Device.on_off)&&(IsKeyID123(keyid)))
ret = TRUE;
break;
}
default:
break;
}
if((Oled_Display_Info.binding_device != 0)&&(keyid == 4))
ret = TRUE;
if(Oled_Display_Info.aging_test_flag != 2)
ret = TRUE;
if((IsLocalConfigMode())&&(IsKeyID1356(keyid) ))
ret = TRUE;
return ret;
}
static void LED_BEEP_Feedback(u8 key_id)
{
if( ((Oled_Display_Info.screen_page == 1)&&(Oled_Display_Info.Air_Device.no_disturb_mode == 0 ) )
......@@ -400,19 +509,11 @@ static void LED_BEEP_Feedback(u8 key_id)
}
void KeyProcess_Handler_Callbacks(u8 key_id,u8 KeyPressEvent)
{
//printf("####KeyProcess_Handler_Callbacks,keyid = %d,Key_Event = %x\r\n",key_id,KeyPressEvent);
if(Key_Operate_Config_Operation(key_id,KeyPressEvent)||(KeyPressEvent == Button10sLongUpEvent))
{
LED_BEEP_Feedback(key_id);
return;
}
if(LongLongPress10s_Handler(key_id,KeyPressEvent))
return;
//15min-4h老化期间不能操作按键
if((Oled_Display_Info.aging_test_flag == 1)||(First_Exit_Factory_Mode == 1)||(KeyPressEvent == Button10sLongEvent))
if((Oled_Display_Info.aging_test_flag == 1)||(First_Exit_Factory_Mode == 1))
return;
//printf("####KeyProcess_Handler_After ,keyid = %d,Key_Event = %x\r\n",key_id,KeyPressEvent);
if(KeyPressEvent != ButtonLongEvent)
if((KeyPressEvent == ButtonShortEvent)||(KeyPressEvent == ButtonLongEvent))
{
Detect_Human_Dispaly();
if(IsLcdEnterScreenSave()) //息屏状态,触摸按键,该次触发只唤醒,不做有效触发
......@@ -422,12 +523,22 @@ void KeyProcess_Handler_Callbacks(u8 key_id,u8 KeyPressEvent)
return;
}
Reload_Save_Time();
//地暖的按键2无效
if( (Oled_Display_Info.screen_page == 2)&&(key_id == 2)&&(Oled_Display_Info.aging_test_flag == 2))
return;
}
//有效按键触发,正常反馈
if(Is_Valided_Key(Oled_Display_Info.screen_page,key_id,KeyPressEvent))
{
if((KeyPressEvent != Button10sLongEvent)&&(KeyPressEvent != ButtonLongEvent)&&(KeyPressEvent != Button0_5sLongEvent))
LED_BEEP_Feedback(key_id);
}
if(LongLongPress10s_Handler(key_id,KeyPressEvent))
return;
//本地配置模式
if(Key_Operate_Config_Operation(key_id,KeyPressEvent)||(KeyPressEvent == Button10sLongUpEvent))
{
return;
}
/******************************************
童锁打开后,操作按键处理
*******************************************/
......@@ -456,7 +567,7 @@ void KeyProcess_Handler_Callbacks(u8 key_id,u8 KeyPressEvent)
}else{
if( ((key_id == 3)&&(KeyPressEvent == ButtonShortEvent)) ||
(key_id != 3) )
(IsKeyID12356(key_id))||( (key_id == 4)&&(!Oled_Display_Info.binding_device)) )
{
LCDShowTemp_state_t.LCD_place = CHILD_LOCK_DISPLAY;
LCDShowTemp_state_t.LCD_state = ON;
......@@ -479,38 +590,6 @@ void KeyProcess_Handler_Callbacks(u8 key_id,u8 KeyPressEvent)
{
delay_confirm_fan_speed();
}
/******************************************
延时关机时间调节期间,如果按下非调节按键,则打断
*******************************************/
if((sKey_Operation[Oled_Display_Info.screen_page-1].operate_delay_off_status)&&
((key_id == 2)||(key_id == 3)||(key_id == 4)))
{
sKey_Operation[Oled_Display_Info.screen_page-1].operate_delay_off_status = 0;
Delay_OFF_Rel_Display(1,0,NULL,0,0,0);
Oled_Display_whole();
delay_operate_delay_off_Task_Stop();
}
/******************************************
温度校准调节期间,如果按下非调节按键,则打断
*******************************************/
if((sKey_Operation[Oled_Display_Info.screen_page-1].operate_calibrate_temper)&&(KeyPressEvent != ButtonLongUpEvent)&&
((key_id == 2)||(key_id == 4) ||(key_id == 3)))
{
sKey_Operation[Oled_Display_Info.screen_page-1].operate_calibrate_temper = 0;
delay_operate_calibrate_temper_Task_Stop();
LCDShowTemp_state_t.LCD_place = CALIBRATE_TEMPER_DISPLAY;
LCDShowTemp_state_t.LCD_state = OFF;
LcdShowCTR(LCDShowTemp_state_t);
PowerOff();
}
/******************************************
温度校准调节完成后,2s内打开开关,取消2s关机延时
*******************************************/
if( (is_operate_calibrate_temper_delay_2s_off_Task_start())&&(key_id == 1) )
{
operate_calibrate_temper_delay_2s_off_Task_Stop();
}
switch(key_id)
{
case 1:
......@@ -715,232 +794,93 @@ static void KEY1_Botton_Process_Handler(u8 KeyPressEvent)
if(Oled_Display_Info.screen_page == 1) //空调页面
{
if(Oled_Display_Info.Air_Device.on_off)
{
if(sKey_Operation[0].operate_delay_off_status)
{
sKey_Operation[0].operate_delay_off_status = 0;
Oled_Display_Info.Air_Device.power_off_time = sKey_Operation[0].record_adjust_delay_off;
if(Oled_Display_Info.Air_Device.power_off_time >0)
{
Oled_Display_Info.Air_Device.power_off_flage = 1;
Reset_DelayOFF_timer(AIR_CONDITION);
Delay_OFF_Rel_Display(1,1,Oled_Display_Info.Air_Device.power_off_time,1,1,0);
}
else
{
Delay_OFF_Rel_Display(1,0,NULL,0,0,0);
Display_Up_Contend(AIR_CONDITION);
}
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态更新上报
}
else
{
Control_OnOff_handler(AIR_CONDITION,0);
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_onoff_start();
#else
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态改变通知
Start_Delay_Report_Event(1); //状态改变通知
#endif
}
}
else
{
if(sKey_Operation[0].operate_calibrate_temper)
{
u16 display_data = 0;
sKey_Operation[0].operate_calibrate_temper = 0;
operate_calibrate_temper_delay_2s_off_Task_Start();
delay_operate_calibrate_temper_Task_Stop(); //15s 计时取消
display_data = Oled_Display_Info.Air_Device.real_temperature - Oled_Display_Info.Air_Device.correct_temperature + sKey_Operation[0].operate_calibrate_temp;
Calib_Temp_Control(ON,0,0,display_data);
Oled_Display_Info.Air_Device.real_temperature = Oled_Display_Info.Air_Device.real_temperature - Oled_Display_Info.Air_Device.correct_temperature + sKey_Operation[0].operate_calibrate_temp;
Oled_Display_Info.Air_Device.correct_temperature = sKey_Operation[0].operate_calibrate_temp;
save_data(); //保存token
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态更新上报
}
else{
Control_OnOff_handler(AIR_CONDITION,1);
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_onoff_start();
#else
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态改变通知
Start_Delay_Report_Event(1); //状态改变通知
#endif
}
}
}
else if(Oled_Display_Info.screen_page == 2)
{
if(Oled_Display_Info.FLOOR_Device.on_off)
{
if(sKey_Operation[1].operate_delay_off_status)
{
sKey_Operation[1].operate_delay_off_status = 0;
Oled_Display_Info.FLOOR_Device.power_off_time = sKey_Operation[1].record_adjust_delay_off;
if(Oled_Display_Info.FLOOR_Device.power_off_time >0)
{
Oled_Display_Info.FLOOR_Device.power_off_flage = 1;
Reset_DelayOFF_timer(FLOOR_HEATING);
Delay_OFF_Rel_Display(1,1,Oled_Display_Info.FLOOR_Device.power_off_time,1,1,0);
}
else
{
Delay_OFF_Rel_Display(1,0,NULL,0,0,0);
Display_Up_Contend(FLOOR_HEATING);
}
state_change_report(OPCODE_GENERAL_REPORT_STATUS,2); //状态更新上报
}
else
{
Control_OnOff_handler(FLOOR_HEATING,0); //控制阀门关闭
state_change_report(OPCODE_GENERAL_REPORT_STATUS,2); //状态更新上报
}
}
else
{
if(sKey_Operation[1].operate_calibrate_temper)
{
u16 display_data = 0;
sKey_Operation[1].operate_calibrate_temper = 0;
operate_calibrate_temper_delay_2s_off_Task_Start(); //2s计时开启
delay_operate_calibrate_temper_Task_Stop(); //15s 计时取消
display_data = Oled_Display_Info.FLOOR_Device.real_temperature - Oled_Display_Info.FLOOR_Device.correct_temperature + sKey_Operation[1].operate_calibrate_temp;
Calib_Temp_Control(ON,0,0,display_data);
Oled_Display_Info.FLOOR_Device.real_temperature = Oled_Display_Info.FLOOR_Device.real_temperature - Oled_Display_Info.FLOOR_Device.correct_temperature + sKey_Operation[1].operate_calibrate_temp;
Oled_Display_Info.FLOOR_Device.correct_temperature = sKey_Operation[1].operate_calibrate_temp;
save_data();
state_change_report(OPCODE_GENERAL_REPORT_STATUS,2); //状态更新上报
}
else{
Control_OnOff_handler(FLOOR_HEATING,1);
state_change_report(OPCODE_GENERAL_REPORT_STATUS,2); //状态更新上报
}
}
Start_Delay_Report_Event(2);
}
else if(Oled_Display_Info.screen_page == 3)
{
if(Oled_Display_Info.FAN_Device.on_off)
{
if(sKey_Operation[2].operate_delay_off_status)
{
sKey_Operation[2].operate_delay_off_status = 0;
Oled_Display_Info.FAN_Device.power_off_time = sKey_Operation[2].record_adjust_delay_off;
if(Oled_Display_Info.FAN_Device.power_off_time >0)
{
Oled_Display_Info.FAN_Device.power_off_flage = 1;
Reset_DelayOFF_timer(FAN);
Delay_OFF_Rel_Display(1,1,Oled_Display_Info.FAN_Device.power_off_time,1,1,0);
}
else
{
Delay_OFF_Rel_Display(1,0,NULL,0,0,0);
Display_Up_Contend(FAN);
}
state_change_report(OPCODE_GENERAL_REPORT_STATUS,3); //状态更新上报
Control_OnOff_handler(FAN,0); //状态更新上报
}
else
{
Control_OnOff_handler(FAN,0);
state_change_report(OPCODE_GENERAL_REPORT_STATUS,3); //状态更新上报
}
}
else
{
if(sKey_Operation[2].operate_calibrate_temper)
{
u16 display_data = 0;
sKey_Operation[2].operate_calibrate_temper = 0;
operate_calibrate_temper_delay_2s_off_Task_Start();
delay_operate_calibrate_temper_Task_Stop(); //15s 计时取消
display_data = Oled_Display_Info.FAN_Device.real_temperature - Oled_Display_Info.FAN_Device.correct_temperature + sKey_Operation[2].operate_calibrate_temp;
Calib_Temp_Control(ON,0,0,display_data);
Oled_Display_Info.FAN_Device.real_temperature = Oled_Display_Info.FAN_Device.real_temperature - Oled_Display_Info.FAN_Device.correct_temperature + sKey_Operation[2].operate_calibrate_temp;
Oled_Display_Info.FAN_Device.correct_temperature = sKey_Operation[2].operate_calibrate_temp;
save_data();
state_change_report(OPCODE_GENERAL_REPORT_STATUS,3); //状态更新上报
}
else{
Control_OnOff_handler(FAN,1);
state_change_report(OPCODE_GENERAL_REPORT_STATUS,3); //状态更新上报
}
}
Start_Delay_Report_Event(3);
}
}
break;
case ButtonLongEvent:
{
if(Oled_Display_Info.screen_page == AIR_CONDITION)
{
if(Oled_Display_Info.Air_Device.on_off)
{
//延时关机设置,开启闪烁
sKey_Operation[0].operate_delay_off_status = 1;
//显示H,设定时长,当前时间
Delay_OFF_Rel_Display(0,1,Oled_Display_Info.Air_Device.power_off_time,1,0,1);
sKey_Operation[0].record_adjust_delay_off = Oled_Display_Info.Air_Device.power_off_time;
Delay_Power_Off_Control(FLASHING,15000,500,Oled_Display_Info.Air_Device.power_off_time);
delay_operate_delay_off_Task_Start(); //开启15s倒计时
}
u8 arg[2] = {0};
static u8 firstLongPressFlg = 0;
//15min前老化不能操作组网
if(Oled_Display_Info.aging_test_flag != 2)
break;
if(Oled_Display_Info.net_work_flage == OUT_LINE){
arg[0] = 1; //操作入网
Send_Device_Data(0,_OPCODE_SET_NET_STATE,arg,1);
//printf("join network\r\n");
}
else if(Oled_Display_Info.screen_page == FLOOR_HEATING)
{
if(Oled_Display_Info.FLOOR_Device.on_off)
else{
if( ((Oled_Display_Info.local_timer - sKey_Operation[0].operate_last_timer) <=10*1000)&&firstLongPressFlg )
{
//延时关机设置,开启闪烁
sKey_Operation[1].operate_delay_off_status = 1;
//显示H,设定时长,当前时间
Delay_OFF_Rel_Display(0,1,Oled_Display_Info.FLOOR_Device.power_off_time,1,0,1);
sKey_Operation[1].record_adjust_delay_off = Oled_Display_Info.FLOOR_Device.power_off_time;
Delay_Power_Off_Control(FLASHING,15000,500,Oled_Display_Info.FLOOR_Device.power_off_time);
delay_operate_delay_off_Task_Start(); //开启15s倒计时
}
arg[0] = 0; //操作离网
Send_Device_Data(0,_OPCODE_SET_NET_STATE,arg,1);
//printf("leave network\r\n");
}
else if(Oled_Display_Info.screen_page == FAN)
{
if(Oled_Display_Info.FAN_Device.on_off)
else
{
//延时关机设置,开启闪烁
sKey_Operation[2].operate_delay_off_status = 1;
//显示H,设定时长,当前时间
Delay_OFF_Rel_Display(0,1,Oled_Display_Info.FAN_Device.power_off_time,1,0,1);
sKey_Operation[2].record_adjust_delay_off = Oled_Display_Info.FAN_Device.power_off_time;
Delay_Power_Off_Control(FLASHING,15000,500,Oled_Display_Info.FAN_Device.power_off_time);
firstLongPressFlg = 1;
//闪烁一次,表示短按通过
LCDShowTemp_state_t.LCD_place = ZIGBEE_NET_CAHR_DISPLAY;
LCDShowTemp_state_t.LCD_state = ON;
LcdShowCTR(LCDShowTemp_state_t);
delay_operate_delay_off_Task_Start(); //开启15s倒计时
LCDShowTemp_state_t.LCD_place = ZIGBEE_NET_CAHR_DISPLAY;
LCDShowTemp_state_t.LCD_state = FLASHING;
LCDShowTemp_state_t.LCD_display_count = 2;
LCDShowTemp_state_t.LCD_display_timer = 20;
LcdShowCTR(LCDShowTemp_state_t);
}
}
}
break;
case ButtonLongUpEvent:
{
sKey_Operation[0].operate_last_timer = Oled_Display_Info.local_timer;
}
break;
default:
break;
......@@ -974,11 +914,11 @@ static void KEY2_Botton_Process_Handler(u8 KeyPressEvent)
/********************************************
显示当前风速
*********************************************/
display_set_temp(1,Oled_Display_Info.FAN_Device.wind_speed,1);
display_wind_speed(Oled_Display_Info.FAN_Device.wind_speed,0);
#if DEVICE_TYPE_FAN
Fan_Speed_Control(Oled_Display_Info.FAN_Device.wind_speed);
#endif
state_change_report(OPCODE_GENERAL_REPORT_STATUS,3); //状态改变通知
Start_Delay_Report_Event(3);
}
}
break;
......@@ -1013,7 +953,7 @@ static void KEY3_Botton_Process_Handler(u8 KeyPressEvent)
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_system_mode_start();
#else
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态改变通知
Start_Delay_Report_Event(1);
#endif
}
......@@ -1027,10 +967,11 @@ static void KEY3_Botton_Process_Handler(u8 KeyPressEvent)
if(Oled_Display_Info.FLOOR_Device.system_type == SYSTEM_MODE_AUTO)
{
Oled_Display_Info.FLOOR_Device.set_temperature = 260;
display_set_temp(0,Oled_Display_Info.FLOOR_Device.set_temperature,0);
Display_Set_Temper(Oled_Display_Info.FLOOR_Device.set_temperature);
}
state_change_report(OPCODE_GENERAL_REPORT_STATUS,2); //状态改变通知
Start_Delay_Report_Event(2);
}
else if(Oled_Display_Info.screen_page == FAN)
{
......@@ -1042,7 +983,7 @@ static void KEY3_Botton_Process_Handler(u8 KeyPressEvent)
#if DEVICE_TYPE_FAN
Fan_PassbyONOFF_By_Mode_Trans(system_mode_temp,1);
#endif
state_change_report(OPCODE_GENERAL_REPORT_STATUS,3); //状态改变通知
Start_Delay_Report_Event(3);
}
}
break;
......@@ -1050,72 +991,40 @@ static void KEY3_Botton_Process_Handler(u8 KeyPressEvent)
{
if(Oled_Display_Info.screen_page == AIR_CONDITION)
{
if(Oled_Display_Info.Air_Device.on_off == 0) //关机模式才能操作温度校准
{
u16 display_data = 0;
delay_operate_calibrate_temper_Task_Start();
sKey_Operation[0].operate_calibrate_temper = 1;
sKey_Operation[0].operate_calibrate_temp = Oled_Display_Info.Air_Device.correct_temperature;
display_data = Oled_Display_Info.Air_Device.real_temperature;
Calib_Temp_Control(FLASHING,15*1000,800,display_data);
return;
}
if(Oled_Display_Info.Air_Device.lock_flage) //处于锁定状态,长按可解锁
if(Oled_Display_Info.Air_Device.lock_flage)
{
Oled_Display_Info.Air_Device.lock_flage = 0;
Control_ChildLock_Onoff(AIR_CONDITION,Oled_Display_Info.Air_Device.lock_flage);
}
else{ //处于非锁定状态,长按可上锁
else if((Oled_Display_Info.Air_Device.on_off)&&(Oled_Display_Info.Air_Device.lock_flage == 0)) //处于非锁定状态,长按可上锁
{
Oled_Display_Info.Air_Device.lock_flage = 1;
Control_ChildLock_Onoff(AIR_CONDITION,Oled_Display_Info.Air_Device.lock_flage);
}
}
else if(Oled_Display_Info.screen_page == FLOOR_HEATING)
{
if(Oled_Display_Info.FLOOR_Device.on_off == 0) //关机模式才能操作温度校准
{
u16 display_data = 0;
delay_operate_calibrate_temper_Task_Start();
sKey_Operation[1].operate_calibrate_temper = 1;
sKey_Operation[1].operate_calibrate_temp = Oled_Display_Info.FLOOR_Device.correct_temperature;
display_data = Oled_Display_Info.FLOOR_Device.real_temperature;
Calib_Temp_Control(FLASHING,15*1000,800,display_data);
return;
}
if(Oled_Display_Info.FLOOR_Device.lock_flage) //处于锁定状态,长按可解锁
if(Oled_Display_Info.FLOOR_Device.lock_flage)
{
Oled_Display_Info.FLOOR_Device.lock_flage = 0;
Control_ChildLock_Onoff(FLOOR_HEATING,Oled_Display_Info.FLOOR_Device.lock_flage);
}
else{ //处于非锁定状态,长按可上锁
else if((Oled_Display_Info.FLOOR_Device.on_off)&&(Oled_Display_Info.FLOOR_Device.lock_flage == 0)) //处于非锁定状态,长按可上锁
{
Oled_Display_Info.FLOOR_Device.lock_flage = 1;
Control_ChildLock_Onoff(FLOOR_HEATING,Oled_Display_Info.FLOOR_Device.lock_flage);
}
}
else if(Oled_Display_Info.screen_page == FAN)
{
if(Oled_Display_Info.FAN_Device.on_off == 0) //关机模式才能操作温度校准
{
u16 display_data = 0;
delay_operate_calibrate_temper_Task_Start();
sKey_Operation[2].operate_calibrate_temper = 1;
sKey_Operation[2].operate_calibrate_temp = Oled_Display_Info.FAN_Device.correct_temperature;
display_data = Oled_Display_Info.FAN_Device.real_temperature;
Calib_Temp_Control(FLASHING,15*1000,800,display_data);
return;
}
if(Oled_Display_Info.FAN_Device.lock_flage) //处于锁定状态,长按可解锁
if(Oled_Display_Info.FAN_Device.lock_flage)
{
Oled_Display_Info.FAN_Device.lock_flage = 0;
Control_ChildLock_Onoff(FAN,Oled_Display_Info.FAN_Device.lock_flage);
}
else{ //处于非锁定状态,长按可上锁
else if((Oled_Display_Info.FAN_Device.on_off)&&(Oled_Display_Info.FAN_Device.lock_flage == 0)) //处于非锁定状态,长按可上锁
{
Oled_Display_Info.FAN_Device.lock_flage = 1;
Control_ChildLock_Onoff(FAN,Oled_Display_Info.FAN_Device.lock_flage);
}
......@@ -1166,6 +1075,7 @@ static void KEY4_Botton_Process_Handler(u8 KeyPressEvent)
Oled_Display_Info.screen_page = Oled_Display_Info.device_type;
}
//显示所有的界面
BL55072A_Clear();
display_current_page();
}
break;
......@@ -1177,36 +1087,61 @@ static void KEY5_Botton_Process_Handler(u8 KeyPressEvent)
{
switch(KeyPressEvent)
{
case ButtonShortEvent:
case Button0_5sLongEvent:
{
if(Oled_Display_Info.screen_page == AIR_CONDITION)
{
if(!Oled_Display_Info.Air_Device.on_off ) //关机情况下不允许调节
if(!Oled_Display_Info.Air_Device.on_off)
return;
if(Oled_Display_Info.Air_Device.system_type != SYSTEM_MODE_AIR)
{
/**************************************************
调节设置温度
**************************************************/
Oled_Display_Info.Air_Device.set_temperature += 10;
if(Oled_Display_Info.Air_Device.set_temperature >= 300)
Oled_Display_Info.Air_Device.set_temperature = 300;
Display_Set_Temper(Oled_Display_Info.Air_Device.set_temperature); //显示设置温度
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_set_temp_start();
#else
Start_Delay_Report_Event(1);
#endif
}
}
else if(Oled_Display_Info.screen_page == FLOOR_HEATING)
{
if(sKey_Operation[0].operate_calibrate_temper)
if(!Oled_Display_Info.FLOOR_Device.on_off)
return;
/**************************************************
调节设置温度
**************************************************/
if(Oled_Display_Info.FLOOR_Device.system_type!= SYSTEM_MODE_AUTO)
{
u16 display_data = 0;
delay_operate_calibrate_temper_Task_Start();
if(sKey_Operation[0].operate_calibrate_temp< 90)
sKey_Operation[0].operate_calibrate_temp +=5;
Oled_Display_Info.FLOOR_Device.set_temperature += 5;
if(Oled_Display_Info.FLOOR_Device.set_temperature >= 300)
Oled_Display_Info.FLOOR_Device.set_temperature = 300;
Display_Set_Temper(Oled_Display_Info.FLOOR_Device.set_temperature); //显示设置温度
display_data = Oled_Display_Info.Air_Device.real_temperature -Oled_Display_Info.Air_Device.correct_temperature + sKey_Operation[0].operate_calibrate_temp;
Calib_Temp_Control(ON,0,0,display_data);
Calib_Temp_Control(FLASHING,15*1000,800,display_data);
Start_Delay_Report_Event(2);
}
}
break;
}
case ButtonShortEvent:
{
if(Oled_Display_Info.screen_page == AIR_CONDITION)
{
if(!Oled_Display_Info.Air_Device.on_off)
return;
if(gKey_Press_Info.adjust_fan_speed_status == 1)
{
u8 next_speed = 0;
if(Oled_Display_Info.Air_Device.air_cond_type == 2) //线控器支持七档+自动调节
{
// next_speed = Get_NextOne_By_Current_Speed_Level(1,Oled_Display_Info.Air_Device.wind_speed,1);
// display_wind_speed(next_speed,1);
// Oled_Display_Info.Air_Device.wind_speed = next_speed;
// state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态改变通知
if(Oled_Display_Info.Air_Device.system_type != SYSTEM_MODE_DRY) //美的空调,除湿模式下改变风速无效
{
next_speed = Get_NextOne_By_Current_Speed_Level(1,Oled_Display_Info.Air_Device.wind_speed,0);
......@@ -1217,108 +1152,35 @@ static void KEY5_Botton_Process_Handler(u8 KeyPressEvent)
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_fan_speed_start();
#else
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态改变通知
Start_Delay_Report_Event(1);
#endif
//Control_AIR_CONDITION_By_RS485(AIR_CMD_FAN_SPEED,next_speed); //控制空调风速
}
}
// else if(Oled_Display_Info.Air_Device.air_cond_type == 1) //风机盘管,新风只支持3档+自动调节
// {
// if(Oled_Display_Info.Air_Device.system_type != SYSTEM_MODE_DRY) //美的空调,除湿模式下改变风速无效
// {
// next_speed = Get_NextOne_By_Current_Speed_Level(1,Oled_Display_Info.Air_Device.wind_speed,0);
// display_wind_speed(next_speed,0);
// //Oled_Display_Info.Air_Device.wind_speed = next_speed;
//
// //Control_AIR_CONDITION_By_RS485(AIR_CMD_FAN_SPEED,Oled_Display_Info.Air_Device.wind_speed); //控制空调风速
//
// state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态改变通知
// }
// }
break;
}
// else if(gKey_Press_Info.adjust_fan_speed_status == 2)
// {
// u8 speed_direct = 0;
// speed_direct = Get_NextOne_By_Current_wind_direct(1,Oled_Display_Info.Air_Device.air_wind_direct);
// switch(speed_direct) //显示当前风向
// {
// case 0:
// display_wind_direct(1,0,0);
// break;
// case 1:
// display_wind_direct(0,1,0);
// break;
// case 2:
// display_wind_direct(0,0,1);
// break;
// default:
// break;
// }
// Control_AIR_CONDITION_By_RS485(AIR_CMD_FAN_DIRECT,speed_direct); //控制空调风向
// break;
// }
if(sKey_Operation[0].operate_delay_off_status)
{
sKey_Operation[0].record_adjust_delay_off += 5;
if(sKey_Operation[0].record_adjust_delay_off >= 240)
sKey_Operation[0].record_adjust_delay_off = 240;
Delay_Power_Off_Control(ON,NULL,NULL,sKey_Operation[0].record_adjust_delay_off);
Delay_Power_Off_Control(FLASHING,15000,500,sKey_Operation[0].record_adjust_delay_off);
delay_operate_delay_off_Task_Start(); //开启15s倒计时
break;
}
if(Oled_Display_Info.Air_Device.system_type != SYSTEM_MODE_AIR)
{
/**************************************************
调节设置温度
**************************************************/
Oled_Display_Info.Air_Device.set_temperature += 5;
Oled_Display_Info.Air_Device.set_temperature += 10;
if(Oled_Display_Info.Air_Device.set_temperature >= 300)
Oled_Display_Info.Air_Device.set_temperature = 300;
display_set_temp(0,Oled_Display_Info.Air_Device.set_temperature,0); //显示设置温度
Display_Set_Temper(Oled_Display_Info.Air_Device.set_temperature); //显示设置温度
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_set_temp_start();
#else
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态改变通知
Start_Delay_Report_Event(1);
#endif
}
}
else if(Oled_Display_Info.screen_page == FLOOR_HEATING)
{
if(!Oled_Display_Info.FLOOR_Device.on_off ) //关机情况下不允许调节
{
if(sKey_Operation[1].operate_calibrate_temper)
{
u16 display_data = 0;
delay_operate_calibrate_temper_Task_Start();
if(sKey_Operation[1].operate_calibrate_temp< 90)
sKey_Operation[1].operate_calibrate_temp +=5;
display_data = Oled_Display_Info.FLOOR_Device.real_temperature-Oled_Display_Info.FLOOR_Device.correct_temperature + sKey_Operation[1].operate_calibrate_temp;
Calib_Temp_Control(ON,0,0,display_data);
Calib_Temp_Control(FLASHING,15*1000,800,display_data);
}
break;
}
if(sKey_Operation[1].operate_delay_off_status)
{
sKey_Operation[1].record_adjust_delay_off += 5;
if(sKey_Operation[1].record_adjust_delay_off >= 240)
sKey_Operation[1].record_adjust_delay_off = 240;
Delay_Power_Off_Control(ON,NULL,NULL,sKey_Operation[1].record_adjust_delay_off);
Delay_Power_Off_Control(FLASHING,15000,500,sKey_Operation[1].record_adjust_delay_off);
delay_operate_delay_off_Task_Start(); //开启15s倒计时
break;
}
if(!Oled_Display_Info.FLOOR_Device.on_off)
return;
/**************************************************
调节设置温度
**************************************************/
......@@ -1337,55 +1199,11 @@ static void KEY5_Botton_Process_Handler(u8 KeyPressEvent)
Oled_Display_Info.FLOOR_Device.set_temperature += 5;
if(Oled_Display_Info.FLOOR_Device.set_temperature >= 300)
Oled_Display_Info.FLOOR_Device.set_temperature = 300;
display_set_temp(0,Oled_Display_Info.FLOOR_Device.set_temperature,0); //显示设置温度
Display_Set_Temper(Oled_Display_Info.FLOOR_Device.set_temperature); //显示设置温度
state_change_report(OPCODE_GENERAL_REPORT_STATUS,2); //状态改变通知
Start_Delay_Report_Event(2);
}
}
else if(Oled_Display_Info.screen_page == FAN)
{
if(!Oled_Display_Info.FAN_Device.on_off ) //关机情况下不允许调节
{
if(sKey_Operation[2].operate_calibrate_temper)
{
u16 display_data = 0;
delay_operate_calibrate_temper_Task_Start();
if(sKey_Operation[2].operate_calibrate_temp< 90)
sKey_Operation[2].operate_calibrate_temp +=5;
display_data = Oled_Display_Info.FAN_Device.real_temperature- Oled_Display_Info.FAN_Device.correct_temperature + sKey_Operation[2].operate_calibrate_temp;
Calib_Temp_Control(ON,0,0,display_data);
Calib_Temp_Control(FLASHING,15*1000,800,display_data);
}
break;
}
if(gKey_Press_Info.adjust_fan_speed_status == 1)
{
u8 next_speed = 0;
next_speed = Get_NextOne_By_Current_Speed_Level(1,Oled_Display_Info.FAN_Device.wind_speed,0);
display_wind_speed(next_speed,0);
Oled_Display_Info.FAN_Device.wind_speed = next_speed;
state_change_report(OPCODE_GENERAL_REPORT_STATUS,3); //状态改变通知
break;
}
if(sKey_Operation[2].operate_delay_off_status)
{
sKey_Operation[2].record_adjust_delay_off += 5;
if(sKey_Operation[2].record_adjust_delay_off >= 240)
sKey_Operation[2].record_adjust_delay_off = 240;
Delay_Power_Off_Control(ON,NULL,NULL,sKey_Operation[2].record_adjust_delay_off);
Delay_Power_Off_Control(FLASHING,15000,500,sKey_Operation[2].record_adjust_delay_off);
delay_operate_delay_off_Task_Start(); //开启15s倒计时
break;
}
}
}
break;
// case ButtonLongEvent:
......@@ -1403,35 +1221,61 @@ static void KEY6_Botton_Process_Handler(u8 KeyPressEvent)
{
switch(KeyPressEvent)
{
case ButtonShortEvent:
case Button0_5sLongEvent:
{
if(Oled_Display_Info.screen_page == AIR_CONDITION)
{
if(!Oled_Display_Info.Air_Device.on_off ) //关机情况下不允许调节
{
if(sKey_Operation[0].operate_calibrate_temper)
if(!Oled_Display_Info.Air_Device.on_off)
return;
if(Oled_Display_Info.Air_Device.system_type != SYSTEM_MODE_AIR)
{
u16 display_data = 0;
delay_operate_calibrate_temper_Task_Start();
/**************************************************
调节设置温度
**************************************************/
Oled_Display_Info.Air_Device.set_temperature -= 10;
if(Oled_Display_Info.Air_Device.set_temperature <= 200)
Oled_Display_Info.Air_Device.set_temperature = 200;
Display_Set_Temper(Oled_Display_Info.Air_Device.set_temperature); //显示设置温度
if(sKey_Operation[0].operate_calibrate_temp> -90)
sKey_Operation[0].operate_calibrate_temp -=5;
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_set_temp_start();
#else
Start_Delay_Report_Event(1);
#endif
display_data = Oled_Display_Info.Air_Device.real_temperature- Oled_Display_Info.Air_Device.correct_temperature + sKey_Operation[0].operate_calibrate_temp;
Calib_Temp_Control(ON,0,0,display_data);
Calib_Temp_Control(FLASHING,15*1000,800,display_data);
}
break;
}
else if(Oled_Display_Info.screen_page == FLOOR_HEATING)
{
if(!Oled_Display_Info.FLOOR_Device.on_off)
return;
/**************************************************
调节设置温度
**************************************************/
if(Oled_Display_Info.FLOOR_Device.system_type!= SYSTEM_MODE_AUTO)
{
Oled_Display_Info.FLOOR_Device.set_temperature -= 5;
if(Oled_Display_Info.FLOOR_Device.set_temperature <=160)
Oled_Display_Info.FLOOR_Device.set_temperature = 160;
Display_Set_Temper(Oled_Display_Info.FLOOR_Device.set_temperature); //显示设置温度
Start_Delay_Report_Event(2);
}
}
break;
}
case ButtonShortEvent:
{
if(Oled_Display_Info.screen_page == AIR_CONDITION)
{
if(!Oled_Display_Info.Air_Device.on_off)
return;
if(gKey_Press_Info.adjust_fan_speed_status == 1)
{
u8 next_speed = 0;
if(Oled_Display_Info.Air_Device.air_cond_type == 2) //线控器支持七档+自动调节
{
// next_speed = Get_NextOne_By_Current_Speed_Level(0,Oled_Display_Info.Air_Device.wind_speed,1);
// display_wind_speed(next_speed,1);
if(Oled_Display_Info.Air_Device.system_type != SYSTEM_MODE_DRY) //美的空调,除湿模式下改变风速无效
{
next_speed = Get_NextOne_By_Current_Speed_Level(0,Oled_Display_Info.Air_Device.wind_speed,0);
......@@ -1442,99 +1286,31 @@ static void KEY6_Botton_Process_Handler(u8 KeyPressEvent)
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_fan_speed_start();
#else
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态改变通知
Start_Delay_Report_Event(1);
#endif
}
}
// else if(Oled_Display_Info.Air_Device.air_cond_type == 1) //风机盘管,新风只支持3档+自动调节
// {
// next_speed = Get_NextOne_By_Current_Speed_Level(0,Oled_Display_Info.Air_Device.wind_speed,0);
// display_wind_speed(next_speed,0);
// Oled_Display_Info.Air_Device.wind_speed = next_speed;
//
// state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态改变通知
// }
break;
}
// else if(gKey_Press_Info.adjust_fan_speed_status == 2)
// {
// u8 speed_direct = 0;
// speed_direct = Get_NextOne_By_Current_wind_direct(0,Oled_Display_Info.Air_Device.air_wind_direct);
// switch(speed_direct) //显示当前风向
// {
// case 0:
// display_wind_direct(1,0,0);
// break;
// case 1:
// display_wind_direct(0,1,0);
// break;
// case 2:
// display_wind_direct(0,0,1);
// break;
// default:
// break;
// }
// Oled_Display_Info.Air_Device.air_wind_direct = speed_direct;
//
// state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态改变通知
// break;
// }
if(sKey_Operation[0].operate_delay_off_status)
{
if(sKey_Operation[0].record_adjust_delay_off >=5)
sKey_Operation[0].record_adjust_delay_off -= 5;
Delay_Power_Off_Control(ON,15000,500,sKey_Operation[0].record_adjust_delay_off);
Delay_Power_Off_Control(FLASHING,15000,500,sKey_Operation[0].record_adjust_delay_off);
delay_operate_delay_off_Task_Start(); //开启15s倒计时
break;
}
if(Oled_Display_Info.Air_Device.system_type != SYSTEM_MODE_AIR)
{
Oled_Display_Info.Air_Device.set_temperature -= 5;
if(Oled_Display_Info.Air_Device.set_temperature <= 160) //美的空调温度调节范围 17度 - 30度
Oled_Display_Info.Air_Device.set_temperature = 160;
display_set_temp(0,Oled_Display_Info.Air_Device.set_temperature,0); //显示设置温度
Oled_Display_Info.Air_Device.set_temperature -= 10;
if(Oled_Display_Info.Air_Device.set_temperature <= 200) //美的空调温度调节范围 17度 - 30度
Oled_Display_Info.Air_Device.set_temperature = 200;
Display_Set_Temper(Oled_Display_Info.Air_Device.set_temperature); //显示设置温度
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_set_temp_start();
#else
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态改变通知
Start_Delay_Report_Event(1);
#endif
}
}
else if(Oled_Display_Info.screen_page == FLOOR_HEATING)
{
if(!Oled_Display_Info.FLOOR_Device.on_off ) //关机情况下不允许调节
{
if(sKey_Operation[1].operate_calibrate_temper)
{
u16 display_data = 1;
delay_operate_calibrate_temper_Task_Start();
if(sKey_Operation[1].operate_calibrate_temp> -90)
sKey_Operation[1].operate_calibrate_temp -=5;
display_data = Oled_Display_Info.FLOOR_Device.real_temperature- Oled_Display_Info.FLOOR_Device.correct_temperature + sKey_Operation[1].operate_calibrate_temp;
Calib_Temp_Control(ON,0,0,display_data);
Calib_Temp_Control(FLASHING,15*1000,800,display_data);
}
break;
}
if(sKey_Operation[1].operate_delay_off_status)
{
if(sKey_Operation[1].record_adjust_delay_off >=5)
sKey_Operation[1].record_adjust_delay_off -= 5;
Delay_Power_Off_Control(ON,15000,500,sKey_Operation[1].record_adjust_delay_off);
Delay_Power_Off_Control(FLASHING,15000,500,sKey_Operation[1].record_adjust_delay_off);
delay_operate_delay_off_Task_Start(); //开启15s倒计时
break;
}
if(!Oled_Display_Info.FLOOR_Device.on_off)
return;
if(Oled_Display_Info.FLOOR_Device.system_type == SYSTEM_MODE_AUTO)
{
LCDShowTemp_state_t.LCD_place = SYSTEM_AUTO_CHAR_DISPLAY;
......@@ -1549,98 +1325,16 @@ static void KEY6_Botton_Process_Handler(u8 KeyPressEvent)
Oled_Display_Info.FLOOR_Device.set_temperature -= 5;
if(Oled_Display_Info.FLOOR_Device.set_temperature <= 160)
Oled_Display_Info.FLOOR_Device.set_temperature = 160;
display_set_temp(0,Oled_Display_Info.FLOOR_Device.set_temperature,0); //显示设置温度
state_change_report(OPCODE_GENERAL_REPORT_STATUS,2); //状态改变通知
}
}
else if(Oled_Display_Info.screen_page == FAN)
{
if(!Oled_Display_Info.FAN_Device.on_off ) //关机情况下不允许调节
{
if(sKey_Operation[2].operate_calibrate_temper)
{
u16 display_data = 0;
delay_operate_calibrate_temper_Task_Start();
if(sKey_Operation[2].operate_calibrate_temp> -90)
sKey_Operation[2].operate_calibrate_temp -=5;
display_data = Oled_Display_Info.FAN_Device.real_temperature- Oled_Display_Info.FAN_Device.correct_temperature + sKey_Operation[2].operate_calibrate_temp;
Calib_Temp_Control(ON,0,0,display_data);
Calib_Temp_Control(FLASHING,15*1000,800,display_data);
}
break;
}
Display_Set_Temper(Oled_Display_Info.FLOOR_Device.set_temperature); //显示设置温度
if(gKey_Press_Info.adjust_fan_speed_status == 1)
{
u8 next_speed = 0;
next_speed = Get_NextOne_By_Current_Speed_Level(0,Oled_Display_Info.FAN_Device.wind_speed,0);
display_wind_speed(next_speed,0);
Oled_Display_Info.FAN_Device.wind_speed = next_speed;
state_change_report(OPCODE_GENERAL_REPORT_STATUS,2); //状态改变通知
break;
Start_Delay_Report_Event(2);
}
if(sKey_Operation[2].operate_delay_off_status)
{
if(sKey_Operation[2].record_adjust_delay_off >=5)
sKey_Operation[2].record_adjust_delay_off -= 5;
Delay_Power_Off_Control(ON,15000,500,sKey_Operation[2].record_adjust_delay_off);
Delay_Power_Off_Control(FLASHING,15000,500,sKey_Operation[2].record_adjust_delay_off);
delay_operate_delay_off_Task_Start(); //开启15s倒计时
}
}
}
break;
case ButtonLongEvent:
{
u8 arg[2] = {0};
static u8 firstLongPressFlg = 0;
//15min前老化不能操作组网
if(Oled_Display_Info.aging_test_flag != 2)
break;
if(Oled_Display_Info.net_work_flage == OUT_LINE){
arg[0] = 1; //操作入网
Send_Device_Data(0,_OPCODE_SET_NET_STATE,arg,1);
//printf("join network\r\n");
}
else{
if( ((Oled_Display_Info.local_timer - sKey_Operation[0].operate_last_timer) <=10*1000)&&firstLongPressFlg )
{
arg[0] = 0; //操作离网
Send_Device_Data(0,_OPCODE_SET_NET_STATE,arg,1);
//printf("leave network\r\n");
}
else
{
firstLongPressFlg = 1;
//闪烁一次,表示短按通过
LCDShowTemp_state_t.LCD_place = ZIGBEE_NET_CAHR_DISPLAY;
LCDShowTemp_state_t.LCD_state = ON;
LcdShowCTR(LCDShowTemp_state_t);
LCDShowTemp_state_t.LCD_place = ZIGBEE_NET_CAHR_DISPLAY;
LCDShowTemp_state_t.LCD_state = FLASHING;
LCDShowTemp_state_t.LCD_display_count = 2;
LCDShowTemp_state_t.LCD_display_timer = 20;
LcdShowCTR(LCDShowTemp_state_t);
}
}
}
break;
case ButtonLongUpEvent:
{
sKey_Operation[0].operate_last_timer = Oled_Display_Info.local_timer;
}
break;
default:
break;
......@@ -2043,18 +1737,21 @@ void Control_ChildLock_Onoff(u8 device_type,u8 onoff)
if(onoff) //处于锁定状态,长按可解锁
{
Oled_Display_Info.Air_Device.lock_flage = 1;
Operate_Led_Button(AIR_CONDITION,1); // 只显示'M'按键
LCDShowTemp_state_t.LCD_state = ON;
}
else{
Oled_Display_Info.Air_Device.lock_flage = 0;
if(Oled_Display_Info.Air_Device.on_off)
Operate_Led_Button(AIR_CONDITION,2);
else
Operate_Led_Button(AIR_CONDITION,3);
LCDShowTemp_state_t.LCD_state = OFF;
}
LcdShowCTR(LCDShowTemp_state_t);
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1);
Start_Delay_Report_Event(1);
}
else if(device_type == FLOOR_HEATING)
{
......@@ -2062,15 +1759,20 @@ void Control_ChildLock_Onoff(u8 device_type,u8 onoff)
if(onoff) //处于锁定状态,长按可解锁
{
Oled_Display_Info.FLOOR_Device.lock_flage = 1;
Operate_Led_Button(FLOOR_HEATING,1); // 只显示'M'按键
LCDShowTemp_state_t.LCD_state = ON;
}
else{
Oled_Display_Info.FLOOR_Device.lock_flage = 0;
if(Oled_Display_Info.FLOOR_Device.on_off)
Operate_Led_Button(FLOOR_HEATING,2);
else
Operate_Led_Button(FLOOR_HEATING,3);
LCDShowTemp_state_t.LCD_state = OFF;
}
LcdShowCTR(LCDShowTemp_state_t);
state_change_report(OPCODE_GENERAL_REPORT_STATUS,2);
Start_Delay_Report_Event(2);
}
else if(device_type == FAN)
{
......@@ -2078,16 +1780,21 @@ void Control_ChildLock_Onoff(u8 device_type,u8 onoff)
if(onoff) //处于锁定状态,长按可解锁
{
Oled_Display_Info.FAN_Device.lock_flage = 1;
Operate_Led_Button(FAN,1); // 只显示'M'按键
LCDShowTemp_state_t.LCD_state = ON;
}
else{
Oled_Display_Info.FAN_Device.lock_flage = 0;
if(Oled_Display_Info.FAN_Device.on_off)
Operate_Led_Button(FAN,2);
else
Operate_Led_Button(FAN,3);
LCDShowTemp_state_t.LCD_state = OFF;
}
LcdShowCTR(LCDShowTemp_state_t);
state_change_report(OPCODE_GENERAL_REPORT_STATUS,3);
Start_Delay_Report_Event(3);
}
save_data();
}
......@@ -25,7 +25,7 @@ u16 temp_close_time = 250 ; //5ms
////////////////////////非透传协议四个网络状态/////////////////////////////
#define PERSON_TRAGGER_MIN_RANGE 20
#define PERSON_TRAGGER_MIN_RANGE 15//20
......@@ -89,89 +89,8 @@ extern Lcd_Status_Info_t LCDShowTemp_state_t;
static void delay_300ms_report_start(void);
static void delay_300ms_report_stop(void);
///**********************************************
// 上电默认设备类型0(冷热分管)
//**********************************************/
//void Tap_Init(void)
//{
// save_tap_status[0] = 0;
// save_tap_status[1] = 0;
// save_tap_status[2] = 0;
// save_tap_status[3] = 1;
// save_tap_status[4] = 0;
// save_tap_status[5] = 0;
//
// switch(Oled_Display_Info.system_type)
// {
// case HOT_AND_COLD_APART: //冷热分管
// {
// if (Oled_Display_Info.real_temperature >= 280)
// {
// Oled_Display_Info.operation_mode = 1; //冷
// save_tap_status[0] = 1;
// }
// else if (Oled_Display_Info.real_temperature <= 200)
// {
// Oled_Display_Info.operation_mode = 2; //热
// save_tap_status[1] = 1;
// }
// else
// {
// Oled_Display_Info.operation_mode = 3; //通风
// }
// break;
// }
// case ONLY_COLD: //单冷 //无热阀,无制热模式 冷阀根据温度调节开关
// {
//
// if (Oled_Display_Info.real_temperature >= 280)
// {
// Oled_Display_Info.operation_mode = 1; //冷
// save_tap_status[0] = 1;
// }
// else
// {
// Oled_Display_Info.operation_mode = 3; //通风
// }
// break;
// }
// case ONLY_HOT: //单热
// {
// if (Oled_Display_Info.real_temperature <= 200)
// {
// Oled_Display_Info.operation_mode = 2; //热
// save_tap_status[1] = 1;
// }
// else
// {
// Oled_Display_Info.operation_mode = 3; //通风
// }
// break;
// }
// case HOT_AND_COLD_SHARED: //冷热共管
// {
// if (Oled_Display_Info.real_temperature >= 280)
// {
// Oled_Display_Info.operation_mode = 1; //冷
// save_tap_status[0] = 1;
// }
// else if (Oled_Display_Info.real_temperature <= 200)
// {
// Oled_Display_Info.operation_mode = 2; //热
// save_tap_status[0] = 1;
// }
// else
// {
// Oled_Display_Info.operation_mode = 3; //通风
// }
//
// break;
// }
// }
//
//
//}
void Display_Status(void);
static u8 Temp_Compensation(void);
/***********************************************************************
* 重要任务,不停的轮询
***********************************************************************/
......@@ -183,6 +102,7 @@ void main_task(void)
uart_msg_deal(); //产测数据解析
kLedModuleActionDetectCallback(); //zigbee指示灯操作
Display_Status();
Delay_Report_Status();
#ifndef DEVICE_TYPE_AIR_CONDITION
Tap_Switch();
......@@ -193,24 +113,18 @@ static void Set_Error_Code(u8 error_code)
{
if(Oled_Display_Info.screen_page == 1){
Oled_Display_Info.Air_Device.error = error_code; //传感器故障
if( Get_Display_Status())
{
Display_Up_Contend(AIR_CONDITION);
}
if(Oled_Display_Info.Air_Device.on_off)
Display_Middle_Contend(AIR_CONDITION);
}
else if(Oled_Display_Info.screen_page == 2){
Oled_Display_Info.FLOOR_Device.error = error_code;
if(Get_Display_Status())
{
Display_Up_Contend(FLOOR_HEATING);
}
if(Oled_Display_Info.FLOOR_Device.on_off)
Display_Middle_Contend(FLOOR_HEATING);
}
else if(Oled_Display_Info.screen_page == 3){
Oled_Display_Info.FAN_Device.error = error_code;
if( Get_Display_Status())
{
Display_Up_Contend(FAN);
}
if(Oled_Display_Info.FAN_Device.on_off)
Display_Middle_Contend(FAN);
}
}
/***********************************************************************
......@@ -237,15 +151,7 @@ u8 i = 0;
temp_new_data = (temp_new_data / 5) * 5;
if(Oled_Display_Info.screen_page == 1){
temp_new_data = temp_new_data + Oled_Display_Info.Air_Device.correct_temperature;
}
else if(Oled_Display_Info.screen_page == 2){
temp_new_data = temp_new_data + Oled_Display_Info.FLOOR_Device.correct_temperature;
}
else if(Oled_Display_Info.screen_page == 3){
temp_new_data = temp_new_data + Oled_Display_Info.FAN_Device.correct_temperature;
}
temp_new_data = temp_new_data + Oled_Display_Info.Air_Device.correct_temperature - Temp_Compensation();
if (temp_new_data <= -100)
{
......@@ -255,16 +161,10 @@ u8 i = 0;
{
temp_new_data = 995;
}
if(Oled_Display_Info.screen_page == 1){
Oled_Display_Info.Air_Device.real_temperature = temp_new_data;
}
else if(Oled_Display_Info.screen_page == 2){
Oled_Display_Info.FLOOR_Device.real_temperature = temp_new_data;
}
else if(Oled_Display_Info.screen_page == 3){
Oled_Display_Info.FAN_Device.real_temperature = temp_new_data;
}
}
}
///***********************************************************************
//* 函 数 名: record_dev_used_time 温度读取
......@@ -291,14 +191,20 @@ void shtc3_sensor_measure_loop(void)
if((Oled_Display_Info.screen_page == 1)&&(Oled_Display_Info.Air_Device.error == 1)) //传感器故障
{
Oled_Display_Info.Air_Device.error = 0;
if( Get_Display_Status())
Set_Error_Code(0);
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1);
}
else if((Oled_Display_Info.screen_page == 2)&&(Oled_Display_Info.FLOOR_Device.error == 1)) //传感器故障
{
LCDShowTemp_state_t.LCD_place = DELAY_OFF_TIME_DISPLAY;
LCDShowTemp_state_t.LCD_display_count = 0;
LCDShowTemp_state_t.LCD_state = OFF;
LcdShowCTR(LCDShowTemp_state_t);
Oled_Display_Info.FLOOR_Device.error = 0;
Set_Error_Code(0);
state_change_report(OPCODE_GENERAL_REPORT_STATUS,2);
}
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1);
else if((Oled_Display_Info.screen_page == 3)&&(Oled_Display_Info.FAN_Device.error == 1)) //传感器故障
{
Oled_Display_Info.FAN_Device.error = 0;
Set_Error_Code(0);
state_change_report(OPCODE_GENERAL_REPORT_STATUS,3);
}
abnormal_times = 0;
......@@ -318,15 +224,7 @@ void shtc3_sensor_measure_loop(void)
temp_new_data = (( temp_new_data / data_number ) / 5) * 5;
if(Oled_Display_Info.screen_page == 1){
temp_new_data = temp_new_data + Oled_Display_Info.Air_Device.correct_temperature;
}
else if(Oled_Display_Info.screen_page == 2){
temp_new_data = temp_new_data + Oled_Display_Info.FLOOR_Device.correct_temperature;
}
else if(Oled_Display_Info.screen_page == 3){
temp_new_data = temp_new_data + Oled_Display_Info.FAN_Device.correct_temperature;
}
temp_new_data = temp_new_data + Oled_Display_Info.Air_Device.correct_temperature - Temp_Compensation();
if (temp_new_data <= -100)
{
......@@ -336,31 +234,48 @@ void shtc3_sensor_measure_loop(void)
{
temp_new_data = 995;
}
// printf("measure temp data = %d\r\n",temp_new_data);
if ( (ABS(Oled_Display_Info.Air_Device.real_temperature, temp_new_data)>10)
&&(Oled_Display_Info.screen_page == 1) ) {
if ( ABS(Oled_Display_Info.Air_Device.real_temperature, temp_new_data)>=10 )
{
Oled_Display_Info.Air_Device.real_temperature = temp_new_data;
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1);// 上报状态
}
else if ( (ABS(Oled_Display_Info.FLOOR_Device.real_temperature, temp_new_data)>10)
&&(Oled_Display_Info.screen_page == 2) ) {
Oled_Display_Info.FLOOR_Device.real_temperature = temp_new_data;
state_change_report(OPCODE_GENERAL_REPORT_STATUS,2);// 上报状态
}
else if ( (ABS(Oled_Display_Info.FAN_Device.real_temperature, temp_new_data)>10)
&&(Oled_Display_Info.screen_page == 3) ) {
Oled_Display_Info.FAN_Device.real_temperature = temp_new_data;
state_change_report(OPCODE_GENERAL_REPORT_STATUS,3);// 上报状态
state_change_report(OPCODE_GENERAL_REPORT_STATUS,Oled_Display_Info.screen_page);// 上报状态
}
}
}
static u8 Save_Data(u8 device_type,u8 index,u32 *write_data)
/**
解决因为底板发热导致的温度偏高校准
*/
static u8 Temp_Compensation(void)
{
u32 time_s = Oled_Display_Info.local_timer/1000;
u8 Compensation_Value = 0;
if((time_s >=150)&&(time_s <300))
Compensation_Value = 5;
else if((time_s >=300)&&(time_s <450))
Compensation_Value = 10;
else if((time_s >=450)&&(time_s <600))
Compensation_Value = 15;
else if((time_s >=600)&&(time_s <750))
Compensation_Value = 20;
else if((time_s >=750)&&(time_s <900))
Compensation_Value = 25;
else if((time_s >=900)&&(time_s <1050))
Compensation_Value = 30;
else if((time_s >=1050)&&(time_s <1200))
Compensation_Value = 35;
else if((time_s >=1200)&&(time_s <1350))
Compensation_Value = 40;
else if((time_s >=1350)&&(time_s <1500))
Compensation_Value = 45;
else if((time_s >=1500)&&(time_s <1800))
Compensation_Value = 50;
else if(time_s >= 1800)
Compensation_Value = 55;
return Compensation_Value;
}
static u8 Save_Data(u8 index,u32 *write_data)
{
if(device_type == AIR_CONDITION)
{
u8 temp = 0;
if(index == 0)
{
......@@ -411,36 +326,24 @@ static u8 Save_Data(u8 device_type,u8 index,u32 *write_data)
else if(index == 3)
{
*write_data = 0;
*write_data = (*write_data | Oled_Display_Info.is_dispaly_cur_temp); //保存是否显示温度
*write_data = *write_data | SAVE_FLAGE;
return 1;
}
}
else if(device_type == FLOOR_HEATING)
{
u8 temp = 0;
if(index == 0)
{
*write_data = 0;
if(Oled_Display_Info.aging_test_flag != 1)
*write_data = (*write_data | Oled_Display_Info.aging_test_flag) << 8; //保存老化标志位
*write_data = (*write_data | Oled_Display_Info.binding_device) << 8; //保存绑定信息
// if(Oled_Display_Info.aging_test_flag != 1)
// *write_data = (*write_data | Oled_Display_Info.aging_test_flag) << 8; //保存老化标志位
//
// *write_data = (*write_data | Oled_Display_Info.binding_device) << 8; //保存绑定信息
if (Oled_Display_Info.FLOOR_Device.correct_temperature < 0) //保存温度校准值
if (Oled_Display_Info.Air_Device.correct_temperature < 0) //保存温度校准值
{
temp = 256 + Oled_Display_Info.FLOOR_Device.correct_temperature;
*write_data = (*write_data | temp);
temp = 256 + Oled_Display_Info.Air_Device.correct_temperature;
*write_data = (*write_data | temp) ;
}
else
{
*write_data = (*write_data | Oled_Display_Info.FLOOR_Device.correct_temperature) ;
*write_data = (*write_data | Oled_Display_Info.Air_Device.correct_temperature);
}
*write_data = *write_data | SAVE_FLAGE;
}
else if(index == 1)
else if(index == 4)
{
*write_data = 0;
*write_data = (*write_data | Oled_Display_Info.FLOOR_Device.lock_flage)<<8; //保存童锁
......@@ -451,40 +354,27 @@ static u8 Save_Data(u8 device_type,u8 index,u32 *write_data)
*write_data = *write_data | SAVE_FLAGE;
}
else if(index == 2)
else if(index == 5)
{
*write_data = 0;
*write_data = (*write_data | Oled_Display_Info.is_dispaly_cur_temp); //保存是否显示温度
*write_data = *write_data | SAVE_FLAGE;
return 1;
}
}
else if(device_type == FAN)
{
u8 temp = 0;
if(index == 0)
{
*write_data = 0;
if(Oled_Display_Info.aging_test_flag != 1)
*write_data = (*write_data | Oled_Display_Info.aging_test_flag) << 8; //保存老化标志位
*write_data = (*write_data | Oled_Display_Info.binding_device) << 8; //保存绑定信息
// if(Oled_Display_Info.aging_test_flag != 1)
// *write_data = (*write_data | Oled_Display_Info.aging_test_flag) << 8; //保存老化标志位
//
// *write_data = (*write_data | Oled_Display_Info.binding_device) << 8; //保存绑定信息
if (Oled_Display_Info.FAN_Device.correct_temperature < 0) //保存温度校准值
if (Oled_Display_Info.Air_Device.correct_temperature < 0) //保存温度校准值
{
temp = 256 + Oled_Display_Info.FAN_Device.correct_temperature;
*write_data = (*write_data | temp);
temp = 256 + Oled_Display_Info.Air_Device.correct_temperature;
*write_data = (*write_data | temp) ;
}
else
{
*write_data = (*write_data | Oled_Display_Info.FAN_Device.correct_temperature);
*write_data = (*write_data | Oled_Display_Info.Air_Device.correct_temperature);
}
*write_data = *write_data | SAVE_FLAGE;
}
else if(index == 1)
else if(index == 6)
{
*write_data = 0;
*write_data = (*write_data | Oled_Display_Info.FAN_Device.screen_save_time) << 8; //保存屏保时间
......@@ -497,26 +387,21 @@ static u8 Save_Data(u8 device_type,u8 index,u32 *write_data)
*write_data = *write_data | SAVE_FLAGE;
}
else if(index == 2)
else if(index == 7)
{
*write_data = 0;
*write_data = (*write_data | Oled_Display_Info.FAN_Device.lock_flage<<8); //保存童锁
*write_data = (*write_data | Oled_Display_Info.FAN_Device.no_disturb_mode)<<8; //保存勿扰模式
*write_data = (*write_data | Oled_Display_Info.is_dispaly_cur_temp); //保存是否显示温度
*write_data = *write_data | SAVE_FLAGE;
return 1;
}
}
return 0;
}
static void Load_Data(u8 device_type,u8 index,u32 load_data)
static void Load_Data(u8 index,u32 load_data)
{
if(device_type == AIR_CONDITION)
{
u8 temp = 0;
if(index == 0)
{
......@@ -550,14 +435,6 @@ static void Load_Data(u8 device_type,u8 index,u32 load_data)
}
else if(index == 3)
{
Oled_Display_Info.is_dispaly_cur_temp = load_data&0xff;
}
}
else if(device_type == FLOOR_HEATING)
{
u8 temp = 0;
if(index == 0)
{
temp = load_data&0xff;
if ((temp &0X80) == 0X80) //负数
......@@ -568,11 +445,11 @@ static void Load_Data(u8 device_type,u8 index,u32 load_data)
{
Oled_Display_Info.FLOOR_Device.correct_temperature = temp ;
}
Oled_Display_Info.binding_device = (load_data>>8)&0xff;
Oled_Display_Info.aging_test_flag = (load_data>>16)&0xff;
// Oled_Display_Info.binding_device = (load_data>>8)&0xff;
//
// Oled_Display_Info.aging_test_flag = (load_data>>16)&0xff;
}
else if(index == 1)
else if(index == 4)
{
Oled_Display_Info.FLOOR_Device.no_disturb_mode = load_data&0xff;
......@@ -580,15 +457,7 @@ static void Load_Data(u8 device_type,u8 index,u32 load_data)
Oled_Display_Info.FLOOR_Device.lock_flage = (load_data>>16)&0xff;
}
else if(index == 2)
{
Oled_Display_Info.is_dispaly_cur_temp = load_data&0xff;
}
}
else if(device_type == FAN)
{
u8 temp = 0;
if(index == 0)
else if(index == 5)
{
temp = load_data&0xff;
if ((temp &0X80) == 0X80) //负数
......@@ -599,25 +468,22 @@ static void Load_Data(u8 device_type,u8 index,u32 load_data)
{
Oled_Display_Info.FAN_Device.correct_temperature = temp ;
}
Oled_Display_Info.binding_device = (load_data>>8)&0xff;
Oled_Display_Info.aging_test_flag = (load_data>>16)&0xff;
// Oled_Display_Info.binding_device = (load_data>>8)&0xff;
//
// Oled_Display_Info.aging_test_flag = (load_data>>16)&0xff;
}
else if(index == 1)
else if(index == 6)
{
Oled_Display_Info.FAN_Device.filter_wash_time = (u16)load_data;
Oled_Display_Info.FAN_Device.screen_save_time = (load_data>>16)&0xff;
}
else if(index == 2)
else if(index == 7)
{
Oled_Display_Info.is_dispaly_cur_temp = load_data&0xff;
Oled_Display_Info.FAN_Device.no_disturb_mode = (load_data>>8)&0xff;
Oled_Display_Info.FAN_Device.lock_flage = (load_data>>16)&0xff;
}
}
}
///***********************************************************************
......@@ -643,7 +509,7 @@ static void Load_Data(u8 device_type,u8 index,u32 load_data)
if (save_flage == NO_FMC_WRITE) //未写数据
{
save_flage = 0;
if(!Save_Data(Oled_Display_Info.device_type,i,&save_flage))
if(!Save_Data(i,&save_flage))
FMC_Write(flash_addr,save_flage);
else
{
......@@ -688,8 +554,7 @@ void recover_current_state(void)
{
if ((save_flage & 0xFF000000) == SAVE_FLAGE )
{
Load_Data(Oled_Display_Info.device_type,i,save_flage);
//printf("##recover_current_state,index = %d,read data = 0x%4x\r\n",i,save_flage);
Load_Data(i,save_flage);
}
else
break;
......@@ -775,12 +640,12 @@ static void Spake_Control(void)
{
if(Spake_Count == 1)
{
PWM_ConfigOutputChannel(PWM, 0, 1000, 70);
PWM_ConfigOutputChannel(PWM, 0, 1300, 80);
//printf("##111spake_control_loop i = %d,ON\n",i);
}
if(Spake_Count == Spake_Continue_Time_ms)
{
PWM_ConfigOutputChannel(PWM, 0, 1000, 0);
PWM_ConfigOutputChannel(PWM, 0, 1300, 0);
Spake_Count = 0;
Spake_Flag = 0;
}
......@@ -788,11 +653,11 @@ static void Spake_Control(void)
else{
if((Spake_Count == 1)||(Spake_Count == (Spake_Continue_Time_ms+Spake_Interval_Time_ms) ))
{
PWM_ConfigOutputChannel(PWM, 0, 1000, 70);
PWM_ConfigOutputChannel(PWM, 0, 1300, 80);
}
if((Spake_Count == (2*Spake_Continue_Time_ms+Spake_Interval_Time_ms) ) ||( Spake_Count == Spake_Continue_Time_ms) )
{
PWM_ConfigOutputChannel(PWM, 0, 1000, 0);
PWM_ConfigOutputChannel(PWM, 0, 1300, 0);
if(Spake_Count == 2*Spake_Continue_Time_ms+Spake_Interval_Time_ms)
{
Spake_Count = 0;
......@@ -857,6 +722,13 @@ u8 Is_Fan_Speed_Display(void)
{
return (task_comps[5].task_switch == SWITCH_ON);
}
static void Recovery_Filter_Time_Error(void)
{
if(Oled_Display_Info.Air_Device.filter_wash_time == 0)
Oled_Display_Info.Air_Device.error = 3;
else if(Oled_Display_Info.FAN_Device.filter_wash_time == 0)
Oled_Display_Info.FAN_Device.error = 3;
}
/**************************************************************************************************/
/*上电延时回调处理
**************************************************************************************************/
......@@ -880,7 +752,11 @@ void setup_handler(void)
if(Oled_Display_Info.aging_test_flag == 0)
aging_test_start();
//判断是否处于滤网清洗时间为0,如果是则打开故障显示
Recovery_Filter_Time_Error();
//上电显示
Reload_Save_Time();
Detect_Human_Dispaly();
}
else if(count == 1){
......@@ -913,70 +789,31 @@ void setup_handler(void)
**************************************************************************************************/
void delay_operate_calibrate_temper_Task_Start(void)
{
task_comps[7].timer = task_comps[7].interval_time;
task_comps[7].task_switch = SWITCH_ON;
}
void delay_operate_calibrate_temper_Task_Stop(void)
{
task_comps[7].task_switch = SWITCH_OFF;
}
void delay_operate_calibrate_temper(void)
{
delay_operate_calibrate_temper_Task_Stop();
if(sKey_Operation[Oled_Display_Info.screen_page-1].operate_calibrate_temper)
{
sKey_Operation[Oled_Display_Info.screen_page-1].operate_calibrate_temper = 0;
PowerOff();
}
}
/**************************************************************************************************/
/*操作温度校准延时回调处理
**************************************************************************************************/
void delay_operate_delay_off_Task_Start(void)
{
task_comps[17].timer = task_comps[17].interval_time;
task_comps[17].task_switch = SWITCH_ON;
}
void delay_operate_delay_off_Task_Stop(void)
{
task_comps[17].task_switch = SWITCH_OFF;
}
void delay_operate_delay_off(void)
{
delay_operate_delay_off_Task_Stop();
if(sKey_Operation[Oled_Display_Info.screen_page-1].operate_delay_off_status)
{
sKey_Operation[Oled_Display_Info.screen_page-1].operate_delay_off_status = 0;
//超时,关闭
Delay_OFF_Rel_Display(0,0,0,0,0,0);
Oled_Display_whole();
}
}
/**************************************************************************************************/
/*操作温度校准确定后,延时2s关机处理
**************************************************************************************************/
void operate_calibrate_temper_delay_2s_off_Task_Start(void)
{
task_comps[8].task_switch = SWITCH_ON;
}
void operate_calibrate_temper_delay_2s_off_Task_Stop(void)
{
task_comps[8].task_switch = SWITCH_OFF;
}
u8 is_operate_calibrate_temper_delay_2s_off_Task_start(void)
{
return (task_comps[8].task_switch == SWITCH_ON);
return 0;
}
void operate_calibrate_temper_delay_2s_off(void)
{
u8 i = 0;
operate_calibrate_temper_delay_2s_off_Task_Stop();
for(i =0;i<3;i++)
{
if(sKey_Operation[i].operate_calibrate_temper)
sKey_Operation[i].operate_calibrate_temper = 0;
}
PowerOff();
}
/**************************************************************************************************/
/*中宏协议数据重传
......@@ -1185,7 +1022,6 @@ struct task_components_t task_comps[] =
#else
{16,SWITCH_OFF, RUN_FLAG_0, SET_FLAG_0, Sec_3,Sec_3, Tap_Status_Scan }, //阀门实时动态开关
#endif
{17, SWITCH_OFF, RUN_FLAG_0, SET_FLAG_0, Sec_15,Sec_15, delay_operate_delay_off }, //15s操作延时关机
};
u8 task_num = sizeof(task_comps)/sizeof(task_comps[0]);
......@@ -1421,12 +1257,6 @@ void Display_Status(void)
if((Oled_Display_Info.screen_page == (i+1))&&(Get_Display_Status()))
{
if(IsPowerOffFlashing())
{
Delay_Power_Off_Control(FLASHING,15000,500,dispaly_data);
sKey_Operation[i].record_adjust_delay_off = dispaly_data;
}
else
Display_poweroff_time(dispaly_data);
}
if ( (Oled_Display_Info.Air_Device.power_off_time <= 0 )&&(i == 0) )
......@@ -1468,18 +1298,12 @@ void Display_Status(void)
sKey_Operation[i].filter_calc.operate_delay_off_display_flag = 0;
if(i == 0)
{
if(Get_Display_Status())
{
Display_Up_Contend(AIR_CONDITION);
}
Display_Middle_Contend(AIR_CONDITION);
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1);
}
else if(i == 2)
{
if(Get_Display_Status())
{
Display_Up_Contend(FAN);
}
Display_Middle_Contend(FAN);
state_change_report(OPCODE_GENERAL_REPORT_STATUS,3);
}
......@@ -1581,6 +1405,8 @@ void TMR0_IRQHandler(void)
transparent_time_manage(1);
Delay_Report_Time_Decrease_Count(1);
if( guDelay_ms ) guDelay_ms--;
......@@ -1611,8 +1437,8 @@ void zero_check_init(void)
wind_open_time = 166; //6ms
wind_close_time = 166; //6ms
temp_open_time = 330;
temp_close_time = 500;
temp_open_time = 250;
temp_close_time = 200;
#endif
}
/*********************************************************************
......@@ -1768,7 +1594,7 @@ void Update_Dev_Info(u8 channel_id)
u8 i = 0;
if(channel_id == 1)
{
Device_status[i++] = 19; //长度
Device_status[i++] = 20; //长度
Device_status[i++] = Oled_Display_Info.Air_Device.error; //错误码
Device_status[i++] = Oled_Display_Info.Air_Device.on_off; //开关状态
......@@ -1800,6 +1626,7 @@ void Update_Dev_Info(u8 channel_id)
Device_status[i++] =Oled_Display_Info.Air_Device.no_disturb_mode; //勿扰模式
Device_status[i++] =Oled_Display_Info.Air_Device.air_product_id; //空调品牌
Device_status[i++] =Oled_Display_Info.Air_Device.air_type; //空调类型
Device_status[i++] =Oled_Display_Info.Air_Device.operation_mode; //空调模式(风机盘管运行模式,冷热分管,共管一类的)
}
else if(channel_id == 2)
{
......@@ -1965,6 +1792,7 @@ void transparent_data_analyze(PROTOCOL_DEAL recv_data)
Oled_Display_Info.binding_device |= (bind_ep<<2);
}
}
display_current_page();
arg_data[0] = 0;
}
else{ //解绑
......@@ -1992,8 +1820,9 @@ void transparent_data_analyze(PROTOCOL_DEAL recv_data)
{
Oled_Display_Info.screen_page = Oled_Display_Info.device_type;
//显示所有的界面
display_current_page();
BL55072A_Clear();
}
display_current_page();
arg_data[0] = 0;
}
save_data();
......@@ -2037,7 +1866,7 @@ void transparent_data_analyze(PROTOCOL_DEAL recv_data)
//清除本地绑定信息
if(recv_data.ARG[0] == 0)
{
if(Oled_Display_Info.binding_device != 0)
if(Oled_Display_Info.screen_page != Oled_Display_Info.device_type)
{
Oled_Display_Info.binding_device = 0; //清除绑定信息
......@@ -2067,7 +1896,7 @@ void transparent_data_analyze(PROTOCOL_DEAL recv_data)
{
BL55072A_Clear();
LCD_CONTROL(0);
Operate_Led_Button(Oled_Display_Info.device_type,0);
Operate_Led_Button(Oled_Display_Info.device_type,4);
Oled_Display_Info.recv_lcd_off = 5;
}
memset(arg_data,0,sizeof(arg_data));
......@@ -2260,7 +2089,50 @@ void transparent_data_analyze(PROTOCOL_DEAL recv_data)
}
}
}
/**********************************************************************************/
/* 延时上报相关功能函数 */
/**********************************************************************************/
#define DELAY_REPORT_TIME_MS 1000
typedef struct{
u16 delay_ms_time[3];
u8 start_delay_report_flag[3];
u8 start_report_flag[3];
}DELAY_REPORT_ST;
DELAY_REPORT_ST sDelay_Report = {0};
void Start_Delay_Report_Event(u8 channel)
{
sDelay_Report.delay_ms_time[channel-1] = DELAY_REPORT_TIME_MS;
sDelay_Report.start_delay_report_flag[channel-1] = 1;
}
void Delay_Report_Time_Decrease_Count(u8 time)
{
u8 i = 0;
for(i=0;i<3;i++)
{
if(sDelay_Report.start_delay_report_flag[i])
{
sDelay_Report.delay_ms_time[i]--;
if(sDelay_Report.delay_ms_time[i] == 0)
{
sDelay_Report.start_report_flag[i] = 1;
sDelay_Report.start_delay_report_flag[i] = 0;
}
}
}
}
void Delay_Report_Status(void)
{
u8 i =0;
for( i=0;i<3;i++)
{
if(sDelay_Report.start_report_flag[i])
{
sDelay_Report.start_report_flag[i] = 0;
state_change_report(OPCODE_GENERAL_REPORT_STATUS,i+1);
}
}
}
/////***********************************************************************
////* 函 数 名: not_transparent_data_analyze
////* 功能说明: 非透传数据解析
......@@ -2395,23 +2267,6 @@ static void network_state_machine(TP_uc8 recv_network_state)
break;
}
}
u8 Get_Channel_Id(u8 device_type)
{
u8 channel_id = 0;
switch(device_type)
{
case AIR_CONDITION:
channel_id = 1;
break;
case FLOOR_HEATING:
channel_id = 2;
break;
case FAN:
channel_id = 3;
break;
}
return channel_id;
}
void Print_Buff(u8 *data,u8 len)
{
u8 i= 0;
......
......@@ -7,11 +7,11 @@
extern Lcd_Status_Info_t LCDShowTemp_state_t;
#if DEVICE_TYPE_AIR_CONDITION
OLED_ALL_DSD Oled_Display_Info = { 1,0,1,0,0,0x11,0,0,0,0,{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},{1,0,0,0,260,0,3,0,5,0,2,1,0,0,3000,0,0xff,0xff,0},{1,0,0,0,260,0,2,0,DEV_TYPE,0,0,0},{1,0,0,0,0,2,1,0,0,0,3000,0}};
OLED_ALL_DSD Oled_Display_Info = { 1,0,1,0,0,0x20,0,0,0,{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},{0,0,0,0,260,0,3,0,5,0,2,1,0,0,3000,0,0xff,0xff,0},{0,0,0,0,260,0,2,0,DEV_TYPE,0,0,0},{0,0,0,0,0,2,1,0,0,0,3000,0}};
#elif DEVICE_TYPE_FLOOR_HEATING
OLED_ALL_DSD Oled_Display_Info = { 2,0,2,0,0,0x11,0,0,0,0,{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},{1,0,0,0,260,0,3,0,5,0,2,1,0,0,3000,0,0xff,0xff,0},{1,0,0,0,260,0,2,0,DEV_TYPE,0,0,0},{1,0,0,0,0,2,1,0,0,0,3000,0}};
OLED_ALL_DSD Oled_Display_Info = { 2,0,2,0,0,0x11,0,0,0,{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},{0,0,0,0,260,0,3,0,5,0,2,1,0,0,3000,0,0xff,0xff,0},{0,0,0,0,260,0,2,0,DEV_TYPE,0,0,0},{0,0,0,0,0,2,1,0,0,0,3000,0}};
#elif DEVICE_TYPE_FAN
OLED_ALL_DSD Oled_Display_Info = { 3,0,3,0,0,0x15,0,0,0,0,{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},{1,0,0,0,260,0,3,0,5,0,2,1,0,0,3000,0,0xff,0xff,0},{1,0,0,0,260,0,2,0,0,0,0,0},{1,0,0,0,0,2,1,0,0,0,3000,0}};
OLED_ALL_DSD Oled_Display_Info = { 3,0,3,0,0,0x20,0,0,0,{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},{0,0,0,0,260,0,3,0,5,0,2,1,0,0,3000,0,0xff,0xff,0},{0,0,0,0,260,0,2,0,0,0,0,0},{0,0,0,0,0,2,1,0,0,0,3000,0}};
#endif
Key_Operation_Status gKey_Press_Info = {0};
// .device_type = 1, //AIR_CONDITION
......@@ -22,7 +22,6 @@ Key_Operation_Status gKey_Press_Info = {0};
// .mcu_Version = 0x10;
// .zigbee_Version = 0;
// .binding_device = 0; //0 未绑定 1,绑定空调,2,地暖,3,绑定新风
// .is_dispaly_cur_temp = 0; //是否显示当前温度
// .Air_Device ={
// .onoff = 1,
// .power_off_time = 0,
......@@ -68,36 +67,22 @@ Key_Operation_Status gKey_Press_Info = {0};
// .no_disturb_mode = 0;
// }
//};
NET_INDICATOR g_NetOptIndicator[7] = {0,0,0,0,0,0,0} ;
NET_INDICATOR g_NetOptIndicator[8] = {0,0,0,0,0,0,0} ;
static u8 kLedIsBlinking(u8 led_id);
/*************************************************
显示延时关机时间
***************************************************/
void Display_poweroff_time(u8 display_time)
{
LCDShowTemp_state_t.LCD_place = DELAY_OFF_TIME_DISPLAY;
LCDShowTemp_state_t.LCD_state = ON;
LCDShowTemp_state_t.LCD_code_data = display_time;
LcdShowCTR(LCDShowTemp_state_t);
//显示闹钟
LCDShowTemp_state_t.LCD_place = SETTING_TIMER_DISPLAY;
LCDShowTemp_state_t.LCD_state = ON;
LcdShowCTR(LCDShowTemp_state_t);
//显示设定时长字符图标
LCDShowTemp_state_t.LCD_place = SETTING_TIMER_CHAR_DISPLAY;
LCDShowTemp_state_t.LCD_state = OFF;
LcdShowCTR(LCDShowTemp_state_t);
LCDShowTemp_state_t.LCD_place = UPPER_TEMPER_UNIT_DISPLAY;
LCDShowTemp_state_t.LCD_state = OFF;
LcdShowCTR(LCDShowTemp_state_t);
}
/*************************************************
显示当前温度
显示设置温度温度
***************************************************/
void Display_Current_Temper(s16 temper)
void Display_Set_Temper(s16 temper)
{
LCDShowTemp_state_t.LCD_place = DELAY_OFF_TIME_DISPLAY;
LCDShowTemp_state_t.LCD_state = ON;
......@@ -173,27 +158,27 @@ static void Display_Middle_Digtal(u8 control_bits,s16 data )
***************************************************/
void display_error(u8 error_value)
{
LCDShowTemp_state_t.LCD_place = SET_UPPER_DIGITRON_DISPLAY_01;
LCDShowTemp_state_t.LCD_place = SET_MIDDLE_DIGITRON_DISPLAY_01;
LCDShowTemp_state_t.LCD_code_data = 14; //E
LCDShowTemp_state_t.LCD_state = ON;
LcdShowCTR(LCDShowTemp_state_t);
LCDShowTemp_state_t.LCD_place = SET_UPPER_DIGITRON_DISPLAY_02;
LCDShowTemp_state_t.LCD_place = SET_MIDDLE_DIGITRON_DISPLAY_02;
LCDShowTemp_state_t.LCD_code_data = 17; //r
LCDShowTemp_state_t.LCD_state = ON;
LcdShowCTR(LCDShowTemp_state_t);
LCDShowTemp_state_t.LCD_place = SET_UPPER_DIGITRON_DISPLAY_03;
LCDShowTemp_state_t.LCD_place = SET_MIDDLE_DIGITRON_DISPLAY_03;
LCDShowTemp_state_t.LCD_code_data = error_value;
LCDShowTemp_state_t.LCD_state = ON;
LcdShowCTR(LCDShowTemp_state_t);
LCDShowTemp_state_t.LCD_place = UPPER_POINT_DISPLAY;
LCDShowTemp_state_t.LCD_place = MIDDLE_POINT_DISPLAY;
LCDShowTemp_state_t.LCD_code_data = 0;
LCDShowTemp_state_t.LCD_state = OFF;
LcdShowCTR(LCDShowTemp_state_t);
LCDShowTemp_state_t.LCD_place = UPPER_TEMPER_UNIT_DISPLAY;
LCDShowTemp_state_t.LCD_place = MIDDLE_TEMPER_UNIT_DISPLAY;
LCDShowTemp_state_t.LCD_code_data = 0;
LCDShowTemp_state_t.LCD_state = OFF;
LcdShowCTR(LCDShowTemp_state_t);
......@@ -203,29 +188,11 @@ void display_error(u8 error_value)
display_mode 0 代表正常模式;
1 代表风速模式
***************************************************/
void display_set_temp(u8 display_mode,s16 temp_value,u8 ararm_f)
void display_real_temper(s16 temp_value)
{
if(display_mode == 0)
{
Display_Middle_Digtal(0x07,temp_value);
}
else{
Display_Middle_Digtal(0x02,temp_value);
}
if (ararm_f)
{
LCDShowTemp_state_t.LCD_place = MIDDLE_POINT_DISPLAY;
LCDShowTemp_state_t.LCD_state = OFF;
LcdShowCTR(LCDShowTemp_state_t);
LCDShowTemp_state_t.LCD_place = MIDDLE_TEMPER_UNIT_DISPLAY; //温度单位
LCDShowTemp_state_t.LCD_state = OFF;
LcdShowCTR(LCDShowTemp_state_t);
Display_Middle_Digtal(0x07,temp_value);
}
else
{
LCDShowTemp_state_t.LCD_place = MIDDLE_POINT_DISPLAY;
LCDShowTemp_state_t.LCD_state = ON;
LcdShowCTR(LCDShowTemp_state_t);
......@@ -233,7 +200,6 @@ void display_set_temp(u8 display_mode,s16 temp_value,u8 ararm_f)
LCDShowTemp_state_t.LCD_place = MIDDLE_TEMPER_UNIT_DISPLAY; //温度单位
LCDShowTemp_state_t.LCD_state = ON;
LcdShowCTR(LCDShowTemp_state_t);
}
}
/*************************************************
......@@ -446,40 +412,204 @@ static void LED_ONOFF(u8 id,u8 onoff)
}
}
u8 Get_LED_OnOff_Status(u8 id)
{
if(id == 1)
return LED1;
else if(id == 2)
return LED2;
else if(id == 3)
return LED3;
else if(id == 4)
return LED4;
else if(id == 5)
return LED5;
else if(id == 6)
return LED6;
return 0xff;
}
void Control_LED_ON_OFF(u8 onoff_bits)
{
if(kLedIsBlinking(1) == 0)
((onoff_bits&0x01 ) ? (LED1 = 1):(LED1 = 0));
if(kLedIsBlinking(2) == 0)
(((onoff_bits>>1)&0x01) ? (LED2 = 1):(LED2 = 0));
if(kLedIsBlinking(3) == 0)
(((onoff_bits>>2)&0x01) ? (LED3 = 1):(LED3 = 0));
if(kLedIsBlinking(4) == 0)
(((onoff_bits>>3)&0x01) ? (LED4 = 1):(LED4 = 0));
if(kLedIsBlinking(5) == 0)
(((onoff_bits>>4)&0x01) ? (LED5 = 1):(LED5 = 0));
if(kLedIsBlinking(6) == 0)
(((onoff_bits>>5)&0x01) ? (LED6 = 1):(LED6 = 0));
}
void Operate_Led_Button(u8 device_type,u8 on_off)
/*
*para Type
1 童锁打开
2 正常显示
3 关
4 全关
*/
void Operate_Led_Button(u8 device_type,u8 Type)
{
if(device_type == FLOOR_HEATING)
{
if(on_off)
if((Type == 1)&&(Oled_Display_Info.FLOOR_Device.lock_flage))
Control_LED_ON_OFF(0x04);
else if(Type == 2)
{
if(Oled_Display_Info.aging_test_flag == 2)
Control_LED_ON_OFF(0x3D);
if(Oled_Display_Info.FLOOR_Device.lock_flage)
Control_LED_ON_OFF(0x04);
else if(Oled_Display_Info.aging_test_flag != 2)
Control_LED_ON_OFF(0x3F);
else
Control_LED_ON_OFF(0x35);
}
else if(Type == 3)
{
if(Oled_Display_Info.FLOOR_Device.lock_flage)
Control_LED_ON_OFF(0x04);
else if(Oled_Display_Info.aging_test_flag != 2)
Control_LED_ON_OFF(0x3F);
else
Control_LED_ON_OFF(0x01);
}
else if(Type == 4)
Control_LED_ON_OFF(0x00);
}
else if(device_type == AIR_CONDITION){
if((Type == 1)&&(Oled_Display_Info.Air_Device.lock_flage))
Control_LED_ON_OFF(0x04);
else if(Type == 2)
{
if(Oled_Display_Info.Air_Device.lock_flage)
Control_LED_ON_OFF(0x04);
else if(Oled_Display_Info.aging_test_flag != 2)
Control_LED_ON_OFF(0x3F);
else
Control_LED_ON_OFF(0x37);
}
else if(Type == 3)
{
if(Oled_Display_Info.Air_Device.lock_flage)
Control_LED_ON_OFF(0x04);
else if(Oled_Display_Info.aging_test_flag != 2)
Control_LED_ON_OFF(0x3F);
else
Control_LED_ON_OFF(0x01);
}
else if(Type == 4)
Control_LED_ON_OFF(0x00);
}
else{
if(on_off)
else if(device_type == FAN){
if((Type == 1)&&(Oled_Display_Info.FAN_Device.lock_flage))
Control_LED_ON_OFF(0x04);
else if(Type == 2)
{
if(Oled_Display_Info.FAN_Device.lock_flage)
Control_LED_ON_OFF(0x04);
else if(Oled_Display_Info.aging_test_flag != 2)
Control_LED_ON_OFF(0x3F);
else
Control_LED_ON_OFF(0x07);
}
else if(Type == 3)
{
if(Oled_Display_Info.aging_test_flag != 2)
Control_LED_ON_OFF(0x3F);
else if(Oled_Display_Info.FAN_Device.lock_flage)
Control_LED_ON_OFF(0x04);
else
Control_LED_ON_OFF(0x01);
}
else if(Type == 4)
Control_LED_ON_OFF(0x00);
}
//打开功能解锁键
if((Oled_Display_Info.binding_device != 0)&&(Type !=4)&&(!kLedIsBlinking(4)))
LED4 = 1;
}
void Auto_Led_Display(u8 screen_page)
{
if(IsLocalConfigMode())
return;
switch(screen_page)
{
case 1:
{
if((Oled_Display_Info.Air_Device.lock_flage))
{
if(Oled_Display_Info.binding_device == 0)
Control_LED_ON_OFF(0x04);
else
Control_LED_ON_OFF(0x0C);
return ;
}
if(Oled_Display_Info.aging_test_flag != 2)
{
Control_LED_ON_OFF(0x3F);
return ;
}
if(Oled_Display_Info.Air_Device.on_off)
{
Control_LED_ON_OFF(0x37);
}
else
Control_LED_ON_OFF(0x01);
break;
}
case 2:
{
if((Oled_Display_Info.FLOOR_Device.lock_flage))
{
if(Oled_Display_Info.binding_device == 0)
Control_LED_ON_OFF(0x04);
else
Control_LED_ON_OFF(0x0C);
return ;
}
if(Oled_Display_Info.aging_test_flag != 2)
{
Control_LED_ON_OFF(0x3F);
return ;
}
if(Oled_Display_Info.FLOOR_Device.on_off)
{
Control_LED_ON_OFF(0x35);
}
else
Control_LED_ON_OFF(0x01);
break;
}
case 3:
{
if((Oled_Display_Info.FAN_Device.lock_flage))
{
if(Oled_Display_Info.binding_device == 0)
Control_LED_ON_OFF(0x04);
else
Control_LED_ON_OFF(0x0C);
return ;
}
if(Oled_Display_Info.aging_test_flag != 2)
{
Control_LED_ON_OFF(0x3F);
return ;
}
if(Oled_Display_Info.FAN_Device.on_off)
{
Control_LED_ON_OFF(0x07);
}
else
Control_LED_ON_OFF(0x01);
}
break;
}
//打开功能解锁键
if(Oled_Display_Info.binding_device != 0)
LED4 = 1;
}
static void Device_Type_Display(u8 air,u8 floor,u8 fan)
{
LCDShowTemp_state_t.LCD_place = DEVICE_TYPE_AIRCONDITION_CHAR_DISPLAY; //“空调”字样显示
......@@ -499,23 +629,13 @@ static void Device_Type_Display(u8 air,u8 floor,u8 fan)
*********************************************/
void Display_Up_Contend(u8 device_type)
{
if(IsPowerOffFlashing())
return;
if(device_type == AIR_CONDITION)
{
//显示错误码,优先级低于延时关机,高于当前温度
if(Oled_Display_Info.Air_Device.power_off_time >0)
{
Display_poweroff_time(Oled_Display_Info.Air_Device.power_off_time);
}
else if((Oled_Display_Info.Air_Device.error)&&(Oled_Display_Info.Air_Device.power_off_time == 0))
{
display_error(Oled_Display_Info.Air_Device.error);
}
else if(Oled_Display_Info.is_dispaly_cur_temp)
{
Display_Current_Temper(Oled_Display_Info.Air_Device.real_temperature);
}
Display_Set_Temper(Oled_Display_Info.Air_Device.set_temperature);
}
else if(device_type == FLOOR_HEATING)
{
......@@ -523,14 +643,7 @@ void Display_Up_Contend(u8 device_type)
{
Display_poweroff_time(Oled_Display_Info.FLOOR_Device.power_off_time);
}
else if((Oled_Display_Info.FLOOR_Device.error)&&(Oled_Display_Info.FLOOR_Device.power_off_time == 0))
{
display_error(Oled_Display_Info.FLOOR_Device.error);
}
else if(Oled_Display_Info.is_dispaly_cur_temp)
{
Display_Current_Temper(Oled_Display_Info.FLOOR_Device.real_temperature);
}
Display_Set_Temper(Oled_Display_Info.FLOOR_Device.set_temperature);
}
else if(device_type == FAN)
{
......@@ -538,13 +651,35 @@ void Display_Up_Contend(u8 device_type)
{
Display_poweroff_time(Oled_Display_Info.FAN_Device.power_off_time);
}
else if((Oled_Display_Info.FAN_Device.error)&&(Oled_Display_Info.FAN_Device.power_off_time == 0))
}
}
void Display_Middle_Contend(u8 device_type)
{
if(device_type == AIR_CONDITION)
{
display_error(Oled_Display_Info.FAN_Device.error);
if(Oled_Display_Info.Air_Device.error){
display_error(Oled_Display_Info.Air_Device.error);
}
else if(Oled_Display_Info.is_dispaly_cur_temp)
else{
display_real_temper(Oled_Display_Info.Air_Device.real_temperature);
}
}
else if(device_type == FLOOR_HEATING)
{
Display_Current_Temper(Oled_Display_Info.FAN_Device.real_temperature);
if(Oled_Display_Info.FLOOR_Device.error){
display_error(Oled_Display_Info.FLOOR_Device.error);
}
else{
display_real_temper(Oled_Display_Info.FLOOR_Device.real_temperature);
}
}
else if(device_type == FAN)
{
if(Oled_Display_Info.FAN_Device.error){
display_error(Oled_Display_Info.FAN_Device.error);
}
else{
display_real_temper(Oled_Display_Info.FAN_Device.real_temperature);
}
}
}
......@@ -564,24 +699,32 @@ void Fan_Oled_Display()
*********************************************/
Displayt_System_Mode(Oled_Display_Info.FAN_Device.system_type);
/********************************************
显示当前温度
*********************************************/
Display_Middle_Contend(FAN);
//儿童锁图标
/*********************************************/
if(!IsLcdEnterScreenSave())
{
Operate_Led_Button(FAN,2); // 显示可操作的按键
LCDShowTemp_state_t.LCD_place = CHILD_LOCK_DISPLAY;
LCDShowTemp_state_t.LCD_state = Oled_Display_Info.FAN_Device.lock_flage;
LcdShowCTR(LCDShowTemp_state_t);
/********************************************
显示当前风速
显示延时关机
*********************************************/
if(!IsLcdEnterScreenSave())
display_set_temp(1,Oled_Display_Info.FAN_Device.wind_speed,1);
else
display_set_temp(0,Oled_Display_Info.FAN_Device.real_temperature,0); //显示当前温度
Display_Up_Contend(FAN);
/********************************************
显示延时关机、错误码、当前温度字符
显示当前风速
*********************************************/
if(!IsLcdEnterScreenSave())
Display_Up_Contend(FAN);
Fan_speed_and_direct_control(1,0);
display_wind_speed(Oled_Display_Info.FAN_Device.wind_speed,0);
}
/********************************************
ZigBee信号图标
*********************************************/
......@@ -604,15 +747,19 @@ void Floor_Heating_Oled_Display()
Device_Type_Display(0,1,0);
/********************************************
显示设置温度
显示当前温度
*********************************************/
display_set_temp(0,Oled_Display_Info.FLOOR_Device.set_temperature,0); //显示设置温度
Display_Middle_Contend(FLOOR_HEATING);
/********************************************
显示工作模式
*********************************************/
Displayt_System_Mode(Oled_Display_Info.FLOOR_Device.system_type);
if(!IsLcdEnterScreenSave())
{
Operate_Led_Button(FLOOR_HEATING,2); // 显示可操作的按键
//儿童锁图标
/*********************************************/
LCDShowTemp_state_t.LCD_place = CHILD_LOCK_DISPLAY;
......@@ -620,11 +767,10 @@ void Floor_Heating_Oled_Display()
LcdShowCTR(LCDShowTemp_state_t);
/********************************************
显示延时关机、错误码、当前温度字符
显示设置温度 ,延时关机
*********************************************/
if(!IsLcdEnterScreenSave())
Display_Up_Contend(FLOOR_HEATING);
}
/********************************************
ZigBee信号图标
*********************************************/
......@@ -645,16 +791,21 @@ void Air_Oled_Display(void)
显示“空调”字样
*********************************************/
Device_Type_Display(1,0,0);
//显示设置温度
/********************************************
显示设置温度
显示错误码、当前温度
*********************************************/
display_set_temp(0,Oled_Display_Info.Air_Device.set_temperature,0); //显示设置温度
Display_Middle_Contend(AIR_CONDITION);
/********************************************
显示工作模式
*********************************************/
Displayt_System_Mode(Oled_Display_Info.Air_Device.system_type);
if(!IsLcdEnterScreenSave())
{
Operate_Led_Button(AIR_CONDITION,2);
/********************************************
儿童锁图标
*********************************************/
......@@ -663,35 +814,33 @@ void Air_Oled_Display(void)
LcdShowCTR(LCDShowTemp_state_t);
/********************************************
显示延时关机、错误码、当前温度字符
显示设置温度 ,延时关机
*********************************************/
if(!IsLcdEnterScreenSave())
Display_Up_Contend(AIR_CONDITION);
/********************************************
ZigBee信号图标
*********************************************/
if (Oled_Display_Info.net_work_flage != OUT_LINE)
{
LCDShowTemp_state_t.LCD_place = ZIGBEE_NET_CAHR_DISPLAY;
LCDShowTemp_state_t.LCD_state = ON;
LcdShowCTR(LCDShowTemp_state_t);
}
/********************************************
显示主从模式
*********************************************/
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
if( Oled_Display_Info.Air_Device.air_master_slavery_mode)
{
//显示H图标
if(!IsLcdEnterScreenSave())
{
LCDShowTemp_state_t.LCD_place = H_CHAR_DISPLAY;
LCDShowTemp_state_t.LCD_state = ON;
LcdShowCTR(LCDShowTemp_state_t);
}
}
#endif
}
/********************************************
ZigBee信号图标
*********************************************/
if (Oled_Display_Info.net_work_flage != OUT_LINE)
{
LCDShowTemp_state_t.LCD_place = ZIGBEE_NET_CAHR_DISPLAY;
LCDShowTemp_state_t.LCD_state = ON;
LcdShowCTR(LCDShowTemp_state_t);
}
}
/*************************************************
开机显示选项
......@@ -718,6 +867,8 @@ void PowerOff(void)
BL55072A_Clear();
if(!IsLcdEnterScreenSave())
{
Operate_Led_Button(Oled_Display_Info.screen_page,3);
Device_Type_Display(1,0,0);
LCDShowTemp_state_t.LCD_place = CHILD_LOCK_DISPLAY;
......@@ -731,6 +882,8 @@ void PowerOff(void)
BL55072A_Clear();
if(!IsLcdEnterScreenSave())
{
Operate_Led_Button(Oled_Display_Info.screen_page,3);
Device_Type_Display(0,1,0);
LCDShowTemp_state_t.LCD_place = CHILD_LOCK_DISPLAY;
......@@ -744,6 +897,8 @@ void PowerOff(void)
BL55072A_Clear();
if(!IsLcdEnterScreenSave())
{
Operate_Led_Button(Oled_Display_Info.screen_page,3);
Device_Type_Display(0,0,1);
LCDShowTemp_state_t.LCD_place = CHILD_LOCK_DISPLAY;
......@@ -850,19 +1005,19 @@ void EnterScreenSaveMode(void)
{
case AIR_CONDITION:
{
Operate_Led_Button(AIR_CONDITION,4); // 显示可操作的按键
if((Oled_Display_Info.Air_Device.on_off)&&(Oled_Display_Info.Air_Device.no_disturb_mode == 0))
{
Operate_Led_Button(AIR_CONDITION,0); // 显示可操作的按键
/********************************************
显示“空调”字样
*********************************************/
Device_Type_Display(1,0,0);
/********************************************
显示设置温度
显示当前温度
*********************************************/
display_set_temp(0,Oled_Display_Info.Air_Device.set_temperature,0); //显示设置温度
Display_Middle_Contend(AIR_CONDITION);
/********************************************
显示工作模式
......@@ -878,7 +1033,6 @@ void EnterScreenSaveMode(void)
}
else{
Operation_LED(0); //全关led
LCD_CONTROL(0);
}
......@@ -886,19 +1040,19 @@ void EnterScreenSaveMode(void)
break;
case FLOOR_HEATING:
{
Operate_Led_Button(FLOOR_HEATING,4); // 显示可操作的按键
if((Oled_Display_Info.FLOOR_Device.on_off)&&(Oled_Display_Info.FLOOR_Device.no_disturb_mode == 0))
{
Operate_Led_Button(FLOOR_HEATING,0); // 显示可操作的按键
/********************************************
显示“地暖”字样
*********************************************/
Device_Type_Display(0,1,0);
/********************************************
显示设置温度
显示当前温度
*********************************************/
display_set_temp(0,Oled_Display_Info.FLOOR_Device.set_temperature,0); //显示设置温度
Display_Middle_Contend(FLOOR_HEATING);
/********************************************
显示工作模式
......@@ -914,17 +1068,16 @@ void EnterScreenSaveMode(void)
}
else{
Operation_LED(0); //全关led
LCD_CONTROL(0);
}
}
break;
case FAN:
{
Operate_Led_Button(FAN,4); // 显示可操作的按键
if((Oled_Display_Info.FAN_Device.on_off)&&(Oled_Display_Info.FAN_Device.no_disturb_mode == 0))
{
Operate_Led_Button(FAN,0); // 显示可操作的按键
/********************************************
显示“新风”字样
*********************************************/
......@@ -933,7 +1086,7 @@ void EnterScreenSaveMode(void)
/********************************************
显示设置温度
*********************************************/
display_set_temp(0,Oled_Display_Info.FAN_Device.real_temperature,0); //显示当前温度
Display_Middle_Contend(FAN);
/********************************************
显示工作模式
......@@ -949,7 +1102,7 @@ void EnterScreenSaveMode(void)
}
else{
Operation_LED(0); //全关led
LCD_CONTROL(0);
}
}
......@@ -966,10 +1119,7 @@ void Detect_Human_Dispaly(void)
if(Oled_Display_Info.screen_page == AIR_CONDITION)
{
if(Oled_Display_Info.Air_Device.on_off)
{
Operate_Led_Button(AIR_CONDITION,1); // 显示可操作的按键
Oled_Display_whole();
}
else{
if(sKey_Operation[0].operate_calibrate_temper == 0) //正在操作温度校准,不显示关机
PowerOff();
......@@ -978,10 +1128,7 @@ void Detect_Human_Dispaly(void)
else if(Oled_Display_Info.screen_page == FLOOR_HEATING)
{
if(Oled_Display_Info.FLOOR_Device.on_off)
{
Operate_Led_Button(FLOOR_HEATING,1);
Oled_Display_whole();
}
else{
if(sKey_Operation[1].operate_calibrate_temper == 0) //正在操作温度校准,不显示关机
PowerOff();
......@@ -990,10 +1137,7 @@ void Detect_Human_Dispaly(void)
else if(Oled_Display_Info.screen_page == FAN)
{
if(Oled_Display_Info.FAN_Device.on_off)
{
Operate_Led_Button(FAN,1);
Oled_Display_whole();
}
else{
if(sKey_Operation[2].operate_calibrate_temper == 0) //正在操作温度校准,不显示关机
PowerOff();
......@@ -1398,8 +1542,9 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
//通风模式下不可以调节设定温度
if((Oled_Display_Info.Air_Device.on_off)&&(Oled_Display_Info.Air_Device.system_type !=SYSTEM_MODE_AIR))
{
display_set_temp(0,set_temper,0);
Oled_Display_Info.Air_Device.set_temperature = set_temper;
if(!IsLcdEnterScreenSave())
Display_Set_Temper(set_temper);
arg[0] = 0;
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
......@@ -1419,11 +1564,9 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
if(Oled_Display_Info.Air_Device.on_off == 0)
return;
Oled_Display_Info.Air_Device.wind_speed = wind_speed;
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
if(Is_Fan_Speed_Display()&&(!IsLcdEnterScreenSave()))
{
if(Is_Fan_Speed_Display())
display_wind_speed(Oled_Display_Info.Air_Device.wind_speed,0); //显示当前风速
}
#if (DEV_TYPE == 0) &&(DEVICE_TYPE_AIR_CONDITION ==1)
delay_control_fan_speed_start();
#else
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态改变通知
......@@ -1431,14 +1574,6 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
arg[0] = 0;
}
break;
case OPCODE_GENERAL_ERROR_CODE:
{
u8 error_code = arg[0];
arg[1] = error_code;
Oled_Display_Info.Air_Device.error = error_code;
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态更新上报
}
break;
case OPCODE_GENERAL_SET_CHILD_LOCK:
{
u8 child_lock = arg[0];
......@@ -1446,7 +1581,16 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
Oled_Display_Info.Air_Device.lock_flage = child_lock;
if(!IsLcdEnterScreenSave())
{
if(child_lock)
Operate_Led_Button(AIR_CONDITION,1); // 只显示'M'按键
else if(Oled_Display_Info.Air_Device.on_off)
Operate_Led_Button(AIR_CONDITION,2);
else if(Oled_Display_Info.Air_Device.on_off == 0)
Operate_Led_Button(AIR_CONDITION,3);
display_child_lock(child_lock);
}
save_data(); //保存token
arg[0] = 0;
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态更新上报
......@@ -1479,7 +1623,10 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
}
if(delay_off_time >0)
{
Oled_Display_Info.Air_Device.power_off_flage = 1;
Reset_DelayOFF_timer(AIR_CONDITION);
}
else if(Oled_Display_Info.Air_Device.power_off_flage == 1)
Oled_Display_Info.Air_Device.power_off_flage = 0;
......@@ -1520,31 +1667,6 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
Oled_Display_Info.Air_Device.filter_wash_time = filter_wash_time;
save_data(); //保存token
arg[0] = 0;
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态更新上报
}
break;
case OPCODE_GENERAL_CURRENT_REAL_TEMPER: //不处理当前的温度
{
// u16 filter_wash_time = arg[0] <<8 | arg[1] ;
// arg[1] = filter_wash_time>>8;
// arg[2] = filter_wash_time&0xff;
//
// Oled_Display_Info.Air_Device.filter_wash_time = filter_wash_time;
// arg[0] = 0;
// printf("filter_wash_time = %d\r\n",Oled_Display_Info.Air_Device.filter_wash_time);
}
break;
case OPCODE_GENERAL_SET_TEMPER_CALIBRATION: //温度校准
{
s8 calibration_temp = arg[0] ;
arg[1] = calibration_temp;
Oled_Display_Info.Air_Device.real_temperature = Oled_Display_Info.Air_Device.real_temperature -Oled_Display_Info.Air_Device.correct_temperature + calibration_temp;
Oled_Display_Info.Air_Device.correct_temperature = calibration_temp;
save_data(); //保存token
arg[0] = 0;
state_change_report(OPCODE_GENERAL_REPORT_STATUS,1); //状态更新上报
}
......@@ -1592,7 +1714,6 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
if(Oled_Display_Info.FLOOR_Device.on_off == 0)
{
Control_OnOff_handler(FLOOR_HEATING,1); //控制阀门关闭
state_change_report(OPCODE_GENERAL_REPORT_STATUS,2);
}
}
......@@ -1601,9 +1722,7 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
if(Oled_Display_Info.FLOOR_Device.on_off == 1)
{
Control_OnOff_handler(FLOOR_HEATING,0); //控制阀门关闭
state_change_report(OPCODE_GENERAL_REPORT_STATUS,2);
}
}
arg[0] = 0;
......@@ -1631,7 +1750,7 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
if(Oled_Display_Info.FLOOR_Device.system_type == SYSTEM_MODE_AUTO)
{
Oled_Display_Info.FLOOR_Device.set_temperature = 260;
display_set_temp(0,Oled_Display_Info.FLOOR_Device.set_temperature,0);
Display_Set_Temper(Oled_Display_Info.FLOOR_Device.set_temperature);
}
state_change_report(OPCODE_GENERAL_REPORT_STATUS,2);
arg[0] = 0;
......@@ -1658,7 +1777,8 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
}
if( (Oled_Display_Info.FLOOR_Device.on_off)&&(Oled_Display_Info.FLOOR_Device.system_type == SYSTEM_MODE_MANUAL) )
{
display_set_temp(0,set_temper,0);
if(!IsLcdEnterScreenSave())
Display_Set_Temper(set_temper);
Oled_Display_Info.FLOOR_Device.set_temperature = set_temper;
state_change_report(OPCODE_GENERAL_REPORT_STATUS,2);
......@@ -1668,16 +1788,6 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
arg[0] = 0xff;
}
break;
case OPCODE_GENERAL_ERROR_CODE:
{
u8 error_code = arg[0];
arg[1] = error_code;
arg[0] = 0;
Oled_Display_Info.FLOOR_Device.error = error_code;
state_change_report(OPCODE_GENERAL_REPORT_STATUS,2);
}
break;
case OPCODE_GENERAL_SET_CHILD_LOCK:
{
u8 child_lock = arg[0];
......@@ -1685,7 +1795,15 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
Oled_Display_Info.FLOOR_Device.lock_flage = child_lock;
if(!IsLcdEnterScreenSave())
{
if(child_lock)
Operate_Led_Button(FLOOR_HEATING,1); // 只显示'M'按键
else if(Oled_Display_Info.FLOOR_Device.on_off)
Operate_Led_Button(FLOOR_HEATING,2);
else if(Oled_Display_Info.FLOOR_Device.on_off == 0)
Operate_Led_Button(FLOOR_HEATING,3);
display_child_lock(child_lock);
}
state_change_report(OPCODE_GENERAL_REPORT_STATUS,2);
save_data(); //保存token
......@@ -1719,7 +1837,10 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
}
if(delay_off_time >0)
{
Oled_Display_Info.FLOOR_Device.power_off_flage = 1;
Reset_DelayOFF_timer(FLOOR_HEATING);
}
else if(Oled_Display_Info.FLOOR_Device.power_off_flage == 1)
Oled_Display_Info.FLOOR_Device.power_off_flage = 0;
......@@ -1738,31 +1859,6 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
state_change_report(OPCODE_GENERAL_REPORT_STATUS,2);
save_data(); //保存token
arg[0] = 0;
}
break;
case OPCODE_GENERAL_CURRENT_REAL_TEMPER: //不处理当前的温度
{
// u16 filter_wash_time = arg[0] <<8 | arg[1] ;
// arg[1] = filter_wash_time>>8;
// arg[2] = filter_wash_time&0xff;
//
// Oled_Display_Info.Air_Device.filter_wash_time = filter_wash_time;
// arg[0] = 0;
// printf("filter_wash_time = %d\r\n",Oled_Display_Info.Air_Device.filter_wash_time);
}
break;
case OPCODE_GENERAL_SET_TEMPER_CALIBRATION: //温度校准
{
s8 calibration_temp = arg[0] ;
arg[1] = calibration_temp;
Oled_Display_Info.FLOOR_Device.real_temperature = Oled_Display_Info.FLOOR_Device.real_temperature -Oled_Display_Info.FLOOR_Device.correct_temperature + calibration_temp;
Oled_Display_Info.FLOOR_Device.correct_temperature = calibration_temp;
state_change_report(OPCODE_GENERAL_REPORT_STATUS,2);
save_data(); //保存token
arg[0] = 0;
}
break;
......@@ -1876,22 +1972,13 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
Fan_Speed_Control(wind_speed);
#endif
if(Get_Display_Status())
display_set_temp(1,Oled_Display_Info.FAN_Device.wind_speed,1);
display_wind_speed(Oled_Display_Info.FAN_Device.wind_speed,0);
state_change_report(OPCODE_GENERAL_REPORT_STATUS,3);
arg[0] = 0;
}
else
arg[0] = 0xff;
arg[0] = 0;
}
break;
case OPCODE_GENERAL_ERROR_CODE:
{
u8 error_code = arg[0];
arg[1] = error_code;
Oled_Display_Info.FAN_Device.error = error_code;
state_change_report(OPCODE_GENERAL_REPORT_STATUS,3);
}
break;
case OPCODE_GENERAL_SET_CHILD_LOCK:
......@@ -1909,7 +1996,15 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
}
Oled_Display_Info.FAN_Device.lock_flage = child_lock;
if(!IsLcdEnterScreenSave())
{
if(child_lock)
Operate_Led_Button(FAN,1); // 只显示'M'按键
else if(Oled_Display_Info.FAN_Device.on_off)
Operate_Led_Button(FAN,2);
else if(Oled_Display_Info.FAN_Device.on_off == 0)
Operate_Led_Button(FAN,3);
display_child_lock(child_lock);
}
save_data(); //保存token
state_change_report(OPCODE_GENERAL_REPORT_STATUS,3);
arg[0] = 0;
......@@ -1941,7 +2036,10 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
}
if(delay_off_time >0)
{
Oled_Display_Info.FAN_Device.power_off_flage = 1;
Reset_DelayOFF_timer(FAN);
}
else if(Oled_Display_Info.FAN_Device.power_off_flage == 1)
Oled_Display_Info.FAN_Device.power_off_flage = 0;
state_change_report(OPCODE_GENERAL_REPORT_STATUS,3);
......@@ -1971,30 +2069,6 @@ void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len)
state_change_report(OPCODE_GENERAL_REPORT_STATUS,3);
save_data(); //保存token
arg[0] = 0;
}
break;
case OPCODE_GENERAL_CURRENT_REAL_TEMPER: //不处理当前的温度
{
// u16 filter_wash_time = arg[0] <<8 | arg[1] ;
// arg[1] = filter_wash_time>>8;
// arg[2] = filter_wash_time&0xff;
//
// Oled_Display_Info.Air_Device.filter_wash_time = filter_wash_time;
// arg[0] = 0;
}
break;
case OPCODE_GENERAL_SET_TEMPER_CALIBRATION: //温度校准
{
s8 calibration_temp = arg[0] ;
arg[1] = calibration_temp;
Oled_Display_Info.FAN_Device.real_temperature = Oled_Display_Info.FAN_Device.real_temperature -Oled_Display_Info.FAN_Device.correct_temperature + calibration_temp;
Oled_Display_Info.FAN_Device.correct_temperature = calibration_temp;
save_data(); //保存token
state_change_report(OPCODE_GENERAL_REPORT_STATUS,3);
arg[0] = 0;
}
break;
......@@ -2072,12 +2146,13 @@ u8 Key_Operate_Config_Operation(u8 keyid,u8 keyEvent)
{
return 0;
}
if((local_config_operate.enter_config_mode == 0)&&(keyid == 4)&&(keyEvent == 0xb0))
if((local_config_operate.enter_config_mode == 0)&&(keyid == 3)&&(keyEvent == 0xb0))
{
//进入配置模式
local_config_operate.enter_config_mode = 1;
local_config_operate.config_page = 1;
local_config_operate.config_page1_func_value = local_config_operate.support_function_list[index];
Control_LED_ON_OFF(0x35);
}
if(local_config_operate.enter_config_mode == 0)
{
......@@ -2102,11 +2177,12 @@ u8 Key_Operate_Config_Operation(u8 keyid,u8 keyEvent)
}
break;
#endif
case LOCAL_FUNC_CALIBRATE_TEMPER:
break;
case LOCAL_FUNC_IS_DISPLAY_CURRENT_TEMPER:
break;
case LOCAL_FUNC_CALIBRATE_TEMPER:
{
local_config_operate.config_page2_value = Oled_Display_Info.is_dispaly_cur_temp;
sKey_Operation[0].operate_calibrate_temp = Oled_Display_Info.Air_Device.correct_temperature;
local_config_operate.config_page2_value = Oled_Display_Info.Air_Device.real_temperature;
}
break;
case LOCAL_FUNC_SCREEN_SAVING_TIME:
......@@ -2127,27 +2203,22 @@ u8 Key_Operate_Config_Operation(u8 keyid,u8 keyEvent)
if(Oled_Display_Info.net_work_flage != OUT_LINE)
Send_Device_Data(0,_OPCODE_SET_NET_STATE,&data,1);
//token 值恢复默认
Oled_Display_Info.is_dispaly_cur_temp = 0;
Oled_Display_Info.binding_device = 0;
#if DEVICE_TYPE_AIR_CONDITION
Oled_Display_Info.Air_Device.filter_wash_time = 3000;
Oled_Display_Info.Air_Device.lock_flage = 0;
Oled_Display_Info.Air_Device.no_disturb_mode = 0;
Oled_Display_Info.Air_Device.correct_temperature = 0;
Oled_Display_Info.Air_Device.screen_save_time = 0;
Oled_Display_Info.Air_Device.operation_mode = 0;
#elif DEVICE_TYPE_FLOOR_HEATING
Oled_Display_Info.FLOOR_Device.lock_flage = 0;
Oled_Display_Info.FLOOR_Device.no_disturb_mode = 0;
Oled_Display_Info.FLOOR_Device.correct_temperature = 0;
Oled_Display_Info.FLOOR_Device.screen_save_time = 0;
#elif DEVICE_TYPE_FAN
Oled_Display_Info.FAN_Device.filter_wash_time = 3000;
Oled_Display_Info.FAN_Device.lock_flage = 0;
Oled_Display_Info.FAN_Device.no_disturb_mode = 0;
Oled_Display_Info.FAN_Device.correct_temperature = 0;
Oled_Display_Info.FAN_Device.screen_save_time = 0;
#endif
save_data();
local_config_operate.enter_config_mode = 0;
Control_OnOff_handler(Oled_Display_Info.device_type,0); //显示关
......@@ -2166,12 +2237,21 @@ u8 Key_Operate_Config_Operation(u8 keyid,u8 keyEvent)
}
break;
#endif
case LOCAL_FUNC_CALIBRATE_TEMPER:
break;
case LOCAL_FUNC_IS_DISPLAY_CURRENT_TEMPER:
break;
case LOCAL_FUNC_CALIBRATE_TEMPER:
{
Oled_Display_Info.is_dispaly_cur_temp = local_config_operate.config_page2_value;
save_data();
Oled_Display_Info.Air_Device.real_temperature = Oled_Display_Info.Air_Device.real_temperature - Oled_Display_Info.Air_Device.correct_temperature + sKey_Operation[0].operate_calibrate_temp;
Oled_Display_Info.Air_Device.correct_temperature = sKey_Operation[0].operate_calibrate_temp;
Oled_Display_Info.FLOOR_Device.real_temperature = Oled_Display_Info.Air_Device.real_temperature ;
Oled_Display_Info.FLOOR_Device.correct_temperature = Oled_Display_Info.Air_Device.correct_temperature;
Oled_Display_Info.FAN_Device.real_temperature = Oled_Display_Info.Air_Device.real_temperature ;
Oled_Display_Info.FAN_Device.correct_temperature = Oled_Display_Info.Air_Device.correct_temperature;
save_data(); //保存token
state_change_report(OPCODE_GENERAL_REPORT_STATUS,3); //状态更新上报
local_config_operate.enter_config_mode = 0;
Control_OnOff_handler(Oled_Display_Info.device_type,0); //显示关
}
break;
case LOCAL_FUNC_SCREEN_SAVING_TIME:
......@@ -2187,13 +2267,13 @@ u8 Key_Operate_Config_Operation(u8 keyid,u8 keyEvent)
}
break;
}
case 2: case 3: //打断
case 2: case 4: //打断
{
local_config_operate.enter_config_mode = 0;
Control_OnOff_handler(Oled_Display_Info.device_type,0); //显示关
// local_config_operate.enter_config_mode = 0;
// Control_OnOff_handler(Oled_Display_Info.device_type,0); //显示关
return 1;
}
case 4: //返回上一步
case 3: //返回上一步
{
if((local_config_operate.config_page == 2)&&(keyEvent == 0x80))
{
......@@ -2271,14 +2351,21 @@ u8 Key_Operate_Config_Operation(u8 keyid,u8 keyEvent)
}
break;
#endif
case LOCAL_FUNC_CALIBRATE_TEMPER:
break;
case LOCAL_FUNC_IS_DISPLAY_CURRENT_TEMPER:
break;
case LOCAL_FUNC_CALIBRATE_TEMPER:
{
if(local_config_operate.config_page2_value == 1)
local_config_operate.config_page2_value = 0;
if(keyid == 5)
{
if(sKey_Operation[0].operate_calibrate_temp< 90)
sKey_Operation[0].operate_calibrate_temp +=5;
}
else
local_config_operate.config_page2_value = 1;
{
if(sKey_Operation[0].operate_calibrate_temp> -90)
sKey_Operation[0].operate_calibrate_temp -=5;
}
local_config_operate.config_page2_value = Oled_Display_Info.Air_Device.real_temperature -Oled_Display_Info.Air_Device.correct_temperature + sKey_Operation[0].operate_calibrate_temp;
}
break;
case LOCAL_FUNC_SCREEN_SAVING_TIME:
......@@ -2297,9 +2384,33 @@ u8 Key_Operate_Config_Operation(u8 keyid,u8 keyEvent)
}
//显示当前界面
if(local_config_operate.config_page == 1)
{
LCDShowTemp_state_t.LCD_place = MIDDLE_POINT_DISPLAY;
LCDShowTemp_state_t.LCD_state = OFF;
LcdShowCTR(LCDShowTemp_state_t);
LCDShowTemp_state_t.LCD_place = MIDDLE_TEMPER_UNIT_DISPLAY; //温度单位
LCDShowTemp_state_t.LCD_state = OFF;
LcdShowCTR(LCDShowTemp_state_t);
Display_Middle_Digtal(0X07,local_config_operate.config_page1_func_value);
}
else if(local_config_operate.config_page == 2)
{
if(local_config_operate.config_page2_value <4 )
{
LCDShowTemp_state_t.LCD_place = MIDDLE_POINT_DISPLAY;
LCDShowTemp_state_t.LCD_state = OFF;
LcdShowCTR(LCDShowTemp_state_t);
LCDShowTemp_state_t.LCD_place = MIDDLE_TEMPER_UNIT_DISPLAY; //温度单位
LCDShowTemp_state_t.LCD_state = OFF;
LcdShowCTR(LCDShowTemp_state_t);
Display_Middle_Digtal(0X03,local_config_operate.config_page2_value);
}
else
display_real_temper(local_config_operate.config_page2_value);
}
return 1;
}
u16 gSetNetScanTime = 20;
......@@ -2327,7 +2438,7 @@ u8 kNetIndicatorIsBlinking(void)
{
return (g_NetOptIndicator[0].blink_cnt>0);
}
u8 kLedIsBlinking(u8 led_id)
static u8 kLedIsBlinking(u8 led_id)
{
return (g_NetOptIndicator[led_id].blink_cnt>0);
}
......
......@@ -195,7 +195,7 @@ u8 Usart_recive_deal(TP_uc8 *data, TP_uc8 len )
{
BL55072A_Clear(); //息屏
LCD_CONTROL(0);
Operate_Led_Button(Oled_Display_Info.device_type,0);
Operate_Led_Button(Oled_Display_Info.device_type,4);
arg_data[0] = 0;
arg_data[1] = 0;
Oled_Display_Info.recv_lcd_off = 0x85;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment