更改内容:1、将部分配置参数移植于config.h文件中;2、将充分电NTC保护标志位区分开;3、增加玄恒耳机芯片双向通讯协议。

This commit is contained in:
Alex xu 2025-01-08 19:47:07 +08:00
parent 38462399b2
commit 73b823b48a
25 changed files with 1879 additions and 1156 deletions

Binary file not shown.

View File

@ -1,957 +0,0 @@
:03000000022AC50C
:102AC50075FE7275FF00758E009000007F007E0315
:0D2AD500E4F0A3DFFCDEFA7581BA022B1DD0
:0F35FD0053797374656D20496E69742E0D0A0041
:103546001232157BFF7A3579FD120F66D2AED2BEE6
:08355600122DFC12311880F463
:101FAC004100ED004100EE0002B9000002B5000056
:101FBC0002B300004100EF0002A7000002AD0000D8
:101FCC0002B7000002B1000002AF000002A900003D
:041FDC0002AB000054
:0936810078B5E6FE08E6780222A5
:10348C0075FE3175FF8175FE0E43FF107DAB7F30ED
:0D349C001236A375FE599000EDE5FFF022F9
:1029C600900000EFF0E5A420E003022AB975A40107
:1029D6007F351236AA78B5760008A6077F361236F6
:1029E600AAEF540378B546F608E6F6900000E044F0
:1029F60008FD7F311232D89000EDE0FF3395E0FEFE
:102A0600C378B6E69FFF18E69EFE7C097DC41215C4
:102A160046780A1214E478B5A60608A6079000EFD1
:102A2600E01215202A46002A54012A5D022A700364
:102A36002A7E042A8C052A9A062AA90700002AB9A2
:102A4600123681CEC313CE13D8F979A8806178B631
:102A5600E625E079BA804478B5E6FE08E67803C351
:102A660033CE33CED8F979AE8045123681C333CE14
:102A760033CED8F979B88037123681C333CE33CE08
:102A8600D8F979B28029123681C333CE33CED8F93C
:102A960079B0801B78B6E625E079AAF718E63319EF
:102AA600F78010123681CEC313CE13D8F979ACF75E
:0F2AB600EE19F7900000E09000EFF075A3812279
:10315A00E5A430E13675A4027F371236AA78B37631
:10316A000008A6077F381236AAEF540378B346FE42
:10317A0008E6FF18EEF608EFF6FF9000EDE0FD33E3
:0F318A0095E0FCC3EF9DF6EE9C18F675A382222C
:051FE000C122010D0308
:1035B800E4780FF67811F6780DE67810F67812763A
:0235C8000422DB
:1024F600E4FE78B3E6FC08E6FDC394D8EC9403400A
:10250600037F0022EF700302260ED3ED940FEC94A6
:102516000340030225ECED94CBEC94005003022516
:10252600ECD3ED94AAEC94024022D220780DE6FF7B
:10253600137810F6302111D3ED94BFEC94024004C9
:10254600C22180047810A607E4FE8070D3ED94AA19
:10255600EC94025043ED9437EC9401403BD2217841
:102566000DE6FF7810F6302013D3ED9493EC940229
:102576005004C2208006EFC3137810F67812760452
:10258600301B11D3ED9451EC94015004C21B80040E
:1025960078127601E4FE8024D3ED9437EC94015052
:1025A6001BD21B78127601302110ED9426EC940193
:1025B6005004C221800478127604E4FE301E11C352
:1025C600ED94F3EC94025006C21EE4FE80027E01F6
:1025D600301F2FD3ED94DDEC94004006C21FE4FEBD
:1025E60080207E01801CD3ED940FEC94034006D22C
:1025F6001E7E01800DD3ED94CBEC94005004D21FC7
:102606007E01C21CC21D8058C21EC21FD3ED949FFC
:10261600EC94035031ED9471EC94004029301C1079
:10262600ED9484EC94035006C21CE4FE80027E0105
:10263600301D2DD3ED9482EC94004006C21DE4FEBD
:10264600801E7E01801AD3ED949FEC94034004D241
:102656001C800BC3ED9471EC94005002D21D7E01D8
:02266600AF06BD
:01266800224F
:102BF7009000EAE05463600AE4FF12336CE4780E55
:102C0700F622780E76017F011224F6EF6008E4FFC2
:102C170012336CD22222C2229000EBE05407FFBF8E
:102C27000605780E7603227810E6FD7F221232D849
:102C37007812E6FD7F211232D8780FE6C454F07877
:102C47001146FD7F231232D87F0112336C7814E6C8
:102C5700FFD394014002C23CEFD394034002C23831
:102C6700EFD394074002C23AEFD3940C4002C23923
:0D2C7700EFD394114002C23B780E7602228A
:041FE500C140C141F5
:102EC100C2409000EAE020E65130E203D2412230D4
:102ED1003C04E4FF80119000EAE030E50D30243A33
:102EE1007F3C1235137F0102338EE4FF1224F6EF8B
:102EF1006008E4FF12338ED22222C222D240304136
:102F010019780EE6B40213C378BAE6941018E69461
:0B2F11000E4005D240C24122C2402207
:10352D00426F78204F70656E2E0D0A00426F782025
:09353D00436C6F73652E0D0A004A
:081FE900C142C1434100F1FFB8
:102F7700E4900000F09000EBE0FF5420FE9000008A
:102F8700F09000F1E06E6032EF30E50E9000F074E3
:102F970001F07BFF7A35792D800BE49000F0F07B10
:102FA700FF7A357939120F66D242C20FD243D23730
:0A2FB700900000E09000F1F0D24419
:012FC10022ED
:10279900737570706572206C6F6E67203873207066
:1027A900726573732E286C696E653A2564290D0A62
:1027B900004B6579206C696674286C696E653A25E9
:1027C90064292E0D0A00426F6F7374204F70656E75
:1027D900204B65792E286C696E653A2564290D0AA6
:1027E900006C6F6E672032732070726573730D0A07
:1027F9000073686F72742070726573730D0A004BF1
:102809006579205061697220545820564F52286CBE
:10281900696E653A2564292E0D0A004B65792050A9
:102829006169722054696D654F7574286C696E65AC
:102839003A2564292E0D0A004B6579205061697289
:102849002047657420564F52286C696E653A256495
:10285900292E0D0A004B6579205061697220476560
:102869007420564F4C286C696E653A2564292E0DE3
:102879000A004B6579205061697220545820564FDF
:102889004C286C696E653A2564292E0D0A004B6542
:1028990079205061697220436E743A25642E286C40
:0A28A900696E653A2564290D0A00E6
:101FF100C131C130C12F0117004100DE004100E2B3
:0E200100004100DD004200DF00004100E10070
:10000E007BFF900006E4F0A3227BFF9000067401B4
:03001E00F0A3222A
:101B1F009000EBE030E4449000DFE475F001121424
:101B2F0058C39000E0E094409000DFE09401401132
:101B3F00D22F7A27799912000E7471F0120F6680E6
:101B4F0014C39000E0E094509000DFE09400400553
:101B5F00202E02D22ED22BC22C804D302B43D244BA
:101B6F00E47817F6C22BD22C9000E1F09000DFE062
:101B7F00FEA3E0FFD39414EE94005008D231D22D7F
:101B8F00D237800EC3EF94C8EE94005005302E026A
:101B9F00D230C22E7A2779BA12000E74A7F0120F24
:101BAF0066E49000DFF0A3F0302C7B3040783030CB
:101BBF002D200F08121D5674BA021D0D121D7C50D8
:101BCF0003021D42C23078177602E49000DEF090D7
:101BDF000071F0A3F07BFF7A2779EA120F66302F9E
:101BEF002F200F08121D5674E3021D0D121D7C507D
:101BFF0003021D42C22FE49000E2F0781776037BB8
:101C0F00FF7A277999900006F0A374F9F0120F6606
:101C1F00302D0FC22D781776017BFF7A2779FA12B4
:101C2F000F66C22CC20F9000F0E064016003021D2A
:101C3F00557817E664026003021D169000DEE0C3BC
:101C4F00940150167F02121D6F7BFF7A287908903E
:101C5F00000604F0A3741C021CE09000DDE0D39496
:101C6F00054010E4121D897A287924120017742C6C
:101C7F00021D0D900072E0B4011D7D117F0312282B
:101C8F00B39000727402F07BFF7A287941900006BE
:101C9F0014F0A3743E803A900072E06402703690A4
:101CAF000071E0601A7F03121D6F9000DEF090004C
:101CBF00DD121D897A28795E120017745B803F7DD3
:101CCF00117F021228B37BFF7A28797B12001974D7
:101CDF0065F0120F669000DEE0D39414402490005C
:101CEF00DDE004F0E4A3F07BFF7A2879979000DD24
:101CFF00E0FF120010EFF0A37401F0A37473F00271
:101D0F000F669000DE802C7817E664037038900021
:101D1F00E2E0FFC39464501FEF540770047D2280EC
:101D2F000A9000E2E0540370077D117F041228B37C
:101D3F009000E2E004F022E47817F6D2109000E26F
:061D4F00F07F04122D0FCD
:101D5500227F3C1235137F0112338ED20F7BFF7A1F
:101D65002779CF900006E4F0A3227D221228B3E460
:101D7500900071F0A3F0227F03122D0F9000E1E097
:101D8500D3941422F07817F6D2107F04122D0F2267
:10200F0041007A004100790041007B0041007800D7
:102D8900900000E0FF25E02484F582E43400F58317
:102D990022900000E0FF25E0248CF582E43400F560
:102DA90083E0FCA3E0FDEF25E0249CF582E43400F8
:102DB900F58322747C2FF582E43400F58322E4F054
:102DC900A3F0EF25E02494F582E43400F583229002
:102DD9000000E0FF2480F582E43400F58322E0FE60
:102DE900A3E0C39DEE9C2225E0248CF582E4340007
:032DF900F583223D
:0F360C0075FE0B75FF0FC290C291C293C292223E
:1034DF00EF14600D14600D14600D2403700BD29067
:0A34EF0022D29122D29222D293221F
:0533F300900000E0FF66
:1033F800EF14600D14600D14600D2403700BC2905F
:0A34080022C29122C29222C2932236
:10327C00E4FF122DBCE4F074802F122DDFE4F0EF8C
:10328C00122D8EE4F0A3F0EF122DF0122DC7E4F006
:0E329C00A3F0122DAFE4F0A3F00FEFB404D4B2
:0132AA002201
:10319900AC07747C2C122DBFEDF0EAC313FEEB13C0
:1031A900FFEC122D8EEEF0A3EFF0AF03EC122DF031
:1031B900EAF0A3EFF0900005E0FEA3E0FFEC122D8A
:0F31C900CCEEF0A3EFF0EC122DB0E4F0A3F02267
:10341200122DBCEDF074802F122DDFEBF0EF122D88
:0F3422008EE4F0A37469F0122DAFE4F0A3F02252
:101D9500E4900000F0F0900000E0FFC394044003DD
:101DA500021F8A122DBCE0601F24FE60211460789A
:101DB500147003021E5E24036003021F39900000A5
:101DC500E0FF1234DF021F391233F3021F39122DDF
:101DD50089122DAA122DE750051234DF8003123324
:101DE500F3122D9A122DE75003021F39900000E0DF
:101DF500122DB0122DC7E0FEA3E0D39400EE94009F
:101E0500400E900000E0122DCC74FFF5F01214582E
:101E1500900000E0FF122DCCE0FCA3E04C60030233
:101E25001F39747C2F021E6F122D89122DAAE0FE18
:101E3500A3E0D39DEE9C50051234DF80031233F3EB
:101E4500122D9A122DE75003021F39900000E0125F
:101E55002DB0E4F0A3F0021F39122DD8E070131253
:101E65003575C246900000E0247C122DBFE4F002D7
:101E75001F39122DD8E0FE6402702E20460CD24682
:101E8500EF122D8EE4F0A37469F0122D89E475F03C
:101E950001121458EF122D8EE0FCA3E0C394FEEC62
:101EA50094005003021F308031EE640170372046E4
:101EB5000FD246900000E0122D8EE4F0A374FEF0E0
:101EC500122D8974FFF5F0121458EF122D8EE0FED5
:101ED500A3E0D39469EE94005051900000E0122DD8
:101EE500DDE4F08046122DD8E06403703EEF122D3C
:101EF5008EE0FEA3E0FFC394FEEE94004004D246BC
:101F0500800BD3EF946AEE94005002C24690000015
:101F1500E025E02484304609122D9274FFF5F08007
:101F250007122D92E475F001121458122D89A3E0C1
:101F3500FD122FC2900000E0FF700A122DBCE09048
:101F4500007AF08037900000E0B4010C247C122D5B
:101F5500BFE0900079F08024900000E0B4020C24EA
:101F65007C122DBFE090007BF08011900000E0B462
:101F7500030A247C122DBFE0900078F0900000E069
:101F850004F0021D9BE4900000F0900000E0FFC308
:101F950094045012122DAFE475F0011214589000FC
:061FA50000E004F080E4FE
:011FAB002213
:102F1C00456E74657220536869704D6F6465212825
:102F2C006C696E653A2564290D0A004E6F74204752
:102F3C00657420496E746F20536C65657028436806
:102F4C00675374617475733A25642C566F785F56A9
:102F5C006F75743A25642C526573746172745F4694
:0B2F6C006C61673A2564292E0D0A00F5
:10201F00C1454100E4004200E500004100E70F41E7
:05202F0000E300C144C4
:0A367700E4FF33A3CFF0A3EFF0222D
:1034F900D2AC759A03D2BCD2BDD2A9D2AB75FE317A
:0A35090075FF8175FE3043FF80223C
:10343100C2ACE4F59AC2BCC2BDC2A9C2AB75FE3131
:0F34410053FF7E75FE3053FF7FFD7F310232D87F
:10304D0030453730273DC2279000E3E004F0E0C360
:10305D0094054010E4A3F07DAA7F4F1232D8E4907E
:10306D0000E3F0229000E3E0B404187BFF7A2F799F
:10307D001C90000674E0F0020F6612343143870293
:04308D001234F922DE
:10324C00780EE6FFD39401500620110330441F7B07
:10325C00FF7A2F7937900006E4F0A3EFF0A2111259
:10326C003677A244123677120F66C244C322D32299
:103215001234A91235ED123638E4F5861232AB12A6
:10322500348C7D087F761236A3D2A8D2AF1235B87A
:103235007D697F031235A212360C12327C12364696
:073245009000D27401F02299
:030003000236B111
:0636B100D24475E20F3265
:102034002040290000000000000000000000000013
:10204400000000000000000000000000000000008C
:10205400000000000000000000000000000000007C
:10206400000000000000000000000000000000006C
:0F207400000000C13F4100F2004100F300C13EF7
:0B366100E0FF04F074292FF8A6992266
:1034A90075FE0443FF0CD2DF43878075BA0375AA02
:0B34B900DC759852D299D298D2AC2258
:06300800900043121517B1
:10300E00E4900046F075FE0443FF0C75FE0353FF7B
:10301E00F3F0900046E0C39FE49E501C203DFDD28D
:10302E003D900043E475F001121500121356F59908
:0E303E00900046E004F080DA75FE0453FFF3C4
:01304C002261
:03002300022B624B
:102B6200C0E0C083C082C0D075D000C000C005C024
:102B720006C007309904C299C23D309867C298D204
:102B8200449000F2E014601914602D24027055E59F
:102B9200999000F2B455087401F0A3E4F0800E801D
:102BA20011E5999000F2B4AA097402F0A3123661F9
:102BB2008032E4F0A3F0802C9000F3123661782D7D
:102BC200E62406FFE433FEE0FDC39FEE6480F87462
:102BD20080985005ED9440400B9000F3E4F0900093
:102BE200F2F0D23FD007D006D005D000D0D0D082AC
:052BF200D083D0E032A9
:0E362A0090002BEFF012369390002BE0FF2261
:1035ED0075F10A759F03759EFD759692759A022267
:08369300203EFDD23E8F97227C
:03008B0002355EDD
:10355E00C0E0E59630E1055396FDC23EE59630E0BB
:07356E00035396FED0E0328A
:10266900506F776572204F6E2053746174652148ED
:10267900616C6C28307825782920286C696E653A58
:102689002564290D0A004177616B652053746174D3
:102699006520286C696E653A2564290D0A004E6F1C
:1026A900726D616C20537461746520286C696E6564
:1026B9003A2564290D0A00536C65657020537461CD
:1026C900746520286C696E653A2564290D0A0053E2
:1026D9005441303A307825782C535441313A307886
:1026E90025782C535441323A307825782C4368693F
:1026F900705F5354413A307825782C564F585F53C0
:1027090054413A307825782E4465635F536C65658A
:10271900703A25640D0A00566E74633A25642C4993
:10272900766F6C3A25642C566261743A25642C568E
:10273900696E3A25642C56706D69643A25642C5685
:102749006F723A25642C566F6C3A25642C56646472
:102759003A25642C49766F723A25642E0D0A004495
:1027690065636E745F536C65657044656C6179204F
:1027790052656C6F61642E0D0A00456E7465722096
:102789005374616E646279204D6F6465210D0A008E
:102083004300D20402024100CF004100D000C13717
:0E209300C1364100D1004100D5004100CE0011
:10002600E6FF08A3E6CFF0A3EFF022900005E4F088
:10003600A3740AF07B147A007D02227BFFE0900015
:1000460006FFE4F0A3EFF02290007AF0900079F03A
:1000560090007BF0900078F022F0E4900005F0A389
:10006600F0FBFA22900005E4F0A37403F07B647AB7
:10007600007D0222FFE4F0A3EFF0227BFF90000652
:050086007402F0A3224A
:1033D200E4FBFF1233E97F01123412E4FB7F021295
:1033E20033E97F030234127D04123412E4FB7D04BC
:0133F20022B8
:10184D0030371BC237E49000D0F07813F6121AB27D
:10185D00FD7F03123199740212004ED244222022D0
:10186D0003300D5F203205D232D2372290007AE05C
:10187D006402600E120031E4FF12319990007A7407
:10188D0003F0900079E06402600E1200317F0112C6
:10189D0031999000797403F090007BE06402600947
:1018AD00120031121B167403F0900078E064027080
:1018BD0003021A7C1200317F031231999000787463
:1018CD0003F02230320CC232C234C233C243C20ED4
:1018DD00D236780EE6FF70030219A764037020203C
:1018ED003407D234C2330233D2E4900005121A7D8C
:1018FD007D017F03123199740112004E02199E2051
:10190D00330ED233C234D237E49000D5F002199E93
:10191D009000D0E0C394015057E004F09000D5E062
:10192D0014601A1460271460342403706490007AD4
:10193D00E06404605C7B017D04E4FF802E900079FF
:10194D00E06404604C7B017D047F01801E90007B70
:10195D00E06404603C7B017D047F02800E90007882
:10196D00E06404602C7B017D047F0312341280211E
:10197D009000D0E0C3940F5005E004F08013E49084
:10198D0000D0F09000D5E004F0E0C394044002E4F0
:10199D00F0C243C20EC231D2352230330AC23312E5
:1019AD0033D2D237D2362220430C203509200E06F1
:1019BD00203103021A7C9000D0E0FFC39401500443
:1019CD00E004F022EFC394644003021A679000D044
:1019DD00E004F0303A3090007AE064037003021AAC
:1019ED007CE4900005F0A3F07B64FA7D03FF1231D7
:1019FD009990007A740412005FFD7F011231999065
:101A0D0000797402800F303917E4900005121AE73F
:101A1D00121B02740112005FFD121B167402801E50
:101A2D00E4900005303B27121AE7121B02740112D5
:101A3D00005F7D017F0212319990007B74011200CD
:101A4D005FFD7F031231999000787402F022121A13
:101A5D007D7D01121B0D74018012C243C235C20E71
:0F1A6D00C231E4121AB2FD121B0D7402120051A5
:101A7C0022F0A3F0FBFA7D01FF123199E4900005EE
:101A8C00F0A3F0FBFA7D017F01123199E49000057F
:101A9C00F0A3F0FBFA7D017F02123199E49000056E
:101AAC00F0A3F0FBFA22900005F0A3F0FBFAFDFF87
:101ABC00123199E4900005F0A3F0FBFAFD7F0112BE
:101ACC003199E4900005F0A3F0FBFAFD7F0212318E
:101ADC0099E4900005F0A3F0FBFA22F0A3F0FBFAD6
:101AEC007D01FF12319990007A7401F0E4900005A9
:101AFC00F0A3F0FBFA227D017F011231999000795D
:101B0C00227F0312319990007A227F021231999030
:031B1C00007B2229
:10358C009000EEE0FF04F01229C69000EEE0C39428
:06359C00084002E4F022E9
:10345000122F77121B1F123091302311C223122B0F
:0E346000F7122EC1122C8412184D1215732271
:09368A007B017A0079E8022E654B
:10235600E4900000F09000D2E0FFA3E0FE6F606F13
:10236600A3EEF09000D2E0A3F024FE6030146041AA
:1023760014604F240360030224F512006AE4FF127E
:10238600319912006A7F011231997A267969900093
:10239600F0120041A37401F0A374F6802E7F01129F
:1023A60033B07BFF7A26798F7402900006F0A38003
:1023B6001A9000E7740FF07A2679A7120081740E3E
:1023C60080097A2679C01200817419F00224C0901F
:1023D60000D3E024FE603914603D1470030224D853
:1023E600240360030224F59000CEE004F0E0C394D9
:1023F6000850030224F59000D27402F0E49000CE57
:10240600F07814E660030224F59000D27404F022FA
:102416009000D27403F0222027030224F5C2277A03
:102426002679D89000E81200419000E9E090000873
:102436001200479000EAE090000A12007A9000EB42
:10244600E090000C12007A9000ECE0FF90000EE4A1
:10245600F0A3EFF09000E7E0FF900010E4F0A3EFA8
:10246600F0120F667BFF7A27792078B3E6FF089093
:10247600000612002A78A712002678B912002678DC
:10248600AD12002678B712002678B112002678AF72
:1024960012002678A912002678AB120026120F66C3
:1024A6009000E7E0D394004014E014F0304440C2BA
:1024B60044740FF07BFF7A277968020F667BFF7AF8
:1024C600277983120F669000D27404F0E49000E33B
:1024D600F02212324C50127F04122D0FE4FF1233F9
:0F24E6008EE4FF1233B002304D9000D27402F03A
:0124F50022C4
:10311800302636C2269000CFE0FF04F0EF1460128C
:103128001460141460161460182404701C12358C72
:10313800801712368A801212315A800D123450804C
:1031480008122356E49000CFF0302805C228121D3B
:023158009522BE
:10008E00426F6F7374204F70656E2E286C696E65AB
:10009E003A2564290D0A00426F7820436C6F736510
:1000AE002E286C696E653A2564290D0A00426F7818
:1000BE00204F70656E2E286C696E653A2564290D89
:1000CE000A004F70656E2F436C6F736520426F7818
:1000DE002C45617270686F6E657320496E20426F99
:1000EE0078284E756D3A25642928566F78537461B9
:1000FE003A30782578292E0D0A004F70656E204211
:10010E006F7820434D44205458204F7665722E0D43
:10011E000A004F70656E20426F7820416E64204554
:10012E00617270686F6E6520476574496E284E75F2
:10013E006D3A25642928566F785374613A307825C4
:10014E0078292E0D0A00436C6F736520426F78205C
:10015E00416E6420466F72636520566F6C746167E2
:10016E00652055702E0D0A2000564F5820566F757B
:10017E007420355628564F585F5354413A307825DF
:10018E00782C6C696E653A2564292E0D0A00564F3F
:10019E0058204348472046756C6C2E0D0A00564F6A
:1001AE00582047657420496E746F20536C656570D6
:1001BE002E0D0A00466F6C6C6F772043484720491E
:1001CE006E697453746120536574204D61782056A6
:1001DE00706D69642E28566F785F7374613A30784B
:1001EE00257829286C696E653A2564290D0A004622
:1001FE006F6C6C6F772043484720496E6974537457
:10020E00612E28566F785F7374613A30782578299D
:10021E00286C696E653A2564290D0A00466F6C6C70
:10022E006F772043484720537461312C4E6F204521
:10023E00617250686F6E6520496E20426F782E286D
:10024E006C696E653A2564290D0A00466F6C6C6FF9
:10025E00772043484720537461312C564F52204328
:10026E006867696E672849766F723A25646D412911
:10027E002E286C696E653A2564290D0A00466F6C4E
:10028E006C6F772043484720537461312C564F4C86
:10029E0020436867696E672849766F6C3A25646DEE
:1002AE0041292E286C696E653A2564290D0A00468F
:1002BE006F6C6C6F772043484720537461322C4724
:1002CE0065742049564F523A25646D412E286C694B
:1002DE006E653A2564290D0A00466F6C6C6F7720A7
:1002EE0043484720537461322C4765742049564F5A
:1002FE004C3A25646D412E286C696E653A25642949
:10030E000D0A00466F6C6C6F77204348472053747C
:10031E0061332C564F5820436867205265496E69E9
:10032E00742E286C696E653A2564290D0A00466F95
:10033E006C6C6F77204348472053746133284356C3
:10034E00292C564F522056706D69642041646453B7
:10035E0074612849766F723A25646D41292E286C96
:10036E00696E653A2564290D0A00466F6C6C6F77CD
:10037E00204348472053746133284356292C564F47
:10038E00522056706D69642053756253746128490A
:10039E00766F723A25646D41292E286C696E653A26
:1003AE002564290D0A00466F6C6C6F772043484711
:1003BE002053746133284343292C564F52205670D4
:1003CE006D6964205375625374612849766F723A71
:1003DE0025646D41292E286C696E653A2564290DB8
:1003EE000A00466F6C6C6F77204348472053746148
:1003FE0033284343292C564F522056706D69642082
:10040E004164645374612849766F723A25646D4174
:10041E00292E286C696E653A2564290D0A00466FEF
:10042E006C6C6F77204348472053746133284356D2
:10043E00292C564F4C2056706D69642041646453CC
:10044E0074612849766F6C3A25646D41292E286CAB
:10045E00696E653A2564290D0A00466F6C6C6F77DC
:10046E00204348472053746133284356292C564F56
:10047E004C2056706D69642053756253746128491F
:10048E00766F6C3A25646D41292E286C696E653A3B
:10049E002564290D0A00466F6C6C6F772043484720
:1004AE002053746133284343292C564F4C205670E9
:1004BE006D6964205375625374612849766F6C3A86
:1004CE0025646D41292E286C696E653A2564290DC7
:1004DE000A00466F6C6C6F77204348472053746157
:1004EE0033284343292C564F4C2056706D69642097
:1004FE004164645374612849766F6C3A25646D418A
:10050E00292E286C696E653A2564290D0A00466FFE
:10051E006C6C6F772043484720537461342C564FD0
:10052E00782056706D696420416464537461285656
:10053E006F75743A307825782C49766F6C3A25644D
:10054E006D412C49766F723A25646D4129286C698C
:10055E006E653A2564292E0D0A00466F6C6C6F7716
:10056E002043484720537461342C564F78204368FB
:10057E00696E6728566F75743A307825782C4976EF
:10058E006F6C3A25646D412C49766F723A25646D15
:10059E004129286C696E653A2564292E0D0A00469C
:1005AE006F6C6C6F772043484720537461342C5620
:1005BE004F522056706D69642041646453746128F3
:1005CE00566F75743A307825782C49766F723A25C5
:1005DE00646D4129286C696E653A2564292E0D0AD1
:1005EE0000466F6C6C6F772043484720537461341C
:1005FE002C564F52204368696E6728566F75743AB1
:10060E00307825782C49766F723A25646D41292809
:10061E006C696E653A2564292E0D0A00466F6C6C66
:10062E006F772043484720537461342C564F4C202B
:10063E0056706D69642041646453746128566F75F9
:10064E00743A307825782C49766F6C3A25646D4172
:10065E0029286C696E653A2564292E0D0A00466FAD
:10066E006C6C6F772043484720537461342C564F7F
:10067E004C204368696E6728566F75743A3078253A
:10068E00782C49766F6C3A25646D4129286C696E19
:10069E00653A2564292E0D0A00466F6C6C6F772023
:1006AE00434847205375625374612C564F4C2F5656
:1006BE004F52286C696E653A2564292E0D0A004644
:1006CE006F6C6C6F7720434847205375625374618B
:1006DE002C564F52286C696E653A2564292E0D0AE8
:1006EE0000466F6C6C6F77204348472053756253FA
:1006FE0074612C564F4C286C696E653A2564292E10
:10070E000D0A00466F6C6C6F772043484720537577
:10071E00625374612C285354413A307825782C5604
:10072E00706D69643A3078257829286C696E653A5F
:10073E002564290D0A00466F6C6C6F77204348477D
:10074E00204164645374612C285354413A30782507
:10075E00782C56706D69643A3078257829286C6942
:10076E006E653A2564290D0A005258305F4275664F
:10077E006665725B305D3A307825782C5258305F62
:10078E004275666665725B315D3A307825782C521B
:10079E0058305F4275666665725B325D3A30782519
:1007AE00782C5258305F4275666665725B335D3ADF
:1007BE00307825782C5258305F4275666665725BCC
:1007CE00345D3A307825782C5258305F4275666623
:1007DE0065725B355D3A307825782C5258305F4221
:1007EE0075666665725B365D3A307825782C5258A0
:1007FE00305F4275666665725B375D3A3078257894
:10080E002C6C696E653A25640D0A0000000000002C
:10081E0000000000000000000000000000000000CA
:10082E0000000000000000000000000000000000BA
:10083E0000000000000000000000000000000000AA
:0B084E0000000000000000000000009F
:1020A100C111C10EC10F410073FFC10D42004E00AD
:1020B1000042004C000042007100001A690000005B
:1020C100000000000000000000000000000000000F
:1020D1000000000000000020248300000000000038
:1020E10000000000000000000000000000000000EF
:1020F100000000000000000000000000000041009E
:10210100700042006E00004200740000C1104100E6
:02211100770055
:1021810090002674011213E17402900076F0900021
:10219100000214F790005012146EFFE5F090000653
:1021A100F0A3EFF0A37404F0A322E6FFE4F0A3EFA1
:1021B100F008E6FFA3E4F0A3EFF008E6FFA3E4F0E4
:1021C100A3EFF008E6A3FFE4F0A3EFF02290001ADA
:1021D10012136F900006F078A7E6FF08E6A3CF225E
:1021E10090004812146E900050FFAEF002146E90F1
:1021F10000261213E190001A02136F7BFF9000EC8E
:10220100E0FF900006E4F0EFA3F0A37403F0A32233
:102211007BFF9000067401F0A32290002E8FF00244
:1022210014A67BFF9000067404F0A32290002612EE
:10223100146EFFAEF090002E02146E9000ECE0548C
:102241000CFBE4FAF9F8900048E0FFE4FCFDFEC362
:102251000214D3EE8FF09000500214A690004C129D
:10226100146ED3FFED9FEC95F02290002802136FBE
:102271007BFF9000067405F0A322900034E4121352
:10228100E1E49000230213E190001AEF1213E190B0
:1022910000762290003902136FE6FC08E6FD25E086
:1022A100FFEC338FF01214A67BFF229000ECE05478
:1022B1000C22FF900008E4F0A3EFF022E490004E1E
:1022C100F0A322EE8FF01214A67D05121403EF780D
:1022D100022274019000370213E1C3FDACF09FECC0
:1022E1009E2290004BE0FFD3941422E4FCFDFEFA01
:1022F100F9F8C30214D378ABE6FE08E6FF2290009A
:10230100ECE05410FFE4FCFDEF2274019000140294
:1023110013E1E0FF900006E4F0A32290006CF0A32B
:10232100F0900076F022E49000390213E1E490008D
:10233100280213E1E490004BF0900049F022900054
:10234100ECE05420FFE4FC2290004EE09400229047
:05235100003402136FCF
:052D0F00900043EFF00D
:102D1400E4A3F0A3F07F271231D8900044EFF07FB2
:102D2400371231D8900045EFF0900043E024FD6065
:102D34001B14602424FE602824057035900045E0AF
:102D44004494F0900044E04498F08025900044E0DE
:102D54004406F054E7F08019900045E054FD8009E2
:102D6400900045E04402F054FEF0900044E054E149
:102D7400F0900044E0FD7F271232D8900045E0FD3A
:052D84007F370232D888
:101573009000EAE054186003D20D22C20D2040030C
:10158300021817304268200F141218407A00798E1F
:1015930012221174B4F0120F667F03806412233594
:1015A300A3F0C200C201D20B9000F0E07027C20E7C
:1015B300D202D203C205C208C204C209C20AD211AE
:1015C300C23612231C7BFF7A0079A590000604F033
:1015D300A374E58011C202C203D205C2067A007960
:1015E300BB12221174F2F0120F66C20FC2429000B6
:1015F30049E0C3940550030217AF300B07C20B7FBA
:1016030004022D0F20003BD2001222ACFF60147B9A
:101613000C1222EC90007070057402F0800A7401C1
:10162300F08005E4900070F07BFF7A0079D09000A1
:1016330070E09000061221C79000ECE01222B31272
:101643000F662005030216DE90004AE0C39405509E
:101653000A7F06122D0F90004A802220013F12229A
:10166300E3501FEF540370047D11800990004BE099
:1016730020E0077D227F011228B390004BE004F0A5
:1016830080597F04122D0FE490004BF0D201D21049
:10169300C2117BFF7A017908120F66803E7817E644
:1016A3007039301004C210802B12223C602D900040
:1016B300ECE0FF540C6004D20ED2377BFF7A017941
:1016C30020900070E0FD122315EDF0A3E4F0A3EFEA
:1016D300F0120F661222AC900048F02002030218A9
:1016E3001430363B200F16121840D211E412231C7B
:1016F300900049F0C208D20BC200D204227F031229
:101703002D0F7BFF7A017954120F66C20FD203901B
:101713000049E0D3940350030217AFC236804B2035
:10172300044890004AE0FFD39414501DEF54037013
:10173300047D11800990004AE020E0077D227F08A4
:101743001228B390004A0217AF1222E3501CEF5441
:101753000370047D11800990004BE020E0077D2297
:101763007F021228B390004B80423003177F03128D
:101773002D0F7A0179771221FC740BF0120F66C2D8
:10178300030218142008519000ECE05430FF7B3022
:101793001222EC600E1222ACFFE4FCFDFEEF6003AC
:1017A300303824900049E0D394285004E004F02218
:1017B3007BFF7A01799C120F66D208122335C20986
:1017C3007F04122D0F804A90006DE070447B017AF4
:1017D30000795012085980391222E3501FEF540345
:1017E30070047D11800990004BE020E0077D227F8B
:1017F300051228B390004BE004F08015200912D2A3
:10180300097F04122D0FC2117BFF7A0179AC120FED
:1018130066C20722200711D2077F04122D0FC211BF
:101823001222AC900048F02212223C600F1222AC2C
:0C183300FF6004D20ED237900048EFF0A6
:0E183F00227F3C1235137F0112338ED20F220E
:06085900900000121517CB
:10085F00900076E01470030209251470030209F367
:10086F00147003020A5F147003020C112404600356
:10087F00020D6212218F90001D12136F6003020D83
:10088F0062900077E0D3940A502DE004F090001AA4
:10089F00743C1213E1300C03020D6212218F1221EE
:1008AF00F6FF1235137A0179C21221FC74A3F012EC
:1008BF000F66D20C020D62E4900077F0C20C122189
:1008CF008FE41222D5900026E41213E112227B90BE
:1008DF000032E41213E1900021E41213E1122327F6
:1008EF0012232EE4F5F012225790002EE4F5F012A9
:1008FF0014A6900019E41213E190001B743C12220D
:10090F008D7401F01222BDF07BFF7A0179FD122167
:10091F00FE74CA020AB29000ECE0FB5420FFE4FC24
:10092F00FDFEEF6028EB5410FF602212218F900024
:10093F001D74011213E1E4900076F07BFF7A0279C7
:10094F002A9000067403F0A374D9020AB212233F4F
:10095F00EF703B1222F712218F9000441222C4C372
:10096F0033CE33CED8F9FF12218F900048EE8FF09F
:10097F001214A678AB90004C12229A7A02795990F1
:10098F000006ECF0ED12220974E7F0120F66122246
:10099F00FF704078A7E6FE08E6FF12218F90002235
:1009AF001222C4C333CE33CED8F9FF12218F900059
:1009BF0026EE8FF01214A678A790002A12229A7AA8
:1009CF0002798B900006ECF0A3ED12220A74F4F07A
:1009DF00120F6612218F90001C740112228D740267
:1009EF00F0020D62D390004FE0940512234950039B
:1009FF00020A6B1222BDF012233FFDEF701E12226E
:100A0F00F712218F12225474011223287BFF7A02CE
:100A1F0079BDEE12219E7410F0120F661222FF7034
:100A2F002678A7E6FE08E6FF12218FEE12221B742E
:100A3F000112232F7BFF7A0279E7900006EE122135
:100A4F00A1741AF0120F669000767403F0020D6213
:100A5F00D390004FE09402122349500AE475F0013D
:100A6F00121458020D621222BD12218E90004C12E8
:100A7F0021E4D39FE5F09E501612218F90002A1289
:100A8F00146E90002E1221EAD39FE5F09E4018E4D9
:100A9F0012218B90001CE41213E17A0379111222B8
:100AAF00237434F0020D5F12218F122294640160BF
:100ABF0003020B5F90005012146ED39414E5F09460
:100ACF000050499000ECE030E5259000377401129A
:100ADF0021F3C3943C400612218F12232712218F3A
:100AEF001221957446F07BFF7A03793C020B5C125E
:100AFF00218F90003474011213E112218F1221956E
:100B0F00744DF07BFF7A037978020B5C12218F1200
:100B1F0021E1D39FE5F09E900000401C1214F79046
:100B2F00003474011213E112218F1221957457F0C2
:100B3F007BFF7A0379B480151214F71222D3122196
:100B4F008F122195745EF07BFF7A0379F0120F6696
:100B5F0012218F12226B64016003020D6212223682
:100B6F00D39414E5F0940050499000ECE030E42564
:100B7F0074011221F0C3943C400612218F12232ED0
:100B8F0012218F90002E1221987471F07BFF7A043E
:100B9F00792C020D5F12218F740112228312218F83
:100BAF0090002E1221987478F07BFF7A04796802F6
:100BBF000D5F12218F12222DD39FE5F09E90000022
:100BCF0040201214F790002374011213E112218FA9
:100BDF0090002E1221987482F07BFF7A0479A40280
:100BEF000D5F1214F790002674011213E112218F7A
:100BFF0090002E1221987489F07BFF7A0479E0021D
:100C0F000D5FD390004FE09414122349501DE475EB
:100C1F00F0011214581222F712218F12225478A7C2
:100C2F00E6FF08E6CF12221B020D621222BD12212F
:100C3F008E1222946401706F12226B64017068121D
:100C4F0021E11222DB400812218F12225D403A125D
:100C5F00218F12222D1222DB400B12218F90002A9E
:100C6F00122260402412218F1222D31221811221CD
:100C7F00CEF0A3EFF078AB1221DA1221A174B0F00D
:100C8F007BFF7A05791C020D5F12218F1221CEF0A6
:100C9F00A3EFF078AB1221DA1221A174B7F07BFF2A
:100CAF007A057968020D5F12218F12229464017008
:100CBF00511221E11222DB400812218F12225D40D6
:100CCF002312218F9000371221841221F6900006F3
:100CDF00F078AB1221DA1221A174CAF07BFF7A05EA
:100CEF0079AD801B12218F1221F6900006F078ABA0
:100CFF001221DA1221A174D0F07BFF7A0579EF125D
:100D0F000F6612218F12226B6401704790002A1216
:100D1F002230D31222DC500F12218F900026121492
:100D2F006EC3122264501712218F1221811221CE0D
:100D3F001221A174DEF07BFF7A06792A801212212C
:100D4F008F1221CE1221A174E4F07BFF7A06796C09
:100D5F00120F6612218F122294FF6401600A122271
:100D6F006B64016003020EE5122350FE6401600DF7
:100D7F0090002312136F64016003020E6CEF640185
:100D8F00702012226BB4011AEEB40116122350B464
:100D9F00011012230B7A0679A712222374FCF0128A
:100DAF000F6612218F1222946401701A12226B7037
:100DBF0015122350640170350412230D7A0679CD74
:100DCF0012227104802312218F122294701F12227B
:100DDF006BB4011990002312136FB4011012230B7F
:100DEF007A0679EF1222717411F0120F6612218FA9
:100DFF0012227B90001412136F64016003020EFA2B
:100E0F0012218F1221F6D39400400890001A74FE1D
:100E1F0012139C90001912136FFF1221F6D39F50DB
:100E2F000B12218F1222897404F0800690007674C1
:100E3F0002F01222BD12218E900014E412228D12A4
:100E4F002313EF12218E1221F61222B3A37405F091
:100E5F00A37430F07BFF7A077911020ED812218F1D
:100E6F0090003712136F6401600A90002612136FFF
:100E7F0064017077900037E41213E1E41221F0C39C
:100E8F00943C500B12218F90001A740212139C7411
:100E9F000412218B90001B12136FFF1221F6C39FB8
:100EAF00400912218F1222897401F09000761223CB
:100EBF0013EF12218E1221F61222B3A37405F0A3A1
:100ECF00744DF07BFF7A077944120F6612218F124F
:100EDF0021F6FF023513900076E0D39402400CE424
:0B0EEF0012218E90001D74011213E10F
:010EFA0022D5
:0B30D500900043121517900046EDF02C
:1030E000E4FE900046E0FD14F0ED6029900043E41A
:1030F00075F0011215001213566EFEE4FFEFC39433
:103100000850DFEE30E007C313648CFE8004EEC38A
:0731100013FE0F80E8AF067B
:013117002295
:0828B300900000EFF0A3EDF02E
:1028BB00E4A3F078037C007D017BFF7A087919FE95
:1028CB007F401213309000037455F0A374AAF0A349
:1028DB0074FFF0900001E0900008F0900000E09091
:1028EB000006F0121520290D01294402292903297C
:1028FB004404294405294408290D09290D0A00001F
:10290B00294A9000077403F0780EE65402C433335F
:10291B0054C0781446900009F0E4A3F08021E4FF42
:10292B0074292FF8E6FE74032FF582E43400F58347
:10293B00EEF00FEFB440E980069000077401F090C1
:10294B000007E02405FF900002F0FD7B017A00797F
:10295B00031230D5900002E02403F582E43400F535
:10296B0083EFF07F01122D0F900001E0FFB4220BDB
:10297B0075FE0E53FFF043FF08800DEFB411097580
:10298B00FE0E53FFF043FF01900002E02402FFE430
:10299B0033FE7B017A007903123008900001E0FFCF
:1029AB00B4220A75FE0353FFF343FF0822EFB41161
:0A29BB000975FE0353FFF343FF0408
:0129C50022EF
:10346E00E4900000F0EF24FD60028011782EE6B4A7
:0D347E00110590007180039000727401F040
:01348B00221E
:10309100303F40C23F7BFF7A07797778299000065D
:1030A1001221AB08A31221ABA37407F0A3743CF067
:1030B100120F667B007A007929782DE62405FD122E
:1030C10030D5782DE6242EF8E6B50707782CE6FFF3
:0330D10012346E48
:0130D40022D9
:10211300011400C138C13CC13AC139C13B01136943
:10212300602A00A40BB80BEA0C1C0C800CB20CE464
:102133000D160D480D7A0DAC0E100E420E740EA640
:0E2143000ED80F0A0F3C0F870FD2101D106828
:1035DC00EF25E024A4F582E43400F583E0FCA3E0BD
:0135EC0022BC
:102C8400E4FF780EE6B402151235DC2432FDE43C90
:102C9400FCC378BAE69D18E69C500E80111235DC10
:102CA400D378BA96EC189650050FEFB415D478146F
:102CB400E6FEEFD39E4004180680037813169000B6
:102CC400EBE030E3047814A6077813E6FED394C847
:102CD4005006EEC3940A50077814A607187669784C
:102CE40014E6FFD394005002D23CEFD39401500277
:102CF400D238EFD394055002D23AEFD3940A50025B
:0A2D0400D239EFD3940F5002D23BF6
:012D0E0022A2
:102151004100D9004100DC004100D8004200D60016
:10216100004100DA00C125C126C128C124C123C113
:09217100274100DB00C129C12A4D
:102DFC009000DBE06062E4F0D2259000D9E004F0B2
:102E0C00E0C394054004E4F0D2269000DCE004F02A
:102E1C00E0C3940A4004E4F0D2289000D6E475F0A4
:102E2C0001121458C39000D7E094649000D6E0943B
:102E3C00004006E4F0A3F0D2239000D8E004F0E0C8
:102E4C00C394FA4013E4F0D2249000DAE004F0E0EA
:092E5C0094044004E4F0D22722A2
:03000B00023304B9
:10330400C0E0C083C082C0D074FC258CF58C746688
:10331400258AF58A9000DB7401F0D0D0D082D08366
:03332400D0E032C4
:0E363800758901758CFC758A66D2A9D28C2228
:0D36540075FE0FEF25E0FE7403A8060822A6
:103575001236548002C333D8FCF452FFEFB404066C
:0735850075FE0FE4F5FF22C3
:1035A20075FE11EF5407F5FF75FE12AF058FFF751B
:0635B200FE1075FF01226E
:102FC2001236548002C333D8FCF452FF7401A806AF
:102FD200088002C333D8FC42FF75FE0B7401A807B8
:102FE200088002C333D8FC42FFEF70038DCE22EF7C
:102FF200B401038DCF22EFB402038DDE22EFB403BE
:0630020004AF058FDF2280
:033FFD00010102BD
:06217A0001150001160032
:1032AB00D28075FE0443FF0175FE0343FF0175FEDB
:1032BB000243FF01D28175FE0443FF0275FE0343F7
:0D32CB00FF0275FE0243FF02781576012216
:0C35CA00C2801235D6D2811235D6D280D4
:0535D600E4FF0FDFFE21
:0135DB0022CD
:1034C400D281D2801235D62081037F0022C281129C
:0B34D40035D63081037F00227F0122EB
:0F361B00C280C2811235D1D2811235D60235D686
:08369B001235CAC2800235D6C7
:0B366C001235CA1235D6C2800235D6D6
:02334A00AE07CC
:10334C007D08AF051DEF6015C280EE30E704D28119
:0F335C008002C281EE25E0FE1235D180E5C280ED
:01336B00223F
:103327007E08E4FDD281AF061EEF6012ED25E0FDB9
:10333700C2801235D13081EEED4401FD80E8C280B4
:02334700AF05D0
:013349002261
:0E3646007D087F351232D87D0A7F760236A3CA
:102E65009000001215177F10122EADEF1213CF7FB1
:102E750011122EAD900001EF1213E17F12122EB741
:102E8500900002EF1213E17F13122EB7900003EFAB
:102E95001213E17F141231D89000001214F790003C
:102EA50004EF1213E17F00221231D89000001214B2
:0C2EB500F7221231D89000001214F7220E
:05336C00900000EFF0ED
:10337100E47F201231D8900000E06006EF4401FFA5
:0D3381008004EF54FEFFAD077F200232D81C
:05338E00900001EFF0CA
:10339300E47F271231D8900001E06006EF4401FF7B
:0D33A3008004EF54FEFFAD077F270232D8F3
:05351300900003EFF041
:10351800E47F251231D8EF54C0FF900003E04FFD3F
:053528007F250232D8EE
:0533B000900001EFF0A8
:1033B500E47F201231D8900001E06006EF54FBFF56
:0D33C5008004EF4404FFAD077F200232D8E2
:0736A3008FFEAF058FFF222F
:0636AA008FFEAEFFAF062B
:0136B00022F7
:1032D800900046EFF0A3EDF01234C47F0C12334A8D
:1032E80012366C900046E0FF12334A12366C90009A
:0C32F80047E0FF12334A12366C02361B0E
:0531D800900046EFF03D
:1031DD00E4A3F01234C47F0C12334A12366C900003
:1031ED0046E0FF12334A12366C1234C47F0D12338F
:1031FD004A12366C123327900047EFF012369B12AD
:07320D00361B900047E0FFB3
:013214002297
:102AE200023546E493A3F8E493A34003F68001F28F
:102AF20008DFF48029E493A3F85407240CC8C333F5
:102B0200C4540F4420C8834004F456800146F6DFC3
:102B1200E4800B0102040810204080901FACE47E88
:102B2200019360BCA3FF543F30E509541FFEE493B8
:102B3200A360010ECF54C025E060A840B8E493A37F
:102B4200FAE493A3F8E493A3C8C582C8CAC583CAAA
:102B5200F0A3C8C582C8CAC583CADFE9DEE780BE62
:01218000005E
:10126000E709F608DFFA8046E709F208DFFA803E70
:1012700088828C83E709F0A3DFFA8032E309F6085D
:10128000DFFA8078E309F208DFFA807088828C83C5
:10129000E309F0A3DFFA806489828A83E0A3F60879
:1012A000DFFA805889828A83E0A3F208DFFA804C53
:1012B00080D280FA80C680D4806980F2803380102A
:1012C00080A680EA809A80A880DA80E280CA803393
:1012D00089828A83ECFAE493A3C8C582C8CCC5830B
:1012E000CCF0A3C8C582C8CCC583CCDFE9DEE780DB
:1012F0000D89828A83E493A3F608DFF9ECFAA9F05A
:10130000EDFB2289828A83ECFAE0A3C8C582C8CCAF
:10131000C583CCF0A3C8C582C8CCC583CCDFEADEC8
:10132000E880DB89828A83E493A3F208DFF980CC2A
:1013300088F0EF60010E4E60C388F0ED2402B40423
:101340000050B9F582EB2402B4040050AF232345CA
:0613500082239012B0732D
:10135600BB010689828A83E0225002E722BBFE0295
:09136600E32289828A83E49322C8
:10136F00BB010CE58229F582E5833AF583E0225033
:10137F0006E92582F8E622BBFE06E92582F8E2227D
:0D138F00E58229F582E5833AF583E4932297
:10139C00BB010FF8E58229F582E5833AF583E02855
:1013AC00F0225009C58229F8E58226F622BBFE09F7
:1013BC00C58229F8E22582F222F8EA2583F583E931
:0313CC0093282241
:1013CF00BB010689828A83F0225002F722BBFE01FD
:0213DF00F322F7
:1013E100F8BB010DE58229F582E5833AF583E8F042
:1013F100225006E92582C8F622BBFE05E92582C8EE
:02140100F222D5
:10140300BC000BBE0029EF8DF084FFADF022E4CCCD
:10141300F875F008EF2FFFEE33FEEC33FCEE9DEC96
:10142300984005FCEE9DFE0FD5F0E9E4CEFD22EDDC
:10143300F8F5F0EE8420D21CFEADF075F008EF2F26
:10144300FFED33FD4007985006D5F0F222C398FD17
:051453000FD5F0EA22B4
:10145800C5F0F8A3E028F0C5F0F8E582158270021F
:061468001583E038F022BC
:10146E00BB0110E58229F582E5833AF583E0F5F0BC
:10147E00A3E0225009E92582F886F008E622BBFE99
:10148E000AE92582F8E2F5F008E222E5832AF583DF
:08149E00E993F5F0A3E99322A4
:1014A600F8BB0111E58229F582E5833AF583E8F078
:1014B600E5F0A3F0225009E92582C8F608A6F02235
:0D14C600BBFE09E92582C8F2E5F008F2221C
:1014D300EB9FF5F0EA9E42F0E99D42F0E89C45F06F
:0114E30022E6
:1014E400E8600FECC313FCED13FDEE13FEEF13FFE6
:0314F400D8F1220A
:0914F700E0FBA3E0FAA3E0F922F6
:10150000F8E0FBA3A3E0F925F0F0E5821582700274
:071510001583E0FA38F02218
:09151700EBF0A3EAF0A3E9F022D5
:10152000D083D082F8E4937012740193700DA3A35A
:1015300093F8740193F5828883E47374029368606E
:06154000EFA3A3A380DF6E
:10154600EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02D32
:10155600FDE43CFCE8A42EC8C5F03DFDE43CFCEFF0
:0D156600A4FFE5F028FEE43DFDE43CFC227E
:100EFB00E5082406F582E43400F583E0050822902A
:100F0B000003301903900006E475F001121500027E
:100F1B0013562012E97F2ED2128018EF540F249013
:100F2B00D43440D4FF30160BEF24BFB41A00500357
:100F3B002461FFE50960021509050CE50C7002053B
:100F4B000B30190E900003E475F001121500EF023F
:100F5B0013CF02362A7403D2198003E4C219F508A1
:100F6B00900003121517E4F509F50BF50CE5096074
:100F7B00077F20120F3E80F5750AFFC213C212C203
:100F8B0014C215C217C218C21A120F0AFF700D3005
:100F9B0019057F00120F4FAF0CAE0B22B4255FC2A9
:100FAB00D5C216120F0AFF24D0B40A00501A75F0DE
:100FBB000A780930D50508B6FF0106C6A426F62027
:100FCB00D5047002D21580D924CFB41A00EF500487
:100FDB00C2E5D216021150D21380C6D21280C0D2F3
:100FEB001480BCD2D580BAD21780B47F20120F3EAA
:100FFB002014077401B5090040F1120EFBFF120F0C
:10100B003E020F78D21AD2188095120EFBFB120EED
:10101B00FBFA120EFBF94A4B700679217A127BFF11
:10102B0020142EE509602A7E008E82758300121330
:10103B006F60060EEE650A70F0C2D5EBC0E0EAC039
:10104B00E0E9C0E0EE121197D0E0F9D0E0FAD0E081
:10105B00FB121356FF60AAEBC0E0EAC0E0E9C0E068
:10106B00120F3ED0E02401F9D0E03400FAD0E0FBBF
:10107B00E50A0460DCD50AD980877BFF7A11799366
:10108B00D214809C791080027908C218C21A800889
:10109B00D2D5790A8004790AC2D5E50A047002F523
:1010AB000AE4FAFDFEFF120EFBFC7B082013131261
:1010BB000EFBFD7B1030120A120EFBFE120EFBFF15
:1010CB007B20EC3382D592D55013C3E43012069FAC
:1010DB00FFE49EFEE42013039DFDE49CFCE4CBF8AF
:1010EB00C213EC700CCFCECDCCE824F8F870F380A3
:1010FB0017C3EF33FFEE33FEED33FDEC33FCEB3375
:10110B00FB994002FB0FD8E9EB301305F8D0E0C494
:10111B0048B213C0E00AEC4D4E4F78207B0070C2F2
:10112B00EAB50A0040BCC0E0121199D0F0D0E02023
:10113B001304C4C0E0C4B213C0F0120F27D0F0D513
:10114B00F0EB020F78121520101553108F580FE685
:10115B004C0FE24210934F109B44109B490FFB43E3
:08116B0010A155108546108506
:10117300451085471241500FEA2D0FEE2E10112B0B
:101183000FF223100F20122A2A0FAA480000100979
:101193003F3F3F00790AA2D5201514301709B91033
:1011A300020404B9080104A2D52018025001042046
:1011B30014689214B509005034C0E07F203015192B
:1011C3007F30A21472187217500F1211F0C214C29A
:1011D30018C217C21A7F30800F301703E9C0E0121C
:1011E3000F3E301703D0E0F9D0E0B509CC30171724
:1011F3007F30B9100C120F3E7F583016077F78806E
:1012030003B90803120F3E3014057F2D020F3E7FF2
:1012130020201AF87F2B2018F322921480CF286EF7
:10122300756C6C2900D213120EFB3013F8C21378BD
:101233000930D50108F6020FAA2D50434958120E62
:10124300FB2403B405004001E490123C93120F2FDA
:0D125300743A120F2FD21575090402108F86
:00000001FF

Binary file not shown.

1006
Out/8835_EVB_250108_1440.hex Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -25,7 +25,7 @@
#ifdef NTC_ENABLE
extern bit NTC_Pro_Flag;
extern bit CHG_NTC_Pro_Flag;
#endif
// ³äµç״̬¶¨Òå
typedef enum

View File

@ -23,6 +23,10 @@
#include "define.h"
#ifdef NTC_ENABLE
extern bit Boost_NTC_Pro_Flag;
#endif
extern bit gBoost_Prepared_Flag; //Boost满足开启条件。
#if DISCHARGE_ENABLE

View File

@ -108,6 +108,7 @@
#endif
#else
/*2.5V上拉LDO下接 104K NTC(3950K) 电阻串联一个100K电阻后得到的电压值,Value=1024 * Rntc/(Rntc + 100k) */
/* 具体公式:( LSB = 2500/1024 )
NTC Pin实际电压Vntc = Rntc/R总 * 2500
@ -159,8 +160,90 @@
#define T_80C 113 //80℃ NTC:12.4K
#endif
/* NTC保护标准选择JEITA or IEC.*/
#define NTC_JEITA 1
/*Boost Module Config Para Setting*/
#define NTC_IEC 0
/* NTC充电温度范围。 */
#if NTC_IEC
#define IEC_NTC_CHG_PRO_LOW_TMP T_0C //配置充电NTC保护温度下限值。
#define IEC_NTC_CHG_HYST_LOW_TMP T_3C //配置充电NTC保护恢复温度下限迟滞值。
#define IEC_NTC_CHG_PRO_HIGH_TMP T_45C //配置充电NTC保护温度上限值。
#define IEC_NTC_CHG_HYST_HIGH_TMP T_42C //配置充电NTC保护恢复温度上限迟滞值。
#elif NTC_JEITA
/* JEITA模式NTC温度保护上下限阈值和迟滞温度。 */
#define JEITA_NTC_CHG_PRO_LOW_TMP T_0C //配置充电NTC保护温度下限值。
#define JEITA_NTC_CHG_PRO_HYST_LOW_TMP T_3C //配置充电NTC保护恢复温度下限迟滞值。
#define JEITA_NTC_CHG_PRO_HIGH_TMP T_60C //配置充电NTC保护温度上限值。
#define JEITA_NTC_CHG_PRO_HYST_HIGH_TMP T_57C //配置充电NTC保护恢复温度上限迟滞值。
/* JEITA模式NTC温度冷状态上下限阈值和迟滞温度。 */
#define JEITA_NTC_CHG_COLD_HIGH_TMP T_10C //配置充电NT C冷状态温度上限值。
#define JEITA_NTC_CHG_COLD_HYST_HIGH_TMP T_8C //配置充电NTC冷状态恢复温度上限迟滞值。
/* JEITA模式NTC温度暖状态上下限阈值和迟滞温度。 */
#define JEITA_NTC_CHG_WARM_LOW_TMP T_10C //配置充电NTC暖状态温度下限值。
#define JEITA_NTC_CHG_WARM_HYST_LOW_TMP T_12C //配置充电NTC暖状态恢复温度下限迟滞值。
#define JEITA_NTC_CHG_WARM_HIGH_TMP T_45C //配置充电NT C暖状态温度上限值。
#define JEITA_NTC_CHG_WARM_HYST_HIGH_TMP T_42C //配置充电NTC暖状态恢复温度上限迟滞值。
/* JEITA模式NTC温度热状态上下限阈值和迟滞温度。 */
#define JEITA_NTC_CHG_HOT_LOW_TMP T_45C //配置充电NTC热状态温度下限值。
#define JEITA_NTC_CHG_HOT_HYST_LOW_TMP T_47C //配置充电NTC热状态恢复温度下限迟滞值。
#endif
/* NTC放电温度范围。 */
#define NTC_DISCHG_PRO_LOW_TMP T_N20C //配置放电NTC保护温度下限值。
#define NTC_DISCHG_HYST_LOW_TMP T_N15C //配置放电NTC保护恢复温度下限迟滞值。
#define NTC_DISCHG_PRO_HIGH_TMP T_80C //配置放电NTC保护温度上限值。
#define NTC_DISCHG_HYST_HIGH_TMP T_75C //配置放电NTC保护恢复温度上限迟滞值。
/* Bat Level Set. 5% Each Gear */
#define C_batLevel_SetMax 21 //电量计档位数设置
#define Bat_Lev_0 3000 //0%
#define Bat_Lev_5 3050 //5%
#define Bat_Lev_10 3100 //10%
#define Bat_Lev_15 3200 //15%
#define Bat_Lev_20 3250 //20%
#define Bat_Lev_25 3300 //25%
#define Bat_Lev_30 3350 //30%
#define Bat_Lev_35 3400 //35%
#define Bat_Lev_40 3450 //40%
#define Bat_Lev_45 3500 //45%
#define Bat_Lev_50 3600 //50%
#define Bat_Lev_55 3650 //55%
#define Bat_Lev_60 3700 //60%
#define Bat_Lev_65 3750 //65%
#define Bat_Lev_70 3800 //70%
#define Bat_Lev_75 3850 //75%
#define Bat_Lev_80 3900 //80%
#define Bat_Lev_85 3975 //85%
#define Bat_Lev_90 4050 //90%
#define Bat_Lev_95 4125 //95%
#define Bat_Lev_100 4200 //100%
/* Boost Module Config Para Setting. */
#define OPEN_BOOST_VIN 3600 //Boost 发生uvlo保护后在有VIN条件下Boost再次恢复开启的电压3.6V)。
@ -168,8 +251,13 @@
#define BOOST_VOUT_MAX BOOST_VPMID_5_2V //Boost 输出最高电压阈值。
/*KEY And Hall Module Setting*/
#define HALL_OPEN_LEV_SET 1 //配置是高电平为开盖还是低电平为开盖。1:高电平为开盖0:低电平为开盖
/* LED 驱动输出限流配置。 */
#define LED_DRV_LIMIT_SET P1_DRV_400 //配置P10-P13限流输出2个档位限流电阻400Ω、800Ω。
/* KEY And Hall Module Setting. */
#define HALL_OPEN_LEV_SET 1 //配置是高电平为开盖还是低电平为开盖。1:高电平为开盖0:低电平为开盖。
/* Charger Config Setting. */
@ -199,6 +287,14 @@
#define VOX_CLOSE_5V_HOLD_CNT 3 //配置关盖动作后VOX 输出5V持续时间100ms * 3单位ms。
/* 双向通讯协议选择 */
#define JIELI 0 //杰理耳机芯片
#define ZHONGKE 0 //中科蓝讯耳机芯片
#define XUANHENG 1 //玄恒耳机芯片
/* Vox跟随充参数设置。(100ms调用周期) */
#define VOX_CV_TC_CURRENT 20 //耳机充电处于CV/TC阶段的电流值单位mA。
@ -216,6 +312,7 @@
#define VOUT_MIN_THD BOOST_VPMID_3_7V //VOX VOUT输出最小阈值。
/*Sleep Module Setting*/
/*Enter Sleep Time Debounce*/
#define ENTER_STANDBYMODE_CNT 15 //进入Standby Mode 延迟时间,单位:秒

View File

@ -61,6 +61,12 @@ sbit pin_LED_4 = P1^3;
#define LEDB_OFF() pin_LED_4 = 0 //LED_4_OFF()
#define LEDB_TOG() pin_LED_4 = !pin_LED_4 //LED_4_RUN()
/* 配置P10-P13限流输出<0Ch> --P1_DRV0 */
#define P1_DRV_400 0x55 //驱动能力400Ω
#define P1_DRV_800 0x00 //驱动能力800Ω
#ifdef LED_DISPLAY
/******************************************************************************\

View File

@ -28,7 +28,13 @@
/******************************************************************************\
Macro definitions
\******************************************************************************/
#if XUANHENG
#define Baud_Rate0 115200//9600//19200//38400//93750
#else
#define Baud_Rate0 9600//9600//19200//38400//93750
#endif
#define S0REL_VALUE (1024-345600/Baud_Rate0)
#define Baud_Rate1 9600//19200//38400//93750

View File

@ -112,6 +112,12 @@ SFRDATA |= (VOX_LIGHT_TO_HAVEY_128 << 2) | VOX_HAVEY_TO_LIGHT_8;
#define VOX_HAVEY_TO_LIGHT_8 0x02
#define VOX_HAVEY_TO_LIGHT_64 0x03
#if XUANHENG
#define BOXHEADER 0xAA //VOX通讯数据包头
#else
#define BOXHEADER 0x55AA //VOX通讯数据包头
#define EARPHONE_HEADER_HIGH 0x55
@ -119,6 +125,8 @@ SFRDATA |= (VOX_LIGHT_TO_HAVEY_128 << 2) | VOX_HAVEY_TO_LIGHT_8;
#define BOXIDCODE 0xFF //VOX通讯耳机->仓数据包头
#endif
#define Vox_TX_Interval 2 //Vox定时发送指令时间间隔
#define Vox_TX_Interval_2 4
@ -128,11 +136,6 @@ SFRDATA |= (VOX_LIGHT_TO_HAVEY_128 << 2) | VOX_HAVEY_TO_LIGHT_8;
/******************************************************************************\
Variables definitions
\******************************************************************************/
/* Ë«ÏòͨѶЭÒéÑ¡Ôñ */
#define JIELI 0
#define ZHONGKE 1
/*耳机通道选择*/
@ -230,6 +233,42 @@ typedef enum _VOX_BES_COMMAND_E
}VOX_BES_COMMAND_E;
#elif XUANHENG
typedef enum {
VOL_CHAN = 0x24,
VOR_CHAN = 0x25,
VOX_BOTH = 0x21,
VOX_MAX_CHAN = 0x02,
}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

View File

@ -484,32 +484,30 @@ bit F_batlevel_75p = 0;
idata uint8_t offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2;
#define C_batLevel_SetMax 21
/*充电电池电压会浮高,具体电压需要测试。*/
const uint16_t Boost_batlevel_Threshold[C_batLevel_SetMax] =
{
3000, //0%
3050, //5%
3100, //10%
3200, //15%
3250, //20%
3300, //25%
3350, //30%
3400, //40%
3450, //45%
3500, //50%
3600, //55%
3650, //60%
3700, //65%
3750, //70%
3800, //75%
3850, //80%
3900, //85%
3975, //90%
4050, //95%
4125, //100%
4200 //10
Bat_Lev_0, //0%
Bat_Lev_5, //5%
Bat_Lev_10, //10%
Bat_Lev_15, //15%
Bat_Lev_20, //20%
Bat_Lev_25, //25%
Bat_Lev_30, //30%
Bat_Lev_35, //35%
Bat_Lev_40, //40%
Bat_Lev_45, //45%
Bat_Lev_50, //50%
Bat_Lev_55, //55%
Bat_Lev_60, //60%
Bat_Lev_65, //65%
Bat_Lev_70, //70%
Bat_Lev_75, //75%
Bat_Lev_80, //80%
Bat_Lev_85, //85%
Bat_Lev_90, //90%
Bat_Lev_95, //95%
Bat_Lev_100 //100%
};
#if 0
const uint16_t Charging_batlevel_Threshold1[C_batLevel_SetMax] =
@ -533,7 +531,7 @@ void check_bat_level(void)
#if ADC_ENABLE
for(i=0; i < C_batLevel_SetMax; i++)
{
#if 0
#if 1
if( Vbat_Adc < Boost_batlevel_Threshold[i] )
{

View File

@ -29,10 +29,9 @@
#include "bat.h"
#ifdef NTC_ENABLE
bit NTC_Pro_Flag = 0;
bit CHG_NTC_Pro_Flag = 0;
#endif
idata TE_CHG_STA ChgStatus; // CHG状态定义
#if CHARGER_ENABLE
@ -134,9 +133,9 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
if( Charge_sta ) //VBUS plugin status 充电模式
{
if( ( NTC_Adc <= T_0C ) && ( NTC_Adc > T_60C ) )
if( ( NTC_Adc <= JEITA_NTC_CHG_PRO_LOW_TMP ) && ( NTC_Adc > JEITA_NTC_CHG_PRO_HIGH_TMP ) )
{
if( NTC_Adc > T_10C ) //0.5*ICC充电
if( NTC_Adc > JEITA_NTC_CHG_COLD_HIGH_TMP ) //0.5*ICC充电
{
NTC_250mA_Chg_Flag = 1;
@ -144,7 +143,7 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
if( NTC_500mA_Chg_Flag )
{
if( NTC_Adc > T_8C )
if( NTC_Adc > JEITA_NTC_CHG_COLD_HYST_HIGH_TMP )
{
NTC_500mA_Chg_Flag = 0;
@ -159,7 +158,7 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
NTC_Flag = FALSE;
}
else
if( NTC_Adc <= T_10C && NTC_Adc > T_45C ) //1*ICC充电
if( NTC_Adc <= JEITA_NTC_CHG_WARM_LOW_TMP && NTC_Adc > JEITA_NTC_CHG_WARM_HIGH_TMP ) //1*ICC充电
{
NTC_500mA_Chg_Flag = 1;
@ -167,7 +166,7 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
if( NTC_250mA_Chg_Flag )
{
if( NTC_Adc <= T_12C )
if( NTC_Adc <= JEITA_NTC_CHG_WARM_HYST_LOW_TMP )
{
NTC_250mA_Chg_Flag = 0;
@ -183,7 +182,7 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
if( NTC_Change_CV_Chg_Flag )
{
if( NTC_Adc <= T_42C )
if( NTC_Adc <= JEITA_NTC_CHG_WARM_HYST_HIGH_TMP )
{
NTC_Change_CV_Chg_Flag = 0;
@ -198,7 +197,7 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
NTC_Flag = FALSE;
}
else
if( NTC_Adc <= T_45C ) //浮充电压4.05V
if( NTC_Adc <= JEITA_NTC_CHG_HOT_LOW_TMP ) //浮充电压4.05V
{
NTC_Change_CV_Chg_Flag = 1;
@ -206,7 +205,7 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
if( NTC_500mA_Chg_Flag )
{
if(NTC_Adc <= T_47C)
if(NTC_Adc <= JEITA_NTC_CHG_HOT_HYST_LOW_TMP)
{
NTC_500mA_Chg_Flag = 0;
@ -223,7 +222,7 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
if( CHG_NTC_Low_Pro_Flag )
{
if( NTC_Adc < T_3C)
if( NTC_Adc < JEITA_NTC_CHG_PRO_HYST_LOW_TMP)
{
CHG_NTC_Low_Pro_Flag = 0;
NTC_Flag = FALSE;
@ -236,7 +235,7 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
if( CHG_NTC_High_Pro_Flag )
{
if( NTC_Adc > T_57C )
if( NTC_Adc > JEITA_NTC_CHG_PRO_HYST_HIGH_TMP )
{
CHG_NTC_High_Pro_Flag = 0;
NTC_Flag = FALSE;
@ -249,7 +248,7 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
}
else
{
if( NTC_Adc > T_0C ) //不充电
if( NTC_Adc > JEITA_NTC_CHG_PRO_LOW_TMP ) //不充电
{
CHG_NTC_Low_Pro_Flag = 1;
@ -259,7 +258,7 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
NTC_Flag = TRUE;
}
else
if( NTC_Adc <= T_60C ) //不充电
if( NTC_Adc <= JEITA_NTC_CHG_PRO_HIGH_TMP ) //不充电
{
CHG_NTC_High_Pro_Flag = 1;
@ -280,11 +279,11 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
CHG_NTC_Low_Pro_Flag = 0;
CHG_NTC_High_Pro_Flag = 0;
if( NTC_Adc <= T_N20C && NTC_Adc > T_80C ) //正常放电
if( NTC_Adc <= NTC_DISCHG_PRO_LOW_TMP && NTC_Adc > NTC_DISCHG_PRO_HIGH_TMP ) //正常放电
{
if( DisChg_NTC_Low_Pro_Flag )
{
if( NTC_Adc < T_N15C )
if( NTC_Adc < NTC_DISCHG_HYST_LOW_TMP )
{
DisChg_NTC_Low_Pro_Flag = 0;
NTC_Flag = FALSE;
@ -297,7 +296,7 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
if( DisChg_NTC_High_Pro_Flag )
{
if( NTC_Adc > T_75C )
if( NTC_Adc > NTC_DISCHG_HYST_HIGH_TMP )
{
DisChg_NTC_High_Pro_Flag = 0;
NTC_Flag = FALSE;
@ -310,12 +309,12 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
}
else //异常不放电
{
if( NTC_Adc > T_N20C )
if( NTC_Adc > NTC_DISCHG_PRO_LOW_TMP )
{
DisChg_NTC_Low_Pro_Flag = 1;
}
else
if( NTC_Adc < T_80C )
if( NTC_Adc < NTC_DISCHG_PRO_HIGH_TMP )
{
DisChg_NTC_High_Pro_Flag = 1;
}
@ -328,11 +327,11 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
if(Charge_sta) //VBUS plugin status 充电模式
{
if(NTC_Adc <= T_0C && NTC_Adc > T_45C) //正常充电
if(NTC_Adc <= IEC_NTC_CHG_PRO_LOW_TMP && NTC_Adc > IEC_NTC_CHG_PRO_HIGH_TMP) //正常充电
{
if(CHG_NTC_Low_Pro_Flag)
{
if( NTC_Adc < T_3C )
if( NTC_Adc < IEC_NTC_CHG_HYST_LOW_TMP )
{
CHG_NTC_Low_Pro_Flag = 0;
@ -346,7 +345,7 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
if(CHG_NTC_High_Pro_Flag)
{
if( NTC_Adc > T_42C )
if( NTC_Adc > IEC_NTC_CHG_HYST_HIGH_TMP )
{
CHG_NTC_High_Pro_Flag = 0;
@ -360,12 +359,12 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
}
else //异常不充电
{
if(NTC_Adc > T_0C)
if(NTC_Adc > IEC_NTC_CHG_PRO_LOW_TMP)
{
CHG_NTC_Low_Pro_Flag = 1;
}
else
if(NTC_Adc <= T_45C)
if(NTC_Adc <= IEC_NTC_CHG_PRO_HIGH_TMP)
{
CHG_NTC_High_Pro_Flag = 1;
}
@ -384,11 +383,11 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
CHG_NTC_Low_Pro_Flag = 0;
CHG_NTC_High_Pro_Flag = 0;
if( (NTC_Adc <= T_N20C) && (NTC_Adc > T_80C) ) //正常放电
if( (NTC_Adc <= NTC_DISCHG_PRO_LOW_TMP) && (NTC_Adc > NTC_DISCHG_PRO_HIGH_TMP) ) //正常放电
{
if( DisChg_NTC_Low_Pro_Flag )
{
if( NTC_Adc < T_N15C )
if( NTC_Adc < NTC_DISCHG_HYST_LOW_TMP )
{
DisChg_NTC_Low_Pro_Flag = 0;
@ -402,7 +401,7 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
if(DisChg_NTC_High_Pro_Flag)
{
if( NTC_Adc > T_75C )
if( NTC_Adc > NTC_DISCHG_HYST_HIGH_TMP )
{
DisChg_NTC_High_Pro_Flag = 0;
@ -416,12 +415,12 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
}
else //异常不放电
{
if(NTC_Adc > T_N20C)
if(NTC_Adc > NTC_DISCHG_PRO_LOW_TMP)
{
DisChg_NTC_Low_Pro_Flag = 1;
}
else
if(NTC_Adc <= T_80C)
if(NTC_Adc <= NTC_DISCHG_PRO_HIGH_TMP)
{
DisChg_NTC_High_Pro_Flag = 1;
}
@ -478,12 +477,12 @@ void Charger_Handler(void)
{
Set_PMU_CHG(OFF); //Disable Charger.
NTC_Pro_Flag = 1;
CHG_NTC_Pro_Flag = 1;
return;
}
NTC_Pro_Flag = 0;
CHG_NTC_Pro_Flag = 0;
#endif

View File

@ -26,6 +26,10 @@
#include "led.h"
#include "bat.h"
#ifdef NTC_ENABLE
bit Boost_NTC_Pro_Flag = 0;
#endif
bit gBoost_Prepared_Flag = 0; //Boost满足开启条件。
#if DISCHARGE_ENABLE
@ -176,12 +180,12 @@ void DisCharge_Handler(void)
Set_PMU_Boost(OFF);
NTC_Pro_Flag = 1;
Boost_NTC_Pro_Flag = 1;
return;
}
NTC_Pro_Flag = 0;
Boost_NTC_Pro_Flag = 0;
#endif

View File

@ -226,7 +226,6 @@ uint8_t Key_Lift_Debounce = 0;
#ifdef _DEBUG_KEY
printf("Boost Open Key.(line:%d)\r\n",(u16)__LINE__);
#endif
return;
}
@ -255,7 +254,7 @@ uint8_t Key_Lift_Debounce = 0;
nKey_Press_short_irq = 0;
/*todo*/
Event_key = KEY_EVENT_SHORT;
// Event_key = KEY_EVENT_SHORT;
#ifdef _DEBUG_KEY
printf("short press\r\n");
@ -275,11 +274,18 @@ uint8_t Key_Lift_Debounce = 0;
if( Key_TWS_Pair_Tim < 1 )
{
#ifdef VOX_TX
HandleTxCommand(VHOUSE_CMD_PAIR,VOR_CHAN); //右耳发配对指令,区分耳机通道。
#if XUANHENG
HandleTxCommand(CMD_TWS_GET_BTADDR,VOL_CHAN);
#else
HandleTxCommand(VHOUSE_CMD_PAIR,VOL_CHAN); //右耳发配对指令,区分耳机通道。
#endif
#endif
Vox_Get_BES_Addr_Flag[VOL_TYPE] = 0x00;
Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0x00;
#ifdef _DEBUG_KEY
printf("Key Pair TX VOR(line:%d).\r\n",(uint16_t)__LINE__);
#endif
@ -289,7 +295,13 @@ uint8_t Key_Lift_Debounce = 0;
if(Key_TWS_Pair_Cnt > KEY_TWS_PAIR_CNT) //耳机蓝牙地址置换超时10s关闭蓝牙地址置换开启VOX 5V。
{
Key_TWS_Pair_Cnt = 0;
#if XUANHENG
HandleTxCommand(CMD_PAIRING_IMD,VOR_CHAN);
HandleTxCommand(CMD_PAIRING_IMD,VOL_CHAN);
#endif
Event_key = KEY_EVENT_Empty;
OpenCover_TX_Cmd_Flag = 1;
@ -304,32 +316,40 @@ uint8_t Key_Lift_Debounce = 0;
}
else
{
if( Vox_Get_BES_Addr_Flag[VOR_TYPE] == 0x01 ) /*收到右耳回复的CMD3指令。*/
if( Vox_Get_BES_Addr_Flag[VOL_TYPE] == 0x01 ) /*收到右耳回复的CMD3指令。*/
{
#ifdef VOX_TX
#if JIELI
HandleTxCommand(VHOUSE_CMD_EXCH_TWS_BTADDR,VOL_CHAN); /*获取到右耳回复的CMD3指令转发给左耳。*/
HandleTxCommand(VHOUSE_CMD_EXCH_TWS_BTADDR,VOR_CHAN); /*获取到右耳回复的CMD3指令转发给左耳。*/
#elif ZHONGKE
HandleTxCommand( VHOUSE_CMD_GET_TWS_BTADDR, VOL_CHAN ); /*获取到右耳回复的CMD3指令转发给左耳。*/
HandleTxCommand( VHOUSE_CMD_GET_TWS_BTADDR, VOR_CHAN ); /*获取到右耳回复的CMD3指令转发给左耳。*/
#elif XUANHENG
HandleTxCommand( CMD_TWS_SET_BTADDR, VOR_CHAN );
#endif
#endif
Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0x02;
Vox_Get_BES_Addr_Flag[VOL_TYPE] = 0x02;
#ifdef _DEBUG_KEY
printf("Key Pair Get VOR(line:%d).\r\n",(uint16_t)__LINE__);
#endif
}
else
if( Vox_Get_BES_Addr_Flag[VOR_TYPE] == 0x02 )
if( Vox_Get_BES_Addr_Flag[VOL_TYPE] == 0x02 )
{
if( Vox_Get_BES_Addr_Flag[VOL_TYPE] != 0x00 )
if( Vox_Get_BES_Addr_Flag[VOR_TYPE] != 0x00 )
{
#ifdef VOX_TX
#if JIELI
HandleTxCommand(VHOUSE_CMD_EXCH_TWS_BTADDR,VOR_CHAN); /*获取到右耳回复的CMD3指令转发给左耳。*/
HandleTxCommand(VHOUSE_CMD_EXCH_TWS_BTADDR,VOL_CHAN); /*获取到右耳回复的CMD3指令转发给左耳。*/
#elif ZHONGKE
HandleTxCommand( VHOUSE_CMD_GET_TWS_BTADDR, VOR_CHAN ); /*获取到右耳回复的CMD3指令转发给左耳。*/
HandleTxCommand( VHOUSE_CMD_GET_TWS_BTADDR, VOL_CHAN ); /*获取到右耳回复的CMD3指令转发给左耳。*/
#elif XUANHENG
HandleTxCommand( CMD_TWS_SET_BTADDR, VOL_CHAN );
#endif
#endif
Vox_Get_BES_Addr_Flag[VOL_TYPE] = 0x00;
Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0x00;
@ -351,7 +371,13 @@ uint8_t Key_Lift_Debounce = 0;
else
{
#ifdef VOX_TX
HandleTxCommand(VHOUSE_CMD_PAIR,VOL_CHAN);
#if XUANHENG
HandleTxCommand(CMD_TWS_GET_BTADDR,VOR_CHAN);
#else
HandleTxCommand(VHOUSE_CMD_PAIR,VOR_CHAN); //右耳发配对指令,区分耳机通道。
#endif
#endif
#ifdef _DEBUG_KEY
printf("Key Pair TX VOL(line:%d).\r\n",(uint16_t)__LINE__);
@ -384,14 +410,26 @@ uint8_t Key_Lift_Debounce = 0;
if( !( Key_TWS_Clear_Pair_Tim % KEY_LL_TX_Interval_2 ) )
{
#ifdef VOX_TX
#if XUANHENG
HandleTxCommand(CMD_CLEAR_PAIR,VOR_CHAN);
#else
HandleTxCommand(VHOUSE_CMD_CLEAR_PAIR,VOR_CHAN);
#endif
#endif
}
else
if( !( Key_TWS_Clear_Pair_Tim % KEY_LL_TX_Interval ) )
{
#ifdef VOX_TX
#if XUANHENG
HandleTxCommand(CMD_CLEAR_PAIR,VOL_CHAN);
#else
HandleTxCommand(VHOUSE_CMD_CLEAR_PAIR,VOL_CHAN);
#endif
#endif
}

View File

@ -55,6 +55,12 @@ void LED_Init(void)
SFRADDR = P1_OE;
SFRDATA = 0x0F;
SFRADDR = LED_CTL;
SFRDATA = 0x0F;
SFRADDR = P1_DRV0; //配置P10-P13输出驱动能力0:800Ω1:400Ω
SFRDATA = LED_DRV_LIMIT_SET;
LEDR_OFF();
LEDG_OFF();
LEDB_OFF();

View File

@ -162,11 +162,18 @@ void Uart0SendPacket(uint16_t Length,uint8_t *TransBuf)
uint8_t Rx0Status = 0;
uint8_t RX0_Cnt = 0;
#if XUANHENG
uint16_t RX0DataLen = 0;
#endif
#define Vox_Comm_JL_HEADER_DATA_LEN 4
#define Vox_Comm_ZK_HEADER_DATA_LEN 6
#define Vox_Comm_XH_HEADER_DATA_LEN 7
/*uart0中断处理函数*/
void uart0_Interrupt(void) interrupt Interrupt_Vector_RI_TI
{
@ -188,6 +195,49 @@ void uart0_Interrupt(void) interrupt Interrupt_Vector_RI_TI
#ifdef VOX_RX
#if XUANHENG
switch(Rx0Status)
{
case 0:
if( S0BUF == BOXHEADER )
{
Rx0Status = 1;
RX0_Cnt = 0;
RX0_Buffer[RX0_Cnt++] = S0BUF;
}
else
{
Rx0Status = 0;
RX0_Cnt = 0;
}
break;
case 1:
RX0_Buffer[RX0_Cnt++] = S0BUF;
if( RX0_Cnt == Vox_Comm_XH_HEADER_DATA_LEN )
{
RX0DataLen = RX0_Buffer[5] | (RX0_Buffer[6] << 8) + 9; //获取数据长度Headr(1Byte) + Trandsmit Dir(1Byte) + CMD(2Bytes) + datalen(2Bytes) + CRC16(2Bytes)
}
if( (RX0DataLen == RX0_Cnt) || (RX0_Cnt > COM0_Data_Lenth) ) //当接收到的data个数等于RX0DataLen这结束本次传输。
{
RX0_Cnt = 0;
Rx0Status = 0;
Uart0_RX_Finish_Flag = 1;
}
}
#else
switch(Rx0Status)
{
case 0:
@ -246,6 +296,7 @@ void uart0_Interrupt(void) interrupt Interrupt_Vector_RI_TI
default:
break;
}
#endif
#endif
}

View File

@ -134,7 +134,7 @@ void LED_Display_App(void)
#ifdef NTC_ENABLE
/*NTC保护4灯一直快闪(2Hz)*/
if( NTC_Pro_Flag || Vox_Output_Short_Flag )
if( CHG_NTC_Pro_Flag || Boost_NTC_Pro_Flag || Vox_Output_Short_Flag )
{
if( !LED_On_Flag1 )
{

View File

@ -79,25 +79,59 @@ xdata uint8_t Vox_Get_BES_Addr_Flag[2] = {0};
#endif
#ifdef VOX_TX
idata uint8_t Net_Info[2][13] = {0};
idata uint8_t MAC_Addr[2][18] = {0};
uint8_t EarPhone_Num = 0;
#endif
xdata uint8_t Earphone_Vbat[2] = 0; //对耳电量
xdata uint8_t Vox_Online_State[2] = {0}; //耳机在线标志位
bit OpenCover_TX_Cmd_Flag = 0;
#define KEY_TWS_PAIR_TIMER 2
#define KEY_TWS_PAIR_CNT 6
#if XUANHENG
xdata uint8_t Vox_Pairing_State[2] = {0}; //耳机配对状态0是无效1是正在配对2是配对成功3不处理保持当前状态。
xdata uint8_t Vox_Set_BES_Addr_Flag[2] = {0};
xdata uint8_t BES_Addr[6] = {0}; //蓝牙耳机地址Vox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR
xdata uint8_t Random_Data[8] = {0};
xdata uint8_t Bes_Bet_Level[2] = {0}; //对耳电池电量信息Bes_Bet_Level[0]左耳Bes_Bet_Level[1]:右耳
xdata uint8_t Bes_Chg_Full[2] = {0}; //对耳硬件是否满电0非满电1满电。
xdata uint8_t Tws_Paired_Record[2] = {0}; //TWS配对记录0有TWS配对记录1没有TWS配对记录
xdata uint8_t Phone_Paired_Record[2] = {0}; //手机配对记录0有与手机配对记录1没有和手机配对记录。
xdata uint8_t Bes_OTA_State[2] = {0}; //耳机静默升级状态10没有
xdata uint8_t Bes_Set_SN_State[2] = {0}; //耳机应答仓写入SN是否成功。1成功0失败
xdata uint8_t Bes_In_Pair_State[2] = {0}; //耳机进入配对状态标志位
xdata uint8_t Vox_Clear_Pair_Flag[2] = {0};
bit Vol_Bes_Addr_Flag = 0;
bit Vor_Bes_Addr_Flag = 0;
xdata uint8_t SN_Num[22] = {0}; //SN码需要从OTP的固定位置获取。
xdata uint8_t SN_Num_Start = 0; //SN码发送起始位置有开盖动作时清零。
bit gShip_Mode_Flag = 0; //船运模式标志位0正常关机1船运模式
#else
xdata uint8_t Net_Info[2][13] = {0};
xdata uint8_t MAC_Addr[2][18] = {0};
xdata uint8_t Earphone_Vbat[2] = 0; //对耳电量
#endif
/******************************************************************************\
Functions definitions
\******************************************************************************/
@ -409,6 +443,8 @@ void Vox_Det_Machine(void)
static uint8_t Vox_Output_Debounce;
static uint8_t Vox_Output_Cnt;
static bit CoverEvent_Flg1;
/*Vox 过流保护两只耳机都每隔200ms打嗝一次*/
@ -577,7 +613,8 @@ void Vox_Det_Machine(void)
#elif ZHONGKE
HandleTxCommand(VHOUSE_CMD_GET_VBAT,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
#elif XUANHENG
HandleTxCommand(CMD_HEARTBEAT,VOL_CHAN);
#endif
#endif
}
@ -592,6 +629,9 @@ void Vox_Det_Machine(void)
#elif ZHONGKE
HandleTxCommand(VHOUSE_CMD_GET_VBAT,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
#elif XUANHENG
HandleTxCommand(CMD_HEARTBEAT,VOR_CHAN);
#endif
#endif
@ -712,21 +752,40 @@ void Vox_Det_Machine(void)
if( (Vox_TX_Timer % Vox_TX_Interval_2) == 0 ) //200ms发送一次
{
#ifdef VOX_TX
#if JIELI
HandleTxCommand(VHOUSE_CMD_CLOSE_BOX,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
#elif ZHONGKE
HandleTxCommand(VHOUSE_CMD_CLOSE_WINDOW,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
#elif XUANHENG
HandleTxCommand(CMD_HEARTBEAT,VOL_CHAN);
#endif
#endif
}
else
if( (Vox_TX_Timer % Vox_TX_Interval) == 0 ) //200ms发送一次
{
#ifdef VOX_TX
#if JIELI
HandleTxCommand(VHOUSE_CMD_CLOSE_BOX,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
#elif ZHONGKE
HandleTxCommand(VHOUSE_CMD_CLOSE_WINDOW,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
#elif XUANHENG
HandleTxCommand(CMD_HEARTBEAT,VOR_CHAN);
#endif
#endif
@ -744,9 +803,17 @@ void Vox_Det_Machine(void)
#ifdef VOX_TX
#if JIELI
HandleTxCommand(VHOUSE_CMD_CLOSE_WIN_GET_VBAT,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
#elif ZHONGKE
HandleTxCommand(VHOUSE_CMD_PAIR,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
HandleTxCommand(VHOUSE_CMD_GET_TWS_BTADDR,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
#elif XUANHENG
HandleTxCommand(CMD_TWS_GET_BTADDR,VOL_CHAN);
#endif
#endif
@ -755,12 +822,20 @@ void Vox_Det_Machine(void)
if( (Vox_Output_Debounce % Vox_TX_Interval) == 0 ) //200ms发送一次
{
#ifdef VOX_TX
#if JIELI
HandleTxCommand(VHOUSE_CMD_CLOSE_WIN_GET_VBAT,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
#elif ZHONGKE
HandleTxCommand(VHOUSE_CMD_PAIR,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
HandleTxCommand(VHOUSE_CMD_GET_TWS_BTADDR,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
#elif XUANHENG
HandleTxCommand(CMD_TWS_GET_BTADDR,VOR_CHAN);
#endif
#endif
}
@ -798,7 +873,7 @@ void Vox_Det_Machine(void)
Vox_Chg_Full_Flag = 1;
Vox_Output_Debounce = 0;
Vox_Output_Cnt = 0;
Vox_Voltage_Hold_Timer = 0;
@ -818,24 +893,43 @@ void Vox_Det_Machine(void)
}
else
{
if( Vox_Output_Debounce <= Vox_COM_MSG_Tim )
if( Vox_Output_Cnt <= Vox_COM_MSG_Tim )
{
if( (Vox_Output_Debounce % Vox_TX_Interval_2) == 0 ) //200ms发送一次
if( (Vox_Output_Cnt % Vox_TX_Interval_2) == 0 ) //200ms发送一次
{
#ifdef VOX_TX
HandleTxCommand(VHOUSE_CMD_PWROFF,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
#if XUANHENG
HandleTxCommand(CMD_SHUT_DOWN,VOL_CHAN); //左耳发关机指令,区分耳机通道。
#else
HandleTxCommand(VHOUSE_CMD_PWROFF,VOL_CHAN); //左耳发关机指令,区分耳机通道。
#endif
#endif
}
else
if( (Vox_Output_Debounce % Vox_TX_Interval) == 0 ) //200ms发送一次
if( (Vox_Output_Cnt % Vox_TX_Interval) == 0 ) //200ms发送一次
{
#ifdef VOX_TX
HandleTxCommand(VHOUSE_CMD_PWROFF,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
#if XUANHENG
HandleTxCommand(CMD_SHUT_DOWN,VOR_CHAN); //右耳发关机指令,区分耳机通道。
#else
HandleTxCommand(VHOUSE_CMD_PWROFF,VOR_CHAN); //右耳发关机指令,区分耳机通道。
#endif
#endif
}
Vox_Output_Debounce++;
Vox_Output_Cnt++;
}
else
{
@ -1374,6 +1468,57 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
#endif
#if XUANHENG
/*
*******************************************************************************
* u16 CalCheckCrc16(u8 * pucFrame, u16 usLen)
*
* Description : (CRC-16-XMODE)
*
*
* Arguments : u8 *pucFrame:
u16 usLen: , byte为单位
* Returns :
*
* Notes :
*
*******************************************************************************
*/
uint16_t CalCheckCrc16(uint8_t *pucFrame, unsigned int usLen)
{
uint16_t wCRCin = 0x0000;
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)
@ -1412,6 +1557,8 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
return crc;
}
#endif
#ifdef VOX_TX
/*
*******************************************************************************
@ -1433,10 +1580,8 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
*/
void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select)
{
uint8_t dataLen = 0;
uint16_t dataLen = 0;
uint8_t tx_pData[COM0_Data_Lenth] = 0;
uint8_t i = 0;
#if JIELI
@ -1459,12 +1604,14 @@ void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select)
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;
}
@ -1489,6 +1636,7 @@ void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select)
case VHOUSE_CMD_CLEAR_PAIR:
/*Data Length*/
tx_pData[3] = 0x02;
tx_pData[5] = 0x03;
break;
@ -1498,7 +1646,9 @@ void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select)
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
@ -1626,36 +1776,164 @@ void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select)
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]; //发送随机数。
}
#if 0
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 );
/* vor、vol使用不同uart进行通讯 */
if(nVox_Chn_Select == VOL_CHAN)
{
VOL_EN_Type(VOX_COMM_Mode_Uart);
#if UART1_ENABLE
Uart1SendPacket(tx_pData[4] + 6, tx_pData);
#endif
VOL_EN_Type(VOX_VOUT_Mode);
tx_pData[10] = Bes_Bet_Level[0];
}
else
if(nVox_Chn_Select == VOR_CHAN)
{
VOR_EN_Type(VOX_COMM_Mode_Uart);
#if UART0_ENABLE
Uart0SendPacket(tx_pData[4] + 6, tx_pData);
#endif
VOR_EN_Type(VOX_VOUT_Mode);
tx_pData[10] = Bes_Bet_Level[1];
}
#else
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都使用uart0进行分时通讯。 */
VOX_EN_Type( VOX_COMM_Mode_Uart );
@ -1691,8 +1969,6 @@ void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select)
SFRDATA |= 0x04;
}
#endif
}
#endif
@ -1820,6 +2096,141 @@ void HandleRxMsg(VOX_BES_COMMAND_E RxCommand)
break;
}
#elif XUANHENG
uint8_t CMD_Type = 0;
CMD_Type = RX0_Buffer[1] >> 4;
if( CMD_Type & TWS_PC ) //PC/工装->盒子
{
}
else //耳机->盒子
{
switch(RxCommand)
{
case CMD_TWS_GET_BTADDR:
for(i=0;i<RX0_Buffer[5];i++)
{
BES_Addr[i] = RX0_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] = RX0_Buffer[7]; //左耳机蓝牙地址写入是否成功状态标志
}
else
{
Vox_Set_BES_Addr_Flag[VOR_TYPE] = RX0_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] = RX0_Buffer[9] & 0x7F; //获取耳机电量
Bes_Chg_Full[VOL_TYPE] = RX0_Buffer[9] >> 7; //获取耳机是否满电
Vox_Pairing_State[VOL_TYPE] = RX0_Buffer[10]; //获取耳机配对状态;
Tws_Paired_Record[VOL_TYPE] = RX0_Buffer[11] & 0x01; //bit0:0有TWS配对记录1没有TWS配对记录bit1:0有与手机配对记录1没有和手机配对记录。
Phone_Paired_Record[VOL_TYPE] = ( RX0_Buffer[11] >> 1 ) & 0x01;
Bes_OTA_State[VOL_TYPE] = RX0_Buffer[12];
}
else
{
Bes_Bet_Level[VOR_TYPE] = RX0_Buffer[9] & 0x7F;
Bes_Chg_Full[VOR_TYPE] = RX0_Buffer[9] >> 7;
Vox_Pairing_State[VOR_TYPE] = RX0_Buffer[10];
Tws_Paired_Record[VOR_TYPE] = RX0_Buffer[11] & 0x01;
Phone_Paired_Record[VOR_TYPE] = (RX0_Buffer[11] >> 1) & 0x01;
Bes_OTA_State[VOR_TYPE] = RX0_Buffer[12];
}
break;
case CMD_SN:
if( CMD_Type == TWS_VOL ) //根据耳机Side参数
{
Bes_Set_SN_State[VOL_TYPE] = RX0_Buffer[7]; //左耳机SN写入是否成功状态标志
}
else
{
Bes_Set_SN_State[VOR_TYPE] = RX0_Buffer[7]; //右耳机SN写入是否成功状态标志
}
break;
case CMD_GET_INTO_PAIR:
if( CMD_Type == TWS_VOL ) //根据耳机Side参数
{
Bes_In_Pair_State[VOL_TYPE] = RX0_Buffer[7]; //左耳机是否进入配对状态成功状态标志
}
else
{
Bes_In_Pair_State[VOR_TYPE] = RX0_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
}
@ -1841,8 +2252,11 @@ void HandleRxMsg(VOX_BES_COMMAND_E RxCommand)
void HandleVoxCommMsg(void)
{
uint8_t CrcCheckSum = 0;
uint16_t CrcCheckSum = 0;
uint8_t i = 0;
#if XUANHENG
uint16_t Data_Len = 0;
#endif
/*RX数据处理*/
if( Uart0_RX_Finish_Flag )
{
@ -1863,9 +2277,25 @@ void HandleVoxCommMsg(void)
if( CrcCheckSum == RX0_Buffer[ RX0_Buffer[4] + 5 ] )
#elif XUANHENG
Data_Len = RX0_Buffer[5] | ( RX0_Buffer[6] << 8 ) + 7;
CrcCheckSum = CalCheckCrc16( RX0_Buffer, Data_Len); //计算检验和
if( CrcCheckSum == (uint16_t)(RX0_Buffer[ Data_Len + 1 ] | RX0_Buffer[ Data_Len + 2 ] << 8) ) //校验和小端模式,低位在前。
#endif
{
#if XUANHENG
HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[2]);
#else
HandleRxMsg((VOX_BES_COMMAND_E)RX0_Buffer[3]);
#endif
}
else
{
@ -1877,5 +2307,4 @@ void HandleVoxCommMsg(void)
#endif
#endif

View File

@ -1,5 +1,2 @@
---- ENTER_STANDBYMODE_CNT Matches (4 in 3 files) ----
sleep.c (UsrSrc\sleep) line 40 : uint8_t Decnt_SleepDelay = ENTER_STANDBYMODE_CNT;
sleep.h (UsrInc\sleep) line 32 : #define ENTER_STANDBYMODE_CNT 15 //进入Standby Mode 延迟时间,单位:秒
SysTem_State_Machine in userapp.c (UsrSrc\userapp) : Decnt_SleepDelay = ENTER_STANDBYMODE_CNT;
SysTem_State_Machine in userapp.c (UsrSrc\userapp) : Decnt_SleepDelay = ENTER_STANDBYMODE_CNT;
---- LED_CTL Matches (1 in 1 files) ----
reg3315.h (UsrInc\inc) line 92 : #define LED_CTL 0x13