diff --git a/Project/A31G12x_Co2_Sensor_Logger.uvguix.Imbis b/Project/A31G12x_Co2_Sensor_Logger.uvguix.Imbis
index 96481b9..7f76000 100644
--- a/Project/A31G12x_Co2_Sensor_Logger.uvguix.Imbis
+++ b/Project/A31G12x_Co2_Sensor_Logger.uvguix.Imbis
@@ -110,8 +110,8 @@
0
- 495
- 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000300000002000000010000004D443A5C576F726B696E675C4769745F436C6F6E655C535F436F325F53656E736F725F4C6F676765725C50726F6A6563745C4170706C69636174696F6E5C616374696F6E5F70726F636573732E680000000010616374696F6E5F70726F636573732E6800000000C5D4F200FFFFFFFF4D443A5C576F726B696E675C4769745F436C6F6E655C535F436F325F53656E736F725F4C6F676765725C50726F6A6563745C4170706C69636174696F6E5C616374696F6E5F70726F636573732E630000000010616374696F6E5F70726F636573732E6300000000FFDC7800FFFFFFFF48443A5C576F726B696E675C4769745F436C6F6E655C535F436F325F53656E736F725F4C6F676765725C50726F6A6563745C4170706C69636174696F6E5C736176655F66696C652E63000000000B736176655F66696C652E6300000000BECEA100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000004401000066000000000A00002F020000
+ 935
+ 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000700000002000000010000004D443A5C576F726B696E675C4769745F436C6F6E655C535F436F325F53656E736F725F4C6F676765725C50726F6A6563745C4170706C69636174696F6E5C616374696F6E5F70726F636573732E680000000010616374696F6E5F70726F636573732E6800000000C5D4F200FFFFFFFF4D443A5C576F726B696E675C4769745F436C6F6E655C535F436F325F53656E736F725F4C6F676765725C50726F6A6563745C4170706C69636174696F6E5C616374696F6E5F70726F636573732E630000000010616374696F6E5F70726F636573732E6300000000FFDC7800FFFFFFFF48443A5C576F726B696E675C4769745F436C6F6E655C535F436F325F53656E736F725F4C6F676765725C50726F6A6563745C4170706C69636174696F6E5C736176655F66696C652E63000000000B736176655F66696C652E6300000000BECEA100FFFFFFFF43443A5C576F726B696E675C4769745F436C6F6E655C535F436F325F53656E736F725F4C6F676765725C50726F6A6563745C4170706C69636174696F6E5C6D61696E2E6300000000066D61696E2E6300000000F0A0A100FFFFFFFF4A443A5C576F726B696E675C4769745F436C6F6E655C535F436F325F53656E736F725F4C6F676765725C50726F6A6563745C4170706C69636174696F6E5C6770696F5F7377697463682E63000000000D6770696F5F7377697463682E6300000000BCA8E100FFFFFFFF46443A5C576F726B696E675C4769745F436C6F6E655C535F436F325F53656E736F725F4C6F676765725C50726F6A6563745C4170706C69636174696F6E5C74696D657231322E63000000000974696D657231322E63000000009CC1B600FFFFFFFF5F443A5C576F726B696E675C4769745F436C6F6E655C535F436F325F53656E736F725F4C6F676765725C50726F6A6563745C4170706C69636174696F6E5C6472697665725F6473333233315F696E746572666163655F74656D706C6174652E6300000000226472697665725F6473333233315F696E746572666163655F74656D706C6174652E6300000000F7B88600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000004401000066000000000A00002F020000
@@ -134,7 +134,7 @@
16
- 70000000870000002804000018010000
+ 440100006600000070070000F7000000
@@ -190,7 +190,7 @@
0
16
- 000000003402000070070000C5020000
+ 03000000370200006D070000AC020000
16
@@ -210,7 +210,7 @@
0
16
- 03000000370200006D07000098020000
+ 03000000370200006D070000AC020000
16
@@ -230,7 +230,7 @@
0
16
- 03000000370200006D07000098020000
+ 03000000370200006D070000AC020000
16
@@ -250,7 +250,7 @@
0
16
- 03000000370200006D07000098020000
+ 03000000370200006D070000AC020000
16
@@ -270,7 +270,7 @@
0
16
- 33060000660000006D07000003010000
+ 33060000660000006D07000017020000
16
@@ -330,7 +330,7 @@
0
16
- 03000000370200006D07000098020000
+ 03000000370200006D070000AC020000
16
@@ -350,7 +350,7 @@
0
16
- 03000000370200006D07000098020000
+ 03000000370200006D070000AC020000
16
@@ -370,7 +370,7 @@
0
16
- 03000000370200006D07000098020000
+ 03000000370200006D070000AC020000
16
@@ -390,7 +390,7 @@
0
16
- 03000000370200006D07000098020000
+ 03000000370200006D070000AC020000
16
@@ -410,7 +410,7 @@
0
16
- 03000000370200006D07000098020000
+ 03000000370200006D070000AC020000
16
@@ -430,7 +430,7 @@
0
16
- 03000000370200006D07000098020000
+ 03000000370200006D070000AC020000
16
@@ -530,7 +530,7 @@
0
16
- 03000000330200006D07000094020000
+ 0300000033020000FD090000D7030000
16
@@ -550,7 +550,7 @@
0
16
- 440100006300000070070000E0000000
+ 47010000660000006D070000C7000000
16
@@ -610,7 +610,7 @@
0
16
- 30060000630000007007000030020000
+ 33060000660000006D07000017020000
16
@@ -630,7 +630,7 @@
0
16
- 000000003402000070070000B1020000
+ 03000000370200006D070000AC020000
16
@@ -690,7 +690,7 @@
0
16
- 440100006300000070070000E0000000
+ 47010000660000006D070000C7000000
16
@@ -730,7 +730,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -750,7 +750,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -770,7 +770,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -790,7 +790,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -810,7 +810,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -830,7 +830,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -850,7 +850,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -870,7 +870,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -890,7 +890,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -910,7 +910,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -930,7 +930,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -950,7 +950,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -970,7 +970,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -990,7 +990,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1010,7 +1010,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1030,7 +1030,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1050,7 +1050,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1070,7 +1070,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1090,7 +1090,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1110,7 +1110,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1130,7 +1130,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1150,7 +1150,7 @@
0
16
- 03000000660000003D010000AC020000
+ 03000000660000003D010000FF010000
16
@@ -1170,7 +1170,7 @@
0
16
- 000000003002000070070000AD020000
+ 0300000033020000FD090000D7030000
16
@@ -1190,7 +1190,7 @@
0
16
- 03000000330200006D07000094020000
+ 0300000033020000FD090000D7030000
16
@@ -1210,7 +1210,7 @@
0
16
- 03000000370200006D07000098020000
+ 03000000370200006D070000AC020000
16
@@ -1230,7 +1230,7 @@
0
16
- 03000000370200006D07000098020000
+ 03000000370200006D070000AC020000
16
@@ -1250,7 +1250,7 @@
0
16
- 03000000330200006D07000094020000
+ 0300000033020000FD090000D7030000
16
@@ -1270,7 +1270,7 @@
0
16
- 03000000330200006D07000094020000
+ 0300000033020000FD090000D7030000
16
@@ -1310,7 +1310,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1330,7 +1330,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1350,7 +1350,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1370,7 +1370,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1390,7 +1390,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1410,7 +1410,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1430,7 +1430,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1450,7 +1450,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1470,7 +1470,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1490,7 +1490,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1510,7 +1510,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1530,7 +1530,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1550,7 +1550,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1570,7 +1570,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1590,7 +1590,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1610,7 +1610,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1630,7 +1630,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1650,7 +1650,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1670,7 +1670,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1690,7 +1690,7 @@
0
16
- 33060000660000006D07000082010000
+ 33060000660000006D07000017020000
16
@@ -1704,7 +1704,7 @@
0
0
0
- 32767
+ 966
0
8192
0
@@ -1744,7 +1744,7 @@
0
0
0
- 32767
+ 476
0
8192
1
@@ -1764,7 +1764,7 @@
0
0
0
- 32767
+ 612
0
8192
2
@@ -1790,7 +1790,7 @@
0
16
- 03000000370200006D07000098020000
+ 03000000370200006D070000AC020000
16
@@ -1799,14 +1799,14 @@
3312
- 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF44010000E000000070070000E4000000000000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E65002000000000000070000000870000002804000018010000440100004F00000070070000E00000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF2C0600004F0000003006000030020000000000000200001004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000007000000087000000B001000054010000300600004F000000700700003002000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF400100004F0000004401000018020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000007000000087000000B001000054010000000000004F00000040010000180200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF000000001C020000700700002002000000000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000800000000000007000000087000000B001000054010000000000002002000070070000C502000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFB803000020020000BC030000C502000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000018020000000A00001C02000001000000010000100400000001000000F9FCFFFF8F000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000070000000870000002804000018010000000000001C020000000A0000F00300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000
+ 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF44010000E000000070070000E4000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000440100006600000070070000F7000000440100004F00000070070000E00000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF2C0600004F0000003006000030020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C300000180004000000000000030060000660000007007000047020000300600004F000000700700003002000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF400100004F0000004401000018020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000400100002F020000000000004F00000040010000180200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF000000001C020000700700002002000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003702000070070000DC020000000000002002000070070000C502000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFB803000020020000BC030000C502000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000018020000000A00001C02000001000000010000100400000001000000F9FCFFFF8F000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000000000000033020000000A000007040000000000001C020000000A0000F00300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000
59392
File
2978
- 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000001973656E736972696F6E5F693263305F77726974655F64617461960000000000000014001973656E736972696F6E5F693263305F77726974655F646174611E436F6E74726F6C5F496E666F2E69734D6F6462757344617461577269746507636F6E74726F6C1A626F6F74556172745F496E746572727570745F48616E646C657204707573680E75735469636B436F756E7444697605766F696420046469736B09665F756E6D6F756E7407665F6D6F756E740B54696D655365745F4461790C73636434785F7365745F74652173636434785F693263325F726561645F6D6561737572656D656E745F7469636B730E73636434785F726561645F6D65610C73636434785F6765745F74650E696E7431365F742073636434785F07696E7431365F741373656E736972696F6E5F6932635F77726974651F73656E736972696F6E5F6932635F726561645F646174615F696E706C6163652073656E736972696F6E5F693263325F726561645F646174615F696E706C6163650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000000000000010000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65FF7F0000
+ 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000001973656E736972696F6E5F693263305F77726974655F64617461960000000000000014001973656E736972696F6E5F693263305F77726974655F646174611E436F6E74726F6C5F496E666F2E69734D6F6462757344617461577269746507636F6E74726F6C1A626F6F74556172745F496E746572727570745F48616E646C657204707573680E75735469636B436F756E7444697605766F696420046469736B09665F756E6D6F756E7407665F6D6F756E740B54696D655365745F4461790C73636434785F7365745F74652173636434785F693263325F726561645F6D6561737572656D656E745F7469636B730E73636434785F726561645F6D65610C73636434785F6765745F74650E696E7431365F742073636434785F07696E7431365F741373656E736972696F6E5F6932635F77726974651F73656E736972696F6E5F6932635F726561645F646174615F696E706C6163652073656E736972696F6E5F693263325F726561645F646174615F696E706C6163650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
1423
@@ -1822,7 +1822,7 @@
Build
998
- 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000013535F436F325F53656E736F725F4C6F676765729600000000000000010013535F436F325F53656E736F725F4C6F67676572000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64FF7F0000
+ 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000013535F436F325F53656E736F725F4C6F676765729600000000000000010013535F436F325F53656E736F725F4C6F67676572000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000
583
@@ -1838,7 +1838,7 @@
Debug
2373
- 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000000000000100000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000000000000100000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000000000000100000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000000000000100000001000000000000000000000001000000000000000000054465627567FF7F0000
+ 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
898
@@ -1890,6 +1890,42 @@
0
+
+ .\Application\main.c
+ 2
+ 40
+ 45
+ 1
+
+ 0
+
+
+ .\Application\gpio_switch.c
+ 0
+ 1
+ 3
+ 1
+
+ 0
+
+
+ .\Application\timer12.c
+ 0
+ 1
+ 2
+ 1
+
+ 0
+
+
+ .\Application\driver_ds3231_interface_template.c
+ 0
+ 15
+ 39
+ 1
+
+ 0
+
diff --git a/Project/A31G12x_Co2_Sensor_Logger.uvoptx b/Project/A31G12x_Co2_Sensor_Logger.uvoptx
index 702c91f..d2986b3 100644
--- a/Project/A31G12x_Co2_Sensor_Logger.uvoptx
+++ b/Project/A31G12x_Co2_Sensor_Logger.uvoptx
@@ -77,7 +77,7 @@
0
1
- 0
+ 255
0
1
diff --git a/Project/Application/uart1_rs485.c b/Project/Application/uart1_rs485.c
new file mode 100644
index 0000000..4c4859d
--- /dev/null
+++ b/Project/Application/uart1_rs485.c
@@ -0,0 +1,289 @@
+#include "uart1_rs485.h"
+#include "sw_timer.h"
+#include "ring_buffer.h"
+#include "gpio_uart_led.h"
+
+
+//#define UARTn_RS485_TX_INTERRUTP_ENABLE
+
+
+#define UARTn_RS485_PERIPHERAL UART1
+#define UARTn_RS485_INTERRUPT_HANDLER UART1_IRQn
+#define UARTn_RS485_INTERRUPT_MASK MSK_UART1
+#define UARTn_RS485_INTERRUPT_PRIORITY 3
+#define UARTn_RS485_TX_PORT PB
+#define UARTn_RS485_TX_PIN_NUM 6
+#define UARTn_RS485_RX_PORT PB
+#define UARTn_RS485_RX_PIN_NUM 7
+
+#define UARTn_RS485_TX_BUFFER_SIZE 100
+#define UARTn_RS485_RX_BUFFER_SIZE 300
+
+
+#define UARTn_RS485_REDE_PORT (Pn_Type*)PC
+#define UARTn_RS485_REDE_NUM 0
+#define UARTn_RS485_RECEIVE HAL_GPIO_ClearPin(UARTn_RS485_REDE_PORT, _BIT(UARTn_RS485_REDE_NUM))
+#define UARTn_RS485_TRANSMIT HAL_GPIO_SetPin(UARTn_RS485_REDE_PORT, _BIT(UARTn_RS485_REDE_NUM))
+
+
+
+static uint8_t Tx_RS485_Buffer[UARTn_RS485_TX_BUFFER_SIZE];
+static uint8_t Rx_RS485_Buffer[UARTn_RS485_RX_BUFFER_SIZE];
+static RING_BUFFER RingBuffer_RS485_Tx;
+static RING_BUFFER RingBuffer_RS485_Rx;
+
+
+#if defined(UARTn_RS485_TX_INTERRUTP_ENABLE)
+ static volatile uint8_t Uartn_RS485_TxIntEnable = FALSE;
+ static void Uart1_RS485_Init_TransmitSet(void);
+#else
+ static void Uart1_RS485_Transmit_Process(void);
+#endif
+
+
+
+static void Uart1_RS485_Receive_Handler(void);
+
+
+void Uart1_RS485_Initialization(uint32_t Baudrate, UARTn_DATA_BIT_Type Databit, UARTn_PARITY_BIT_Type Paritybit, UARTn_STOP_BIT_Type Stopbit)
+{
+ UARTn_CFG_Type UARTn_Config;
+
+ /*
+ * Initialize UART0 pin connect
+ */
+ HAL_GPIO_ConfigOutput((Pn_Type*)UARTn_RS485_RX_PORT, UARTn_RS485_RX_PIN_NUM, ALTERN_FUNC );
+ HAL_GPIO_ConfigFunction((Pn_Type*)UARTn_RS485_RX_PORT, UARTn_RS485_RX_PIN_NUM, AFSRx_AF1 );
+ HAL_GPIO_ConfigPullup((Pn_Type*)UARTn_RS485_RX_PORT, UARTn_RS485_RX_PIN_NUM, PUPDx_EnablePU );
+
+ HAL_GPIO_ConfigOutput((Pn_Type*)UARTn_RS485_TX_PORT, UARTn_RS485_TX_PIN_NUM, ALTERN_FUNC );
+ HAL_GPIO_ConfigFunction((Pn_Type*)UARTn_RS485_TX_PORT, UARTn_RS485_TX_PIN_NUM, AFSRx_AF1 );
+
+ // default: 38400-8-N-1
+ HAL_UART_ConfigStructInit(&UARTn_Config);
+ UARTn_Config.Baudrate = Baudrate;
+ UARTn_Config.Databits = Databit;
+ UARTn_Config.Parity = Paritybit;
+ UARTn_Config.Stopbits = Stopbit;
+
+ HAL_UART_Init((UARTn_Type*)UARTn_RS485_PERIPHERAL, &UARTn_Config);
+
+
+ HAL_GPIO_ConfigOutput(UARTn_RS485_REDE_PORT, UARTn_RS485_REDE_NUM, PUSH_PULL_OUTPUT);
+ HAL_GPIO_ConfigPullup(UARTn_RS485_REDE_PORT, UARTn_RS485_REDE_NUM, PUPDx_EnablePU);
+ UARTn_RS485_RECEIVE;
+
+ /* Enable UART Rx interrupt */
+ HAL_UART_ConfigInterrupt((UARTn_Type*)UARTn_RS485_PERIPHERAL, UARTn_INTCFG_RBR, ENABLE );
+
+#if defined(UARTn_RS485_TX_INTERRUTP_ENABLE)
+ // Reset Tx Interrupt state
+ Uartn_RS485_TxIntEnable = RESET;
+#else
+ SW_Timer_Callback_Register(SW_TIMER_RUN_CONTINUE, 0, Uart1_RS485_Transmit_Process);
+#endif
+
+ RingBuffer_Initialization(&RingBuffer_RS485_Rx, false, UARTn_RS485_RX_BUFFER_SIZE, &Rx_RS485_Buffer[0]);
+ RingBuffer_Initialization(&RingBuffer_RS485_Tx, false, UARTn_RS485_TX_BUFFER_SIZE, &Tx_RS485_Buffer[0]);
+
+ NVIC_SetPriority(UARTn_RS485_INTERRUPT_HANDLER, UARTn_RS485_INTERRUPT_PRIORITY);
+ NVIC_EnableIRQ(UARTn_RS485_INTERRUPT_HANDLER );
+ HAL_INT_EInt_MaskDisable(UARTn_RS485_INTERRUPT_MASK);
+}
+
+
+
+void Uart1_RS485_Transmit(uint8_t TxData)
+{
+#if defined(UARTn_RS485_TX_INTERRUTP_ENABLE)
+ /* Temporarily lock out UART transmit interrupts during this read so the UART transmit interrupt won't cause problems with the index values */
+ HAL_UART_ConfigInterrupt((UARTn_Type*)UARTn_PERIPHERAL, UARTn_INTCFG_THRE, DISABLE );
+
+ RingBuffer_Enqueue(&RingBuffer_Tx, TxData);
+
+ /*
+ * Check if current Tx interrupt enable is reset,
+ * that means the Tx interrupt must be re-enabled
+ * due to call IntTransmit() function to trigger
+ * this interrupt type
+ */
+ if(Uartn_RS485_TxIntEnable == RESET)
+ {
+ Uart1_RS485_Init_TransmitSet();
+ }
+ /*
+ * Otherwise, re-enables Tx Interrupt
+ */
+ else
+ {
+ HAL_UART_ConfigInterrupt((UARTn_Type*)UARTn_PERIPHERAL, UARTn_INTCFG_THRE, ENABLE );
+ }
+#else
+ RingBuffer_Enqueue(&RingBuffer_RS485_Tx, TxData);
+#endif
+}
+
+
+
+void Uart1_RS485_TransmitData(uint8_t* pTxData, uint32_t TxLen)
+{
+ uint32_t i;
+#if defined(UARTn_RS485_TX_INTERRUTP_ENABLE)
+ HAL_UART_ConfigInterrupt( ( UARTn_Type* )UARTn_RS485_PERIPHERAL, UARTn_INTCFG_THRE, DISABLE );
+
+ for(i = 0 ; i < TxLen ; i++)
+ RingBuffer_Enqueue(&RingBuffer_Tx, pTxData[i]);
+
+ if(Uartn_RS485_TxIntEnable == RESET)
+ {
+ Uart1_RS485_Init_TransmitSet();
+ }
+ else
+ {
+ HAL_UART_ConfigInterrupt( ( UARTn_Type* )UARTn_PERIPHERAL, UARTn_INTCFG_THRE, ENABLE );
+ }
+#else
+ for(i = 0 ; i < TxLen ; i++)
+ RingBuffer_Enqueue(&RingBuffer_RS485_Tx, pTxData[i]);
+#endif
+}
+
+
+#if defined(UARTn_RS485_TX_INTERRUTP_ENABLE)
+static void Uart1_RS485_Init_TransmitSet(void)
+{
+ // Disable THRE interrupt
+ HAL_UART_ConfigInterrupt( ( UARTn_Type* )UARTn_RS485_PERIPHERAL, UARTn_INTCFG_THRE, DISABLE );
+
+ /* Wait until THR empty */
+ while( HAL_UART_CheckBusy( ( UARTn_Type* )UARTn_RS485_PERIPHERAL ) == SET );
+
+ while(RingBuffer_Get_DataSize(&RingBuffer_Tx) != 0)
+ {
+ uint8_t TxData;
+ RingBuffer_GetData(&RingBuffer_RS485_Tx, &TxData);
+
+ if(HAL_UART_Transmit( ( UARTn_Type* )UARTn_RS485_PERIPHERAL, &TxData, 1, NONE_BLOCKING ) )
+ {
+ /* Update transmit ring FIFO tail pointer */
+ RingBuffer_PopData(&RingBuffer_RS485_Tx);
+ break;
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ /* If there is no more data to send, disable the transmit interrupt - else enable it or keep it enabled */
+ if(RingBuffer_Get_DataSize(&RingBuffer_RS485_Tx) == 0)
+ {
+ HAL_UART_ConfigInterrupt((RingBuffer_RS485_Tx*)UARTn_RS485_PERIPHERAL, UARTn_INTCFG_THRE, DISABLE );
+ // Reset Tx Interrupt state
+ Uartn_TxIntEnable = RESET;
+ }
+ else
+ {
+ // Set Tx Interrupt state
+ Uartn_TxIntEnable = SET;
+ HAL_UART_ConfigInterrupt((UARTn_Type*)UARTn_RS485_PERIPHERAL, UARTn_INTCFG_THRE, ENABLE );
+ }
+}
+#else
+static void Uart1_RS485_Transmit_Process(void)
+{
+ if(RingBuffer_Get_DataSize(&RingBuffer_RS485_Tx) != 0)
+ {
+ uint8_t TxData;
+ UARTn_RS485_TRANSMIT;
+ GPIO_UART_RS485_TX_LED_ON;
+
+ RingBuffer_GetData(&RingBuffer_RS485_Tx, &TxData);
+
+ if(HAL_UART_Transmit((UARTn_Type*)UARTn_RS485_PERIPHERAL, &TxData, 1, NONE_BLOCKING))
+ {
+ /* Update transmit ring FIFO tail pointer */
+ RingBuffer_PopData(&RingBuffer_RS485_Tx);
+ }
+ }
+ else
+ {
+ if(HAL_UART_CheckBusy((UARTn_Type *)UARTn_RS485_PERIPHERAL) == RESET)
+ {
+ UARTn_RS485_RECEIVE;
+ GPIO_UART_RS485_TX_LED_OFF;
+ }
+ }
+}
+#endif
+
+
+static void Uart1_RS485_Receive_Handler(void)
+{
+ uint8_t tmpc;
+ uint32_t rLen;
+
+ while(1)
+ {
+ rLen = HAL_UART_Receive((UARTn_Type*)UARTn_RS485_PERIPHERAL, &tmpc, 1, NONE_BLOCKING );
+ if (rLen)
+ {
+ RingBuffer_Enqueue(&RingBuffer_RS485_Rx, tmpc);
+ }
+ else
+ {
+ break;
+ }
+ }
+}
+
+/*********************************************************************//**
+ * @brief UART1 interrupt handler sub-routine
+ * @param[in] None
+ * @return None
+ **********************************************************************/
+void UART1_Handler(void)
+{
+ uint32_t intsrc, tmp;
+
+ /* Determine the interrupt source */
+ intsrc = UARTn_RS485_PERIPHERAL->IIR;
+ tmp = intsrc & UARTn_IIR_INTID_MASK;
+
+
+ // Receiver Line Status
+ if(tmp == UARTn_IIR_INTID_RLS) // error(Overrun, Parity, Framing or Break Error)
+ {
+ }
+ else if(tmp == UARTn_IIR_INTID_RDA) // Receiver Data Available
+ {
+ Uart1_RS485_Receive_Handler();
+ }
+ else if(tmp == UARTn_IIR_INTID_THRE) // Transmitter Holding Register Empty
+ {
+#if defined(UARTn_RS485_TX_INTERRUTP_ENABLE)
+ Uart1_RS485_Init_TransmitSet();
+#endif
+ }
+ else if(tmp == UARTn_IIR_INTID_TXE) // Transmitter Register Empty
+ {
+
+ }
+}
+
+void Uart1_RS485_Push_Data(uint8_t RxData)
+{
+ RingBuffer_Enqueue(&RingBuffer_RS485_Rx, RxData);
+}
+
+uint32_t Uart1_RS485_Get_RecvDataCount(void)
+{
+ return RingBuffer_Get_DataSize(&RingBuffer_RS485_Rx);
+}
+
+uint8_t Uart1_RS485_Get_RecvData(void)
+{
+ uint8_t retData;
+ RingBuffer_Dequeue(&RingBuffer_RS485_Rx, &retData);
+ return retData;
+}
diff --git a/Project/Application/uart1_rs485.h b/Project/Application/uart1_rs485.h
new file mode 100644
index 0000000..672ca7a
--- /dev/null
+++ b/Project/Application/uart1_rs485.h
@@ -0,0 +1,14 @@
+/** \file uart1_rs485.h */
+#if !defined(UART1_RS485_H__43E41896_F8DF_4ED4_B934_92ED846B67D5__INCLUDED_)
+#define UART1_RS485_H__43E41896_F8DF_4ED4_B934_92ED846B67D5__INCLUDED_
+
+#include "define.h"
+
+void Uart1_RS485_Initialization(uint32_t Baudrate, UARTn_DATA_BIT_Type Databit, UARTn_PARITY_BIT_Type Paritybit, UARTn_STOP_BIT_Type Stopbit);
+void Uart1_RS485_Transmit(uint8_t TxData);
+void Uart1_RS485_TransmitData(uint8_t* pTxData, uint32_t TxLen);
+uint32_t Uart1_RS485_Get_RecvDataCount(void);
+uint8_t Uart1_RS485_Get_RecvData(void);
+void Uart1_RS485_Push_Data(uint8_t RxData);
+
+#endif
diff --git a/Project/Application/usart11.c b/Project/Application/usart11.c
new file mode 100644
index 0000000..9c6b0de
--- /dev/null
+++ b/Project/Application/usart11.c
@@ -0,0 +1,279 @@
+#include "usart11.h"
+#include "ring_buffer.h"
+#include "sw_timer.h"
+#include "gpio_uart_led.h"
+
+
+
+#define USARTn_TX_INTERRUTP_ENABLE FALSE
+
+
+
+#define USARTn_PERIPHERAL USART11
+#define USARTn_INTERRUPT_HANDLER USART11_IRQn
+#define USARTn_INTERRUPT_MASK MSK_USART11
+#define USARTn_INTERRUPT_PRIORITY 3
+
+#define USARTn_TX_PORT PD
+#define USARTn_TX_PIN_NUM 2
+#define USARTn_RX_PORT PD
+#define USARTn_RX_PIN_NUM 3
+
+#define USARTn_TX_BUFFER_SIZE 600
+#define USARTn_RX_BUFFER_SIZE 100
+
+
+
+static uint8_t Tx_Buffer[USARTn_TX_BUFFER_SIZE];
+static uint8_t Rx_Buffer[USARTn_RX_BUFFER_SIZE];
+static RING_BUFFER RingBuffer_Tx;
+static RING_BUFFER RingBuffer_Rx;
+
+
+#if (USARTn_TX_INTERRUTP_ENABLE == TRUE)
+ static volatile uint8_t Usartn_TxIntEnable = FALSE;
+ static void Usart11_Init_TransmitSet(void);
+#else
+ static void Usart11_Transmit_Process(void);
+#endif
+
+static void Usart11_Receive_Handler(void);
+
+void Usart11_Initialization(uint32_t Baudrate, USART1n_DATA_BIT_Type Databit, USART1n_PARITY_BIT_Type Paritybit, USART1n_STOP_BIT_Type Stopbit)
+{
+ USART1n_CFG_Type USART1n_Config;
+
+ /*
+ * Initialize USART10 pin connect
+ */
+ HAL_GPIO_ConfigOutput( ( Pn_Type* )USARTn_RX_PORT, USARTn_RX_PIN_NUM, ALTERN_FUNC );
+ HAL_GPIO_ConfigFunction( ( Pn_Type* )USARTn_RX_PORT, USARTn_RX_PIN_NUM, AFSRx_AF1 );
+ HAL_GPIO_ConfigPullup( ( Pn_Type* )USARTn_RX_PORT, USARTn_RX_PIN_NUM, PUPDx_EnablePU );
+
+ HAL_GPIO_ConfigOutput( ( Pn_Type* )USARTn_TX_PORT, USARTn_TX_PIN_NUM, ALTERN_FUNC );
+ HAL_GPIO_ConfigFunction( ( Pn_Type* )USARTn_TX_PORT, USARTn_TX_PIN_NUM, AFSRx_AF1 );
+
+ // default: 38400-8-N-1
+ HAL_USART_UART_Mode_Config(&USART1n_Config);
+ USART1n_Config.Baudrate = Baudrate;
+ USART1n_Config.Databits = Databit;
+ USART1n_Config.Parity = Paritybit;
+ USART1n_Config.Stopbits = Stopbit;
+
+ HAL_USART_Init( ( USART1n_Type* )USARTn_PERIPHERAL, &USART1n_Config );
+
+ /* Enable UART Rx interrupt */
+ HAL_USART_ConfigInterrupt((USART1n_Type*)USARTn_PERIPHERAL, USART1n_INTCFG_RXC, ENABLE );
+#if (USARTn_TX_INTERRUTP_ENABLE == TRUE)
+ HAL_USART_ConfigInterrupt((USART1n_Type*)USARTn_PERIPHERAL, USART1n_INTCFG_TXC, ENABLE );
+ Usartn_TxIntEnable = RESET;
+#else
+ SW_Timer_Callback_Register(SW_TIMER_RUN_CONTINUE, 0, Usart11_Transmit_Process);
+#endif
+
+
+ RingBuffer_Initialization(&RingBuffer_Rx, false, USARTn_RX_BUFFER_SIZE, &Rx_Buffer[0]);
+ RingBuffer_Initialization(&RingBuffer_Tx, false, USARTn_TX_BUFFER_SIZE, &Tx_Buffer[0]);
+
+ NVIC_SetPriority(USARTn_INTERRUPT_HANDLER, USARTn_INTERRUPT_PRIORITY);
+ NVIC_EnableIRQ(USARTn_INTERRUPT_HANDLER);
+ HAL_INT_EInt_MaskDisable(USARTn_INTERRUPT_MASK);
+
+ HAL_USART_Enable((USART1n_Type*)USARTn_PERIPHERAL, ENABLE );
+}
+
+
+
+
+
+
+void Usart11_Transmit(uint8_t TxData)
+{
+#if (USARTn_TX_INTERRUTP_ENABLE == TRUE)
+ /* Temporarily lock out UART transmit interrupts during this read so the UART transmit interrupt won't cause problems with the index values */
+ HAL_USART_ConfigInterrupt((USART1n_Type* )USARTn_PERIPHERAL, USART1n_INTCFG_TXC, DISABLE );
+
+ RingBuffer_Enqueue(&RingBuffer_Tx, TxData);
+
+ /*
+ * Check if current Tx interrupt enable is reset,
+ * that means the Tx interrupt must be re-enabled
+ * due to call IntTransmit() function to trigger
+ * this interrupt type
+ */
+ if(Usartn_TxIntEnable == RESET)
+ {
+ Usart11_Init_TransmitSet();
+ }
+ /*
+ * Otherwise, re-enables Tx Interrupt
+ */
+ else
+ {
+ HAL_USART_ConfigInterrupt((USART1n_Type*)USARTn_PERIPHERAL, USART1n_INTCFG_TXC, ENABLE );
+ }
+#else
+ RingBuffer_Enqueue(&RingBuffer_Tx, TxData);
+#endif
+}
+
+
+void Usart11_TransmitData(uint8_t* pTxData, uint32_t TxLen)
+{
+ uint32_t i;
+#if (USARTn_TX_INTERRUTP_ENABLE == TRUE)
+
+ HAL_USART_ConfigInterrupt((USART1n_Type* )USARTn_PERIPHERAL, USART1n_INTCFG_TXC, DISABLE );
+
+ for(i = 0 ; i < TxLen ; i++)
+ RingBuffer_Enqueue(&RingBuffer_Tx, pTxData[i]);
+
+ if(Usartn_TxIntEnable == RESET)
+ {
+ Usart11_Init_TransmitSet();
+ }
+ else
+ {
+ HAL_USART_ConfigInterrupt((USART1n_Type*)USARTn_PERIPHERAL, USART1n_INTCFG_TXC, ENABLE );
+ }
+#else
+ for(i = 0 ; i < TxLen ; i++)
+ RingBuffer_Enqueue(&RingBuffer_Tx, pTxData[i]);
+#endif
+}
+
+
+
+
+#if (USARTn_TX_INTERRUTP_ENABLE == TRUE)
+static void Usart11_Init_TransmitSet(void)
+{
+ // Disable THRE interrupt
+ HAL_USART_ConfigInterrupt((USART1n_Type* )USARTn_PERIPHERAL, USART1n_INTCFG_TXC, DISABLE );
+
+ /* Wait until THR empty */
+ while( HAL_USART_CheckBusy((USART1n_Type*)USARTn_PERIPHERAL ) == SET );
+
+ while(RingBuffer_Get_DataSize(&RingBuffer_Tx) != 0)
+ {
+ uint8_t TxData;
+ RingBuffer_GetData(&RingBuffer_Tx, &TxData);
+
+ if(HAL_USART_Transmit((USART1n_Type*)USARTn_PERIPHERAL, &TxData, 1, NONE_BLOCKING))
+ {
+ /* Update transmit ring FIFO tail pointer */
+ RingBuffer_PopData(&RingBuffer_Tx);
+ break;
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ /* If there is no more data to send, disable the transmit interrupt - else enable it or keep it enabled */
+ if(RingBuffer_Get_DataSize(&RingBuffer_Tx) == 0)
+ {
+ HAL_USART_ConfigInterrupt((USART1n_Type* )USARTn_PERIPHERAL, USART1n_INTCFG_TXC, DISABLE );
+ // Reset Tx Interrupt state
+ Usartn_TxIntEnable = RESET;
+ }
+ else
+ {
+ // Set Tx Interrupt state
+ Usartn_TxIntEnable = SET;
+ HAL_USART_ConfigInterrupt((USART1n_Type*)USARTn_PERIPHERAL, USART1n_INTCFG_TXC, ENABLE );
+ }
+}
+#else
+static void Usart11_Transmit_Process(void)
+{
+ if(RingBuffer_Get_DataSize(&RingBuffer_Tx) != 0)
+ {
+ uint8_t TxData;
+ GPIO_UART_RS232_RX_LED_ON;
+ RingBuffer_GetData(&RingBuffer_Tx, &TxData);
+
+ if(HAL_USART_Transmit((USART1n_Type*)USARTn_PERIPHERAL, &TxData, 1, NONE_BLOCKING))
+ {
+ /* Update transmit ring FIFO tail pointer */
+ RingBuffer_PopData(&RingBuffer_Tx);
+ }
+ }
+ else
+ {
+ GPIO_UART_RS232_RX_LED_OFF;
+ }
+}
+#endif
+
+
+
+static void Usart11_Receive_Handler(void)
+{
+ uint8_t tmpc;
+ uint32_t rLen;
+
+ while(1)
+ {
+ rLen = HAL_USART_Receive((USART1n_Type*)USARTn_PERIPHERAL, &tmpc, 1, NONE_BLOCKING );
+ if (rLen)
+ {
+ RingBuffer_Enqueue(&RingBuffer_Rx, tmpc);
+ }
+ else
+ {
+ break;
+ }
+ }
+}
+
+
+
+
+/*-------------------------------------------------------------------------*//**
+ * @brief USART10_IRQHandler_IT
+ * @param None
+ * @return None
+ *//*-------------------------------------------------------------------------*/
+void USART11_Handler( void )
+{
+ uint32_t intsrc, tmp;
+
+ /* Determine the interrupt source */
+ intsrc = HAL_USART_GetStatus( ( USART1n_Type* )USARTn_PERIPHERAL );
+ tmp = intsrc & USART1n_SR_BITMASK;
+
+
+ // Receive Data Available or Character time-out
+ if( ( tmp & USART1n_SR_RXC ) == USART1n_SR_RXC )
+ {
+ Usart11_Receive_Handler();
+ }
+
+#if (USARTn_TX_INTERRUTP_ENABLE == TRUE)
+ // Transmit Holding Empty
+ if( ( tmp & USART1n_SR_TXC ) == USART1n_SR_TXC )
+ {
+ Usart11_Init_TransmitSet();
+ }
+#endif
+}
+
+
+
+uint32_t Usart11_Get_RecvDataCount(void)
+{
+ return RingBuffer_Get_DataSize(&RingBuffer_Rx);
+}
+
+uint8_t Usart11_Get_RecvData(void)
+{
+ uint8_t retData;
+ RingBuffer_Dequeue(&RingBuffer_Rx, &retData);
+ return retData;
+}
+
+
+
+
diff --git a/Project/Application/usart11.h b/Project/Application/usart11.h
new file mode 100644
index 0000000..e1bec18
--- /dev/null
+++ b/Project/Application/usart11.h
@@ -0,0 +1,13 @@
+/** \file usart11.h */
+#if !defined(USART11_H__358CA7DD_31CD_4E7D_9BFE_5B68A5DAD39D__INCLUDED_)
+#define USART11_H__358CA7DD_31CD_4E7D_9BFE_5B68A5DAD39D__INCLUDED_
+
+#include "define.h"
+
+void Usart11_Initialization(uint32_t Baudrate, USART1n_DATA_BIT_Type Databit, USART1n_PARITY_BIT_Type Paritybit, USART1n_STOP_BIT_Type Stopbit);
+void Usart11_Transmit(uint8_t TxData);
+void Usart11_TransmitData(uint8_t* pTxData, uint32_t TxLen);
+uint32_t Usart11_Get_RecvDataCount(void);
+uint8_t Usart11_Get_RecvData(void);
+
+#endif