diff --git a/Out/8837_EVB_241223_1951.bin b/Out/8837_EVB_241223_1951.bin
deleted file mode 100644
index 091c20f..0000000
Binary files a/Out/8837_EVB_241223_1951.bin and /dev/null differ
diff --git a/Out/8837_EVB_241223_1951.hex b/Out/8837_EVB_241223_1951.hex
deleted file mode 100644
index 487a7c5..0000000
--- a/Out/8837_EVB_241223_1951.hex
+++ /dev/null
@@ -1,805 +0,0 @@
-:030000000225AF27
-:1025AF00758E3075D20078FFE4F6D8FD9000007F6D
-:1025BF00007E01E4F0A3DFFCDEFA75819D02260A9E
-:0F2DA60053797374656D20496E69742E0D0A00A0
-:102D3C001229D17BFF7A2D79A6120F6DD2AED2BE9D
-:082D4C001227DF122BBF80F4F7
-:101C6300010D0001130001120001110001100041D8
-:101C730000D800020E00004200D200004200D6004D
-:101C8300004200CB00004200CD00004200D400001F
-:0F1C93004200D000004100CF004100D900C14005
-:102D540075FE0F43FF8075FE2975FFB575A52175B6
-:082D6400FE1E43FF01D2BD2257
-:10210300AB0720400302223A9000D2E0FEA3E0781E
-:1021130003CEC313CE13D8F9F0EE9000D2F09000A3
-:10212300CFE024FD60301460651470030221CD24D8
-:10213300FE700302220124056003022237780DE6B4
-:10214300FF3395E0FEC39000D3E09FFF9000D2E001
-:102153009E9000D6806E9000D2E0FEA3E0FF7C0943
-:102163007DC412155A780A1214F89000D2EEF0A327
-:10217300EFF07810E6FD3395E0FCC3EF9DFFEE9C96
-:10218300FE7C007D051213F89000CBEE80369000A4
-:10219300D2E0FEA3E0FF7C097DC412155A780A122F
-:1021A30014F89000D2EEF0A3EFF07811E6FD33952A
-:1021B300E0FCC3EF9DFFEE9CFE7C007D051213F84F
-:1021C3009000CDEEF0A3EFF0806A780DE6FF339533
-:1021D300E0FEC39000D3E09FFF9000D2E09EFE7C20
-:1021E300097DC412155A780A1214F8EEF0A3EFF021
-:1021F300E025E0FE9000D2E0339000D48032780DE9
-:10220300E6FF3395E0FEC39000D3E09FFF9000D23A
-:10221300E09EFE7C097DC412155A780A1214F8EE6A
-:10222300F0A3EFF0E025E0FE9000D2E0339000D081
-:10223300F0A3CEF0C240229000CFEBF0C454F044A0
-:0F22430001F5A5E49000D2F0A3F09000D9F022AD
-:03006B0002284820
-:10284800C0E0C0F0C083C082C0D075D000C000C056
-:1028580006C007E5F330E038AFA1780E760008A689
-:1028680007E5A254031846F608E6F69000D9E0C337
-:102878009408501718E6FE08E6FF9000D2EE8FF095
-:1028880012144D9000D9E004F08005D24053A5FE03
-:1028980075F301D007D006D000D0D0D082D083D035
-:0428A800F0D0E0325A
-:071CA200C11FC12001140362
-:102CCC00E47816F67818F67814E67817F67819760C
-:0E2CDC00017916E718461846F5B175B20122C7
-:101E1D00E4FE9000D6E0FCA3E0FDC394D8EC94035F
-:101E2D0040037F0022EF7003021F36D3ED940FECB9
-:101E3D0094034003021F14ED94CBEC940050030265
-:101E4D001F14D3ED94AAEC94024022D21D7814E60F
-:101E5D00FF137817F6301E11D3ED94BFEC940240AA
-:101E6D0004C21E80047817A607E4FE8070D3ED949B
-:101E7D00AAEC94025043ED9437EC9401403BD21EF2
-:101E8D007814E6FF7817F6301D13D3ED9493EC9488
-:101E9D00025004C21D8006EFC3137817F678197629
-:101EAD0001301011D3ED9451EC94015004C2108007
-:101EBD0004E47819F6E4FE8024D3ED9437EC940114
-:101ECD00501BD210E47819F6301E10ED9426EC94C8
-:101EDD00015004C21E800478197601E4FE301B11F6
-:101EED00C3ED94F3EC94025006C21BE4FE80027E17
-:101EFD0001301C2FD3ED94DDEC94004006C21CE4A0
-:101F0D00FE80207E01801CD3ED940FEC94034006DF
-:101F1D00D21B7E01800DD3ED94CBEC94005004D2F6
-:101F2D001C7E01C219C21A8058C21BC21CD3ED946B
-:101F3D009FEC94035031ED9471EC940040293019CD
-:101F4D0010ED9484EC94035006C219E4FE80027ED9
-:101F5D0001301A2DD3ED9482EC94004006C21AE4A0
-:101F6D00FE801E7E01801AD3ED949FEC94034004F5
-:101F7D00D219800BC3ED9471EC94005002D21A7EED
-:031F8D0001AF069B
-:011F9000222E
-:10245500E5E65480FFE4FCFDFEEF700953B3FE781A
-:1024650015F6C21F2278157601E5E830E50575E811
-:1024750020800FE5E530E1028008E5F230E50775DB
-:10248500F22053B3FE22E5F2540C601053B3FEE57F
-:10249500F354C0607375F20C75F3C02275F3C07FF9
-:1024A50001121E1DEF600653B3FED22022C220E5A5
-:1024B500F230E423C39000D5E094D29000D4E094A8
-:1024C5000F500575F210800353B3FE201F3AD21F3B
-:1024D50078157603D236227916E77818461846F528
-:1024E500B17819E6F5B275FE7043FF1843B311785C
-:1024F5001CE6FFD394014002C23FEFD39403400290
-:09250500C23E78157602C21F22C5
-:041CA900C13AC13B40
-:10000E00303A10EFB4010475B5C02253B5BFED44BC
-:04001E0080F5B52292
-:102D9500E5B55480FFEF6008303A05E4F5B5C23A71
-:012DA500220B
-:10290F00E5E530E103C23A22E5E230E705C23AD20B
-:10291F003B22E5E830E00FC23A302A4575E8017DE9
-:10292F0038E4FF02000EE4FF121E1DEF6008C23AEA
-:10293F00122D95D22022C220303F02801FD23A3072
-:10294F003B1F7815E6B40219C39000D5E0941090A0
-:10295F0000D4E0940E4005D23AC23B22122D95C20C
-:02296F003A220A
-:081CAD00C13CC13D4100F1FF03
-:102BF100E5E25408FF9000F1E06F601FE5E230E389
-:102C0100089000F07401F08005E49000F0F0D23CEF
-:0B2C1100D23DD236D2429000F1EFF02D
-:012C1C002295
-:101CB500C128C127C126011D004100EA004100E9F4
-:061CC500004200EB0000EC
-:101F9100E5E25402FFE4FCFDFEEF70369000EB75C4
-:101FA100F00112144D9000EBE0FEA3E0FFC3946436
-:101FB100EE94004007202414D2248010C3EF9490A3
-:101FC100EE94014007202504D225D226D221C22237
-:101FD100803A302130D242C221D222C2259000EB78
-:101FE100E0FEA3E0FFD39419EE94005008D228D26A
-:101FF10023D2368010C3EF94FAEE940050073024B8
-:1020010004C224D227E49000EBF0A3F0302224C2D2
-:102011002230270BC227781D7602E49000EAF030C7
-:102021002606C226781D760330230CC223781D763E
-:10203100018004E4781DF69000F0E0640160030281
-:102041002102781DE6640260030220CB9000EAE0E1
-:10205100C3940150107D017F01121A9FE490007119
-:10206100F0A3F080529000E9E0D394054004E4F03D
-:102071008039900072E0B4010FE4FD7F02121A9FD3
-:102081009000727402F0802F900072E06402702759
-:10209100900071E0601A7D017F02121A9FE49000A6
-:1020A10071F0A3F09000EAF0781DF67F03022A2870
-:1020B100E4FD7F01121A9F9000EAE0D394144032AC
-:1020C1009000E9E004F0E4A3F022781DE6640370D7
-:1020D100309000EAE0FFC3941E501EEF54036004E9
-:1020E1007D0180099000EAE030E007E4FD7F031202
-:1020F1001A9F9000EAE004F022E4781DF69000EACD
-:01210100F0ED
-:0121020022BA
-:101CCB00410079004100780041007A004100770023
-:102C6C0075FE0675FF3C75FE0E53FF0F75FE0F5378
-:102C7C00FFF075FE0375FFFFC282C283C285C2845A
-:012C8C002225
-:102D0800EF14600D14600D14600D2403700BD28253
-:0A2D180022D28322D28422D2852227
-:052CAD00900000E0FFB3
-:102CB200EF14600D14600D14600D2403700BC282BA
-:0A2CC20022C28322C28422C28522AE
-:10297100E4FF747B2FF582E43400F583E4F0747F87
-:102981002FF582E43400F583E4F0EF25E02483F5AC
-:1029910082E43400F583E4F0A3F0EF25E0248BF525
-:1029A10082E43400F583E4F0A3F0EF25E02493F50D
-:1029B10082E43400F583E4F0A3F0EF25E0249BF5F5
-:0F29C10082E43400F583E4F0A3F00FEFB404A335
-:0129D00022E4
-:1028AC00AC07747B2CF582E43400F583EDF0EAC3BD
-:1028BC0013FEEB13FFEC25E02483F582E43400F5E2
-:1028CC0083EEF0A3EFF0AF03EC25E0248BF582E46C
-:1028DC003400F583EAF0A3EFF0900005E0FEA3E0EE
-:1028EC00FFEC25E02493F582E43400F583EEF0A3AD
-:1028FC00EFF0EC25E0249BF582E43400F583E4F062
-:03290C00A3F02213
-:102B5100747B2FF582E43400F583EDF0747F2FF55B
-:102B610082E43400F583EBF0EF25E02483F582E481
-:102B71003400F583E4F0A37469F0EF25E0249BF5BC
-:0B2B810082E43400F583E4F0A3F022AE
-:100B9500E4900000F0F0900000E0FFC394044003EF
-:100BA500020ED7747B2FF582E43400F583E06022D2
-:100BB50024FE6024147003020C9F147003020D16AA
-:100BC50024036003020E73900000E0FF122D08025B
-:100BD5000E73122CAD020E73900000E0FF25E02489
-:100BE50083F582E43400F583E0FCA3E0FDEF25E026
-:100BF500249BF582E43400F583E0FEA3E0C39DEE7B
-:100C05009C5005122D088003122CAD900000E0FFCA
-:100C150025E0248BF582E43400F583E0FCA3E0FDB8
-:100C2500EF25E0249BF582E43400F583E0FEA3E0A4
-:100C3500C39DEE9C5003020E73900000E025E02456
-:100C45009BF582E43400F583E4F0A3F0EF25E0247E
-:100C550093F582E43400F583E0FEA3E0D39400EE3F
-:100C650094004016900000E025E02493F582E434DA
-:100C750000F58374FFF5F012144D900000E0FF2598
-:100C8500E02493F582E43400F583E0FCA3E04C60B6
-:100C950003020E73747B2F020D32900000E0FF25D6
-:100CA500E02483F582E43400F583E0FCA3E0FDEF66
-:100CB50025E0249BF582E43400F583E0FEA3E0D330
-:100CC5009DEE9C5005122D088003122CAD9000005E
-:100CD500E0FF25E0248BF582E43400F583E0FCA3F6
-:100CE500E0FDEF25E0249BF582E43400F583E0FE8A
-:100CF500A3E0C39DEE9C5003020E73900000E02517
-:100D0500E0249BF582E43400F583E4F0A3F0020EC1
-:100D150073900000E0FF247FF582E43400F583E062
-:100D25007017122ACAC241900000E0247BF582E4C4
-:100D35003400F583E4F0020E73900000E0FF247F99
-:100D4500F582E43400F583E0FE6402704B20411423
-:100D5500D241EF25E02483F582E43400F583E4F005
-:100D6500A37469F0900000E0FF25E02483F582E498
-:100D75003400F583E475F00112144DEF25E024836A
-:100D8500F582E43400F583E0FCA3E0C394FEEC9423
-:100D9500005003020E5D804EEE6401705A2041172B
-:100DA500D241900000E025E02483F582E43400F58B
-:100DB50083E4F0A374FEF0900000E0FF25E02483B7
-:100DC500F582E43400F58374FFF5F012144DEF2538
-:100DD500E02483F582E43400F583E0FEA3E0D394B8
-:100DE50069EE94005072900000E0247FF582E434AF
-:100DF50000F583E4F08061900000E0FF247FF58238
-:100E0500E43400F583E06403704EEF25E02483F5B8
-:100E150082E43400F583E0FEA3E0FFC394FEEE9484
-:100E2500004004D241800BD3EF946AEE9400500247
-:100E3500C241900000E025E0248330410DF582E4B5
-:100E45003400F58374FFF5F0800BF582E43400F58A
-:100E550083E475F00112144D900000E0FF25E024B5
-:100E650083F582E43400F583A3E0FD122A7990002E
-:100E750000E0FF7011747B2FF582E43400F583E008
-:100E8500900079F08043900000E0B40110247BF5D8
-:100E950082E43400F583E0900078F0802C90000027
-:100EA500E0B40210247BF582E43400F583E0900081
-:100EB5007AF08015900000E0B4030E247BF582E4FF
-:100EC5003400F583E0900077F0900000E004F00234
-:100ED5000B9BE4900000F0900000E0FFC3940450E9
-:100EE5001BEF25E0249BF582E43400F583E475F0DF
-:0C0EF5000112144D900000E004F080DBBE
-:010F010022CD
-:0B1CDB004200ED00004100EF0FC1428D
-:102C1D0075FE1E43FF0275FE2143FF0875D48775AF
-:102C2D00FE2143FF0475FE2143FF02300D0775FEA3
-:0C2C3D002453FFC32275FE2443FF3C22F9
-:10005600D2AC759A01D2B9D2BDD2A9D2AB75FE295E
-:0400660043FFB02282
-:10006E00C2ACE4F59AD2B9C2BDC2A9C2AB75FE2923
-:04007E0053FF4F22BB
-:092DEB0012006E4387020200563B
-:102D82007815E664026006200F03304204C242C393
-:032D920022D32227
-:1029D10075FE01E4F5FF122D22122DDE122DC3E446
-:1029E100F58675B7C375FE6A75FF0475FE6C43FF06
-:1029F1000A122D5475FE8043FF0275FE0E53FFFC33
-:102A010043FF0175FE1775FF3CD2A8D2AF122CCC43
-:102A11007D697F03122D6C122C6C122971122C1DF1
-:072A21009000DE7401F022B9
-:03000300020006F2
-:03000600D24232B1
-:03004B00022DFC87
-:062DFC0075EB3CD24232EF
-:03005300022E0278
-:062E020075F302D242321A
-:101CE6002040290000000000000000000000000065
-:101CF60000000000000000000000000000000000DE
-:101D060000000000000000000000000000000000CD
-:101D160000000000000000000000000000000000BD
-:0F1D2600000000C139C1384100F2004100F30054
-:0E2DB500900029EFF0122DF4900029E0FF228B
-:082DF4002037FDD2378F992230
-:102D220075FE0E53FFF343FF04D2DF43878075BA6B
-:0A2D32000375AAFD759852D2AC2279
-:03002300022DD1DA
-:0D2DD100309904C299C237309802C298327E
-:0D2DDE0075BB03759DDC759B92439A012225
-:062B8C0090004312152B1E
-:102B9200E4900046F0F0900046E0C39FE49E501C93
-:102BA2002038FDD238900043E475F001121514125A
-:0C2BB200135DF59C900046E004F080DA12
-:012BBE0022F4
-:0300830002264F03
-:10264F00C0E0C083C082C0D075D000C000C006C03B
-:10265F0007E59B30E105539BFDC238E59B30E06DEC
-:10266F00539BFED2429000F2E014601914603424A0
-:10267F0002705AE59C9000F2B455087401F0A3E47F
-:10268F00F0800E8018E59C9000F2B4AA107402F04E
-:10269F00A3E0FF04F074292FF8A69C8030E4F0A388
-:1026AF00F0802A9000F3E0FF04F074292FF8A69C25
-:1026BF00782BE62404FFE433FEE0C39FEE6480F83A
-:1026CF007480984008E4F09000F2F0D239D007D02F
-:0C26DF0006D000D0D0D082D083D0E032F2
-:10225200506F776572204F6E205374617465214808
-:10226200616C6C28307825782920286C696E653A73
-:102272002564290D0A004177616B6520536F7572E1
-:1022820063653A57505F466C6167303A307825781B
-:102292002C57505F466C6167313A307825782C575D
-:1022A200505F466C6167333A307825782E286C6926
-:1022B2006E653A2564290D0A00536C6565702053DA
-:1022C2007461746520286C696E653A2564290D0A6B
-:1022D20000535441303A307825782C535441313AE6
-:1022E200307825782C535441323A307825782C5363
-:1022F2005441333A307825782C535441343A30786B
-:1023020025782E4465635F536C6565703A25640DCC
-:102312000A006164632063686E3A25642C41766723
-:102322005F4164633A25642C49766F6C3A25642CCC
-:10233200566261743A25642C566F75743A25642C82
-:1023420049766F723A25642C566E74633A25642E70
-:102352000D0A004465636E745F536C656570446575
-:102362006C61792052656C6F61642E0D0A00456EB6
-:10237200746572205374616E646279204D6F646576
-:04238200210D0A001F
-:101D35004300DE0402024100DB004100DC00C13645
-:0E1D4500C1354100DD004100E1004100DA003F
-:10002600E4FB7D04FF122B51E4FB7D047F01122BC0
-:1000360051E4FB7D047F02122B51E4FB7D047F0318
-:03004600022B5139
-:1007B600303656C236E49000DCF0900005F0A3F027
-:1007C600FBFAFDFF1228ACE4900005F0A3F0FBFA5B
-:1007D600FD7F011228ACE4900005F0A3F0FBFAFDC2
-:1007E6007F021228ACE4900005F0A3F0FBFAFD7F2F
-:1007F600031228AC9000797402F0900078F0900013
-:100806007AF0900077F0D2422220200C200B0302CF
-:1008160008BD300D030208BD203105D231D2362283
-:10082600900079E06403601A900005E4F0A3740A6E
-:10083600F07B147A007D02E4FF1228AC90007974F4
-:1008460003F0900078E06403601A900005E4F0A3DA
-:10085600740AF07B147A007D027F011228AC9000A6
-:10086600787403F090007AE06403601A900005E45F
-:10087600F0A3740AF07B147A007D027F021228AC82
-:1008860090007A7403F0900077E06403601A900099
-:1008960005E4F0A3740AF07B147A007D027F03124C
-:1008A60028AC9000777403F09000DCE0C3942850E5
-:1008B600030209F4D20D2230310CC231C233C232E6
-:1008C600C23DC20CD2357815E6640260030209CE39
-:1008D600301F5C203305D233120026E4900005F069
-:1008E600A3F0FBFA7D01FF1228ACE4900005F0A30B
-:1008F600F0FBFA7D017F011228ACE4900005F0A31D
-:10090600F0FBFA7D017F021228ACE4900005F0A30B
-:10091600F0FBFA7D017F031228AC9000797401F098
-:10092600900078F090007AF0900077F00209C520E8
-:10093600320CD232D236E49000E1F00209C59000C2
-:10094600DCE0C394015057E004F09000E1E014604D
-:100956001A14602714603424037064900079E064EC
-:1009660004605C7B017D04E4FF802E900078E064E7
-:1009760004604C7B017D047F01801E90007AE06458
-:1009860004603C7B017D047F02800E900077E0646A
-:1009960004602C7B017D047F03122B518021900083
-:1009A600DCE0C3940F5005E004F08013E49000DC13
-:1009B600F09000E1E004F0E0C394044002E4F0C2E9
-:1009C6003DC20CC228D2342230320AC2321200266C
-:1009D600D236D23522203D0C203409200C062028A0
-:1009E60003020B949000DCE0FFC394015004E00482
-:1009F600F022EFC394644003020B3F9000DCE00456
-:100A0600F0781BE6C394195037900079E0640370C0
-:100A160003020B94E4900005F0A3F07B64FA7D03D7
-:100A2600FF1228AC9000797404F0E4900005F0A35E
-:100A3600F0FBFAFD7F011228AC9000787402803238
-:100A4600781BE6C394325041E4900005F0A3F0FB16
-:100A5600FA7D01FF1228AC9000797401F0E4900051
-:100A660005F0A3F0FBFA7D017F011228AC90007817
-:100A76007401F0E4900005F0A3F0FBFAFD7F02128A
-:100A860028AC90007A74028048781BE6C3944B50D9
-:100A960057E4900005F0A3F0FBFA7D01FF1228ACA5
-:100AA6009000797401F0E4900005F0A3F0FBFA7D64
-:100AB600017F011228AC9000787401F0E4900005E3
-:100AC600F0A3F0FBFA7D017F021228AC90007A7445
-:100AD60001F0E4900005F0A3F0FBFAFD7F03122875
-:100AE600AC9000777402F022781BE6C3946440034E
-:100AF600020B94E4900005F0A3F0FBFA7D01FF12CF
-:100B060028ACE4900005F0A3F0FBFA7D017F01120A
-:100B160028ACE4900005F0A3F0FBFA7D017F0212F9
-:100B260028ACE4900005F0A3F0FBFA7D017F0312E8
-:100B360028AC90007974018048C23DC234C20CC210
-:100B460028E4900005F0A3F0FBFAFDFF1228ACE4C0
-:100B5600900005F0A3F0FBFAFD7F011228ACE490AB
-:100B66000005F0A3F0FBFAFD7F021228ACE490002A
-:100B760005F0A3F0FBFAFD7F031228AC9000797410
-:0E0B860002F0900078F090007AF0900077F086
-:010B9400223E
-:102C8D009000D8E0FF04F01221039000D8E0B406C4
-:102C9D000204F09000D8E0C3940840037402F022BF
-:102CEA0012245512290F122BF1121F911226EB30C2
-:0E2CFA00290BC22912250E1207B612182F221E
-:10159900E4900000F09000DEE0FFA3E0FE6F70032E
-:1015A90002165FA3EEF09000DEE0A3F024FE605780
-:1015B90014700302164514700302164C24036003C9
-:1015C90002182E900005E4F0A37403F07B647A00FE
-:1015D9007D02E4FF1228AC900005E4F0A37403F047
-:1015E9007B647A007D027F011228AC7BFF7A227925
-:1015F900529000F0E0FF900004E4F0A3EFF0A37430
-:1016090001F0A374E3804B300D09D23C75E80CC29C
-:101619000BC20D7BFF7A227978AFF6900004E4F0D3
-:10162900A3EFF0AFF8A3E4F0A3EFF0AFFAA3E4F06F
-:10163900A3EFF0A37401F0A374F880169000EF747F
-:101649000FF0227BFF7A2279BB9000047402F0A389
-:101659007410F00217B59000DFE024FE60351460C5
-:10166900761470030217C82403600302182E900031
-:10167900DAE004F0E0C39408500302182E9000DE6B
-:101689007402F0E49000DAF0781CE6600302182E88
-:101699000217C1E5F6700CE5F87008E5FA7004E583
-:1016A900E1602D9000DE7403F0E5F6540FFFE4FCD1
-:1016B900FDFE7B08FAF9F8C31214E770069000DE04
-:1016C9007404F075E11F75F60F75F8FC75FABC2204
-:1016D9009000DE7403F022202D0302182EC22D7B08
-:1016E900FF7A2279D3AFE2900004E4F0A3EFF0AFE0
-:1016F900E3A3E4F0A3EFF0AFE4A3E4F0A3EFF0AFCA
-:10170900E5A3E4F0A3EFF0AFE6A3E4F0A3EFF090D4
-:1017190000EFE0FF90000EE4F0A3EFF0120F6D7BF5
-:10172900FF7A2379149000D8E0FF900004E4F0A335
-:10173900EFF09000D2E0FFA3E0900006CFF0A3EF16
-:10174900F09000CBE0FFA3E0900008CFF0A3EFF00A
-:101759009000D4E0FFA3E090000ACFF0A3EFF0904F
-:1017690000D0E0FFA3E090000CCFF0A3EFF09000D1
-:10177900CDE0FFA3E090000ECFF0A3EFF09000D6EC
-:10178900E0FFA3E0900010CFF0A3EFF0120F6D90EF
-:1017990000EFE0D394004017E014F0204203021850
-:1017A9002EC242740FF07BFF7A237955020F6D7BAD
-:1017B900FF7A237970120F6D9000DE7404F0221203
-:1017C9002D82505B122C1D7F04122A28122D95E4BC
-:1017D900900005F0A3F0FBFAFDFF1228ACE490009D
-:1017E90005F0A3F0FBFAFD7F011228ACE490000597
-:1017F900F0A3F0FBFAFD7F021228ACE4900005F09B
-:10180900A3F0FBFAFD7F031228AC9000797402F073
-:10181900900078F090007AF0900077F0022DEB902C
-:0518290000DE7402F076
-:01182E002297
-:102BBF00302C26C22C9000DBE0FF04F0EF14600CE9
-:102BCF0014600E24027012122C8D800D122CEA80CC
-:102BDF0008121599E49000DBF0302E05C22E120B6F
-:022BEF0095222D
-:102386005258315F4275666665725B305D3A3078E9
-:1023960025782C5258315F4275666665725B315DF1
-:1023A6003A307825782C5258315F427566666572E8
-:1023B6005B325D3A307825782C5258315F4275662B
-:1023C6006665725B335D3A307825782C5258315FFA
-:1023D6004275666665725B345D3A307825782C52B4
-:1023E60058315F4275666665725B355D3A307825B1
-:1023F600782C5258315F4275666665725B365D3A77
-:10240600307825782C6C696E653A25640D0A0000D3
-:1024160000000000000000000000000000000000B6
-:1024260000000000000000000000000000000000A6
-:102436000000000000000000000000000000000096
-:0F24460000000000000000000000000000000087
-:101D5300C10FC10CC10E410073FFC10B42004D0006
-:101D63000042004B0000420071000042006E000080
-:101D73004200740000C10D019D00106900000000C5
-:101D83000000000000000000000000002024790093
-:101D93000000000000000000000000000000000040
-:101DA3000000000000000000000000000000000030
-:071DB3000000004100700078
-:102A2800EF24FE601E14602814602F24FE603524F5
-:102A380005703D43BD8853BDBB75FE6F53FFF24320
-:102A4800FF092243BDCC75FE6F53FFFE43FF0C22E6
-:102A580053BD7753B7CF43B7302253B7CF43B703EC
-:102A680053BD772253B7CC53BD7775FE6A43FF3009
-:012A7800223B
-:10182F00203A03021A66303C57200E0A7D3FE4FF30
-:10183F0012000ED20E227F03122A28E490004AF0E3
-:10184F00900048F0A3F0C2009000F0E07024C20CAA
-:10185F00D201D202C203C207C208C209900071F0BE
-:10186F00A3F0D20FC23590006CF0A3F0900076F089
-:10187F008008C201C202D203C205C20BC20DC23C14
-:10188F00200303021921900048E0C394055003027E
-:10189F001A04900049E0C3940550077F06122A28C6
-:1018AF00802620003C90004AE0FFD3940B501EEF9F
-:1018BF0054037003FD800990004AE020E0077D018A
-:1018CF007F06121A9F90004AE004F080457F0412B1
-:1018DF002A28E490004AF0D200D204C20EC20F8030
-:1018EF0031300404C2048022E5E354A0FBE4FAF98A
-:1018FF00F8900047E0FFE4FCFDFEC31214E760120E
-:10190F00E5E354A06004D20CD236E5E354A0900076
-:10191F0047F0200103021A63303531200E257D3F39
-:10192F00E4FF12000ED20ED20FE490006CF0A3F081
-:10193F00900076F0900049F0900048F090004AF047
-:10194F00C207227F03122A28C2358031900048E057
-:10195F00D394035003021A04900049E0FFD3940B71
-:10196F00501BEF54037003FD8009900049E020E005
-:10197F00077D017F81121A9F900049807890004A5D
-:10198F00E0FFD39432501BEF54037003FD80099096
-:10199F00004AE020E0077D017F07121A9F90004A5E
-:1019AF008053E5E8540C6026200D1E90004AE00499
-:1019BF00F0E0C394055003021A9EE4F075E80C7F23
-:1019CF0003122A28D20BC20F227F04022A28C20B2D
-:1019DF00C20D3002097F03122A28C2028076200727
-:1019EF003FE5E354AC64AC6003303E23900048E025
-:1019FF00D394325004E004F022D207E490004AF06E
-:101A0F00900048F0C208C20E7F04122A2880459029
-:101A1F00006DE0703F7B017A00794F1200868034B1
-:101A2F0090004AE0FFD3940B501EEF54037003FD58
-:101A3F00800990004AE020E0077D017F80121A9F05
-:101A4F0090004AE004F0800C200809D2087F0412AD
-:101A5F002A28C20FC2062220060BD2067F04122AA2
-:101A6F0028C20F8022E5E354A0FBE4FAF9F89000B6
-:101A7F0047E0FFE4FCFDFEC31214E76012E5E354F8
-:0F1A8F00A06004D20CD236E5E354A0900047F0DB
-:011A9E002225
-:0600860090000012152B92
-:10008C00900076E0147003020163147003020242C4
-:10009C001470030202B314700302041F24046003DF
-:1000AC0002059F90000012150B90001E1213766033
-:1000BC000302059F789DE6D3940A50260690001AF9
-:1000CC00743F1213D6300A0302059F9000001215DC
-:1000DC000B90001A121376FDE4FF12000ED20A02E6
-:1000EC00059FE4789DF6C20A90000012150B900053
-:1000FC0016E41213D6900015E41213D6900013E4F4
-:10010C001213D6900012E41213D6900011E41213BD
-:10011C00D6900010E41213D6900018E41213D69067
-:10012C000017E41213D690000EE4F5F01214BA90F6
-:10013C00000CE4F5F01214BA900019E41213D690E6
-:10014C00001B743F1213D69000767401F0E49000FB
-:10015C004DF0A3F002059FE5E35408FFE4FCEF60CB
-:10016C001CE5E35404601690000012150B90001E61
-:10017C0074011213D6E4900076F002059FE5E35467
-:10018C0008FFE4FCEF704A9000CDE0FEA3E0FF9086
-:10019C00000012150B900002EE8FF01214BA7D05C0
-:1001AC001213F8EF7802C333CE33CED8F9FF900098
-:1001BC000012150B900006EE8FF01214BA9000CEC0
-:1001CC00E025E0FF9000CDE03390000A8FF0121490
-:1001DC00BAE5E35404FFE4FCEF704F9000CBE0FE73
-:1001EC00A3E0FF90000012150BEE8FF012149B9001
-:1001FC0000CBE0FEA3E0FF7D051213F8EF7802C3FD
-:10020C0033CE33CED8F9FF90000012150B900004BA
-:10021C00EE8FF01214BA9000CCE025E0FF9000CBEA
-:10022C00E0339000088FF01214BA90000012150BF6
-:10023C0090001D020594D390004EE0940590004D63
-:10024C00E094005002806FE490004DF0A3F0E5E3E1
-:10025C005408FFEF701F9000CDE0FEA3E0FF90006C
-:10026C000012150B90000EEE8FF01214BA900018BD
-:10027C0074011213D6E5E35404FFE4FCEF701F90F5
-:10028C0000CBE0FEA3E0FF90000012150B90000CD9
-:10029C00EE8FF01214BA90001774011213D690005E
-:1002AC00767403F002059FD390004EE09402900008
-:1002BC004DE09400500AE475F00112144D02059FB4
-:1002CC00E490004DF0A3F090000012150B90000A82
-:1002DC00121463FFAEF090000E121463D39FE5F07E
-:1002EC009E501C90000012150B900008121463FF16
-:1002FC00AEF090000C121463D39FE5F09E4011E415
-:10030C00900076F090000012150B90001D0203E196
-:10031C0090000012150B9000181213766401706D8A
-:10032C0090000E121463FFAEF0D39414EE940050B0
-:10033C0031E5E330E31F90001674011213D69000E0
-:10034C001A121376C3943F404490000012150B9080
-:10035C000018E4803590000012150B900013740106
-:10036C00802890000012150B900006121463FDD328
-:10037C00EF9DEE95F0900000400812150B900013C5
-:10038C00800612150B90001674011213D690000003
-:10039C0012150B9000171213766401600302059F6F
-:1003AC0090000C121463FFAEF0D39414EE94005032
-:1003BC0034E5E330E22290001574011213D690005C
-:1003CC001A121376C3943F500302059F900000123B
-:1003DC00150B900017E4803590000012150B90005F
-:1003EC00127401802890000012150B900004121456
-:1003FC0063FDD3EF9DEE95F0900000400812150BB5
-:10040C00900012800612150B90001574011213D671
-:10041C0002059FD390004EE0941490004DE09400A0
-:10042C005031E475F00112144D9000CDE0FEA3E0C4
-:10043C00FF90000012150B90000EEE8FF01214BA04
-:10044C009000CBE0FFA3E090000CCF8FF01214BA19
-:10045C0002059FE490004DF0A3F090000012150BE4
-:10046C00900018121376640160030204FD900017CB
-:10047C001213766401707A900006121463FFAEF0CA
-:10048C0090000E121463FDACF0C39FEC9E401890CC
-:10049C00000012150B90000A121463FFD3ED9FECB1
-:1004AC0095F0500302059F90000012150B9000046C
-:1004BC00121463FFAEF090000C121463FDACF0C389
-:1004CC009FEC9E401890000012150B90000812141F
-:1004DC0063FFD3ED9FEC95F0500302059F90000055
-:1004EC0012150B90001674011213D690001502050C
-:1004FC009490000012150B90001812137664017082
-:10050C0041900006121463FFAEF090000E121463BB
-:10051C00FDACF0C39FEC9E401590000012150B90A3
-:10052C00000A121463FFD3ED9FEC95F04014900079
-:10053C000012150B90001674011213D690007674ED
-:10054C0002F090000012150B900017121376640144
-:10055C007041900008121463FFAEF090000C12145E
-:10056C0063FDACF0D39FEC9E501590000012150B60
-:10057C00900004121463FFC3ED9FEC95F05014909F
-:10058C00000012150B90001574011213D690007612
-:10059C007402F090000012150B900018121376FFE5
-:1005AC006401600D9000171213766401600302075A
-:1005BC009C900013121376FE6401600D90001212D1
-:1005CC00137664016003020716EFB4011E90001746
-:1005DC00121376B40115EEB40111900013121376B8
-:1005EC00B4010890001474011213D6900018121361
-:1005FC0076FFB40118900017121376701090001348
-:10060C001213766401702390001404801AEF701A90
-:10061C00900017121376B40111900012121376B4D5
-:10062C00010890001474011213D6900013E41213F5
-:10063C00D6900012E41213D69000141213766401B3
-:10064C0060030207B590000012150B90001A1213EC
-:10065C0076D39400400890001A74FE1213A39000F5
-:10066C0019121376FF90001A121376D39F401B9029
-:10067C0000D5E024C8FF9000D4E03400FEC3900005
-:10068C00D1E09F9000D0E09E504890000012150BD6
-:10069C00900019121376FF90001A121376D39F90C4
-:1006AC000000501312150B90001AEF1213D6900085
-:1006BC001CE41213D6801312150B90001C7401123B
-:1006CC0013D690001A74021213A39000767404F0DF
-:1006DC0080139000767402F090000012150B9000BD
-:1006EC001CE41213D6E490004DF0A3F0900000121D
-:1006FC00150B900014E41213D690001C121376FF05
-:10070C0090001A121376FD02079990000012150B37
-:10071C009000161213766401600D9000151213767A
-:10072C00640160030207B5900016E41213D6900022
-:10073C0015E41213D690001A121376C3943F500E80
-:10074C0090000012150B90001A74021213A3900063
-:10075C00767404F090000012150B90001B121376A7
-:10076C00FF90001A121376C39F40139000001215CD
-:10077C000B90001AEF1213D69000767401F09000D3
-:10078C000012150B90001A121376FDE4FF02000EF6
-:10079C00900076E0D394024010E4F0900000121523
-:0907AC000B90001E74011213D61B
-:0107B5002221
-:0B2B0E0090004312152B900046EDF0E4
-:102B1900E4FE900046E0FD14F0ED6029900043E4E6
-:102B290075F00112151412135D6EFEE4FFEFC394E4
-:102B39000850DFEE30E007C313648CFE8004EEC357
-:072B490013FE0F80E8AF0648
-:012B50002262
-:081A9F00900000EFF0A3EDF050
-:101AA700E4A3F078037C007D017BFF7A247915FE9F
-:101AB7007F40121337E4900003F0A37455F0A3742A
-:101AC700AAF0900000E0FE900007F0900001E0FD12
-:101AD700900073F0EE1215341AF8011B27021B76DB
-:101AE700031B83061B83071BC8801BD08100001BB9
-:101AF700DE9000067402F0ED700E9000087402F09C
-:101B0700E4900071F0021BDE900001E064016003C5
-:101B1700021BDE90000804F0E4900072F0021BDE66
-:101B2700900006741BF07F05900001E075F012A489
-:101B370024792FF8E6FE74032FF582E43400F58349
-:101B4700EEF00FEFB412E17F17EFC39408400302E2
-:101B57001BDE900001E075F008A424692FF8E6FE6B
-:101B670074032FF582E43400F583EEF00F80DA90EA
-:101B770000067402F090000804F0805B9000067481
-:101B870005F09000087401F0781BE6A3F0A3742019
-:101B9700F0900001E0FF700D90006EE07002800F82
-:101BA70090006F8015EFB4012E90006FE0700890E1
-:101BB700000B74FFF0802090006EE090000BF08027
-:101BC700169000067401F0800E9000067402F090E3
-:101BD7000070E0900008F0900006E02404FF9000F9
-:101BE70002F0FD7B017A007903122B0E900002E0D0
-:101BF7002403F582E43400F583EFF07F01122A28ED
-:101C0700900001E0FF700843BD0253BDFE8016EF50
-:101C1700B4010843BD2053BDEF800AEFB4FF06436C
-:101C2700BD2253BDEE900002E02402FFE433FE7BA9
-:101C3700017A007903122B8C900001E0FF700753A3
-:101C4700BDFD43BD0122EFB4010753BDDF43BD1006
-:0B1C570022EFB4FF0653BDDF43BD11B8
-:011C6200225F
-:10276900EF24FA605014604D24067069E4FE742D5C
-:102779002EF8E6FF900073E075F012A424792EF884
-:10278900A6070EEEB412E7E4FE743F2EF8E6FF90BA
-:102799000073E075F008A424692EF8A6070EEEB4BC
-:1027A90008E7900073E0700690007104F022900031
-:1027B900727401F022782DE6B4E30D90004B740198
-:1027C900F008E690006EF02290004C7401F0782E2B
-:0527D900E690006FF026
-:0127DE0022D8
-:1026EB00E4900000F0303975C2397BFF7A2379868C
-:1026FB007829E6FF900004E4F0A3EFF008E6FFA3CF
-:10270B00E4F0A3EFF008E6FFA3E4F0A3EFF008E694
-:10271B00FFA3E4F0A3EFF008E6FFA3E4F0A3EFF0D0
-:10272B0008E6FFA3E4F0A3EFF008E6FFA3E4F0A3B1
-:10273B00EFF0A37406F0A374A7F0120F6D7B007A71
-:10274B00007929782BE62403FD122B0E782BE62437
-:0D275B002CF8E6B50707782CE6FF12276979
-:01276800224E
-:101DBA00011C00011B00C13EC13F011A50602800EE
-:101DCA00A30BB80BEA0C1C0C800CB20CE40D160D1C
-:101DDA00480D7A0DAC0DF70E420E880ED80F0A0F79
-:091DEA003C0F870FD2101D106898
-:10250E00E4FF7815E6B40225EF25E024A3F582E476
-:10251E003400F583E0FCA3E02432FDE43CFCC390E0
-:10252E0000D5E09D9000D4E09C50208023EF25E064
-:10253E0024A3F582E43400F583E0FCA3E0FDC39010
-:10254E0000D5E09D9000D4E09C40050FEFB414B28E
-:10255E00781CE6FEEFD39E781A400306800116E53E
-:10256E00E1600DE4F5E1781CEFF675F005A418F6C0
-:10257E00781AE6FED394965006EEC3940A500D7860
-:10258E001CEFF675F005A418F6187650781CE6FFC9
-:10259E00D394005003D23F22EFD394015002D23E87
-:0125AE00220A
-:101DF3004100E5004100E8004100E4004200E20048
-:101E0300004100E600C12BC12CC12EC12AC129C14A
-:091E13002D4100E700C12FC13090
-:1027DF009000E7E06062E4F0D22B9000E5E004F0B7
-:1027EF00E0C394054004E4F0D22C9000E8E004F03C
-:1027FF00E0C3940A4004E4F0D22E9000E2E475F0B6
-:10280F000112144DC39000E3E094649000E2E09451
-:10281F00004006E4F0A3F0D2299000E4E004F0E0D9
-:10282F00C394FA4013E4F0D22A9000E6E004F0E0FB
-:09283F0094044004E4F0D22D22BF
-:03000B00022C497B
-:102C4900C0E0C083C082C0D074FC258CF58C74664A
-:102C5900258AF58A9000E77401F0D0D0D082D0831C
-:032C6900D0E03286
-:0E2DC300758901758CFC758A66D2A9D28C22A6
-:102ACA00EFD39401501675FE0EEF25E02404FE7430
-:102ADA0003A806088002C333D8FC801475FE0FEFE2
-:102AEA0024FE25E0FE7403A806088002C333D8FC3E
-:102AFA00F452FFEFB4040C75FE0F53FFF075FE0E8F
-:042B0A0053FF0F2244
-:102D6C0075FE54EF5407F5FF75FE56AF058FFF75D2
-:062D7C00FE5375FF012269
-:102A7900EFD39401501875FE0EEF25E02404FE747F
-:102A890003A806088002C333D8FC42FF801675FEEE
-:102A99000FEF24FE25E0FE7403A806088002C33365
-:102AA900D8FC42FFEF70038DCE22EFB401038DCF26
-:102AB90022EFB402038DDE22EFB40304AF058FDFEA
-:012AC90022EA
-:032FFD00010102CD
-:1025CF00022D3CE493A3F8E493A34003F68001F2B9
-:1025DF0008DFF48029E493A3F85407240CC8C3330D
-:1025EF00C4540F4420C8834004F456800146F6DFDC
-:1025FF00E4800B0102040810204080901C63E47EED
-:10260F00019360BCA3FF543F30E509541FFEE493D0
-:10261F00A360010ECF54C025E060A840B8E493A397
-:10262F00FAE493A3F8E493A3C8C582C8CAC583CAC2
-:10263F00F0A3C8C582C8CAC583CADFE9DEE780BE7A
-:011E1C0000C5
-:10126700E709F608DFFA8046E709F208DFFA803E69
-:1012770088828C83E709F0A3DFFA8032E309F60856
-:10128700DFFA8078E309F208DFFA807088828C83BE
-:10129700E309F0A3DFFA806489828A83E0A3F60872
-:1012A700DFFA805889828A83E0A3F208DFFA804C4C
-:1012B70080D280FA80C680D4806980F28033801023
-:1012C70080A680EA809A80A880DA80E280CA80338C
-:1012D70089828A83ECFAE493A3C8C582C8CCC58304
-:1012E700CCF0A3C8C582C8CCC583CCDFE9DEE780D4
-:1012F7000D89828A83E493A3F608DFF9ECFAA9F053
-:10130700EDFB2289828A83ECFAE0A3C8C582C8CCA8
-:10131700C583CCF0A3C8C582C8CCC583CCDFEADEC1
-:10132700E880DB89828A83E493A3F208DFF980CC23
-:1013370088F0EF60010E4E60C388F0ED2402B4041C
-:101347000050B9F582EB2402B4040050AF232345C3
-:0613570082239012B7731F
-:10135D00BB010689828A83E0225002E722BBFE028E
-:09136D00E32289828A83E49322C1
-:10137600BB010CE58229F582E5833AF583E022502C
-:1013860006E92582F8E622BBFE06E92582F8E22276
-:0D139600E58229F582E5833AF583E4932290
-:1013A300BB010FF8E58229F582E5833AF583E0284E
-:1013B300F0225009C58229F8E58226F622BBFE09F0
-:1013C300C58229F8E22582F222F8EA2583F583E92A
-:0313D3009328223A
-:1013D600F8BB010DE58229F582E5833AF583E8F04D
-:1013E600225006E92582C8F622BBFE05E92582C8F9
-:0213F600F222E1
-:1013F800BC000BBE0029EF8DF084FFADF022E4CCD9
-:10140800F875F008EF2FFFEE33FEEC33FCEE9DECA1
-:10141800984005FCEE9DFE0FD5F0E9E4CEFD22EDE7
-:10142800F8F5F0EE8420D21CFEADF075F008EF2F31
-:10143800FFED33FD4007985006D5F0F222C398FD22
-:051448000FD5F0EA22BF
-:10144D00C5F0F8A3E028F0C5F0F8E582158270022A
-:06145D001583E038F022C7
-:10146300BB0110E58229F582E5833AF583E0F5F0C7
-:10147300A3E0225009E92582F886F008E622BBFEA4
-:101483000AE92582F8E2F5F008E222E5832AF583EA
-:08149300E993F5F0A3E99322AF
-:10149B00BB010A89828A83F0E5F0A3F0225006F79C
-:0F14AB0009A7F01922BBFE06F3E5F009F3192299
-:1014BA00F8BB0111E58229F582E5833AF583E8F064
-:1014CA00E5F0A3F0225009E92582C8F608A6F02221
-:0D14DA00BBFE09E92582C8F2E5F008F22208
-:1014E700EB9FF5F0EA9E42F0E99D42F0E89C45F05B
-:0114F70022D2
-:1014F800E8600FECC313FCED13FDEE13FEEF13FFD2
-:03150800D8F122F5
-:09150B00E0FBA3E0FAA3E0F922E1
-:10151400F8E0FBA3A3E0F925F0F0E5821582700260
-:071524001583E0FA38F02204
-:09152B00EBF0A3EAF0A3E9F022C1
-:10153400D083D082F8E4937012740193700DA3A346
-:1015440093F8740193F5828883E47374029368605A
-:06155400EFA3A3A380DF5A
-:10155A00EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02D1E
-:10156A00FDE43CFCE8A42EC8C5F03DFDE43CFCEFDC
-:0D157A00A4FFE5F028FEE43DFDE43CFC226A
-:100F0200E5082404F582E43400F583E00508229024
-:100F12000001301703900004E475F0011215140269
-:100F2200135D2010E97F2ED2108018EF540F249009
-:100F3200D43440D4FF30140BEF24BFB41A00500352
-:100F42002461FFE50960021509050CE50C70020534
-:100F52000B30170E900001E475F001121514EF0228
-:100F62001587022DB57403D2178003E4C217F50862
-:100F720090000112152BE4F509F50BF50CE509605B
-:100F8200077F20120F4580F5750AFFC211C210C2F9
-:100F920012C213C215C216C218120F11FF700D3001
-:100FA20017057F00120F56AF0CAE0B22B4255FC29D
-:100FB200D5C214120F11FF24D0B40A00501A75F0D2
-:100FC2000A780930D50508B6FF0106C6A426F62020
-:100FD200D5047002D21380D924CFB41A00EF500482
-:100FE200C2E5D214021157D21180C6D21080C0D2EB
-:100FF2001280BCD2D580BAD21580B47F20120F45A0
-:101002002012077401B5090040F1120F02FF120FFE
-:1010120045020F7FD218D2168095120F02FB120FD3
-:1010220002FA120F02F94A4B700679287A127BFFF4
-:1010320020122EE509602A7E008E8275830012132B
-:101042007660060EEE650A70F0C2D5EBC0E0EAC02B
-:10105200E0E9C0E0EE12119ED0E0F9D0E0FAD0E073
-:10106200FB12135DFF60AAEBC0E0EAC0E0E9C0E05A
-:10107200120F45D0E02401F9D0E03400FAD0E0FBB1
-:10108200E50A0460DCD50AD980877BFF7A11799A58
-:10109200D212809C791080027908C216C218800888
-:1010A200D2D5790A8004790AC2D5E50A047002F51C
-:1010B2000AE4FAFDFEFF120F02FC7B082011131254
-:1010C2000F02FD7B1030100A120F02FE120F02FFF8
-:1010D2007B20EC3382D592D55013C3E43010069FA7
-:1010E200FFE49EFEE42011039DFDE49CFCE4CBF8AA
-:1010F200C211EC700CCFCECDCCE824F8F870F3809E
-:1011020017C3EF33FFEE33FEED33FDEC33FCEB336D
-:10111200FB994002FB0FD8E9EB301105F8D0E0C48F
-:1011220048B211C0E00AEC4D4E4F78207B0070C2ED
-:10113200EAB50A0040BCC0E01211A0D0F0D0E02015
-:101142001104C4C0E0C4B211C0F0120F2ED0F0D509
-:10115200F0EB020F7F121534101C531096580FED4E
-:101162004C0FE942109A4F10A24410A249100243B8
-:0811720010A855108C46108CEA
-:10117A0045108C471248500FF12D0FF52E10182BE1
-:10118A000FF92310162012312A0FB148000010104F
-:10119A003F3F3F00790AA2D5201314301509B91030
-:1011AA00020404B9080104A2D52016025001042041
-:1011BA0012689212B509005034C0E07F203013192A
-:1011CA007F30A21272167215500F1211F7C212C294
-:1011DA0016C215C2187F30800F301503E9C0E0121D
-:1011EA000F45301503D0E0F9D0E0B509CC3015171A
-:1011FA007F30B9100C120F457F583014077F788062
-:10120A0003B90803120F453012057F2D020F457FDF
-:10121A00202018F87F2B2016F322921280CF286EF6
-:10122A00756C6C2900D211120F023011F8C21178B4
-:10123A000930D50108F6020FB12D50434958120F53
-:10124A00022403B405004001E490124393120F36BE
-:0D125A00743A120F36D21375090402109673
-:10158700BB010689828A83F0225002F722BBFE0143
-:02159700F3223D
-:00000001FF
diff --git a/Out/8837_EVB_241223_1951_5034_010102.bin b/Out/8837_EVB_241223_1951_5034_010102.bin
deleted file mode 100644
index 3e72eb6..0000000
Binary files a/Out/8837_EVB_241223_1951_5034_010102.bin and /dev/null differ
diff --git a/Out/8837_EVB_241227_1754.bin b/Out/8837_EVB_241227_1754.bin
new file mode 100644
index 0000000..5639a31
Binary files /dev/null and b/Out/8837_EVB_241227_1754.bin differ
diff --git a/Out/8837_EVB_241227_1754.hex b/Out/8837_EVB_241227_1754.hex
new file mode 100644
index 0000000..e615925
--- /dev/null
+++ b/Out/8837_EVB_241227_1754.hex
@@ -0,0 +1,831 @@
+:030000000227DAFA
+:1027DA00758E3075D20078FFE4F6D8FD9000007F40
+:1027EA00007E01E4F0A3DFFCDEFA7581A70228353A
+:0F2F370053797374656D20496E69742E0D0A000D
+:102ECC00122B5A7BFF7A2F7937120F77D2AED2BEE4
+:082EDC0012296E122D4880F44A
+:101CE500010D000113000112000111000110004156
+:101CF50000D800020E00004200D200004200D600CB
+:101D0500004200CB00004200CD00004200D400009C
+:0F1D15004200D000004100CF004100D900C14280
+:102EE40075FE0F43FF8075FE2975FFB575A5217525
+:082EF400FE1E43FF01D2BD22C6
+:1023AF00AB072042030224E69000D2E0FEA3E078C0
+:1023BF0003CEC313CE13D8F9F0EE9000D2F09000F5
+:1023CF00CFE024FD6030146065147003022479247B
+:1023DF00FE70030224AD240560030224E3780DE6AA
+:1023EF00FF3395E0FEC39000D3E09FFF9000D2E053
+:1023FF009E9000D6806E9000D2E0FEA3E0FF7C0995
+:10240F007DC412189B780A1218399000D2EEF0A3EF
+:10241F00EFF07810E6FD3395E0FCC3EF9DFFEE9CE7
+:10242F00FE7C007D051217399000CBEE80369000B0
+:10243F00D2E0FEA3E0FF7C097DC412189B780A123C
+:10244F0018399000D2EEF0A3EFF07811E6FD339536
+:10245F00E0FCC3EF9DFFEE9CFE7C007D051217395B
+:10246F009000CDEEF0A3EFF0806A780DE6FF339584
+:10247F00E0FEC39000D3E09FFF9000D2E09EFE7C71
+:10248F00097DC412189B780A121839EEF0A3EFF0E9
+:10249F00E025E0FE9000D2E0339000D48032780D3A
+:1024AF00E6FF3395E0FEC39000D3E09FFF9000D28C
+:1024BF00E09EFE7C097DC412189B780A121839EE33
+:1024CF00F0A3EFF0E025E0FE9000D2E0339000D0D3
+:1024DF00F0A3CEF0C242229000CFEBF0C454F044F0
+:0F24EF0001F5A5E49000D2F0A3F09000D9F022FF
+:03006B000229D790
+:1029D700C0E0C0F0C083C082C0D075D000C000C0C6
+:1029E70006C007E5F330E038AFA1780E760008A6F9
+:1029F70007E5A254031846F608E6F69000D9E0C3A7
+:102A07009408501718E6FE08E6FF9000D2EE8FF004
+:102A170012178E9000D9E004F08005D24253A5FE2C
+:102A270075F301D007D006D000D0D0D082D083D0A4
+:042A3700F0D0E032C9
+:051D2400C132011403AF
+:1000260075FE8843FF20E47816F67818F67814E60D
+:100036007817F6781976017916E718461846F5B155
+:0400460075B201226C
+:10223B00E4FE9000D6E0FCA3E0FDC394D8EC94033D
+:10224B0040037F0022EF7003022354D3ED940FEC75
+:10225B0094034003022332ED94CBEC940050030221
+:10226B002332D3ED94AAEC94024022D2307814E6B8
+:10227B00FF137817F6303111D3ED94BFEC94024075
+:10228B0004C23180047817A607E4FE8070D3ED9466
+:10229B00AAEC94025043ED9437EC9401403BD231BD
+:1022AB007814E6FF7817F6303013D3ED9493EC9453
+:1022BB00025004C2308006EFC3137817F6781976F4
+:1022CB0001301311D3ED9451EC94015004C21380DF
+:1022DB0004E47819F6E4FE8024D3ED9437EC9401F2
+:1022EB00501BD213E47819F6303110ED9426EC9490
+:1022FB00015004C231800478197601E4FE302E11AE
+:10230B00C3ED94F3EC94025006C22EE4FE80027EE1
+:10231B0001302F2FD3ED94DDEC94004006C22FE457
+:10232B00FE80207E01801CD3ED940FEC94034006BD
+:10233B00D22E7E01800DD3ED94CBEC94005004D2C1
+:10234B002F7E01C22CC22D8058C22EC22FD3ED94EA
+:10235B009FEC94035031ED9471EC94004029302C98
+:10236B0010ED9484EC94035006C22CE4FE80027EA4
+:10237B0001302D2DD3ED9482EC94004006C22DE458
+:10238B00FE801E7E01801AD3ED949FEC94034004D3
+:10239B00D22C800BC3ED9471EC94005002D22D7EA5
+:0323AB0001AF0679
+:0123AE00220C
+:1025E200E5E65480FFE4FCFDFEEF700753B3FE788E
+:1025F20015F62278157601E5E830E50575E82080C4
+:102602000FE5E530E1028008E5F230E50775F220DA
+:1026120053B3FE22E5F2540C601053B3FEE5F354BB
+:10262200C0606A75F20C75F3C02275F3C07F0112A7
+:10263200223BEF600653B3FED23222C232E5F230C1
+:10264200E41CC39000D5E094D29000D4E0940F50E3
+:102652000575F210800353B3FE78157603227916BE
+:10266200E77818461846F5B17819E6F5B275FE70A6
+:1026720043FF1843B311781CE6FFD394014002C212
+:0E26820041EFD394034002C240781576022245
+:041D2900C13CC13DBB
+:10000E00303C10EFB4010475B5C02253B5BFED44BA
+:04001E0080F5B52292
+:102F2600E5B55480FFEF6008303C05E4F5B5C23CDA
+:012F36002278
+:102AFE00C23CE5E520E154E5E230E703D23D22E5B4
+:102B0E00E830E00D30254475E8017D38E4FF020021
+:102B1E000EE4FF12223BEF6006122F26D23222C2A3
+:102B2E0032304103022F26D23C303D1F7815E6B4D9
+:102B3E000219C39000D5E094109000D4E0940E409A
+:0C2B4E0005D23CC23D22122F26C23C22C0
+:081D2D00C13EC13F4100F3FF7C
+:102D7A00E5E25408FF9000F3E06F6021E5E230E3FA
+:102D8A00089000F27401F08005E49000F2F0D23E5F
+:0D2D9A00C210D23FD2389000F3EFF0D244C7
+:012DA7002209
+:101D3500C123C122C121011D004100EA004100EE7D
+:0E1D4500004100E9004200EB00004100ED000B
+:101EB100E5E25402FFE4FCFDFEEF70369000EB75A5
+:101EC100F00112178E9000EBE0FEA3E0FFC39464D3
+:101ED100EE94004007201F14D21F8010C3EF94908E
+:101EE100EE94014007202004D220D221D21CC21D31
+:101EF1008042301C38D244E4781DF6C21CD21D90B9
+:101F010000EDF0C2209000EBE0FEA3E0FFD39419B6
+:101F1100EE94005008D223D21ED2388010C3EF9421
+:101F2100FAEE94005007301F04C21FD222E4900041
+:101F3100EBF0A3F0301D66303C6330222720100205
+:101F410080287F03122BB19000EDE0D3941450034D
+:101F5100022063C222781D7602E49000EAF090002C
+:101F610071F0A3F030212920100A7D3FE4FF120017
+:101F71000ED210227F03122BB19000EDE0D3941406
+:101F81005003022063C221E49000EEF0781D760335
+:101F9100301E06C21E781D7601C21DC2109000F2CD
+:101FA100E064016003022076781DE66402600302AA
+:101FB10020389000EAE0C3940150107D017F0112A6
+:101FC1002077E4900071F0A3F080549000E9E0D311
+:101FD10094054003E48039900072E0B4010FE4FD00
+:101FE1007F021220779000727402F08032900072AA
+:101FF100E06402702A900071E0601D7D017F021291
+:102001002077E4900071F0A3F09000EAF09000E9ED
+:10201100F0781DF6D2118058E4FD7F0112207790EF
+:1020210000EAE0D39414400A9000E9E004F0E4A34C
+:10203100F0229000EA802B781DE66403703790004F
+:10204100EEE0FFC3941E501EEF540360047D018037
+:10205100099000EEE030E007E4FD7F031220779065
+:1020610000EEE004F022E4781DF6D2119000EEF0CB
+:052071007F04122BB1F9
+:012076002247
+:101D5300410079004100780041007A00410077009A
+:102E1A0075FE0675FF3C75FE0E53FF0F75FE0F53C8
+:102E2A00FFF075FE0375FFFFC282C283C285C284AA
+:012E3A002275
+:102E9800EF14600D14600D14600D2403700BD282C2
+:0A2EA80022D28322D28422D2852296
+:052E5B00900000E0FF03
+:102E6000EF14600D14600D14600D2403700BC2820A
+:0A2E700022C28322C28422C28522FE
+:102A9E00E4FF747B2FF582E43400F583E4F0747F59
+:102AAE002FF582E43400F583E4F0EF25E02483F57E
+:102ABE0082E43400F583E4F0A3F0EF25E0248BF5F7
+:102ACE0082E43400F583E4F0A3F0EF25E02493F5DF
+:102ADE0082E43400F583E4F0A3F0EF25E0249BF5C7
+:0F2AEE0082E43400F583E4F0A3F00FEFB404A307
+:012AFD0022B6
+:102A3B00AC07747B2CF582E43400F583EDF0EAC32C
+:102A4B0013FEEB13FFEC25E02483F582E43400F551
+:102A5B0083EEF0A3EFF0AF03EC25E0248BF582E4DB
+:102A6B003400F583EAF0A3EFF0900005E0FEA3E05D
+:102A7B00FFEC25E02493F582E43400F583EEF0A31C
+:102A8B00EFF0EC25E0249BF582E43400F583E4F0D1
+:032A9B00A3F02283
+:102CDA00747B2FF582E43400F583EDF0747F2FF5D1
+:102CEA0082E43400F583EBF0EF25E02483F582E4F7
+:102CFA003400F583E4F0A37469F0EF25E0249BF532
+:0B2D0A0082E43400F583E4F0A3F02223
+:100B9F00E4900000F0F0900000E0FFC394044003E5
+:100BAF00020EE1747B2FF582E43400F583E06022BE
+:100BBF0024FE6024147003020CA9147003020D208C
+:100BCF0024036003020E7D900000E0FF122E9802B6
+:100BDF000E7D122E5B020E7D900000E0FF25E024BB
+:100BEF0083F582E43400F583E0FCA3E0FDEF25E01C
+:100BFF00249BF582E43400F583E0FEA3E0C39DEE71
+:100C0F009C5005122E988003122E5B900000E0FF7F
+:100C1F0025E0248BF582E43400F583E0FCA3E0FDAE
+:100C2F00EF25E0249BF582E43400F583E0FEA3E09A
+:100C3F00C39DEE9C5003020E7D900000E025E02442
+:100C4F009BF582E43400F583E4F0A3F0EF25E02474
+:100C5F0093F582E43400F583E0FEA3E0D39400EE35
+:100C6F0094004016900000E025E02493F582E434D0
+:100C7F0000F58374FFF5F012178E900000E0FF254A
+:100C8F00E02493F582E43400F583E0FCA3E04C60AC
+:100C9F0003020E7D747B2F020D3C900000E0FF25B8
+:100CAF00E02483F582E43400F583E0FCA3E0FDEF5C
+:100CBF0025E0249BF582E43400F583E0FEA3E0D326
+:100CCF009DEE9C5005122E988003122E5B90000013
+:100CDF00E0FF25E0248BF582E43400F583E0FCA3EC
+:100CEF00E0FDEF25E0249BF582E43400F583E0FE80
+:100CFF00A3E0C39DEE9C5003020E7D900000E02503
+:100D0F00E0249BF582E43400F583E4F0A3F0020EB7
+:100D1F007D900000E0FF247FF582E43400F583E04E
+:100D2F007017122C53C243900000E0247BF582E42D
+:100D3F003400F583E4F0020E7D900000E0FF247F85
+:100D4F00F582E43400F583E0FE6402704B20431417
+:100D5F00D243EF25E02483F582E43400F583E4F0F9
+:100D6F00A37469F0900000E0FF25E02483F582E48E
+:100D7F003400F583E475F00112178EEF25E024831C
+:100D8F00F582E43400F583E0FCA3E0C394FEEC9419
+:100D9F00005003020E67804EEE6401705A20431715
+:100DAF00D243900000E025E02483F582E43400F57F
+:100DBF0083E4F0A374FEF0900000E0FF25E02483AD
+:100DCF00F582E43400F58374FFF5F012178EEF25EA
+:100DDF00E02483F582E43400F583E0FEA3E0D394AE
+:100DEF0069EE94005072900000E0247FF582E434A5
+:100DFF0000F583E4F08061900000E0FF247FF5822E
+:100E0F00E43400F583E06403704EEF25E02483F5AE
+:100E1F0082E43400F583E0FEA3E0FFC394FEEE947A
+:100E2F00004004D243800BD3EF946AEE940050023B
+:100E3F00C243900000E025E0248330430DF582E4A7
+:100E4F003400F58374FFF5F0800BF582E43400F580
+:100E5F0083E475F00112178E900000E0FF25E02467
+:100E6F0083F582E43400F583A3E0FD122C02900099
+:100E7F0000E0FF7011747B2FF582E43400F583E0FE
+:100E8F00900079F08043900000E0B40110247BF5CE
+:100E9F0082E43400F583E0900078F0802C9000001D
+:100EAF00E0B40210247BF582E43400F583E0900077
+:100EBF007AF08015900000E0B4030E247BF582E4F5
+:100ECF003400F583E0900077F0900000E004F0022A
+:100EDF000BA5E4900000F0900000E0FFC3940450D5
+:100EEF001BEF25E0249BF582E43400F583E475F0D5
+:0C0EFF000112178E900000E004F080DB70
+:010F0B0022C3
+:0B1D63004200EF00004100F10FC144FE
+:102DA80075FE1E43FF0275FE2143FF0875D4877523
+:102DB800FE2143FF0475FE2143FF02300F0775FE15
+:0C2DC8002453FFC32275FE2443FF3C226D
+:10005600D2AC759A01D2B9D2BDD2A9D2AB75FE295E
+:0400660043FFB02282
+:10006E00C2ACE4F59AD2B9C2BDC2A9C2AB75FE2923
+:04007E0053FF4F22BB
+:092F7C0012006E438702020056A8
+:102F12007815E6D394015006201203304404C244CB
+:042F2200C322D322D1
+:102B5A0075FE01E4F5FF122EB2122F6F122F54E404
+:102B6A00F58675B7C375FE6A75FF0475FE6C43FF7B
+:102B7A000A122EE475FE8043FF0275FE0E53FFFC17
+:102B8A0043FF0175FE1775FF3CD2A8D2AF1200268B
+:102B9A007D697F03122EFC122E1A122A9E122DA86C
+:072BAA009000DE7401F0222F
+:03000300020006F2
+:03000600D24432AF
+:03004B00022F8DF4
+:062F8D0075EB3CD244325A
+:03005300022F93E6
+:062F930075F302D2443286
+:101D6E0020402900000000000000000000000000DC
+:101D7E000000000000000000000000000000000055
+:101D8E000000000000000000000000000000000045
+:101D9E000000000000000000000000000000000035
+:0F1DAE00000000C13BC13A4100F4004100F500C4
+:0E2F4600900029EFF0122F85900029E0FF2265
+:082F85002039FDD2398F992299
+:102EB20075FE0E53FFF343FF04D2DF43878075BADA
+:0A2EC2000375AAFD759852D2AC22E8
+:03002300022F6247
+:0D2F6200309904C299C239309802C29832E9
+:0D2F6F0075BB03759DDC759B92439A012292
+:062D150090004312186C4F
+:102D1B00E4900046F0F0900046E0C39FE49E501C08
+:102D2B00203AFDD23A900043E475F0011218551287
+:0C2D3B00169EF59C900046E004F080DA43
+:012D47002269
+:03008300022690C2
+:10269000C0E0C083C082C0D075D000C000C005C0FB
+:1026A00006C007E59B30E105539BFDC23AE59B3030
+:1026B000E076539BFED2449000F4E014601914605D
+:1026C0003424027063E59C9000F4B455087401F062
+:1026D000A3E4F0800E8018E59C9000F4B4AA107476
+:1026E00002F0A3E0FF04F074292FF8A69C8039E4DF
+:1026F000F0A3F080339000F5E0FF04F074292FF888
+:10270000A69C782BE62404FFE433FEE0FDC39FEE95
+:102710006480F87480985005ED9440400B9000F56B
+:10272000E4F09000F4F0D23BD007D006D005D00002
+:09273000D0D0D082D083D0E03279
+:1024FE004177616B6520536F757263653A57505F14
+:10250E00466C6167303A307825782C57505F466CB0
+:10251E006167313A307825782C57505F466C616789
+:10252E00333A307825782E286C696E653A25642901
+:10253E000D0A00536C656570205374617465202814
+:10254E006C696E653A2564290D0A004348475F534E
+:10255E0054413A25642C53545F564F583A307825DF
+:10256E00782C535441303A307825782C53544131DD
+:10257E003A307825782C535441323A307825782CDD
+:10258E00535441333A307825782C535441343A30F1
+:10259E007825782E4465635F536C6565703A2564C3
+:1025AE000D0A004465636E745F536C656570446517
+:1025BE006C61792052656C6F61642E0D0A00456E58
+:1025CE00746572205374616E646279204D6F646518
+:0425DE00210D0A00C1
+:101DBD004300DE0402024100DB004100DC00C138BB
+:0E1DCD00C1374100DD004100E1004100DA00B5
+:102DD400E4FB7D04FF122CDAE4FB7D047F01122C5A
+:102DE400DAE4FB7D047F02122CDAE4FB7D047F032A
+:032DF400022CDAD4
+:1007B600303856C238E49000DCF0900005F0A3F023
+:1007C600FBFAFDFF122A3BE4900005F0A3F0FBFACA
+:1007D600FD7F01122A3BE4900005F0A3F0FBFAFD31
+:1007E6007F02122A3BE4900005F0A3F0FBFAFD7F9E
+:1007F60003122A3B9000797402F0900078F0900082
+:100806007AF0900077F0D2442220320C200D0302B9
+:1008160008C5300F030208C5203305D233D238226B
+:10082600900079E06402601A900005E4F0A3740A6F
+:10083600F07B147A007D02E4FF122A3B9000797463
+:1008460003F0900078E06402601A900005E4F0A3DB
+:10085600740AF07B147A007D027F01122A3B900015
+:10086600787403F090007AE06402601A900005E460
+:10087600F0A3740AF07B147A007D027F02122A3BF1
+:1008860090007A7403F0900077E06402601A90009A
+:1008960005E4F0A3740AF07B147A007D027F03124C
+:1008A6002A3B9000777403F0200D03020B9E900004
+:1008B600DCE0C3942850030209FED20FD23822305E
+:1008C600330CC233C235C234C23FC20ED23778159A
+:1008D600E6FF70030209D86403705C203505D23543
+:1008E600022DD4E4900005F0A3F0FBFA7D01FF127F
+:1008F6002A3BE4900005F0A3F0FBFA7D017F01128C
+:100906002A3BE4900005F0A3F0FBFA7D017F02127A
+:100916002A3BE4900005F0A3F0FBFA7D017F031269
+:100926002A3B9000797401F0900078F090007AF0FC
+:10093600900077F00209CF20340ED234C235D23877
+:10094600E49000E1F00209CF9000DCE0C39401508E
+:1009560057E004F09000E1E014601A146027146078
+:100966003424037064900079E06404605C7B017D4C
+:1009760004E4FF802E900078E06404604C7B017DE7
+:10098600047F01801E90007AE06404603C7B017D58
+:10099600047F02800E900077E06404602C7B017D6A
+:1009A600047F03122CDA80219000DCE0C3940F5000
+:1009B60005E004F08013E49000DCF09000E1E00430
+:1009C600F0E0C394044002E4F0C23FC20EC223D258
+:1009D600362230340AC234122DD4D238D2372220ED
+:1009E6003F0C203609200E06202303020B9E9000A2
+:1009F600DCE0FFC394015004E004F022EFC39464EA
+:100A06004003020B499000DCE004F0781BE6C39437
+:100A1600195037900079E064037003020B9EE4904E
+:100A26000005F0A3F07B64FA7D03FF122A3B9000D9
+:100A3600797404F0E4900005F0A3F0FBFAFD7F0161
+:100A4600122A3B90007874028032781BE6C39432F7
+:100A56005041E4900005F0A3F0FBFA7D01FF122A55
+:100A66003B9000797401F0E4900005F0A3F0FBFAE6
+:100A76007D017F01122A3B9000787401F0E490001A
+:100A860005F0A3F0FBFAFD7F02122A3B90007A7470
+:100A9600028048781BE6C3944B5057E4900005F05B
+:100AA600A3F0FBFA7D01FF122A3B9000797401F056
+:100AB600E4900005F0A3F0FBFA7D017F01122A3BCA
+:100AC6009000787401F0E4900005F0A3F0FBFA7D45
+:100AD600017F02122A3B90007A7401F0E49000052F
+:100AE600F0A3F0FBFAFD7F03122A3B900077740215
+:100AF600F022781BE6C394644003020B9EE4900048
+:100B060005F0A3F0FBFA7D01FF122A3BE4900005F5
+:100B1600F0A3F0FBFA7D017F01122A3BE490000569
+:100B2600F0A3F0FBFA7D017F02122A3BE490000558
+:100B3600F0A3F0FBFA7D017F03122A3B9000797443
+:100B4600018048C23FC236C20EC223E4900005F0BF
+:100B5600A3F0FBFAFDFF122A3BE4900005F0A3F098
+:100B6600FBFAFD7F01122A3BE4900005F0A3F0FB9F
+:100B7600FAFD7F02122A3BE4900005F0A3F0FBFA8F
+:100B8600FD7F03122A3B9000797402F0900078F002
+:080B960090007AF0900077F066
+:010B9E002234
+:102E3B009000D8E0FF04F01223AF9000D8E0B40666
+:102E4B000204F09000D8E0C3940840037402F0220F
+:102E7A00122D7A121EB112287A302411C224122578
+:0E2E8A00E2122AFE1227391207B61212712226
+:1018DA00E4900000F09000DEE0FFA3E0FE6F7003EA
+:1018EA0002197DA3EEF09000DEE0A3F024FE60353D
+:1018FA0014606614606A24036003021AFC900005EF
+:10190A00E4F0A37403F07B647A007D02E4FF122AF8
+:10191A003B900005E4F0A37403F07B647A007D0237
+:10192A007F01022A3B300F09D23E75E80CC20DC274
+:10193A000F7BFF7A2479FEAFF6900004E4F0A3EF60
+:10194A00F0AFF8A3E4F0A3EFF0AFFAA3E4F0A3EF4B
+:10195A00F0A37402F0A30480169000F1740FF02231
+:10196A007BFF7A2579419000047402F0A3741BF07E
+:10197A00021A839000DFE024FE603514607614704A
+:10198A0003021A9624036003021AFC9000DAE004A8
+:10199A00F0E0C394085003021AFC9000DE7402F0CF
+:1019AA00E49000DAF0781CE66003021AFC021A8F4F
+:1019BA00E5F6700CE5F87008E5FA7004E5E1602DCB
+:1019CA009000DE7403F0E5F6540FFFE4FCFDFE7BA5
+:1019DA0008FAF9F8C312182870069000DE7404F0A9
+:1019EA0075E11F75F60F75F8FC75FABC229000DEDA
+:1019FA007403F022202803021AFCC22875FE6E9096
+:101A0A000000E5FFF07BFF7A2579597815E6FF900B
+:101A1A000004E4F0A3EFF0900000E0FF900006E479
+:101A2A00F0A3EFF0AFE2A3E4F0A3EFF0AFE3A3E497
+:101A3A00F0A3EFF0AFE4A3E4F0A3EFF0AFE5A3E483
+:101A4A00F0A3EFF0AFE6A3E4F0A3EFF09000F1E02B
+:101A5A00FF900012E4F0A3EFF0120F779000F1E08C
+:101A6A00D394004017E014F0204403021AFCC24445
+:101A7A00740FF07BFF7A2579B1020F777BFF7A2505
+:101A8A0079CC120F779000DE7404F022122F1250D4
+:101A9A005B122DA87F04122BB1122F26E4900005A9
+:101AAA00F0A3F0FBFAFDFF122A3BE4900005F0A335
+:101ABA00F0FBFAFD7F01122A3BE4900005F0A3F047
+:101ACA00FBFAFD7F02122A3BE4900005F0A3F0FB2B
+:101ADA00FAFD7F03122A3B9000797402F090007895
+:101AEA00F090007AF0900077F0022F7C9000DE747C
+:021AFA0002F0F8
+:011AFC0022C7
+:102D4800302726C2279000DBE0FF04F0EF14600C68
+:102D580014600E24027012122E3B800D122E7A80FF
+:102D6800081218DAE49000DBF0302905C229120BAA
+:022D78009F2298
+:101AFD00426F7820436C6F73652E286C696E653A62
+:101B0D002564290D0A00426F78204F70656E2E28CE
+:101B1D006C696E653A2564290D0A004F70656E2F4C
+:101B2D00436C6F736520426F782C45617270686FDE
+:101B3D006E657320496E20426F78284E756D3A257B
+:101B4D00642928566F785374613A30782578292E98
+:101B5D000D0A004F70656E20426F7820434D442072
+:101B6D005458204F7665722E0D0A004F70656E2009
+:101B7D00426F7820416E642045617270686F6E65AA
+:101B8D0020476574496E284E756D3A25642928568F
+:101B9D006F785374613A30782578292E0D0A0043F9
+:101BAD006C6F736520426F7820416E6420466F72B2
+:101BBD00636520566F6C746167652055702E0D0A34
+:101BCD0000564F5820566F75742035562853544182
+:101BDD00313A307825782C6C696E653A2564292E5A
+:101BED000D0A00564F58204348472046756C6C2E01
+:101BFD000D0A00564F582047657420496E746F20AA
+:101C0D00536C6565702E0D0A005258315F42756632
+:101C1D006665725B305D3A307825782C5258315FAD
+:101C2D004275666665725B315D3A307825782C5267
+:101C3D0058315F4275666665725B325D3A30782564
+:101C4D00782C5258315F4275666665725B335D3A2A
+:101C5D00307825782C5258315F4275666665725B17
+:101C6D00345D3A307825782C5258315F427566666E
+:101C7D0065725B355D3A307825782C5258315F426C
+:101C8D0075666665725B365D3A307825782C6C69C1
+:101C9D006E653A25640D0A0000000000000000008A
+:101CAD000000000000000000000000000000000027
+:101CBD000000000000000000000000000000000017
+:101CCD000000000000000000000000000000000007
+:081CDD000000000000000000FF
+:101DDB00C112C10EC110410073FFC10D42004D0075
+:101DEB000042004B000042007100001A6900000025
+:101DFB0000000000000000000000000000000000D8
+:101E0B000000000000000020248300000000000000
+:101E1B0000000000000000000000000000000000B7
+:101E2B000000000000000000000000000000410066
+:101E3B00700042006E00004200740000C10FC1111F
+:031E4B0001A700EC
+:102BB100EF24FE601E14602814602F24FE6035246B
+:102BC10005703D43BD8853BDBB75FE6F53FFF24396
+:102BD100FF092243BDCC75FE6F53FFFE43FF0C225C
+:102BE10053BD7753B7CF43B7302253B7CF43B70362
+:102BF10053BD772253B7CC53BD7775FE6A43FF307F
+:012C010022B0
+:10127100203C0302156F303E7B20100A7D3FE4FFC6
+:1012810012000ED210227F03122BB1E490004AF01B
+:10129100900048F0A3F0C200C201D20B9000F2E02E
+:1012A100702FC20ED202D203C205C208C204C20903
+:1012B100C20AD212C23790006CF0A3F0900076F00F
+:1012C1007BFF7A1A79FD9000047402F0A3740C80FC
+:1012D10017C202C203D205C2067BFF7A1B791390A3
+:1012E10000047402F0A37419F0120F77C210C20D3A
+:1012F100C20FC23E900048E0C3940550030214FDA2
+:10130100300B05C20B0214B820004CD200E5E354A7
+:10131100A06021E5E354A0FFE4FCFDFE7BA0FAF907
+:10132100F8C312182890007070057402F0800A74D6
+:1013310001F08005E4900070F07BFF7A1B79289022
+:101341000070E0FF900004E4F0A3EFF0AFE3A3E44A
+:10135100F0A3EFF0120F772005030213F8200143E9
+:1013610090004AE0FFD39414501EEF54037003FD24
+:10137100800990004AE020E0077D017F0612207776
+:1013810090004AE004F0806F7F04122BB1E49000DA
+:101391004AF0D201D211C2127BFF7A1B7960120F7F
+:1013A100778054781DE6704F301104C2118040E5FA
+:1013B100E354A0FBE4FAF9F8900047E0FFE4FCFDF8
+:1013C100FEC31218286030E5E354A06004D20ED2A7
+:1013D100387BFF7A1B7978900070E0FF900004E47D
+:1013E100F0A3EFF0AFE3A3E4F0A3EFF0120F77E582
+:1013F100E354A0900047F020020302156C303742FD
+:1014010020101F7D3FE4FF12000ED210D212E49093
+:10141100006CF0A3F0900076F0900048F0C208D282
+:1014210004227F03122BB17BFF7A1B79AC120F7759
+:10143100C210900048E0D3940350030214FDC23758
+:10144100804E20044B900049E0FFD39414501CEFD0
+:1014510054037003FD8009900049E020E0077D01FD
+:101461007F811220779000490214FD90004AE0FF2D
+:10147100D39414501BEF54037003FD800990004A6C
+:10148100E020E0077D017F0712207790004A806C01
+:10149100E5E8540C6026200F1E90004AE004F0E0BD
+:1014A100C3940550030215A7E4F075E80C7F0312FD
+:1014B1002BB1D20DC212227F04022BB1C20DC20F79
+:1014C1003003257F03122BB17BFF7A1B79CEAFE36B
+:1014D100900004E4F0A3EFF0A37403F0A37440F0D0
+:1014E100120F77C20302156C200843E5E320E003E5
+:1014F10030402A900048E0D394285004E004F022C0
+:101501007BFF7A1B79F0120F77D208E490004AF042
+:10151100900048F0C2097F04122BB1804E90006DFB
+:10152100E070487B017A00794F120086803D90007F
+:101531004AE0FFD39414501EEF54037003FD800959
+:1015410090004AE020E0077D017F80122077900023
+:101551004AE004F08015200912D2097F04122BB150
+:10156100C2127BFF7A1C7900120F77C20722200773
+:101571000BD2077F04122BB1C2128022E5E354A0E3
+:10158100FBE4FAF9F8900047E0FFE4FCFDFEC3122A
+:1015910018286012E5E354A06004D20ED238E5E3C6
+:0615A10054A0900047F089
+:0115A7002221
+:0600860090000012186C4E
+:10008C00900076E0147003020163147003020242C4
+:10009C001470030202B314700302041F24046003DF
+:1000AC0002059F90000012184C90001E1216B760AB
+:1000BC000302059F78A7E6D3940A50260690001AEF
+:1000CC00743F121717300C0302059F900000121892
+:1000DC004C90001A1216B7FDE4FF12000ED20C025F
+:1000EC00059FE478A7F6C20C90000012184C900003
+:1000FC0016E4121717900015E4121717900013E46A
+:10010C00121717900012E4121717900011E412172F
+:10011C0017900010E4121717900018E4121717909C
+:10012C000017E412171790000EE4F5F01217FB906D
+:10013C00000CE4F5F01217FB900019E4121717905D
+:10014C00001B743F1217179000767401F0E49000B6
+:10015C004DF0A3F002059FE5E35408FFE4FCEF60CB
+:10016C001CE5E35404601690000012184C90001E1D
+:10017C007401121717E4900076F002059FE5E35422
+:10018C0008FFE4FCEF704A9000CDE0FEA3E0FF9086
+:10019C00000012184C900002EE8FF01217FB7D0538
+:1001AC00121739EF7802C333CE33CED8F9FF900053
+:1001BC000012184C900006EE8FF01217FB9000CE38
+:1001CC00E025E0FF9000CDE03390000A8FF012178D
+:1001DC00FBE5E35404FFE4FCEF704F9000CBE0FE32
+:1001EC00A3E0FF90000012184CEE8FF01217DC9079
+:1001FC0000CBE0FEA3E0FF7D05121739EF7802C3B8
+:10020C0033CE33CED8F9FF90000012184C90000476
+:10021C00EE8FF01217FB9000CCE025E0FF9000CBA6
+:10022C00E0339000088FF01217FB90000012184C6E
+:10023C0090001D020594D390004EE0940590004D63
+:10024C00E094005002806FE490004DF0A3F0E5E3E1
+:10025C005408FFEF701F9000CDE0FEA3E0FF90006C
+:10026C000012184C90000EEE8FF01217FB90001835
+:10027C007401121717E5E35404FFE4FCEF701F90B0
+:10028C0000CBE0FEA3E0FF90000012184C90000C95
+:10029C00EE8FF01217FB90001774011217179000D5
+:1002AC00767403F002059FD390004EE09402900008
+:1002BC004DE09400500AE475F00112178E02059F70
+:1002CC00E490004DF0A3F090000012184C90000A3E
+:1002DC001217A4FFAEF090000E1217A4D39FE5F0F6
+:1002EC009E501C90000012184C9000081217A4FF8E
+:1002FC00AEF090000C1217A4D39FE5F09E4011E4D1
+:10030C00900076F090000012184C90001D0203E152
+:10031C0090000012184C9000181216B76401706D02
+:10032C0090000E1217A4FFAEF0D39414EE9400506C
+:10033C0031E5E330E31F900016740112171790009B
+:10034C001A1216B7C3943F404490000012184C90F8
+:10035C000018E4803590000012184C9000137401C2
+:10036C00802890000012184C9000061217A4FDD3A0
+:10037C00EF9DEE95F0900000400812184C90001381
+:10038C00800612184C90001674011217179000007A
+:10039C0012184C9000171216B76401600302059FE7
+:1003AC0090000C1217A4FFAEF0D39414EE940050EE
+:1003BC0034E5E330E2229000157401121717900017
+:1003CC001A1216B7C3943F500302059F90000012F7
+:1003DC00184C900017E4803590000012184C9000D7
+:1003EC00127401802890000012184C90000412170F
+:1003FC00A4FDD3EF9DEE95F0900000400812184C30
+:10040C00900012800612184C9000157401121717E8
+:10041C0002059FD390004EE0941490004DE09400A0
+:10042C005031E475F00112178E9000CDE0FEA3E080
+:10043C00FF90000012184C90000EEE8FF01217FB7C
+:10044C009000CBE0FFA3E090000CCF8FF01217FBD5
+:10045C0002059FE490004DF0A3F090000012184CA0
+:10046C009000181216B7640160030204FD90001787
+:10047C001216B76401707A9000061217A4FFAEF042
+:10048C0090000E1217A4FDACF0C39FEC9E40189088
+:10049C00000012184C90000A1217A4FFD3ED9FEC29
+:1004AC0095F0500302059F90000012184C90000428
+:1004BC001217A4FFAEF090000C1217A4FDACF0C301
+:1004CC009FEC9E401890000012184C9000081217D8
+:1004DC00A4FFD3ED9FEC95F0500302059F90000014
+:1004EC0012184C9000167401121717900015020583
+:1004FC009490000012184C9000181216B7640170FA
+:10050C00419000061217A4FFAEF090000E1217A433
+:10051C00FDACF0C39FEC9E401590000012184C905F
+:10052C00000A1217A4FFD3ED9FEC95F04014900035
+:10053C000012184C90001674011217179000767464
+:10054C0002F090000012184C9000171216B76401BC
+:10055C0070419000081217A4FFAEF090000C121717
+:10056C00A4FDACF0D39FEC9E501590000012184CDB
+:10057C009000041217A4FFC3ED9FEC95F05014905B
+:10058C00000012184C900015740112171790007689
+:10059C007402F090000012184C9000181216B7FF5D
+:1005AC006401600D9000171216B764016003020716
+:1005BC009C9000131216B7FE6401600D900012128D
+:1005CC0016B764016003020716EFB4011E90001702
+:1005DC001216B7B40115EEB401119000131216B730
+:1005EC00B401089000147401121717900018121619
+:1005FC00B7FFB401189000171216B77010900013C3
+:10060C001216B76401702390001404801AEF701A4C
+:10061C009000171216B7B401119000121216B7B44D
+:10062C0001089000147401121717900013E41217AC
+:10063C0017900012E41217179000141216B76401E9
+:10064C0060030207B590000012184C90001A1216A5
+:10065C00B7D39400400890001A74FE1216E4900070
+:10066C00191216B7FF90001A1216B7D39F401B90A1
+:10067C0000D5E024C8FF9000D4E03400FEC3900005
+:10068C00D1E09F9000D0E09E504890000012184C92
+:10069C009000191216B7FF90001A1216B7D39F903C
+:1006AC000000501312184C90001AEF1217179000FC
+:1006BC001CE4121717801312184C90001C740112B2
+:1006CC00171790001A74021216E49000767404F056
+:1006DC0080139000767402F090000012184C900079
+:1006EC001CE4121717E490004DF0A3F090000012D8
+:1006FC00184C900014E412171790001C1216B7FF38
+:10070C0090001A1216B7FD02079990000012184CAF
+:10071C009000161216B76401600D9000151216B7F2
+:10072C00640160030207B5900016E41217179000DD
+:10073C0015E412171790001A1216B7C3943F500EF7
+:10074C0090000012184C90001A74021216E49000DB
+:10075C00767404F090000012184C90001B1216B71F
+:10076C00FF90001A1216B7C39F4013900000121886
+:10077C004C90001AEF1217179000767401F090004D
+:10078C000012184C90001A1216B7FDE4FF02000E6E
+:10079C00900076E0D394024010E4F0900000121820
+:0907AC004C90001E740112171795
+:0107B5002221
+:0B2C970090004312186C900046EDF016
+:102CA200E4FE900046E0FD14F0ED6029900043E45C
+:102CB20075F00112185512169E6EFEE4FFEFC394D2
+:102CC2000850DFEE30E007C313648CFE8004EEC3CD
+:072CD20013FE0F80E8AF06BE
+:012CD90022D8
+:08207700900000EFF0A3EDF072
+:10207F00E4A3F078037C007D017BFF7A1C79A5FE39
+:10208F007F40121678E4900003F0A37455F0A37408
+:10209F00AAF0900000E0FE900007F0900001E0FD34
+:1020AF00900073F0EE12187520D00120FF02214E20
+:1020BF0003215B06215B0721A08021A8810000215D
+:1020CF00B69000067402F0ED700E9000087402F0E6
+:1020DF00E4900071F00221B6900001E0640160030A
+:1020EF000221B690000804F0E4900072F00221B6CD
+:1020FF009000067420F07F05900001E075F012A4A7
+:10210F0024832FF8E6FE74032FF582E43400F58361
+:10211F00EEF00FEFB412E17F17EFC3940D400302FF
+:10212F0021B6900001E075F00DA424692FF8E6FEAA
+:10213F0074032FF582E43400F583EEF00F80DA900C
+:10214F0000067402F090000804F0805B90000674A3
+:10215F0005F09000087401F0781BE6A3F0A374203B
+:10216F00F0900001E0FF700D90006EE07002800FA4
+:10217F0090006F8015EFB4012E90006FE070089003
+:10218F00000B74FFF0802090006EE090000BF08049
+:10219F00169000067401F0800E9000067402F09005
+:1021AF000070E0900008F0900006E02404FF90001B
+:1021BF0002F0FD7B017A007903122C97900002E068
+:1021CF002403F582E43400F583EFF07F01122BB185
+:1021DF00900001E0FF700843BD0253BDFE8016EF73
+:1021EF00B4010843BD2053BDEF800AEFB4FF06438F
+:1021FF00BD2253BDEE900002E02402FFE433FE7BCC
+:10220F00017A007903122D15900001E0FF7007533A
+:10221F00BDFD43BD0122EFB4010753BDDF43BD1028
+:0B222F0022EFB4FF0653BDDF43BD11DA
+:01223A002281
+:1028F800EF24FA605014604D24067069E4FE742DCC
+:102908002EF8E6FF900073E075F012A424832EF8E9
+:10291800A6070EEEB412E7E4FE743F2EF8E6FF9029
+:102928000073E075F00DA424692EF8A6070EEEB426
+:1029380008E7900073E0700690007104F0229000A0
+:10294800727401F022782DE6B4E30D90004B740107
+:10295800F008E690006EF02290004C7401F0782E9A
+:05296800E690006FF095
+:01296D002247
+:10287A00E4900000F0303B75C23B7BFF7A1C79166E
+:10288A007829E6FF900004E4F0A3EFF008E6FFA33E
+:10289A00E4F0A3EFF008E6FFA3E4F0A3EFF008E604
+:1028AA00FFA3E4F0A3EFF008E6FFA3E4F0A3EFF040
+:1028BA0008E6FFA3E4F0A3EFF008E6FFA3E4F0A321
+:1028CA00EFF0A37407F0A3746DF0120F777B007A10
+:1028DA00007929782BE62403FD122C97782BE6241D
+:0D28EA002CF8E6B50707782CE6FF1228F859
+:0128F70022BE
+:101E4E00011C00011B00C140C141011A5060280055
+:101E5E00A30BB80BEA0C1C0C800CB20CE40D160D87
+:101E6E00480D7A0DAC0DF70E420E880ED80F0A0FE4
+:091E7E003C0F870FD2101D106803
+:10273900E4FF7815E6B40225EF25E024A3F582E449
+:102749003400F583E0FCA3E02432FDE43CFCC390B3
+:1027590000D5E09D9000D4E09C50208023EF25E037
+:1027690024A3F582E43400F583E0FCA3E0FDC390E3
+:1027790000D5E09D9000D4E09C40050FEFB414B261
+:10278900781CE6FEEFD39E781A400306800116E511
+:10279900E1600DE4F5E1781CEFF675F005A418F693
+:1027A900781AE6FED394965006EEC3940A500D7833
+:1027B9001CEFF675F005A418F6187650781CE6FF9C
+:1027C900D394005003D24122EFD394015002D24056
+:0127D90022DD
+:101E87004100E5004100E8004100E4004200E200B3
+:101E9700004100E600C126C127C129C125C124C1CF
+:091EA700284100E700C12AC12B0B
+:10296E009000E7E06062E4F0D2269000E5E004F02B
+:10297E00E0C394054004E4F0D2279000E8E004F0B0
+:10298E00E0C3940A4004E4F0D2299000E2E475F02A
+:10299E000112178EC39000E3E094649000E2E0947D
+:1029AE00004006E4F0A3F0D2249000E4E004F0E04E
+:1029BE00C394FA4013E4F0D2259000E6E004F0E070
+:0929CE0094044004E4F0D2282234
+:03000B00022DF7CC
+:102DF700C0E0C083C082C0D074FC258CF58C74669B
+:102E0700258AF58A9000E77401F0D0D0D082D0836C
+:032E1700D0E032D6
+:0E2F5400758901758CFC758A66D2A9D28C2213
+:102C5300EFD39401501675FE0EEF25E02404FE74A5
+:102C630003A806088002C333D8FC801475FE0FEF57
+:102C730024FE25E0FE7403A806088002C333D8FCB3
+:102C8300F452FFEFB4040C75FE0F53FFF075FE0E04
+:042C930053FF0F22BA
+:102EFC0075FE54EF5407F5FF75FE56AF058FFF7541
+:062F0C00FE5375FF0122D7
+:102C0200EFD39401501875FE0EEF25E02404FE74F4
+:102C120003A806088002C333D8FC42FF801675FE63
+:102C22000FEF24FE25E0FE7403A806088002C333DA
+:102C3200D8FC42FFEF70038DCE22EFB401038DCF9B
+:102C420022EFB402038DDE22EFB40304AF058FDF5F
+:012C5200225F
+:032FFD00010102CD
+:1027FA00022ECCE493A3F8E493A34003F68001F2FB
+:10280A0008DFF48029E493A3F85407240CC8C333DF
+:10281A00C4540F4420C8834004F456800146F6DFAE
+:10282A00E4800B0102040810204080901CE5E47E3D
+:10283A00019360BCA3FF543F30E509541FFEE493A3
+:10284A00A360010ECF54C025E060A840B8E493A36A
+:10285A00FAE493A3F8E493A3C8C582C8CAC583CA95
+:10286A00F0A3C8C582C8CAC583CADFE9DEE780BE4D
+:011EB0000031
+:1015A800E709F608DFFA8046E709F208DFFA803E25
+:1015B80088828C83E709F0A3DFFA8032E309F60812
+:1015C800DFFA8078E309F208DFFA807088828C837A
+:1015D800E309F0A3DFFA806489828A83E0A3F6082E
+:1015E800DFFA805889828A83E0A3F208DFFA804C08
+:1015F80080D280FA80C680D4806980F280338010DF
+:1016080080A680EA809A80A880DA80E280CA803347
+:1016180089828A83ECFAE493A3C8C582C8CCC583BF
+:10162800CCF0A3C8C582C8CCC583CCDFE9DEE7808F
+:101638000D89828A83E493A3F608DFF9ECFAA9F00E
+:10164800EDFB2289828A83ECFAE0A3C8C582C8CC64
+:10165800C583CCF0A3C8C582C8CCC583CCDFEADE7D
+:10166800E880DB89828A83E493A3F208DFF980CCDF
+:1016780088F0EF60010E4E60C388F0ED2402B404D8
+:101688000050B9F582EB2402B4040050AF2323457F
+:0616980082239015F87397
+:10169E00BB010689828A83E0225002E722BBFE024A
+:0916AE00E32289828A83E493227D
+:1016B700BB010CE58229F582E5833AF583E02250E8
+:1016C70006E92582F8E622BBFE06E92582F8E22232
+:0D16D700E58229F582E5833AF583E493224C
+:1016E400BB010FF8E58229F582E5833AF583E0280A
+:1016F400F0225009C58229F8E58226F622BBFE09AC
+:10170400C58229F8E22582F222F8EA2583F583E9E5
+:03171400932822F5
+:10171700F8BB010DE58229F582E5833AF583E8F008
+:10172700225006E92582C8F622BBFE05E92582C8B4
+:02173700F2229C
+:10173900BC000BBE0029EF8DF084FFADF022E4CC94
+:10174900F875F008EF2FFFEE33FEEC33FCEE9DEC5D
+:10175900984005FCEE9DFE0FD5F0E9E4CEFD22EDA3
+:10176900F8F5F0EE8420D21CFEADF075F008EF2FED
+:10177900FFED33FD4007985006D5F0F222C398FDDE
+:051789000FD5F0EA227B
+:10178E00C5F0F8A3E028F0C5F0F8E58215827002E6
+:06179E001583E038F02283
+:1017A400BB0110E58229F582E5833AF583E0F5F083
+:1017B400A3E0225009E92582F886F008E622BBFE60
+:1017C4000AE92582F8E2F5F008E222E5832AF583A6
+:0817D400E993F5F0A3E993226B
+:1017DC00BB010A89828A83F0E5F0A3F0225006F758
+:0F17EC0009A7F01922BBFE06F3E5F009F3192255
+:1017FB00F8BB0111E58229F582E5833AF583E8F020
+:10180B00E5F0A3F0225009E92582C8F608A6F022DC
+:0D181B00BBFE09E92582C8F2E5F008F222C3
+:10182800EB9FF5F0EA9E42F0E99D42F0E89C45F016
+:01183800228D
+:10183900E8600FECC313FCED13FDEE13FEEF13FF8D
+:03184900D8F122B1
+:09184C00E0FBA3E0FAA3E0F9229D
+:10185500F8E0FBA3A3E0F925F0F0E582158270021C
+:071865001583E0FA38F022C0
+:09186C00EBF0A3EAF0A3E9F0227D
+:10187500D083D082F8E4937012740193700DA3A302
+:1018850093F8740193F5828883E473740293686016
+:06189500EFA3A3A380DF16
+:10189B00EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02DDA
+:1018AB00FDE43CFCE8A42EC8C5F03DFDE43CFCEF98
+:0D18BB00A4FFE5F028FEE43DFDE43CFC2226
+:100F0C00E5082404F582E43400F583E0050822901A
+:100F1C000001301A03900004E475F0011218550218
+:100F2C00169E2013E97F2ED2138018EF540F2490B5
+:100F3C00D43440D4FF30170BEF24BFB41A00500345
+:100F4C002461FFE50960021509050CE50C7002052A
+:100F5C000B301A0E900001E475F001121855EF02D7
+:100F6C0018C8022F467403D21A8003E4C21AF5087B
+:100F7C0090000112186CE4F509F50BF50CE509600D
+:100F8C00077F20120F4F80F5750AFFC214C213C2DF
+:100F9C0015C216C218C219C21B120F1BFF700D30DE
+:100FAC001A057F00120F60AF0CAE0B22B4255FC286
+:100FBC00D5C217120F1BFF24D0B40A00501A75F0BB
+:100FCC000A780930D50508B6FF0106C6A426F62016
+:100FDC00D5047002D21680D924CFB41A00EF500475
+:100FEC00C2E5D217021161D21480C6D21380C0D2CE
+:100FFC001580BCD2D580BAD21880B47F20120F4F86
+:10100C002015077401B5090040F1120F0CFF120FE7
+:10101C004F020F89D21BD2198095120F0CFB120FA5
+:10102C000CFA120F0CF94A4B700679327A127BFFCC
+:10103C0020152EE509602A7E008E8275830012161B
+:10104C00B760060EEE650A70F0C2D5EBC0E0EAC0E0
+:10105C00E0E9C0E0EE1211A8D0E0F9D0E0FAD0E05F
+:10106C00FB12169EFF60AAEBC0E0EAC0E0E9C0E00C
+:10107C00120F4FD0E02401F9D0E03400FAD0E0FB9D
+:10108C00E50A0460DCD50AD980877BFF7A1179A444
+:10109C00D215809C791080027908C219C21B800875
+:1010AC00D2D5790A8004790AC2D5E50A047002F512
+:1010BC000AE4FAFDFEFF120F0CFC7B08201413123D
+:1010CC000F0CFD7B1030130A120F0CFE120F0CFFCD
+:1010DC007B20EC3382D592D55013C3E43013069F9A
+:1010EC00FFE49EFEE42014039DFDE49CFCE4CBF89D
+:1010FC00C214EC700CCFCECDCCE824F8F870F38091
+:10110C0017C3EF33FFEE33FEED33FDEC33FCEB3363
+:10111C00FB994002FB0FD8E9EB301405F8D0E0C482
+:10112C0048B214C0E00AEC4D4E4F78207B0070C2E0
+:10113C00EAB50A0040BCC0E01211AAD0F0D0E02001
+:10114C001404C4C0E0C4B214C0F0120F38D0F0D5EF
+:10115C00F0EB020F8912187510265310A0580FF7D8
+:10116C004C0FF34210A44F10AC4410AC49100C437C
+:08117C0010B2551096461096C2
+:10118400451096471252500FFB2D0FFF2E10222BA5
+:10119400100323102020123B2A0FBB480000101A12
+:1011A4003F3F3F00790AA2D5201614301809B91020
+:1011B400020404B9080104A2D52019025001042034
+:1011C40015689215B509005034C0E07F2030161917
+:1011D4007F30A21572197218500F121201C215C273
+:1011E40019C218C21B7F30800F301803E9C0E01207
+:1011F4000F4F301803D0E0F9D0E0B509CC30181700
+:101204007F30B9100C120F4F7F583017077F78804A
+:1012140003B90803120F4F3015057F2D020F4F7FBE
+:1012240020201BF87F2B2019F322921580CF286EE3
+:10123400756C6C2900D214120F0C3014F8C2147897
+:101244000930D50108F6020FBB2D50434958120F3F
+:101254000C2403B405004001E490124D93120F4096
+:0D126400743A120F40D2167509040210A052
+:1018C800BB010689828A83F0225002F722BBFE01FF
+:0218D800F322F9
+:00000001FF
diff --git a/Out/8837_EVB_241227_1754_9B89_010102.bin b/Out/8837_EVB_241227_1754_9B89_010102.bin
new file mode 100644
index 0000000..c9ad130
Binary files /dev/null and b/Out/8837_EVB_241227_1754_9B89_010102.bin differ
diff --git a/Project/SY8837_Demo.uvgui.GH b/Project/SY8837_Demo.uvgui.GH
index 08b7d2a..d562478 100644
--- a/Project/SY8837_Demo.uvgui.GH
+++ b/Project/SY8837_Demo.uvgui.GH
@@ -110,8 +110,8 @@
0
- 724
- 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000006000000030000000100000036453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF40453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C766F785C766F785F6D6F64756C652E63000000000C766F785F6D6F64756C652E6300000000FFDC7800FFFFFFFF4C453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6469736368617267655C6469736368617267655F6D6F64756C652E6300000000126469736368617267655F6D6F64756C652E6300000000BECEA100FFFFFFFF41453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C757365726170705C757365726170702E630000000009757365726170702E6300000000F0A0A100FFFFFFFF40453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5372635C737461727475705C535441525455502E413531000000000B535441525455502E41353100000000BCA8E100FFFFFFFF3B453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C757365725C757365722E680000000006757365722E68000000009CC1B600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000AB08000066000000000F0000DD020000
+ 804
+ 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000007000000010000000100000036453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF40453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C766F785C766F785F6D6F64756C652E63000000000C766F785F6D6F64756C652E6300000000FFDC7800FFFFFFFF4C453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6469736368617267655C6469736368617267655F6D6F64756C652E6300000000126469736368617267655F6D6F64756C652E6300000000BECEA100FFFFFFFF41453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C757365726170705C757365726170702E630000000009757365726170702E6300000000F0A0A100FFFFFFFF40453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5372635C737461727475705C535441525455502E413531000000000B535441525455502E41353100000000BCA8E100FFFFFFFF3B453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C757365725C757365722E680000000006757365722E68000000009CC1B600FFFFFFFF39453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6B65795C6B65792E6300000000056B65792E6300000000F7B88600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000AB08000066000000000F0000DD020000
@@ -134,7 +134,7 @@
16
- 7A08000009010000160D000099010000
+ 7408000066000000100D0000F6000000
@@ -1799,7 +1799,7 @@
3312
- 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E6500200000000000007A08000009010000160D000099010000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000260C000009010000160D0000E3020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF270100004F0000002B010000C60200000100000002000010040000000100000012FFFFFF87060000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000008607000009010000AD08000080030000000000004F00000027010000C60200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB0900000180008000000000000086070000D3020000160D000077030000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000C602000080070000CA020000010000000100001004000000010000004CFEFFFFD8010000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000008607000084030000060F0000A004000000000000CA02000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000
+ 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E6500200000000000007408000066000000100D0000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000200C000066000000100D000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF270100004F0000002B010000C60200000100000002000010040000000100000012FFFFFF87060000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000008007000066000000A7080000DD020000000000004F00000027010000C60200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000800000000000008007000030020000100D0000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000C602000080070000CA020000010000000100001004000000010000004CFEFFFFD8010000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000080070000E1020000000F0000FD03000000000000CA02000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000
59392
@@ -1838,7 +1838,7 @@
Debug
2373
- 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
+ 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
898
@@ -3603,7 +3603,7 @@
0
100
- 3
+ 1
..\UsrSrc\main.c
0
@@ -3615,27 +3615,27 @@
..\UsrSrc\vox\vox_module.c
- 6
- 1511
- 1539
+ 29
+ 555
+ 575
1
0
..\UsrSrc\discharge\discharge_module.c
- 40
+ 6
158
- 172
+ 176
1
0
..\UsrSrc\userapp\userapp.c
- 18
+ 27
385
- 412
+ 399
1
0
@@ -3650,7 +3650,7 @@
0
- ..\UsrInc\user\user.h
+ E:\todaywork\20241202_tp3410\SY8837_Demo\UsrInc\user\user.h
19
11
26
@@ -3658,6 +3658,15 @@
0
+
+ ..\UsrSrc\key\key.c
+ 0
+ 169
+ 194
+ 1
+
+ 0
+
diff --git a/SY8837_Demo.si4project/Backup/vox_module(2236).h b/SY8837_Demo.si4project/Backup/vox_module(2236).h
new file mode 100644
index 0000000..42a02cb
--- /dev/null
+++ b/SY8837_Demo.si4project/Backup/vox_module(2236).h
@@ -0,0 +1,502 @@
+/*
+ ******************************************************************************
+ *
+ * @file VOX_Module.h
+ * @brief VOL/R module
+ * @ic sy8835
+ *
+ * @version 1.0
+ * @date 2024/11/01 09:59:40
+ * @author Alex Xu
+ *
+ * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
+ * All Rights Reserved
+ *
+ * History:
+ * Revision Date Author Desc
+ * 1.0.0 2024/11/01 Alex build this file
+ ******************************************************************************
+ */
+#ifndef __VOX_MODULE_H__
+#define __VOX_MODULE_H__
+
+/*_____ I N C L U D E S ____________________________________________________*/
+
+#include "define.h"
+
+/*耳机方案商选择*/
+//#define QIANCHENG //岍丞
+//#define ZHONGKELANXUN //中科蓝讯
+#define XIAOMI //小米
+
+/*硬件版本信息*/
+#define HW_VER 0x01 //硬件版本信息,范围0-9
+/*软件版本信息*/
+#define FW_VER 0x001 //程序版本
+
+extern bit Vox_Vout_Enable;
+
+extern bit Earphone_Chg_Flag; //耳机出入盒标志位
+
+extern bit Vox_Output_Short_Flag;
+
+#define IVOX_THN 20 //耳机跟随充电流下降阈值
+
+#define IVOX_THP 200 //耳机跟随充电流上升阈值
+
+
+#define VOL_TYPE 0x00
+
+#define VOR_TYPE 0x01
+
+ /*耳机配对状态*/
+ typedef enum {
+
+ VOX_PAIR_NONE = 0, //无效
+
+ VOX_PAIR_ING, //配对中
+
+ VOX_PAIR_OK, //配对完成
+
+ VOX_PAIR_KEEP, //不处理,保持当前状态
+
+ }e_Vox_Pairing_State;
+
+ /*耳机配对记录*/
+ typedef enum {
+
+ VOX_PAIRED_NONE = 0, //无配对过
+
+ VOX_PAIRED_OK, //有配对记录
+
+ }e_Vox_Paired_State;
+
+#if VOX_ENABLE
+
+/******************************************************************************\
+ Macro definitions
+\******************************************************************************/
+
+/*CHIP_STA1*/
+#define VOX_Sta_Vol_Output_Short_Pos (0U)
+#define VOX_Sta_Vol_Output_Short_Pos_Msk (0x1UL << VOX_Sta_Vol_Output_Short_Pos)
+#define VOL_Output_Short VOX_Sta_Vol_Output_Short_Pos_Msk
+
+#define VOX_Sta_Vor_Output_Short_Pos (1U)
+#define VOX_Sta_Vor_Output_Short_Pos_Msk (0x1UL << VOX_Sta_Vor_Output_Short_Pos)
+#define VOR_Output_Short VOX_Sta_Vor_Output_Short_Pos_Msk
+
+#define VOX_Sta_Vol_Ioff_Pos (2U)
+#define VOX_Sta_Vol_Ioff_Pos_Msk (0x1UL << VOX_Sta_Vol_Ioff_Pos)
+#define VOL_Ioff VOX_Sta_Vol_Ioff_Pos_Msk
+
+#define VOX_Sta_Vor_Ioff_Pos (3U)
+#define VOX_Sta_Vor_Ioff_Pos_Msk (0x1UL << VOX_Sta_Vor_Ioff_Pos)
+#define VOR_Ioff VOX_Sta_Vor_Ioff_Pos_Msk
+
+#define VOX_Sta_Vol_Loadon_Pos (5U)
+#define VOX_Sta_Vol_Loadon_Pos_Msk (0x1UL << VOX_Sta_Vol_Loadon_Pos)
+#define VOL_LoadOn VOX_Sta_Vol_Loadon_Pos_Msk
+
+#define VOX_Sta_Vor_Loadon_Pos (7U)
+#define VOX_Sta_Vor_Loadon_Pos_Msk (0x1UL << VOX_Sta_Vor_Loadon_Pos)
+#define VOR_LoadOn VOX_Sta_Vor_Loadon_Pos_Msk
+
+/* VOL/R Control Register - VOX_CTL0 */
+#define EN_VOL_ADTL_Pos (0U)
+#define EN_VOL_ADTL_Pos_Msk (0x1UL << EN_VOL_ADTL_Pos)
+#define EN_VOL_ADTL EN_VOL_ADTL_Pos_Msk
+
+#define EN_VOR_ADTR_Pos (1U)
+#define EN_VOR_ADTR_Pos_Msk (0x1UL << EN_VOR_ADTR_Pos)
+#define EN_VOR_ADTR EN_VOR_ADTR_Pos_Msk
+
+#define EN_VOL_PU_Pos (2U)
+#define EN_VOL_PU_Pos_Msk (0x1UL << EN_VOL_PU_Pos)
+#define EN_VOL_PU EN_VOL_PU_Pos_Msk
+
+#define EN_VOR_PU_Pos (3U)
+#define EN_VOR_PU_Pos_Msk (0x1UL << EN_VOR_PU_Pos)
+#define EN_VOR_PU EN_VOR_PU_Pos_Msk
+
+#define EN_VOL_VOUT_Pos (4U)
+#define EN_VOL_VOUT_Pos_Msk (0x1UL << EN_VOL_VOUT_Pos)
+#define EN_VOL_VOUT EN_VOL_VOUT_Pos_Msk
+
+#define EN_VOR_VOUT_Pos (5U)
+#define EN_VOR_VOUT_Pos_Msk (0x1UL << EN_VOR_VOUT_Pos)
+#define EN_VOR_VOUT EN_VOR_VOUT_Pos_Msk
+
+#define EN_VOL_VDS_Pos (6U)
+#define EN_VOL_VDS_Pos_Msk (0x1UL << EN_VOL_VDS_Pos)
+#define EN_VOL_VDS EN_VOL_VDS_Pos_Msk
+
+#define EN_VOR_VDS_Pos (7U)
+#define EN_VOR_VDS_Pos_Msk (0x1UL << EN_VOR_VDS_Pos)
+#define EN_VOR_VDS EN_VOR_VDS_Pos_Msk
+
+/* VOL/R ADT Config Register,VOX_CON0<6Ah> */
+#define Vox_Pull_Up_Pos (7U)
+#define Vox_Pull_Up_Pos_Msk (0x1UL << Vox_Pull_Up_Pos)
+#define Vox_Pull_Up Vox_Pull_Up_Pos_Msk
+
+#define Vox_Pull_Up_Deb_Pos (6U)
+
+#define Vox_Pull_Up_Deb_8Ms_Pos_Msk 0
+#define Vox_Pull_Up_Deb_16Ms_Pos_Msk 1
+
+#define Vox_Pull_Up_Deb_8Ms (Vox_Pull_Up_Deb_8Ms_Pos_Msk << Vox_Pull_Up_Deb_Pos)
+#define Vox_Pull_Up_Deb_16Ms (Vox_Pull_Up_Deb_16Ms_Pos_Msk << Vox_Pull_Up_Deb_Pos)
+
+#define Vor_Pull_Down_Pos (5U)
+#define Vor_Pull_Down_Pos_Msk (0x1UL << Vor_Pull_Down_Pos)
+#define Vor_Pull_Down Vor_Pull_Down_Pos_Msk
+
+#define Vol_Pull_Down_Pos (4U)
+#define Vol_Pull_Down_Pos_Msk (0x1UL << Vol_Pull_Down_Pos)
+#define Vol_Pull_Down Vol_Pull_Down_Pos_Msk
+
+/*自动识别负载电流阈值。*/
+#define VOX_ADT_Cur_0_5UA (0x0UL)
+#define VOX_ADT_Cur_1_5UA (0x1UL)
+#define VOX_ADT_Cur_2_5UA (0x2UL)
+#define VOX_ADT_Cur_3_5UA (0x3UL)
+#define VOX_ADT_Cur_4_5UA (0x4UL)
+#define VOX_ADT_Cur_5_5UA (0x5UL)
+#define VOX_ADT_Cur_6_5UA (0x6UL)
+#define VOX_ADT_Cur_7_5UA (0x7UL)
+
+/*
+VOX过流档位设置,在系统初始化中(Vox_init())通过配置VOX_CON0,
+
+SFRADDR = VOX_CON0; //设置VOX输出200mA,负载识别电流2.5uA。
+SFRDATA |= VOX_ADT_Cur_2_5UA;
+//Vox轻重载滤波时间配置
+SFRADDR = VOX_CON2;
+SFRDATA |= (VOX_LIGHT_TO_HAVEY_128 << 2) | VOX_HAVEY_TO_LIGHT_8;
+
+*/
+/* VOL/R Misc Config Register,VOX_CON2<6Ch> */
+#define Vox_Ioff_2mA (0x0UL)
+#define Vox_Ioff_3mA (0x1UL)
+#define Vox_Ioff_4mA (0x2UL)
+#define Vox_Ioff_5mA (0x3UL)
+
+/*轻载转重载滤波时间配置。*/
+#define VOX_LIGHT_TO_HAVEY_1 (0x0UL)
+#define VOX_LIGHT_TO_HAVEY_8 (0x1UL)
+#define VOX_LIGHT_TO_HAVEY_128 (0x2UL)
+#define VOX_LIGHT_TO_HAVEY_256 (0x3UL)
+/*重载转轻载滤波时间配置。*/
+#define VOX_HAVEY_TO_LIGHT_0_125 (0x0UL)
+#define VOX_HAVEY_TO_LIGHT_1 (0x1UL)
+#define VOX_HAVEY_TO_LIGHT_8 (0x2UL)
+#define VOX_HAVEY_TO_LIGHT_64 (0x3UL)
+
+/* VOL/R Comm Control Register,COMM_CTL */
+#define Vor_EN_COMR_Pos (7U)
+#define Vor_EN_COMR_Pos_Msk (0x1UL << Vor_EN_COMR_Pos)
+#define Vor_EN_COMR Vor_EN_COMR_Pos_Msk
+
+#define Vor_SW_MD_Pos (6U)
+#define Vor_SW_MD_Pos_Msk (0x1UL << Vor_SW_MD_Pos)
+#define Vor_SW_MD Vor_SW_MD_Pos_Msk
+
+#define Vor_SWDT_Pos (5U)
+#define Vor_SWDT_Pos_Msk (0x1UL << Vor_SWDT_Pos)
+#define Vor_SWDT Vor_SWDT_Pos_Msk
+
+#define Vor_SWDR_Pos (4U)
+#define Vor_SWDR_Pos_Msk (0x1UL << Vor_SWDR_Pos)
+#define Vor_SWDR Vor_SWDR_Pos_Msk
+
+#define Vol_EN_COMR_Pos (3U)
+#define Vol_EN_COMR_Pos_Msk (0x1UL << Vol_EN_COMR_Pos)
+#define Vol_EN_COMR Vol_EN_COMR_Pos_Msk
+
+#define Vol_SW_MD_Pos (2U)
+#define Vol_SW_MD_Pos_Msk (0x1UL << Vol_SW_MD_Pos)
+#define Vol_SW_MD Vol_SW_MD_Pos_Msk
+
+#define Vol_SWDT_Pos (1U)
+#define Vol_SWDT_Pos_Msk (0x1UL << Vol_SWDT_Pos)
+#define Vol_SWDT Vol_SWDT_Pos_Msk
+
+#define Vol_SWDR_Pos (0U)
+#define Vol_SWDR_Pos_Msk (0x1UL << Vol_SWDR_Pos)
+#define Vol_SWDR Vol_SWDR_Pos_Msk
+
+/* VOL/R Comm TRx Data Register,COMM_DAT */
+#define Vor_COMR_RX_Pos (5U)
+#define Vor_COMR_RX_Pos_Msk (0x1UL << Vor_COMR_RX_Pos)
+#define Vor_COMR_RX Vor_COMR_RX_Pos_Msk
+
+#define Vol_COML_RX_Pos (4U)
+#define Vol_COML_RX_Pos_Msk (0x1UL << Vol_COML_RX_Pos)
+#define Vol_COML_RX Vol_COML_RX_Pos_Msk
+
+#define Vor_COMR_DT_Pos (1U)
+#define Vor_COMR_DT_Pos_Msk (0x1UL << Vor_COMR_DT_Pos)
+#define Vor_COMR_DT Vor_COMR_DT_Pos_Msk
+
+#define Vol_COML_DT_Pos (0U)
+#define Vol_COML_DT_Pos_Msk (0x1UL << Vol_COML_DT_Pos)
+#define Vol_COML_DT Vol_COML_DT_Pos_Msk
+
+/* VOL/R Comm Config Register,COMM_CON<6Fh> */
+#define Vox_COMM_PULL_Vol_Pos (2U)
+
+#define Vox_COMM_PULL_Vol_1_8_Pos_Msk (0x00UL)
+#define Vox_COMM_PULL_Vol_2_5_Pos_Msk (0x01UL)
+#define Vox_COMM_PULL_Vol_3_0_Pos_Msk (0x02UL)
+#define Vox_COMM_PULL_Vol_5_0_Pos_Msk (0x03UL)
+
+#define Vox_COMM_PULL_Vol_1_8 (Vox_COMM_PULL_Vol_1_8_Pos_Msk << Vox_COMM_PULL_Vol_Pos)
+#define Vox_COMM_PULL_Vol_2_5 (Vox_COMM_PULL_Vol_2_5_Pos_Msk << Vox_COMM_PULL_Vol_Pos)
+#define Vox_COMM_PULL_Vol_3_0 (Vox_COMM_PULL_Vol_3_0_Pos_Msk << Vox_COMM_PULL_Vol_Pos)
+#define Vox_COMM_PULL_Vol_5_0 (Vox_COMM_PULL_Vol_5_0_Pos_Msk << Vox_COMM_PULL_Vol_Pos)
+
+#define Vox_Pull_Up_50k_Pos (0U)
+#define Vox_Pull_Up_50k_Pos_Msk (0x1UL << Vox_Pull_Up_50k_Pos)
+#define Vox_Pull_Up_50k Vox_Pull_Up_50k_Pos_Msk
+
+#define BOXHEADER 0x55AA //VOX通讯数据包头
+
+#define EARPHONE_HEADER_HIGH 0x55
+#define EARPHONE_HEADER_LOW 0xAA
+
+#define BOXIDCODE 0xFF //VOX通讯耳机->仓数据包头
+
+#define Vox_TX_Interval 2 //Vox定时发送指令时间间隔
+
+#define Vox_TX_Interval_2 4
+
+#define TIM_SHUTDOWN_DEBOUNCE 600 //关机前debounce时间
+
+ /******************************************************************************\
+ Variables definitions
+ \******************************************************************************/
+ /* 双向通讯协议选择 */
+
+#define JIELI 1
+
+#define ZHONGKE 0
+
+/*耳机通道选择*/
+
+#define TWS_VOL 0x04
+#define TWS_VOR 0x05
+#define TWS_BOX 0x02
+#define TWS_PC 0x03
+
+#if JIELI
+
+/*耳机通道选择*/
+typedef enum {
+
+ VOL_CHAN = 0x00,
+
+ VOR_CHAN = 0x01,
+
+ VOX_MAX_CHAN = 0x02,
+
+ VOX_BOTH = 0xFF,
+
+}e_Vox_Chan;
+
+/*耳机和充电仓进行双向通讯的协议命令ID。*/
+ typedef enum _VOX_BES_COMMAND_E
+{
+
+ VHOUSE_CMD_PAIR = 0x01, //充电仓发起的配对信息
+
+ VHOUSE_CMD_EXCH_TWS_BTADDR = 0x02, //交换对耳的蓝牙地址信息。
+
+ VHOUSE_CMD_CLEAR_PAIR = 0x03, //清配对信息
+
+ VHOUSE_CMD_OPEN_BOX = 0x06, //开盖获取电量包
+
+ VHOUSE_CMD_CLOSE_WIN_GET_VBAT = 0x07, //关盖获取电量包
+
+ VHOUSE_CMD_RST = 0x08, //
+
+ VHOUSE_CMD_PWROFF = 0x80, //关机消息
+
+ VHOUSE_CMD_CLOSE_BOX = 0x81,
+
+ BES_RESET = 0xE1,
+
+}VOX_BES_COMMAND_E;
+
+#elif ZHONGKE
+
+ /*耳机通道选择*/
+ typedef enum {
+
+ VOL_CHAN = 0x11,
+
+ VOR_CHAN = 0x22,
+
+ VOX_MAX_CHAN = 0x02,
+
+ VOX_BOTH = 0xff,
+
+ }e_Vox_Chan;
+
+ /*耳机和充电仓进行双向通讯的协议命令ID。*/
+typedef enum _VOX_BES_COMMAND_E
+{
+ VHOUSE_CMD_GET_VBAT = 0x01, //获取电池电量,也可作为开始标志
+
+ VHOUSE_CMD_PAIR, //充电仓发起的配对信息
+
+ VHOUSE_CMD_GET_TWS_BTADDR, //获取对耳的蓝牙地址信息,充电仓无需使用本命令,本命令为对耳相互转发,充电仓只作转发缓存,收到该命令后,copy给另一只对耳即可。
+
+ VHOUSE_CMD_CLEAR_PAIR, //清除配对信息
+
+ VHOUSE_CMD_PWROFF, //关机消息
+
+ VHOUSE_CMD_ERR, //接收消息错误
+
+ VHOUSE_CMD_SUCCESS, //成功响应
+
+ VHOUSE_CMD_CLOSE_WINDOW, //关盖
+
+ VHOUSE_CMD_OPEN_WINDOW, //开盖
+
+ VHOUSE_CMD_CLOSE_WIN_GET_VBAT, //关盖获取电量包
+
+ VHOUSE_CMD_ENABLE_POPUP = 0x80, //开关弹窗功能控制
+
+ VHOUSE_CMD_CUSTOM_RESV1 = 0xE0, //客户保留指令
+
+ BES_RESET = 0xE1,
+
+ VHOUSE_CMD_CUSTOM_RESV_END = 0xEF,
+
+ VHOUSE_CMD_SYS_RST = 0xFF, //系统复位指令
+
+}VOX_BES_COMMAND_E;
+
+
+#endif
+
+/* Vox Channel Select. */
+typedef enum {
+
+ VOL_CHAN_SET = 0x00,
+
+ VOR_CHAN_SET = 0x01,
+
+ VOX_BOTH_SET = 0x02,
+
+}e_Vox_Chan_Set;
+
+/* Vox Follow Charge State. */
+typedef enum {
+
+ Vox_Follow_Chg_InitSta = 0x00,
+
+ Vox_Follow_Chg_Sta1,
+
+ Vox_Follow_Chg_Sta2,
+
+ Vox_Follow_Chg_Sta3,
+
+ Vox_Follow_Chg_Sta4,
+
+}e_Vox_Follow_Chg_Sta;
+
+/* VOX Enable Type */
+ typedef enum {
+
+ VOX_TRANS_Mode = 0x00, //VOx UART 透传功能使能
+
+ VOX_COMM_Mode_Uart, //VOx 通讯 UART Mode
+
+ VOX_COMM_Mode_Reg, //VOx 通讯 Register Mode
+
+ VOX_VOUT_Mode, //VOx 5V 输出使能
+
+ VOX_ADT_Mode, //VOx 负载接入、存在识别功能使能,负载自动识别
+
+ VOX_PUnK_Mode, //Vox上拉电阻配置,上拉到VOX_Vup。
+
+ VOX_PD1K_Mode, // VOX 1K 电阻下拉使能 1: VOR 通过 1K 电阻下拉至 gnd
+
+ } VOX_Enable_Mode_e;
+
+extern bit Cover_Open_Flag;
+
+extern bit Vox_Ocp_Flag;
+extern bit Boost_Open_Flag;
+
+extern bit OpenCover_TX_Cmd_Flag;
+
+#ifdef VOX_RX
+
+extern xdata uint8_t Vox_Get_Vbat_Flag[2]; //耳机配对状态,VOL:低4bit;VOR:高4bit。0是无效,1是正在配对,2是配对成功,3不处理,保持当前状态。
+
+extern xdata uint8_t Vox_Get_BES_Addr_Flag[2] ;
+
+#endif
+
+#if VOX_FOLLOW_CHG
+
+typedef struct {
+
+ uint16_t IVox_Init[VOX_MAX_CHAN]; //跟随充Vox初始化电流值。
+
+ uint16_t IVox_Threshold_Neg[VOX_MAX_CHAN]; //Vox电流下降阈值
+
+ uint16_t IVox_Threshold_Pos[VOX_MAX_CHAN]; //Vox电流上升阈值
+
+ uint16_t IVox_At_Present[VOX_MAX_CHAN]; //Vox当前电流
+
+ uint8_t IVox_TC_Mode[VOX_MAX_CHAN]; //Vox CV_TC充电电流阈值
+
+ uint8_t Vpmid_SubSta[VOX_MAX_CHAN]; //Vox的Vpmid电压下降标志
+
+ uint8_t Vpmid_SubSta_Flag; //Vpmid电压下降标志
+
+ uint8_t Vpmid_AddSta[VOX_MAX_CHAN]; //Vpmid电压上升标志
+
+ uint8_t Vox_InBox_Sta[VOX_MAX_CHAN]; //耳机在盒标志
+
+ uint8_t Vpmid_Threshold_Neg; //Vpmid电压下降阈值
+
+ uint8_t Vpmid_Threshold_At_Present; //Vpmid电压当前值
+
+ uint8_t Vpmid_Threshold_Pos; //Vpmid电压上升阈值
+
+ uint8_t Vox_PTM_Type; //Boost 直通模式使能状态位,ON:Enable;OFF:Disable。
+
+ uint8_t Vox_Follow_Start; //跟随充启动标志
+
+ uint8_t Vox_Follow_Stop; //跟随充结束标志
+
+} g_Vox_Fllow_Chg_Cfg;
+
+extern g_Vox_Fllow_Chg_Cfg xdata Vox_Fllow_Chg;
+
+#endif
+ /******************************************************************************\
+ UserCfg.Functions definitions
+ \******************************************************************************/
+
+extern void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select);
+
+extern void Vox_Det_Machine(void);
+#if VOX_FOLLOW_CHG
+extern void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg );
+#endif
+extern void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode);
+
+#ifdef VOX_RX
+extern void HandleVoxCommMsg(void);
+#endif
+
+#endif
+
+#endif
+
diff --git a/SY8837_Demo.si4project/SY8837_Demo.SearchResults b/SY8837_Demo.si4project/SY8837_Demo.SearchResults
index 52a2e3f..0d685dd 100644
--- a/SY8837_Demo.si4project/SY8837_Demo.SearchResults
+++ b/SY8837_Demo.si4project/SY8837_Demo.SearchResults
@@ -1,6 +1,4 @@
----- ADC_CTL0 Matches (5 in 4 files) ----
-Adc_Init in adc.c (UsrSrc\adc) : SFRADDR = ADC_CTL0; //0B10111101,<0x29>--ADC EN;ADC 2.5V Enable b[4];ADC1 Pullup 100K Enable b[5]; continue mode; ADC CLK divided by 48=230k
-reg3315.h (UsrInc\inc) line 95 : #define ADC_CTL0 0x30
-reg883x.h (UsrInc\inc) line 41 : #define ADC_CTL0 0x29
-OutSleep_Handler in sleep.c (UsrSrc\sleep) : SFRADDR = ADC_CTL0;
-InSleep_Handler in sleep.c (UsrSrc\sleep) : SFRADDR = ADC_CTL0;
+---- MAX_PACKET_SIZE Matches (3 in 1 files) ----
+vox_module.c (UsrSrc\vox) line 77 : #define MAX_PACKET_SIZE 0x20
+HandleTxCommand in vox_module.c (UsrSrc\vox) : tx_pData[3] = MAX_PACKET_SIZE;
+HandleTxCommand in vox_module.c (UsrSrc\vox) : tx_pData[7] = MAX_PACKET_SIZE; //max_packet_size:0x20
diff --git a/SY8837_Demo.si4project/SY8837_Demo.sip_sym b/SY8837_Demo.si4project/SY8837_Demo.sip_sym
index bfa90d1..675a0c2 100644
Binary files a/SY8837_Demo.si4project/SY8837_Demo.sip_sym and b/SY8837_Demo.si4project/SY8837_Demo.sip_sym differ
diff --git a/SY8837_Demo.si4project/SY8837_Demo.sip_xm b/SY8837_Demo.si4project/SY8837_Demo.sip_xm
index b35bc8f..73e9229 100644
Binary files a/SY8837_Demo.si4project/SY8837_Demo.sip_xm and b/SY8837_Demo.si4project/SY8837_Demo.sip_xm differ
diff --git a/SY8837_Demo.si4project/SY8837_Demo.siwork b/SY8837_Demo.si4project/SY8837_Demo.siwork
index 8e64490..de77bbd 100644
Binary files a/SY8837_Demo.si4project/SY8837_Demo.siwork and b/SY8837_Demo.si4project/SY8837_Demo.siwork differ
diff --git a/SY8837_Demo.si4project/cache/parse/UsrInc_vox_vox_module.h.sisc b/SY8837_Demo.si4project/cache/parse/UsrInc_vox_vox_module.h.sisc
new file mode 100644
index 0000000..396b35f
Binary files /dev/null and b/SY8837_Demo.si4project/cache/parse/UsrInc_vox_vox_module.h.sisc differ
diff --git a/UsrInc/charger/charger_module.h b/UsrInc/charger/charger_module.h
index 0ec4c0f..30c3371 100644
--- a/UsrInc/charger/charger_module.h
+++ b/UsrInc/charger/charger_module.h
@@ -23,8 +23,6 @@
#include "define.h"
-extern bit Charger_Done;
-
#ifdef NTC_ENABLE
extern bit NTC_Pro_Flag;
#endif
@@ -39,9 +37,7 @@ typedef enum
CHG_STA_ING, // 充电中
CHG_STA_COMPLETED, // 充电完成
-
- CHG_STA_PULLOUT, // 充电器拔出
-
+
} TE_CHG_STA;
typedef enum
@@ -58,28 +54,33 @@ extern idata TE_CHG_STA ChgStatus; // 系统状态
/* Charger Current Setting */
typedef struct {
+
uint8_t nTrickle_Cur; //Set Trickle Current Trickle charge 电流配置,step 10mA;
+
uint8_t nConstant_Cur; //Set Constant Current 恒流 cc 电流配置,step 25mA:
+
uint8_t nIterm_Cur; //Set Iterm Current iterm charge 电流配置(范围:5mA ~ 50mA ,step 5mA)
+
uint8_t nVFloat;
+
} s_gCharger_Cfg;
/* CHG Control Register-CHG_CTL */
-#define CHG_END_Sel_Pos (7U)
-#define CHG_END_Sel_Pos_Msk (0x1UL << CHG_END_Sel_Pos)
-#define CHG_END_Sel CHG_END_Sel_Pos_Msk
+#define CHG_END_Sel_Pos (7U)
+#define CHG_END_Sel_Pos_Msk (0x1UL << CHG_END_Sel_Pos)
+#define CHG_END_Sel CHG_END_Sel_Pos_Msk
-#define CHG_SafyTmr_EN_Pos (4U)
-#define CHG_SafyTmr_EN_Pos_Msk (0x1UL << CHG_SafyTmr_EN_Pos)
-#define CHG_SafyTmr_EN CHG_SafyTmr_EN_Pos_Msk
+#define CHG_SafyTmr_EN_Pos (4U)
+#define CHG_SafyTmr_EN_Pos_Msk (0x1UL << CHG_SafyTmr_EN_Pos)
+#define CHG_SafyTmr_EN CHG_SafyTmr_EN_Pos_Msk
-#define CHG_PrechgTmr_EN_Pos (3U)
-#define CHG_PrechgTmr_EN_Pos_Msk (0x1UL << CHG_PrechgTmr_EN_Pos)
-#define CHG_PrechgTmr_EN CHG_PrechgTmr_EN_Pos_Msk
+#define CHG_PrechgTmr_EN_Pos (3U)
+#define CHG_PrechgTmr_EN_Pos_Msk (0x1UL << CHG_PrechgTmr_EN_Pos)
+#define CHG_PrechgTmr_EN CHG_PrechgTmr_EN_Pos_Msk
-#define CHG_EN_Pos (0U)
-#define CHG_EN_Pos_Msk (0x1UL << CHG_EN_Pos)
-#define CHG_EN CHG_EN_Pos_Msk
+#define CHG_EN_Pos (0U)
+#define CHG_EN_Pos_Msk (0x1UL << CHG_EN_Pos)
+#define CHG_EN CHG_EN_Pos_Msk
/* Charger Parements Config. */
/* 1、V Float Setting */
diff --git a/UsrInc/inc/define.h b/UsrInc/inc/define.h
index 76b8a83..650f138 100644
--- a/UsrInc/inc/define.h
+++ b/UsrInc/inc/define.h
@@ -61,6 +61,12 @@
#define VOX_RX //739Bytes
+ /* 双向通讯协议选择 */
+
+#define JIELI 1
+
+#define ZHONGKE 0
+
#endif
#define CHARGER_ENABLE 1 //94Bytes
@@ -93,9 +99,10 @@
#define _DEBUG_MAIN
// #define _DEBUG_KEY
-// #define _DEBUG_VOX
+ #define _DEBUG_VOX
+// #define _DEBUG_FOLLOW
// #define _DEBUG_HALL
- #define _DEBUG_ADC
+// #define _DEBUG_ADC
// #define _DEBUG_DISCHARGE
// #define _DEBUG_CHARGER
// #define _DEBUG_SLEEP
diff --git a/UsrInc/vox/vox_module.h b/UsrInc/vox/vox_module.h
index 2c72f7b..7b7f5df 100644
--- a/UsrInc/vox/vox_module.h
+++ b/UsrInc/vox/vox_module.h
@@ -260,16 +260,18 @@ SFRDATA |= (VOX_LIGHT_TO_HAVEY_128 << 2) | VOX_HAVEY_TO_LIGHT_8;
#define Vox_Pull_Up_50k_Pos_Msk (0x1UL << Vox_Pull_Up_50k_Pos)
#define Vox_Pull_Up_50k Vox_Pull_Up_50k_Pos_Msk
-#define BOXHEADER 0x55AA //VOX通讯数据包头
+#define BOXHEADER 0x55AA //VOX通讯数据包头
-#define EARPHONE_HEADER_HIGH 0x55
-#define EARPHONE_HEADER_LOW 0xAA
+#define EARPHONE_HEADER_HIGH 0x55
+#define EARPHONE_HEADER_LOW 0xAA
-#define BOXIDCODE 0xFF //VOX通讯耳机->仓数据包头
+#define BOXIDCODE 0xFF //VOX通讯耳机->仓数据包头
-#define Vox_TX_Interval 2 //Vox定时发送指令时间间隔
+#define Vox_TX_Interval 2 //Vox定时发送指令时间间隔
-#define TIM_SHUTDOWN_DEBOUNCE 600 //关机前debounce时间
+#define Vox_TX_Interval_2 4
+
+#define TIM_SHUTDOWN_DEBOUNCE 600 //关机前debounce时间
/******************************************************************************\
Variables definitions
@@ -282,6 +284,8 @@ SFRDATA |= (VOX_LIGHT_TO_HAVEY_128 << 2) | VOX_HAVEY_TO_LIGHT_8;
#define TWS_BOX 0x02
#define TWS_PC 0x03
+#if JIELI
+
/*耳机通道选择*/
typedef enum {
@@ -319,6 +323,59 @@ typedef enum {
}VOX_BES_COMMAND_E;
+#elif ZHONGKE
+
+ /*耳机通道选择*/
+ typedef enum {
+
+ VOL_CHAN = 0x11,
+
+ VOR_CHAN = 0x22,
+
+ VOX_MAX_CHAN = 0x02,
+
+ VOX_BOTH = 0xff,
+
+ }e_Vox_Chan;
+
+ /*耳机和充电仓进行双向通讯的协议命令ID。*/
+typedef enum _VOX_BES_COMMAND_E
+{
+ VHOUSE_CMD_GET_VBAT = 0x01, //获取电池电量,也可作为开始标志
+
+ VHOUSE_CMD_PAIR, //充电仓发起的配对信息
+
+ VHOUSE_CMD_GET_TWS_BTADDR, //获取对耳的蓝牙地址信息,充电仓无需使用本命令,本命令为对耳相互转发,充电仓只作转发缓存,收到该命令后,copy给另一只对耳即可。
+
+ VHOUSE_CMD_CLEAR_PAIR, //清除配对信息
+
+ VHOUSE_CMD_PWROFF, //关机消息
+
+ VHOUSE_CMD_ERR, //接收消息错误
+
+ VHOUSE_CMD_SUCCESS, //成功响应
+
+ VHOUSE_CMD_CLOSE_WINDOW, //关盖
+
+ VHOUSE_CMD_OPEN_WINDOW, //开盖
+
+ VHOUSE_CMD_CLOSE_WIN_GET_VBAT, //关盖获取电量包
+
+ VHOUSE_CMD_ENABLE_POPUP = 0x80, //开关弹窗功能控制
+
+ VHOUSE_CMD_CUSTOM_RESV1 = 0xE0, //客户保留指令
+
+ BES_RESET = 0xE1,
+
+ VHOUSE_CMD_CUSTOM_RESV_END = 0xEF,
+
+ VHOUSE_CMD_SYS_RST = 0xFF, //系统复位指令
+
+}VOX_BES_COMMAND_E;
+
+
+#endif
+
/* Vox Channel Select. */
typedef enum {
@@ -367,6 +424,9 @@ typedef enum {
extern bit Cover_Open_Flag;
extern bit Vox_Ocp_Flag;
+extern bit Boost_Open_Flag;
+
+extern bit OpenCover_TX_Cmd_Flag;
#ifdef VOX_RX
diff --git a/UsrSrc/charger/charger_module.c b/UsrSrc/charger/charger_module.c
index 7d03cf4..ca7dfd8 100644
--- a/UsrSrc/charger/charger_module.c
+++ b/UsrSrc/charger/charger_module.c
@@ -28,13 +28,10 @@
#include "userapp.h"
#include "bat.h"
-bit Charger_Done = 0;
-
#ifdef NTC_ENABLE
bit NTC_Pro_Flag = 0;
#endif
-
idata TE_CHG_STA ChgStatus; // CHG状态定义
#if CHARGER_ENABLE
@@ -72,6 +69,9 @@ idata s_gCharger_Cfg gCharge_Cfg;
void Charger_Init(void)
{
+ SFRADDR = PMU_CTL8;
+ SFRDATA |= 0x20;
+
#ifdef SY8838Q //合封OVP芯片SY8838Q
SFRADDR = PMU_CTL7; //合封芯片关闭VBUS OV检测使能
@@ -483,9 +483,7 @@ void Charger_Handler(void)
CHG_CTL &= ~CHG_EN; //Disable Charger
ChgStatus = CHG_NONE;
-
- Charger_Done = 0;
-
+
#ifdef _DEBUG_CHARGER
printf("No Chg\r\n");
#endif
@@ -570,16 +568,7 @@ void Charger_Handler(void)
CHG_CTL &= ~CHG_EN; //Disable Charger
}
- if( !Charger_Done )
- {
- Charger_Done = 1;
-
- ChgStatus = CHG_STA_COMPLETED;
-
-#ifdef LED_DISPLAY
- LED_On_Flag = 1;
-#endif
- }
+ ChgStatus = CHG_STA_COMPLETED;
#endif
}
else
@@ -611,9 +600,7 @@ void Charger_Handler(void)
#ifdef _DEBUG_CHARGER
printf("Chg ing\r\n");
#endif
- Charger_Done = 0;
}
-
}
#endif
diff --git a/UsrSrc/discharge/discharge_module.c b/UsrSrc/discharge/discharge_module.c
index 2375368..27a025e 100644
--- a/UsrSrc/discharge/discharge_module.c
+++ b/UsrSrc/discharge/discharge_module.c
@@ -139,19 +139,17 @@ void DisCharge_Handler(void)
#else
+ gBoost_Prepared_Flag = 0;
+
/* 过温保护 --- 硬件实现 */
if( CHIP_STA3 & 0x02 )
- {
- gBoost_Prepared_Flag = 0;
-
+ {
return;
}
/*Boost Input UVLO 硬件实现*/
if( (CHIP_STA0 & BOOST_BATUV) ) //用于清软件标志位。
- {
- gBoost_Prepared_Flag = 0;
-
+ {
gBoost_UVLO_Flag = 1;
return;
@@ -160,7 +158,6 @@ void DisCharge_Handler(void)
/* BAT LOW Interrupt */
if( IRQ_FLAG0 & BAT_Low )
{
- gBoost_Prepared_Flag = 0;
return;
}
@@ -171,7 +168,6 @@ void DisCharge_Handler(void)
#ifdef _DEBUG_DISCHARGE
printf("Boost Pro Output Short!\r\n");
#endif
- gBoost_Prepared_Flag = 0;
if( F_sys_tim_250ms )
{
@@ -188,7 +184,6 @@ void DisCharge_Handler(void)
/*NTC Handle*/ //使能Boost前先检测NTC温度,异常就不开放电。
if( PMU_NTC_Handle( DISCHG_ON ) ) //NTC保护,不放电。
{
- gBoost_Prepared_Flag = 0;
DisCharge_Boost_Close();
@@ -206,9 +201,7 @@ void DisCharge_Handler(void)
if( F_batlevel_protect )
{
DisCharge_Boost_Close();
-
- gBoost_Prepared_Flag = 0;
-
+
return;
}
diff --git a/UsrSrc/hall/hall.c b/UsrSrc/hall/hall.c
index e8f9771..f998481 100644
--- a/UsrSrc/hall/hall.c
+++ b/UsrSrc/hall/hall.c
@@ -112,6 +112,8 @@ xdata uint8_t Hall_Sta_bk = 0xff;
}
CoverEvent_Flg = 1;
+
+ Boost_Open_Flag = 0;
CoverEvent_Flg_led = 1;
@@ -119,12 +121,12 @@ xdata uint8_t Hall_Sta_bk = 0xff;
LED_On_Flag = 1;
#endif
+ Hall_Sta_bk = Hall_Sta;
#if SLEEP_ENABLE
Enter_Sleep_Cnt_Restart_Flag = 1;
#endif
- Hall_Sta_bk = Hall_Sta;
}
}
diff --git a/UsrSrc/key/key.c b/UsrSrc/key/key.c
index 5325429..6065ab8 100644
--- a/UsrSrc/key/key.c
+++ b/UsrSrc/key/key.c
@@ -26,6 +26,7 @@
#include "vox_module.h"
#include "userapp.h"
#include "hall.h"
+#include "discharge_module.h"
#if KEY_ENABLE
/******************************************************************************\
@@ -45,6 +46,8 @@
#define KEY_TWS_PAIR_CLEAR_CNT 30
+#define KEY_LIFT_CNT 20
+
/******************************************************************************\
Variables definitions
\******************************************************************************/
@@ -59,10 +62,14 @@ idata KEY_EVENT_E Event_key = 0;
uint8_t Key_TWS_Pair_Tim = 0;
+uint8_t Key_TWS_Clear_Pair_Tim = 0;
+
uint8_t Key_TWS_Pair_Cnt = 0;
uint16_t Key_Press_Debounce = 0;
+uint8_t Key_Lift_Debounce = 0;
+
/******************************************************************************\
Functions definitions
\******************************************************************************/
@@ -130,11 +137,15 @@ uint16_t Key_Press_Debounce = 0;
#if SLEEP_ENABLE
Enter_Sleep_Cnt_Restart_Flag = 1;
-
-#endif
+
+#endif
+ Event_key = KEY_EVENT_Empty;
+
Key_Press_Flag = 0;
Key_Lift_Flag = 1;
+
+ Key_Lift_Debounce = 0;
nKey_Press_8s_Flag = 0;
@@ -162,12 +173,31 @@ uint16_t Key_Press_Debounce = 0;
Key_Press_Debounce = 0;
}
- if( Key_Lift_Flag )
- {
- Key_Lift_Flag = 0;
-
+ if( Key_Lift_Flag && gBoost_Prepared_Flag )
+ {
if( Key_Press_l_irq )
{
+ if( !Boost_Open_Flag )
+ {
+ DisCharge_Boost_Open(OFF,Boost_Vout_5_225V);
+
+ Boost_Open_Flag = 1;
+#ifdef _DEBUG_KEY
+ printf("Boost Open Key.(line:%d)\r\n",(u16)__LINE__);
+#endif
+
+ return;
+ }
+
+ VOX_EN_Type(VOX_VOUT_Mode); //VOX Enable 5V
+
+ if( Key_Lift_Debounce <= KEY_LIFT_CNT )
+ {
+ Key_Lift_Debounce++;
+
+ return;
+ }
+
Key_Press_l_irq = 0;
/*todo*/
Event_key = KEY_EVENT_L_2S;
@@ -175,6 +205,9 @@ uint16_t Key_Press_Debounce = 0;
Key_TWS_Pair_Tim = 0;
/*耳机配对*/
+ Vox_Get_BES_Addr_Flag[VOL_TYPE] = 0x00;
+
+ Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0x00;
#ifdef _DEBUG_KEY
printf("long 2s press\r\n");
@@ -183,7 +216,30 @@ uint16_t Key_Press_Debounce = 0;
/*长按8s,系统强制进shipmode.*/
if( Key_Press_ll_irq )
{
+ if( !Boost_Open_Flag )
+ {
+ DisCharge_Boost_Open(OFF,Boost_Vout_5_225V);
+
+ Boost_Open_Flag = 1;
+#ifdef _DEBUG_KEY
+ printf("Boost Open Key.(line:%d)\r\n",(u16)__LINE__);
+#endif
+
+ return;
+ }
+
+ VOX_EN_Type(VOX_VOUT_Mode); //VOX Enable 5V
+
+ if( Key_Lift_Debounce <= KEY_LIFT_CNT )
+ {
+ Key_Lift_Debounce++;
+
+ return;
+ }
+
Key_Press_ll_irq = 0;
+
+ Key_TWS_Clear_Pair_Tim = 0;
/*todo*/
Event_key = KEY_EVENT_LL_8S;
@@ -203,10 +259,10 @@ uint16_t Key_Press_Debounce = 0;
printf("short press\r\n");
#endif
}
- }
- else
- {
- Event_key = KEY_EVENT_Empty;
+
+ Key_Lift_Flag = 0;
+
+ Boost_Open_Flag = 0;
}
#if 1
@@ -220,16 +276,28 @@ uint16_t Key_Press_Debounce = 0;
HandleTxCommand(VHOUSE_CMD_PAIR,VOR_CHAN); //右耳发配对指令,区分耳机通道。
#endif
Vox_Get_BES_Addr_Flag[VOL_TYPE] = 0x00;
+
Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0x00;
+#ifdef _DEBUG_KEY
+ printf("Key Pair TX VOR(line:%d).\r\n",(uint16_t)__LINE__);
+#endif
}
else
{
if(Key_TWS_Pair_Cnt > KEY_TWS_PAIR_CNT) //耳机蓝牙地址置换超时10s,关闭蓝牙地址置换,开启VOX 5V。
{
Key_TWS_Pair_Cnt = 0;
+
+ Event_key = KEY_EVENT_Empty;
+
+ OpenCover_TX_Cmd_Flag = 1;
#if VOX_ENABLE
- VOX_EN_Type(VOX_VOUT_Mode);
+ VOX_EN_Type(VOX_ADT_Mode);
#endif
+#ifdef _DEBUG_KEY
+ printf("Key Pair TimeOut(line:%d).\r\n",(uint16_t)__LINE__);
+#endif
+
return;
}
else
@@ -239,7 +307,11 @@ uint16_t Key_Press_Debounce = 0;
#ifdef VOX_TX
HandleTxCommand(VHOUSE_CMD_EXCH_TWS_BTADDR,VOL_CHAN); /*获取到右耳回复的CMD3指令,转发给左耳。*/
#endif
- Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0x02;
+ Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0x02;
+#ifdef _DEBUG_KEY
+ printf("Key Pair Get VOR(line:%d).\r\n",(uint16_t)__LINE__);
+#endif
+
}
else
if( Vox_Get_BES_Addr_Flag[VOR_TYPE] == 0x02 )
@@ -249,14 +321,22 @@ uint16_t Key_Press_Debounce = 0;
#ifdef VOX_TX
HandleTxCommand(VHOUSE_CMD_EXCH_TWS_BTADDR,VOR_CHAN); /*获取到右耳回复的CMD3指令,转发给左耳。*/
#endif
- Vox_Get_BES_Addr_Flag[VOL_TYPE] = 0x00;
+ Vox_Get_BES_Addr_Flag[VOL_TYPE] = 0x00;
+
Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0x00;
Key_TWS_Pair_Tim = 0;
+
+ Key_TWS_Pair_Cnt = 0;
+
Event_key = KEY_EVENT_Empty;
+
+ OpenCover_TX_Cmd_Flag = 1;
- VOX_EN_Type(VOX_VOUT_Mode);
-
+ VOX_EN_Type(VOX_ADT_Mode);
+#ifdef _DEBUG_KEY
+ printf("Key Pair Get VOL(line:%d).\r\n",(uint16_t)__LINE__);
+#endif
return;
}
else
@@ -264,15 +344,22 @@ uint16_t Key_Press_Debounce = 0;
#ifdef VOX_TX
HandleTxCommand(VHOUSE_CMD_PAIR,VOL_CHAN);
#endif
+#ifdef _DEBUG_KEY
+ printf("Key Pair TX VOL(line:%d).\r\n",(uint16_t)__LINE__);
+#endif
+
}
}
}
}
- if(Key_TWS_Pair_Tim > KEY_TWS_PAIR_TIMER) //3s重发一次。重发5次后超时
+ if(Key_TWS_Pair_Tim > KEY_TWS_PAIR_TIMER) //2s重发一次。重发5次后超时
{
Key_TWS_Pair_Cnt++;
- Key_TWS_Pair_Tim = 0;
+ Key_TWS_Pair_Tim = 0;
+#ifdef _DEBUG_KEY
+ printf("Key Pair Cnt:%d.(line:%d)\r\n",(uint16_t)Key_TWS_Pair_Cnt,(uint16_t)__LINE__);
+#endif
}
else
{
@@ -282,28 +369,33 @@ uint16_t Key_Press_Debounce = 0;
else
if( Event_key == KEY_EVENT_LL_8S )
{
- if( Key_TWS_Pair_Tim < KEY_TWS_PAIR_CLEAR_CNT ) //每隔200ms发送一次,持续时间3s。
+ if( Key_TWS_Clear_Pair_Tim < KEY_TWS_PAIR_CLEAR_CNT ) //每隔200ms发送一次,持续时间3s。
{
- if( Key_TWS_Pair_Tim % ( Vox_TX_Interval + 2 ) )
+ if( Key_TWS_Clear_Pair_Tim % Vox_TX_Interval_2 )
{
#ifdef VOX_TX
HandleTxCommand(VHOUSE_CMD_CLEAR_PAIR,VOR_CHAN);
#endif
}
else
- if( Key_TWS_Pair_Tim % Vox_TX_Interval )
+ if( Key_TWS_Clear_Pair_Tim % Vox_TX_Interval )
{
#ifdef VOX_TX
HandleTxCommand(VHOUSE_CMD_CLEAR_PAIR,VOL_CHAN);
#endif
}
- Key_TWS_Pair_Tim++;
+ Key_TWS_Clear_Pair_Tim++;
}
else
{
Event_key = KEY_EVENT_Empty;
- Key_TWS_Pair_Tim = 0;
+
+ OpenCover_TX_Cmd_Flag = 1;
+
+ Key_TWS_Clear_Pair_Tim = 0;
+
+ VOX_EN_Type(VOX_ADT_Mode);
}
}
}
diff --git a/UsrSrc/sleep/sleep.c b/UsrSrc/sleep/sleep.c
index bc1beb4..97046f3 100644
--- a/UsrSrc/sleep/sleep.c
+++ b/UsrSrc/sleep/sleep.c
@@ -203,7 +203,7 @@ void Enter_Sleep(void)
*/
bit Check_Require_Sleep(void )
{
- if( ( ChgStatus == CHG_STA_ING ) || ( ON == Vox_Vout_Enable ) || Enter_Sleep_Cnt_Restart_Flag ) /*充电中、有中断、耳机处于充电状态情况下,Boost重载输出,系统不进休眠模式。 */
+ if( ( ChgStatus > CHG_PROTECT ) || ( ON == Vox_Vout_Enable ) || Enter_Sleep_Cnt_Restart_Flag ) /*充电中、有中断、耳机处于充电状态情况下,Boost重载输出,系统不进休眠模式。 */
{
#ifdef _DEBUG_SLEEP
printf("Not Get Into Sleep(ChgStatus:%d,Vox_Vout:%d,Restart_Flag:%d).\r\n",(uint16_t)ChgStatus,(uint16_t)Vox_Vout_Enable,(uint16_t)Enter_Sleep_Cnt_Restart_Flag);
diff --git a/UsrSrc/uart/uart.c b/UsrSrc/uart/uart.c
index 2860930..7b06aa0 100644
--- a/UsrSrc/uart/uart.c
+++ b/UsrSrc/uart/uart.c
@@ -284,6 +284,10 @@ uint8_t Rx1Status = 0;
uint8_t RX1_Cnt = 0;
+#define Vox_Comm_JL_HEADER_DATA_LEN 4
+
+#define Vox_Comm_ZK_HEADER_DATA_LEN 6
+
/*uart1中断处理函数*/
void uart1_Interrupt(void) interrupt Interrupt_Vector_RI1_TI1
{
@@ -345,7 +349,11 @@ void uart1_Interrupt(void) interrupt Interrupt_Vector_RI1_TI1
{
RX1_Buffer[RX1_Cnt++] = S1BUF;
- if( RX1_Cnt >= ( RX1_Buffer[2] + 4 ) )
+ #if JIELI
+ if ( ( RX1_Cnt >= ( RX1_Buffer[2] + Vox_Comm_JL_HEADER_DATA_LEN ) ) || ( RX1_Cnt > COM0_Data_Lenth ) )
+ #elif ZHONGKE
+ if ( ( RX1_Cnt >= ( RX1_Buffer[4] + Vox_Comm_ZK_HEADER_DATA_LEN ) ) || ( RX1_Cnt > COM0_Data_Lenth ) )
+ #endif
{
RX1_Cnt = 0;
diff --git a/UsrSrc/userapp/userapp.c b/UsrSrc/userapp/userapp.c
index 04a0c51..f3f8829 100644
--- a/UsrSrc/userapp/userapp.c
+++ b/UsrSrc/userapp/userapp.c
@@ -139,33 +139,38 @@ void LED_Display_App(void)
}
else
{
- if( Display_RSta != LED_KEEP_FLASHING )
+ if( Display_RSta != LED_FLASH )
{
Display_Red_Flash(20,10);
}
- if( Display_GSta != LED_KEEP_FLASHING )
+ if( Display_GSta != LED_FLASH )
{
Display_Green_Flash(20,10);
}
- if( Display_YSta != LED_KEEP_FLASHING )
+ if( Display_YSta != LED_FLASH )
{
Display_Yellow_Flash(20,10);
}
- if( Display_BSta != LED_KEEP_FLASHING )
+ if( Display_BSta != LED_FLASH )
{
Display_Blue_Flash(20,10);
}
+
+ if( Vox_Output_Short_Flag )
+ {
+ if( LED_On_Timer < LED_PRO_TIM )
+ {
+ LED_On_Timer++;
+ }
+ else
+ {
+ Vox_Ocp_Flag = 1;
- if( LED_On_Timer < LED_PRO_TIM )
- {
- LED_On_Timer++;
- }
- else
- {
- Vox_Ocp_Flag = 1;
+ LED_On_Flag = 1;
+ }
}
}
@@ -190,15 +195,17 @@ void LED_Display_App(void)
#endif
- if (ChgStatus == CHG_STA_ING) //ChgStatus = CHG_STA_ING
+ if (ChgStatus != CHG_NONE)
{
- if ( Charger_Done ) // 充电完成,4个LED常亮
+ if ( ChgStatus == CHG_STA_COMPLETED ) // 充电完成,4个LED常亮
{
if( !LED_On_ChgDone_Flag )
{
LED_On_ChgDone_Flag = 1;
LED_Breating_Light_Off();
+
+ return;
}
Display_AllOn();
@@ -209,6 +216,8 @@ void LED_Display_App(void)
{
LED_On_Chg_Flag = 1;
+ LED_On_ChgDone_Flag = 0;
+
LED_On_Flag = 1;
Breathing_Light_Cnt = LED_R;
@@ -409,13 +418,6 @@ void ADC_GetValue_Machine(void)
*/
void System_Drivers_Machine(void)
{
-#if CHARGER_ENABLE
- Charger_Handler();
-#endif
-
-#if DISCHARGE_ENABLE
- DisCharge_Handler();
-#endif
#if HALL_ENABLE
Hall_Handler();
@@ -432,6 +434,15 @@ void System_Drivers_Machine(void)
if ( F_sys_tim_100ms )
{
F_sys_tim_100ms = 0;
+
+#if CHARGER_ENABLE
+ Charger_Handler();
+#endif
+
+#if DISCHARGE_ENABLE
+ DisCharge_Handler();
+#endif
+
#if BAT_VALUE
check_bat_level();
#endif
@@ -480,7 +491,7 @@ void SysTem_State_Machine(void)
#endif
#ifdef _DEBUG_MAIN
- printf("Power On State!Hall(0x%x) (line:%d)\r\n", (uint16_t)CoverStatus,(uint16_t)__LINE__);
+ // printf("Power On State!Hall(0x%x) (line:%d)\r\n", (uint16_t)CoverStatus,(uint16_t)__LINE__);
#endif
break;
@@ -599,10 +610,13 @@ void SysTem_State_Machine(void)
F_sys_tim_1s = 0;
#ifdef _DEBUG_MAIN
- printf("STA0:0x%x,STA1:0x%x,STA2:0x%x,STA3:0x%x,STA4:0x%x.Dec_Sleep:%d\r\n",(uint16_t)(CHIP_STA0),(uint16_t)(CHIP_STA1),(uint16_t)(CHIP_STA2),(uint16_t)(CHIP_STA3),(uint16_t)(CHIP_STA4),(uint16_t)Decnt_SleepDelay);
+ SFRADDR = ST_VOX;
+ ret = SFRDATA;
+
+ printf("CHG_STA:%d,ST_VOX:0x%x,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA3:0x%x,STA4:0x%x.Dec_Sleep:%d\r\n",(uint16_t)ChgStatus,(uint16_t)ret,(uint16_t)(CHIP_STA0),(uint16_t)(CHIP_STA1),(uint16_t)(CHIP_STA2),(uint16_t)(CHIP_STA3),(uint16_t)(CHIP_STA4),(uint16_t)Decnt_SleepDelay);
#endif
#ifdef _DEBUG_ADC
- printf("adc chn:%d,Avg_Adc:%d,Ivol:%d,Vbat:%d,Vout:%d,Ivor:%d,Vntc:%d.\r\n",(uint16_t)ADC_Chn_Num,(uint16_t)g_Value_Adc_Avg,(uint16_t)g_pmu_Adc_Ivol,(uint16_t)g_Vbat_Adc,(uint16_t)g_pmu_Adc_Vout,(uint16_t)g_pmu_Adc_Ivor,(uint16_t)g_Vntc_Adc);
+ printf("adc chn:%d,Ivol:%d,Vbat:%d,Vout:%d,Ivor:%d,Vntc:%d.\r\n",(uint16_t)ADC_Chn_Num,(uint16_t)g_pmu_Adc_Ivol,(uint16_t)g_Vbat_Adc,(uint16_t)g_pmu_Adc_Vout,(uint16_t)g_pmu_Adc_Ivor,(uint16_t)g_Vntc_Adc);
#endif
if(Decnt_SleepDelay > 0)
{
diff --git a/UsrSrc/vox/vox_module.c b/UsrSrc/vox/vox_module.c
index 8c59521..68322e9 100644
--- a/UsrSrc/vox/vox_module.c
+++ b/UsrSrc/vox/vox_module.c
@@ -46,37 +46,35 @@ bit Vox_Output_Short_Flag = 0;
Macro definitions
\******************************************************************************/
/*100ms调用周期*/
-#define VOX_OUTPUT_SHORT_CNT 2
+#define VOX_OUTPUT_SHORT_CNT 2
-#define VOX_LOW_BAT_CNT 25 //关盖前,盒子低电保护,Vox 5V持续2.5s
+#define VOX_LOW_BAT_CNT 25 //关盖前,盒子低电保护,Vox 5V持续2.5s
-#define VOX_VOUT_5V_LEAST_CNT 50
+#define VOX_VOUT_5V_LEAST_CNT 40
-#define VOX_VOUT_5V_DEBOUNCE 5
+#define VOX_VOUT_5V_DEBOUNCE 5
-#define VOX_VOUT_0V_DEBOUNCE 5
+#define VOX_VOUT_0V_DEBOUNCE 5
-#define VOX_OCP_HICUUP_DEBOUNCE 5
+#define VOX_OCP_HICUUP_DEBOUNCE 5
-#define VOX_ADT_HOLD_CNT 3
+#define VOX_ADT_HOLD_CNT 3
-#define Vox_TX_Pattern_Cnt 3
+#define Vox_TX_Pattern_Cnt 3
-#define VOX_VOLTAGE_HOLD_CNT 3
+#define VOX_VOLTAGE_HOLD_CNT 3
-#define BOOST_VOUT_MAX 2 //跟随充Boost输出电压上限值:0:4.6V,1:4.7V,2:4.8V,3:5.05V.
+#define BOOST_VOUT_MAX 2 //跟随充Boost输出电压上限值:0:4.6V,1:4.7V,2:4.8V,3:5.05V.
-#define Vox_TX_Pattern_Tim 11
+#define Vox_TX_Pattern_Tim 20
-#define Vox_TX_Interval 2 //Vox定时发送指令时间间隔
+#define VOX_IOFF_HOLD_CNT 50
-#define Vox_TX_Interval_2 4
+#define VOX_FOLLOW_CHG_CNT 10
-#define VOX_IOFF_HOLD_CNT 50
+#define VOX_CLOSE_HOLD_CNT 50 //关盖发码前保持时间
-#define VOX_FOLLOW_CHG_CNT 10
-
-#define VOX_CLOSE_HOLD_CNT 50 //关盖发码前保持时间
+#define MAX_PACKET_SIZE 0x20
#if VOX_FOLLOW_CHG
@@ -123,12 +121,23 @@ xdata uint8_t Vox_Get_BES_Addr_Flag[2] = {0};
#endif
-xdata uint8_t Earphone_Vbat[2] = 0; //对耳电量
+#ifdef VOX_TX
+idata uint8_t Net_Info[2][13] = {0};
+
+idata uint8_t MAC_Addr[2][18] = {0};
+
+uint8_t EarPhone_Num = 0;
+
+#endif
+
+xdata uint8_t Earphone_Vbat[2] = 0; //对耳电量
xdata uint8_t Vox_Online_State[2] = {0}; //耳机在线标志位
bit Vox_Ocp_Flag = 0;
+bit OpenCover_TX_Cmd_Flag = 0;
+
#define KEY_TWS_PAIR_TIMER 2
#define KEY_TWS_PAIR_CNT 6
@@ -423,15 +432,17 @@ bit Vox_Ocp_Flag = 0;
void Vox_Det_Machine(void)
{
+ static bit Get_CHIP_STA1_Flag0;
+
static bit Get_CHIP_STA1_Flag1;
static bit Cover_Close_Flag;
static bit Cover_Close_Flag1;
+
+ static bit Cover_Close_Force_Vout_Flag;
static bit Cover_Open_Flag;
-
- static bit TX_Cmd_Flag;
static bit Cover_Open_5V_Flag;
@@ -450,6 +461,7 @@ void Vox_Det_Machine(void)
static bit Vox_Chn_Select;
static uint8_t Vox_Output_Debounce;
+ static bit CoverEvent_Flg1;
if( gBoost_Prepared_Flag )
{
@@ -471,8 +483,12 @@ void Vox_Det_Machine(void)
Vox_Voltage_Hold_Timer = 0; //关盖清0,开盖使用
Vox_TX_Timer = 0;
+
+ Get_CHIP_STA1_Flag0 = 0;
Get_CHIP_STA1_Flag1 = 0;
+
+ CoverEvent_Flg1 = 1;
if( CoverStatus == CLOSE ) //1、关盖关闭COM_CTRL;显示灯效。(无需查询Loadon、IOFF状态,无论耳机是否在仓,Vox 5V输出。)
{
@@ -486,14 +502,12 @@ void Vox_Det_Machine(void)
Vox_Chg_Full_Flag = 0;
+ Cover_Close_Force_Vout_Flag = 0;
+
Vox_Getinto_Sleep_Flag = 0;
Vox_Chn_Select = 0;
- Vox_Get_BES_Addr_Flag[VOL_TYPE] = 0x00;
-
- Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0x00;
-
Vox_Vout_Enable = ON;
Wkup_Earphone_Flag = 0;
@@ -507,7 +521,7 @@ void Vox_Det_Machine(void)
#endif
#ifdef _DEBUG_VOX
- printf("Box Close.\r\n");
+ printf("Box Close.(line:%d)\r\n",(u16)__LINE__);
#endif
}
else //2、开盖处理:5v 500ms 转0V 500ms,后转ADT模式。
@@ -520,28 +534,67 @@ void Vox_Det_Machine(void)
Cover_Open_5V_Flag = 0;
#ifdef _DEBUG_VOX
- printf("Box Open.\r\n");
+ printf("Box Open.(line:%d)\r\n",(u16)__LINE__);
#endif
}
+ Boost_Open_Flag = 0;
+
Vox_Output_Short_Flag = 0;
Vox_Ocp_Flag = 0;
CoverEvent_Flg = 0;
}
+ /* 开关盖后,VOX先升压5.2V 一段时间,唤醒耳机,后转入ADT,获取盒内耳机数量。 */
+ if( Vox_Voltage_Hold_Timer < VOX_VOUT_5V_DEBOUNCE ) //开盖后5V N00ms。
+ {
+ Vox_Voltage_Hold_Timer++;
+
+ return;
+ }
+ if ( CoverEvent_Flg1 )
+ {
+ CoverEvent_Flg1 = 0;
+
+ VOX_EN_Type(VOX_ADT_Mode);
+ return;
+ }
+ else
+ {
+ if ( !Get_CHIP_STA1_Flag0 ) //获取耳机在盒数量。
+ {
+ Get_CHIP_STA1_Flag0 = 1;
+
+ if ( CHIP_STA1 & ( VOR_LoadOn | VOL_LoadOn ) )
+ {
+ if ( ( CHIP_STA1 & ( VOR_LoadOn | VOL_LoadOn ) ) == ( VOR_LoadOn | VOL_LoadOn ) )
+ {
+ EarPhone_Num = 2;
+ }
+ else
+ {
+ EarPhone_Num = 1;
+ }
+ }
+ else
+ {
+ EarPhone_Num = 0;
+ }
+
+#ifdef _DEBUG_VOX
+ printf( "Open/Close Box,Earphones In Box(Num:%d)(VoxSta:0x%x).\r\n",(u16)EarPhone_Num, (u16)(CHIP_STA1) );
+#endif
+ }
+
+ }
+
/* 发送开盖指令*/
if( Cover_Open_Flag ) /*开盖后,5V持续N00ms后0V持续N00ms,保证耳机能被唤醒;之后发开盖码。*/
- {
- if( Vox_Voltage_Hold_Timer < VOX_VOUT_5V_DEBOUNCE ) //开盖后5V N00ms。
- {
- Vox_Voltage_Hold_Timer++;
-
- return;
- }
-
+ {
+ #if 0
if( Vox_TX_Timer < VOX_VOUT_0V_DEBOUNCE ) //转0V N00ms
{
VOX_EN_Type(VOX_PD1K_Mode);
@@ -549,6 +602,7 @@ void Vox_Det_Machine(void)
Vox_TX_Timer++;
}
else
+ #endif
{
if( !Get_CHIP_STA1_Flag1 )
{
@@ -557,15 +611,32 @@ void Vox_Det_Machine(void)
if( ( Vox_Output_Debounce % Vox_TX_Interval_2 ) == 0 ) //200ms发送一次
{
#ifdef VOX_TX
+#if JIELI
+
HandleTxCommand(VHOUSE_CMD_OPEN_BOX,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
+
+#elif ZHONGKE
+
+ HandleTxCommand(VHOUSE_CMD_OPEN_WINDOW,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
+
+#endif
#endif
}
else
if( ( Vox_Output_Debounce % Vox_TX_Interval ) == 0 ) //200ms发送一次
{
-#ifdef VOX_TX
+#ifdef VOX_TX
+#if JIELI
+
HandleTxCommand(VHOUSE_CMD_OPEN_BOX,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
+
+#elif ZHONGKE
+
+ HandleTxCommand(VHOUSE_CMD_OPEN_WINDOW,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
+
#endif
+#endif
+
}
Vox_Output_Debounce++;
@@ -578,9 +649,7 @@ void Vox_Det_Machine(void)
Get_CHIP_STA1_Flag1 = 1;
- TX_Cmd_Flag = 1;
-
- Boost_Open_Flag = 0;
+ OpenCover_TX_Cmd_Flag = 1;
Vox_Vout_Enable = OFF;
#ifdef _DEBUG_VOX
@@ -590,29 +659,32 @@ void Vox_Det_Machine(void)
}
else
{
- if( TX_Cmd_Flag )
+ if( Event_key == KEY_EVENT_Empty )
{
- TX_Cmd_Flag = 0;
-
- CHIP_STA1_BK = CHIP_STA1 & ( VOR_LoadOn | VOL_LoadOn );
- }
- else
- {
- /*耳机出入盒判断*/
- if( CHIP_STA1_BK != ( CHIP_STA1 & ( VOR_LoadOn | VOL_LoadOn ) ) ) //查询耳机loadon状态,loadon状态改变,则说明有耳机出入盒。
+ if( OpenCover_TX_Cmd_Flag )
{
- if( CHIP_STA1 & ( VOR_LoadOn | VOL_LoadOn ) )
- {
- Earphone_Chg_Flag = 1;
-#ifdef LED_DISPLAY
- LED_On_Flag = 1;
-#endif
-#ifdef _DEBUG_VOX
- printf("Open Box And Earphone GetIn.\r\n");
-#endif
- }
+ OpenCover_TX_Cmd_Flag = 0;
- CHIP_STA1_BK = ( CHIP_STA1 & ( VOR_LoadOn | VOL_LoadOn ) );
+ CHIP_STA1_BK = CHIP_STA1 & ( VOR_LoadOn | VOL_LoadOn );
+
+ }
+ else
+ {
+ /*耳机出入盒判断*/
+ if( CHIP_STA1_BK != ( CHIP_STA1 & ( VOR_LoadOn | VOL_LoadOn ) ) ) //查询耳机loadon状态,loadon状态改变,则说明有耳机出入盒。
+ {
+ if ( CHIP_STA1 & ( VOR_LoadOn | VOL_LoadOn ) )
+ {
+ Earphone_Chg_Flag = 1;
+#ifdef LED_DISPLAY
+ LED_On_Flag = 1;
+#endif
+ }
+#ifdef _DEBUG_VOX
+ printf( "Open Box And Earphone GetIn(Num:%d)(VoxSta:0x%x).\r\n",(u16)EarPhone_Num, (u16)(CHIP_STA1) );
+#endif
+ CHIP_STA1_BK = ( CHIP_STA1 & ( VOR_LoadOn | VOL_LoadOn ) );
+ }
}
}
}
@@ -637,14 +709,12 @@ void Vox_Det_Machine(void)
Follow_Chg_Sta = Vox_Follow_Chg_InitSta;
#endif
- Vox_TX_Timer = 0;
-
Vox_Voltage_Hold_Timer = 0;
- Vox_Output_Debounce = 0;
-
Vox_Chg_Full_Flag = 0;
+ Cover_Close_Force_Vout_Flag = 1;
+
return;
}
@@ -653,59 +723,75 @@ void Vox_Det_Machine(void)
printf("Close Box And Force Voltage Up.\r\n");
#endif
- Wkup_Earphone_Flag = 0;
- }
- else
- {
+ Boost_Open_Flag = 0;
+
if( Vox_Voltage_Hold_Timer <= VOX_VOLTAGE_HOLD_CNT ) //关盖Boost VPMID保持时间。
{
Vox_Voltage_Hold_Timer++;
return;
}
- /*发码*/
- if( Vox_TX_Timer <= Vox_TX_Pattern_Tim ) //发送关盖指令。
- {
- if( (Vox_TX_Timer % Vox_TX_Interval_2) == 0 ) //200ms发送一次
- {
+
+ Wkup_Earphone_Flag = 0;
+ }
+ else
+ {
+ if( !Cover_Close_Force_Vout_Flag )
+ {
+
+ /*发码*/
+ if( Vox_TX_Timer <= Vox_TX_Pattern_Tim ) //发送关盖指令。
+ {
+ if( (Vox_TX_Timer % Vox_TX_Interval_2) == 0 ) //200ms发送一次
+ {
#ifdef VOX_TX
- HandleTxCommand(VHOUSE_CMD_CLOSE_BOX,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
+#if JIELI
+ HandleTxCommand(VHOUSE_CMD_CLOSE_BOX,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
+#elif ZHONGKE
+ HandleTxCommand(VHOUSE_CMD_CLOSE_WINDOW,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
#endif
- }
- else
- if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200ms发送一次
- {
+#endif
+ }
+ else
+ if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200ms发送一次
+ {
#ifdef VOX_TX
- HandleTxCommand(VHOUSE_CMD_CLOSE_BOX,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
+#if JIELI
+ HandleTxCommand(VHOUSE_CMD_CLOSE_BOX,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
+#elif ZHONGKE
+ HandleTxCommand(VHOUSE_CMD_CLOSE_WINDOW,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
#endif
+
+#endif
+ }
+
+ Vox_TX_Timer++;
+
+ return;
}
- Vox_TX_Timer++;
+ if( Vox_Output_Debounce <= Vox_TX_Pattern_Tim ) //关盖后5s发送获取电量命令。
+ {
+ if( (Vox_Output_Debounce % Vox_TX_Interval_2) == 0 ) //200ms发送一次
+ {
+#ifdef VOX_TX
+ HandleTxCommand(VHOUSE_CMD_CLOSE_WIN_GET_VBAT,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
+#endif
+ }
+ else
+ if( (Vox_Output_Debounce % Vox_TX_Interval) == 0 ) //200ms发送一次
+ {
+#ifdef VOX_TX
+ HandleTxCommand(VHOUSE_CMD_CLOSE_WIN_GET_VBAT,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
+#endif
+ }
- return;
+ Vox_Output_Debounce++;
+
+ return;
+ }
}
}
-
- if( Vox_Output_Debounce <= VOX_CLOSE_HOLD_CNT ) //关盖后5s发送获取电量命令。
- {
- if( (Vox_Output_Debounce % Vox_TX_Interval_2) == 0 ) //200ms发送一次
- {
-#ifdef VOX_TX
- HandleTxCommand(VHOUSE_CMD_CLOSE_WIN_GET_VBAT,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
-#endif
- }
- else
- if( (Vox_Output_Debounce % Vox_TX_Interval) == 0 ) //200ms发送一次
- {
-#ifdef VOX_TX
- HandleTxCommand(VHOUSE_CMD_CLOSE_WIN_GET_VBAT,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
-#endif
- }
-
- Vox_Output_Debounce++;
-
- return;
- }
/*Vox 过流保护,两只耳机都每隔500ms打嗝一次*/
if( IRQ_FLAG0 & ( VOR_OutPut_Short | VOL_OutPut_Short ) )
@@ -751,8 +837,8 @@ void Vox_Det_Machine(void)
{
if( !Vox_Chg_Full_Flag )
{
- // if( ( CHIP_STA1 & ( VOR_Ioff | VOL_Ioff | VOL_LoadOn | VOR_LoadOn ) == ( VOR_Ioff | VOL_Ioff | VOL_LoadOn | VOR_LoadOn ) ) || F_batlevel_low ) //耳机充满、VOX无负载、盒子低电,则关闭Vout输出通路,关闭Boost。
- if( ( (CHIP_STA1 & 0xAC) == 0xAC ) || F_batlevel_low )
+ if( ( CHIP_STA1 & ( VOR_Ioff | VOL_Ioff | VOL_LoadOn | VOR_LoadOn ) == ( VOR_Ioff | VOL_Ioff | VOL_LoadOn | VOR_LoadOn ) ) || F_batlevel_low ) //耳机充满、VOX无负载、盒子低电,则关闭Vout输出通路,关闭Boost。
+ // if( ( (CHIP_STA1 & 0xAC) == 0xAC ) || F_batlevel_low )
{
if( Vox_Voltage_Hold_Timer <= VOX_VOUT_5V_LEAST_CNT ) //重载转轻载延时5s后关闭Boost输出。
{
@@ -771,9 +857,7 @@ void Vox_Det_Machine(void)
Vox_Voltage_Hold_Timer = 0;
Vox_Getinto_Sleep_Flag = 0;
-
- Boost_Open_Flag = 0;
-
+
VOX_EN_Type(VOX_ADT_Mode); //VOX Enable ADT
}
else
@@ -788,7 +872,6 @@ void Vox_Det_Machine(void)
}
else
{
-
if( Vox_Output_Debounce <= Vox_TX_Pattern_Tim )
{
if( (Vox_Output_Debounce % Vox_TX_Interval_2) == 0 ) //200ms发送一次
@@ -896,7 +979,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
if( !nVpmid_Value_Setting )
{
DisCharge_Boost_Open(OFF,n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present);
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG InitSta Set Max Vpmid.(Vox_sta:0x%x)(line:%d)\r\n",(uint16_t)CHIP_STA1, (uint16_t)__LINE__);
#endif
nVpmid_Value_Setting = 1;
@@ -935,7 +1018,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
Follow_Chg_Sta = Vox_Follow_Chg_Sta1;
Vox_Follow_Chg_Debounce = 0;
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG InitSta.(Vox_sta:0x%x)(line:%d)\r\n",(uint16_t)CHIP_STA1, (uint16_t)__LINE__);
#endif
}
@@ -950,7 +1033,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
n_Vox_Fllow_Chg->Vox_Follow_Stop = ON;
Follow_Chg_Sta = Vox_Follow_Chg_InitSta;
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta1,No EarPhone In Box.(line:%d)\r\n",(uint16_t)__LINE__);
#endif
}
@@ -964,7 +1047,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
n_Vox_Fllow_Chg->IVox_Threshold_Neg[VOR_CHAN] = ( g_pmu_Adc_Ivor / 5 ) << 2; //Ivox_Threshold_Neg = IVox_Init * 80%
n_Vox_Fllow_Chg->IVox_Threshold_Pos[VOR_CHAN] = g_pmu_Adc_Ivor << 1; //Ivox_Threshold_Neg = IVox_Init * 2
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta1,VOR Chging(Ivor:%dmA).(line:%d)\r\n",g_pmu_Adc_Ivor,(uint16_t)__LINE__);
#endif
@@ -977,7 +1060,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
n_Vox_Fllow_Chg->IVox_Threshold_Neg[VOL_CHAN] = ( g_pmu_Adc_Ivol / 5 ) << 2; //Ivox_Threshold_Neg = IVox_Init * 80%
n_Vox_Fllow_Chg->IVox_Threshold_Pos[VOL_CHAN] = g_pmu_Adc_Ivol << 1; //Ivox_Threshold_Neg = IVox_Init * 2
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta1,VOL Chging(Ivol:%dmA).(line:%d)\r\n",g_pmu_Adc_Ivol,(uint16_t)__LINE__);
#endif
@@ -1005,7 +1088,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
n_Vox_Fllow_Chg->IVox_At_Present[VOR_CHAN] = g_pmu_Adc_Ivor;
n_Vox_Fllow_Chg->Vox_InBox_Sta[VOR_CHAN] = ON; //判断VOR有耳机在盒正常抽电
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta2,Get IVOR:%dmA.(line:%d)\r\n",(uint16_t)g_pmu_Adc_Ivor,(u16)__LINE__);
#endif
}
@@ -1015,7 +1098,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
n_Vox_Fllow_Chg->IVox_At_Present[VOL_CHAN] = g_pmu_Adc_Ivol;
n_Vox_Fllow_Chg->Vox_InBox_Sta[VOL_CHAN] = ON; //判断VOL有耳机在盒正常抽电
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta2,Get IVOL:%dmA.(line:%d)\r\n",(uint16_t)g_pmu_Adc_Ivol,(u16)__LINE__);
#endif
}
@@ -1041,7 +1124,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
Follow_Chg_Sta = Vox_Follow_Chg_InitSta;
n_Vox_Fllow_Chg->Vox_Follow_Start = OFF; //重启动跟随充
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta3,VOX Chg ReInit.(line:%d)\r\n",(uint16_t)__LINE__);
#endif
}
@@ -1059,14 +1142,14 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
{
n_Vox_Fllow_Chg->Vox_InBox_Sta[VOR_CHAN] = OFF;
}
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta3(CV),VOR Vpmid AddSta(Ivor:%dmA).(line:%d)\r\n",n_Vox_Fllow_Chg->IVox_At_Present[VOR_CHAN],(u16)__LINE__);
#endif
}
else //未检测到Ivor Ioff,则Vpmid降档
{
n_Vox_Fllow_Chg->Vpmid_SubSta[VOR_CHAN] = ON;
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta3(CV),VOR Vpmid SubSta(Ivor:%dmA).(line:%d)\r\n",n_Vox_Fllow_Chg->IVox_At_Present[VOR_CHAN],(u16)__LINE__);
#endif
}
@@ -1076,14 +1159,14 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
if ( n_Vox_Fllow_Chg->IVox_At_Present[VOR_CHAN] > n_Vox_Fllow_Chg->IVox_Threshold_Neg[VOR_CHAN] )
{
n_Vox_Fllow_Chg->Vpmid_SubSta[VOR_CHAN] = ON;
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta3(CC),VOR Vpmid SubSta(Ivor:%dmA).(line:%d)\r\n",n_Vox_Fllow_Chg->IVox_At_Present[VOR_CHAN],(u16)__LINE__);
#endif
}
else
{
n_Vox_Fllow_Chg->Vpmid_AddSta[VOR_CHAN] = ON;
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta3(CC),VOR Vpmid AddSta(Ivor:%dmA).(line:%d)\r\n",n_Vox_Fllow_Chg->IVox_At_Present[VOR_CHAN],(u16)__LINE__);
#endif
}
@@ -1102,14 +1185,14 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
{
n_Vox_Fllow_Chg->Vox_InBox_Sta[VOL_CHAN] = OFF;
}
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta3(CV),VOL Vpmid AddSta(Ivol:%dmA).(line:%d)\r\n",n_Vox_Fllow_Chg->IVox_At_Present[VOL_CHAN],(u16)__LINE__);
#endif
}
else //未检测到Ivol Ioff,则Vpmid降档
{
n_Vox_Fllow_Chg->Vpmid_SubSta[VOL_CHAN] = ON;
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta3(CV),VOL Vpmid SubSta(Ivol:%dmA).(line:%d)\r\n",n_Vox_Fllow_Chg->IVox_At_Present[VOL_CHAN],(u16)__LINE__);
#endif
}
@@ -1119,14 +1202,14 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
if ( n_Vox_Fllow_Chg->IVox_At_Present[VOL_CHAN] > n_Vox_Fllow_Chg->IVox_Threshold_Neg[VOL_CHAN] )
{
n_Vox_Fllow_Chg->Vpmid_SubSta[VOL_CHAN] = ON;
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta3(CC),VOL Vpmid SubSta(Ivol:%dmA).(line:%d)\r\n",n_Vox_Fllow_Chg->IVox_At_Present[VOL_CHAN],(u16)__LINE__);
#endif
}
else
{
n_Vox_Fllow_Chg->Vpmid_AddSta[VOL_CHAN] = ON;
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta3(CC),VOL Vpmid AddSta(Ivol:%dmA).(line:%d)\r\n",n_Vox_Fllow_Chg->IVox_At_Present[VOL_CHAN],(u16)__LINE__);
#endif
}
@@ -1165,12 +1248,12 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
n_Vox_Fllow_Chg->Vpmid_AddSta[VOL_CHAN] = ON;
Follow_Chg_Sta = Vox_Follow_Chg_Sta2;
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta4,VOx Vpmid AddSta(Vout:0x%x,Ivol:%dmA,Ivor:%dmA)(line:%d).\r\n",n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,g_pmu_Adc_Ivol,g_pmu_Adc_Ivor,(u16)__LINE__);
#endif
}
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
else
{
printf("Follow CHG Sta4,VOx Ching(Vout:0x%x,Ivol:%dmA,Ivor:%dmA)(line:%d).\r\n",n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,g_pmu_Adc_Ivol,g_pmu_Adc_Ivor,(u16)__LINE__);
@@ -1190,11 +1273,11 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
n_Vox_Fllow_Chg->Vpmid_AddSta[VOR_CHAN] = ON;
Follow_Chg_Sta = Vox_Follow_Chg_Sta2;
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta4,VOR Vpmid AddSta(Vout:0x%x,Ivor:%dmA)(line:%d).\r\n",n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,g_pmu_Adc_Ivor,(u16)__LINE__);
#endif
}
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
else
{
printf("Follow CHG Sta4,VOR Ching(Vout:0x%x,Ivor:%dmA)(line:%d).\r\n",n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,g_pmu_Adc_Ivor,(u16)__LINE__);
@@ -1210,11 +1293,11 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
n_Vox_Fllow_Chg->Vpmid_AddSta[VOL_CHAN] = ON;
Follow_Chg_Sta = Vox_Follow_Chg_Sta2;
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta4,VOL Vpmid AddSta(Vout:0x%x,Ivol:%dmA)(line:%d).\r\n",n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,g_pmu_Adc_Ivol,(u16)__LINE__);
#endif
}
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
else
{
printf("Follow CHG Sta4,VOL Ching(Vout:0x%x,Ivol:%dmA)(line:%d).\r\n",n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,g_pmu_Adc_Ivol,(u16)__LINE__);
@@ -1240,7 +1323,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
if( ( n_Vox_Fllow_Chg->Vpmid_SubSta[VOR_CHAN] == ON ) && ( n_Vox_Fllow_Chg->Vpmid_SubSta[VOR_CHAN] == ON ) )
{
n_Vox_Fllow_Chg->Vpmid_SubSta_Flag = ON;
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG SubSta,VOL/VOR(line:%d).\r\n",(uint16_t)__LINE__);
#endif
}
@@ -1250,7 +1333,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
if( n_Vox_Fllow_Chg->Vpmid_SubSta[VOR_CHAN] == ON )
{
n_Vox_Fllow_Chg->Vpmid_SubSta_Flag = ON;
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG SubSta,VOR(line:%d).\r\n",(uint16_t)__LINE__);
#endif
}
@@ -1261,7 +1344,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
if( n_Vox_Fllow_Chg->Vpmid_SubSta[VOL_CHAN] == ON )
{
n_Vox_Fllow_Chg->Vpmid_SubSta_Flag = ON;
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG SubSta,VOL(line:%d).\r\n",(uint16_t)__LINE__);
#endif
}
@@ -1306,7 +1389,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
Vox_Follow_Chg_Debounce = 0;
n_Vox_Fllow_Chg->Vpmid_SubSta_Flag = OFF;
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG SubSta,(STA:0x%x,Vpmid:0x%x,PTM:%d)(line:%d)\r\n",(uint16_t)Follow_Chg_Sta,(uint16_t)n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,(uint16_t)n_Vox_Fllow_Chg->Vox_PTM_Type,(uint16_t)__LINE__);
#endif
DisCharge_Boost_Open(n_Vox_Fllow_Chg->Vox_PTM_Type, n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present );
@@ -1335,7 +1418,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
Follow_Chg_Sta = Vox_Follow_Chg_Sta1;
}
-#ifdef _DEBUG_VOX
+#ifdef _DEBUG_FOLLOW
printf("Follow CHG AddSta,(STA:0x%x,Vpmid:0x%x)(line:%d)\r\n",(uint16_t)Follow_Chg_Sta,(uint16_t)n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,(uint16_t)__LINE__);
#endif
DisCharge_Boost_Open(OFF, n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present);
@@ -1413,20 +1496,14 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
*
*******************************************************************************
*/
-idata uint8_t Net_Info[2][8] = {0};
-
-idata uint8_t MAC_Addr[2][18] = {0};
-
-uint8_t EarPhone_Num = 0;
-
-#define MAX_PACKET_SIZE 0x20
-
void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select)
{
uint8_t dataLen = 0;
uint8_t tx_pData[COM0_Data_Lenth] = 0;
uint8_t i = 0;
+#if JIELI
+
/*数据包头*/
tx_pData[0] = 0x00;
tx_pData[1] = BOXHEADER>>8;
@@ -1458,14 +1535,14 @@ void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select)
case VHOUSE_CMD_EXCH_TWS_BTADDR:
/*Data Length*/
- tx_pData[3] = 0x1B;
+ tx_pData[3] = MAX_PACKET_SIZE;
for(i=5;i<18;i++)
{
tx_pData[i] = MAC_Addr[nVox_Chn_Select][i];
}
- for(i=23;i<8;i++)
+ for(i=23;i<13;i++)
{
tx_pData[i] = Net_Info[nVox_Chn_Select][i];
}
@@ -1536,6 +1613,84 @@ void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select)
tx_pData[dataLen] = Crc8Maxim(tx_pData,dataLen);
+#elif ZHONGKE
+
+ /*数据包头*/
+ tx_pData[0] = BOXHEADER>>8;
+ tx_pData[1] = BOXHEADER;
+ /*充电仓识别码*/
+ tx_pData[2] = BOXIDCODE;
+ /*耳机通道*/
+ tx_pData[5] = nVox_Chn_Select;
+ /*指令编号*/
+ tx_pData[3] = TxCommand;
+
+ switch(TxCommand)
+ {
+ case VHOUSE_CMD_GET_VBAT:
+
+ case VHOUSE_CMD_OPEN_WINDOW:
+
+ case VHOUSE_CMD_CLOSE_WIN_GET_VBAT:
+
+ /*Data Length*/
+ tx_pData[4] = 0x03;
+
+ tx_pData[6] = ( ( ChgStatus & CHG_STA_ING ) << 7 ) | bat_level; //bit 0~6 表示充电仓电量值 0~100;bit 7 为 1 表示在给充电仓充电,为 0 表示没有给充电仓充电;
+
+ tx_pData[7] = 0x00;
+
+ break;
+
+ case VHOUSE_CMD_PAIR: //长按充电仓按键3s,充电仓发送配对指令。
+ /*
+ 发送给右耳 CMD2,右耳接收到,发送 CMD3 指令给充电仓,充电仓 copy 该指令给
+ 左耳,充电仓可随即发送 CMD2 指令给左耳,左耳会发送 CMD=0x03 给充电仓,充电仓直接
+ copy CMD3 给右耳即可,右耳接收到发送 VHOUSE_CMD_SUCCES 指令给充电仓。
+ */
+ /*Data Length*/
+ tx_pData[4] = 0x01;
+
+ break;
+
+ case VHOUSE_CMD_GET_TWS_BTADDR: //将收到的CMD3转发给对耳。
+#ifdef VOX_RX
+
+ for(i=0;i充电仓
+
+ break;
+
+ default:
+ break;
+ }
+
+#endif
+
}
/*
@@ -1699,12 +1897,19 @@ void HandleVoxCommMsg(void)
if( Uart1_RX_Finish_Flag )
{
Uart1_RX_Finish_Flag = 0;
-//#ifdef _DEBUG_VOX
+#ifdef _DEBUG_VOX
printf("RX1_Buffer[0]:0x%x,RX1_Buffer[1]:0x%x,RX1_Buffer[2]:0x%x,RX1_Buffer[3]:0x%x,RX1_Buffer[4]:0x%x,RX1_Buffer[5]:0x%x,RX1_Buffer[6]:0x%x,line:%d\r\n",(u16)RX1_Buffer[0],(u16)RX1_Buffer[1],(u16)RX1_Buffer[2],(u16)RX1_Buffer[3],(u16)RX1_Buffer[4],(u16)RX1_Buffer[5],(u16)RX1_Buffer[6],(u16)__LINE__);
-//#endif
+#endif
+#if JIELI
CrcCheckSum = Crc8Maxim(RX1_Buffer, RX1_Buffer[2] + 3); //求校验和
if( CrcCheckSum == RX1_Buffer[RX1_Buffer[2] + 3] )
+#elif ZHONGKE
+ CrcCheckSum = Crc8Maxim( RX1_Buffer, RX1_Buffer[4] + 5 );
+
+ if( CrcCheckSum == RX1_Buffer[ RX1_Buffer[4] + 5 ] )
+
+#endif
{
HandleRxMsg((VOX_BES_COMMAND_E)RX1_Buffer[3]);
}