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