更改内容:1、将双向通信功能模块提取出来;2、优化部分bug和不合理处代码;

This commit is contained in:
Alex xu 2025-02-14 11:21:18 +08:00
parent 044cec1236
commit 4949ba6351
31 changed files with 2159 additions and 2064 deletions

Binary file not shown.

View File

@ -1,753 +0,0 @@
:030000000222F6E3
:1022F600758E3075D20078FFE4F6D8FD9000007F29
:10230600007E01E4F0A3DFFCDEFA75816F02235143
:0F2AD8001225BAD2AED2BE12248E12294C80F42F
:1026CE0075FE0F43FF8075FE2975FFB575A5217543
:1026DE00FE1E43FF01E5A3540F24F89001CBF0E555
:1026EE00A3C4540F9001DFF0E5AD540F24F875F03C
:1026FE000AA49001D5F09001D9E5ABF0E5ADC45434
:10270E000F24F875F00AA49001D6F09001DCE5AC28
:04271E00F0D2BD2216
:1018AA0090013FEFF0203E03021ACB9001D1E0FEF7
:1018BA00A3E07803CEC313CE13D8F9F0EE9001D18A
:1018CA00F09001CEE024FD604914700302199214CD
:1018DA007003021A0824FE7003021A7924056003B1
:1018EA00021AC89001CBE0FF3395E0FEC39001D203
:1018FA00E09FFF9001D1E09EFE9001DAF0A3EFF0A5
:10190A00C3EE648094804003021AC8E49001DA02AC
:10191A001AC59001D1E0FEA3E0FF7C097DC4120B39
:10192A001F780A120AA99001D1EEF0A3EFF09001F4
:10193A00D5E0FD3395E0FCC3EF9DFFEE9CFE3395A9
:10194A00E0FDFCE47B64FAF9F8120A49C006C00714
:10195A009001D9E075F002A424F4FFE5F03401AB5C
:10196A0007FA3395E0F9F8D007D006122808900153
:10197A00C9EEF0A3EFF0C3EE648094804003021A2C
:10198A00C8E49001C9021AC59001D1E0FEA3E0FFA4
:10199A007C097DC4120B1F780A120AA99001D1EEA4
:1019AA00F0A3EFF09001D6E0FD3395E0FCC3EF9D84
:1019BA00FFEE9CFE3395E0FDFCE47B64FAF9F81235
:1019CA000A49C006C0079001DCE075F002A424F4BD
:1019DA00FFE5F03401AB07FA3395E0F9F8D007D008
:1019EA00061228089001CCEEF0A3EFF0C3EE648053
:1019FA0094804003021AC8E49001CC021AC59001EF
:101A0A00D1E0FEA3E0FF7C097DC4120B1F780A1205
:101A1A000AA99001D1EEF0A3EFF0E025E0FE9001D3
:101A2A00D1E0339001D7F0A3CEF09001D7E0FEA326
:101A3A00E07802C333CE33CED8F9FDAC069001DF8D
:101A4A00E0FF3395E0FEEF24F8FFEE34FFFE1209C3
:101A5A00517C037DE81209639001D7EE8FF01209D9
:101A6A0099C39001D7E0648094805052E4804C90EE
:101A7A0001CBE0FF3395E0FEC39001D2E09FFF90D7
:101A8A0001D1E09EFEE4FCFD7BC47A09F9F8120A52
:101A9A0049780A120ABC9001D1EEF0A3EFF0E025D2
:101AAA00E0FF9001D1E033FE9001CFF0A3EFF0C345
:101ABA00EE648094805007E49001CFF0A3F0C23E18
:101ACA002290013FE09001CEF0C454F04401F5A504
:0C1ADA00E49001D1F0A3F09001DEF022B6
:03006B0002242349
:10242300C0E0C0F0C083C082C0D075D000C000C07F
:1024330006C007E5F330E03FAFA19001D3E4F0A37A
:10244300EFF0E5A25403FE9001D3E04EF0A3E0F0D9
:102453009001DEE0C3940850199001D3E0FEA3E09D
:10246300FF9001D1EE8FF01209999001DEE004F0A4
:102473008005D23E53A5FE75F301D007D006D000E8
:0B248300D0D0D082D083D0F0D0E03267
:1028810075FE8743FF209001FB7403F075FE7043D2
:10289100FF1853B3F143B302E47809F6780BF6E07D
:1028A10018F6780C76017909E718461846F5B175DE
:0328B100B201224F
:101CC200E4FE9001DAE0FCA3E0FDC394E8EC9403A7
:101CD20040037F0022EF7003021DDDD3ED940FEC71
:101CE20094034003021DBBED94CBEC94005003021D
:101CF2001DBBD3ED94AAEC94024023D21A9001FBAF
:101D0200E0FF13780AF6301B11D3ED94BFEC940276
:101D12004004C21B8004780AA607E4FE8071D3ED5A
:101D220094AAEC94025044ED9437EC9401403CD2D6
:101D32001B9001FBE0FF780AF6301A13D3ED94935F
:101D4200EC94025004C21A8006EFC313780AF678A4
:101D52000C7601301511D3ED9451EC94015004C26C
:101D6200158004E4780CF6E4FE8024D3ED9437EC7D
:101D72009401501BD215E4780CF6301B10ED94261A
:101D8200EC94015004C21B8004780C7601E4FE300E
:101D92001811C3ED94F3EC94025006C218E4FE80CD
:101DA200027E0130192FD3ED94DDEC94004006C27F
:101DB20019E4FE80207E01801CD3ED940FEC940385
:101DC2004006D2187E01800DD3ED94CBEC940050E6
:101DD20004D2197E01C216C2178058C218C219D382
:101DE200ED949FEC94035031ED9471EC94004029F2
:101DF200301610ED9484EC94035006C216E4FE8073
:101E0200027E0130172DD3ED9482EC94004006C27D
:101E120017E4FE801E7E01801AD3ED949FEC94039A
:101E22004004D216800BC3ED9471EC94005002D2A0
:0A1E3200177E01780CE6F5B2AF064A
:011E3C002283
:1020C400E4FBFAE5E65480FFE4FCFDFEEF70075301
:1020D400B3FE7808F62278087601E5E830E5057560
:1020E400E8208005E5E530E10453B3FE22E5F23053
:1020F400E50475F22022E5F2540C601353B3FEE5B7
:10210400F354C0700302219F75F20C75F3C022755D
:10211400F3C07F01121CC2EF600653B3FED21C222F
:10212400C21CE5F230E432780CE6B401067A107B86
:102134006880047A0F7BA0EB246AFFEA34FFFEC3B5
:102144009001D8E09F9001D7E09E500575F2108071
:102154000353B3FE78087603227909E7780B46180F
:1021640046F5B1780CE6F5B243B31190019EE0FF59
:10217400D394014002C237EFD394034002C233EF39
:10218400D394074002C235EFD3940C4002C234EF1B
:0B219400D394114002C2367808760296
:01219F00221D
:10005600303910EFB4010475B5C02253B5BFED4475
:0400660080F5B5224A
:102AC700E5B55480FFEF6008303905E4F5B5C23944
:012AD70022DC
:10261900C239E5E520E156E5E230E703D23A22E5A1
:10262900E830E00D301E4675E8017D3FE4FF020009
:1026390056E4FF121CC2EF6006122AC7D23822C222
:1026490038303703022AC7D239303A217808E6B43C
:10265900021BC39001D8E094109001D7E0648094E4
:0E2669008E4005D239C23A22122AC7C2392247
:10297E00E5E25408FF9001F8E06F6021E5E230E3F4
:10298E00089001F77401F08005E49001F7F0D23F52
:0D299E00C210D229D22B9001F8EFF0D241E7
:0129AB002209
:101AE600E5E25402FFE4FCFDFEEF70319001E27581
:101AF600F0011209999001E2E0FEA3E0FFC39417FA
:101B0600EE94024004D231800EC3EF9487EE940027
:101B16004005203002D230D22DC22E8041302D37E2
:101B2600D241E49001E5F0C22DD22E9001E4F0906E
:101B360001E2E0FEA3E0FFD3941EEE94005008D22B
:101B46002CD22FD22B800EC3EF944FEE940150056A
:101B5600303002D232C230E49001E2F0A3F0302EEF
:101B66003830393530322920100280337F0312276E
:101B7600229001E4E0D394235003021CAFC23290BA
:101B860001E57402F0E49001E1F090012FF0A3F07A
:101B9600302F02C22FC22EC21030312B20100A7DE8
:101BA6003FE4FF120056D210227F03122722900133
:101BB600E4E0D394235003021CAFC231E49001E663
:101BC600F09001E57403F09001F7E0640160030210
:101BD6001CC19001E5E064026003021C849001E1EF
:101BE600E0C3940150107D257F37121661E4900101
:101BF6002FF0A3F080709001E0E0D39405401CE440
:101C0600F07D257F111216617D247F11121661E485
:101C16009001E5F0D2137F03021CBE900130E0B4C0
:101C2600010F7D247F0A1216619001307402F08044
:101C360035900130E06402702D90012FE060207D28
:101C4600257F0A121661E490012FF0A3F09001E1BE
:101C5600F09001E0F09001E5F0D2137F0480597D09
:101C6600247F371216619001E1E0D39414400A9064
:101C760001E0E004F0E4A3F0229001E1802B900162
:101C8600E5E064037035A3E0FFC394B4501FEF543E
:101C96000F70047D25800A9001E6E0540770077DE9
:101CA600247F0B1216619001E6E004F022E4900115
:0B1CB600E5F0D213A3F07F04122722F8
:011CC1002200
:10291A0075FE0675FF3C75FE0E53FF0F75FE0F53CD
:10292A00FFF075FE0375FFFFE4900173F0900172EA
:10293A00F0900174F0900171F0C282C283C285C224
:02294A008422E5
:102A6F00EF14600D14600D14600D2403700BD282EF
:0A2A7F0022D28322D28422D28522C3
:052A320090013FE0FFF0
:102A3700EF14600D14600D14600D2403700BC28237
:0A2A470022C28322C28422C285222B
:10255A00E4FF74752FF582E43401F583E4F07479AD
:10256A002FF582E43401F583E4F0EF25E0247DF5CC
:10257A0082E43401F583E4F0A3F0EF25E02485F545
:10258A0082E43401F583E4F0A3F0EF25E0248DF52D
:10259A0082E43401F583E4F0A3F0EF25E02495F515
:0F25AA0082E43401F583E4F0A3F00FEFB404A34F
:0125B90022FF
:1024F700AC0774752CF582E43401F583EDF0EAC37B
:1025070013FEEB13FFEC25E0247DF582E43401F59F
:1025170083EEF0A3EFF0AF03EC25E02485F582E42A
:102527003401F583EAF0A3EFF0900144E0FEA3E065
:10253700FFEC25E0248DF582E43401F583EEF0A36A
:10254700EFF0EC25E02495F582E43401F583E4F01F
:03255700A3F022CC
:10000E0074752FF582E43401F583EDF074792FF5D4
:10001E0082E43401F583EBF0EF25E0247DF582E4F4
:10002E003401F583E4F0A37469F0EF25E02495F52F
:0B003E0082E43401F583E4F0A3F0221B
:10103E00E490013FF0F090013FE0FFC394044003C1
:10104E0002138074752FF582E43401F583E060227B
:10105E0024FE60241470030211481470030211BFA1
:10106E002403600302131C90013FE0FF122A6F025B
:10107E00131C122A3202131C90013FE0FF25E024BC
:10108E007DF582E43401F583E0FCA3E0FDEF25E07D
:10109E002495F582E43401F583E0FEA3E0C39DEED2
:1010AE009C5005122A6F8003122A3290013FE0FFF6
:1010BE0025E02485F582E43401F583E0FCA3E0FD10
:1010CE00EF25E02495F582E43401F583E0FEA3E0FC
:1010DE00C39DEE9C500302131C90013FE025E024BB
:1010EE0095F582E43401F583E4F0A3F0EF25E024D6
:1010FE008DF582E43401F583E0FEA3E0D39400EE97
:10110E009400401690013FE025E0248DF582E434F2
:10111E0001F58374FFF5F012099990013FE0FF2568
:10112E00E0248DF582E43401F583E0FCA3E04C600D
:10113E000302131C74752F0211DB90013FE0FF2593
:10114E00E0247DF582E43401F583E0FCA3E0FDEFBD
:10115E0025E02495F582E43401F583E0FEA3E0D387
:10116E009DEE9C5005122A6F8003122A3290013F89
:10117E00E0FF25E02485F582E43401F583E0FCA34D
:10118E00E0FDEF25E02495F582E43401F583E0FEE1
:10119E00A3E0C39DEE9C500302131C90013FE0257B
:1011AE00E02495F582E43401F583E4F0A3F0021314
:1011BE001C90013FE0FF2479F582E43401F583E0D1
:1011CE0070171227C4C24090013FE02475F582E4E7
:1011DE003401F583E4F002131C90013FE0FF247903
:1011EE00F582E43401F583E0FE6402704B20401476
:1011FE00D240EF25E0247DF582E43401F583E4F05E
:10120E00A37469F090013FE0FF25E0247DF582E4B0
:10121E003401F583E475F001120999EF25E0247D80
:10122E00F582E43401F583E0FCA3E0C394FEEC9474
:10123E00005003021306804EEE6401705A204017D0
:10124E00D24090013FE025E0247DF582E43401F5A3
:10125E0083E4F0A374FEF090013FE0FF25E0247DCF
:10126E00F582E43401F58374FFF5F0120999EF2548
:10127E00E0247DF582E43401F583E0FEA3E0D3940F
:10128E0069EE9400507290013FE02479F582E434C7
:10129E0001F583E4F0806190013FE0FF2479F5824F
:1012AE00E43401F583E06403704EEF25E0247DF510
:1012BE0082E43401F583E0FEA3E0FFC394FEEE94D6
:1012CE00004004D240800BD3EF946AEE940050029B
:1012DE00C24090013FE025E0247D30400DF582E4D0
:1012EE003401F58374FFF5F0800BF582E43401F5DB
:1012FE0083E475F00112099990013FE0FF25E02487
:10130E007DF582E43401F583A3E0FD12277390018D
:10131E003FE0FF701174752FF582E43401F583E020
:10132E00900173F0804390013FE0B401102475F5F5
:10133E0082E43401F583E0900172F0802C90013F3D
:10134E00E0B402102475F582E43401F583E09001D7
:10135E0074F0801590013FE0B4030E2475F582E41D
:10136E003401F583E0900171F090013FE004F0024A
:10137E001044E490013FF090013FE0FFC39404500D
:10138E001BEF25E02495F582E43401F583E475F036
:0C139E000112099990013FE004F080DB8F
:0113AA002220
:1028B40075FE1E43FF0275FE2143FF0875D486751D
:1028C400FE2143FF0475FE2143FF02300E0875FE0E
:1028D4002453FFC3800675FE2443FF3C9001FC741F
:0328E4000FF022D0
:10006E00D2AC759A01D2B9D2BDD2A9D2AB75FE2946
:04007E0043FFB0226A
:102A9F00C2ACE4F59AD2B9C2BDC2A9C2AB75FE29C8
:042AAF0053FF4F2260
:092B0200122A9F43870202006EB3
:102AB300E5E25401FFEF7006201403304104C241E4
:042AC300C322D32235
:1025BA0075FE01E4F5FF122AF5122AE7E4F586759D
:1025CA00B7C375FE6A75FF0475FE6C53FF3043FF8F
:1025DA004A1226CE75FE8043FF0275FE0E53FFFC9B
:1025EA0043FF0175FE1775FF3CD2A8D2AF122881AE
:1025FA007D697F03122A8912291A12255A1228B4D0
:0F260A009001FC740FF0C2109001F07401F022E7
:03000300020006F2
:03000600D24132B2
:03004B00022B0B7A
:062B0B0075EB3CD24132E3
:03005300022B116C
:062B110075F302D241320F
:0D2AF50075BB03759DDC759B92439A012211
:0628E700900165120AF0E9
:1028ED00E4900168F0F0900168E0C39FE49E501CF5
:1028FD00203CFDD23C900165E475F001120AD9121D
:0C290D0008B6F59C900168E004F080DA48
:01291900229B
:030083000221A0B7
:1021A000C0E0C083C082C0D075D000C000C003C0F2
:1021B00005C006C007E59B30E105539BFDC23CE529
:1021C0009B30E079539BFED2419001F3E0146023F1
:1021D00004706AE59C9001F3B4AA127401F0A3E4C0
:1021E000F0E0FF04F074502FF8A69C8050E4F0A3B8
:1021F000F0804A9001F4E0FF04F074502FF8A69CA0
:10220000E0FDB407177856E6FEE42409FFE43EFE3D
:1022100018E6FBEF4BFFA3EEF0A3EFF0EDFF90010C
:10222000F5E07003A3E06F60099001F4E0D394201F
:10223000400B9001F4E4F09001F3F0D23DD007D0D0
:1022400006D005D003D000D0D0D082D083D0E032E9
:06284C004301F00402024A
:1029F2009001DDE0FF04F01218AA9001DDE0B406B8
:102A02000204F09001DDE0C3940840037402F02256
:102A510012297E121AE6122677301D11C21D12208C
:0E2A6100C4122619122396120C6F1213AB2208
:101E3D00E490013FF09001F0E0FFA3E0FE6F6055EC
:101E4D00A3EEF09001F0E0A3F024FE603214603FA9
:101E5D0024026003021FAD900144E4F0A37403F06B
:101E6D007B647A007D02E4FF1224F7900144E4F0D4
:101E7D00A37403F07B647A007D027F010224F720B6
:101E8D000E03021FADD23F75E80CC20DC20E22909B
:101E9D0001FC021F3C9001F1E024FE6035146076D8
:101EAD00147003021F4724036003021FAD9001EE5F
:101EBD00E004F0E0C394085003021FAD9001F074EC
:101ECD0002F0E49001EEF090019EE06003021FAD80
:101EDD008061E5F6700CE5F87008E5FA7004E5E14F
:101EED00602D9001F07403F0E5F6540FFFE4FCFD56
:101EFD00FE7B08FAF9F8C3120A9870069001F07487
:101F0D0004F075E11F75F60F75F8FC75FABC22909B
:101F1D0001F07403F022202103021FADC2219001B4
:101F2D00FCE0D39400400CE014F0304173C24174D6
:101F3D000FF0229001F07404F022122AB3505B12BC
:101F4D0028B47F04122722122AC7E4900144F0A37B
:101F5D00F0FBFAFDFF1224F7E4900144F0A3F0FB2F
:101F6D00FAFD7F011224F7E4900144F0A3F0FBFA8F
:101F7D00FD7F021224F7E4900144F0A3F0FBFAFD7B
:101F8D007F031224F79001737402F0900172F090A8
:101F9D000174F0900171F0022B029001F07402F0C7
:011FAD002211
:10294C00302026C2209001EFE0FF04F0EF14600C61
:10295C0014600E240270121229F2800D122A51807A
:10296C0008121E3DE49001EFF0302205C222121035
:02297C003E22F9
:102A120000000000000000000000000000000000B4
:102A220000000000000000000000000000000000A4
:10272200EF24FE601E14602814602F24FE603524FE
:1027320005703D43BD9953BD9975FE6F53FFF2433A
:10274200FF092243BDCC75FE6F53FFFE43FF0C22EF
:1027520053BD7753B7CF43B7302253B7CF43B703F5
:1027620053BD772253B7CC53BD7775FE6A43FF3012
:012772002244
:1013AB00203903021628303F5920100A7D3FE4FFF5
:1013BB00120056D210227F03122722E4900103F071
:1013CB00900101F0A3F0C200C201D20B9001F7E033
:1013DB007020C22AD202D203C205C208C204C209BB
:1013EB00C20AD214C24290012CF0A3F090013BF040
:1013FB008008C202C203D205C206C210C20DC20EC1
:10140B00C23F900101E0C3940550030215C7300B96
:10141B0005C20B02159B20002ED200E5E354A06001
:10142B0021E5E354A0FFE4FCFDFE7BA0FAF9F8C331
:10143B00120A9890012E70057402F0800A7401F064
:10144B008005E490012EF02005030214DD900102CB
:10145B00E0C3940550077F06122722802720013B0B
:10146B00900103E0FFD39414501FEF540370047DDD
:10147B00248009900103E020E0077D257F0D1216E3
:10148B0061900103E004F080497F04122722E4906D
:10149B000103F0D201D213C21480379001E5E07042
:1014AB0031301304C2138022E5E354A0FBE4FAF9B4
:1014BB00F8900100E0FFE4FCFDFEC3120A986012F5
:1014CB00E5E354A06004D22AD22BE5E354A09001AB
:1014DB0000F020020302162530423F2010237D3FEF
:1014EB00E4FF120056D210D214E490012CF0A3F0BA
:1014FB0090013BF0900101F0C208D20BC200D20464
:10150B00227F03122722C210D203900101E0D39451
:10151B000350030215C7C242804F20044C900102B6
:10152B00E0FFD39414501CEF540370047D24800906
:10153B00900102E020E0077D257F0D1216619001DE
:10154B00028079900103E0FFD39414501CEF5403F5
:10155B0070047D248009900103E020E0077D257F46
:10156B00371216619001038053E5E8540C60262076
:10157B000E1E900103E004F0E0C394055003021625
:10158B0060E4F075E80C7F03122722D20DC21422FF
:10159B007F04022722C20DC20E3003097F031227DC
:1015AB0022C203807520083DE5E354AC64AC6003B4
:1015BB00303321900101E0D394285004E004F02251
:1015CB00D208E4900104F0900101F0C2097F0412EB
:1015DB002722804690012DE070407B017A01790F24
:1015EB001200868035900104E0FFD39414501FEF56
:1015FB00540370047D248009900104E020E0077DF2
:10160B00257F05121661900104E004F0800C20097F
:10161B0009D2097F04122722C214C2072220070B0A
:10162B00D2077F04122722C2148022E5E354A0FBC9
:10163B00E4FAF9F8900100E0FFE4FCFDFEC3120AA6
:10164B00986012E5E354A06004D22AD22BE5E35450
:05165B00A0900100F069
:011660002267
:0600860090013F120AF098
:10008C0090013BE0147003020167147003020246F6
:10009C001470030202B714700302042324046003D7
:1000AC000205A390013F120AD090001E1208CF60E7
:1000BC00030205A390013EE0D3940A5028E004F01B
:1000CC0090001A743F12092F300C030205A3900103
:1000DC003F120AD090001A1208CFFDE4FF1200560E
:1000EC00D20C0205A3E490013EF0C20C90013F1229
:1000FC000AD0900016E412092F900015E412092F73
:10010C00900013E412092F900012E412092F9000B2
:10011C0011E412092F900010E412092F900018E43A
:10012C0012092F900017E412092F90000EE4F5F03D
:10013C00120A1C90000CE4F5F0120A1C900019E451
:10014C0012092F90001B743F12092F90013B740170
:10015C00F0E490010DF0A3F00205A3E5E35408FFD1
:10016C00E4FCEF601CE5E35404601690013F120AB6
:10017C00D090001E740112092FE490013BF002058F
:10018C00A3E5E35408FFE4FCEF704A9001CCE0FED9
:10019C00A3E0FF90013F120AD0900002EE8FF01204
:1001AC000A1C7D05120963EF7802C333CE33CED817
:1001BC00F9FF90013F120AD0900006EE8FF0120A60
:1001CC001C9001CDE025E0FF9001CCE03390000ABB
:1001DC008FF0120A1CE5E35404FFE4FCEF704F901F
:1001EC0001C9E0FEA3E0FF90013F120AD0EE8FF0B0
:1001FC001209FD9001C9E0FEA3E0FF7D0512096321
:10020C00EF7802C333CE33CED8F9FF90013F120AF8
:10021C00D0900004EE8FF0120A1C9001CAE025E089
:10022C00FF9001C9E0339000088FF0120A1C900176
:10023C003F120AD090001D020598D390010EE09455
:10024C000590010DE094005002806FE490010DF0D8
:10025C00A3F0E5E35408FFEF701F9001CCE0FEA380
:10026C00E0FF90013F120AD090000EEE8FF0120AC0
:10027C001C900018740112092FE5E35404FFE4FCF0
:10028C00EF701F9001C9E0FEA3E0FF90013F120A3E
:10029C00D090000CEE8FF0120A1C90001774011213
:1002AC00092F90013B7403F00205A3D390010EE0DB
:1002BC00940290010DE09400500AE475F0011209CB
:1002CC00990205A3E490010DF0A3F090013F120AEE
:1002DC00D090000A1209C5FFAEF090000E1209C5AD
:1002EC00D39FE5F09E501C90013F120AD09000085D
:1002FC001209C5FFAEF090000C1209C5D39FE5F0B2
:10030C009E4011E490013BF090013F120AD0900006
:10031C001D0203E590013F120AD09000181208CF7D
:10032C006401706D90000E1209C5FFAEF0D39414E9
:10033C00EE94005031E5E330E31F90001674011287
:10034C00092F90001A1208CFC3943F404490013FEC
:10035C00120AD0900018E4803590013F120AD09018
:10036C0000137401802890013F120AD090000612ED
:10037C0009C5FDD3EF9DEE95F090013F4008120AA0
:10038C00D09000138006120AD09000167401120946
:10039C002F90013F120AD09000171208CF64016011
:1003AC00030205A390000C1209C5FFAEF0D3941400
:1003BC00EE94005034E5E330E22290001574011203
:1003CC00092F90001A1208CFC3943F50030205A3C3
:1003DC0090013F120AD0900017E4803590013F1233
:1003EC000AD09000127401802890013F120AD0901C
:1003FC0000041209C5FDD3EF9DEE95F090013F402E
:10040C0008120AD09000128006120AD090001574BF
:10041C000112092F0205A3D390010EE09414900150
:10042C000DE094005031E475F0011209999001CC63
:10043C00E0FEA3E0FF90013F120AD090000EEE8F79
:10044C00F0120A1C9001C9E0FFA3E090000CCF8FC2
:10045C00F0120A1C0205A3E490010DF0A3F0900128
:10046C003F120AD09000181208CF640160030205F5
:10047C00019000171208CF6401707A9000061209DF
:10048C00C5FFAEF090000E1209C5FDACF0C39FEC99
:10049C009E401890013F120AD090000A1209C5FF25
:1004AC00D3ED9FEC95F050030205A390013F120A87
:1004BC00D09000041209C5FFAEF090000C1209C5D3
:1004CC00FDACF0C39FEC9E401890013F120AD090F7
:1004DC0000081209C5FFD3ED9FEC95F050030205FF
:1004EC00A390013F120AD0900016740112092F90AC
:1004FC00001502059890013F120AD09000181208BE
:10050C00CF640170419000061209C5FFAEF0900057
:10051C000E1209C5FDACF0C39FEC9E401590013F37
:10052C00120AD090000A1209C5FFD3ED9FEC95F08A
:10053C00401490013F120AD0900016740112092F3A
:10054C0090013B7402F090013F120AD090001712F8
:10055C0008CF640170419000081209C5FFAEF090FD
:10056C00000C1209C5FDACF0D39FEC9E5015900108
:10057C003F120AD09000041209C5FFC3ED9FEC9501
:10058C00F0501490013F120AD0900015740112091A
:10059C002F90013B7402F090013F120AD09000188A
:1005AC001208CFFF6401600D9000171208CF640190
:1005BC0060030207A69000131208CFFE6401600DC1
:1005CC009000121208CF64016003020720EFB401FF
:1005DC001E9000171208CFB40115EEB40111900053
:1005EC00131208CFB40108900014740112092F9053
:1005FC0000181208CFFFB401189000171208CF7022
:10060C00109000131208CF64017023900014048022
:10061C001AEF701A9000171208CFB4011190001243
:10062C001208CFB40108900014740112092F900025
:10063C0013E412092F900012E412092F90001412E7
:10064C0008CF640160030207BF90013F120AD090EB
:10065C00001A1208CFD39400400890001A74FE12AE
:10066C0008FC9000191208CFFF90001A1208CFD383
:10067C009F40219001D8E024C8FF9001D7E03400BE
:10068C00FEC39001D0E09FEE6480F89001CFE0644F
:10069C008098504890013F120AD09000191208CF50
:1006AC00FF90001A1208CFD39F90013F5013120AEB
:1006BC00D090001AEF12092F90001CE412092F8021
:1006CC0013120AD090001C740112092F90001A7496
:1006DC00021208FC90013B7404F0801390013B74EF
:1006EC0002F090013F120AD090001CE412092FE492
:1006FC0090010DF0A3F090013F120AD0900014E489
:10070C0012092F90001C1208CFFF90001A1208CF6C
:10071C00FD0207A390013F120AD09000161208CFD9
:10072C006401600D9000151208CF6401600302078C
:10073C00BF900016E412092F900015E412092F90B7
:10074C00001A1208CFC3943F500E90013F120AD0EA
:10075C0090001A74021208FC90013B7404F0900192
:10076C003F120AD090001B1208CFFF90001A1208FB
:10077C00CFC39F401390013F120AD090001AEF1282
:10078C00092F90013B7401F090013F120AD09000A8
:10079C001A1208CFFDE4FF02005690013BE0D394FF
:1007AC00024010E4F090013F120AD090001E740138
:0307BC0012092FF0
:0107BF002217
:0E225000900165120AF0900168ECF0A3EDF029
:10225E0074FFA3F0A3F0A37410F0A37421F0E4A311
:10226E00F090016874FFF5F01209AF45F0607090C0
:10227E000165E475F001120AD91208B690016EF0EC
:10228E00E0FE90016AE06EF0A3E0F0E490016FF0E2
:10229E00A3F0C3900170E0940890016FE094005099
:1022AE00C090016AE0FEA3E0FFEE30E719EF25E0F3
:1022BE00FFEE33FEA3E06EFEA3E06FFF90016AEE29
:1022CE00F0A3EFF0800D90016BE025E0F090016A35
:1022DE00E033F090016FE475F00112099980B3902C
:0722EE00016AE0FEA3E0FF1E
:0122F50022C6
:0816610090013FEFF0A3EDF052
:10166900E4A3F0A3F078437C017D017BFF7A2A791A
:1016790012FE7F20120890E4900163F0A3F090011C
:101689004374AAF0900140E0FE900144F090013FBC
:10169900E0900145F0A3E4F09001F7E0900147F0F4
:1016A90090013FE0120AF9171F0516E20A17300BDD
:1016B900173A0D17830E17D80F17301118A91216DC
:1016C900CF37000017E4E4900148F0A3F07B0678D7
:1016D90040E4F608DBFC0217E4900148740EF0E4DC
:1016E900A3F0FB74402BF8E6FD744A2BF582E43431
:1016F90001F583EDF00BEBB406E9E4FB74462BF836
:10170900E6FD74502BF582E43401F583EDF00BEB23
:10171900B408E90217E49001487401F0E4A3F0A2C7
:101729000F33A3F00217E4E4900148F0A3F0021785
:10173900E49001487405F0E4A3F0A37410F0F0A359
:101749007401F07808E65402C4333354C0FD9001A3
:101759009EE075F005A44D90014CF0EEB42405907F
:101769000139800A900140E0B4250890013AE090DF
:10177900014DF0E490014EF08061900148740AF047
:10178900E4A3F07829E6A3F0E4FBEBFF7829E6FD72
:101799002FFFE433FED3EF9416EE64809480400F5C
:1017A900744B2BF582E43401F58374FFF08013ED5B
:1017B9002B242AF8E6FF744B2BF582E43401F583D8
:1017C900EFF00BEBB409C37829740926F6800C9065
:1017D90001487401F0E4A3F0A304F0900149E0FE8C
:1017E900900148E0FDED2407FFE43EFE900141F041
:1017F900FCA3EFF0FD7B017A01794312225090019D
:1018090063EEF0A3EFF0900163E0FEA3E0FD900129
:1018190041E0FAA3E02443F58274013AF583EDF03F
:10182900EEFF900141E475F001120999FC7443251A
:10183900F0F58274013CF583EFF07F0112272290C5
:101849000140E0FFB4240843BD0253BDFE8016EFFA
:10185900B4250843BD2053BDEF800AEFB4210643E8
:10186900BD2253BDEE900142E02402FF900141E008
:101879003400FE7B017A0179431228E7900140E0A8
:10188900FFB4240753BDFD43BD0122EFB42507531F
:10189900BDDF43BD1022EFB4210653BDDF43BD11A7
:0118A900221C
:101FAE007851E6C4540FFD540360030220C3EF12B0
:101FBE000AF920030A20150B20250D20900E20A2D1
:101FCE000F20B4111FD937000020C3E4FE7855E668
:101FDE00FFEEC39F500F74572EF8E6FF74402EF895
:101FEE00A6070E80E8EDB4040690012F0220C090E3
:101FFE0001300220C0ED7857B40406E6900133F0AC
:10200E0022E6900134F022EDB4040690013702204E
:10201E00C09001380220C0ED640478597032E6FE9B
:10202E00547F900139F0EEC413131354019001053F
:10203E00F008E6784EF6785BE6FE5401900131F03A
:10204E00EEC313540190013CF008E6900135F022E6
:10205E00E6FE547F90013AF0EEC413131354019030
:10206E000106F008E6784FF6785BE6FE5401900123
:10207E0032F0EEC313540190013DF008E6900136A4
:10208E00F022ED7857B40406E690010BF022E690AC
:10209E00010CF022ED7857B40406E6900107F02209
:1020AE00E6900108F022EDB404059001078003903C
:0520BE0001087401F0AF
:0120C30022FA
:10267700E490013FF0A3F0A3F0303D4AC23D785605
:10268700E6FEE42407FFE43EFE18E6FDEF4DFF906B
:102697000140EEF0FCA3EFF0FD7B007A00795012C9
:1026A7002250AC06AD07900140A3E0FB2452F8E6A8
:1026B700FE74512BF8E6FBEBB5050BEEB504077876
:0626C70052E6FF121FAEF7
:0126CD0022EA
:10285200602A019F0BB80BEA0C1C0C800CB20CE432
:102862000D160D480D7A0DAC0E100E420E740EA60A
:0E2872000ED80F0A0F3C0F870FD2101D1068F2
:10239600E4FFEF25E0249FF582E43401F583E0FCB9
:1023A600A3E0FDC39001D8E09D9001D7E09C4005D5
:1023B6000FEFB415DD90019EE0FEEFD39E90019DD8
:1023C600E0400404F0800214F0E5E16008E4F5E181
:1023D60090019EEFF090019DE0FED394BE5006EE74
:1023E600C3940A500B90019EEFF090019D7464F027
:1023F60090019EE0FFD394005002D237EFD39401B0
:102406005002D233EFD394055002D235EFD3940A5B
:0C2416005002D234EFD3940F5002D236A3
:012422002297
:10248E009001ECE06062E4F0D21F9001EAE004F00B
:10249E00E0C394054004E4F0D2209001EDE004F096
:1024AE00E0C3940A4004E4F0D2229001E7E475F010
:1024BE0001120999C39001E8E094649001E7E09459
:1024CE00004006E4F0A3F0D21D9001E9E004F0E034
:1024DE00C394FA4013E4F0D21E9001EBE004F0E056
:0924EE0094044004E4F0D2212220
:03000B000229AC1B
:1029AC00C0E0C083C082C0D074FC258CF58C7466EA
:1029BC00258AF58A9001EC7401F0D0D0D082D083B6
:0329CC00D0E03226
:0E2AE700758901758CFC758A66D2A9D28C2285
:1027C400EFD39401501675FE0EEF25E02404FE7439
:1027D40003A806088002C333D8FC801475FE0FEFEB
:1027E40024FE25E0FE7403A806088002C333D8FC47
:1027F400F452FFEFB4040C75FE0F53FFF075FE0E98
:0428040053FF0F224D
:102A890075FE54EF5407F5FF75FE56AF058FFF75B8
:062A9900FE5375FF01224F
:10277300EFD39401501875FE0EEF25E02404FE7488
:1027830003A806088002C333D8FC42FF801675FEF7
:102793000FEF24FE25E0FE7403A806088002C3336E
:1027A300D8FC42FFEF70038DCE22EFB401038DCF2F
:1027B30022EFB402038DDE22EFB40304AF058FDFF3
:0127C30022F3
:032FFD00010102CD
:1029CF00E4FB7D04FF12000EE4FB7D047F01120087
:1029DF000EE4FB7D047F0212000EE4FB7D047F03F7
:0329EF0002000ED5
:100C6F00302B5AC22BE49001F9F090019DF09001C6
:100C7F0044F0A3F0FBFAFDFF1224F7E4900144F0D7
:100C8F00A3F0FBFAFD7F011224F7E4900144F0A3D7
:100C9F00F0FBFAFD7F021224F7E4900144F0A3F079
:100CAF00FBFAFD7F031224F79001737402F0900199
:100CBF0072F0900174F0900171F0D24122201C0F5C
:100CCF0020380C200D03020D85300E03020D8520F8
:100CDF002505D225D22B22900173E06402601A9071
:100CEF000144E4F0A3740AF07B147A007D02E4FF60
:100CFF001224F79001737403F0900172E0640260A4
:100D0F001A900144E4F0A3740AF07B147A007D0278
:100D1F007F011224F79001727403F0900174E06464
:100D2F0002601A900144E4F0A3740AF07B147A0075
:100D3F007D027F021224F79001747403F090017109
:100D4F00E06402601A900144E4F0A3740AF07B148B
:100D5F007A007D027F031224F79001717403F02053
:100D6F000D0302103D9001F9E0C394285003020EC9
:100D7F00BBD20ED22B2230250CC225C227C226C2CF
:100D8F0029C22AD2427808E6FF7003020E95640347
:100D9F00705E202707D227C2260229CFE490014494
:100DAF00F0A3F0FBFA7D01FF1224F7E4900144F069
:100DBF00A3F0FBFA7D017F011224F7E4900144F0C8
:100DCF00A3F0FBFA7D017F021224F7E4900144F0B7
:100DDF00A3F0FBFA7D017F031224F79001737401D6
:100DEF00F0900172F0900174F0900171F0020E8C8E
:100DFF0020260DD226C227D22BE49001FAF0807D57
:100E0F009001F9E0C394015055E004F0A3E01460A1
:100E1F001A14602714603424037062900173E06425
:100E2F0004605A7B017D04E4FF802E900172E06420
:100E3F0004604A7B017D047F01801E900174E06491
:100E4F0004603A7B017D047F02800E900171E064A3
:100E5F0004602A7B017D047F0312000E801F900126
:100E6F00F9E0C3940F5005E004F08011E49001F90C
:100E7F00F0A3E004F0E0C394044002E4F0C229C2FE
:100E8F002AC22CD2282230260AC2261229CFD22BD0
:100E9F00D2422220290C202809202A06202C0302C6
:100EAF00103D9001F9E0FFC394015004E004F022DB
:100EBF00EFC394644003020FE89001F9E004F030AF
:100ECF003537900173E06403700302103DE4900125
:100EDF0044F0A3F07B64FA7D03FF1224F7900173B3
:100EEF007404F0E4900144F0A3F0FBFAFD7F0112CB
:100EFF0024F79001727402802D303441E490014444
:100F0F00F0A3F0FBFA7D01FF1224F7900173740137
:100F1F00F0E4900144F0A3F0FBFA7D017F0112246D
:100F2F00F79001727401F0E4900144F0A3F0FBFA22
:100F3F00FD7F021224F790017474028043E4900144
:100F4F0044303653F0A3F0FBFA7D01FF1224F790E3
:100F5F0001737401F0E4900144F0A3F0FBFA7D01FA
:100F6F007F011224F79001727401F0E4900144F0B4
:100F7F00A3F0FBFA7D017F021224F7900174740134
:100F8F00F0E4900144F0A3F0FBFAFD7F031224F785
:100F9F009001717402F022F0A3F0FBFA7D01FF12B1
:100FAF0024F7E4900144F0A3F0FBFA7D017F0112D6
:100FBF0024F7E4900144F0A3F0FBFA7D017F0212C5
:100FCF0024F7E4900144F0A3F0FBFA7D017F0312B4
:100FDF0024F790017374018048C229C228C22AC223
:100FEF002CE4900144F0A3F0FBFAFDFF1224F7E488
:100FFF00900144F0A3F0FBFAFD7F011224F7E49077
:10100F000144F0A3F0FBFAFD7F021224F7E49001F4
:10101F0044F0A3F0FBFAFD7F031224F790017374E1
:0E102F0002F0900172F0900174F0900171F0E7
:01103D002290
:10231600022AD8E493A3F8E493A34003F68001F2DB
:1023260008DFF48029E493A3F85407240CC8C333C8
:10233600C4540F4420C8834004F456800146F6DF97
:10234600E4800B010204081020408090284CE47EB3
:10235600019360BCA3FF543F30E509541FFEE4938C
:10236600A360010ECF54C025E060A840B8E493A353
:10237600FAE493A3F8E493A3C8C582C8CAC583CA7E
:10238600F0A3C8C582C8CAC583CADFE9DEE780BE36
:012880000057
:1007C000E709F608DFFA8046E709F208DFFA803E1B
:1007D00088828C83E709F0A3DFFA8032E309F60808
:1007E000DFFA8078E309F208DFFA807088828C8370
:1007F000E309F0A3DFFA806489828A83E0A3F60824
:10080000DFFA805889828A83E0A3F208DFFA804CFD
:1008100080D280FA80C680D4806980F280338010D4
:1008200080A680EA809A80A880DA80E280CA80333D
:1008300089828A83ECFAE493A3C8C582C8CCC583B5
:10084000CCF0A3C8C582C8CCC583CCDFE9DEE78085
:100850000D89828A83E493A3F608DFF9ECFAA9F004
:10086000EDFB2289828A83ECFAE0A3C8C582C8CC5A
:10087000C583CCF0A3C8C582C8CCC583CCDFEADE73
:10088000E880DB89828A83E493A3F208DFF980CCD5
:1008900088F0EF60010E4E60C388F0ED2402B404CE
:1008A0000050B9F582EB2402B4040050AF23234575
:0608B00082239008107382
:1008B600BB010689828A83E0225002E722BBFE0240
:0908C600E32289828A83E4932273
:1008CF00BB010CE58229F582E5833AF583E02250DE
:1008DF0006E92582F8E622BBFE06E92582F8E22228
:0D08EF00E58229F582E5833AF583E4932242
:1008FC00BB010FF8E58229F582E5833AF583E02800
:10090C00F0225009C58229F8E58226F622BBFE09A1
:10091C00C58229F8E22582F222F8EA2583F583E9DB
:03092C00932822EB
:10092F00F8BB010DE58229F582E5833AF583E8F0FE
:10093F00225006E92582C8F622BBFE05E92582C8AA
:02094F00F22292
:10095100EF8DF0A4A8F0CF8CF0A428CE8DF0A42EBA
:02096100FE2274
:10096300C2D5EC30E709B2D5E4C39DFDE49CFCEEAF
:1009730030E715B2D5E4C39FFFE49EFE120B4CC3D0
:10098300E49DFDE49CFC8003120B4C30D507C3E4CB
:060993009FFFE49EFE221E
:10099900C5F0F8A3E028F0C5F0F8E58215827002E9
:0609A9001583E038F02286
:1009AF00A3F8E0C5F025F0F0E582158270021583FB
:0609BF00E0C838F0E82258
:1009C500BB0110E58229F582E5833AF583E0F5F070
:1009D500A3E0225009E92582F886F008E622BBFE4D
:1009E5000AE92582F8E2F5F008E222E5832AF58393
:0809F500E993F5F0A3E9932258
:1009FD00BB010A89828A83F0E5F0A3F0225006F745
:0F0A0D0009A7F01922BBFE06F3E5F009F3192241
:100A1C00F8BB0111E58229F582E5833AF583E8F00C
:100A2C00E5F0A3F0225009E92582C8F608A6F022C9
:0D0A3C00BBFE09E92582C8F2E5F008F222B0
:100A4900E88FF0A4CC8BF0A42CFCE98EF0A42CFC4C
:100A59008AF0EDA42CFCEA8EF0A4CDA8F08BF0A4CA
:100A69002DCC3825F0FDE98FF0A42CCD35F0FCEB29
:100A79008EF0A4FEA9F0EB8FF0A4CFC5F02ECD39EE
:0F0A8900FEE43CFCEAA42DCE35F0FDE43CFC225B
:10280800C2D5E830E70FB2D5E4C39BFBE49AFAE4FB
:1028180099F9E498F8EC30E717B2D512283E120B74
:10282800DDE4C39BFBE49AFAE499F9E498F88003A1
:10283800120BDD30D50DE4C39FFFE49EFEE49DFD41
:04284800E49CFC22EE
:100A9800EB9FF5F0EA9E42F0E99D42F0E89C45F0B4
:010AA800222B
:100AA900E8600FECC313FCED13FDEE13FEEF13FF2B
:030AB900D8F1224F
:100ABC00E86010ECA2E713FCED13FDEE13FEEF1350
:040ACC00FFD8F0223D
:090AD000E0FBA3E0FAA3E0F92227
:100AD900F8E0FBA3A3E0F925F0F0E58215827002A6
:070AE9001583E0FA38F0224A
:090AF000EBF0A3EAF0A3E9F02207
:100AF900D083D082F8E4937012740193700DA3A38C
:100B090093F8740193F5828883E47374029368609F
:060B1900EFA3A3A380DF9F
:100B1F00EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02D63
:100B2F00FDE43CFCE8A42EC8C5F03DFDE43CFCEF21
:0D0B3F00A4FFE5F028FEE43DFDE43CFC22AF
:100B4C00BC000BBE0029EF8DF084FFADF022E4CC8D
:100B5C00F875F008EF2FFFEE33FEEC33FCEE9DEC56
:100B6C00984005FCEE9DFE0FD5F0E9E4CEFD22ED9C
:100B7C00F8F5F0EE8420D21CFEADF075F008EF2FE6
:100B8C00FFED33FD4007985006D5F0F222C398FDD7
:050B9C000FD5F0EA2274
:100BA10075F008758200EF2FFFEE33FECD33CDCC0B
:100BB10033CCC58233C5829BED9AEC99E58298408E
:100BC1000CF582EE9BFEED9AFDEC99FC0FD5F0D66B
:100BD100E4CEFBE4CDFAE4CCF9A88222B800C1B995
:100BE1000059BA002DEC8BF084CFCECDFCE5F0CBD3
:100BF100F97818EF2FFFEE33FEED33FDEC33FCEB0C
:100C010033FB10D703994004EB99FB0FD8E5E4F9C6
:100C1100FA227818EF2FFFEE33FEED33FDEC33FCB3
:100C2100C933C910D7059BE99A4007EC9BFCE99AA7
:100C3100F90FD8E0E4C9FAE4CCFB2275F010EF2FEC
:100C4100FFEE33FEED33FDCC33CCC833C810D707EC
:100C51009BEC9AE899400AED9BFDEC9AFCE899F827
:0E0C61000FD5F0DAE4CDFBE4CCFAE4C8F922BA
:00000001FF

Binary file not shown.

View File

@ -0,0 +1,746 @@
:0300000002228C4D
:10228C00758E3075D20078FFE4F6D8FD9000007F93
:10229C00007E01E4F0A3DFFCDEFA75816F0222E719
:0F2A5D00122550D2AED2BE1224241228E480F4E7
:1026640075FE0F43FF8075FE2975FFB575A52175AD
:10267400FE1E43FF01E5A3540F24F89001B5F0E5D5
:10268400A3C4540F9001C9F0E5AD540F24F875F0BC
:102694000AA49001BFF09001C3E5ABF0E5ADC454CA
:1026A4000F24F875F00AA49001C0F09001C6E5ACBF
:0426B400F0D2BD2281
:10186A00900100EFF0203E03021A8B9001BBE0FECC
:10187A00A3E07803CEC313CE13D8F9F0EE9001BBE0
:10188A00F09001B8E024FD60491470030219521463
:10189A0070030219C824FE7003021A392405600372
:1018AA00021A889001B5E0FF3395E0FEC39001BCAF
:1018BA00E09FFF9001BBE09EFE9001C4F0A3EFF011
:1018CA00C3EE648094804003021A88E49001C40243
:1018DA001A859001BBE0FEA3E0FF7C097DC4120BD0
:1018EA0000780A120A8A9001BBEEF0A3EFF0900189
:1018FA00BFE0FD3395E0FCC3EF9DFFEE9CFE339500
:10190A00E0FDFCE47B64FAF9F8120A3BC006C00762
:10191A009001C3E075F002A424F4FFE5F03401ABB2
:10192A0007FA3395E0F9F8D007D00612279E9001FE
:10193A00B3EEF0A3EFF0C3EE648094804003021A82
:10194A0088E49001B3021A859001BBE0FEA3E0FF90
:10195A007C097DC4120B00780A120A8A9001BBEE38
:10196A00F0A3EFF09001C0E0FD3395E0FCC3EF9DDA
:10197A00FFEE9CFE3395E0FDFCE47B64FAF9F81275
:10198A000A3BC006C0079001C6E075F002A424F421
:10199A00FFE5F03401AB07FA3395E0F9F8D007D048
:1019AA000612279E9001B6EEF0A3EFF0C3EE648014
:1019BA0094804003021A88E49001B6021A859001C5
:1019CA00BBE0FEA3E0FF7C097DC4120B00780A127B
:1019DA000A8A9001BBEEF0A3EFF0E025E0FE900149
:1019EA00BBE0339001C1F0A3CEF09001C1E0FEA3A9
:1019FA00E07802C333CE33CED8F9FDAC069001C9E4
:101A0A00E0FF3395E0FEEF24F8FFEE34FFFE120903
:101A1A00437C037DE81209559001C1EE8FF012094B
:101A2A008BC39001C1E0648094805052E4804C9052
:101A3A0001B5E0FF3395E0FEC39001BCE09FFF9043
:101A4A0001BBE09EFEE4FCFD7BC47A09F9F8120AA8
:101A5A003B780A120A9D9001BBEEF0A3EFF0E02555
:101A6A00E0FF9001BBE033FE9001B9F0A3EFF0C3B1
:101A7A00EE648094805007E49001B9F0A3F0C23E6E
:101A8A0022900100E09001B8F0C454F04401F5A599
:0C1A9A00E49001BBF0A3F09001C8F02222
:03006B000223B9B4
:1023B900C0E0C0F0C083C082C0D075D000C000C0EA
:1023C90006C007E5F330E03FAFA19001BDE4F0A3FB
:1023D900EFF0E5A25403FE9001BDE04EF0A3E0F05A
:1023E9009001C8E0C3940850199001BDE0FEA3E034
:1023F900FF9001BBEE8FF012098B9001C8E004F049
:102409008005D23E53A5FE75F301D007D006D00052
:0B241900D0D0D082D083D0F0D0E032D1
:1027E2009001F77403F075FE7043FF1853B3F14381
:1027F200B302E47809F6780BF6E018F6780C760165
:102802007909E718461846F5B175B201A37410F0BC
:05281200A37468F02230
:101C7C00E4FE9001C4E0FCA3E0FDC394E8EC940303
:101C8C0040037F0022EF7003021D92D3ED940FEC02
:101C9C0094034003021D70ED94CBEC9400500302AE
:101CAC001D70D3ED94AAEC94024021D217780A76D9
:101CBC0001301814D3ED94BFEC94024004C2188088
:101CCC00079001F7E0780AF6E4FE806ED3ED94AA53
:101CDC00EC94025041ED9437EC94014039D21890B9
:101CEC0001F7E0780AF6301711D3ED9493EC9402D7
:101CFC005004C2178004780A7601780C76013012F1
:101D0C0011D3ED9451EC94015004C2128004E47888
:101D1C000CF6E4FE8024D3ED9437EC9401501BD2E6
:101D2C0012E4780CF6301810ED9426EC9401500463
:101D3C00C2188004780C7601E4FE301511C3ED94C2
:101D4C00F3EC94025006C215E4FE80027E013016BC
:101D5C002FD3ED94DDEC94004006C216E4FE8020F7
:101D6C007E01801CD3ED940FEC94034006D2157EBB
:101D7C0001800DD3ED94CBEC94005004D2167E016F
:101D8C00C213C2148058C215C216D3ED949FEC94A2
:101D9C00035031ED9471EC94004029301310ED9404
:101DAC0084EC94035006C213E4FE80027E013014CE
:101DBC002DD3ED9482EC94004006C214E4FE801EF8
:101DCC007E01801AD3ED949FEC94034004D21380CF
:101DDC000BC3ED9471EC94005002D2147E01780C7C
:051DEC00E6F5B2AF06B0
:011DF10022CF
:10206A00E4FBFAE5E65480700753B3FE7808F622DB
:10207A0078087601E5E830E50575E8208005E5E5AC
:10208A0030E10453B3FE22E5F230E50475F2202272
:10209A00E5F2540C601353B3FEE5F354C070030227
:1020AA00213575F20C75F3C02275F3C07F01121C3D
:1020BA007CEF600653B3FED21922C219E5F230E46E
:1020CA00289001F8E0FAA3E0246AFFEA34FFFEC38D
:1020DA009001C2E09F9001C1E09E500575F2108008
:1020EA000353B3FE78087603227909E7780B46187A
:1020FA0046F5B1780CE6F5B243B31190015FE0FF03
:10210A00D394014002C234EFD394034002C230EFA9
:10211A00D394074002C232EFD3940C4002C231EF8B
:0B212A00D394114002C2337808760203
:012135002287
:10005600303610EFB4010475B5C02253B5BFED4478
:0400660080F5B5224A
:0F2A6C00E5B554806008303605E4F5B5C2362272
:1025AF00C236E5E520E156E5E230E703D23722E512
:1025BF00E830E00D301B4675E8017D3FE4FF020077
:1025CF0056E4FF121C7CEF6006122A6CD23522C231
:1025DF0035303403022A6CD2363037217808E6B40E
:1025EF00021BC39001C2E094109001C1E06480947B
:0E25FF008E4005D236C23722122A6CC2362216
:10291600E5E25408FF9001FBE06F6021E5E230E359
:10292600089001FA7401F08005E49001FAF0D23FB4
:0D293600C20FD226D2289001FBEFF0D24153
:012943002271
:101AA600E5E2540270319001E275F00112098B9063
:101AB60001E2E0FEA3E0FFC39417EE94024004D2D5
:101AC6002E800EC3EF9487EE94004005202D02D29F
:101AD6002DD22AC22B8041302A37D241E49001E52B
:101AE600F0C22AD22B9001E4F09001E2E0FEA3E0DE
:101AF600FFD3941EEE94005008D229D22CD228800F
:101B06000EC3EF944FEE94015005302D02D22FC232
:101B16002DE49001E2F0A3F0302B38303635302F2B
:101B260029200F0280337F031226B89001E4E0D308
:101B360094235003021C69C22F9001E57402F0E45D
:101B46009001E1F09001D2F0A3F0302C02C22CC239
:101B56002BC20F302E2B200F0A7D3FE4FF120056BA
:101B6600D20F227F031226B89001E4E0D3942350CB
:101B760003021C69C22EE49001E6F09001E57403AD
:101B8600F09001FAE064016003021C7B9001E5E03D
:101B960064026003021C3E9001E1E0C39401501010
:101BA6007D257F37121621E49001D2F0A3F08070D4
:101BB6009001E0E0D39405401CE4F07D257F1112EE
:101BC60016217D247F11121621E49001E5F0D21032
:101BD6007F03021C789001D3E0B4010F7D247F0AB5
:101BE6001216219001D37402F080359001D3E0647F
:101BF60002702D9001D2E060207D257F0A12162109
:101C0600E49001D2F0A3F09001E1F09001E0F090B1
:101C160001E5F0D2107F0480597D247F371216210A
:101C26009001E1E0D39414400A9001E0E004F0E46E
:101C3600A3F0229001E1802B9001E5E0640370356A
:101C4600A3E0FFC394B4501FEF540F70047D2580AA
:101C56000A9001E6E0540770077D247F0B121621D7
:101C66009001E6E004F022E49001E5F0D210A3F042
:051C76007F041226B8F6
:011C7B002246
:1028B20075FE0675FF3C75FE0E53FF0F75FE0F5336
:1028C200FFF075FE0375FFFFE4900134F0900133D1
:1028D200F0900135F0900132F0C282C283C285C20B
:0228E20084224E
:102A0700EF14600D14600D14600D2403700BD28257
:0A2A170022D28322D28422D285222B
:0529CA00900100E0FF98
:1029CF00EF14600D14600D14600D2403700BC282A0
:0A29DF0022C28322C28422C2852294
:1024F000E4FF74362FF582E43401F583E4F0743A96
:102500002FF582E43401F583E4F0EF25E0243EF575
:1025100082E43401F583E4F0A3F0EF25E02446F5EE
:1025200082E43401F583E4F0A3F0EF25E0244EF5D6
:1025300082E43401F583E4F0A3F0EF25E02456F5BE
:0F25400082E43401F583E4F0A3F00FEFB404A3B9
:01254F002269
:10248D00AC0774362CF582E43401F583EDF0EAC324
:10249D0013FEEB13FFEC25E0243EF582E43401F549
:1024AD0083EEF0A3EFF0AF03EC25E02446F582E4D4
:1024BD003401F583EAF0A3EFF0900105E0FEA3E00F
:1024CD00FFEC25E0244EF582E43401F583EEF0A314
:1024DD00EFF0EC25E02456F582E43401F583E4F0C9
:0324ED00A3F02237
:10000E0074362FF582E43401F583EDF0743A2FF552
:10001E0082E43401F583EBF0EF25E0243EF582E433
:10002E003401F583E4F0A37469F0EF25E02456F56E
:0B003E0082E43401F583E4F0A3F0221B
:10101F00E4900100F0F0900100E0FFC3940440035E
:10102F0002136174362FF582E43401F583E06022F8
:10103F0024FE60241470030211291470030211A0FE
:10104F00240360030212FD900100E0FF122A070241
:10105F0012FD1229CA0212FD900100E0FF25E024C3
:10106F003EF582E43401F583E0FCA3E0FDEF25E0DB
:10107F002456F582E43401F583E0FEA3E0C39DEE30
:10108F009C5005122A0780031229CA900100E0FF25
:10109F0025E02446F582E43401F583E0FCA3E0FD6E
:1010AF00EF25E02456F582E43401F583E0FEA3E05A
:1010BF00C39DEE9C50030212FD900100E025E02439
:1010CF0056F582E43401F583E4F0A3F0EF25E02434
:1010DF004EF582E43401F583E0FEA3E0D39400EEF5
:1010EF0094004016900100E025E0244EF582E43490
:1010FF0001F58374FFF5F012098B900100E0FF25D5
:10110F00E0244EF582E43401F583E0FCA3E04C606B
:10111F00030212FD74362F0211BC900100E0FF256F
:10112F00E0243EF582E43401F583E0FCA3E0FDEF1B
:10113F0025E02456F582E43401F583E0FEA3E0D3E5
:10114F009DEE9C5005122A0780031229CA900100B8
:10115F00E0FF25E02446F582E43401F583E0FCA3AB
:10116F00E0FDEF25E02456F582E43401F583E0FE3F
:10117F00A3E0C39DEE9C50030212FD900100E025F9
:10118F00E02456F582E43401F583E4F0A3F0021273
:10119F00FD900100E0FF243AF582E43401F583E08D
:1011AF00701712275AC240900100E02436F582E4EE
:1011BF003401F583E4F00212FD900100E0FF243AC0
:1011CF00F582E43401F583E0FE6402704B20401495
:1011DF00D240EF25E0243EF582E43401F583E4F0BC
:1011EF00A37469F0900100E0FF25E0243EF582E44E
:1011FF003401F583E475F00112098BEF25E0243EED
:10120F00F582E43401F583E0FCA3E0C394FEEC9493
:10121F000050030212E7804EEE6401705A2040170F
:10122F00D240900100E025E0243EF582E43401F540
:10123F0083E4F0A374FEF0900100E0FF25E0243E6C
:10124F00F582E43401F58374FFF5F012098BEF2575
:10125F00E0243EF582E43401F583E0FEA3E0D3946D
:10126F0069EE94005072900100E0243AF582E43464
:10127F0001F583E4F08061900100E0FF243AF582EC
:10128F00E43401F583E06403704EEF25E0243EF56E
:10129F0082E43401F583E0FEA3E0FFC394FEEE94F5
:1012AF00004004D240800BD3EF946AEE94005002BA
:1012BF00C240900100E025E0243E30400DF582E46D
:1012CF003401F58374FFF5F0800BF582E43401F5FA
:1012DF0083E475F00112098B900100E0FF25E024F3
:1012EF003EF582E43401F583A3E0FD122709900156
:1012FF0000E0FF701174362FF582E43401F583E0BE
:10130F00900134F08043900100E0B401102436F5D1
:10131F0082E43401F583E0900133F0802C900100DA
:10132F00E0B402102436F582E43401F583E0900135
:10133F0035F08015900100E0B4030E2436F582E4F9
:10134F003401F583E0900132F0900100E004F002E7
:10135F001025E4900100F0900100E0FFC3940450C9
:10136F001BEF25E02456F582E43401F583E475F094
:0C137F000112098B900100E004F080DBFB
:01138B00223F
:10284C0075FE1E43FF0275FE2143FF0875D4867585
:10285C00FE2143FF0475FE2143FF02300E0875FE76
:10286C002453FFC3800675FE2443FF3C9001FE7485
:03287C000FF02238
:10006E00D2AC759A01D2B9D2BDD2A9D2AB75FE2946
:04007E0043FFB0226A
:102A3700C2ACE4F59AD2B9C2BDC2A9C2AB75FE2930
:042A470053FF4F22C8
:092A9600122A3743870202006E88
:102A4B00E5E254017006201103304104C241C32258
:022A5B00D32284
:1025500075FE01E4F5FF122A89122A7BE4F58675DF
:10256000B7C375FE6A75FF0475FE6C53FF3043FFF9
:102570004A12266475FE8043FF0275FE0E53FFFC6F
:1025800043FF0175FE1775FF3CD2A8D2AF1227E2B8
:102590007D697F03122A211228B21224F012284CDE
:0F25A0009001FE740FF0C20F9001F07401F02251
:03000300020006F2
:03000600D24132B2
:03004B00022A9FE7
:062A9F0075EB3CD2413250
:03005300022AA5D9
:062AA50075F302D241327C
:0D2A890075BB03759DDC759B92439A01227D
:06287F00900126120AD1AF
:10288500E4900129F0F0900129E0C39FE49E501CDB
:102895002039FDD239900126E475F001120ABA12E9
:0C28A50008A8F59C900129E004F080DAFE
:0128B1002204
:0300830002213621
:10213600C0E0C083C082C0D075D000C000C003C05C
:1021460005C006C007E59B30E105539BFDC239E596
:102156009B30E079539BFED2419001F3E01460235B
:1021660004706AE59C9001F3B4AA127401F0A3E42A
:10217600F0E0FF04F074502FF8A69C8050E4F0A322
:10218600F0804A9001F4E0FF04F074502FF8A69C0A
:10219600E0FDB407177856E6FEE42409FFE43EFEA8
:1021A60018E6FBEF4BFFA3EEF0A3EFF0EDFF900177
:1021B600F5E07003A3E06F60099001F4E0D394208A
:1021C600400B9001F4E4F09001F3F0D23AD007D03E
:1021D60006D005D003D000D0D0D082D083D0E03254
:062817004301F00402027F
:10298A009001C7E0FF04F012186A9001C7E0B4068C
:10299A000204F09001C7E0C3940840037402F022D5
:1029E900122916121AA612260D301A11C21A12200D
:0E29F9006A1225AF12232C120C5012138C22DE
:101DF200E4900100F09001F0E0FFA3E0FE6F605577
:101E0200A3EEF09001F0E0A3F024FE603214603FF4
:101E120024026003021F53900105E4F0A37403F04F
:101E22007B647A007D02E4FF12248D900105E4F0C8
:101E3200A37403F07B647A007D027F0102248D206B
:101E42000E03021F53D23F75E80CC20DC20E229040
:101E520001FE021EE29001F1E024FE60351460678B
:101E6200147003021EED24036003021F539001EE5F
:101E7200E004F0E0C394085003021F539001F07491
:101E820002F0E49001EEF090015FE06003021F5364
:101E92008052E5F6700CE5F87008E5FA7004E5E1A9
:101EA200601E9001F07403F0E5F6540F64087003AD
:101EB2007404F075E11F75F60F75F8FC75FABC2213
:101EC2009001F07403F022201E03021F53C21E90E1
:101ED20001FEE0D39400400CE014F0304173C241A3
:101EE200740FF0229001F07404F022122A4B505B1E
:101EF20012284C7F041226B8122A6CE4900105F0D5
:101F0200A3F0FBFAFDFF12248DE4900105F0A3F08B
:101F1200FBFAFD7F0112248DE4900105F0A3F0FB92
:101F2200FAFD7F0212248DE4900105F0A3F0FBFA82
:101F3200FD7F0312248D9001347402F0900133F07E
:101F4200900135F0900132F0022A969001F074026D
:011F5200F09E
:011F5300226B
:1028E400301D26C21D9001EFE0FF04F0EF14600CD0
:1028F40014600E2402701212298A800D1229E980B4
:1029040008121DF2E49001EFF0301F05C21F1210EF
:022914001F2280
:1026B800EF24FE601E14602814602F24FE60352469
:1026C80005703D43BDAA53BDAA75FE6F53FFF24383
:1026D800FF092243BDCC75FE6F53FFFE43FF0C225A
:1026E80053BD7753B7CF43B7302253B7CF43B70360
:1026F80053BD772253B7CC53BD7775FE6A43FF307D
:0127080022AE
:10138C002036030215F1303F59200F0A7D3FE4FF50
:10139C00120056D20F227F031226B8E490018DF072
:1013AC0090018BF0A3F0C200C201D20B9001FAE0C5
:1013BC007020C227D202D203C205C208C204C209DD
:1013CC00C20AD211C2429001AEF0A3F09001B1F06A
:1013DC008008C202C203D205C206C20FC20DC20EE1
:1013EC00C23F90018BE0C394055003021590300B63
:1013FC0005C20B021564200022D200E5E354A06064
:10140C0015E5E354A064A09001B070057402F0805F
:10141C000A7401F08005E49001B0F030057C900175
:10142C008CE0C3940550077F061226B88027200154
:10143C003B90018DE0FFD39414501FEF54037004C4
:10144C007D24800990018DE020E0077D257F0D1221
:10145C00162190018DE004F080407F041226B8E440
:10146C0090018DF0D201D210C211802E9001E5E0D6
:10147C007028301004C2108019E5E354A0FF9001CD
:10148C008AE06F7001E46012E5E354A06004D22797
:10149C00D228E5E354A090018AF02002030215EE55
:1014AC0030423F200F237D3FE4FF120056D20FD273
:1014BC0011E49001AEF0A3F09001B1F090018BF02B
:1014CC00C208D20BC200D204227F031226B8C20F6C
:1014DC00D20390018BE0D394035003021590C242C7
:1014EC00804F20044C90018CE0FFD39414501CEFDF
:1014FC00540370047D24800990018CE020E0077D6A
:10150C00257F0D12162190018C807990018DE0FFC2
:10151C00D39414501CEF540370047D248009900163
:10152C008DE020E0077D257F3712162190018D80FC
:10153C0053E5E8540C6026200E1E90018DE004F05B
:10154C00E0C394055003021620E4F075E80C7F0309
:10155C001226B8D20DC211227F040226B8C20DC2C7
:10156C000E3003097F031226B8C203807520083D94
:10157C00E5E354AC64AC600330302190018BE0D3D4
:10158C0094285004E004F022D208E490018EF090EC
:10159C00018BF0C2097F041226B880469001AFE09F
:1015AC0070407B017A017991120086803590018E12
:1015BC00E0FFD39414501FEF540370047D24800972
:1015CC0090018EE020E0077D257F05121621900109
:1015DC008EE004F0800C200909D2097F041226B891
:1015EC00C211C2072220070BD2077F041226B8C2F1
:1015FC00118019E5E354A0FF90018AE06F7001E4BB
:10160C006012E5E354A06004D227D228E5E354A08D
:04161C0090018AF0BF
:0116200022A7
:06008600900100120AD1F6
:10008C009001B1E014700302016714700302023E88
:10009C001470030202A914700302041524046003F3
:1000AC00020595900100120AB190001E1208C16061
:1000BC00030205959001B2E0D3940A5028E004F0B5
:1000CC0090001A743F120921300C0302059590011F
:1000DC0000120AB190001A1208C1FDE4FF1200567A
:1000EC00D20C020595E49001B2F0C20C9001001202
:1000FC000AB1900016E4120921900015E4120921AE
:10010C00900013E4120921900012E41209219000CE
:10011C0011E4120921900010E4120921900018E456
:10012C00120921900017E412092190000EE4F5F059
:10013C00120A0E90000CE4F5F0120A0E900019E46D
:10014C0012092190001B743F1209219001B1740116
:10015C00F0E490018FF0A3F0020595E5E3540860FC
:10016C001CE5E354046016900100120AB190001EC5
:10017C007401120921E49001B1F0020595E5E354F4
:10018C0008704C9001B6E0FEA3E0FF900100120A4B
:10019C00B1900002EE8FF0120A0E7C007D05120960
:1001AC0055EF7802C333CE33CED8F9FF900100124D
:1001BC000AB1900006EE8FF0120A0E9001B7E025FE
:1001CC00E0FF9001B6E03390000A8FF0120A0EE5C2
:1001DC00E3540470519001B3E0FEA3E0FF900100E2
:1001EC00120AB1EE8FF01209EF9001B3E0FEA3E01A
:1001FC00FF7C007D05120955EF7802C333CE33CE58
:10020C00D8F9FF900100120AB1900004EE8FF012A1
:10021C000A0E9001B4E025E0FF9001B3E0339000AA
:10022C00088FF0120A0E900100120AB190001D0204
:10023C00058AD3900190E0940590018FE0940050D2
:10024C00028069E490018FF0A3F0E5E35408701F7D
:10025C009001B6E0FEA3E0FF900100120AB19000FD
:10026C000EEE8FF0120A0E9000187401120921E59F
:10027C00E35404701F9001B3E0FEA3E0FF90010073
:10028C00120AB190000CEE8FF0120A0E9000177447
:10029C00011209219001B17403F0020595D390016C
:1002AC0090E0940290018FE09400500AE475F00104
:1002BC0012098B020595E490018FF0A3F0900100D8
:1002CC00120AB190000A1209B7FFAEF090000E129C
:1002DC0009B7D39FE5F09E501C900100120AB19013
:1002EC0000081209B7FFAEF090000C1209B7D39FAB
:1002FC00E5F09E4011E49001B1F0900100120AB1BA
:10030C0090001D0203D7900100120AB19000181240
:10031C0008C16401706D90000E1209B7FFAEF0D3E6
:10032C009414EE94005031E5E330E31F9000167402
:10033C000112092190001A1208C1C3943F40449045
:10034C000100120AB1900018E48035900100120AE5
:10035C00B190001374018028900100120AB1900032
:10036C00061209B7FDD3EF9DEE95F0900100400801
:10037C00120AB19000138006120AB1900016740193
:10038C00120921900100120AB19000171208C164E1
:10039C0001600302059590000C1209B7FFAEF0D373
:1003AC009414EE94005034E5E330E222900015747E
:1003BC000112092190001A1208C1C3943F50030284
:1003CC000595900100120AB1900017E48035900158
:1003DC0000120AB190001274018028900100120AD8
:1003EC00B19000041209B7FDD3EF9DEE95F090018A
:1003FC00004008120AB19000128006120AB1900057
:10040C00157401120921020595D3900190E0941402
:10041C0090018FE094005031E475F00112098B903B
:10042C0001B6E0FEA3E0FF900100120AB190000EAD
:10043C00EE8FF0120A0E9001B3E0FFA3E090000CD7
:10044C00CF8FF0120A0E020595E490018FF0A3F005
:10045C00900100120AB19000181208C164016003E7
:10046C000204F39000171208C16401707A90000620
:10047C001209B7FFAEF090000E1209B7FDACF0C335
:10048C009FEC9E4018900100120AB190000A1209CC
:10049C00B7FFD3ED9FEC95F050030205959001004A
:1004AC00120AB19000041209B7FFAEF090000C12C2
:1004BC0009B7FDACF0C39FEC9E4018900100120AE6
:1004CC00B19000081209B7FFD3ED9FEC95F05003E3
:1004DC00020595900100120AB190001674011209E0
:1004EC002190001502058A900100120AB1900018A3
:1004FC001208C1640170419000061209B7FFAEF0FA
:10050C0090000E1209B7FDACF0C39FEC9E40159005
:10051C000100120AB190000A1209B7FFD3ED9FEC4B
:10052C0095F04014900100120AB19000167401125B
:10053C0009219001B17402F0900100120AB19000EF
:10054C00171208C1640170419000081209B7FFAE80
:10055C00F090000C1209B7FDACF0D39FEC9E501537
:10056C00900100120AB19000041209B7FFC3ED9F6D
:10057C00EC95F05014900100120AB1900015740122
:10058C001209219001B17402F0900100120AB1908D
:10059C0000181208C1FF6401600D9000171208C109
:1005AC00640160030207989000131208C1FE6401F5
:1005BC00600D9000121208C164016003020712EF73
:1005CC00B4011E9000171208C1B40115EEB401114C
:1005DC009000131208C1B4010890001474011209A0
:1005EC00219000181208C1FFB401189000171208CE
:1005FC00C170109000131208C16401702390001494
:10060C0004801AEF701A9000171208C1B4011190EF
:10061C0000121208C1B401089000147401120921CF
:10062C00900013E4120921900012E41209219000A9
:10063C00141208C1640160030207B1900100120A90
:10064C00B190001A1208C1D39400400890001A749B
:10065C00FE1208EE9000191208C1FF90001A120841
:10066C00C1D39F40219001C2E024C8FF9001C1E09A
:10067C003400FEC39001BAE09FEE6480F89001B99B
:10068C00E06480985048900100120AB19000191251
:10069C0008C1FF90001A1208C1D39F90010050139B
:1006AC00120AB190001AEF12092190001CE41209F1
:1006BC00218013120AB190001C74011209219000C0
:1006CC001A74021208EE9001B17404F080139001B8
:1006DC00B17402F0900100120AB190001CE41209EE
:1006EC0021E490018FF0A3F0900100120AB1900068
:1006FC0014E412092190001C1208C1FF90001A1278
:10070C0008C1FD020795900100120AB19000161263
:10071C0008C16401600D9000151208C164016003EA
:10072C000207B1900016E4120921900015E4120999
:10073C002190001A1208C1C3943F500E9001001270
:10074C000AB190001A74021208EE9001B17404F010
:10075C00900100120AB190001B1208C1FF90001A00
:10076C001208C1C39F4013900100120AB190001AE5
:10077C00EF1209219001B17401F0900100120AB13D
:10078C0090001A1208C1FDE4FF0200569001B1E07E
:10079C00D394024010E4F0900100120AB190001EB4
:0507AC00740112092197
:0107B1002225
:10281D00602A01600BB80BEA0C1C0C800CB20CE4A6
:10282D000D160D480D7A0DAC0E100E420E740EA63F
:0E283D000ED80F0A0F3C0F870FD2101D106827
:10232C00E4FFEF25E02460F582E43401F583E0FC62
:10233C00A3E0FDC39001C2E09D9001C1E09C40056B
:10234C000FEFB415DD90015FE0FEEFD39E90015EC0
:10235C00E0400404F0800214F0E5E16008E4F5E1EB
:10236C0090015FEFF090015EE0FED394BE5006EE5C
:10237C00C3940A500B90015FEFF090015E7464F00F
:10238C0090015FE0FFD394005002D234EFD394015C
:10239C005002D230EFD394055002D232EFD3940ACC
:0C23AC005002D231EFD3940F5002D23314
:0123B8002202
:102424009001ECE06062E4F0D21C9001EAE004F078
:10243400E0C394054004E4F0D21D9001EDE004F003
:10244400E0C3940A4004E4F0D21F9001E7E475F07D
:102454000112098BC39001E8E094649001E7E094D1
:10246400004006E4F0A3F0D21A9001E9E004F0E0A1
:10247400C394FA4013E4F0D21B9001EBE004F0E0C3
:0924840094044004E4F0D21E228D
:03000B0002294483
:10294400C0E0C083C082C0D074FC258CF58C746652
:10295400258AF58A9001EC7401F0D0D0D082D0831E
:03296400D0E0328E
:0E2A7B00758901758CFC758A66D2A9D28C22F1
:10275A00EFD39401501675FE0EEF25E02404FE74A3
:10276A0003A806088002C333D8FC801475FE0FEF55
:10277A0024FE25E0FE7403A806088002C333D8FCB1
:10278A00F452FFEFB4040C75FE0F53FFF075FE0E02
:04279A0053FF0F22B8
:102A210075FE54EF5407F5FF75FE56AF058FFF7520
:062A3100FE5375FF0122B7
:10270900EFD39401501875FE0EEF25E02404FE74F2
:1027190003A806088002C333D8FC42FF801675FE61
:102729000FEF24FE25E0FE7403A806088002C333D8
:10273900D8FC42FFEF70038DCE22EFB401038DCF99
:1027490022EFB402038DDE22EFB40304AF058FDF5D
:01275900225D
:032FFD00010102CD
:10296700E4FB7D04FF12000EE4FB7D047F011200EF
:102977000EE4FB7D047F0212000EE4FB7D047F035F
:0329870002000E3D
:100C500030285AC228E49001FCF090015EF0900127
:100C600005F0A3F0FBFAFDFF12248DE4900105F0DE
:100C7000A3F0FBFAFD7F0112248DE4900105F0A39F
:100C8000F0FBFAFD7F0212248DE4900105F0A3F041
:100C9000FBFAFD7F0312248D9001347402F0900161
:100CA00033F0900135F0900132F0D2412220190F3B
:100CB00020350C200D03020D66300E03020D662058
:100CC0002205D222D22822900134E06402601A90D8
:100CD0000105E4F0A3740AF07B147A007D02E4FFBE
:100CE00012248D9001347403F0900133E0640260AB
:100CF0001A900105E4F0A3740AF07B147A007D02D7
:100D00007F0112248D9001337403F0900135E0646B
:100D100002601A900105E4F0A3740AF07B147A00D3
:100D20007D027F0212248D9001357403F090013210
:100D3000E06402601A900105E4F0A3740AF07B14E9
:100D40007A007D027F0312248D9001327403F0201B
:100D50000D0302101E9001FCE0C394285003020E04
:100D60009CD20ED2282230220CC222C224C223C21C
:100D700026C227D2427808E6FF7003020E7664038B
:100D8000705E202407D224C223022967E490010563
:100D9000F0A3F0FBFA7D01FF12248DE4900105F031
:100DA000A3F0FBFA7D017F0112248DE4900105F090
:100DB000A3F0FBFA7D017F0212248DE4900105F07F
:100DC000A3F0FBFA7D017F0312248D90013474019E
:100DD000F0900133F0900135F0900132F0020E6D89
:100DE00020230DD223C224D228E49001FDF0807D7F
:100DF0009001FCE0C394015055E004F0A3E01460BE
:100E00001A14602714603424037062900134E06483
:100E100004605A7B017D04E4FF802E900133E0647E
:100E200004604A7B017D047F01801E900135E064EF
:100E300004603A7B017D047F02800E900132E06401
:100E400004602A7B017D047F0312000E801F900145
:100E5000FCE0C3940F5005E004F08011E49001FC25
:100E6000F0A3E004F0E0C394044002E4F0C226C220
:100E700027C229D2252230230AC223122967D22869
:100E8000D2422220260C20250920270620290302F1
:100E9000101E9001FCE0FFC394015004E004F02216
:100EA000EFC394644003020FC99001FCE004F030EA
:100EB0003237900134E06403700302101EE49001A5
:100EC00005F0A3F07B64FA7D03FF12248D900134BA
:100ED0007404F0E4900105F0A3F0FBFAFD7F011229
:100EE000248D9001337402802D303141E49001054E
:100EF000F0A3F0FBFA7D01FF12248D900134740100
:100F0000F0E4900105F0A3F0FBFA7D017F011224CB
:100F10008D9001337401F0E4900105F0A3F0FBFA29
:100F2000FD7F0212248D90013574028043E490010C
:100F300005303353F0A3F0FBFA7D01FF12248D90AE
:100F400001347401F0E4900105F0A3F0FBFA7D0197
:100F50007F0112248D9001337401F0E4900105F0BB
:100F6000A3F0FBFA7D017F0212248D9001357401FC
:100F7000F0E4900105F0A3F0FBFAFD7F0312248D4D
:100F80009001327402F022F0A3F0FBFA7D01FF120F
:100F9000248DE4900105F0A3F0FBFA7D017F01129E
:100FA000248DE4900105F0A3F0FBFA7D017F02128D
:100FB000248DE4900105F0A3F0FBFA7D017F03127C
:100FC000248D90013474018048C226C225C227C2F4
:100FD00029E4900105F0A3F0FBFAFDFF12248DE453
:100FE000900105F0A3F0FBFAFD7F0112248DE4903F
:100FF0000105F0A3F0FBFAFD7F0212248DE49001BD
:1010000005F0A3F0FBFAFD7F0312248D90013474E8
:0E10100002F0900133F0900135F0900132F0C3
:01101E0022AF
:1029AA00000000000000000000000000000000001D
:1029BA00000000000000000000000000000000000D
:0E21E600900126120AD1900129ECF0A3EDF031
:1021F40074FFA3F0A3F0A37410F0A37421F0E4A37C
:10220400F090012974FFF5F01209A145F060709077
:102214000126E475F001120ABA1208A890012FF001
:10222400E0FE90012BE06EF0A3E0F0E4900130F0CA
:10223400A3F0C3900131E09408900130E094005081
:10224400C090012BE0FEA3E0FFEE30E719EF25E09C
:10225400FFEE33FEA3E06EFEA3E06FFF90012BEED2
:10226400F0A3EFF0800D90012CE025E0F090012B1D
:10227400E033F0900130E475F00112098B80B390E3
:07228400012BE0FEA3E0FFC7
:01228B002230
:08162100900100EFF0A3EDF0D1
:10162900E4A3F0A3F078047C017D017BFF7A29799A
:10163900AAFE7F20120882E4900124F0A3F0900111
:101649000474AAF0900101E0FE900105F0900100F8
:10165900E0900106F0A3E4F09001FAE0900108F0AF
:10166900900100E0120ADA16DF0516A20A16F00B3D
:1016790016FA0D17430E17980F16F011186912165E
:101689008F37000017A4E4900109F0A3F07B0678D6
:1016990040E4F608DBFC0217A4900109740EF0E49B
:1016A900A3F0FB74402BF8E6FD740B2BF582E434B0
:1016B90001F583EDF00BEBB406E9E4FB74462BF876
:1016C900E6FD74112BF582E43401F583EDF00BEBA3
:1016D900B408E90217A49001097401F0E4A3F0A287
:1016E9003B33A3F00217A4E4900109F0A3F0021719
:1016F900A49001097405F0E4A3F0A37410F0F0A319
:101709007401F07808E65402C4333354C0FD9001E3
:101719005FE075F005A44D90010DF0EEB42405903D
:1017290001DC800A900101E0B425089001DDE09018
:10173900010EF0E490010FF08061900109740AF044
:10174900E4A3F07829E6A3F0E4FBEBFF7829E6FDB2
:101759002FFFE433FED3EF9416EE64809480400F9C
:10176900740C2BF582E43401F58374FFF08013EDDA
:101779002B242AF8E6FF740C2BF582E43401F58357
:10178900EFF00BEBB409C37829740926F6800C90A5
:1017990001097401F0E4A3F0A304F090010AE0FE4A
:1017A900900109E0FDED2407FFE43EFE900102F0FF
:1017B900FCA3EFF0FD7B017A0179041221E6900187
:1017C90024EEF0A3EFF0900124E0FEA3E0FD9001E8
:1017D90002E0FAA3E02404F58274013AF583EDF0FE
:1017E900EEFF900102E475F00112098BFC740425E7
:1017F900F0F58274013CF583EFF07F011226B89071
:101809000101E0FFB4240843BD0253BDFE8016EF79
:10181900B4250843BD2053BDEF800AEFB421064328
:10182900BD2253BDEE900103E02402FF900102E0C6
:101839003400FE7B017A01790412287F900101E0CE
:10184900FFB4240753BDFD43BD0122EFB42507535F
:10185900BDDF43BD1022EFB4210653BDDF43BD11E7
:01186900225C
:101F54007851E6C4540FFD54036003022069EF1264
:101F64000ADA1FA90A1FBB0B1FCB0D20360E20480F
:101F74000F205A111F7F3700002069E4FE7855E6D0
:101F8400FFEEC39F500F74572EF8E6FF74402EF8EF
:101F9400A6070E80E8EDB404069001D202206690F4
:101FA40001D3022066ED7857B40406E69001D6F01A
:101FB40022E69001D7F022EDB404069001DA022063
:101FC400669001DB022066ED640478597032E6FE07
:101FD400547F9001DCF0EEC413131354019001CA32
:101FE400F008E6784EF6785BE6FE54019001D4F0F2
:101FF400EEC31354019001DEF008E69001D8F022FC
:10200400E6FE547F9001DDF0EEC4131313540190E7
:1020140001CBF008E6784FF6785BE6FE54019001B8
:10202400D5F0EEC31354019001DFF008E69001D916
:10203400F022ED7857B40406E69001D0F022E69041
:1020440001D1F022ED7857B40406E69001CCF022D9
:10205400E69001CDF022EDB404059001CC8003900C
:0520640001CD7401F044
:012069002254
:10260D00E4900100F0A3F0A3F0303A4AC23A7856B4
:10261D00E6FEE42407FFE43EFE18E6FDEF4DFF90D5
:10262D000101EEF0FCA3EFF0FD7B007A0079501272
:10263D0021E6AC06AD07900101A3E0FB2452F8E6BC
:10264D00FE74512BF8E6FBEBB5050BEEB5040778E0
:06265D0052E6FF121F54BB
:012663002254
:1022AC00022A5DE493A3F8E493A34003F68001F2C1
:1022BC0008DFF48029E493A3F85407240CC8C33333
:1022CC00C4540F4420C8834004F456800146F6DF02
:1022DC00E4800B0102040810204080902817E47E53
:1022EC00019360BCA3FF543F30E509541FFEE493F7
:1022FC00A360010ECF54C025E060A840B8E493A3BE
:10230C00FAE493A3F8E493A3C8C582C8CAC583CAE8
:10231C00F0A3C8C582C8CAC583CADFE9DEE780BEA0
:01284B00008C
:1007B200E709F608DFFA8046E709F208DFFA803E29
:1007C20088828C83E709F0A3DFFA8032E309F60816
:1007D200DFFA8078E309F208DFFA807088828C837E
:1007E200E309F0A3DFFA806489828A83E0A3F60832
:1007F200DFFA805889828A83E0A3F208DFFA804C0C
:1008020080D280FA80C680D4806980F280338010E2
:1008120080A680EA809A80A880DA80E280CA80334B
:1008220089828A83ECFAE493A3C8C582C8CCC583C3
:10083200CCF0A3C8C582C8CCC583CCDFE9DEE78093
:100842000D89828A83E493A3F608DFF9ECFAA9F012
:10085200EDFB2289828A83ECFAE0A3C8C582C8CC68
:10086200C583CCF0A3C8C582C8CCC583CCDFEADE81
:10087200E880DB89828A83E493A3F208DFF980CCE3
:1008820088F0EF60010E4E60C388F0ED2402B404DC
:100892000050B9F582EB2402B4040050AF23234583
:0608A2008223900802739E
:1008A800BB010689828A83E0225002E722BBFE024E
:0908B800E32289828A83E4932281
:1008C100BB010CE58229F582E5833AF583E02250EC
:1008D10006E92582F8E622BBFE06E92582F8E22236
:0D08E100E58229F582E5833AF583E4932250
:1008EE00BB010FF8E58229F582E5833AF583E0280E
:1008FE00F0225009C58229F8E58226F622BBFE09B0
:10090E00C58229F8E22582F222F8EA2583F583E9E9
:03091E00932822F9
:10092100F8BB010DE58229F582E5833AF583E8F00C
:10093100225006E92582C8F622BBFE05E92582C8B8
:02094100F222A0
:10094300EF8DF0A4A8F0CF8CF0A428CE8DF0A42EC8
:02095300FE2282
:10095500C2D5EC30E709B2D5E4C39DFDE49CFCEEBD
:1009650030E715B2D5E4C39FFFE49EFE120B2DC3FD
:10097500E49DFDE49CFC8003120B2D30D507C3E4F8
:060985009FFFE49EFE222C
:10098B00C5F0F8A3E028F0C5F0F8E58215827002F7
:06099B001583E038F02294
:1009A100A3F8E0C5F025F0F0E58215827002158309
:0609B100E0C838F0E82266
:1009B700BB0110E58229F582E5833AF583E0F5F07E
:1009C700A3E0225009E92582F886F008E622BBFE5B
:1009D7000AE92582F8E2F5F008E222E5832AF583A1
:0809E700E993F5F0A3E9932266
:1009EF00BB010A89828A83F0E5F0A3F0225006F753
:0F09FF0009A7F01922BBFE06F3E5F009F3192250
:100A0E00F8BB0111E58229F582E5833AF583E8F01A
:100A1E00E5F0A3F0225009E92582C8F608A6F022D7
:0D0A2E00BBFE09E92582C8F2E5F008F222BE
:100A3B00E88FF0A4CC8BF0A42CFCE98EF0A42CFC5A
:100A4B008AF0EDA42CFCEA8EF0A4CDA8F08BF0A4D8
:100A5B002DCC3825F0FDE98FF0A42CCD35F0FCEB37
:100A6B008EF0A4FEA9F0EB8FF0A4CFC5F02ECD39FC
:0F0A7B00FEE43CFCEAA42DCE35F0FDE43CFC2269
:10279E00C2D5E830E70FB2D5E4C39BFBE49AFAE466
:1027AE0099F9E498F8EC30E717B2D51227D4120B4A
:1027BE00BEE4C39BFBE49AFAE499F9E498F880032B
:1027CE00120BBE30D50DE4C39FFFE49EFEE49DFDCB
:0427DE00E49CFC2259
:100A8A00E8600FECC313FCED13FDEE13FEEF13FF4A
:030A9A00D8F1226E
:100A9D00E86010ECA2E713FCED13FDEE13FEEF136F
:040AAD00FFD8F0225C
:090AB100E0FBA3E0FAA3E0F92246
:100ABA00F8E0FBA3A3E0F925F0F0E58215827002C5
:070ACA001583E0FA38F02269
:090AD100EBF0A3EAF0A3E9F02226
:100ADA00D083D082F8E4937012740193700DA3A3AB
:100AEA0093F8740193F5828883E4737402936860BF
:060AFA00EFA3A3A380DFBF
:100B0000EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02D82
:100B1000FDE43CFCE8A42EC8C5F03DFDE43CFCEF40
:0D0B2000A4FFE5F028FEE43DFDE43CFC22CE
:100B2D00BC000BBE0029EF8DF084FFADF022E4CCAC
:100B3D00F875F008EF2FFFEE33FEEC33FCEE9DEC75
:100B4D00984005FCEE9DFE0FD5F0E9E4CEFD22EDBB
:100B5D00F8F5F0EE8420D21CFEADF075F008EF2F05
:100B6D00FFED33FD4007985006D5F0F222C398FDF6
:050B7D000FD5F0EA2293
:100B820075F008758200EF2FFFEE33FECD33CDCC2A
:100B920033CCC58233C5829BED9AEC99E5829840AD
:100BA2000CF582EE9BFEED9AFDEC99FC0FD5F0D68A
:100BB200E4CEFBE4CDFAE4CCF9A88222B800C1B9B4
:100BC2000059BA002DEC8BF084CFCECDFCE5F0CBF2
:100BD200F97818EF2FFFEE33FEED33FDEC33FCEB2B
:100BE20033FB10D703994004EB99FB0FD8E5E4F9E6
:100BF200FA227818EF2FFFEE33FEED33FDEC33FCD3
:100C0200C933C910D7059BE99A4007EC9BFCE99AC6
:100C1200F90FD8E0E4C9FAE4CCFB2275F010EF2F0B
:100C2200FFEE33FEED33FDCC33CCC833C810D7070B
:100C32009BEC9AE899400AED9BFDEC9AFCE899F846
:0E0C42000FD5F0DAE4CDFBE4CCFAE4C8F922D9
:00000001FF

Binary file not shown.

View File

@ -6,7 +6,7 @@
<Header>### uVision Project, (C) Keil Software</Header>
<PrjGuiSettings>
<LastAddFilePath>E:\todaywork\20241202_tp3410\SY8837_Demo\UsrSrc\display</LastAddFilePath>
<LastAddFilePath>E:\todaywork\20241202_tp3410\SY8837_Demo\UsrSrc\comm</LastAddFilePath>
</PrjGuiSettings>
<ViewPool/>
@ -93,8 +93,8 @@
<flags>2</flags>
<showCmd>3</showCmd>
<MinPosition>
<xPos>-32000</xPos>
<yPos>-32000</yPos>
<xPos>-1</xPos>
<yPos>-1</yPos>
</MinPosition>
<MaxPosition>
<xPos>-1</xPos>
@ -110,8 +110,8 @@
<MDIClientArea>
<RegID>0</RegID>
<MDITabState>
<Len>1585</Len>
<Data>010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000001000000100000000F0000000100000036453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF40453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C766F785C766F785F6D6F64756C652E63000000000C766F785F6D6F64756C652E6300000000FFDC7800FFFFFFFF4C453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6469736368617267655C6469736368617267655F6D6F64756C652E6300000000126469736368617267655F6D6F64756C652E6300000000BECEA100FFFFFFFF41453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C757365726170705C757365726170702E630000000009757365726170702E6300000000F0A0A100FFFFFFFF40453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5372635C737461727475705C535441525455502E413531000000000B535441525455502E41353100000000BCA8E100FFFFFFFF3B453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C757365725C757365722E680000000006757365722E68000000009CC1B600FFFFFFFF39453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6B65795C6B65792E6300000000056B65792E6300000000F7B88600FFFFFFFF3C453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C696E635C636F6E6669672E680000000008636F6E6669672E6800000000D9ADC200FFFFFFFF48453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C636861726765725C636861726765725F6D6F64756C652E680000000010636861726765725F6D6F64756C652E6800000000A5C2D700FFFFFFFF40453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C766F785C766F785F6D6F64756C652E68000000000C766F785F6D6F64756C652E6800000000B3A6BE00FFFFFFFF39453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6164635C6164632E6300000000056164632E6300000000EAD6A300FFFFFFFF39453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6C65645C6C65642E6300000000056C65642E6300000000F6FA7D00FFFFFFFF3B453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C68616C6C5C68616C6C2E63000000000668616C6C2E6300000000B5E99D00FFFFFFFF3B453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C756172745C756172742E630000000006756172742E63000000005FC3CF00FFFFFFFF39453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C6164635C6164632E6800000000056164632E6800000000C1838300FFFFFFFF3F453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C73797374656D5C73797374656D2E63000000000873797374656D2E6300000000CACAD500FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F40000006600000080070000C3020000</Data>
<Len>1767</Len>
<Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000012000000030000000100000036453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF40453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C766F785C766F785F6D6F64756C652E63000000000C766F785F6D6F64756C652E6300000000FFDC7800FFFFFFFF4C453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6469736368617267655C6469736368617267655F6D6F64756C652E6300000000126469736368617267655F6D6F64756C652E6300000000BECEA100FFFFFFFF41453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C757365726170705C757365726170702E630000000009757365726170702E6300000000F0A0A100FFFFFFFF40453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5372635C737461727475705C535441525455502E413531000000000B535441525455502E41353100000000BCA8E100FFFFFFFF3B453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C757365725C757365722E680000000006757365722E68000000009CC1B600FFFFFFFF39453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6B65795C6B65792E6300000000056B65792E6300000000F7B88600FFFFFFFF3C453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C696E635C636F6E6669672E680000000008636F6E6669672E6800000000D9ADC200FFFFFFFF48453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C636861726765725C636861726765725F6D6F64756C652E680000000010636861726765725F6D6F64756C652E6800000000A5C2D700FFFFFFFF40453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C766F785C766F785F6D6F64756C652E68000000000C766F785F6D6F64756C652E6800000000B3A6BE00FFFFFFFF39453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6164635C6164632E6300000000056164632E6300000000EAD6A300FFFFFFFF39453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6C65645C6C65642E6300000000056C65642E6300000000F6FA7D00FFFFFFFF3B453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C68616C6C5C68616C6C2E63000000000668616C6C2E6300000000B5E99D00FFFFFFFF3B453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C756172745C756172742E630000000006756172742E63000000005FC3CF00FFFFFFFF39453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C6164635C6164632E6800000000056164632E6800000000C1838300FFFFFFFF3F453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C73797374656D5C73797374656D2E63000000000873797374656D2E6300000000CACAD500FFFFFFFF3F453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C636F6D6D5C766F785F636F6D6D2E68000000000A766F785F636F6D6D2E6800000000C5D4F200FFFFFFFF3F453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C636F6D6D5C766F785F636F6D6D2E63000000000A766F785F636F6D6D2E6300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F40000006600000080070000C3020000</Data>
</MDITabState>
</MDIClientArea>
<ViewEx>
@ -1838,7 +1838,7 @@
<Name>Debug</Name>
<Buttons>
<Len>2373</Len>
<Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
<Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
</Buttons>
<OriginalItems>
<Len>898</Len>
@ -3603,7 +3603,7 @@
<ActiveMDIGroup>0</ActiveMDIGroup>
<MDIGroup>
<Size>100</Size>
<ActiveTab>15</ActiveTab>
<ActiveTab>3</ActiveTab>
<Doc>
<Name>..\UsrSrc\main.c</Name>
<ColumnNumber>0</ColumnNumber>
@ -3633,9 +3633,9 @@
</Doc>
<Doc>
<Name>..\UsrSrc\userapp\userapp.c</Name>
<ColumnNumber>4</ColumnNumber>
<TopLine>121</TopLine>
<CurrentLine>140</CurrentLine>
<ColumnNumber>24</ColumnNumber>
<TopLine>109</TopLine>
<CurrentLine>127</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
@ -3661,8 +3661,8 @@
<Doc>
<Name>..\UsrSrc\key\key.c</Name>
<ColumnNumber>24</ColumnNumber>
<TopLine>246</TopLine>
<CurrentLine>278</CurrentLine>
<TopLine>247</TopLine>
<CurrentLine>279</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
@ -3688,8 +3688,8 @@
<Doc>
<Name>..\UsrInc\vox\vox_module.h</Name>
<ColumnNumber>0</ColumnNumber>
<TopLine>461</TopLine>
<CurrentLine>491</CurrentLine>
<TopLine>1</TopLine>
<CurrentLine>1</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
@ -3741,9 +3741,27 @@
</Doc>
<Doc>
<Name>..\UsrSrc\system\system.c</Name>
<ColumnNumber>16</ColumnNumber>
<ColumnNumber>37</ColumnNumber>
<TopLine>140</TopLine>
<CurrentLine>158</CurrentLine>
<CurrentLine>159</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
<Doc>
<Name>..\UsrInc\comm\vox_comm.h</Name>
<ColumnNumber>8</ColumnNumber>
<TopLine>122</TopLine>
<CurrentLine>139</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
<Doc>
<Name>..\UsrSrc\comm\vox_comm.c</Name>
<ColumnNumber>0</ColumnNumber>
<TopLine>428</TopLine>
<CurrentLine>429</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>

View File

@ -404,6 +404,18 @@
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>20</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\UsrSrc\comm\vox_comm.c</PathWithFileName>
<FilenameWithoutPath>vox_comm.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
</ProjectOpt>

View File

@ -324,7 +324,7 @@
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath>..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer;..\UsrInc\pmu;..\UsrInc\user;..\UsrInc\display</IncludePath>
<IncludePath>..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer;..\UsrInc\pmu;..\UsrInc\user;..\UsrInc\display;..\UsrInc\comm</IncludePath>
</VariousControls>
</C51>
<Ax51>
@ -476,6 +476,11 @@
<FileType>1</FileType>
<FilePath>..\UsrSrc\display\display_ui.c</FilePath>
</File>
<File>
<FileName>vox_comm.c</FileName>
<FileType>1</FileType>
<FilePath>..\UsrSrc\comm\vox_comm.c</FilePath>
</File>
</Files>
</Group>
</Groups>

View File

@ -1,20 +1,4 @@
---- gCharge_Cfg Matches (23 in 1 files) ----
charger_module.c (UsrSrc\charger) line 51 : s_gCharger_Cfg gCharge_Cfg;
Charger_Init in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nTrickle_Cur = TRICKLE_CUR_SET;
Charger_Init in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nIterm_Cur = ITERM_CUR_SET;
Charger_Init in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting;
Charger_Init in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nVFloat = VFLOAT_SET;
Charger_Init in charger_module.c (UsrSrc\charger) : REG_CHG1 = gCharge_Cfg.nTrickle_Cur | gCharge_Cfg.nIterm_Cur | gCharge_Cfg.nConstant_Cur ; //设置Charger的涓流充电电流、截止充电电流、恒流CC。
Charger_Init in charger_module.c (UsrSrc\charger) : REG_CHG2 = gCharge_Cfg.nVFloat;
PMU_NTC_Handle in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting / 2;
PMU_NTC_Handle in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting;
PMU_NTC_Handle in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting;
PMU_NTC_Handle in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting / 2;
PMU_NTC_Handle in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nVFloat = VFLOAT_SET;
PMU_NTC_Handle in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nVFloat = VFLOAT_JEITA_HOT;
PMU_NTC_Handle in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nVFloat = VFLOAT_JEITA_HOT;
PMU_NTC_Handle in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nVFloat = VFLOAT_SET;
PMU_NTC_Handle in charger_module.c (UsrSrc\charger) : REG_CHG2 = gCharge_Cfg.nVFloat;
Charger_Handler in charger_module.c (UsrSrc\charger) : if( gCharge_Cfg.nVFloat == CHG_VFLOAT_4_200V )
Charger_Handler in charger_module.c (UsrSrc\charger) : REG_CHG1 = gCharge_Cfg.nTrickle_Cur | gCharge_Cfg.nIterm_Cur | gCharge_Cfg.nConstant_Cur ; //设置Charger的涓流充电电流、截止充电电流、恒流CC。
Charger_Handler in charger_module.c (UsrSrc\charger) : REG_CHG2 = gCharge_Cfg.nVFloat; //设置CV电压阈值。
---- MAX_PACKET_SIZE Matches (3 in 1 files) ----
vox_comm.c (UsrSrc\comm) line 31 : #define MAX_PACKET_SIZE 0x20
HandleTxCommand in vox_comm.c (UsrSrc\comm) : tx_pData[3] = MAX_PACKET_SIZE;
HandleTxCommand in vox_comm.c (UsrSrc\comm) : tx_pData[7] = MAX_PACKET_SIZE; //max_packet_size:0x20

View File

@ -29,7 +29,7 @@
Macro definitions
\******************************************************************************/
#define VREF 1000
#define VREF (1000UL)
/******************************************************************************\
Variables definitions

View File

@ -48,15 +48,15 @@ typedef struct {
/* 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_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << CHG_SafyTmr_EN_Pos)
#define CHG_SafyTmr_EN CHG_SafyTmr_EN_Pos_Msk
#define PRECHG_TMR_EN_Pos (3U)
#define PRECHG_TMR_EN_Pos_Msk (0x1UL << PRECHG_TMR_EN_Pos)
#define PRECHG_TMR_EN_Pos_Msk (0x1U << PRECHG_TMR_EN_Pos)
#define PRECHG_TMR_EN_2H PRECHG_TMR_EN_Pos_Msk
#define PRECHG_TMR_EN_1H 0x00
@ -66,7 +66,7 @@ typedef struct {
#define FASTCHG_TMR_SET_13H 0x03
#define CHG_EN_Pos (0U)
#define CHG_EN_Pos_Msk (0x1UL << CHG_EN_Pos)
#define CHG_EN_Pos_Msk (0x1U << CHG_EN_Pos)
#define CHG_EN CHG_EN_Pos_Msk
/* Charger Parements Config. */
@ -126,60 +126,60 @@ typedef struct {
/*5、CHG 配置寄存器 - REG_CHG0 */
#define DPM_Sel_Pos (6U)
#define DPM_Sel_Pos_Msk (0x1UL << DPM_Sel_Pos)
#define DPM_Sel_Pos_Msk (0x1U << DPM_Sel_Pos)
#define DPM_Sel DPM_Sel_Pos_Msk
#define R_Set1_Pos (4U)
#define R_Set1_Pos_Msk (0x1UL << R_Set1_Pos)
#define R_Set1_Pos_Msk (0x1U << R_Set1_Pos)
#define R_Set1 R_Set1_Pos_Msk
#define R_Set0_Pos (3U)
#define R_Set0_Pos_Msk (0x1UL << R_Set0_Pos)
#define R_Set0_Pos_Msk (0x1U << R_Set0_Pos)
#define R_Set0 R_Set0_Pos_Msk
#define CHG_VDPM_En_Pos (2U)
#define CHG_VDPM_En_Pos_Msk (0x1UL << CHG_VDPM_En_Pos)
#define CHG_VDPM_En_Pos_Msk (0x1U << CHG_VDPM_En_Pos)
#define CHG_VDPM_En CHG_VDPM_En_Pos_Msk
#define CHG_TEMP_En_Pos (1U)
#define CHG_TEMP_En_Pos_Msk (0x1UL << CHG_TEMP_En_Pos)
#define CHG_TEMP_En_Pos_Msk (0x1U << CHG_TEMP_En_Pos)
#define CHG_TEMP_En CHG_TEMP_En_Pos_Msk
#define CHG_CV_En_Pos (0U)
#define CHG_CV_En_Pos_Msk (0x1UL << CHG_CV_En_Pos)
#define CHG_CV_En_Pos_Msk (0x1U << CHG_CV_En_Pos)
#define CHG_CV_En CHG_CV_En_Pos_Msk
/* Charger 状态寄存器 - CHIP_STA4 */
#define VIN_PG_Pos (7U)
#define VIN_PG_Pos_Msk (0x1UL << VIN_PG_Pos)
#define VIN_PG_Pos_Msk (0x1U << VIN_PG_Pos)
#define VIN_PG VIN_PG_Pos_Msk
#define STATE_VDPM_Pos (6U)
#define STATE_VDPM_Pos_Msk (0x1UL << STATE_VDPM_Pos)
#define STATE_VDPM_Pos_Msk (0x1U << STATE_VDPM_Pos)
#define STATE_VDPM STATE_VDPM_Pos_Msk
#define STATE_TPL_Pos (5U)
#define STATE_TPL_Pos_Msk (0x1UL << STATE_TPL_Pos)
#define STATE_TPL_Pos_Msk (0x1U << STATE_TPL_Pos)
#define STATE_TPL STATE_TPL_Pos_Msk
#define STATE_BATOV_Pos (4U)
#define STATE_BATOV_Pos_Msk (0x1UL << STATE_BATOV_Pos)
#define STATE_BATOV_Pos_Msk (0x1U << STATE_BATOV_Pos)
#define STATE_BATOV STATE_BATOV_Pos_Msk
#define CHG_END_Pos (3U)
#define CHG_END_Pos_Msk (0x1UL << CHG_END_Pos)
#define CHG_END_Pos_Msk (0x1U << CHG_END_Pos)
#define CHG_END CHG_END_Pos_Msk
#define STATE_CV_Pos (2U)
#define STATE_CV_Pos_Msk (0x1UL << STATE_CV_Pos)
#define STATE_CV_Pos_Msk (0x1U << STATE_CV_Pos)
#define STATE_CV STATE_CV_Pos_Msk
#define STATE_CC_Pos (1U)
#define STATE_CC_Pos_Msk (0x1UL << STATE_CC_Pos)
#define STATE_CC_Pos_Msk (0x1U << STATE_CC_Pos)
#define STATE_CC STATE_CC_Pos_Msk
#define STATE_TC_Pos (0U)
#define STATE_TC_Pos_Msk (0x1UL << STATE_TC_Pos)
#define STATE_TC_Pos_Msk (0x1U << STATE_TC_Pos)
#define STATE_TC STATE_TC_Pos_Msk
extern void Charger_Init(void);

190
UsrInc/comm/vox_comm.h Normal file
View File

@ -0,0 +1,190 @@
/*
******************************************************************************
*
* @file vox_comm.h
* @brief VOX Communicate module
* @ic sy8837/8/9
*
* @version 1.0
* @date 2025/02/13 017:40:40
* @author Alex Xu
*
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
* All Rights Reserved
*
* History:
* Revision Date Author Desc
* 1.0.0 2025/02/13 Alex build this file
******************************************************************************
*/
#ifndef __VOX_COMM_H__
#define __VOX_COMM_H__
/*_____ I N C L U D E S ____________________________________________________*/
#include "define.h"
/******************************************************************************\
Macro definitions
\******************************************************************************/
/*耳机通道选择*/
#define TWS_VOL 0x04
#define TWS_VOR 0x05
#define TWS_BOX 0x02
#define TWS_PC 0x03
/******************************************************************************\
Typedef definitions
\******************************************************************************/
#if JIELI
/*耳机通道选择*/
typedef enum {
VOL_CHAN = 0x00,
VOR_CHAN = 0x01,
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_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;
#elif XUANHENG
/*耳机通道选择*/
#define TWS_VOL 0x04
#define TWS_VOR 0x05
#define TWS_BOX 0x02
#define TWS_PC 0x03
typedef enum {
VOL_CHAN = 0x24,
VOR_CHAN = 0x25,
VOX_BOTH = 0x21,
}e_Vox_Chan;
/*耳机和充电仓进行双向通讯的协议命令ID。*/
typedef enum _VOX_BES_COMMAND_E
{
CMD_SHUT_DOWN = 0x0005, //关机
CMD_TWS_GET_BTADDR = 0x0037, //获取对耳MAC地址
CMD_TWS_SET_BTADDR = 0x000A, //写入对耳MAC地址
CMD_CLEAR_PAIR = 0x000B, //清除配对记录
CMD_HEARTBEAT = 0x000D, //心跳包
CMD_SN = 0x000E, //写入SN码到耳机
CMD_GET_INTO_PAIR = 0x000F, //耳机进入配对状态
CMD_PAIRING_IMD = 0x0011, //立即执行TWS配对
BES_RESET, //耳机复位Pattern
}VOX_BES_COMMAND_E;
#endif
/******************************************************************************\
Global variables and functions
\******************************************************************************/
#ifdef VOX_RX
extern uint8_t Vox_Get_Vbat_Flag[2]; //耳机配对状态VOL:低4bitVOR:高4bit。0是无效1是正在配对2是配对成功3不处理保持当前状态。
extern uint8_t Vox_Get_BES_Addr_Flag[2] ;
#endif
extern void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select);
extern void HandleVoxCommMsg(void);
#endif

View File

@ -32,11 +32,11 @@
/* Boost VOUT Control Register<B5h> */
#define Boost_En_Pos (7U)
#define Boost_En_Msk (0x1UL << Boost_En_Pos)
#define Boost_En_Msk (0x1U << Boost_En_Pos)
#define Boost_En Boost_En_Msk
#define Boost_DirIn_Pos (6U)
#define Boost_DirIn_Msk (0x1UL << Boost_DirIn_Pos)
#define Boost_DirIn_Msk (0x1U << Boost_DirIn_Pos)
#define Boost_DirIn Boost_DirIn_Msk
#define Boost_Vout_3_65V (0x00)

View File

@ -274,8 +274,12 @@
#define CONSTANT_CUR_SET CHG_ICC_2_00MA //配置恒流充电流。
#define CONSTANT_JEITA_COLD CHG_ICC_1_00MA //配置JEITA低温限流充电电流。
#define VFLOAT_SET CHG_VFLOAT_4_200V //配置浮充电压。
#define VFLOAT_VOLTAGE_SET (4200UL) //配置浮充电压实际电压值用于仓复充单位mv。
#define PRECHG_TIM_SET PRECHG_TMR_EN_1H //配置涓流充超时时间。
#define FASTCHG_TMR_SET FASTCHG_TMR_SET_5H //配置恒流和恒压超时时间。
@ -286,13 +290,13 @@
/* Vox Config Setting. */
#define VOX_ADT_CUR_SET VOX_ADT_Cur_4_5UA //配置VOX负载识别电流阈值。
#define VOX_ADT_CUR_SET VOX_ADT_CUR_4_5UA //配置VOX负载识别电流阈值。
#define VOX_IOFF_CUR_SET Vox_Ioff_3mA << 6 //配置VOX IOFF检测阈值。
#define VOX_IOFF_CUR_SET ( VOX_IOFF_3MA << 6 ) //配置VOX IOFF检测阈值。
#define VOX_LIGHT_TO_HAVEY_DEB VOX_LIGHT_TO_HAVEY_128 //配置VOX 轻载转重载滤波时间。
#define VOX_LIGHT_TO_HAVEY_DEB VOX_LIGHT_TO_HAVEY_128MS //配置VOX 轻载转重载滤波时间。
#define VOX_HAVEY_TO_LIGHT_DEB VOX_HAVEY_TO_LIGHT_8 //配置VOX 重载转轻载滤波时间。
#define VOX_HAVEY_TO_LIGHT_DEB VOX_HAVEY_TO_LIGHT_8MS //配置VOX 重载转轻载滤波时间。
#define VOX_COMM_VOLTAGE_SET Vox_COMM_PULL_Vol_3_0 //配置VOX 通讯电平(1.8v/2.5V/3.0V/5.0)。
@ -336,13 +340,13 @@
#define VOUT_MIN_THD Boost_Vout_3_65V //VOX VOUT输出最小阈值。
#define IVOL_Threshold_Neg(Ivol) ( Ivol / 5 ) << 2 //VOL 调压下限阈值电流80% * IvolIVOL≥这个值则降压。
#define IVOL_Threshold_Neg(Ivol) ( ( Ivol / 5 ) << 2 ) //VOL 调压下限阈值电流80% * IvolIVOL≥这个值则降压。
#define IVOR_Threshold_Neg(Ivor) ( Ivor / 5 ) << 2 //VOR 调压下限阈值电流80% * IvorIVOR≥这个值则降压。
#define IVOR_Threshold_Neg(Ivor) ( ( Ivor / 5 ) << 2 ) //VOR 调压下限阈值电流80% * IvorIVOR≥这个值则降压。
#define IVOL_Threshold_Pos(Ivol) ( Ivol ) << 1 //VOL 调压上限阈值电流2倍 * Ivol当Ivol大于THP阈值电流则说明耳机状态发生改变TC跳转到CC或Recharge复充需要重启跟随充。
#define IVOL_Threshold_Pos(Ivol) ( ( Ivol ) << 1 ) //VOL 调压上限阈值电流2倍 * Ivol当Ivol大于THP阈值电流则说明耳机状态发生改变TC跳转到CC或Recharge复充需要重启跟随充。
#define IVOR_Threshold_Pos(Ivor) ( Ivor ) << 1 //VOR 调压上限阈值电流2倍 * Ivor当Ivor大于THP阈值电流则说明耳机状态发生改变TC跳转到CC或Recharge复充需要重启跟随充。
#define IVOR_Threshold_Pos(Ivor) ( ( Ivor ) << 1 ) //VOR 调压上限阈值电流2倍 * Ivor当Ivor大于THP阈值电流则说明耳机状态发生改变TC跳转到CC或Recharge复充需要重启跟随充。
/* PWM Module Setting */
/*PWM计数器时钟Fre(pwm) = Fre(sys)/PWM_PRE = 11.0592M / n^PWM_PRE = 11.0592M / 8 = 1.38MHz,

View File

@ -23,7 +23,7 @@
#include "config.h"
/*Function Select功能选择宏定义*/
//#define SY8838 //ºÏ·âоƬSY8838
//#define SY8837 //ºÏ·âоƬSY8838
#define TIMER1_ENABLE 0 //Timer1 定时周期1ms。(120Bytes)

View File

@ -30,144 +30,144 @@
\******************************************************************************/
/* Boost/Hall/Key/VBUS状态寄存器 - CHIP_STA0 */
#define BOOST_BATUV_Pos (7U)
#define BOOST_BATUV_Pos_Msk (0x1UL << BOOST_BATUV_Pos)
#define BOOST_BATUV_Pos_Msk (0x1U << BOOST_BATUV_Pos)
#define BOOST_BATUV BOOST_BATUV_Pos_Msk
#define BOOST_SHORT_Pos (6U)
#define BOOST_SHORT_Pos_Msk (0x1UL << BOOST_SHORT_Pos)
#define BOOST_SHORT_Pos_Msk (0x1U << BOOST_SHORT_Pos)
#define BOOST_SHORT BOOST_SHORT_Pos_Msk
#define HALL_STATOK_Pos (4U)
#define HALL_STATOK_Pos_Msk (0x1UL << HALL_STATOK_Pos)
#define HALL_STATOK_Pos_Msk (0x1U << HALL_STATOK_Pos)
#define HALL_STATOK HALL_STATOK_Pos_Msk
#define HALL_STAT_Pos (3U)
#define HALL_STAT_Pos_Msk (0x1UL << HALL_STAT_Pos)
#define HALL_STAT_Pos_Msk (0x1U << HALL_STAT_Pos)
#define HALL_STAT HALL_STAT_Pos_Msk
#define HALL_PRE_Pos (2U)
#define HALL_PRE_Pos_Msk (0x1UL << HALL_PRE_Pos)
#define HALL_PRE_Pos_Msk (0x1U << HALL_PRE_Pos)
#define HALL_PRE HALL_PRE_Pos_Msk
#define KEY_STAT_Pos (1U)
#define KEY_STAT_Pos_Msk (0x1UL << KEY_STAT_Pos)
#define KEY_STAT_Pos_Msk (0x1U << KEY_STAT_Pos)
#define KEY_STAT KEY_STAT_Pos_Msk
#define VIN_PRESENT_Pos (0U)
#define VIN_PRESENT_Pos_Msk (0x1UL << VIN_PRESENT_Pos)
#define VIN_PRESENT_Pos_Msk (0x1U << VIN_PRESENT_Pos)
#define VIN_PRESENT VIN_PRESENT_Pos_Msk
/* Abnormal Interrupt Flag Register-IRQ_FLAG0 */
#define DIE_TO_Pos (6U)
#define DIE_TO_Pos_Msk (0x1UL << DIE_TO_Pos)
#define DIE_TO_Pos_Msk (0x1U << DIE_TO_Pos)
#define DIE_TO DIE_TO_Pos_Msk
#define VBUS_OverVol_Pos (5U)
#define VBUS_OverVol_Pos_Msk (0x1UL << VBUS_OverVol_Pos)
#define VBUS_OverVol_Pos_Msk (0x1U << VBUS_OverVol_Pos)
#define VBUS_OverVol VBUS_OverVol_Pos_Msk
#define BAT_Low_Pos (4U)
#define BAT_Low_Pos_Msk (0x1UL << BAT_Low_Pos)
#define BAT_Low_Pos_Msk (0x1U << BAT_Low_Pos)
#define BAT_Low BAT_Low_Pos_Msk
#define VOR_OutPut_Short_Pos (3U)
#define VOR_OutPut_Short_Pos_Msk (0x1UL << VOR_OutPut_Short_Pos)
#define VOR_OutPut_Short_Pos_Msk (0x1U << VOR_OutPut_Short_Pos)
#define VOR_OutPut_Short VOR_OutPut_Short_Pos_Msk
#define VOL_OutPut_Short_Pos (2U)
#define VOL_OutPut_Short_Pos_Msk (0x1UL << VOL_OutPut_Short_Pos)
#define VOL_OutPut_Short_Pos_Msk (0x1U << VOL_OutPut_Short_Pos)
#define VOL_OutPut_Short VOL_OutPut_Short_Pos_Msk
#define Boost_UVLO_Pos (1U)
#define Boost_UVLO_Pos_Msk (0x1UL << Boost_UVLO_Pos)
#define Boost_UVLO_Pos_Msk (0x1U << Boost_UVLO_Pos)
#define Boost_UVLO Boost_UVLO_Pos_Msk
#define Boost_OutPut_Short_Pos (0U)
#define Boost_OutPut_Short_Pos_Msk (0x1UL << Boost_OutPut_Short_Pos)
#define Boost_OutPut_Short_Pos_Msk (0x1U << Boost_OutPut_Short_Pos)
#define Boost_OutPut_Short Boost_OutPut_Short_Pos_Msk
/* Charger Interrupt Flag Register-IRQ_FALG9 */
#define VIN_DPM_Pos (7U)
#define VIN_DPM_Pos_Msk (0x1UL << VIN_DPM_Pos)
#define VIN_DPM_Pos_Msk (0x1U << VIN_DPM_Pos)
#define VIN_DPM VIN_DPM_Pos_Msk
#define Temp_Loop_Pos (6U)
#define Temp_Loop_Pos_Msk (0x1UL << Temp_Loop_Pos)
#define Temp_Loop_Pos_Msk (0x1U << Temp_Loop_Pos)
#define Temp_Loop Temp_Loop_Pos_Msk
#define BAT_OverVol_Pos (5U)
#define BAT_OverVol_Pos_Msk (0x1UL << BAT_OverVol_Pos)
#define BAT_OverVol_Pos_Msk (0x1U << BAT_OverVol_Pos)
#define BAT_OverVol BAT_OverVol_Pos_Msk
#define CHG_Complete_Pos (4U)
#define CHG_Complete_Pos_Msk (0x1UL << CHG_Complete_Pos)
#define CHG_Complete_Pos_Msk (0x1U << CHG_Complete_Pos)
#define CHG_Complete CHG_Complete_Pos_Msk
#define CHG_FastChgTmr_Pos (3U)
#define CHG_FastChgTmr_Pos_Msk (0x1UL << CHG_FastChgTmr_Pos)
#define CHG_FastChgTmr_Pos_Msk (0x1U << CHG_FastChgTmr_Pos)
#define CHG_FastChgTmr CHG_FastChgTmr_Pos_Msk
#define CHG_TricleChgTmr_Pos (2U)
#define CHG_TricleChgTmr_Pos_Msk (0x1UL << CHG_TricleChgTmr_Pos)
#define CHG_TricleChgTmr_Pos_Msk (0x1U << CHG_TricleChgTmr_Pos)
#define CHG_TricleChgTmr CHG_TricleChgTmr_Pos_Msk
#define VBUS_PG_NEG_Pos (1U)
#define VBUS_PG_NEG_Pos_Msk (0x1UL << VBUS_PG_NEG_Pos)
#define VBUS_PG_NEG_Pos_Msk (0x1U << VBUS_PG_NEG_Pos)
#define VBUS_PG_NEG VBUS_PG_NEG_Pos_Msk
#define VBUS_PG_POS_Pos (0U)
#define VBUS_PG_POS_Pos_Msk (0x1UL << VBUS_PG_POS_Pos)
#define VBUS_PG_POS_Pos_Msk (0x1U << VBUS_PG_POS_Pos)
#define VBUS_PG_POS VBUS_PG_POS_Pos_Msk
/* VBUS/HALL and ADC Data Ready Interrupt Flag Register-IRQ_FLAG10 */
#define VBUS_PLUG_OUT_Pos (7U)
#define VBUS_PLUG_OUT_Pos_Msk (0x1UL << VBUS_PLUG_OUT_Pos)
#define VBUS_PLUG_OUT_Pos_Msk (0x1U << VBUS_PLUG_OUT_Pos)
#define VBUS_PLUG_OUT VBUS_PLUG_OUT_Pos_Msk
#define VBUS_PLUG_IN_Pos (6U)
#define VBUS_PLUG_IN_Pos_Msk (0x1UL << VBUS_PLUG_IN_Pos)
#define VBUS_PLUG_IN_Pos_Msk (0x1U << VBUS_PLUG_IN_Pos)
#define VBUS_PLUG_IN VBUS_PLUG_IN_Pos_Msk
#define HALL_NEG_Pos (3U)
#define HALL_NEG_Pos_Msk (0x1UL << HALL_NEG_Pos)
#define HALL_NEG_Pos_Msk (0x1U << HALL_NEG_Pos)
#define HALL_NEG HALL_NEG_Pos_Msk
#define HALL_POS_Pos (2U)
#define HALL_POS_Pos_Msk (0x1UL << HALL_POS_Pos)
#define HALL_POS_Pos_Msk (0x1U << HALL_POS_Pos)
#define HALL_POS HALL_POS_Pos_Msk
#define Standby_Tmr_WkUp_Pos (1U)
#define Standby_Tmr_WkUp_Msk (0x1UL << Standby_Tmr_WkUp_Pos)
#define Standby_Tmr_WkUp_Msk (0x1U << Standby_Tmr_WkUp_Pos)
#define Standby_Tmr_WkUp Standby_Tmr_WkUp_Msk
#define ADC_Data_Ready_Pos (0U)
#define ADC_Data_Ready_Msk (0x1UL << ADC_Data_Ready_Pos)
#define ADC_Data_Ready_Msk (0x1U << ADC_Data_Ready_Pos)
#define ADC_Data_Ready ADC_Data_Ready_Msk
/* Boost/Hall/Key/VBUS Wakeup Flag - WKUP_FLAG0 */
#define TMR_WK_FLAG_Pos (3U)
#define TMR_WK_FLAG_Pos_Msk (0x1UL << TMR_WK_FLAG_Pos)
#define TMR_WK_FLAG_Pos_Msk (0x1U << TMR_WK_FLAG_Pos)
#define TMR_WK_FLAG TMR_WK_FLAG_Pos_Msk
#define HALL_WK_FLAG_Pos (2U)
#define HALL_WK_FLAG_Pos_Msk (0x1UL << HALL_WK_FLAG_Pos)
#define HALL_WK_FLAG_Pos_Msk (0x1U << HALL_WK_FLAG_Pos)
#define HALL_WK_FLAG HALL_WK_FLAG_Pos_Msk
#define KEY_WK_FLAG_Pos (1U)
#define KEY_WK_FLAG_Pos_Msk (0x1UL << KEY_WK_FLAG_Pos)
#define KEY_WK_FLAG_Pos_Msk (0x1U << KEY_WK_FLAG_Pos)
#define KEY_WK_FLAG KEY_WK_FLAG_Pos_Msk
#define VIN_PRESENT_WK_FLAG_Pos (0U)
#define VIN_PRESENT_WK_FLAG_Pos_Msk (0x1UL << VIN_PRESENT_WK_FLAG_Pos)
#define VIN_PRESENT_WK_FLAG_Pos_Msk (0x1U << VIN_PRESENT_WK_FLAG_Pos)
#define VIN_PRESENT_WK_FLAG VIN_PRESENT_WK_FLAG_Pos_Msk
/* Standby 定时唤醒控制寄存器--STB_TIM_CTL */
#define EN_FORCE_LOSC_Pos (7U)
#define EN_FORCE_LOSC_Pos_Msk (0x1UL << EN_FORCE_LOSC_Pos)
#define EN_FORCE_LOSC_Pos_Msk (0x1U << EN_FORCE_LOSC_Pos)
#define EN_FORCE_LOSC EN_FORCE_LOSC_Pos_Msk
#define STB_TMR_EN_Pos (2U)
#define STB_TMR_EN_Pos_Msk (0x1UL << STB_TMR_EN_Pos)
#define STB_TMR_EN_Pos_Msk (0x1U << STB_TMR_EN_Pos)
#define STB_TMR_EN STB_TMR_EN_Pos_Msk
#define STB_TMR_SET_2S (0U)

View File

@ -40,21 +40,11 @@ extern bit Vox_Output_Short_Flag;
#define IVOX_THP 200 //耳机跟随充电流上升阈值
#define VOL_TYPE 0x00
#define VOL_TYPE 0x00
#define VOR_TYPE 0x01
#define VOR_TYPE 0x01
#define VOX_MAX_CHAN 0x02
typedef enum {
VOX_NONE_IN_BOX = 0, //空仓
VOX_GET_INTO_BOX, //耳机入仓
VOX_STAY_IN_BOX, //耳机在仓
}Vox_State_e;
#define VOX_MAX_CHAN 0x02
/*耳机配对状态*/
typedef enum {
@ -79,23 +69,35 @@ extern bit Vox_Output_Short_Flag;
}e_Vox_Paired_State;
#ifdef VOX_COVER_ENABLE
extern bit Vox_Vout_Enable; //Vox功率输出标志位
extern bit Vox_Vout_Enable; //Vox功率输出标志位
extern uint8_t EarPhone_Num;
#else
extern bit Vor_Vout_Enable; //Vor功率输出标志位
extern bit Vol_Vout_Enable; //Vol功率输出标志位
extern bit Vor_GetOut_Box_Flag;
extern bit Vol_GetOut_Box_Flag;
extern Vox_State_e Vor_State;
extern Vox_State_e Vol_State;
typedef enum {
VOX_NONE_IN_BOX = 0, //空仓
VOX_GET_INTO_BOX, //耳机入仓
VOX_STAY_IN_BOX, //耳机在仓
}Vox_State_e;
extern bit Vor_Vout_Enable; //Vor功率输出标志位
extern bit Vol_Vout_Enable; //Vol功率输出标志位
extern bit Vor_GetOut_Box_Flag;
extern bit Vol_GetOut_Box_Flag;
extern Vox_State_e Vor_State;
extern Vox_State_e Vol_State;
#endif
#if VOX_ENABLE
@ -106,65 +108,65 @@ extern bit Vox_Output_Short_Flag;
/*CHIP_STA1<E3h>*/
#define VOX_Sta_Vol_Output_Short_Pos (0U)
#define VOX_Sta_Vol_Output_Short_Pos_Msk (0x1UL << VOX_Sta_Vol_Output_Short_Pos)
#define VOX_Sta_Vol_Output_Short_Pos_Msk (0x1U << 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 VOX_Sta_Vor_Output_Short_Pos_Msk (0x1U << 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 VOX_Sta_Vol_Ioff_Pos_Msk (0x1U << 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 VOX_Sta_Vor_Ioff_Pos_Msk (0x1U << 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 VOX_Sta_Vol_Loadon_Pos_Msk (0x1U << 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 VOX_Sta_Vor_Loadon_Pos_Msk (0x1U << VOX_Sta_Vor_Loadon_Pos)
#define VOR_LoadOn VOX_Sta_Vor_Loadon_Pos_Msk
/* VOL/R Control Register - VOX_CTL0 <B7h> */
#define EN_VOL_ADTL_Pos (0U)
#define EN_VOL_ADTL_Pos_Msk (0x1UL << EN_VOL_ADTL_Pos)
#define EN_VOL_ADTL_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << Vox_Pull_Up_Pos)
#define Vox_Pull_Up Vox_Pull_Up_Pos_Msk
#define Vox_Pull_Up_Deb_Pos (6U)
@ -176,22 +178,22 @@ extern bit Vox_Output_Short_Flag;
#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_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << Vol_Pull_Down_Pos)
#define Vol_Pull_Down Vol_Pull_Down_Pos_Msk
/*自动识别负载电流阈值。*/
#define VOX_ADT_Cur_0_5UA (0x00UL)
#define VOX_ADT_Cur_1_5UA (0x01UL)
#define VOX_ADT_Cur_2_5UA (0x02UL)
#define VOX_ADT_Cur_3_5UA (0x03UL)
#define VOX_ADT_Cur_4_5UA (0x04UL)
#define VOX_ADT_Cur_5_5UA (0x05UL)
#define VOX_ADT_Cur_6_5UA (0x06UL)
#define VOX_ADT_Cur_7_5UA (0x07UL)
#define VOX_ADT_CUR_0_5UA (0x00U)
#define VOX_ADT_CUR_1_5UA (0x01U)
#define VOX_ADT_CUR_2_5UA (0x02U)
#define VOX_ADT_CUR_3_5UA (0x03U)
#define VOX_ADT_CUR_4_5UA (0x04U)
#define VOX_ADT_CUR_5_5UA (0x05U)
#define VOX_ADT_CUR_6_5UA (0x06U)
#define VOX_ADT_CUR_7_5UA (0x07U)
/*
VOX过流档位设置(Vox_init())VOX_CON0
@ -204,80 +206,80 @@ SFRDATA |= (VOX_LIGHT_TO_HAVEY_128 << 2) | VOX_HAVEY_TO_LIGHT_8;
*/
/* VOL/R Misc Config Register,VOX_CON2<6Ch> */
#define Vox_Ioff_2mA (0x00UL)
#define Vox_Ioff_3mA (0x01UL)
#define Vox_Ioff_4mA (0x02UL)
#define Vox_Ioff_5mA (0x03UL)
#define VOX_IOFF_2MA (0x00U)
#define VOX_IOFF_3MA (0x01U)
#define VOX_IOFF_4MA (0x02U)
#define VOX_IOFF_5MA (0x03U)
/*轻载转重载滤波时间配置。*/
#define VOX_LIGHT_TO_HAVEY_1 (0x00UL)
#define VOX_LIGHT_TO_HAVEY_8 (0x01UL)
#define VOX_LIGHT_TO_HAVEY_128 (0x02UL)
#define VOX_LIGHT_TO_HAVEY_256 (0x03UL)
#define VOX_LIGHT_TO_HAVEY_1MS (0x00U)
#define VOX_LIGHT_TO_HAVEY_8MS (0x01U)
#define VOX_LIGHT_TO_HAVEY_128MS (0x02U)
#define VOX_LIGHT_TO_HAVEY_256MS (0x03U)
/*重载转轻载滤波时间配置。*/
#define VOX_HAVEY_TO_LIGHT_0_125 (0x00UL)
#define VOX_HAVEY_TO_LIGHT_1 (0x01UL)
#define VOX_HAVEY_TO_LIGHT_8 (0x02UL)
#define VOX_HAVEY_TO_LIGHT_64 (0x03UL)
#define VOX_HAVEY_TO_LIGHT_0_125MS (0x00U)
#define VOX_HAVEY_TO_LIGHT_1MS (0x01U)
#define VOX_HAVEY_TO_LIGHT_8MS (0x02U)
#define VOX_HAVEY_TO_LIGHT_64MS (0x03U)
/* VOL/R Comm Control Register,COMM_CTL<BDh> */
#define Vor_EN_COMR_Pos (7U)
#define Vor_EN_COMR_Pos_Msk (0x1UL << Vor_EN_COMR_Pos)
#define Vor_EN_COMR_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << Vol_SWDR_Pos)
#define Vol_SWDR Vol_SWDR_Pos_Msk
/* VOL/R Comm TRx Data Register,COMM_DAT<BEh> */
#define Vor_COMR_RX_Pos (5U)
#define Vor_COMR_RX_Pos_Msk (0x1UL << Vor_COMR_RX_Pos)
#define Vor_COMR_RX_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << 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_Pos_Msk (0x1U << 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_Pos_Msk (0x00U)
#define Vox_COMM_PULL_Vol_2_5_Pos_Msk (0x01U)
#define Vox_COMM_PULL_Vol_3_0_Pos_Msk (0x02U)
#define Vox_COMM_PULL_Vol_5_0_Pos_Msk (0x03U)
#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)
@ -285,179 +287,34 @@ SFRDATA |= (VOX_LIGHT_TO_HAVEY_128 << 2) | VOX_HAVEY_TO_LIGHT_8;
#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_Pos_Msk (0x1U << Vox_Pull_Up_50k_Pos)
#define Vox_Pull_Up_50k Vox_Pull_Up_50k_Pos_Msk
#if XUANHENG
#define BOXHEADER 0xAA //VOX通讯数据包头
#define BOXHEADER (0xAAU) //VOX通讯数据包头
#else
#define BOXHEADER 0x55AA //VOX通讯数据包头
#define BOXHEADER (0x55AAUL) //VOX通讯数据包头
#define EARPHONE_HEADER_HIGH 0x55
#define EARPHONE_HEADER_LOW 0xAA
#define EARPHONE_HEADER_HIGH (0x55U)
#define EARPHONE_HEADER_LOW (0xAAU)
#define BOXIDCODE 0xFF //VOX通讯耳机->仓数据包头
#define BOXIDCODE (0xFFU) //VOX通讯耳机->仓数据包头
#endif
#define Vox_TX_Interval 2 //Vox定时发送指令时间间隔
#define Vox_TX_Interval (2U) //Vox定时发送指令时间间隔
#define Vox_TX_Interval_2 4
#define Vox_TX_Interval_2 (4U)
#define TIM_SHUTDOWN_DEBOUNCE 600 //关机前debounce时间
#define TIM_SHUTDOWN_DEBOUNCE (600UL) //关机前debounce时间
/******************************************************************************\
Variables definitions
\******************************************************************************/
/*耳机通道选择*/
#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_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_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;
#elif XUANHENG
/*耳机通道选择*/
#define TWS_VOL 0x04
#define TWS_VOR 0x05
#define TWS_BOX 0x02
#define TWS_PC 0x03
typedef enum {
VOL_CHAN = 0x24,
VOR_CHAN = 0x25,
VOX_BOTH = 0x21,
}e_Vox_Chan;
/*耳机和充电仓进行双向通讯的协议命令ID。*/
typedef enum _VOX_BES_COMMAND_E
{
CMD_SHUT_DOWN = 0x0005, //关机
CMD_TWS_GET_BTADDR = 0x0037, //获取对耳MAC地址
CMD_TWS_SET_BTADDR = 0x000A, //写入对耳MAC地址
CMD_CLEAR_PAIR = 0x000B, //清除配对记录
CMD_HEARTBEAT = 0x000D, //心跳包
CMD_SN = 0x000E, //写入SN码到耳机
CMD_GET_INTO_PAIR = 0x000F, //耳机进入配对状态
CMD_PAIRING_IMD = 0x0011, //立即执行TWS配对
BES_RESET, //耳机复位Pattern
}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 {
@ -496,18 +353,11 @@ 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
extern uint8_t Vox_Get_Vbat_Flag[2]; //耳机配对状态VOL:低4bitVOR:高4bit。0是无效1是正在配对2是配对成功3不处理保持当前状态。
extern uint8_t Vox_Get_BES_Addr_Flag[2] ;
#endif
#if VOX_FOLLOW_CHG
typedef struct {
@ -551,11 +401,10 @@ extern g_Vox_Fllow_Chg_Cfg xdata Vox_Fllow_Chg;
UserCfg.Functions definitions
\******************************************************************************/
extern void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select);
#ifdef VOX_ADT_ENABLE
extern void Vol_Det_Machine(void);
extern void Vor_Det_Machine(void);
#else
@ -565,18 +414,23 @@ extern void Vox_Det_Machine(void);
#endif
#if VOX_FOLLOW_CHG
extern void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg );
#endif
#ifdef VOX_ADT_ENABLE
extern void VOL_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode);
extern void VOR_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode);
#else
extern void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode);
#endif
#ifdef VOX_RX
extern void HandleVoxCommMsg(void);
#endif
#endif

View File

@ -50,6 +50,8 @@ uint8_t gConstant_Cur_Max_Setting; //Charge
idata s_gCharger_Cfg gCharge_Cfg;
uint16_t VFloat_Value;
/******************************************************************************\
Functions definitions
\******************************************************************************/
@ -71,17 +73,11 @@ idata s_gCharger_Cfg gCharge_Cfg;
void Charger_Init(void)
{
SFRADDR = PMU_CTL7; //开启VBUS OV检测使能
SFRDATA |= 0x20;
#ifdef SY8838Q //合封OVP芯片SY8838Q
#ifdef SY8837 //非合封OVP芯片SY8837
SFRADDR = PMU_CTL7; //合封芯片关闭VBUS OV检测使能
SFRDATA &= ~0x20;
SFRADDR = REG_CHG0;
SFRDATA |= CHG_VDPM_En; //合封关VDPM环
SFRDATA |= 0x20;
#endif
@ -99,11 +95,13 @@ void Charger_Init(void)
gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting;
gCharge_Cfg.nVFloat = VFLOAT_SET;
gCharge_Cfg.nVFloat = VFLOAT_SET;
REG_CHG1 = gCharge_Cfg.nTrickle_Cur | gCharge_Cfg.nIterm_Cur | gCharge_Cfg.nConstant_Cur ; //设置Charger的涓流充电电流、截止充电电流、恒流CC。
REG_CHG2 = gCharge_Cfg.nVFloat;
VFloat_Value = VFLOAT_VOLTAGE_SET;
}
#ifdef NTC_ENABLE
@ -164,7 +162,7 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
{
NTC_250mA_Chg_Flag = TRUE;
gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting / 2;
gCharge_Cfg.nConstant_Cur = CONSTANT_JEITA_COLD;
if( NTC_500mA_Chg_Flag )
{
@ -199,7 +197,7 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
}
else
{
gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting / 2;
gCharge_Cfg.nConstant_Cur = CONSTANT_JEITA_COLD;
}
}
@ -579,14 +577,8 @@ void Charger_Handler(void)
if( IRQ_FLAG9 & CHG_Complete ) //Charg complete interrupt
{
#if ADC_ENABLE
if( gCharge_Cfg.nVFloat == CHG_VFLOAT_4_200V )
{
nCVFloat = 4200;
}
else
{
nCVFloat = 4000;
}
nCVFloat = VFloat_Value; //浮充电压实际电压值。
if( g_Vbat_Adc < ( nCVFloat - BAT_RECHARG_THD ) ) //仓复充
{

970
UsrSrc/comm/vox_comm.c Normal file
View File

@ -0,0 +1,970 @@
/*
******************************************************************************
*
* @file vox_comm.c
* @brief VOX Communicate module
* @ic sy8837/8/9
*
* @version 1.0
* @date 2025/02/13 017:40:40
* @author Alex Xu
*
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
* All Rights Reserved
*
* History:
* Revision Date Author Desc
* 1.0.0 2025/02/13 Alex build this file
******************************************************************************
*/
/*_____ I N C L U D E S ____________________________________________________*/
#include "vox_module.h"
#include "vox_comm.h"
#include "system.h"
#include "vox_comm.h"
#include "bat.h"
#include "hall.h"
/******************************************************************************\
Macro definitions
\******************************************************************************/
#define MAX_PACKET_SIZE 0x20
/******************************************************************************\
Variables definitions
\******************************************************************************/
#if XUANHENG
idata uint8_t Vox_Pairing_State[2]; //耳机配对状态0是无效1是正在配对2是配对成功3不处理保持当前状态。
uint8_t Vox_Set_BES_Addr_Flag[2];
idata uint8_t BES_Addr[6]; //蓝牙耳机地址Vox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR
idata uint8_t Random_Data[8];
uint8_t Bes_Bet_Level[2]; //对耳电池电量信息Bes_Bet_Level[0]左耳Bes_Bet_Level[1]:右耳
uint8_t Bes_Chg_Full[2]; //对耳硬件是否满电0非满电1满电。
uint8_t Tws_Paired_Record[2]; //TWS配对记录0有TWS配对记录1没有TWS配对记录
uint8_t Phone_Paired_Record[2]; //手机配对记录0有与手机配对记录1没有和手机配对记录。
uint8_t Bes_OTA_State[2]; //耳机静默升级状态10没有
uint8_t Bes_Set_SN_State[2]; //耳机应答仓写入SN是否成功。1成功0失败
uint8_t Bes_In_Pair_State[2]; //耳机进入配对状态标志位
uint8_t Vox_Clear_Pair_Flag[2];
bit Vol_Bes_Addr_Flag;
bit Vor_Bes_Addr_Flag;
idata uint8_t SN_Num[22]; //SN码需要从OTP的固定位置获取。
idata uint8_t SN_Num_Start; //SN码发送起始位置有开盖动作时清零。
bit gShip_Mode_Flag; //船运模式标志位0正常关机1船运模式
#elif JIELI
uint8_t Vox_Type;
uint8_t Net_Info[2][13];
idata uint8_t MAC_Addr[2][18];
uint8_t Earphone_Vbat[2]; //对耳电量
#endif
#ifdef VOX_RX
uint8_t Vox_Get_Vbat_Flag[2]; //耳机配对状态VOL:低4bitVOR:高4bit。0是无效1是正在配对2是配对成功3不处理保持当前状态。
uint8_t Vox_Get_BES_Addr_Flag[2];
//idata uint8_t BES_Addr[6] = {0}; //蓝牙耳机地址Vox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR
#endif
/******************************************************************************\
Functions definitions
\******************************************************************************/
#if XUANHENG
/*
*******************************************************************************
* u16 CalCheckCrc16(u8 * pucFrame, u16 usLen)
*
* Description : (CRC-16-CCITT-FALSE)
*
*
* Arguments : u8 *pucFrame:
u16 usLen: , byte为单位
* Returns :
*
* Notes :
*
*******************************************************************************
*/
uint16_t CalCheckCrc16(uint8_t *pucFrame, unsigned int usLen)
{
uint16_t wCRCin = 0xFFFF;
uint16_t wCPoly = 0x1021;
uint8_t wChar = 0;
unsigned int i;
while (usLen--)
{
wChar = *(pucFrame++);
wCRCin ^= (wChar << 8);
for(i = 0;i < 8;i++)
{
if(wCRCin & 0x8000)
{
wCRCin = (wCRCin << 1) ^ wCPoly;
}
else
{
wCRCin = wCRCin << 1;
}
}
}
return (wCRCin);
}
#else
/*
*******************************************************************************
* uint8_t Crc8Maxim(u8 *buf, u8 length)
*
* Description :
*
*
* Arguments : u8 *buf:
u8 length: , byte为单位
* Returns :
*
* Notes :
*
*******************************************************************************
*/
uint8_t Crc8Maxim(u8 *buf, u8 length)
{
u8 i;
u8 crc = 0;
while(length--)
{
crc ^= *buf++;
for(i=0;i<8;i++)
{
if( crc&1 )
{
crc = (crc >> 1)^0x8c;
}
else
{
crc >>= 1;
}
}
}
return crc;
}
#endif
#ifdef VOX_TX
/*
*******************************************************************************
* void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select)
*
* Description :
* Command payload
* Header checksum side cmd len Data
* 1bytes 1byte 1byte 1byte 1byte Len bytes
*
* Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select
* Returns :
*
* Notes :
*
*******************************************************************************
*/
void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select)
{
uint16_t dataLen = 0;
uint8_t tx_pData[COM1_Data_Lenth] = 0;
uint8_t i = 0;
#if JIELI
/*数据包头*/
tx_pData[0] = 0x00;
tx_pData[1] = BOXHEADER>>8;
tx_pData[2] = BOXHEADER;
/*指令编号*/
tx_pData[4] = TxCommand;
Vox_Type = nVox_Chn_Select;
switch(TxCommand)
{
case VHOUSE_CMD_PAIR:
/*Data Length*/
tx_pData[3] = 0x02;
if( nVox_Chn_Select == VOL_CHAN )
{
tx_pData[5] = 0x02;
Vox_Get_BES_Addr_Flag[VOL_TYPE] = 0;
}
else
if( nVox_Chn_Select == VOR_CHAN )
{
tx_pData[5] = 0x01;
Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0;
}
break;
case VHOUSE_CMD_EXCH_TWS_BTADDR:
/*Data Length*/
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<13;i++)
{
tx_pData[i] = Net_Info[nVox_Chn_Select][i];
}
break;
case VHOUSE_CMD_CLEAR_PAIR:
/*Data Length*/
tx_pData[3] = 0x02;
tx_pData[5] = 0x03;
break;
case VHOUSE_CMD_CLOSE_WIN_GET_VBAT: //和开盖命令一样。
case VHOUSE_CMD_OPEN_BOX: //开盖获取电量命令
/*Data Length*/
tx_pData[3] = 0x05;
tx_pData[5] = FW_VER; //Version
tx_pData[6] = bat_level * 5; //电仓电量值 0~100
tx_pData[7] = MAX_PACKET_SIZE; //max_packet_size:0x20
if( nVox_Chn_Select == VOL_CHAN )
{
if( Earphone_Vbat[VOL_CHAN] == 0 )
{
tx_pData[8] = 0xFF;
}
else
{
tx_pData[8] = Earphone_Vbat[VOR_CHAN];
}
}
else
if( nVox_Chn_Select == VOR_CHAN )
{
if( Earphone_Vbat[VOR_CHAN] == 0 )
{
tx_pData[8] = 0xFF;
}
else
{
tx_pData[8] = Earphone_Vbat[VOL_CHAN];
}
}
break;
case VHOUSE_CMD_PWROFF:
/*Data Length*/
tx_pData[3] = 0x01;
break;
case VHOUSE_CMD_CLOSE_BOX: //关盖指令
/*Data Length*/
tx_pData[3] = 0x02;
tx_pData[5] = EarPhone_Num; //耳机个数
break;
default:
break;
}
dataLen = 4 + tx_pData[3];
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 ) << 6 ) | bat_level; //bit 0~6 表示充电仓电量值 0~100bit 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<COM1_Data_Lenth;i++)
{
tx_pData[i] = RX1_Buffer[i];
}
#endif
break;
case VHOUSE_CMD_CLEAR_PAIR:
/*Data Length*/
tx_pData[4] = 0x01;
break;
case VHOUSE_CMD_CLOSE_WINDOW:
/*Data Length*/
tx_pData[4] = 0x01;
break;
case VHOUSE_CMD_PWROFF:
/*Data Length*/
tx_pData[4] = 0x01;
break;
default:
break;
}
dataLen = tx_pData[4] + 5;
tx_pData[dataLen] = Crc8Maxim(tx_pData,dataLen);
#elif XUANHENG
uint16_t Checksum = 0;
/*数据包头*/
tx_pData[0] = BOXHEADER;
/*耳机通道*/
tx_pData[1] = nVox_Chn_Select; /*传输方向Bit0-3接收端Bit4-7发送端
1
2
3PC/
4
5
*/
/*指令编号*/
tx_pData[2] = TxCommand;
tx_pData[3] = TxCommand >> 8; /*小端模式:低字节在前
Bit0-7
Bit8-14
Bit15:
0:REQ
1:ACK
*/
tx_pData[4] = CoverStatus; //开关盒状态
switch(TxCommand)
{
case CMD_TWS_GET_BTADDR: //获取耳机MAC地址
/*Data Length*/
tx_pData[5] = 0x00; //小端模式低位在前长2Bytes。
tx_pData[6] = 0x00;
#ifdef VOX_RX
for(i=0;i<6;i++)
{
BES_Addr[i] = 0; //清本地耳机蓝牙地址。
}
#endif
break;
case CMD_TWS_SET_BTADDR:
/*Data Length*/
tx_pData[5] = 0x0E; //小端模式低位在前长2Bytes。
tx_pData[6] = 0x00;
#ifdef VOX_RX
for(i=0;i<6;i++)
{
tx_pData[7+i] = BES_Addr[i]; //发送耳机蓝牙地址。
}
#endif
for(i=0;i<8;i++)
{
tx_pData[13+i] = Random_Data[i]; //发送随机数。
}
break;
case CMD_SHUT_DOWN:
/*Data Length*/
tx_pData[5] = 0x01; //小端模式低位在前长2Bytes。
tx_pData[6] = 0x00;
tx_pData[7] = gShip_Mode_Flag; //船运模式0正常关机1船运模式
break;
case CMD_PAIRING_IMD: //立即执行TWS配对
/*Data Length*/
tx_pData[5] = 0x00; //小端模式低位在前长2Bytes。
tx_pData[6] = 0x00;
break;
case CMD_CLEAR_PAIR:
/*Data Length*/
tx_pData[5] = 0x00; //小端模式低位在前长2Bytes。
tx_pData[6] = 0x00;
break;
case CMD_HEARTBEAT:
/*Data Length*/
tx_pData[5] = 0x05; //小端模式低位在前长2Bytes。
tx_pData[6] = 0x00;
/*
data定义
1D0D12BytesD0的高4bit为充电盒硬件PCBA版本号D0低4bit和D1构成充电盒软件版本号
2D21ByteD2的bit7为是否有PG接入D2的低7位表示充电盒电量信息0-100;
3D31ByteSide信息区分左右耳电量信息
4D41Byte0x00
*/
tx_pData[7] = HW_VER << 4;
tx_pData[7] |= FW_VER >> 8;
tx_pData[8] = FW_VER;
tx_pData[9] = ( ( ChgStatus & CHG_STA_ING ) << 6 ) | ( 5 * bat_level );
if(nVox_Chn_Select == VOL_CHAN)
{
tx_pData[10] = Bes_Bet_Level[0];
}
else
if(nVox_Chn_Select == VOR_CHAN)
{
tx_pData[10] = Bes_Bet_Level[1];
}
tx_pData[11] = 0x00;
break;
case CMD_SN: //由于SN码较长充电盒需分多次发送D0表示充第几位开始发送一次固定发送9Bytes。最后一包SN数据不够9Bytes的补0或0xff。
/*Data Length*/
tx_pData[5] = 0x0A; //小端模式低位在前长2Bytes。
tx_pData[6] = 0x00;
tx_pData[7] = SN_Num_Start;
for(i=0;i<9;i++)
{
if( (SN_Num_Start + i) > 22 )
{
tx_pData[8+i] = 0xFF;
}
else
{
tx_pData[8+i] = SN_Num[ SN_Num_Start + i ]; //发送随机数。
}
}
SN_Num_Start += 9;
break;
case CMD_GET_INTO_PAIR:
/*Data Length*/
tx_pData[5] = 0x01; //小端模式低位在前长2Bytes。
tx_pData[6] = 0x00;
tx_pData[7] = 0x01; //01进入配对状态
break;
case BES_RESET: //复位patten
return;
default:
break;
}
dataLen = (uint16_t)( tx_pData[5] | ( tx_pData[6] << 8 ) ) + 7;
Checksum = CalCheckCrc16( tx_pData, dataLen ); //计算检验和
tx_pData[ dataLen ] = Checksum;
tx_pData[ ++dataLen ] = Checksum >> 8;
#endif
/* vor、vol都使用uart1进行分时通讯设置TX模式*/
#ifdef VOX_ADT_ENABLE
if(nVox_Chn_Select == VOL_CHAN)
{
VOL_EN_Type( VOX_COMM_Mode_Uart );
}
else
{
VOR_EN_Type( VOX_COMM_Mode_Uart );
}
#else
VOX_EN_Type( VOX_COMM_Mode_Uart );
#endif
if(nVox_Chn_Select == VOL_CHAN)
{
COMM_CTL |= Vol_SWDT;
COMM_CTL &= ~Vol_SWDR;
}
else
if(nVox_Chn_Select == VOR_CHAN)
{
COMM_CTL |= Vor_SWDT;
COMM_CTL &= ~Vor_SWDR;
}
else
if(nVox_Chn_Select == VOX_BOTH)
{
COMM_CTL |= Vor_SWDT | Vol_SWDT;
COMM_CTL &= ~( Vor_SWDR |Vol_SWDR );
}
#if UART1_ENABLE
Uart1SendPacket(dataLen + 2, tx_pData);
#endif
/* 设置RX模式。 */
if(nVox_Chn_Select == VOL_CHAN)
{
COMM_CTL &= ~ Vol_SWDT;
COMM_CTL |= Vol_SWDR;
}
else
if(nVox_Chn_Select == VOR_CHAN)
{
COMM_CTL &= ~Vor_SWDT;
COMM_CTL |= Vor_SWDR;
}
else
if(nVox_Chn_Select == VOX_BOTH)
{
COMM_CTL &= ~Vor_SWDT | Vol_SWDT;
COMM_CTL |= ( Vor_SWDR |Vol_SWDR );
}
}
#endif
#ifdef VOX_RX
/*
*******************************************************************************
* void HandleRxCommand(VOX_BES_COMMAND_E RxCommand)
*
* Description :
* Ack payload:
* Header checksum side cmd len Data
* 1bytes 1byte 1byte 1byte 1byte Len bytes
*
* Arguments : VOX_BES_COMMAND_E RxCommand:
* Returns :
*
* Notes :
*
*******************************************************************************
*/
static void HandleRxMsg(VOX_BES_COMMAND_E RxCommand)
{
uint8_t i = 0;
#if JIELI
switch(RxCommand)
{
case VHOUSE_CMD_PAIR:
for(i=0;i<18;i++)
{
MAC_Addr[Vox_Type][i] = RX1_Buffer[4+i];
}
for(i=0;i<8;i++)
{
Net_Info[Vox_Type][i] = RX1_Buffer[22+i];
}
if( Vox_Type == VOL_CHAN ) //根据耳机Side参数
{
Vox_Get_BES_Addr_Flag[VOL_TYPE] = 1; //获取左耳机发的CMD3
}
else
{
Vox_Get_BES_Addr_Flag[VOR_TYPE] = 1; //获取右耳机发的CMD3
}
break;
case VHOUSE_CMD_EXCH_TWS_BTADDR:
break;
case VHOUSE_CMD_OPEN_BOX:
case VHOUSE_CMD_CLOSE_WIN_GET_VBAT:
if( RX1_Buffer[4] == 0xE3 ) //根据耳机Side参数
{
Vox_Get_Vbat_Flag[VOL_TYPE] = 1; //获取左耳机发的Vbat
Earphone_Vbat[VOL_CHAN] = RX1_Buffer[5];
}
else
{
Vox_Get_Vbat_Flag[VOR_TYPE] = 1; //获取右耳机发的Vbat
Earphone_Vbat[VOR_CHAN] = RX1_Buffer[5];
}
break;
case VHOUSE_CMD_CLOSE_BOX:
break;
case VHOUSE_CMD_PWROFF:
break;
default:
break;
}
#elif ZHONGKE
switch(RxCommand)
{
case VHOUSE_CMD_GET_VBAT:
case VHOUSE_CMD_CLOSE_WINDOW:
case VHOUSE_CMD_OPEN_WINDOW:
case VHOUSE_CMD_CLOSE_WIN_GET_VBAT:
break;
case VHOUSE_CMD_SUCCESS:
break;
case VHOUSE_CMD_GET_TWS_BTADDR:
if( RX1_Buffer[5] == VOL_CHAN ) //根据耳机Side参数
{
Vox_Get_BES_Addr_Flag[VOL_TYPE] = 1; //获取左耳机发的CMD3
}
else
{
Vox_Get_BES_Addr_Flag[VOR_TYPE] = 1; //获取右耳机发的CMD3
}
break;
case VHOUSE_CMD_SYS_RST: //系统复位,耳机->充电仓
break;
default:
break;
}
#elif XUANHENG
uint8_t CMD_Type = 0;
CMD_Type = RX1_Buffer[1] >> 4;
if( CMD_Type & TWS_PC ) //PC/工装->盒子
{
}
else //耳机->盒子
{
switch(RxCommand)
{
case CMD_TWS_GET_BTADDR:
for(i=0;i<RX1_Buffer[5];i++)
{
BES_Addr[i] = RX1_Buffer[i+7]; //获取耳机MAC地址。
}
if( CMD_Type == TWS_VOL ) //根据耳机Side参数
{
Vox_Get_BES_Addr_Flag[VOL_TYPE] = 1; //左耳机蓝牙地址写入是否成功状态标志
}
else
{
Vox_Get_BES_Addr_Flag[VOR_TYPE] = 1; //右耳机蓝牙地址写入是否成功状态标志
}
break;
case CMD_SHUT_DOWN:
break;
case CMD_TWS_SET_BTADDR:
if( CMD_Type == TWS_VOL ) //根据耳机Side参数
{
Vox_Set_BES_Addr_Flag[VOL_TYPE] = RX1_Buffer[7]; //左耳机蓝牙地址写入是否成功状态标志
}
else
{
Vox_Set_BES_Addr_Flag[VOR_TYPE] = RX1_Buffer[7]; //右耳机蓝牙地址写入是否成功状态标志
}
break;
case CMD_CLEAR_PAIR: //按键长按10s发送此命令。
if( CMD_Type == TWS_VOL ) //根据耳机Side参数
{
Vox_Clear_Pair_Flag[VOL_TYPE] = 1; //左耳机蓝牙地址写入是否成功状态标志
}
else
{
Vox_Clear_Pair_Flag[VOR_TYPE] = 1; //右耳机蓝牙地址写入是否成功状态标志
}
break;
case CMD_HEARTBEAT:
if( CMD_Type == TWS_VOL ) //根据耳机Side参数
{
Bes_Bet_Level[VOL_TYPE] = RX1_Buffer[9] & 0x7F; //获取耳机电量
Bes_Chg_Full[VOL_TYPE] = RX1_Buffer[9] >> 7; //获取耳机是否满电
Vox_Pairing_State[VOL_TYPE] = RX1_Buffer[10]; //获取耳机配对状态;
Tws_Paired_Record[VOL_TYPE] = RX1_Buffer[11] & 0x01; //bit0:0有TWS配对记录1没有TWS配对记录bit1:0有与手机配对记录1没有和手机配对记录。
Phone_Paired_Record[VOL_TYPE] = ( RX1_Buffer[11] >> 1 ) & 0x01;
Bes_OTA_State[VOL_TYPE] = RX1_Buffer[12];
}
else
{
Bes_Bet_Level[VOR_TYPE] = RX1_Buffer[9] & 0x7F;
Bes_Chg_Full[VOR_TYPE] = RX1_Buffer[9] >> 7;
Vox_Pairing_State[VOR_TYPE] = RX1_Buffer[10];
Tws_Paired_Record[VOR_TYPE] = RX1_Buffer[11] & 0x01;
Phone_Paired_Record[VOR_TYPE] = (RX1_Buffer[11] >> 1) & 0x01;
Bes_OTA_State[VOR_TYPE] = RX1_Buffer[12];
}
break;
case CMD_SN:
if( CMD_Type == TWS_VOL ) //根据耳机Side参数
{
Bes_Set_SN_State[VOL_TYPE] = RX1_Buffer[7]; //左耳机SN写入是否成功状态标志
}
else
{
Bes_Set_SN_State[VOR_TYPE] = RX1_Buffer[7]; //右耳机SN写入是否成功状态标志
}
break;
case CMD_GET_INTO_PAIR:
if( CMD_Type == TWS_VOL ) //根据耳机Side参数
{
Bes_In_Pair_State[VOL_TYPE] = RX1_Buffer[7]; //左耳机是否进入配对状态成功状态标志
}
else
{
Bes_In_Pair_State[VOR_TYPE] = RX1_Buffer[7]; //右耳机是否进入配对状态成功状态标志
}
break;
case CMD_PAIRING_IMD:
if( CMD_Type == TWS_VOL ) //根据耳机Side参数
{
Bes_In_Pair_State[VOL_TYPE] = 1; //左耳机是否进入配对状态成功状态标志
}
else
{
Bes_In_Pair_State[VOR_TYPE] = 1; //右耳机是否进入配对状态成功状态标志
}
break;
default:
break;
}
}
#endif
}
/*
*******************************************************************************
* void HandleVoxCommMsg(void)
*
* Description : Vox 100ms定时调用TRX功能VOL/VOR通信开关进行通信
*
* Arguments : NONE
* Returns : NONE
* Notes : NONE
*
*******************************************************************************
*/
void HandleVoxCommMsg(void)
{
uint8_t i = 0;
#if XUANHENG
uint16_t CrcCheckSum = 0;
uint16_t Data_Len = 0;
#else
uint8_t CrcCheckSum = 0;
#endif
/*RX数据处理*/
if( Uart1_RX_Finish_Flag )
{
Uart1_RX_Finish_Flag = FALSE;
#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
#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 ] )
#elif XUANHENG
Data_Len = RX1_Buffer[5] | ( RX1_Buffer[6] << 8 ) + 7;
CrcCheckSum = CalCheckCrc16( RX1_Buffer, Data_Len); //计算检验和
if( CrcCheckSum == (uint16_t)(RX1_Buffer[ Data_Len + 1 ] | RX1_Buffer[ Data_Len + 2 ] << 8) ) //校验和小端模式,低位在前。
#endif
{
#if XUANHENG
HandleRxMsg((VOX_BES_COMMAND_E)RX1_Buffer[2]);
#else
HandleRxMsg((VOX_BES_COMMAND_E)RX1_Buffer[3]);
#endif
}
else
{
return;
}
}
}
#endif

View File

@ -28,6 +28,7 @@
#include "hall.h"
#include "discharge_module.h"
#include "display_ui.h"
#include "vox_comm.h"
#if KEY_ENABLE
/******************************************************************************\

View File

@ -163,12 +163,15 @@ void System_Init(void)
WakeUp_Init_Set();
#endif
Decnt_SleepDelay = ENTER_STANDBYMODE_CNT;
Boost_Open_Flag = FALSE;
#ifdef VOX_ADT_ENABLE
Vol_GetOut_Box_Flag = TRUE;
Vor_GetOut_Box_Flag = TRUE;
#endif
Systerm_State.Next_State = POWER_ON_STATE;
}

View File

@ -31,6 +31,7 @@
#include "led.h"
#include "vox_module.h"
#include "display_ui.h"
#include "vox_comm.h"
/******************************************************************************\
Macro definitions

File diff suppressed because it is too large Load Diff