更改内容:1、优化双向通讯;2、更改按键发码功能,发码前先升压5V一段时间;3、更改开关盖VOX时序;4、增加中科蓝讯双向通讯功能;5、其它。

This commit is contained in:
Alex xu 2024-12-27 17:57:46 +08:00
parent 25cc4fb40b
commit b6c1578e23
24 changed files with 1978 additions and 1074 deletions

Binary file not shown.

View File

@ -1,805 +0,0 @@
:030000000225AF27
:1025AF00758E3075D20078FFE4F6D8FD9000007F6D
:1025BF00007E01E4F0A3DFFCDEFA75819D02260A9E
:0F2DA60053797374656D20496E69742E0D0A00A0
:102D3C001229D17BFF7A2D79A6120F6DD2AED2BE9D
:082D4C001227DF122BBF80F4F7
:101C6300010D0001130001120001110001100041D8
:101C730000D800020E00004200D200004200D6004D
:101C8300004200CB00004200CD00004200D400001F
:0F1C93004200D000004100CF004100D900C14005
:102D540075FE0F43FF8075FE2975FFB575A52175B6
:082D6400FE1E43FF01D2BD2257
:10210300AB0720400302223A9000D2E0FEA3E0781E
:1021130003CEC313CE13D8F9F0EE9000D2F09000A3
:10212300CFE024FD60301460651470030221CD24D8
:10213300FE700302220124056003022237780DE6B4
:10214300FF3395E0FEC39000D3E09FFF9000D2E001
:102153009E9000D6806E9000D2E0FEA3E0FF7C0943
:102163007DC412155A780A1214F89000D2EEF0A327
:10217300EFF07810E6FD3395E0FCC3EF9DFFEE9C96
:10218300FE7C007D051213F89000CBEE80369000A4
:10219300D2E0FEA3E0FF7C097DC412155A780A122F
:1021A30014F89000D2EEF0A3EFF07811E6FD33952A
:1021B300E0FCC3EF9DFFEE9CFE7C007D051213F84F
:1021C3009000CDEEF0A3EFF0806A780DE6FF339533
:1021D300E0FEC39000D3E09FFF9000D2E09EFE7C20
:1021E300097DC412155A780A1214F8EEF0A3EFF021
:1021F300E025E0FE9000D2E0339000D48032780DE9
:10220300E6FF3395E0FEC39000D3E09FFF9000D23A
:10221300E09EFE7C097DC412155A780A1214F8EE6A
:10222300F0A3EFF0E025E0FE9000D2E0339000D081
:10223300F0A3CEF0C240229000CFEBF0C454F044A0
:0F22430001F5A5E49000D2F0A3F09000D9F022AD
:03006B0002284820
:10284800C0E0C0F0C083C082C0D075D000C000C056
:1028580006C007E5F330E038AFA1780E760008A689
:1028680007E5A254031846F608E6F69000D9E0C337
:102878009408501718E6FE08E6FF9000D2EE8FF095
:1028880012144D9000D9E004F08005D24053A5FE03
:1028980075F301D007D006D000D0D0D082D083D035
:0428A800F0D0E0325A
:071CA200C11FC12001140362
:102CCC00E47816F67818F67814E67817F67819760C
:0E2CDC00017916E718461846F5B175B20122C7
:101E1D00E4FE9000D6E0FCA3E0FDC394D8EC94035F
:101E2D0040037F0022EF7003021F36D3ED940FECB9
:101E3D0094034003021F14ED94CBEC940050030265
:101E4D001F14D3ED94AAEC94024022D21D7814E60F
:101E5D00FF137817F6301E11D3ED94BFEC940240AA
:101E6D0004C21E80047817A607E4FE8070D3ED949B
:101E7D00AAEC94025043ED9437EC9401403BD21EF2
:101E8D007814E6FF7817F6301D13D3ED9493EC9488
:101E9D00025004C21D8006EFC3137817F678197629
:101EAD0001301011D3ED9451EC94015004C2108007
:101EBD0004E47819F6E4FE8024D3ED9437EC940114
:101ECD00501BD210E47819F6301E10ED9426EC94C8
:101EDD00015004C21E800478197601E4FE301B11F6
:101EED00C3ED94F3EC94025006C21BE4FE80027E17
:101EFD0001301C2FD3ED94DDEC94004006C21CE4A0
:101F0D00FE80207E01801CD3ED940FEC94034006DF
:101F1D00D21B7E01800DD3ED94CBEC94005004D2F6
:101F2D001C7E01C219C21A8058C21BC21CD3ED946B
:101F3D009FEC94035031ED9471EC940040293019CD
:101F4D0010ED9484EC94035006C219E4FE80027ED9
:101F5D0001301A2DD3ED9482EC94004006C21AE4A0
:101F6D00FE801E7E01801AD3ED949FEC94034004F5
:101F7D00D219800BC3ED9471EC94005002D21A7EED
:031F8D0001AF069B
:011F9000222E
:10245500E5E65480FFE4FCFDFEEF700953B3FE781A
:1024650015F6C21F2278157601E5E830E50575E811
:1024750020800FE5E530E1028008E5F230E50775DB
:10248500F22053B3FE22E5F2540C601053B3FEE57F
:10249500F354C0607375F20C75F3C02275F3C07FF9
:1024A50001121E1DEF600653B3FED22022C220E5A5
:1024B500F230E423C39000D5E094D29000D4E094A8
:1024C5000F500575F210800353B3FE201F3AD21F3B
:1024D50078157603D236227916E77818461846F528
:1024E500B17819E6F5B275FE7043FF1843B311785C
:1024F5001CE6FFD394014002C23FEFD39403400290
:09250500C23E78157602C21F22C5
:041CA900C13AC13B40
:10000E00303A10EFB4010475B5C02253B5BFED44BC
:04001E0080F5B52292
:102D9500E5B55480FFEF6008303A05E4F5B5C23A71
:012DA500220B
:10290F00E5E530E103C23A22E5E230E705C23AD20B
:10291F003B22E5E830E00FC23A302A4575E8017DE9
:10292F0038E4FF02000EE4FF121E1DEF6008C23AEA
:10293F00122D95D22022C220303F02801FD23A3072
:10294F003B1F7815E6B40219C39000D5E0941090A0
:10295F0000D4E0940E4005D23AC23B22122D95C20C
:02296F003A220A
:081CAD00C13CC13D4100F1FF03
:102BF100E5E25408FF9000F1E06F601FE5E230E389
:102C0100089000F07401F08005E49000F0F0D23CEF
:0B2C1100D23DD236D2429000F1EFF02D
:012C1C002295
:101CB500C128C127C126011D004100EA004100E9F4
:061CC500004200EB0000EC
:101F9100E5E25402FFE4FCFDFEEF70369000EB75C4
:101FA100F00112144D9000EBE0FEA3E0FFC3946436
:101FB100EE94004007202414D2248010C3EF9490A3
:101FC100EE94014007202504D225D226D221C22237
:101FD100803A302130D242C221D222C2259000EB78
:101FE100E0FEA3E0FFD39419EE94005008D228D26A
:101FF10023D2368010C3EF94FAEE940050073024B8
:1020010004C224D227E49000EBF0A3F0302224C2D2
:102011002230270BC227781D7602E49000EAF030C7
:102021002606C226781D760330230CC223781D763E
:10203100018004E4781DF69000F0E0640160030281
:102041002102781DE6640260030220CB9000EAE0E1
:10205100C3940150107D017F01121A9FE490007119
:10206100F0A3F080529000E9E0D394054004E4F03D
:102071008039900072E0B4010FE4FD7F02121A9FD3
:102081009000727402F0802F900072E06402702759
:10209100900071E0601A7D017F02121A9FE49000A6
:1020A10071F0A3F09000EAF0781DF67F03022A2870
:1020B100E4FD7F01121A9F9000EAE0D394144032AC
:1020C1009000E9E004F0E4A3F022781DE6640370D7
:1020D100309000EAE0FFC3941E501EEF54036004E9
:1020E1007D0180099000EAE030E007E4FD7F031202
:1020F1001A9F9000EAE004F022E4781DF69000EACD
:01210100F0ED
:0121020022BA
:101CCB00410079004100780041007A004100770023
:102C6C0075FE0675FF3C75FE0E53FF0F75FE0F5378
:102C7C00FFF075FE0375FFFFC282C283C285C2845A
:012C8C002225
:102D0800EF14600D14600D14600D2403700BD28253
:0A2D180022D28322D28422D2852227
:052CAD00900000E0FFB3
:102CB200EF14600D14600D14600D2403700BC282BA
:0A2CC20022C28322C28422C28522AE
:10297100E4FF747B2FF582E43400F583E4F0747F87
:102981002FF582E43400F583E4F0EF25E02483F5AC
:1029910082E43400F583E4F0A3F0EF25E0248BF525
:1029A10082E43400F583E4F0A3F0EF25E02493F50D
:1029B10082E43400F583E4F0A3F0EF25E0249BF5F5
:0F29C10082E43400F583E4F0A3F00FEFB404A335
:0129D00022E4
:1028AC00AC07747B2CF582E43400F583EDF0EAC3BD
:1028BC0013FEEB13FFEC25E02483F582E43400F5E2
:1028CC0083EEF0A3EFF0AF03EC25E0248BF582E46C
:1028DC003400F583EAF0A3EFF0900005E0FEA3E0EE
:1028EC00FFEC25E02493F582E43400F583EEF0A3AD
:1028FC00EFF0EC25E0249BF582E43400F583E4F062
:03290C00A3F02213
:102B5100747B2FF582E43400F583EDF0747F2FF55B
:102B610082E43400F583EBF0EF25E02483F582E481
:102B71003400F583E4F0A37469F0EF25E0249BF5BC
:0B2B810082E43400F583E4F0A3F022AE
:100B9500E4900000F0F0900000E0FFC394044003EF
:100BA500020ED7747B2FF582E43400F583E06022D2
:100BB50024FE6024147003020C9F147003020D16AA
:100BC50024036003020E73900000E0FF122D08025B
:100BD5000E73122CAD020E73900000E0FF25E02489
:100BE50083F582E43400F583E0FCA3E0FDEF25E026
:100BF500249BF582E43400F583E0FEA3E0C39DEE7B
:100C05009C5005122D088003122CAD900000E0FFCA
:100C150025E0248BF582E43400F583E0FCA3E0FDB8
:100C2500EF25E0249BF582E43400F583E0FEA3E0A4
:100C3500C39DEE9C5003020E73900000E025E02456
:100C45009BF582E43400F583E4F0A3F0EF25E0247E
:100C550093F582E43400F583E0FEA3E0D39400EE3F
:100C650094004016900000E025E02493F582E434DA
:100C750000F58374FFF5F012144D900000E0FF2598
:100C8500E02493F582E43400F583E0FCA3E04C60B6
:100C950003020E73747B2F020D32900000E0FF25D6
:100CA500E02483F582E43400F583E0FCA3E0FDEF66
:100CB50025E0249BF582E43400F583E0FEA3E0D330
:100CC5009DEE9C5005122D088003122CAD9000005E
:100CD500E0FF25E0248BF582E43400F583E0FCA3F6
:100CE500E0FDEF25E0249BF582E43400F583E0FE8A
:100CF500A3E0C39DEE9C5003020E73900000E02517
:100D0500E0249BF582E43400F583E4F0A3F0020EC1
:100D150073900000E0FF247FF582E43400F583E062
:100D25007017122ACAC241900000E0247BF582E4C4
:100D35003400F583E4F0020E73900000E0FF247F99
:100D4500F582E43400F583E0FE6402704B20411423
:100D5500D241EF25E02483F582E43400F583E4F005
:100D6500A37469F0900000E0FF25E02483F582E498
:100D75003400F583E475F00112144DEF25E024836A
:100D8500F582E43400F583E0FCA3E0C394FEEC9423
:100D9500005003020E5D804EEE6401705A2041172B
:100DA500D241900000E025E02483F582E43400F58B
:100DB50083E4F0A374FEF0900000E0FF25E02483B7
:100DC500F582E43400F58374FFF5F012144DEF2538
:100DD500E02483F582E43400F583E0FEA3E0D394B8
:100DE50069EE94005072900000E0247FF582E434AF
:100DF50000F583E4F08061900000E0FF247FF58238
:100E0500E43400F583E06403704EEF25E02483F5B8
:100E150082E43400F583E0FEA3E0FFC394FEEE9484
:100E2500004004D241800BD3EF946AEE9400500247
:100E3500C241900000E025E0248330410DF582E4B5
:100E45003400F58374FFF5F0800BF582E43400F58A
:100E550083E475F00112144D900000E0FF25E024B5
:100E650083F582E43400F583A3E0FD122A7990002E
:100E750000E0FF7011747B2FF582E43400F583E008
:100E8500900079F08043900000E0B40110247BF5D8
:100E950082E43400F583E0900078F0802C90000027
:100EA500E0B40210247BF582E43400F583E0900081
:100EB5007AF08015900000E0B4030E247BF582E4FF
:100EC5003400F583E0900077F0900000E004F00234
:100ED5000B9BE4900000F0900000E0FFC3940450E9
:100EE5001BEF25E0249BF582E43400F583E475F0DF
:0C0EF5000112144D900000E004F080DBBE
:010F010022CD
:0B1CDB004200ED00004100EF0FC1428D
:102C1D0075FE1E43FF0275FE2143FF0875D48775AF
:102C2D00FE2143FF0475FE2143FF02300D0775FEA3
:0C2C3D002453FFC32275FE2443FF3C22F9
:10005600D2AC759A01D2B9D2BDD2A9D2AB75FE295E
:0400660043FFB02282
:10006E00C2ACE4F59AD2B9C2BDC2A9C2AB75FE2923
:04007E0053FF4F22BB
:092DEB0012006E4387020200563B
:102D82007815E664026006200F03304204C242C393
:032D920022D32227
:1029D10075FE01E4F5FF122D22122DDE122DC3E446
:1029E100F58675B7C375FE6A75FF0475FE6C43FF06
:1029F1000A122D5475FE8043FF0275FE0E53FFFC33
:102A010043FF0175FE1775FF3CD2A8D2AF122CCC43
:102A11007D697F03122D6C122C6C122971122C1DF1
:072A21009000DE7401F022B9
:03000300020006F2
:03000600D24232B1
:03004B00022DFC87
:062DFC0075EB3CD24232EF
:03005300022E0278
:062E020075F302D242321A
:101CE6002040290000000000000000000000000065
:101CF60000000000000000000000000000000000DE
:101D060000000000000000000000000000000000CD
:101D160000000000000000000000000000000000BD
:0F1D2600000000C139C1384100F2004100F30054
:0E2DB500900029EFF0122DF4900029E0FF228B
:082DF4002037FDD2378F992230
:102D220075FE0E53FFF343FF04D2DF43878075BA6B
:0A2D32000375AAFD759852D2AC2279
:03002300022DD1DA
:0D2DD100309904C299C237309802C298327E
:0D2DDE0075BB03759DDC759B92439A012225
:062B8C0090004312152B1E
:102B9200E4900046F0F0900046E0C39FE49E501C93
:102BA2002038FDD238900043E475F001121514125A
:0C2BB200135DF59C900046E004F080DA12
:012BBE0022F4
:0300830002264F03
:10264F00C0E0C083C082C0D075D000C000C006C03B
:10265F0007E59B30E105539BFDC238E59B30E06DEC
:10266F00539BFED2429000F2E014601914603424A0
:10267F0002705AE59C9000F2B455087401F0A3E47F
:10268F00F0800E8018E59C9000F2B4AA107402F04E
:10269F00A3E0FF04F074292FF8A69C8030E4F0A388
:1026AF00F0802A9000F3E0FF04F074292FF8A69C25
:1026BF00782BE62404FFE433FEE0C39FEE6480F83A
:1026CF007480984008E4F09000F2F0D239D007D02F
:0C26DF0006D000D0D0D082D083D0E032F2
:10225200506F776572204F6E205374617465214808
:10226200616C6C28307825782920286C696E653A73
:102272002564290D0A004177616B6520536F7572E1
:1022820063653A57505F466C6167303A307825781B
:102292002C57505F466C6167313A307825782C575D
:1022A200505F466C6167333A307825782E286C6926
:1022B2006E653A2564290D0A00536C6565702053DA
:1022C2007461746520286C696E653A2564290D0A6B
:1022D20000535441303A307825782C535441313AE6
:1022E200307825782C535441323A307825782C5363
:1022F2005441333A307825782C535441343A30786B
:1023020025782E4465635F536C6565703A25640DCC
:102312000A006164632063686E3A25642C41766723
:102322005F4164633A25642C49766F6C3A25642CCC
:10233200566261743A25642C566F75743A25642C82
:1023420049766F723A25642C566E74633A25642E70
:102352000D0A004465636E745F536C656570446575
:102362006C61792052656C6F61642E0D0A00456EB6
:10237200746572205374616E646279204D6F646576
:04238200210D0A001F
:101D35004300DE0402024100DB004100DC00C13645
:0E1D4500C1354100DD004100E1004100DA003F
:10002600E4FB7D04FF122B51E4FB7D047F01122BC0
:1000360051E4FB7D047F02122B51E4FB7D047F0318
:03004600022B5139
:1007B600303656C236E49000DCF0900005F0A3F027
:1007C600FBFAFDFF1228ACE4900005F0A3F0FBFA5B
:1007D600FD7F011228ACE4900005F0A3F0FBFAFDC2
:1007E6007F021228ACE4900005F0A3F0FBFAFD7F2F
:1007F600031228AC9000797402F0900078F0900013
:100806007AF0900077F0D2422220200C200B0302CF
:1008160008BD300D030208BD203105D231D2362283
:10082600900079E06403601A900005E4F0A3740A6E
:10083600F07B147A007D02E4FF1228AC90007974F4
:1008460003F0900078E06403601A900005E4F0A3DA
:10085600740AF07B147A007D027F011228AC9000A6
:10086600787403F090007AE06403601A900005E45F
:10087600F0A3740AF07B147A007D027F021228AC82
:1008860090007A7403F0900077E06403601A900099
:1008960005E4F0A3740AF07B147A007D027F03124C
:1008A60028AC9000777403F09000DCE0C3942850E5
:1008B600030209F4D20D2230310CC231C233C232E6
:1008C600C23DC20CD2357815E6640260030209CE39
:1008D600301F5C203305D233120026E4900005F069
:1008E600A3F0FBFA7D01FF1228ACE4900005F0A30B
:1008F600F0FBFA7D017F011228ACE4900005F0A31D
:10090600F0FBFA7D017F021228ACE4900005F0A30B
:10091600F0FBFA7D017F031228AC9000797401F098
:10092600900078F090007AF0900077F00209C520E8
:10093600320CD232D236E49000E1F00209C59000C2
:10094600DCE0C394015057E004F09000E1E014604D
:100956001A14602714603424037064900079E064EC
:1009660004605C7B017D04E4FF802E900078E064E7
:1009760004604C7B017D047F01801E90007AE06458
:1009860004603C7B017D047F02800E900077E0646A
:1009960004602C7B017D047F03122B518021900083
:1009A600DCE0C3940F5005E004F08013E49000DC13
:1009B600F09000E1E004F0E0C394044002E4F0C2E9
:1009C6003DC20CC228D2342230320AC2321200266C
:1009D600D236D23522203D0C203409200C062028A0
:1009E60003020B949000DCE0FFC394015004E00482
:1009F600F022EFC394644003020B3F9000DCE00456
:100A0600F0781BE6C394195037900079E0640370C0
:100A160003020B94E4900005F0A3F07B64FA7D03D7
:100A2600FF1228AC9000797404F0E4900005F0A35E
:100A3600F0FBFAFD7F011228AC9000787402803238
:100A4600781BE6C394325041E4900005F0A3F0FB16
:100A5600FA7D01FF1228AC9000797401F0E4900051
:100A660005F0A3F0FBFA7D017F011228AC90007817
:100A76007401F0E4900005F0A3F0FBFAFD7F02128A
:100A860028AC90007A74028048781BE6C3944B50D9
:100A960057E4900005F0A3F0FBFA7D01FF1228ACA5
:100AA6009000797401F0E4900005F0A3F0FBFA7D64
:100AB600017F011228AC9000787401F0E4900005E3
:100AC600F0A3F0FBFA7D017F021228AC90007A7445
:100AD60001F0E4900005F0A3F0FBFAFD7F03122875
:100AE600AC9000777402F022781BE6C3946440034E
:100AF600020B94E4900005F0A3F0FBFA7D01FF12CF
:100B060028ACE4900005F0A3F0FBFA7D017F01120A
:100B160028ACE4900005F0A3F0FBFA7D017F0212F9
:100B260028ACE4900005F0A3F0FBFA7D017F0312E8
:100B360028AC90007974018048C23DC234C20CC210
:100B460028E4900005F0A3F0FBFAFDFF1228ACE4C0
:100B5600900005F0A3F0FBFAFD7F011228ACE490AB
:100B66000005F0A3F0FBFAFD7F021228ACE490002A
:100B760005F0A3F0FBFAFD7F031228AC9000797410
:0E0B860002F0900078F090007AF0900077F086
:010B9400223E
:102C8D009000D8E0FF04F01221039000D8E0B406C4
:102C9D000204F09000D8E0C3940840037402F022BF
:102CEA0012245512290F122BF1121F911226EB30C2
:0E2CFA00290BC22912250E1207B612182F221E
:10159900E4900000F09000DEE0FFA3E0FE6F70032E
:1015A90002165FA3EEF09000DEE0A3F024FE605780
:1015B90014700302164514700302164C24036003C9
:1015C90002182E900005E4F0A37403F07B647A00FE
:1015D9007D02E4FF1228AC900005E4F0A37403F047
:1015E9007B647A007D027F011228AC7BFF7A227925
:1015F900529000F0E0FF900004E4F0A3EFF0A37430
:1016090001F0A374E3804B300D09D23C75E80CC29C
:101619000BC20D7BFF7A227978AFF6900004E4F0D3
:10162900A3EFF0AFF8A3E4F0A3EFF0AFFAA3E4F06F
:10163900A3EFF0A37401F0A374F880169000EF747F
:101649000FF0227BFF7A2279BB9000047402F0A389
:101659007410F00217B59000DFE024FE60351460C5
:10166900761470030217C82403600302182E900031
:10167900DAE004F0E0C39408500302182E9000DE6B
:101689007402F0E49000DAF0781CE6600302182E88
:101699000217C1E5F6700CE5F87008E5FA7004E583
:1016A900E1602D9000DE7403F0E5F6540FFFE4FCD1
:1016B900FDFE7B08FAF9F8C31214E770069000DE04
:1016C9007404F075E11F75F60F75F8FC75FABC2204
:1016D9009000DE7403F022202D0302182EC22D7B08
:1016E900FF7A2279D3AFE2900004E4F0A3EFF0AFE0
:1016F900E3A3E4F0A3EFF0AFE4A3E4F0A3EFF0AFCA
:10170900E5A3E4F0A3EFF0AFE6A3E4F0A3EFF090D4
:1017190000EFE0FF90000EE4F0A3EFF0120F6D7BF5
:10172900FF7A2379149000D8E0FF900004E4F0A335
:10173900EFF09000D2E0FFA3E0900006CFF0A3EF16
:10174900F09000CBE0FFA3E0900008CFF0A3EFF00A
:101759009000D4E0FFA3E090000ACFF0A3EFF0904F
:1017690000D0E0FFA3E090000CCFF0A3EFF09000D1
:10177900CDE0FFA3E090000ECFF0A3EFF09000D6EC
:10178900E0FFA3E0900010CFF0A3EFF0120F6D90EF
:1017990000EFE0D394004017E014F0204203021850
:1017A9002EC242740FF07BFF7A237955020F6D7BAD
:1017B900FF7A237970120F6D9000DE7404F0221203
:1017C9002D82505B122C1D7F04122A28122D95E4BC
:1017D900900005F0A3F0FBFAFDFF1228ACE490009D
:1017E90005F0A3F0FBFAFD7F011228ACE490000597
:1017F900F0A3F0FBFAFD7F021228ACE4900005F09B
:10180900A3F0FBFAFD7F031228AC9000797402F073
:10181900900078F090007AF0900077F0022DEB902C
:0518290000DE7402F076
:01182E002297
:102BBF00302C26C22C9000DBE0FF04F0EF14600CE9
:102BCF0014600E24027012122C8D800D122CEA80CC
:102BDF0008121599E49000DBF0302E05C22E120B6F
:022BEF0095222D
:102386005258315F4275666665725B305D3A3078E9
:1023960025782C5258315F4275666665725B315DF1
:1023A6003A307825782C5258315F427566666572E8
:1023B6005B325D3A307825782C5258315F4275662B
:1023C6006665725B335D3A307825782C5258315FFA
:1023D6004275666665725B345D3A307825782C52B4
:1023E60058315F4275666665725B355D3A307825B1
:1023F600782C5258315F4275666665725B365D3A77
:10240600307825782C6C696E653A25640D0A0000D3
:1024160000000000000000000000000000000000B6
:1024260000000000000000000000000000000000A6
:102436000000000000000000000000000000000096
:0F24460000000000000000000000000000000087
:101D5300C10FC10CC10E410073FFC10B42004D0006
:101D63000042004B0000420071000042006E000080
:101D73004200740000C10D019D00106900000000C5
:101D83000000000000000000000000002024790093
:101D93000000000000000000000000000000000040
:101DA3000000000000000000000000000000000030
:071DB3000000004100700078
:102A2800EF24FE601E14602814602F24FE603524F5
:102A380005703D43BD8853BDBB75FE6F53FFF24320
:102A4800FF092243BDCC75FE6F53FFFE43FF0C22E6
:102A580053BD7753B7CF43B7302253B7CF43B703EC
:102A680053BD772253B7CC53BD7775FE6A43FF3009
:012A7800223B
:10182F00203A03021A66303C57200E0A7D3FE4FF30
:10183F0012000ED20E227F03122A28E490004AF0E3
:10184F00900048F0A3F0C2009000F0E07024C20CAA
:10185F00D201D202C203C207C208C209900071F0BE
:10186F00A3F0D20FC23590006CF0A3F0900076F089
:10187F008008C201C202D203C205C20BC20DC23C14
:10188F00200303021921900048E0C394055003027E
:10189F001A04900049E0C3940550077F06122A28C6
:1018AF00802620003C90004AE0FFD3940B501EEF9F
:1018BF0054037003FD800990004AE020E0077D018A
:1018CF007F06121A9F90004AE004F080457F0412B1
:1018DF002A28E490004AF0D200D204C20EC20F8030
:1018EF0031300404C2048022E5E354A0FBE4FAF98A
:1018FF00F8900047E0FFE4FCFDFEC31214E760120E
:10190F00E5E354A06004D20CD236E5E354A0900076
:10191F0047F0200103021A63303531200E257D3F39
:10192F00E4FF12000ED20ED20FE490006CF0A3F081
:10193F00900076F0900049F0900048F090004AF047
:10194F00C207227F03122A28C2358031900048E057
:10195F00D394035003021A04900049E0FFD3940B71
:10196F00501BEF54037003FD8009900049E020E005
:10197F00077D017F81121A9F900049807890004A5D
:10198F00E0FFD39432501BEF54037003FD80099096
:10199F00004AE020E0077D017F07121A9F90004A5E
:1019AF008053E5E8540C6026200D1E90004AE00499
:1019BF00F0E0C394055003021A9EE4F075E80C7F23
:1019CF0003122A28D20BC20F227F04022A28C20B2D
:1019DF00C20D3002097F03122A28C2028076200727
:1019EF003FE5E354AC64AC6003303E23900048E025
:1019FF00D394325004E004F022D207E490004AF06E
:101A0F00900048F0C208C20E7F04122A2880459029
:101A1F00006DE0703F7B017A00794F1200868034B1
:101A2F0090004AE0FFD3940B501EEF54037003FD58
:101A3F00800990004AE020E0077D017F80121A9F05
:101A4F0090004AE004F0800C200809D2087F0412AD
:101A5F002A28C20FC2062220060BD2067F04122AA2
:101A6F0028C20F8022E5E354A0FBE4FAF9F89000B6
:101A7F0047E0FFE4FCFDFEC31214E76012E5E354F8
:0F1A8F00A06004D20CD236E5E354A0900047F0DB
:011A9E002225
:0600860090000012152B92
:10008C00900076E0147003020163147003020242C4
:10009C001470030202B314700302041F24046003DF
:1000AC0002059F90000012150B90001E1213766033
:1000BC000302059F789DE6D3940A50260690001AF9
:1000CC00743F1213D6300A0302059F9000001215DC
:1000DC000B90001A121376FDE4FF12000ED20A02E6
:1000EC00059FE4789DF6C20A90000012150B900053
:1000FC0016E41213D6900015E41213D6900013E4F4
:10010C001213D6900012E41213D6900011E41213BD
:10011C00D6900010E41213D6900018E41213D69067
:10012C000017E41213D690000EE4F5F01214BA90F6
:10013C00000CE4F5F01214BA900019E41213D690E6
:10014C00001B743F1213D69000767401F0E49000FB
:10015C004DF0A3F002059FE5E35408FFE4FCEF60CB
:10016C001CE5E35404601690000012150B90001E61
:10017C0074011213D6E4900076F002059FE5E35467
:10018C0008FFE4FCEF704A9000CDE0FEA3E0FF9086
:10019C00000012150B900002EE8FF01214BA7D05C0
:1001AC001213F8EF7802C333CE33CED8F9FF900098
:1001BC000012150B900006EE8FF01214BA9000CEC0
:1001CC00E025E0FF9000CDE03390000A8FF0121490
:1001DC00BAE5E35404FFE4FCEF704F9000CBE0FE73
:1001EC00A3E0FF90000012150BEE8FF012149B9001
:1001FC0000CBE0FEA3E0FF7D051213F8EF7802C3FD
:10020C0033CE33CED8F9FF90000012150B900004BA
:10021C00EE8FF01214BA9000CCE025E0FF9000CBEA
:10022C00E0339000088FF01214BA90000012150BF6
:10023C0090001D020594D390004EE0940590004D63
:10024C00E094005002806FE490004DF0A3F0E5E3E1
:10025C005408FFEF701F9000CDE0FEA3E0FF90006C
:10026C000012150B90000EEE8FF01214BA900018BD
:10027C0074011213D6E5E35404FFE4FCEF701F90F5
:10028C0000CBE0FEA3E0FF90000012150B90000CD9
:10029C00EE8FF01214BA90001774011213D690005E
:1002AC00767403F002059FD390004EE09402900008
:1002BC004DE09400500AE475F00112144D02059FB4
:1002CC00E490004DF0A3F090000012150B90000A82
:1002DC00121463FFAEF090000E121463D39FE5F07E
:1002EC009E501C90000012150B900008121463FF16
:1002FC00AEF090000C121463D39FE5F09E4011E415
:10030C00900076F090000012150B90001D0203E196
:10031C0090000012150B9000181213766401706D8A
:10032C0090000E121463FFAEF0D39414EE940050B0
:10033C0031E5E330E31F90001674011213D69000E0
:10034C001A121376C3943F404490000012150B9080
:10035C000018E4803590000012150B900013740106
:10036C00802890000012150B900006121463FDD328
:10037C00EF9DEE95F0900000400812150B900013C5
:10038C00800612150B90001674011213D690000003
:10039C0012150B9000171213766401600302059F6F
:1003AC0090000C121463FFAEF0D39414EE94005032
:1003BC0034E5E330E22290001574011213D690005C
:1003CC001A121376C3943F500302059F900000123B
:1003DC00150B900017E4803590000012150B90005F
:1003EC00127401802890000012150B900004121456
:1003FC0063FDD3EF9DEE95F0900000400812150BB5
:10040C00900012800612150B90001574011213D671
:10041C0002059FD390004EE0941490004DE09400A0
:10042C005031E475F00112144D9000CDE0FEA3E0C4
:10043C00FF90000012150B90000EEE8FF01214BA04
:10044C009000CBE0FFA3E090000CCF8FF01214BA19
:10045C0002059FE490004DF0A3F090000012150BE4
:10046C00900018121376640160030204FD900017CB
:10047C001213766401707A900006121463FFAEF0CA
:10048C0090000E121463FDACF0C39FEC9E401890CC
:10049C00000012150B90000A121463FFD3ED9FECB1
:1004AC0095F0500302059F90000012150B9000046C
:1004BC00121463FFAEF090000C121463FDACF0C389
:1004CC009FEC9E401890000012150B90000812141F
:1004DC0063FFD3ED9FEC95F0500302059F90000055
:1004EC0012150B90001674011213D690001502050C
:1004FC009490000012150B90001812137664017082
:10050C0041900006121463FFAEF090000E121463BB
:10051C00FDACF0C39FEC9E401590000012150B90A3
:10052C00000A121463FFD3ED9FEC95F04014900079
:10053C000012150B90001674011213D690007674ED
:10054C0002F090000012150B900017121376640144
:10055C007041900008121463FFAEF090000C12145E
:10056C0063FDACF0D39FEC9E501590000012150B60
:10057C00900004121463FFC3ED9FEC95F05014909F
:10058C00000012150B90001574011213D690007612
:10059C007402F090000012150B900018121376FFE5
:1005AC006401600D9000171213766401600302075A
:1005BC009C900013121376FE6401600D90001212D1
:1005CC00137664016003020716EFB4011E90001746
:1005DC00121376B40115EEB40111900013121376B8
:1005EC00B4010890001474011213D6900018121361
:1005FC0076FFB40118900017121376701090001348
:10060C001213766401702390001404801AEF701A90
:10061C00900017121376B40111900012121376B4D5
:10062C00010890001474011213D6900013E41213F5
:10063C00D6900012E41213D69000141213766401B3
:10064C0060030207B590000012150B90001A1213EC
:10065C0076D39400400890001A74FE1213A39000F5
:10066C0019121376FF90001A121376D39F401B9029
:10067C0000D5E024C8FF9000D4E03400FEC3900005
:10068C00D1E09F9000D0E09E504890000012150BD6
:10069C00900019121376FF90001A121376D39F90C4
:1006AC000000501312150B90001AEF1213D6900085
:1006BC001CE41213D6801312150B90001C7401123B
:1006CC0013D690001A74021213A39000767404F0DF
:1006DC0080139000767402F090000012150B9000BD
:1006EC001CE41213D6E490004DF0A3F0900000121D
:1006FC00150B900014E41213D690001C121376FF05
:10070C0090001A121376FD02079990000012150B37
:10071C009000161213766401600D9000151213767A
:10072C00640160030207B5900016E41213D6900022
:10073C0015E41213D690001A121376C3943F500E80
:10074C0090000012150B90001A74021213A3900063
:10075C00767404F090000012150B90001B121376A7
:10076C00FF90001A121376C39F40139000001215CD
:10077C000B90001AEF1213D69000767401F09000D3
:10078C000012150B90001A121376FDE4FF02000EF6
:10079C00900076E0D394024010E4F0900000121523
:0907AC000B90001E74011213D61B
:0107B5002221
:0B2B0E0090004312152B900046EDF0E4
:102B1900E4FE900046E0FD14F0ED6029900043E4E6
:102B290075F00112151412135D6EFEE4FFEFC394E4
:102B39000850DFEE30E007C313648CFE8004EEC357
:072B490013FE0F80E8AF0648
:012B50002262
:081A9F00900000EFF0A3EDF050
:101AA700E4A3F078037C007D017BFF7A247915FE9F
:101AB7007F40121337E4900003F0A37455F0A3742A
:101AC700AAF0900000E0FE900007F0900001E0FD12
:101AD700900073F0EE1215341AF8011B27021B76DB
:101AE700031B83061B83071BC8801BD08100001BB9
:101AF700DE9000067402F0ED700E9000087402F09C
:101B0700E4900071F0021BDE900001E064016003C5
:101B1700021BDE90000804F0E4900072F0021BDE66
:101B2700900006741BF07F05900001E075F012A489
:101B370024792FF8E6FE74032FF582E43400F58349
:101B4700EEF00FEFB412E17F17EFC39408400302E2
:101B57001BDE900001E075F008A424692FF8E6FE6B
:101B670074032FF582E43400F583EEF00F80DA90EA
:101B770000067402F090000804F0805B9000067481
:101B870005F09000087401F0781BE6A3F0A3742019
:101B9700F0900001E0FF700D90006EE07002800F82
:101BA70090006F8015EFB4012E90006FE0700890E1
:101BB700000B74FFF0802090006EE090000BF08027
:101BC700169000067401F0800E9000067402F090E3
:101BD7000070E0900008F0900006E02404FF9000F9
:101BE70002F0FD7B017A007903122B0E900002E0D0
:101BF7002403F582E43400F583EFF07F01122A28ED
:101C0700900001E0FF700843BD0253BDFE8016EF50
:101C1700B4010843BD2053BDEF800AEFB4FF06436C
:101C2700BD2253BDEE900002E02402FFE433FE7BA9
:101C3700017A007903122B8C900001E0FF700753A3
:101C4700BDFD43BD0122EFB4010753BDDF43BD1006
:0B1C570022EFB4FF0653BDDF43BD11B8
:011C6200225F
:10276900EF24FA605014604D24067069E4FE742D5C
:102779002EF8E6FF900073E075F012A424792EF884
:10278900A6070EEEB412E7E4FE743F2EF8E6FF90BA
:102799000073E075F008A424692EF8A6070EEEB4BC
:1027A90008E7900073E0700690007104F022900031
:1027B900727401F022782DE6B4E30D90004B740198
:1027C900F008E690006EF02290004C7401F0782E2B
:0527D900E690006FF026
:0127DE0022D8
:1026EB00E4900000F0303975C2397BFF7A2379868C
:1026FB007829E6FF900004E4F0A3EFF008E6FFA3CF
:10270B00E4F0A3EFF008E6FFA3E4F0A3EFF008E694
:10271B00FFA3E4F0A3EFF008E6FFA3E4F0A3EFF0D0
:10272B0008E6FFA3E4F0A3EFF008E6FFA3E4F0A3B1
:10273B00EFF0A37406F0A374A7F0120F6D7B007A71
:10274B00007929782BE62403FD122B0E782BE62437
:0D275B002CF8E6B50707782CE6FF12276979
:01276800224E
:101DBA00011C00011B00C13EC13F011A50602800EE
:101DCA00A30BB80BEA0C1C0C800CB20CE40D160D1C
:101DDA00480D7A0DAC0DF70E420E880ED80F0A0F79
:091DEA003C0F870FD2101D106898
:10250E00E4FF7815E6B40225EF25E024A3F582E476
:10251E003400F583E0FCA3E02432FDE43CFCC390E0
:10252E0000D5E09D9000D4E09C50208023EF25E064
:10253E0024A3F582E43400F583E0FCA3E0FDC39010
:10254E0000D5E09D9000D4E09C40050FEFB414B28E
:10255E00781CE6FEEFD39E781A400306800116E53E
:10256E00E1600DE4F5E1781CEFF675F005A418F6C0
:10257E00781AE6FED394965006EEC3940A500D7860
:10258E001CEFF675F005A418F6187650781CE6FFC9
:10259E00D394005003D23F22EFD394015002D23E87
:0125AE00220A
:101DF3004100E5004100E8004100E4004200E20048
:101E0300004100E600C12BC12CC12EC12AC129C14A
:091E13002D4100E700C12FC13090
:1027DF009000E7E06062E4F0D22B9000E5E004F0B7
:1027EF00E0C394054004E4F0D22C9000E8E004F03C
:1027FF00E0C3940A4004E4F0D22E9000E2E475F0B6
:10280F000112144DC39000E3E094649000E2E09451
:10281F00004006E4F0A3F0D2299000E4E004F0E0D9
:10282F00C394FA4013E4F0D22A9000E6E004F0E0FB
:09283F0094044004E4F0D22D22BF
:03000B00022C497B
:102C4900C0E0C083C082C0D074FC258CF58C74664A
:102C5900258AF58A9000E77401F0D0D0D082D0831C
:032C6900D0E03286
:0E2DC300758901758CFC758A66D2A9D28C22A6
:102ACA00EFD39401501675FE0EEF25E02404FE7430
:102ADA0003A806088002C333D8FC801475FE0FEFE2
:102AEA0024FE25E0FE7403A806088002C333D8FC3E
:102AFA00F452FFEFB4040C75FE0F53FFF075FE0E8F
:042B0A0053FF0F2244
:102D6C0075FE54EF5407F5FF75FE56AF058FFF75D2
:062D7C00FE5375FF012269
:102A7900EFD39401501875FE0EEF25E02404FE747F
:102A890003A806088002C333D8FC42FF801675FEEE
:102A99000FEF24FE25E0FE7403A806088002C33365
:102AA900D8FC42FFEF70038DCE22EFB401038DCF26
:102AB90022EFB402038DDE22EFB40304AF058FDFEA
:012AC90022EA
:032FFD00010102CD
:1025CF00022D3CE493A3F8E493A34003F68001F2B9
:1025DF0008DFF48029E493A3F85407240CC8C3330D
:1025EF00C4540F4420C8834004F456800146F6DFDC
:1025FF00E4800B0102040810204080901C63E47EED
:10260F00019360BCA3FF543F30E509541FFEE493D0
:10261F00A360010ECF54C025E060A840B8E493A397
:10262F00FAE493A3F8E493A3C8C582C8CAC583CAC2
:10263F00F0A3C8C582C8CAC583CADFE9DEE780BE7A
:011E1C0000C5
:10126700E709F608DFFA8046E709F208DFFA803E69
:1012770088828C83E709F0A3DFFA8032E309F60856
:10128700DFFA8078E309F208DFFA807088828C83BE
:10129700E309F0A3DFFA806489828A83E0A3F60872
:1012A700DFFA805889828A83E0A3F208DFFA804C4C
:1012B70080D280FA80C680D4806980F28033801023
:1012C70080A680EA809A80A880DA80E280CA80338C
:1012D70089828A83ECFAE493A3C8C582C8CCC58304
:1012E700CCF0A3C8C582C8CCC583CCDFE9DEE780D4
:1012F7000D89828A83E493A3F608DFF9ECFAA9F053
:10130700EDFB2289828A83ECFAE0A3C8C582C8CCA8
:10131700C583CCF0A3C8C582C8CCC583CCDFEADEC1
:10132700E880DB89828A83E493A3F208DFF980CC23
:1013370088F0EF60010E4E60C388F0ED2402B4041C
:101347000050B9F582EB2402B4040050AF232345C3
:0613570082239012B7731F
:10135D00BB010689828A83E0225002E722BBFE028E
:09136D00E32289828A83E49322C1
:10137600BB010CE58229F582E5833AF583E022502C
:1013860006E92582F8E622BBFE06E92582F8E22276
:0D139600E58229F582E5833AF583E4932290
:1013A300BB010FF8E58229F582E5833AF583E0284E
:1013B300F0225009C58229F8E58226F622BBFE09F0
:1013C300C58229F8E22582F222F8EA2583F583E92A
:0313D3009328223A
:1013D600F8BB010DE58229F582E5833AF583E8F04D
:1013E600225006E92582C8F622BBFE05E92582C8F9
:0213F600F222E1
:1013F800BC000BBE0029EF8DF084FFADF022E4CCD9
:10140800F875F008EF2FFFEE33FEEC33FCEE9DECA1
:10141800984005FCEE9DFE0FD5F0E9E4CEFD22EDE7
:10142800F8F5F0EE8420D21CFEADF075F008EF2F31
:10143800FFED33FD4007985006D5F0F222C398FD22
:051448000FD5F0EA22BF
:10144D00C5F0F8A3E028F0C5F0F8E582158270022A
:06145D001583E038F022C7
:10146300BB0110E58229F582E5833AF583E0F5F0C7
:10147300A3E0225009E92582F886F008E622BBFEA4
:101483000AE92582F8E2F5F008E222E5832AF583EA
:08149300E993F5F0A3E99322AF
:10149B00BB010A89828A83F0E5F0A3F0225006F79C
:0F14AB0009A7F01922BBFE06F3E5F009F3192299
:1014BA00F8BB0111E58229F582E5833AF583E8F064
:1014CA00E5F0A3F0225009E92582C8F608A6F02221
:0D14DA00BBFE09E92582C8F2E5F008F22208
:1014E700EB9FF5F0EA9E42F0E99D42F0E89C45F05B
:0114F70022D2
:1014F800E8600FECC313FCED13FDEE13FEEF13FFD2
:03150800D8F122F5
:09150B00E0FBA3E0FAA3E0F922E1
:10151400F8E0FBA3A3E0F925F0F0E5821582700260
:071524001583E0FA38F02204
:09152B00EBF0A3EAF0A3E9F022C1
:10153400D083D082F8E4937012740193700DA3A346
:1015440093F8740193F5828883E47374029368605A
:06155400EFA3A3A380DF5A
:10155A00EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02D1E
:10156A00FDE43CFCE8A42EC8C5F03DFDE43CFCEFDC
:0D157A00A4FFE5F028FEE43DFDE43CFC226A
:100F0200E5082404F582E43400F583E00508229024
:100F12000001301703900004E475F0011215140269
:100F2200135D2010E97F2ED2108018EF540F249009
:100F3200D43440D4FF30140BEF24BFB41A00500352
:100F42002461FFE50960021509050CE50C70020534
:100F52000B30170E900001E475F001121514EF0228
:100F62001587022DB57403D2178003E4C217F50862
:100F720090000112152BE4F509F50BF50CE509605B
:100F8200077F20120F4580F5750AFFC211C210C2F9
:100F920012C213C215C216C218120F11FF700D3001
:100FA20017057F00120F56AF0CAE0B22B4255FC29D
:100FB200D5C214120F11FF24D0B40A00501A75F0D2
:100FC2000A780930D50508B6FF0106C6A426F62020
:100FD200D5047002D21380D924CFB41A00EF500482
:100FE200C2E5D214021157D21180C6D21080C0D2EB
:100FF2001280BCD2D580BAD21580B47F20120F45A0
:101002002012077401B5090040F1120F02FF120FFE
:1010120045020F7FD218D2168095120F02FB120FD3
:1010220002FA120F02F94A4B700679287A127BFFF4
:1010320020122EE509602A7E008E8275830012132B
:101042007660060EEE650A70F0C2D5EBC0E0EAC02B
:10105200E0E9C0E0EE12119ED0E0F9D0E0FAD0E073
:10106200FB12135DFF60AAEBC0E0EAC0E0E9C0E05A
:10107200120F45D0E02401F9D0E03400FAD0E0FBB1
:10108200E50A0460DCD50AD980877BFF7A11799A58
:10109200D212809C791080027908C216C218800888
:1010A200D2D5790A8004790AC2D5E50A047002F51C
:1010B2000AE4FAFDFEFF120F02FC7B082011131254
:1010C2000F02FD7B1030100A120F02FE120F02FFF8
:1010D2007B20EC3382D592D55013C3E43010069FA7
:1010E200FFE49EFEE42011039DFDE49CFCE4CBF8AA
:1010F200C211EC700CCFCECDCCE824F8F870F3809E
:1011020017C3EF33FFEE33FEED33FDEC33FCEB336D
:10111200FB994002FB0FD8E9EB301105F8D0E0C48F
:1011220048B211C0E00AEC4D4E4F78207B0070C2ED
:10113200EAB50A0040BCC0E01211A0D0F0D0E02015
:101142001104C4C0E0C4B211C0F0120F2ED0F0D509
:10115200F0EB020F7F121534101C531096580FED4E
:101162004C0FE942109A4F10A24410A249100243B8
:0811720010A855108C46108CEA
:10117A0045108C471248500FF12D0FF52E10182BE1
:10118A000FF92310162012312A0FB148000010104F
:10119A003F3F3F00790AA2D5201314301509B91030
:1011AA00020404B9080104A2D52016025001042041
:1011BA0012689212B509005034C0E07F203013192A
:1011CA007F30A21272167215500F1211F7C212C294
:1011DA0016C215C2187F30800F301503E9C0E0121D
:1011EA000F45301503D0E0F9D0E0B509CC3015171A
:1011FA007F30B9100C120F457F583014077F788062
:10120A0003B90803120F453012057F2D020F457FDF
:10121A00202018F87F2B2016F322921280CF286EF6
:10122A00756C6C2900D211120F023011F8C21178B4
:10123A000930D50108F6020FB12D50434958120F53
:10124A00022403B405004001E490124393120F36BE
:0D125A00743A120F36D21375090402109673
:10158700BB010689828A83F0225002F722BBFE0143
:02159700F3223D
:00000001FF

Binary file not shown.

View File

@ -0,0 +1,831 @@
:030000000227DAFA
:1027DA00758E3075D20078FFE4F6D8FD9000007F40
:1027EA00007E01E4F0A3DFFCDEFA7581A70228353A
:0F2F370053797374656D20496E69742E0D0A000D
:102ECC00122B5A7BFF7A2F7937120F77D2AED2BEE4
:082EDC0012296E122D4880F44A
:101CE500010D000113000112000111000110004156
:101CF50000D800020E00004200D200004200D600CB
:101D0500004200CB00004200CD00004200D400009C
:0F1D15004200D000004100CF004100D900C14280
:102EE40075FE0F43FF8075FE2975FFB575A5217525
:082EF400FE1E43FF01D2BD22C6
:1023AF00AB072042030224E69000D2E0FEA3E078C0
:1023BF0003CEC313CE13D8F9F0EE9000D2F09000F5
:1023CF00CFE024FD6030146065147003022479247B
:1023DF00FE70030224AD240560030224E3780DE6AA
:1023EF00FF3395E0FEC39000D3E09FFF9000D2E053
:1023FF009E9000D6806E9000D2E0FEA3E0FF7C0995
:10240F007DC412189B780A1218399000D2EEF0A3EF
:10241F00EFF07810E6FD3395E0FCC3EF9DFFEE9CE7
:10242F00FE7C007D051217399000CBEE80369000B0
:10243F00D2E0FEA3E0FF7C097DC412189B780A123C
:10244F0018399000D2EEF0A3EFF07811E6FD339536
:10245F00E0FCC3EF9DFFEE9CFE7C007D051217395B
:10246F009000CDEEF0A3EFF0806A780DE6FF339584
:10247F00E0FEC39000D3E09FFF9000D2E09EFE7C71
:10248F00097DC412189B780A121839EEF0A3EFF0E9
:10249F00E025E0FE9000D2E0339000D48032780D3A
:1024AF00E6FF3395E0FEC39000D3E09FFF9000D28C
:1024BF00E09EFE7C097DC412189B780A121839EE33
:1024CF00F0A3EFF0E025E0FE9000D2E0339000D0D3
:1024DF00F0A3CEF0C242229000CFEBF0C454F044F0
:0F24EF0001F5A5E49000D2F0A3F09000D9F022FF
:03006B000229D790
:1029D700C0E0C0F0C083C082C0D075D000C000C0C6
:1029E70006C007E5F330E038AFA1780E760008A6F9
:1029F70007E5A254031846F608E6F69000D9E0C3A7
:102A07009408501718E6FE08E6FF9000D2EE8FF004
:102A170012178E9000D9E004F08005D24253A5FE2C
:102A270075F301D007D006D000D0D0D082D083D0A4
:042A3700F0D0E032C9
:051D2400C132011403AF
:1000260075FE8843FF20E47816F67818F67814E60D
:100036007817F6781976017916E718461846F5B155
:0400460075B201226C
:10223B00E4FE9000D6E0FCA3E0FDC394D8EC94033D
:10224B0040037F0022EF7003022354D3ED940FEC75
:10225B0094034003022332ED94CBEC940050030221
:10226B002332D3ED94AAEC94024022D2307814E6B8
:10227B00FF137817F6303111D3ED94BFEC94024075
:10228B0004C23180047817A607E4FE8070D3ED9466
:10229B00AAEC94025043ED9437EC9401403BD231BD
:1022AB007814E6FF7817F6303013D3ED9493EC9453
:1022BB00025004C2308006EFC3137817F6781976F4
:1022CB0001301311D3ED9451EC94015004C21380DF
:1022DB0004E47819F6E4FE8024D3ED9437EC9401F2
:1022EB00501BD213E47819F6303110ED9426EC9490
:1022FB00015004C231800478197601E4FE302E11AE
:10230B00C3ED94F3EC94025006C22EE4FE80027EE1
:10231B0001302F2FD3ED94DDEC94004006C22FE457
:10232B00FE80207E01801CD3ED940FEC94034006BD
:10233B00D22E7E01800DD3ED94CBEC94005004D2C1
:10234B002F7E01C22CC22D8058C22EC22FD3ED94EA
:10235B009FEC94035031ED9471EC94004029302C98
:10236B0010ED9484EC94035006C22CE4FE80027EA4
:10237B0001302D2DD3ED9482EC94004006C22DE458
:10238B00FE801E7E01801AD3ED949FEC94034004D3
:10239B00D22C800BC3ED9471EC94005002D22D7EA5
:0323AB0001AF0679
:0123AE00220C
:1025E200E5E65480FFE4FCFDFEEF700753B3FE788E
:1025F20015F62278157601E5E830E50575E82080C4
:102602000FE5E530E1028008E5F230E50775F220DA
:1026120053B3FE22E5F2540C601053B3FEE5F354BB
:10262200C0606A75F20C75F3C02275F3C07F0112A7
:10263200223BEF600653B3FED23222C232E5F230C1
:10264200E41CC39000D5E094D29000D4E0940F50E3
:102652000575F210800353B3FE78157603227916BE
:10266200E77818461846F5B17819E6F5B275FE70A6
:1026720043FF1843B311781CE6FFD394014002C212
:0E26820041EFD394034002C240781576022245
:041D2900C13CC13DBB
:10000E00303C10EFB4010475B5C02253B5BFED44BA
:04001E0080F5B52292
:102F2600E5B55480FFEF6008303C05E4F5B5C23CDA
:012F36002278
:102AFE00C23CE5E520E154E5E230E703D23D22E5B4
:102B0E00E830E00D30254475E8017D38E4FF020021
:102B1E000EE4FF12223BEF6006122F26D23222C2A3
:102B2E0032304103022F26D23C303D1F7815E6B4D9
:102B3E000219C39000D5E094109000D4E0940E409A
:0C2B4E0005D23CC23D22122F26C23C22C0
:081D2D00C13EC13F4100F3FF7C
:102D7A00E5E25408FF9000F3E06F6021E5E230E3FA
:102D8A00089000F27401F08005E49000F2F0D23E5F
:0D2D9A00C210D23FD2389000F3EFF0D244C7
:012DA7002209
:101D3500C123C122C121011D004100EA004100EE7D
:0E1D4500004100E9004200EB00004100ED000B
:101EB100E5E25402FFE4FCFDFEEF70369000EB75A5
:101EC100F00112178E9000EBE0FEA3E0FFC39464D3
:101ED100EE94004007201F14D21F8010C3EF94908E
:101EE100EE94014007202004D220D221D21CC21D31
:101EF1008042301C38D244E4781DF6C21CD21D90B9
:101F010000EDF0C2209000EBE0FEA3E0FFD39419B6
:101F1100EE94005008D223D21ED2388010C3EF9421
:101F2100FAEE94005007301F04C21FD222E4900041
:101F3100EBF0A3F0301D66303C6330222720100205
:101F410080287F03122BB19000EDE0D3941450034D
:101F5100022063C222781D7602E49000EAF090002C
:101F610071F0A3F030212920100A7D3FE4FF120017
:101F71000ED210227F03122BB19000EDE0D3941406
:101F81005003022063C221E49000EEF0781D760335
:101F9100301E06C21E781D7601C21DC2109000F2CD
:101FA100E064016003022076781DE66402600302AA
:101FB10020389000EAE0C3940150107D017F0112A6
:101FC1002077E4900071F0A3F080549000E9E0D311
:101FD10094054003E48039900072E0B4010FE4FD00
:101FE1007F021220779000727402F08032900072AA
:101FF100E06402702A900071E0601D7D017F021291
:102001002077E4900071F0A3F09000EAF09000E9ED
:10201100F0781DF6D2118058E4FD7F0112207790EF
:1020210000EAE0D39414400A9000E9E004F0E4A34C
:10203100F0229000EA802B781DE66403703790004F
:10204100EEE0FFC3941E501EEF540360047D018037
:10205100099000EEE030E007E4FD7F031220779065
:1020610000EEE004F022E4781DF6D2119000EEF0CB
:052071007F04122BB1F9
:012076002247
:101D5300410079004100780041007A00410077009A
:102E1A0075FE0675FF3C75FE0E53FF0F75FE0F53C8
:102E2A00FFF075FE0375FFFFC282C283C285C284AA
:012E3A002275
:102E9800EF14600D14600D14600D2403700BD282C2
:0A2EA80022D28322D28422D2852296
:052E5B00900000E0FF03
:102E6000EF14600D14600D14600D2403700BC2820A
:0A2E700022C28322C28422C28522FE
:102A9E00E4FF747B2FF582E43400F583E4F0747F59
:102AAE002FF582E43400F583E4F0EF25E02483F57E
:102ABE0082E43400F583E4F0A3F0EF25E0248BF5F7
:102ACE0082E43400F583E4F0A3F0EF25E02493F5DF
:102ADE0082E43400F583E4F0A3F0EF25E0249BF5C7
:0F2AEE0082E43400F583E4F0A3F00FEFB404A307
:012AFD0022B6
:102A3B00AC07747B2CF582E43400F583EDF0EAC32C
:102A4B0013FEEB13FFEC25E02483F582E43400F551
:102A5B0083EEF0A3EFF0AF03EC25E0248BF582E4DB
:102A6B003400F583EAF0A3EFF0900005E0FEA3E05D
:102A7B00FFEC25E02493F582E43400F583EEF0A31C
:102A8B00EFF0EC25E0249BF582E43400F583E4F0D1
:032A9B00A3F02283
:102CDA00747B2FF582E43400F583EDF0747F2FF5D1
:102CEA0082E43400F583EBF0EF25E02483F582E4F7
:102CFA003400F583E4F0A37469F0EF25E0249BF532
:0B2D0A0082E43400F583E4F0A3F02223
:100B9F00E4900000F0F0900000E0FFC394044003E5
:100BAF00020EE1747B2FF582E43400F583E06022BE
:100BBF0024FE6024147003020CA9147003020D208C
:100BCF0024036003020E7D900000E0FF122E9802B6
:100BDF000E7D122E5B020E7D900000E0FF25E024BB
:100BEF0083F582E43400F583E0FCA3E0FDEF25E01C
:100BFF00249BF582E43400F583E0FEA3E0C39DEE71
:100C0F009C5005122E988003122E5B900000E0FF7F
:100C1F0025E0248BF582E43400F583E0FCA3E0FDAE
:100C2F00EF25E0249BF582E43400F583E0FEA3E09A
:100C3F00C39DEE9C5003020E7D900000E025E02442
:100C4F009BF582E43400F583E4F0A3F0EF25E02474
:100C5F0093F582E43400F583E0FEA3E0D39400EE35
:100C6F0094004016900000E025E02493F582E434D0
:100C7F0000F58374FFF5F012178E900000E0FF254A
:100C8F00E02493F582E43400F583E0FCA3E04C60AC
:100C9F0003020E7D747B2F020D3C900000E0FF25B8
:100CAF00E02483F582E43400F583E0FCA3E0FDEF5C
:100CBF0025E0249BF582E43400F583E0FEA3E0D326
:100CCF009DEE9C5005122E988003122E5B90000013
:100CDF00E0FF25E0248BF582E43400F583E0FCA3EC
:100CEF00E0FDEF25E0249BF582E43400F583E0FE80
:100CFF00A3E0C39DEE9C5003020E7D900000E02503
:100D0F00E0249BF582E43400F583E4F0A3F0020EB7
:100D1F007D900000E0FF247FF582E43400F583E04E
:100D2F007017122C53C243900000E0247BF582E42D
:100D3F003400F583E4F0020E7D900000E0FF247F85
:100D4F00F582E43400F583E0FE6402704B20431417
:100D5F00D243EF25E02483F582E43400F583E4F0F9
:100D6F00A37469F0900000E0FF25E02483F582E48E
:100D7F003400F583E475F00112178EEF25E024831C
:100D8F00F582E43400F583E0FCA3E0C394FEEC9419
:100D9F00005003020E67804EEE6401705A20431715
:100DAF00D243900000E025E02483F582E43400F57F
:100DBF0083E4F0A374FEF0900000E0FF25E02483AD
:100DCF00F582E43400F58374FFF5F012178EEF25EA
:100DDF00E02483F582E43400F583E0FEA3E0D394AE
:100DEF0069EE94005072900000E0247FF582E434A5
:100DFF0000F583E4F08061900000E0FF247FF5822E
:100E0F00E43400F583E06403704EEF25E02483F5AE
:100E1F0082E43400F583E0FEA3E0FFC394FEEE947A
:100E2F00004004D243800BD3EF946AEE940050023B
:100E3F00C243900000E025E0248330430DF582E4A7
:100E4F003400F58374FFF5F0800BF582E43400F580
:100E5F0083E475F00112178E900000E0FF25E02467
:100E6F0083F582E43400F583A3E0FD122C02900099
:100E7F0000E0FF7011747B2FF582E43400F583E0FE
:100E8F00900079F08043900000E0B40110247BF5CE
:100E9F0082E43400F583E0900078F0802C9000001D
:100EAF00E0B40210247BF582E43400F583E0900077
:100EBF007AF08015900000E0B4030E247BF582E4F5
:100ECF003400F583E0900077F0900000E004F0022A
:100EDF000BA5E4900000F0900000E0FFC3940450D5
:100EEF001BEF25E0249BF582E43400F583E475F0D5
:0C0EFF000112178E900000E004F080DB70
:010F0B0022C3
:0B1D63004200EF00004100F10FC144FE
:102DA80075FE1E43FF0275FE2143FF0875D4877523
:102DB800FE2143FF0475FE2143FF02300F0775FE15
:0C2DC8002453FFC32275FE2443FF3C226D
:10005600D2AC759A01D2B9D2BDD2A9D2AB75FE295E
:0400660043FFB02282
:10006E00C2ACE4F59AD2B9C2BDC2A9C2AB75FE2923
:04007E0053FF4F22BB
:092F7C0012006E438702020056A8
:102F12007815E6D394015006201203304404C244CB
:042F2200C322D322D1
:102B5A0075FE01E4F5FF122EB2122F6F122F54E404
:102B6A00F58675B7C375FE6A75FF0475FE6C43FF7B
:102B7A000A122EE475FE8043FF0275FE0E53FFFC17
:102B8A0043FF0175FE1775FF3CD2A8D2AF1200268B
:102B9A007D697F03122EFC122E1A122A9E122DA86C
:072BAA009000DE7401F0222F
:03000300020006F2
:03000600D24432AF
:03004B00022F8DF4
:062F8D0075EB3CD244325A
:03005300022F93E6
:062F930075F302D2443286
:101D6E0020402900000000000000000000000000DC
:101D7E000000000000000000000000000000000055
:101D8E000000000000000000000000000000000045
:101D9E000000000000000000000000000000000035
:0F1DAE00000000C13BC13A4100F4004100F500C4
:0E2F4600900029EFF0122F85900029E0FF2265
:082F85002039FDD2398F992299
:102EB20075FE0E53FFF343FF04D2DF43878075BADA
:0A2EC2000375AAFD759852D2AC22E8
:03002300022F6247
:0D2F6200309904C299C239309802C29832E9
:0D2F6F0075BB03759DDC759B92439A012292
:062D150090004312186C4F
:102D1B00E4900046F0F0900046E0C39FE49E501C08
:102D2B00203AFDD23A900043E475F0011218551287
:0C2D3B00169EF59C900046E004F080DA43
:012D47002269
:03008300022690C2
:10269000C0E0C083C082C0D075D000C000C005C0FB
:1026A00006C007E59B30E105539BFDC23AE59B3030
:1026B000E076539BFED2449000F4E014601914605D
:1026C0003424027063E59C9000F4B455087401F062
:1026D000A3E4F0800E8018E59C9000F4B4AA107476
:1026E00002F0A3E0FF04F074292FF8A69C8039E4DF
:1026F000F0A3F080339000F5E0FF04F074292FF888
:10270000A69C782BE62404FFE433FEE0FDC39FEE95
:102710006480F87480985005ED9440400B9000F56B
:10272000E4F09000F4F0D23BD007D006D005D00002
:09273000D0D0D082D083D0E03279
:1024FE004177616B6520536F757263653A57505F14
:10250E00466C6167303A307825782C57505F466CB0
:10251E006167313A307825782C57505F466C616789
:10252E00333A307825782E286C696E653A25642901
:10253E000D0A00536C656570205374617465202814
:10254E006C696E653A2564290D0A004348475F534E
:10255E0054413A25642C53545F564F583A307825DF
:10256E00782C535441303A307825782C53544131DD
:10257E003A307825782C535441323A307825782CDD
:10258E00535441333A307825782C535441343A30F1
:10259E007825782E4465635F536C6565703A2564C3
:1025AE000D0A004465636E745F536C656570446517
:1025BE006C61792052656C6F61642E0D0A00456E58
:1025CE00746572205374616E646279204D6F646518
:0425DE00210D0A00C1
:101DBD004300DE0402024100DB004100DC00C138BB
:0E1DCD00C1374100DD004100E1004100DA00B5
:102DD400E4FB7D04FF122CDAE4FB7D047F01122C5A
:102DE400DAE4FB7D047F02122CDAE4FB7D047F032A
:032DF400022CDAD4
:1007B600303856C238E49000DCF0900005F0A3F023
:1007C600FBFAFDFF122A3BE4900005F0A3F0FBFACA
:1007D600FD7F01122A3BE4900005F0A3F0FBFAFD31
:1007E6007F02122A3BE4900005F0A3F0FBFAFD7F9E
:1007F60003122A3B9000797402F0900078F0900082
:100806007AF0900077F0D2442220320C200D0302B9
:1008160008C5300F030208C5203305D233D238226B
:10082600900079E06402601A900005E4F0A3740A6F
:10083600F07B147A007D02E4FF122A3B9000797463
:1008460003F0900078E06402601A900005E4F0A3DB
:10085600740AF07B147A007D027F01122A3B900015
:10086600787403F090007AE06402601A900005E460
:10087600F0A3740AF07B147A007D027F02122A3BF1
:1008860090007A7403F0900077E06402601A90009A
:1008960005E4F0A3740AF07B147A007D027F03124C
:1008A6002A3B9000777403F0200D03020B9E900004
:1008B600DCE0C3942850030209FED20FD23822305E
:1008C600330CC233C235C234C23FC20ED23778159A
:1008D600E6FF70030209D86403705C203505D23543
:1008E600022DD4E4900005F0A3F0FBFA7D01FF127F
:1008F6002A3BE4900005F0A3F0FBFA7D017F01128C
:100906002A3BE4900005F0A3F0FBFA7D017F02127A
:100916002A3BE4900005F0A3F0FBFA7D017F031269
:100926002A3B9000797401F0900078F090007AF0FC
:10093600900077F00209CF20340ED234C235D23877
:10094600E49000E1F00209CF9000DCE0C39401508E
:1009560057E004F09000E1E014601A146027146078
:100966003424037064900079E06404605C7B017D4C
:1009760004E4FF802E900078E06404604C7B017DE7
:10098600047F01801E90007AE06404603C7B017D58
:10099600047F02800E900077E06404602C7B017D6A
:1009A600047F03122CDA80219000DCE0C3940F5000
:1009B60005E004F08013E49000DCF09000E1E00430
:1009C600F0E0C394044002E4F0C23FC20EC223D258
:1009D600362230340AC234122DD4D238D2372220ED
:1009E6003F0C203609200E06202303020B9E9000A2
:1009F600DCE0FFC394015004E004F022EFC39464EA
:100A06004003020B499000DCE004F0781BE6C39437
:100A1600195037900079E064037003020B9EE4904E
:100A26000005F0A3F07B64FA7D03FF122A3B9000D9
:100A3600797404F0E4900005F0A3F0FBFAFD7F0161
:100A4600122A3B90007874028032781BE6C39432F7
:100A56005041E4900005F0A3F0FBFA7D01FF122A55
:100A66003B9000797401F0E4900005F0A3F0FBFAE6
:100A76007D017F01122A3B9000787401F0E490001A
:100A860005F0A3F0FBFAFD7F02122A3B90007A7470
:100A9600028048781BE6C3944B5057E4900005F05B
:100AA600A3F0FBFA7D01FF122A3B9000797401F056
:100AB600E4900005F0A3F0FBFA7D017F01122A3BCA
:100AC6009000787401F0E4900005F0A3F0FBFA7D45
:100AD600017F02122A3B90007A7401F0E49000052F
:100AE600F0A3F0FBFAFD7F03122A3B900077740215
:100AF600F022781BE6C394644003020B9EE4900048
:100B060005F0A3F0FBFA7D01FF122A3BE4900005F5
:100B1600F0A3F0FBFA7D017F01122A3BE490000569
:100B2600F0A3F0FBFA7D017F02122A3BE490000558
:100B3600F0A3F0FBFA7D017F03122A3B9000797443
:100B4600018048C23FC236C20EC223E4900005F0BF
:100B5600A3F0FBFAFDFF122A3BE4900005F0A3F098
:100B6600FBFAFD7F01122A3BE4900005F0A3F0FB9F
:100B7600FAFD7F02122A3BE4900005F0A3F0FBFA8F
:100B8600FD7F03122A3B9000797402F0900078F002
:080B960090007AF0900077F066
:010B9E002234
:102E3B009000D8E0FF04F01223AF9000D8E0B40666
:102E4B000204F09000D8E0C3940840037402F0220F
:102E7A00122D7A121EB112287A302411C224122578
:0E2E8A00E2122AFE1227391207B61212712226
:1018DA00E4900000F09000DEE0FFA3E0FE6F7003EA
:1018EA0002197DA3EEF09000DEE0A3F024FE60353D
:1018FA0014606614606A24036003021AFC900005EF
:10190A00E4F0A37403F07B647A007D02E4FF122AF8
:10191A003B900005E4F0A37403F07B647A007D0237
:10192A007F01022A3B300F09D23E75E80CC20DC274
:10193A000F7BFF7A2479FEAFF6900004E4F0A3EF60
:10194A00F0AFF8A3E4F0A3EFF0AFFAA3E4F0A3EF4B
:10195A00F0A37402F0A30480169000F1740FF02231
:10196A007BFF7A2579419000047402F0A3741BF07E
:10197A00021A839000DFE024FE603514607614704A
:10198A0003021A9624036003021AFC9000DAE004A8
:10199A00F0E0C394085003021AFC9000DE7402F0CF
:1019AA00E49000DAF0781CE66003021AFC021A8F4F
:1019BA00E5F6700CE5F87008E5FA7004E5E1602DCB
:1019CA009000DE7403F0E5F6540FFFE4FCFDFE7BA5
:1019DA0008FAF9F8C312182870069000DE7404F0A9
:1019EA0075E11F75F60F75F8FC75FABC229000DEDA
:1019FA007403F022202803021AFCC22875FE6E9096
:101A0A000000E5FFF07BFF7A2579597815E6FF900B
:101A1A000004E4F0A3EFF0900000E0FF900006E479
:101A2A00F0A3EFF0AFE2A3E4F0A3EFF0AFE3A3E497
:101A3A00F0A3EFF0AFE4A3E4F0A3EFF0AFE5A3E483
:101A4A00F0A3EFF0AFE6A3E4F0A3EFF09000F1E02B
:101A5A00FF900012E4F0A3EFF0120F779000F1E08C
:101A6A00D394004017E014F0204403021AFCC24445
:101A7A00740FF07BFF7A2579B1020F777BFF7A2505
:101A8A0079CC120F779000DE7404F022122F1250D4
:101A9A005B122DA87F04122BB1122F26E4900005A9
:101AAA00F0A3F0FBFAFDFF122A3BE4900005F0A335
:101ABA00F0FBFAFD7F01122A3BE4900005F0A3F047
:101ACA00FBFAFD7F02122A3BE4900005F0A3F0FB2B
:101ADA00FAFD7F03122A3B9000797402F090007895
:101AEA00F090007AF0900077F0022F7C9000DE747C
:021AFA0002F0F8
:011AFC0022C7
:102D4800302726C2279000DBE0FF04F0EF14600C68
:102D580014600E24027012122E3B800D122E7A80FF
:102D6800081218DAE49000DBF0302905C229120BAA
:022D78009F2298
:101AFD00426F7820436C6F73652E286C696E653A62
:101B0D002564290D0A00426F78204F70656E2E28CE
:101B1D006C696E653A2564290D0A004F70656E2F4C
:101B2D00436C6F736520426F782C45617270686FDE
:101B3D006E657320496E20426F78284E756D3A257B
:101B4D00642928566F785374613A30782578292E98
:101B5D000D0A004F70656E20426F7820434D442072
:101B6D005458204F7665722E0D0A004F70656E2009
:101B7D00426F7820416E642045617270686F6E65AA
:101B8D0020476574496E284E756D3A25642928568F
:101B9D006F785374613A30782578292E0D0A0043F9
:101BAD006C6F736520426F7820416E6420466F72B2
:101BBD00636520566F6C746167652055702E0D0A34
:101BCD0000564F5820566F75742035562853544182
:101BDD00313A307825782C6C696E653A2564292E5A
:101BED000D0A00564F58204348472046756C6C2E01
:101BFD000D0A00564F582047657420496E746F20AA
:101C0D00536C6565702E0D0A005258315F42756632
:101C1D006665725B305D3A307825782C5258315FAD
:101C2D004275666665725B315D3A307825782C5267
:101C3D0058315F4275666665725B325D3A30782564
:101C4D00782C5258315F4275666665725B335D3A2A
:101C5D00307825782C5258315F4275666665725B17
:101C6D00345D3A307825782C5258315F427566666E
:101C7D0065725B355D3A307825782C5258315F426C
:101C8D0075666665725B365D3A307825782C6C69C1
:101C9D006E653A25640D0A0000000000000000008A
:101CAD000000000000000000000000000000000027
:101CBD000000000000000000000000000000000017
:101CCD000000000000000000000000000000000007
:081CDD000000000000000000FF
:101DDB00C112C10EC110410073FFC10D42004D0075
:101DEB000042004B000042007100001A6900000025
:101DFB0000000000000000000000000000000000D8
:101E0B000000000000000020248300000000000000
:101E1B0000000000000000000000000000000000B7
:101E2B000000000000000000000000000000410066
:101E3B00700042006E00004200740000C10FC1111F
:031E4B0001A700EC
:102BB100EF24FE601E14602814602F24FE6035246B
:102BC10005703D43BD8853BDBB75FE6F53FFF24396
:102BD100FF092243BDCC75FE6F53FFFE43FF0C225C
:102BE10053BD7753B7CF43B7302253B7CF43B70362
:102BF10053BD772253B7CC53BD7775FE6A43FF307F
:012C010022B0
:10127100203C0302156F303E7B20100A7D3FE4FFC6
:1012810012000ED210227F03122BB1E490004AF01B
:10129100900048F0A3F0C200C201D20B9000F2E02E
:1012A100702FC20ED202D203C205C208C204C20903
:1012B100C20AD212C23790006CF0A3F0900076F00F
:1012C1007BFF7A1A79FD9000047402F0A3740C80FC
:1012D10017C202C203D205C2067BFF7A1B791390A3
:1012E10000047402F0A37419F0120F77C210C20D3A
:1012F100C20FC23E900048E0C3940550030214FDA2
:10130100300B05C20B0214B820004CD200E5E354A7
:10131100A06021E5E354A0FFE4FCFDFE7BA0FAF907
:10132100F8C312182890007070057402F0800A74D6
:1013310001F08005E4900070F07BFF7A1B79289022
:101341000070E0FF900004E4F0A3EFF0AFE3A3E44A
:10135100F0A3EFF0120F772005030213F8200143E9
:1013610090004AE0FFD39414501EEF54037003FD24
:10137100800990004AE020E0077D017F0612207776
:1013810090004AE004F0806F7F04122BB1E49000DA
:101391004AF0D201D211C2127BFF7A1B7960120F7F
:1013A100778054781DE6704F301104C2118040E5FA
:1013B100E354A0FBE4FAF9F8900047E0FFE4FCFDF8
:1013C100FEC31218286030E5E354A06004D20ED2A7
:1013D100387BFF7A1B7978900070E0FF900004E47D
:1013E100F0A3EFF0AFE3A3E4F0A3EFF0120F77E582
:1013F100E354A0900047F020020302156C303742FD
:1014010020101F7D3FE4FF12000ED210D212E49093
:10141100006CF0A3F0900076F0900048F0C208D282
:1014210004227F03122BB17BFF7A1B79AC120F7759
:10143100C210900048E0D3940350030214FDC23758
:10144100804E20044B900049E0FFD39414501CEFD0
:1014510054037003FD8009900049E020E0077D01FD
:101461007F811220779000490214FD90004AE0FF2D
:10147100D39414501BEF54037003FD800990004A6C
:10148100E020E0077D017F0712207790004A806C01
:10149100E5E8540C6026200F1E90004AE004F0E0BD
:1014A100C3940550030215A7E4F075E80C7F0312FD
:1014B1002BB1D20DC212227F04022BB1C20DC20F79
:1014C1003003257F03122BB17BFF7A1B79CEAFE36B
:1014D100900004E4F0A3EFF0A37403F0A37440F0D0
:1014E100120F77C20302156C200843E5E320E003E5
:1014F10030402A900048E0D394285004E004F022C0
:101501007BFF7A1B79F0120F77D208E490004AF042
:10151100900048F0C2097F04122BB1804E90006DFB
:10152100E070487B017A00794F120086803D90007F
:101531004AE0FFD39414501EEF54037003FD800959
:1015410090004AE020E0077D017F80122077900023
:101551004AE004F08015200912D2097F04122BB150
:10156100C2127BFF7A1C7900120F77C20722200773
:101571000BD2077F04122BB1C2128022E5E354A0E3
:10158100FBE4FAF9F8900047E0FFE4FCFDFEC3122A
:1015910018286012E5E354A06004D20ED238E5E3C6
:0615A10054A0900047F089
:0115A7002221
:0600860090000012186C4E
:10008C00900076E0147003020163147003020242C4
:10009C001470030202B314700302041F24046003DF
:1000AC0002059F90000012184C90001E1216B760AB
:1000BC000302059F78A7E6D3940A50260690001AEF
:1000CC00743F121717300C0302059F900000121892
:1000DC004C90001A1216B7FDE4FF12000ED20C025F
:1000EC00059FE478A7F6C20C90000012184C900003
:1000FC0016E4121717900015E4121717900013E46A
:10010C00121717900012E4121717900011E412172F
:10011C0017900010E4121717900018E4121717909C
:10012C000017E412171790000EE4F5F01217FB906D
:10013C00000CE4F5F01217FB900019E4121717905D
:10014C00001B743F1217179000767401F0E49000B6
:10015C004DF0A3F002059FE5E35408FFE4FCEF60CB
:10016C001CE5E35404601690000012184C90001E1D
:10017C007401121717E4900076F002059FE5E35422
:10018C0008FFE4FCEF704A9000CDE0FEA3E0FF9086
:10019C00000012184C900002EE8FF01217FB7D0538
:1001AC00121739EF7802C333CE33CED8F9FF900053
:1001BC000012184C900006EE8FF01217FB9000CE38
:1001CC00E025E0FF9000CDE03390000A8FF012178D
:1001DC00FBE5E35404FFE4FCEF704F9000CBE0FE32
:1001EC00A3E0FF90000012184CEE8FF01217DC9079
:1001FC0000CBE0FEA3E0FF7D05121739EF7802C3B8
:10020C0033CE33CED8F9FF90000012184C90000476
:10021C00EE8FF01217FB9000CCE025E0FF9000CBA6
:10022C00E0339000088FF01217FB90000012184C6E
:10023C0090001D020594D390004EE0940590004D63
:10024C00E094005002806FE490004DF0A3F0E5E3E1
:10025C005408FFEF701F9000CDE0FEA3E0FF90006C
:10026C000012184C90000EEE8FF01217FB90001835
:10027C007401121717E5E35404FFE4FCEF701F90B0
:10028C0000CBE0FEA3E0FF90000012184C90000C95
:10029C00EE8FF01217FB90001774011217179000D5
:1002AC00767403F002059FD390004EE09402900008
:1002BC004DE09400500AE475F00112178E02059F70
:1002CC00E490004DF0A3F090000012184C90000A3E
:1002DC001217A4FFAEF090000E1217A4D39FE5F0F6
:1002EC009E501C90000012184C9000081217A4FF8E
:1002FC00AEF090000C1217A4D39FE5F09E4011E4D1
:10030C00900076F090000012184C90001D0203E152
:10031C0090000012184C9000181216B76401706D02
:10032C0090000E1217A4FFAEF0D39414EE9400506C
:10033C0031E5E330E31F900016740112171790009B
:10034C001A1216B7C3943F404490000012184C90F8
:10035C000018E4803590000012184C9000137401C2
:10036C00802890000012184C9000061217A4FDD3A0
:10037C00EF9DEE95F0900000400812184C90001381
:10038C00800612184C90001674011217179000007A
:10039C0012184C9000171216B76401600302059FE7
:1003AC0090000C1217A4FFAEF0D39414EE940050EE
:1003BC0034E5E330E2229000157401121717900017
:1003CC001A1216B7C3943F500302059F90000012F7
:1003DC00184C900017E4803590000012184C9000D7
:1003EC00127401802890000012184C90000412170F
:1003FC00A4FDD3EF9DEE95F0900000400812184C30
:10040C00900012800612184C9000157401121717E8
:10041C0002059FD390004EE0941490004DE09400A0
:10042C005031E475F00112178E9000CDE0FEA3E080
:10043C00FF90000012184C90000EEE8FF01217FB7C
:10044C009000CBE0FFA3E090000CCF8FF01217FBD5
:10045C0002059FE490004DF0A3F090000012184CA0
:10046C009000181216B7640160030204FD90001787
:10047C001216B76401707A9000061217A4FFAEF042
:10048C0090000E1217A4FDACF0C39FEC9E40189088
:10049C00000012184C90000A1217A4FFD3ED9FEC29
:1004AC0095F0500302059F90000012184C90000428
:1004BC001217A4FFAEF090000C1217A4FDACF0C301
:1004CC009FEC9E401890000012184C9000081217D8
:1004DC00A4FFD3ED9FEC95F0500302059F90000014
:1004EC0012184C9000167401121717900015020583
:1004FC009490000012184C9000181216B7640170FA
:10050C00419000061217A4FFAEF090000E1217A433
:10051C00FDACF0C39FEC9E401590000012184C905F
:10052C00000A1217A4FFD3ED9FEC95F04014900035
:10053C000012184C90001674011217179000767464
:10054C0002F090000012184C9000171216B76401BC
:10055C0070419000081217A4FFAEF090000C121717
:10056C00A4FDACF0D39FEC9E501590000012184CDB
:10057C009000041217A4FFC3ED9FEC95F05014905B
:10058C00000012184C900015740112171790007689
:10059C007402F090000012184C9000181216B7FF5D
:1005AC006401600D9000171216B764016003020716
:1005BC009C9000131216B7FE6401600D900012128D
:1005CC0016B764016003020716EFB4011E90001702
:1005DC001216B7B40115EEB401119000131216B730
:1005EC00B401089000147401121717900018121619
:1005FC00B7FFB401189000171216B77010900013C3
:10060C001216B76401702390001404801AEF701A4C
:10061C009000171216B7B401119000121216B7B44D
:10062C0001089000147401121717900013E41217AC
:10063C0017900012E41217179000141216B76401E9
:10064C0060030207B590000012184C90001A1216A5
:10065C00B7D39400400890001A74FE1216E4900070
:10066C00191216B7FF90001A1216B7D39F401B90A1
:10067C0000D5E024C8FF9000D4E03400FEC3900005
:10068C00D1E09F9000D0E09E504890000012184C92
:10069C009000191216B7FF90001A1216B7D39F903C
:1006AC000000501312184C90001AEF1217179000FC
:1006BC001CE4121717801312184C90001C740112B2
:1006CC00171790001A74021216E49000767404F056
:1006DC0080139000767402F090000012184C900079
:1006EC001CE4121717E490004DF0A3F090000012D8
:1006FC00184C900014E412171790001C1216B7FF38
:10070C0090001A1216B7FD02079990000012184CAF
:10071C009000161216B76401600D9000151216B7F2
:10072C00640160030207B5900016E41217179000DD
:10073C0015E412171790001A1216B7C3943F500EF7
:10074C0090000012184C90001A74021216E49000DB
:10075C00767404F090000012184C90001B1216B71F
:10076C00FF90001A1216B7C39F4013900000121886
:10077C004C90001AEF1217179000767401F090004D
:10078C000012184C90001A1216B7FDE4FF02000E6E
:10079C00900076E0D394024010E4F0900000121820
:0907AC004C90001E740112171795
:0107B5002221
:0B2C970090004312186C900046EDF016
:102CA200E4FE900046E0FD14F0ED6029900043E45C
:102CB20075F00112185512169E6EFEE4FFEFC394D2
:102CC2000850DFEE30E007C313648CFE8004EEC3CD
:072CD20013FE0F80E8AF06BE
:012CD90022D8
:08207700900000EFF0A3EDF072
:10207F00E4A3F078037C007D017BFF7A1C79A5FE39
:10208F007F40121678E4900003F0A37455F0A37408
:10209F00AAF0900000E0FE900007F0900001E0FD34
:1020AF00900073F0EE12187520D00120FF02214E20
:1020BF0003215B06215B0721A08021A8810000215D
:1020CF00B69000067402F0ED700E9000087402F0E6
:1020DF00E4900071F00221B6900001E0640160030A
:1020EF000221B690000804F0E4900072F00221B6CD
:1020FF009000067420F07F05900001E075F012A4A7
:10210F0024832FF8E6FE74032FF582E43400F58361
:10211F00EEF00FEFB412E17F17EFC3940D400302FF
:10212F0021B6900001E075F00DA424692FF8E6FEAA
:10213F0074032FF582E43400F583EEF00F80DA900C
:10214F0000067402F090000804F0805B90000674A3
:10215F0005F09000087401F0781BE6A3F0A374203B
:10216F00F0900001E0FF700D90006EE07002800FA4
:10217F0090006F8015EFB4012E90006FE070089003
:10218F00000B74FFF0802090006EE090000BF08049
:10219F00169000067401F0800E9000067402F09005
:1021AF000070E0900008F0900006E02404FF90001B
:1021BF0002F0FD7B017A007903122C97900002E068
:1021CF002403F582E43400F583EFF07F01122BB185
:1021DF00900001E0FF700843BD0253BDFE8016EF73
:1021EF00B4010843BD2053BDEF800AEFB4FF06438F
:1021FF00BD2253BDEE900002E02402FFE433FE7BCC
:10220F00017A007903122D15900001E0FF7007533A
:10221F00BDFD43BD0122EFB4010753BDDF43BD1028
:0B222F0022EFB4FF0653BDDF43BD11DA
:01223A002281
:1028F800EF24FA605014604D24067069E4FE742DCC
:102908002EF8E6FF900073E075F012A424832EF8E9
:10291800A6070EEEB412E7E4FE743F2EF8E6FF9029
:102928000073E075F00DA424692EF8A6070EEEB426
:1029380008E7900073E0700690007104F0229000A0
:10294800727401F022782DE6B4E30D90004B740107
:10295800F008E690006EF02290004C7401F0782E9A
:05296800E690006FF095
:01296D002247
:10287A00E4900000F0303B75C23B7BFF7A1C79166E
:10288A007829E6FF900004E4F0A3EFF008E6FFA33E
:10289A00E4F0A3EFF008E6FFA3E4F0A3EFF008E604
:1028AA00FFA3E4F0A3EFF008E6FFA3E4F0A3EFF040
:1028BA0008E6FFA3E4F0A3EFF008E6FFA3E4F0A321
:1028CA00EFF0A37407F0A3746DF0120F777B007A10
:1028DA00007929782BE62403FD122C97782BE6241D
:0D28EA002CF8E6B50707782CE6FF1228F859
:0128F70022BE
:101E4E00011C00011B00C140C141011A5060280055
:101E5E00A30BB80BEA0C1C0C800CB20CE40D160D87
:101E6E00480D7A0DAC0DF70E420E880ED80F0A0FE4
:091E7E003C0F870FD2101D106803
:10273900E4FF7815E6B40225EF25E024A3F582E449
:102749003400F583E0FCA3E02432FDE43CFCC390B3
:1027590000D5E09D9000D4E09C50208023EF25E037
:1027690024A3F582E43400F583E0FCA3E0FDC390E3
:1027790000D5E09D9000D4E09C40050FEFB414B261
:10278900781CE6FEEFD39E781A400306800116E511
:10279900E1600DE4F5E1781CEFF675F005A418F693
:1027A900781AE6FED394965006EEC3940A500D7833
:1027B9001CEFF675F005A418F6187650781CE6FF9C
:1027C900D394005003D24122EFD394015002D24056
:0127D90022DD
:101E87004100E5004100E8004100E4004200E200B3
:101E9700004100E600C126C127C129C125C124C1CF
:091EA700284100E700C12AC12B0B
:10296E009000E7E06062E4F0D2269000E5E004F02B
:10297E00E0C394054004E4F0D2279000E8E004F0B0
:10298E00E0C3940A4004E4F0D2299000E2E475F02A
:10299E000112178EC39000E3E094649000E2E0947D
:1029AE00004006E4F0A3F0D2249000E4E004F0E04E
:1029BE00C394FA4013E4F0D2259000E6E004F0E070
:0929CE0094044004E4F0D2282234
:03000B00022DF7CC
:102DF700C0E0C083C082C0D074FC258CF58C74669B
:102E0700258AF58A9000E77401F0D0D0D082D0836C
:032E1700D0E032D6
:0E2F5400758901758CFC758A66D2A9D28C2213
:102C5300EFD39401501675FE0EEF25E02404FE74A5
:102C630003A806088002C333D8FC801475FE0FEF57
:102C730024FE25E0FE7403A806088002C333D8FCB3
:102C8300F452FFEFB4040C75FE0F53FFF075FE0E04
:042C930053FF0F22BA
:102EFC0075FE54EF5407F5FF75FE56AF058FFF7541
:062F0C00FE5375FF0122D7
:102C0200EFD39401501875FE0EEF25E02404FE74F4
:102C120003A806088002C333D8FC42FF801675FE63
:102C22000FEF24FE25E0FE7403A806088002C333DA
:102C3200D8FC42FFEF70038DCE22EFB401038DCF9B
:102C420022EFB402038DDE22EFB40304AF058FDF5F
:012C5200225F
:032FFD00010102CD
:1027FA00022ECCE493A3F8E493A34003F68001F2FB
:10280A0008DFF48029E493A3F85407240CC8C333DF
:10281A00C4540F4420C8834004F456800146F6DFAE
:10282A00E4800B0102040810204080901CE5E47E3D
:10283A00019360BCA3FF543F30E509541FFEE493A3
:10284A00A360010ECF54C025E060A840B8E493A36A
:10285A00FAE493A3F8E493A3C8C582C8CAC583CA95
:10286A00F0A3C8C582C8CAC583CADFE9DEE780BE4D
:011EB0000031
:1015A800E709F608DFFA8046E709F208DFFA803E25
:1015B80088828C83E709F0A3DFFA8032E309F60812
:1015C800DFFA8078E309F208DFFA807088828C837A
:1015D800E309F0A3DFFA806489828A83E0A3F6082E
:1015E800DFFA805889828A83E0A3F208DFFA804C08
:1015F80080D280FA80C680D4806980F280338010DF
:1016080080A680EA809A80A880DA80E280CA803347
:1016180089828A83ECFAE493A3C8C582C8CCC583BF
:10162800CCF0A3C8C582C8CCC583CCDFE9DEE7808F
:101638000D89828A83E493A3F608DFF9ECFAA9F00E
:10164800EDFB2289828A83ECFAE0A3C8C582C8CC64
:10165800C583CCF0A3C8C582C8CCC583CCDFEADE7D
:10166800E880DB89828A83E493A3F208DFF980CCDF
:1016780088F0EF60010E4E60C388F0ED2402B404D8
:101688000050B9F582EB2402B4040050AF2323457F
:0616980082239015F87397
:10169E00BB010689828A83E0225002E722BBFE024A
:0916AE00E32289828A83E493227D
:1016B700BB010CE58229F582E5833AF583E02250E8
:1016C70006E92582F8E622BBFE06E92582F8E22232
:0D16D700E58229F582E5833AF583E493224C
:1016E400BB010FF8E58229F582E5833AF583E0280A
:1016F400F0225009C58229F8E58226F622BBFE09AC
:10170400C58229F8E22582F222F8EA2583F583E9E5
:03171400932822F5
:10171700F8BB010DE58229F582E5833AF583E8F008
:10172700225006E92582C8F622BBFE05E92582C8B4
:02173700F2229C
:10173900BC000BBE0029EF8DF084FFADF022E4CC94
:10174900F875F008EF2FFFEE33FEEC33FCEE9DEC5D
:10175900984005FCEE9DFE0FD5F0E9E4CEFD22EDA3
:10176900F8F5F0EE8420D21CFEADF075F008EF2FED
:10177900FFED33FD4007985006D5F0F222C398FDDE
:051789000FD5F0EA227B
:10178E00C5F0F8A3E028F0C5F0F8E58215827002E6
:06179E001583E038F02283
:1017A400BB0110E58229F582E5833AF583E0F5F083
:1017B400A3E0225009E92582F886F008E622BBFE60
:1017C4000AE92582F8E2F5F008E222E5832AF583A6
:0817D400E993F5F0A3E993226B
:1017DC00BB010A89828A83F0E5F0A3F0225006F758
:0F17EC0009A7F01922BBFE06F3E5F009F3192255
:1017FB00F8BB0111E58229F582E5833AF583E8F020
:10180B00E5F0A3F0225009E92582C8F608A6F022DC
:0D181B00BBFE09E92582C8F2E5F008F222C3
:10182800EB9FF5F0EA9E42F0E99D42F0E89C45F016
:01183800228D
:10183900E8600FECC313FCED13FDEE13FEEF13FF8D
:03184900D8F122B1
:09184C00E0FBA3E0FAA3E0F9229D
:10185500F8E0FBA3A3E0F925F0F0E582158270021C
:071865001583E0FA38F022C0
:09186C00EBF0A3EAF0A3E9F0227D
:10187500D083D082F8E4937012740193700DA3A302
:1018850093F8740193F5828883E473740293686016
:06189500EFA3A3A380DF16
:10189B00EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02DDA
:1018AB00FDE43CFCE8A42EC8C5F03DFDE43CFCEF98
:0D18BB00A4FFE5F028FEE43DFDE43CFC2226
:100F0C00E5082404F582E43400F583E0050822901A
:100F1C000001301A03900004E475F0011218550218
:100F2C00169E2013E97F2ED2138018EF540F2490B5
:100F3C00D43440D4FF30170BEF24BFB41A00500345
:100F4C002461FFE50960021509050CE50C7002052A
:100F5C000B301A0E900001E475F001121855EF02D7
:100F6C0018C8022F467403D21A8003E4C21AF5087B
:100F7C0090000112186CE4F509F50BF50CE509600D
:100F8C00077F20120F4F80F5750AFFC214C213C2DF
:100F9C0015C216C218C219C21B120F1BFF700D30DE
:100FAC001A057F00120F60AF0CAE0B22B4255FC286
:100FBC00D5C217120F1BFF24D0B40A00501A75F0BB
:100FCC000A780930D50508B6FF0106C6A426F62016
:100FDC00D5047002D21680D924CFB41A00EF500475
:100FEC00C2E5D217021161D21480C6D21380C0D2CE
:100FFC001580BCD2D580BAD21880B47F20120F4F86
:10100C002015077401B5090040F1120F0CFF120FE7
:10101C004F020F89D21BD2198095120F0CFB120FA5
:10102C000CFA120F0CF94A4B700679327A127BFFCC
:10103C0020152EE509602A7E008E8275830012161B
:10104C00B760060EEE650A70F0C2D5EBC0E0EAC0E0
:10105C00E0E9C0E0EE1211A8D0E0F9D0E0FAD0E05F
:10106C00FB12169EFF60AAEBC0E0EAC0E0E9C0E00C
:10107C00120F4FD0E02401F9D0E03400FAD0E0FB9D
:10108C00E50A0460DCD50AD980877BFF7A1179A444
:10109C00D215809C791080027908C219C21B800875
:1010AC00D2D5790A8004790AC2D5E50A047002F512
:1010BC000AE4FAFDFEFF120F0CFC7B08201413123D
:1010CC000F0CFD7B1030130A120F0CFE120F0CFFCD
:1010DC007B20EC3382D592D55013C3E43013069F9A
:1010EC00FFE49EFEE42014039DFDE49CFCE4CBF89D
:1010FC00C214EC700CCFCECDCCE824F8F870F38091
:10110C0017C3EF33FFEE33FEED33FDEC33FCEB3363
:10111C00FB994002FB0FD8E9EB301405F8D0E0C482
:10112C0048B214C0E00AEC4D4E4F78207B0070C2E0
:10113C00EAB50A0040BCC0E01211AAD0F0D0E02001
:10114C001404C4C0E0C4B214C0F0120F38D0F0D5EF
:10115C00F0EB020F8912187510265310A0580FF7D8
:10116C004C0FF34210A44F10AC4410AC49100C437C
:08117C0010B2551096461096C2
:10118400451096471252500FFB2D0FFF2E10222BA5
:10119400100323102020123B2A0FBB480000101A12
:1011A4003F3F3F00790AA2D5201614301809B91020
:1011B400020404B9080104A2D52019025001042034
:1011C40015689215B509005034C0E07F2030161917
:1011D4007F30A21572197218500F121201C215C273
:1011E40019C218C21B7F30800F301803E9C0E01207
:1011F4000F4F301803D0E0F9D0E0B509CC30181700
:101204007F30B9100C120F4F7F583017077F78804A
:1012140003B90803120F4F3015057F2D020F4F7FBE
:1012240020201BF87F2B2019F322921580CF286EE3
:10123400756C6C2900D214120F0C3014F8C2147897
:101244000930D50108F6020FBB2D50434958120F3F
:101254000C2403B405004001E490124D93120F4096
:0D126400743A120F40D2167509040210A052
:1018C800BB010689828A83F0225002F722BBFE01FF
:0218D800F322F9
:00000001FF

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,502 @@
/*
******************************************************************************
*
* @file VOX_Module.h
* @brief VOL/R module
* @ic sy8835
*
* @version 1.0
* @date 2024/11/01 09:59:40
* @author Alex Xu
*
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
* All Rights Reserved
*
* History:
* Revision Date Author Desc
* 1.0.0 2024/11/01 Alex build this file
******************************************************************************
*/
#ifndef __VOX_MODULE_H__
#define __VOX_MODULE_H__
/*_____ I N C L U D E S ____________________________________________________*/
#include "define.h"
/*耳机方案商选择*/
//#define QIANCHENG //岍丞
//#define ZHONGKELANXUN //中科蓝讯
#define XIAOMI //小米
/*硬件版本信息*/
#define HW_VER 0x01 //硬件版本信息范围0-9
/*软件版本信息*/
#define FW_VER 0x001 //程序版本
extern bit Vox_Vout_Enable;
extern bit Earphone_Chg_Flag; //耳机出入盒标志位
extern bit Vox_Output_Short_Flag;
#define IVOX_THN 20 //耳机跟随充电流下降阈值
#define IVOX_THP 200 //耳机跟随充电流上升阈值
#define VOL_TYPE 0x00
#define VOR_TYPE 0x01
/*耳机配对状态*/
typedef enum {
VOX_PAIR_NONE = 0, //无效
VOX_PAIR_ING, //配对中
VOX_PAIR_OK, //配对完成
VOX_PAIR_KEEP, //不处理,保持当前状态
}e_Vox_Pairing_State;
/*耳机配对记录*/
typedef enum {
VOX_PAIRED_NONE = 0, //无配对过
VOX_PAIRED_OK, //有配对记录
}e_Vox_Paired_State;
#if VOX_ENABLE
/******************************************************************************\
Macro definitions
\******************************************************************************/
/*CHIP_STA1<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 VOL_Output_Short VOX_Sta_Vol_Output_Short_Pos_Msk
#define VOX_Sta_Vor_Output_Short_Pos (1U)
#define VOX_Sta_Vor_Output_Short_Pos_Msk (0x1UL << VOX_Sta_Vor_Output_Short_Pos)
#define VOR_Output_Short VOX_Sta_Vor_Output_Short_Pos_Msk
#define VOX_Sta_Vol_Ioff_Pos (2U)
#define VOX_Sta_Vol_Ioff_Pos_Msk (0x1UL << VOX_Sta_Vol_Ioff_Pos)
#define VOL_Ioff VOX_Sta_Vol_Ioff_Pos_Msk
#define VOX_Sta_Vor_Ioff_Pos (3U)
#define VOX_Sta_Vor_Ioff_Pos_Msk (0x1UL << VOX_Sta_Vor_Ioff_Pos)
#define VOR_Ioff VOX_Sta_Vor_Ioff_Pos_Msk
#define VOX_Sta_Vol_Loadon_Pos (5U)
#define VOX_Sta_Vol_Loadon_Pos_Msk (0x1UL << VOX_Sta_Vol_Loadon_Pos)
#define VOL_LoadOn VOX_Sta_Vol_Loadon_Pos_Msk
#define VOX_Sta_Vor_Loadon_Pos (7U)
#define VOX_Sta_Vor_Loadon_Pos_Msk (0x1UL << VOX_Sta_Vor_Loadon_Pos)
#define VOR_LoadOn VOX_Sta_Vor_Loadon_Pos_Msk
/* VOL/R Control Register - VOX_CTL0 <B7h> */
#define EN_VOL_ADTL_Pos (0U)
#define EN_VOL_ADTL_Pos_Msk (0x1UL << EN_VOL_ADTL_Pos)
#define EN_VOL_ADTL EN_VOL_ADTL_Pos_Msk
#define EN_VOR_ADTR_Pos (1U)
#define EN_VOR_ADTR_Pos_Msk (0x1UL << EN_VOR_ADTR_Pos)
#define EN_VOR_ADTR EN_VOR_ADTR_Pos_Msk
#define EN_VOL_PU_Pos (2U)
#define EN_VOL_PU_Pos_Msk (0x1UL << EN_VOL_PU_Pos)
#define EN_VOL_PU EN_VOL_PU_Pos_Msk
#define EN_VOR_PU_Pos (3U)
#define EN_VOR_PU_Pos_Msk (0x1UL << EN_VOR_PU_Pos)
#define EN_VOR_PU EN_VOR_PU_Pos_Msk
#define EN_VOL_VOUT_Pos (4U)
#define EN_VOL_VOUT_Pos_Msk (0x1UL << EN_VOL_VOUT_Pos)
#define EN_VOL_VOUT EN_VOL_VOUT_Pos_Msk
#define EN_VOR_VOUT_Pos (5U)
#define EN_VOR_VOUT_Pos_Msk (0x1UL << EN_VOR_VOUT_Pos)
#define EN_VOR_VOUT EN_VOR_VOUT_Pos_Msk
#define EN_VOL_VDS_Pos (6U)
#define EN_VOL_VDS_Pos_Msk (0x1UL << EN_VOL_VDS_Pos)
#define EN_VOL_VDS EN_VOL_VDS_Pos_Msk
#define EN_VOR_VDS_Pos (7U)
#define EN_VOR_VDS_Pos_Msk (0x1UL << EN_VOR_VDS_Pos)
#define EN_VOR_VDS EN_VOR_VDS_Pos_Msk
/* VOL/R ADT Config Register,VOX_CON0<6Ah> */
#define Vox_Pull_Up_Pos (7U)
#define Vox_Pull_Up_Pos_Msk (0x1UL << Vox_Pull_Up_Pos)
#define Vox_Pull_Up Vox_Pull_Up_Pos_Msk
#define Vox_Pull_Up_Deb_Pos (6U)
#define Vox_Pull_Up_Deb_8Ms_Pos_Msk 0
#define Vox_Pull_Up_Deb_16Ms_Pos_Msk 1
#define Vox_Pull_Up_Deb_8Ms (Vox_Pull_Up_Deb_8Ms_Pos_Msk << Vox_Pull_Up_Deb_Pos)
#define Vox_Pull_Up_Deb_16Ms (Vox_Pull_Up_Deb_16Ms_Pos_Msk << Vox_Pull_Up_Deb_Pos)
#define Vor_Pull_Down_Pos (5U)
#define Vor_Pull_Down_Pos_Msk (0x1UL << Vor_Pull_Down_Pos)
#define Vor_Pull_Down Vor_Pull_Down_Pos_Msk
#define Vol_Pull_Down_Pos (4U)
#define Vol_Pull_Down_Pos_Msk (0x1UL << Vol_Pull_Down_Pos)
#define Vol_Pull_Down Vol_Pull_Down_Pos_Msk
/*自动识别负载电流阈值。*/
#define VOX_ADT_Cur_0_5UA (0x0UL)
#define VOX_ADT_Cur_1_5UA (0x1UL)
#define VOX_ADT_Cur_2_5UA (0x2UL)
#define VOX_ADT_Cur_3_5UA (0x3UL)
#define VOX_ADT_Cur_4_5UA (0x4UL)
#define VOX_ADT_Cur_5_5UA (0x5UL)
#define VOX_ADT_Cur_6_5UA (0x6UL)
#define VOX_ADT_Cur_7_5UA (0x7UL)
/*
VOX过流档位设置(Vox_init())VOX_CON0
SFRADDR = VOX_CON0; //设置VOX输出200mA负载识别电流2.5uA。
SFRDATA |= VOX_ADT_Cur_2_5UA;
//Vox轻重载滤波时间配置
SFRADDR = VOX_CON2;
SFRDATA |= (VOX_LIGHT_TO_HAVEY_128 << 2) | VOX_HAVEY_TO_LIGHT_8;
*/
/* VOL/R Misc Config Register,VOX_CON2<6Ch> */
#define Vox_Ioff_2mA (0x0UL)
#define Vox_Ioff_3mA (0x1UL)
#define Vox_Ioff_4mA (0x2UL)
#define Vox_Ioff_5mA (0x3UL)
/*轻载转重载滤波时间配置。*/
#define VOX_LIGHT_TO_HAVEY_1 (0x0UL)
#define VOX_LIGHT_TO_HAVEY_8 (0x1UL)
#define VOX_LIGHT_TO_HAVEY_128 (0x2UL)
#define VOX_LIGHT_TO_HAVEY_256 (0x3UL)
/*重载转轻载滤波时间配置。*/
#define VOX_HAVEY_TO_LIGHT_0_125 (0x0UL)
#define VOX_HAVEY_TO_LIGHT_1 (0x1UL)
#define VOX_HAVEY_TO_LIGHT_8 (0x2UL)
#define VOX_HAVEY_TO_LIGHT_64 (0x3UL)
/* VOL/R Comm Control Register,COMM_CTL<BDh> */
#define Vor_EN_COMR_Pos (7U)
#define Vor_EN_COMR_Pos_Msk (0x1UL << Vor_EN_COMR_Pos)
#define Vor_EN_COMR Vor_EN_COMR_Pos_Msk
#define Vor_SW_MD_Pos (6U)
#define Vor_SW_MD_Pos_Msk (0x1UL << Vor_SW_MD_Pos)
#define Vor_SW_MD Vor_SW_MD_Pos_Msk
#define Vor_SWDT_Pos (5U)
#define Vor_SWDT_Pos_Msk (0x1UL << Vor_SWDT_Pos)
#define Vor_SWDT Vor_SWDT_Pos_Msk
#define Vor_SWDR_Pos (4U)
#define Vor_SWDR_Pos_Msk (0x1UL << Vor_SWDR_Pos)
#define Vor_SWDR Vor_SWDR_Pos_Msk
#define Vol_EN_COMR_Pos (3U)
#define Vol_EN_COMR_Pos_Msk (0x1UL << Vol_EN_COMR_Pos)
#define Vol_EN_COMR Vol_EN_COMR_Pos_Msk
#define Vol_SW_MD_Pos (2U)
#define Vol_SW_MD_Pos_Msk (0x1UL << Vol_SW_MD_Pos)
#define Vol_SW_MD Vol_SW_MD_Pos_Msk
#define Vol_SWDT_Pos (1U)
#define Vol_SWDT_Pos_Msk (0x1UL << Vol_SWDT_Pos)
#define Vol_SWDT Vol_SWDT_Pos_Msk
#define Vol_SWDR_Pos (0U)
#define Vol_SWDR_Pos_Msk (0x1UL << Vol_SWDR_Pos)
#define Vol_SWDR Vol_SWDR_Pos_Msk
/* VOL/R Comm TRx Data Register,COMM_DAT<BEh> */
#define Vor_COMR_RX_Pos (5U)
#define Vor_COMR_RX_Pos_Msk (0x1UL << Vor_COMR_RX_Pos)
#define Vor_COMR_RX Vor_COMR_RX_Pos_Msk
#define Vol_COML_RX_Pos (4U)
#define Vol_COML_RX_Pos_Msk (0x1UL << Vol_COML_RX_Pos)
#define Vol_COML_RX Vol_COML_RX_Pos_Msk
#define Vor_COMR_DT_Pos (1U)
#define Vor_COMR_DT_Pos_Msk (0x1UL << Vor_COMR_DT_Pos)
#define Vor_COMR_DT Vor_COMR_DT_Pos_Msk
#define Vol_COML_DT_Pos (0U)
#define Vol_COML_DT_Pos_Msk (0x1UL << Vol_COML_DT_Pos)
#define Vol_COML_DT Vol_COML_DT_Pos_Msk
/* VOL/R Comm Config Register,COMM_CON<6Fh> */
#define Vox_COMM_PULL_Vol_Pos (2U)
#define Vox_COMM_PULL_Vol_1_8_Pos_Msk (0x00UL)
#define Vox_COMM_PULL_Vol_2_5_Pos_Msk (0x01UL)
#define Vox_COMM_PULL_Vol_3_0_Pos_Msk (0x02UL)
#define Vox_COMM_PULL_Vol_5_0_Pos_Msk (0x03UL)
#define Vox_COMM_PULL_Vol_1_8 (Vox_COMM_PULL_Vol_1_8_Pos_Msk << Vox_COMM_PULL_Vol_Pos)
#define Vox_COMM_PULL_Vol_2_5 (Vox_COMM_PULL_Vol_2_5_Pos_Msk << Vox_COMM_PULL_Vol_Pos)
#define Vox_COMM_PULL_Vol_3_0 (Vox_COMM_PULL_Vol_3_0_Pos_Msk << Vox_COMM_PULL_Vol_Pos)
#define Vox_COMM_PULL_Vol_5_0 (Vox_COMM_PULL_Vol_5_0_Pos_Msk << Vox_COMM_PULL_Vol_Pos)
#define Vox_Pull_Up_50k_Pos (0U)
#define Vox_Pull_Up_50k_Pos_Msk (0x1UL << Vox_Pull_Up_50k_Pos)
#define Vox_Pull_Up_50k Vox_Pull_Up_50k_Pos_Msk
#define BOXHEADER 0x55AA //VOX通讯数据包头
#define EARPHONE_HEADER_HIGH 0x55
#define EARPHONE_HEADER_LOW 0xAA
#define BOXIDCODE 0xFF //VOX通讯耳机->仓数据包头
#define Vox_TX_Interval 2 //Vox定时发送指令时间间隔
#define Vox_TX_Interval_2 4
#define TIM_SHUTDOWN_DEBOUNCE 600 //关机前debounce时间
/******************************************************************************\
Variables definitions
\******************************************************************************/
/* 双向通讯协议选择 */
#define JIELI 1
#define ZHONGKE 0
/*耳机通道选择*/
#define TWS_VOL 0x04
#define TWS_VOR 0x05
#define TWS_BOX 0x02
#define TWS_PC 0x03
#if JIELI
/*耳机通道选择*/
typedef enum {
VOL_CHAN = 0x00,
VOR_CHAN = 0x01,
VOX_MAX_CHAN = 0x02,
VOX_BOTH = 0xFF,
}e_Vox_Chan;
/*耳机和充电仓进行双向通讯的协议命令ID。*/
typedef enum _VOX_BES_COMMAND_E
{
VHOUSE_CMD_PAIR = 0x01, //充电仓发起的配对信息
VHOUSE_CMD_EXCH_TWS_BTADDR = 0x02, //交换对耳的蓝牙地址信息。
VHOUSE_CMD_CLEAR_PAIR = 0x03, //清配对信息
VHOUSE_CMD_OPEN_BOX = 0x06, //开盖获取电量包
VHOUSE_CMD_CLOSE_WIN_GET_VBAT = 0x07, //关盖获取电量包
VHOUSE_CMD_RST = 0x08, //
VHOUSE_CMD_PWROFF = 0x80, //关机消息
VHOUSE_CMD_CLOSE_BOX = 0x81,
BES_RESET = 0xE1,
}VOX_BES_COMMAND_E;
#elif ZHONGKE
/*耳机通道选择*/
typedef enum {
VOL_CHAN = 0x11,
VOR_CHAN = 0x22,
VOX_MAX_CHAN = 0x02,
VOX_BOTH = 0xff,
}e_Vox_Chan;
/*耳机和充电仓进行双向通讯的协议命令ID。*/
typedef enum _VOX_BES_COMMAND_E
{
VHOUSE_CMD_GET_VBAT = 0x01, //获取电池电量,也可作为开始标志
VHOUSE_CMD_PAIR, //充电仓发起的配对信息
VHOUSE_CMD_GET_TWS_BTADDR, //获取对耳的蓝牙地址信息充电仓无需使用本命令本命令为对耳相互转发充电仓只作转发缓存收到该命令后copy给另一只对耳即可。
VHOUSE_CMD_CLEAR_PAIR, //清除配对信息
VHOUSE_CMD_PWROFF, //关机消息
VHOUSE_CMD_ERR, //接收消息错误
VHOUSE_CMD_SUCCESS, //成功响应
VHOUSE_CMD_CLOSE_WINDOW, //关盖
VHOUSE_CMD_OPEN_WINDOW, //开盖
VHOUSE_CMD_CLOSE_WIN_GET_VBAT, //关盖获取电量包
VHOUSE_CMD_ENABLE_POPUP = 0x80, //开关弹窗功能控制
VHOUSE_CMD_CUSTOM_RESV1 = 0xE0, //客户保留指令
BES_RESET = 0xE1,
VHOUSE_CMD_CUSTOM_RESV_END = 0xEF,
VHOUSE_CMD_SYS_RST = 0xFF, //系统复位指令
}VOX_BES_COMMAND_E;
#endif
/* Vox Channel Select. */
typedef enum {
VOL_CHAN_SET = 0x00,
VOR_CHAN_SET = 0x01,
VOX_BOTH_SET = 0x02,
}e_Vox_Chan_Set;
/* Vox Follow Charge State. */
typedef enum {
Vox_Follow_Chg_InitSta = 0x00,
Vox_Follow_Chg_Sta1,
Vox_Follow_Chg_Sta2,
Vox_Follow_Chg_Sta3,
Vox_Follow_Chg_Sta4,
}e_Vox_Follow_Chg_Sta;
/* VOX Enable Type */
typedef enum {
VOX_TRANS_Mode = 0x00, //VOx UART 透传功能使能
VOX_COMM_Mode_Uart, //VOx 通讯 UART Mode
VOX_COMM_Mode_Reg, //VOx 通讯 Register Mode
VOX_VOUT_Mode, //VOx 5V 输出使能
VOX_ADT_Mode, //VOx 负载接入、存在识别功能使能,负载自动识别
VOX_PUnK_Mode, //Vox上拉电阻配置上拉到VOX_Vup。
VOX_PD1K_Mode, //<SHIP_CTL[VOX_PD1K 5:4]> VOX 1K 电阻下拉使能 1: VOR 通过 1K 电阻下拉至 gnd
} VOX_Enable_Mode_e;
extern bit Cover_Open_Flag;
extern bit Vox_Ocp_Flag;
extern bit Boost_Open_Flag;
extern bit OpenCover_TX_Cmd_Flag;
#ifdef VOX_RX
extern xdata uint8_t Vox_Get_Vbat_Flag[2]; //耳机配对状态VOL:低4bitVOR:高4bit。0是无效1是正在配对2是配对成功3不处理保持当前状态。
extern xdata uint8_t Vox_Get_BES_Addr_Flag[2] ;
#endif
#if VOX_FOLLOW_CHG
typedef struct {
uint16_t IVox_Init[VOX_MAX_CHAN]; //跟随充Vox初始化电流值。
uint16_t IVox_Threshold_Neg[VOX_MAX_CHAN]; //Vox电流下降阈值
uint16_t IVox_Threshold_Pos[VOX_MAX_CHAN]; //Vox电流上升阈值
uint16_t IVox_At_Present[VOX_MAX_CHAN]; //Vox当前电流
uint8_t IVox_TC_Mode[VOX_MAX_CHAN]; //Vox CV_TC充电电流阈值
uint8_t Vpmid_SubSta[VOX_MAX_CHAN]; //Vox的Vpmid电压下降标志
uint8_t Vpmid_SubSta_Flag; //Vpmid电压下降标志
uint8_t Vpmid_AddSta[VOX_MAX_CHAN]; //Vpmid电压上升标志
uint8_t Vox_InBox_Sta[VOX_MAX_CHAN]; //耳机在盒标志
uint8_t Vpmid_Threshold_Neg; //Vpmid电压下降阈值
uint8_t Vpmid_Threshold_At_Present; //Vpmid电压当前值
uint8_t Vpmid_Threshold_Pos; //Vpmid电压上升阈值
uint8_t Vox_PTM_Type; //Boost 直通模式使能状态位ON:Enable;OFF:Disable。
uint8_t Vox_Follow_Start; //跟随充启动标志
uint8_t Vox_Follow_Stop; //跟随充结束标志
} g_Vox_Fllow_Chg_Cfg;
extern g_Vox_Fllow_Chg_Cfg xdata Vox_Fllow_Chg;
#endif
/******************************************************************************\
UserCfg.Functions definitions
\******************************************************************************/
extern void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select);
extern void Vox_Det_Machine(void);
#if VOX_FOLLOW_CHG
extern void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg );
#endif
extern void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode);
#ifdef VOX_RX
extern void HandleVoxCommMsg(void);
#endif
#endif
#endif

View File

@ -1,6 +1,4 @@
---- ADC_CTL0 Matches (5 in 4 files) ----
Adc_Init in adc.c (UsrSrc\adc) : SFRADDR = ADC_CTL0; //0B10111101,<0x29>--ADC EN;ADC 2.5V Enable b[4];ADC1 Pullup 100K Enable b[5]; continue mode; ADC CLK divided by 48=230k
reg3315.h (UsrInc\inc) line 95 : #define ADC_CTL0 0x30
reg883x.h (UsrInc\inc) line 41 : #define ADC_CTL0 0x29
OutSleep_Handler in sleep.c (UsrSrc\sleep) : SFRADDR = ADC_CTL0;
InSleep_Handler in sleep.c (UsrSrc\sleep) : SFRADDR = ADC_CTL0;
---- MAX_PACKET_SIZE Matches (3 in 1 files) ----
vox_module.c (UsrSrc\vox) line 77 : #define MAX_PACKET_SIZE 0x20
HandleTxCommand in vox_module.c (UsrSrc\vox) : tx_pData[3] = MAX_PACKET_SIZE;
HandleTxCommand in vox_module.c (UsrSrc\vox) : tx_pData[7] = MAX_PACKET_SIZE; //max_packet_size:0x20

Binary file not shown.

View File

@ -23,8 +23,6 @@
#include "define.h"
extern bit Charger_Done;
#ifdef NTC_ENABLE
extern bit NTC_Pro_Flag;
#endif
@ -40,8 +38,6 @@ typedef enum
CHG_STA_COMPLETED, // 充电完成
CHG_STA_PULLOUT, // 充电器拔出
} TE_CHG_STA;
typedef enum
@ -58,10 +54,15 @@ extern idata TE_CHG_STA ChgStatus; // ϵͳ״̬
/* Charger Current Setting */
typedef struct {
uint8_t nTrickle_Cur; //Set Trickle Current Trickle charge 电流配置step 10mA;
uint8_t nConstant_Cur; //Set Constant Current 恒流 cc 电流配置step 25mA
uint8_t nIterm_Cur; //Set Iterm Current iterm charge 电流配置(范围5mA ~ 50mA ,step 5mA)
uint8_t nVFloat;
} s_gCharger_Cfg;
/* CHG Control Register-CHG_CTL */

View File

@ -61,6 +61,12 @@
#define VOX_RX //739Bytes
/* Ë«ÏòͨѶЭÒéÑ¡Ôñ */
#define JIELI 1
#define ZHONGKE 0
#endif
#define CHARGER_ENABLE 1 //94Bytes
@ -93,9 +99,10 @@
#define _DEBUG_MAIN
// #define _DEBUG_KEY
// #define _DEBUG_VOX
#define _DEBUG_VOX
// #define _DEBUG_FOLLOW
// #define _DEBUG_HALL
#define _DEBUG_ADC
// #define _DEBUG_ADC
// #define _DEBUG_DISCHARGE
// #define _DEBUG_CHARGER
// #define _DEBUG_SLEEP

View File

@ -269,6 +269,8 @@ SFRDATA |= (VOX_LIGHT_TO_HAVEY_128 << 2) | VOX_HAVEY_TO_LIGHT_8;
#define Vox_TX_Interval 2 //Vox定时发送指令时间间隔
#define Vox_TX_Interval_2 4
#define TIM_SHUTDOWN_DEBOUNCE 600 //关机前debounce时间
/******************************************************************************\
@ -282,6 +284,8 @@ SFRDATA |= (VOX_LIGHT_TO_HAVEY_128 << 2) | VOX_HAVEY_TO_LIGHT_8;
#define TWS_BOX 0x02
#define TWS_PC 0x03
#if JIELI
/*耳机通道选择*/
typedef enum {
@ -319,6 +323,59 @@ typedef enum {
}VOX_BES_COMMAND_E;
#elif ZHONGKE
/*耳机通道选择*/
typedef enum {
VOL_CHAN = 0x11,
VOR_CHAN = 0x22,
VOX_MAX_CHAN = 0x02,
VOX_BOTH = 0xff,
}e_Vox_Chan;
/*耳机和充电仓进行双向通讯的协议命令ID。*/
typedef enum _VOX_BES_COMMAND_E
{
VHOUSE_CMD_GET_VBAT = 0x01, //获取电池电量,也可作为开始标志
VHOUSE_CMD_PAIR, //充电仓发起的配对信息
VHOUSE_CMD_GET_TWS_BTADDR, //获取对耳的蓝牙地址信息充电仓无需使用本命令本命令为对耳相互转发充电仓只作转发缓存收到该命令后copy给另一只对耳即可。
VHOUSE_CMD_CLEAR_PAIR, //清除配对信息
VHOUSE_CMD_PWROFF, //关机消息
VHOUSE_CMD_ERR, //接收消息错误
VHOUSE_CMD_SUCCESS, //成功响应
VHOUSE_CMD_CLOSE_WINDOW, //关盖
VHOUSE_CMD_OPEN_WINDOW, //开盖
VHOUSE_CMD_CLOSE_WIN_GET_VBAT, //关盖获取电量包
VHOUSE_CMD_ENABLE_POPUP = 0x80, //开关弹窗功能控制
VHOUSE_CMD_CUSTOM_RESV1 = 0xE0, //客户保留指令
BES_RESET = 0xE1,
VHOUSE_CMD_CUSTOM_RESV_END = 0xEF,
VHOUSE_CMD_SYS_RST = 0xFF, //系统复位指令
}VOX_BES_COMMAND_E;
#endif
/* Vox Channel Select. */
typedef enum {
@ -367,6 +424,9 @@ typedef enum {
extern bit Cover_Open_Flag;
extern bit Vox_Ocp_Flag;
extern bit Boost_Open_Flag;
extern bit OpenCover_TX_Cmd_Flag;
#ifdef VOX_RX

View File

@ -28,13 +28,10 @@
#include "userapp.h"
#include "bat.h"
bit Charger_Done = 0;
#ifdef NTC_ENABLE
bit NTC_Pro_Flag = 0;
#endif
idata TE_CHG_STA ChgStatus; // CHG状态定义
#if CHARGER_ENABLE
@ -72,6 +69,9 @@ idata s_gCharger_Cfg gCharge_Cfg;
void Charger_Init(void)
{
SFRADDR = PMU_CTL8;
SFRDATA |= 0x20;
#ifdef SY8838Q //合封OVP芯片SY8838Q
SFRADDR = PMU_CTL7; //合封芯片关闭VBUS OV检测使能
@ -484,8 +484,6 @@ void Charger_Handler(void)
ChgStatus = CHG_NONE;
Charger_Done = 0;
#ifdef _DEBUG_CHARGER
printf("No Chg\r\n");
#endif
@ -570,16 +568,7 @@ void Charger_Handler(void)
CHG_CTL &= ~CHG_EN; //Disable Charger
}
if( !Charger_Done )
{
Charger_Done = 1;
ChgStatus = CHG_STA_COMPLETED;
#ifdef LED_DISPLAY
LED_On_Flag = 1;
#endif
}
#endif
}
else
@ -611,9 +600,7 @@ void Charger_Handler(void)
#ifdef _DEBUG_CHARGER
printf("Chg ing\r\n");
#endif
Charger_Done = 0;
}
}
#endif

View File

@ -139,19 +139,17 @@ void DisCharge_Handler(void)
#else
gBoost_Prepared_Flag = 0;
/* 过温保护 --- 硬件实现 */
if( CHIP_STA3 & 0x02 )
{
gBoost_Prepared_Flag = 0;
return;
}
/*Boost Input UVLO 硬件实现*/
if( (CHIP_STA0 & BOOST_BATUV) ) //用于清软件标志位。
{
gBoost_Prepared_Flag = 0;
gBoost_UVLO_Flag = 1;
return;
@ -160,7 +158,6 @@ void DisCharge_Handler(void)
/* BAT LOW Interrupt */
if( IRQ_FLAG0 & BAT_Low )
{
gBoost_Prepared_Flag = 0;
return;
}
@ -171,7 +168,6 @@ void DisCharge_Handler(void)
#ifdef _DEBUG_DISCHARGE
printf("Boost Pro Output Short!\r\n");
#endif
gBoost_Prepared_Flag = 0;
if( F_sys_tim_250ms )
{
@ -188,7 +184,6 @@ void DisCharge_Handler(void)
/*NTC Handle*/ //使能Boost前先检测NTC温度异常就不开放电。
if( PMU_NTC_Handle( DISCHG_ON ) ) //NTC保护不放电。
{
gBoost_Prepared_Flag = 0;
DisCharge_Boost_Close();
@ -207,8 +202,6 @@ void DisCharge_Handler(void)
{
DisCharge_Boost_Close();
gBoost_Prepared_Flag = 0;
return;
}

View File

@ -113,18 +113,20 @@ xdata uint8_t Hall_Sta_bk = 0xff;
CoverEvent_Flg = 1;
Boost_Open_Flag = 0;
CoverEvent_Flg_led = 1;
#ifdef LED_DISPLAY
LED_On_Flag = 1;
#endif
Hall_Sta_bk = Hall_Sta;
#if SLEEP_ENABLE
Enter_Sleep_Cnt_Restart_Flag = 1;
#endif
Hall_Sta_bk = Hall_Sta;
}
}

View File

@ -26,6 +26,7 @@
#include "vox_module.h"
#include "userapp.h"
#include "hall.h"
#include "discharge_module.h"
#if KEY_ENABLE
/******************************************************************************\
@ -45,6 +46,8 @@
#define KEY_TWS_PAIR_CLEAR_CNT 30
#define KEY_LIFT_CNT 20
/******************************************************************************\
Variables definitions
\******************************************************************************/
@ -59,10 +62,14 @@ idata KEY_EVENT_E Event_key = 0;
uint8_t Key_TWS_Pair_Tim = 0;
uint8_t Key_TWS_Clear_Pair_Tim = 0;
uint8_t Key_TWS_Pair_Cnt = 0;
uint16_t Key_Press_Debounce = 0;
uint8_t Key_Lift_Debounce = 0;
/******************************************************************************\
Functions definitions
\******************************************************************************/
@ -132,10 +139,14 @@ uint16_t Key_Press_Debounce = 0;
Enter_Sleep_Cnt_Restart_Flag = 1;
#endif
Event_key = KEY_EVENT_Empty;
Key_Press_Flag = 0;
Key_Lift_Flag = 1;
Key_Lift_Debounce = 0;
nKey_Press_8s_Flag = 0;
if( (Key_Press_Debounce <= KEY_PRESS_500MS_CNT) ) //松开按键按下时间小于500ms则识别为短按显示电量
@ -162,12 +173,31 @@ uint16_t Key_Press_Debounce = 0;
Key_Press_Debounce = 0;
}
if( Key_Lift_Flag )
if( Key_Lift_Flag && gBoost_Prepared_Flag )
{
Key_Lift_Flag = 0;
if( Key_Press_l_irq )
{
if( !Boost_Open_Flag )
{
DisCharge_Boost_Open(OFF,Boost_Vout_5_225V);
Boost_Open_Flag = 1;
#ifdef _DEBUG_KEY
printf("Boost Open Key.(line:%d)\r\n",(u16)__LINE__);
#endif
return;
}
VOX_EN_Type(VOX_VOUT_Mode); //VOX Enable 5V
if( Key_Lift_Debounce <= KEY_LIFT_CNT )
{
Key_Lift_Debounce++;
return;
}
Key_Press_l_irq = 0;
/*todo*/
Event_key = KEY_EVENT_L_2S;
@ -175,6 +205,9 @@ uint16_t Key_Press_Debounce = 0;
Key_TWS_Pair_Tim = 0;
/*耳机配对*/
Vox_Get_BES_Addr_Flag[VOL_TYPE] = 0x00;
Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0x00;
#ifdef _DEBUG_KEY
printf("long 2s press\r\n");
@ -183,7 +216,30 @@ uint16_t Key_Press_Debounce = 0;
/*长按8s系统强制进shipmode.*/
if( Key_Press_ll_irq )
{
if( !Boost_Open_Flag )
{
DisCharge_Boost_Open(OFF,Boost_Vout_5_225V);
Boost_Open_Flag = 1;
#ifdef _DEBUG_KEY
printf("Boost Open Key.(line:%d)\r\n",(u16)__LINE__);
#endif
return;
}
VOX_EN_Type(VOX_VOUT_Mode); //VOX Enable 5V
if( Key_Lift_Debounce <= KEY_LIFT_CNT )
{
Key_Lift_Debounce++;
return;
}
Key_Press_ll_irq = 0;
Key_TWS_Clear_Pair_Tim = 0;
/*todo*/
Event_key = KEY_EVENT_LL_8S;
@ -203,10 +259,10 @@ uint16_t Key_Press_Debounce = 0;
printf("short press\r\n");
#endif
}
}
else
{
Event_key = KEY_EVENT_Empty;
Key_Lift_Flag = 0;
Boost_Open_Flag = 0;
}
#if 1
@ -220,16 +276,28 @@ uint16_t Key_Press_Debounce = 0;
HandleTxCommand(VHOUSE_CMD_PAIR,VOR_CHAN); //右耳发配对指令,区分耳机通道。
#endif
Vox_Get_BES_Addr_Flag[VOL_TYPE] = 0x00;
Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0x00;
#ifdef _DEBUG_KEY
printf("Key Pair TX VOR(line:%d).\r\n",(uint16_t)__LINE__);
#endif
}
else
{
if(Key_TWS_Pair_Cnt > KEY_TWS_PAIR_CNT) //耳机蓝牙地址置换超时10s关闭蓝牙地址置换开启VOX 5V。
{
Key_TWS_Pair_Cnt = 0;
Event_key = KEY_EVENT_Empty;
OpenCover_TX_Cmd_Flag = 1;
#if VOX_ENABLE
VOX_EN_Type(VOX_VOUT_Mode);
VOX_EN_Type(VOX_ADT_Mode);
#endif
#ifdef _DEBUG_KEY
printf("Key Pair TimeOut(line:%d).\r\n",(uint16_t)__LINE__);
#endif
return;
}
else
@ -240,6 +308,10 @@ uint16_t Key_Press_Debounce = 0;
HandleTxCommand(VHOUSE_CMD_EXCH_TWS_BTADDR,VOL_CHAN); /*获取到右耳回复的CMD3指令转发给左耳。*/
#endif
Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0x02;
#ifdef _DEBUG_KEY
printf("Key Pair Get VOR(line:%d).\r\n",(uint16_t)__LINE__);
#endif
}
else
if( Vox_Get_BES_Addr_Flag[VOR_TYPE] == 0x02 )
@ -250,13 +322,21 @@ uint16_t Key_Press_Debounce = 0;
HandleTxCommand(VHOUSE_CMD_EXCH_TWS_BTADDR,VOR_CHAN); /*获取到右耳回复的CMD3指令转发给左耳。*/
#endif
Vox_Get_BES_Addr_Flag[VOL_TYPE] = 0x00;
Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0x00;
Key_TWS_Pair_Tim = 0;
Key_TWS_Pair_Cnt = 0;
Event_key = KEY_EVENT_Empty;
VOX_EN_Type(VOX_VOUT_Mode);
OpenCover_TX_Cmd_Flag = 1;
VOX_EN_Type(VOX_ADT_Mode);
#ifdef _DEBUG_KEY
printf("Key Pair Get VOL(line:%d).\r\n",(uint16_t)__LINE__);
#endif
return;
}
else
@ -264,15 +344,22 @@ uint16_t Key_Press_Debounce = 0;
#ifdef VOX_TX
HandleTxCommand(VHOUSE_CMD_PAIR,VOL_CHAN);
#endif
#ifdef _DEBUG_KEY
printf("Key Pair TX VOL(line:%d).\r\n",(uint16_t)__LINE__);
#endif
}
}
}
}
if(Key_TWS_Pair_Tim > KEY_TWS_PAIR_TIMER) //3s重发一次。重发5次后超时
if(Key_TWS_Pair_Tim > KEY_TWS_PAIR_TIMER) //2s重发一次。重发5次后超时
{
Key_TWS_Pair_Cnt++;
Key_TWS_Pair_Tim = 0;
#ifdef _DEBUG_KEY
printf("Key Pair Cnt:%d.(line:%d)\r\n",(uint16_t)Key_TWS_Pair_Cnt,(uint16_t)__LINE__);
#endif
}
else
{
@ -282,28 +369,33 @@ uint16_t Key_Press_Debounce = 0;
else
if( Event_key == KEY_EVENT_LL_8S )
{
if( Key_TWS_Pair_Tim < KEY_TWS_PAIR_CLEAR_CNT ) //每隔200ms发送一次持续时间3s。
if( Key_TWS_Clear_Pair_Tim < KEY_TWS_PAIR_CLEAR_CNT ) //每隔200ms发送一次持续时间3s。
{
if( Key_TWS_Pair_Tim % ( Vox_TX_Interval + 2 ) )
if( Key_TWS_Clear_Pair_Tim % Vox_TX_Interval_2 )
{
#ifdef VOX_TX
HandleTxCommand(VHOUSE_CMD_CLEAR_PAIR,VOR_CHAN);
#endif
}
else
if( Key_TWS_Pair_Tim % Vox_TX_Interval )
if( Key_TWS_Clear_Pair_Tim % Vox_TX_Interval )
{
#ifdef VOX_TX
HandleTxCommand(VHOUSE_CMD_CLEAR_PAIR,VOL_CHAN);
#endif
}
Key_TWS_Pair_Tim++;
Key_TWS_Clear_Pair_Tim++;
}
else
{
Event_key = KEY_EVENT_Empty;
Key_TWS_Pair_Tim = 0;
OpenCover_TX_Cmd_Flag = 1;
Key_TWS_Clear_Pair_Tim = 0;
VOX_EN_Type(VOX_ADT_Mode);
}
}
}

View File

@ -203,7 +203,7 @@ void Enter_Sleep(void)
*/
bit Check_Require_Sleep(void )
{
if( ( ChgStatus == CHG_STA_ING ) || ( ON == Vox_Vout_Enable ) || Enter_Sleep_Cnt_Restart_Flag ) /*充电中、有中断、耳机处于充电状态情况下Boost重载输出系统不进休眠模式。 */
if( ( ChgStatus > CHG_PROTECT ) || ( ON == Vox_Vout_Enable ) || Enter_Sleep_Cnt_Restart_Flag ) /*充电中、有中断、耳机处于充电状态情况下Boost重载输出系统不进休眠模式。 */
{
#ifdef _DEBUG_SLEEP
printf("Not Get Into Sleep(ChgStatus:%d,Vox_Vout:%d,Restart_Flag:%d).\r\n",(uint16_t)ChgStatus,(uint16_t)Vox_Vout_Enable,(uint16_t)Enter_Sleep_Cnt_Restart_Flag);

View File

@ -284,6 +284,10 @@ uint8_t Rx1Status = 0;
uint8_t RX1_Cnt = 0;
#define Vox_Comm_JL_HEADER_DATA_LEN 4
#define Vox_Comm_ZK_HEADER_DATA_LEN 6
/*uart1中断处理函数*/
void uart1_Interrupt(void) interrupt Interrupt_Vector_RI1_TI1
{
@ -345,7 +349,11 @@ void uart1_Interrupt(void) interrupt Interrupt_Vector_RI1_TI1
{
RX1_Buffer[RX1_Cnt++] = S1BUF;
if( RX1_Cnt >= ( RX1_Buffer[2] + 4 ) )
#if JIELI
if ( ( RX1_Cnt >= ( RX1_Buffer[2] + Vox_Comm_JL_HEADER_DATA_LEN ) ) || ( RX1_Cnt > COM0_Data_Lenth ) )
#elif ZHONGKE
if ( ( RX1_Cnt >= ( RX1_Buffer[4] + Vox_Comm_ZK_HEADER_DATA_LEN ) ) || ( RX1_Cnt > COM0_Data_Lenth ) )
#endif
{
RX1_Cnt = 0;

View File

@ -139,26 +139,28 @@ void LED_Display_App(void)
}
else
{
if( Display_RSta != LED_KEEP_FLASHING )
if( Display_RSta != LED_FLASH )
{
Display_Red_Flash(20,10);
}
if( Display_GSta != LED_KEEP_FLASHING )
if( Display_GSta != LED_FLASH )
{
Display_Green_Flash(20,10);
}
if( Display_YSta != LED_KEEP_FLASHING )
if( Display_YSta != LED_FLASH )
{
Display_Yellow_Flash(20,10);
}
if( Display_BSta != LED_KEEP_FLASHING )
if( Display_BSta != LED_FLASH )
{
Display_Blue_Flash(20,10);
}
if( Vox_Output_Short_Flag )
{
if( LED_On_Timer < LED_PRO_TIM )
{
LED_On_Timer++;
@ -166,6 +168,9 @@ void LED_Display_App(void)
else
{
Vox_Ocp_Flag = 1;
LED_On_Flag = 1;
}
}
}
@ -190,15 +195,17 @@ void LED_Display_App(void)
#endif
if (ChgStatus == CHG_STA_ING) //ChgStatus = CHG_STA_ING
if (ChgStatus != CHG_NONE)
{
if ( Charger_Done ) // ³äµçÍê³É£¬4¸öLED³£ÁÁ
if ( ChgStatus == CHG_STA_COMPLETED ) // ³äµçÍê³É£¬4¸öLED³£ÁÁ
{
if( !LED_On_ChgDone_Flag )
{
LED_On_ChgDone_Flag = 1;
LED_Breating_Light_Off();
return;
}
Display_AllOn();
@ -209,6 +216,8 @@ void LED_Display_App(void)
{
LED_On_Chg_Flag = 1;
LED_On_ChgDone_Flag = 0;
LED_On_Flag = 1;
Breathing_Light_Cnt = LED_R;
@ -409,13 +418,6 @@ void ADC_GetValue_Machine(void)
*/
void System_Drivers_Machine(void)
{
#if CHARGER_ENABLE
Charger_Handler();
#endif
#if DISCHARGE_ENABLE
DisCharge_Handler();
#endif
#if HALL_ENABLE
Hall_Handler();
@ -432,6 +434,15 @@ void System_Drivers_Machine(void)
if ( F_sys_tim_100ms )
{
F_sys_tim_100ms = 0;
#if CHARGER_ENABLE
Charger_Handler();
#endif
#if DISCHARGE_ENABLE
DisCharge_Handler();
#endif
#if BAT_VALUE
check_bat_level();
#endif
@ -480,7 +491,7 @@ void SysTem_State_Machine(void)
#endif
#ifdef _DEBUG_MAIN
printf("Power On State!Hall(0x%x) (line:%d)\r\n", (uint16_t)CoverStatus,(uint16_t)__LINE__);
// printf("Power On State!Hall(0x%x) (line:%d)\r\n", (uint16_t)CoverStatus,(uint16_t)__LINE__);
#endif
break;
@ -599,10 +610,13 @@ void SysTem_State_Machine(void)
F_sys_tim_1s = 0;
#ifdef _DEBUG_MAIN
printf("STA0:0x%x,STA1:0x%x,STA2:0x%x,STA3:0x%x,STA4:0x%x.Dec_Sleep:%d\r\n",(uint16_t)(CHIP_STA0),(uint16_t)(CHIP_STA1),(uint16_t)(CHIP_STA2),(uint16_t)(CHIP_STA3),(uint16_t)(CHIP_STA4),(uint16_t)Decnt_SleepDelay);
SFRADDR = ST_VOX;
ret = SFRDATA;
printf("CHG_STA:%d,ST_VOX:0x%x,STA0:0x%x,STA1:0x%x,STA2:0x%x,STA3:0x%x,STA4:0x%x.Dec_Sleep:%d\r\n",(uint16_t)ChgStatus,(uint16_t)ret,(uint16_t)(CHIP_STA0),(uint16_t)(CHIP_STA1),(uint16_t)(CHIP_STA2),(uint16_t)(CHIP_STA3),(uint16_t)(CHIP_STA4),(uint16_t)Decnt_SleepDelay);
#endif
#ifdef _DEBUG_ADC
printf("adc chn:%d,Avg_Adc:%d,Ivol:%d,Vbat:%d,Vout:%d,Ivor:%d,Vntc:%d.\r\n",(uint16_t)ADC_Chn_Num,(uint16_t)g_Value_Adc_Avg,(uint16_t)g_pmu_Adc_Ivol,(uint16_t)g_Vbat_Adc,(uint16_t)g_pmu_Adc_Vout,(uint16_t)g_pmu_Adc_Ivor,(uint16_t)g_Vntc_Adc);
printf("adc chn:%d,Ivol:%d,Vbat:%d,Vout:%d,Ivor:%d,Vntc:%d.\r\n",(uint16_t)ADC_Chn_Num,(uint16_t)g_pmu_Adc_Ivol,(uint16_t)g_Vbat_Adc,(uint16_t)g_pmu_Adc_Vout,(uint16_t)g_pmu_Adc_Ivor,(uint16_t)g_Vntc_Adc);
#endif
if(Decnt_SleepDelay > 0)
{

View File

@ -50,7 +50,7 @@ bit Vox_Output_Short_Flag = 0;
#define VOX_LOW_BAT_CNT 25 //关盖前盒子低电保护Vox 5V持续2.5s
#define VOX_VOUT_5V_LEAST_CNT 50
#define VOX_VOUT_5V_LEAST_CNT 40
#define VOX_VOUT_5V_DEBOUNCE 5
@ -66,11 +66,7 @@ bit Vox_Output_Short_Flag = 0;
#define BOOST_VOUT_MAX 2 //跟随充Boost输出电压上限值0:4.6V,1:4.7V,2:4.8V,3:5.05V.
#define Vox_TX_Pattern_Tim 11
#define Vox_TX_Interval 2 //Vox定时发送指令时间间隔
#define Vox_TX_Interval_2 4
#define Vox_TX_Pattern_Tim 20
#define VOX_IOFF_HOLD_CNT 50
@ -78,6 +74,8 @@ bit Vox_Output_Short_Flag = 0;
#define VOX_CLOSE_HOLD_CNT 50 //关盖发码前保持时间
#define MAX_PACKET_SIZE 0x20
#if VOX_FOLLOW_CHG
#define VOX_FOLLOW_CHG_INIT_CNT 10
@ -123,12 +121,23 @@ xdata uint8_t Vox_Get_BES_Addr_Flag[2] = {0};
#endif
xdata uint8_t Earphone_Vbat[2] = 0; //对耳电量
#ifdef VOX_TX
idata uint8_t Net_Info[2][13] = {0};
idata uint8_t MAC_Addr[2][18] = {0};
uint8_t EarPhone_Num = 0;
#endif
xdata uint8_t Earphone_Vbat[2] = 0; //对耳电量
xdata uint8_t Vox_Online_State[2] = {0}; //耳机在线标志位
bit Vox_Ocp_Flag = 0;
bit OpenCover_TX_Cmd_Flag = 0;
#define KEY_TWS_PAIR_TIMER 2
#define KEY_TWS_PAIR_CNT 6
@ -423,15 +432,17 @@ bit Vox_Ocp_Flag = 0;
void Vox_Det_Machine(void)
{
static bit Get_CHIP_STA1_Flag0;
static bit Get_CHIP_STA1_Flag1;
static bit Cover_Close_Flag;
static bit Cover_Close_Flag1;
static bit Cover_Open_Flag;
static bit Cover_Close_Force_Vout_Flag;
static bit TX_Cmd_Flag;
static bit Cover_Open_Flag;
static bit Cover_Open_5V_Flag;
@ -450,6 +461,7 @@ void Vox_Det_Machine(void)
static bit Vox_Chn_Select;
static uint8_t Vox_Output_Debounce;
static bit CoverEvent_Flg1;
if( gBoost_Prepared_Flag )
{
@ -472,8 +484,12 @@ void Vox_Det_Machine(void)
Vox_TX_Timer = 0;
Get_CHIP_STA1_Flag0 = 0;
Get_CHIP_STA1_Flag1 = 0;
CoverEvent_Flg1 = 1;
if( CoverStatus == CLOSE ) //1、关盖关闭COM_CTRL显示灯效。无需查询Loadon、IOFF状态无论耳机是否在仓Vox 5V输出。
{
Earphone_Chg_Flag = 0; //关盖取消耳机入盒灯效,显示关盖灯效。
@ -486,14 +502,12 @@ void Vox_Det_Machine(void)
Vox_Chg_Full_Flag = 0;
Cover_Close_Force_Vout_Flag = 0;
Vox_Getinto_Sleep_Flag = 0;
Vox_Chn_Select = 0;
Vox_Get_BES_Addr_Flag[VOL_TYPE] = 0x00;
Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0x00;
Vox_Vout_Enable = ON;
Wkup_Earphone_Flag = 0;
@ -507,7 +521,7 @@ void Vox_Det_Machine(void)
#endif
#ifdef _DEBUG_VOX
printf("Box Close.\r\n");
printf("Box Close.(line:%d)\r\n",(u16)__LINE__);
#endif
}
else //2、开盖处理5v 500ms 转0V 500ms后转ADT模式。
@ -520,21 +534,19 @@ void Vox_Det_Machine(void)
Cover_Open_5V_Flag = 0;
#ifdef _DEBUG_VOX
printf("Box Open.\r\n");
printf("Box Open.(line:%d)\r\n",(u16)__LINE__);
#endif
}
Boost_Open_Flag = 0;
Vox_Output_Short_Flag = 0;
Vox_Ocp_Flag = 0;
CoverEvent_Flg = 0;
}
/* 发送开盖指令*/
if( Cover_Open_Flag ) /*开盖后5V持续N00ms后0V持续N00ms保证耳机能被唤醒之后发开盖码。*/
{
/* 开关盖后VOX先升压5.2V 一段时间唤醒耳机后转入ADT获取盒内耳机数量。 */
if( Vox_Voltage_Hold_Timer < VOX_VOUT_5V_DEBOUNCE ) //开盖后5V N00ms。
{
Vox_Voltage_Hold_Timer++;
@ -542,6 +554,47 @@ void Vox_Det_Machine(void)
return;
}
if ( CoverEvent_Flg1 )
{
CoverEvent_Flg1 = 0;
VOX_EN_Type(VOX_ADT_Mode);
return;
}
else
{
if ( !Get_CHIP_STA1_Flag0 ) //获取耳机在盒数量。
{
Get_CHIP_STA1_Flag0 = 1;
if ( CHIP_STA1 & ( VOR_LoadOn | VOL_LoadOn ) )
{
if ( ( CHIP_STA1 & ( VOR_LoadOn | VOL_LoadOn ) ) == ( VOR_LoadOn | VOL_LoadOn ) )
{
EarPhone_Num = 2;
}
else
{
EarPhone_Num = 1;
}
}
else
{
EarPhone_Num = 0;
}
#ifdef _DEBUG_VOX
printf( "Open/Close Box,Earphones In Box(Num:%d)(VoxSta:0x%x).\r\n",(u16)EarPhone_Num, (u16)(CHIP_STA1) );
#endif
}
}
/* 发送开盖指令*/
if( Cover_Open_Flag ) /*开盖后5V持续N00ms后0V持续N00ms保证耳机能被唤醒之后发开盖码。*/
{
#if 0
if( Vox_TX_Timer < VOX_VOUT_0V_DEBOUNCE ) //转0V N00ms
{
VOX_EN_Type(VOX_PD1K_Mode);
@ -549,6 +602,7 @@ void Vox_Det_Machine(void)
Vox_TX_Timer++;
}
else
#endif
{
if( !Get_CHIP_STA1_Flag1 )
{
@ -557,15 +611,32 @@ void Vox_Det_Machine(void)
if( ( Vox_Output_Debounce % Vox_TX_Interval_2 ) == 0 ) //200ms发送一次
{
#ifdef VOX_TX
#if JIELI
HandleTxCommand(VHOUSE_CMD_OPEN_BOX,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
#elif ZHONGKE
HandleTxCommand(VHOUSE_CMD_OPEN_WINDOW,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
#endif
#endif
}
else
if( ( Vox_Output_Debounce % Vox_TX_Interval ) == 0 ) //200ms发送一次
{
#ifdef VOX_TX
#if JIELI
HandleTxCommand(VHOUSE_CMD_OPEN_BOX,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
#elif ZHONGKE
HandleTxCommand(VHOUSE_CMD_OPEN_WINDOW,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
#endif
#endif
}
Vox_Output_Debounce++;
@ -578,9 +649,7 @@ void Vox_Det_Machine(void)
Get_CHIP_STA1_Flag1 = 1;
TX_Cmd_Flag = 1;
Boost_Open_Flag = 0;
OpenCover_TX_Cmd_Flag = 1;
Vox_Vout_Enable = OFF;
#ifdef _DEBUG_VOX
@ -590,11 +659,14 @@ void Vox_Det_Machine(void)
}
else
{
if( TX_Cmd_Flag )
if( Event_key == KEY_EVENT_Empty )
{
TX_Cmd_Flag = 0;
if( OpenCover_TX_Cmd_Flag )
{
OpenCover_TX_Cmd_Flag = 0;
CHIP_STA1_BK = CHIP_STA1 & ( VOR_LoadOn | VOL_LoadOn );
}
else
{
@ -606,18 +678,18 @@ void Vox_Det_Machine(void)
Earphone_Chg_Flag = 1;
#ifdef LED_DISPLAY
LED_On_Flag = 1;
#endif
#ifdef _DEBUG_VOX
printf("Open Box And Earphone GetIn.\r\n");
#endif
}
#ifdef _DEBUG_VOX
printf( "Open Box And Earphone GetIn(Num:%d)(VoxSta:0x%x).\r\n",(u16)EarPhone_Num, (u16)(CHIP_STA1) );
#endif
CHIP_STA1_BK = ( CHIP_STA1 & ( VOR_LoadOn | VOL_LoadOn ) );
}
}
}
}
}
}
if( Cover_Close_Flag )
{
@ -637,14 +709,12 @@ void Vox_Det_Machine(void)
Follow_Chg_Sta = Vox_Follow_Chg_InitSta;
#endif
Vox_TX_Timer = 0;
Vox_Voltage_Hold_Timer = 0;
Vox_Output_Debounce = 0;
Vox_Chg_Full_Flag = 0;
Cover_Close_Force_Vout_Flag = 1;
return;
}
@ -653,30 +723,45 @@ void Vox_Det_Machine(void)
printf("Close Box And Force Voltage Up.\r\n");
#endif
Wkup_Earphone_Flag = 0;
}
else
{
Boost_Open_Flag = 0;
if( Vox_Voltage_Hold_Timer <= VOX_VOLTAGE_HOLD_CNT ) //关盖Boost VPMID保持时间。
{
Vox_Voltage_Hold_Timer++;
return;
}
Wkup_Earphone_Flag = 0;
}
else
{
if( !Cover_Close_Force_Vout_Flag )
{
/*发码*/
if( Vox_TX_Timer <= Vox_TX_Pattern_Tim ) //发送关盖指令。
{
if( (Vox_TX_Timer % Vox_TX_Interval_2) == 0 ) //200ms发送一次
{
#ifdef VOX_TX
#if JIELI
HandleTxCommand(VHOUSE_CMD_CLOSE_BOX,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
#elif ZHONGKE
HandleTxCommand(VHOUSE_CMD_CLOSE_WINDOW,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); //右耳发开盖指令,区分耳机通道。
#endif
#endif
}
@ -684,9 +769,8 @@ void Vox_Det_Machine(void)
return;
}
}
if( Vox_Output_Debounce <= VOX_CLOSE_HOLD_CNT ) //关盖后5s发送获取电量命令。
if( Vox_Output_Debounce <= Vox_TX_Pattern_Tim ) //关盖后5s发送获取电量命令。
{
if( (Vox_Output_Debounce % Vox_TX_Interval_2) == 0 ) //200ms发送一次
{
@ -706,6 +790,8 @@ void Vox_Det_Machine(void)
return;
}
}
}
/*Vox 过流保护两只耳机都每隔500ms打嗝一次*/
if( IRQ_FLAG0 & ( VOR_OutPut_Short | VOL_OutPut_Short ) )
@ -751,8 +837,8 @@ void Vox_Det_Machine(void)
{
if( !Vox_Chg_Full_Flag )
{
// if( ( CHIP_STA1 & ( VOR_Ioff | VOL_Ioff | VOL_LoadOn | VOR_LoadOn ) == ( VOR_Ioff | VOL_Ioff | VOL_LoadOn | VOR_LoadOn ) ) || F_batlevel_low ) //耳机充满、VOX无负载、盒子低电则关闭Vout输出通路关闭Boost。
if( ( (CHIP_STA1 & 0xAC) == 0xAC ) || F_batlevel_low )
if( ( CHIP_STA1 & ( VOR_Ioff | VOL_Ioff | VOL_LoadOn | VOR_LoadOn ) == ( VOR_Ioff | VOL_Ioff | VOL_LoadOn | VOR_LoadOn ) ) || F_batlevel_low ) //耳机充满、VOX无负载、盒子低电则关闭Vout输出通路关闭Boost。
// if( ( (CHIP_STA1 & 0xAC) == 0xAC ) || F_batlevel_low )
{
if( Vox_Voltage_Hold_Timer <= VOX_VOUT_5V_LEAST_CNT ) //重载转轻载延时5s后关闭Boost输出。
{
@ -772,8 +858,6 @@ void Vox_Det_Machine(void)
Vox_Getinto_Sleep_Flag = 0;
Boost_Open_Flag = 0;
VOX_EN_Type(VOX_ADT_Mode); //VOX Enable ADT
}
else
@ -788,7 +872,6 @@ void Vox_Det_Machine(void)
}
else
{
if( Vox_Output_Debounce <= Vox_TX_Pattern_Tim )
{
if( (Vox_Output_Debounce % Vox_TX_Interval_2) == 0 ) //200ms发送一次
@ -896,7 +979,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
if( !nVpmid_Value_Setting )
{
DisCharge_Boost_Open(OFF,n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present);
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG InitSta Set Max Vpmid.(Vox_sta:0x%x)(line:%d)\r\n",(uint16_t)CHIP_STA1, (uint16_t)__LINE__);
#endif
nVpmid_Value_Setting = 1;
@ -935,7 +1018,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
Follow_Chg_Sta = Vox_Follow_Chg_Sta1;
Vox_Follow_Chg_Debounce = 0;
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG InitSta.(Vox_sta:0x%x)(line:%d)\r\n",(uint16_t)CHIP_STA1, (uint16_t)__LINE__);
#endif
}
@ -950,7 +1033,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
n_Vox_Fllow_Chg->Vox_Follow_Stop = ON;
Follow_Chg_Sta = Vox_Follow_Chg_InitSta;
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta1,No EarPhone In Box.(line:%d)\r\n",(uint16_t)__LINE__);
#endif
}
@ -964,7 +1047,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
n_Vox_Fllow_Chg->IVox_Threshold_Neg[VOR_CHAN] = ( g_pmu_Adc_Ivor / 5 ) << 2; //Ivox_Threshold_Neg = IVox_Init * 80%
n_Vox_Fllow_Chg->IVox_Threshold_Pos[VOR_CHAN] = g_pmu_Adc_Ivor << 1; //Ivox_Threshold_Neg = IVox_Init * 2
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta1,VOR Chging(Ivor:%dmA).(line:%d)\r\n",g_pmu_Adc_Ivor,(uint16_t)__LINE__);
#endif
@ -977,7 +1060,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
n_Vox_Fllow_Chg->IVox_Threshold_Neg[VOL_CHAN] = ( g_pmu_Adc_Ivol / 5 ) << 2; //Ivox_Threshold_Neg = IVox_Init * 80%
n_Vox_Fllow_Chg->IVox_Threshold_Pos[VOL_CHAN] = g_pmu_Adc_Ivol << 1; //Ivox_Threshold_Neg = IVox_Init * 2
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta1,VOL Chging(Ivol:%dmA).(line:%d)\r\n",g_pmu_Adc_Ivol,(uint16_t)__LINE__);
#endif
@ -1005,7 +1088,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
n_Vox_Fllow_Chg->IVox_At_Present[VOR_CHAN] = g_pmu_Adc_Ivor;
n_Vox_Fllow_Chg->Vox_InBox_Sta[VOR_CHAN] = ON; //判断VOR有耳机在盒正常抽电
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta2,Get IVOR:%dmA.(line:%d)\r\n",(uint16_t)g_pmu_Adc_Ivor,(u16)__LINE__);
#endif
}
@ -1015,7 +1098,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
n_Vox_Fllow_Chg->IVox_At_Present[VOL_CHAN] = g_pmu_Adc_Ivol;
n_Vox_Fllow_Chg->Vox_InBox_Sta[VOL_CHAN] = ON; //判断VOL有耳机在盒正常抽电
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta2,Get IVOL:%dmA.(line:%d)\r\n",(uint16_t)g_pmu_Adc_Ivol,(u16)__LINE__);
#endif
}
@ -1041,7 +1124,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
Follow_Chg_Sta = Vox_Follow_Chg_InitSta;
n_Vox_Fllow_Chg->Vox_Follow_Start = OFF; //重启动跟随充
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta3,VOX Chg ReInit.(line:%d)\r\n",(uint16_t)__LINE__);
#endif
}
@ -1059,14 +1142,14 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
{
n_Vox_Fllow_Chg->Vox_InBox_Sta[VOR_CHAN] = OFF;
}
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta3(CV),VOR Vpmid AddSta(Ivor:%dmA).(line:%d)\r\n",n_Vox_Fllow_Chg->IVox_At_Present[VOR_CHAN],(u16)__LINE__);
#endif
}
else //未检测到Ivor Ioff则Vpmid降档
{
n_Vox_Fllow_Chg->Vpmid_SubSta[VOR_CHAN] = ON;
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta3(CV),VOR Vpmid SubSta(Ivor:%dmA).(line:%d)\r\n",n_Vox_Fllow_Chg->IVox_At_Present[VOR_CHAN],(u16)__LINE__);
#endif
}
@ -1076,14 +1159,14 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
if ( n_Vox_Fllow_Chg->IVox_At_Present[VOR_CHAN] > n_Vox_Fllow_Chg->IVox_Threshold_Neg[VOR_CHAN] )
{
n_Vox_Fllow_Chg->Vpmid_SubSta[VOR_CHAN] = ON;
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta3(CC),VOR Vpmid SubSta(Ivor:%dmA).(line:%d)\r\n",n_Vox_Fllow_Chg->IVox_At_Present[VOR_CHAN],(u16)__LINE__);
#endif
}
else
{
n_Vox_Fllow_Chg->Vpmid_AddSta[VOR_CHAN] = ON;
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta3(CC),VOR Vpmid AddSta(Ivor:%dmA).(line:%d)\r\n",n_Vox_Fllow_Chg->IVox_At_Present[VOR_CHAN],(u16)__LINE__);
#endif
}
@ -1102,14 +1185,14 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
{
n_Vox_Fllow_Chg->Vox_InBox_Sta[VOL_CHAN] = OFF;
}
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta3(CV),VOL Vpmid AddSta(Ivol:%dmA).(line:%d)\r\n",n_Vox_Fllow_Chg->IVox_At_Present[VOL_CHAN],(u16)__LINE__);
#endif
}
else //未检测到Ivol Ioff则Vpmid降档
{
n_Vox_Fllow_Chg->Vpmid_SubSta[VOL_CHAN] = ON;
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta3(CV),VOL Vpmid SubSta(Ivol:%dmA).(line:%d)\r\n",n_Vox_Fllow_Chg->IVox_At_Present[VOL_CHAN],(u16)__LINE__);
#endif
}
@ -1119,14 +1202,14 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
if ( n_Vox_Fllow_Chg->IVox_At_Present[VOL_CHAN] > n_Vox_Fllow_Chg->IVox_Threshold_Neg[VOL_CHAN] )
{
n_Vox_Fllow_Chg->Vpmid_SubSta[VOL_CHAN] = ON;
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta3(CC),VOL Vpmid SubSta(Ivol:%dmA).(line:%d)\r\n",n_Vox_Fllow_Chg->IVox_At_Present[VOL_CHAN],(u16)__LINE__);
#endif
}
else
{
n_Vox_Fllow_Chg->Vpmid_AddSta[VOL_CHAN] = ON;
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta3(CC),VOL Vpmid AddSta(Ivol:%dmA).(line:%d)\r\n",n_Vox_Fllow_Chg->IVox_At_Present[VOL_CHAN],(u16)__LINE__);
#endif
}
@ -1165,12 +1248,12 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
n_Vox_Fllow_Chg->Vpmid_AddSta[VOL_CHAN] = ON;
Follow_Chg_Sta = Vox_Follow_Chg_Sta2;
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta4,VOx Vpmid AddSta(Vout:0x%x,Ivol:%dmA,Ivor:%dmA)(line:%d).\r\n",n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,g_pmu_Adc_Ivol,g_pmu_Adc_Ivor,(u16)__LINE__);
#endif
}
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
else
{
printf("Follow CHG Sta4,VOx Ching(Vout:0x%x,Ivol:%dmA,Ivor:%dmA)(line:%d).\r\n",n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,g_pmu_Adc_Ivol,g_pmu_Adc_Ivor,(u16)__LINE__);
@ -1190,11 +1273,11 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
n_Vox_Fllow_Chg->Vpmid_AddSta[VOR_CHAN] = ON;
Follow_Chg_Sta = Vox_Follow_Chg_Sta2;
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta4,VOR Vpmid AddSta(Vout:0x%x,Ivor:%dmA)(line:%d).\r\n",n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,g_pmu_Adc_Ivor,(u16)__LINE__);
#endif
}
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
else
{
printf("Follow CHG Sta4,VOR Ching(Vout:0x%x,Ivor:%dmA)(line:%d).\r\n",n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,g_pmu_Adc_Ivor,(u16)__LINE__);
@ -1210,11 +1293,11 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
n_Vox_Fllow_Chg->Vpmid_AddSta[VOL_CHAN] = ON;
Follow_Chg_Sta = Vox_Follow_Chg_Sta2;
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta4,VOL Vpmid AddSta(Vout:0x%x,Ivol:%dmA)(line:%d).\r\n",n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,g_pmu_Adc_Ivol,(u16)__LINE__);
#endif
}
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
else
{
printf("Follow CHG Sta4,VOL Ching(Vout:0x%x,Ivol:%dmA)(line:%d).\r\n",n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,g_pmu_Adc_Ivol,(u16)__LINE__);
@ -1240,7 +1323,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
if( ( n_Vox_Fllow_Chg->Vpmid_SubSta[VOR_CHAN] == ON ) && ( n_Vox_Fllow_Chg->Vpmid_SubSta[VOR_CHAN] == ON ) )
{
n_Vox_Fllow_Chg->Vpmid_SubSta_Flag = ON;
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG SubSta,VOL/VOR(line:%d).\r\n",(uint16_t)__LINE__);
#endif
}
@ -1250,7 +1333,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
if( n_Vox_Fllow_Chg->Vpmid_SubSta[VOR_CHAN] == ON )
{
n_Vox_Fllow_Chg->Vpmid_SubSta_Flag = ON;
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG SubSta,VOR(line:%d).\r\n",(uint16_t)__LINE__);
#endif
}
@ -1261,7 +1344,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
if( n_Vox_Fllow_Chg->Vpmid_SubSta[VOL_CHAN] == ON )
{
n_Vox_Fllow_Chg->Vpmid_SubSta_Flag = ON;
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG SubSta,VOL(line:%d).\r\n",(uint16_t)__LINE__);
#endif
}
@ -1306,7 +1389,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
Vox_Follow_Chg_Debounce = 0;
n_Vox_Fllow_Chg->Vpmid_SubSta_Flag = OFF;
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG SubSta,(STA:0x%x,Vpmid:0x%x,PTM:%d)(line:%d)\r\n",(uint16_t)Follow_Chg_Sta,(uint16_t)n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,(uint16_t)n_Vox_Fllow_Chg->Vox_PTM_Type,(uint16_t)__LINE__);
#endif
DisCharge_Boost_Open(n_Vox_Fllow_Chg->Vox_PTM_Type, n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present );
@ -1335,7 +1418,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
Follow_Chg_Sta = Vox_Follow_Chg_Sta1;
}
#ifdef _DEBUG_VOX
#ifdef _DEBUG_FOLLOW
printf("Follow CHG AddSta,(STA:0x%x,Vpmid:0x%x)(line:%d)\r\n",(uint16_t)Follow_Chg_Sta,(uint16_t)n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,(uint16_t)__LINE__);
#endif
DisCharge_Boost_Open(OFF, n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present);
@ -1413,20 +1496,14 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
*
*******************************************************************************
*/
idata uint8_t Net_Info[2][8] = {0};
idata uint8_t MAC_Addr[2][18] = {0};
uint8_t EarPhone_Num = 0;
#define MAX_PACKET_SIZE 0x20
void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select)
{
uint8_t dataLen = 0;
uint8_t tx_pData[COM0_Data_Lenth] = 0;
uint8_t i = 0;
#if JIELI
/*数据包头*/
tx_pData[0] = 0x00;
tx_pData[1] = BOXHEADER>>8;
@ -1458,14 +1535,14 @@ void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select)
case VHOUSE_CMD_EXCH_TWS_BTADDR:
/*Data Length*/
tx_pData[3] = 0x1B;
tx_pData[3] = MAX_PACKET_SIZE;
for(i=5;i<18;i++)
{
tx_pData[i] = MAC_Addr[nVox_Chn_Select][i];
}
for(i=23;i<8;i++)
for(i=23;i<13;i++)
{
tx_pData[i] = Net_Info[nVox_Chn_Select][i];
}
@ -1536,6 +1613,84 @@ void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select)
tx_pData[dataLen] = Crc8Maxim(tx_pData,dataLen);
#elif ZHONGKE
/*数据包头*/
tx_pData[0] = BOXHEADER>>8;
tx_pData[1] = BOXHEADER;
/*充电仓识别码*/
tx_pData[2] = BOXIDCODE;
/*耳机通道*/
tx_pData[5] = nVox_Chn_Select;
/*指令编号*/
tx_pData[3] = TxCommand;
switch(TxCommand)
{
case VHOUSE_CMD_GET_VBAT:
case VHOUSE_CMD_OPEN_WINDOW:
case VHOUSE_CMD_CLOSE_WIN_GET_VBAT:
/*Data Length*/
tx_pData[4] = 0x03;
tx_pData[6] = ( ( ChgStatus & CHG_STA_ING ) << 7 ) | bat_level; //bit 0~6 表示充电仓电量值 0~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<COM0_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);
#endif
/* vor、vol都使用uart1进行分时通讯设置TX模式*/
VOX_EN_Type( VOX_COMM_Mode_Uart );
@ -1586,7 +1741,6 @@ void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select)
COMM_CTL |= ( Vor_SWDR |Vol_SWDR );
}
// VOX_EN_Type( VOX_VOUT_Mode );
}
@ -1614,6 +1768,8 @@ void HandleRxMsg(VOX_BES_COMMAND_E RxCommand)
{
uint8_t i = 0;
#if JIELI
switch(RxCommand)
{
case VHOUSE_CMD_PAIR:
@ -1673,6 +1829,48 @@ void HandleRxMsg(VOX_BES_COMMAND_E RxCommand)
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;
}
#endif
}
/*
@ -1699,12 +1897,19 @@ void HandleVoxCommMsg(void)
if( Uart1_RX_Finish_Flag )
{
Uart1_RX_Finish_Flag = 0;
//#ifdef _DEBUG_VOX
#ifdef _DEBUG_VOX
printf("RX1_Buffer[0]:0x%x,RX1_Buffer[1]:0x%x,RX1_Buffer[2]:0x%x,RX1_Buffer[3]:0x%x,RX1_Buffer[4]:0x%x,RX1_Buffer[5]:0x%x,RX1_Buffer[6]:0x%x,line:%d\r\n",(u16)RX1_Buffer[0],(u16)RX1_Buffer[1],(u16)RX1_Buffer[2],(u16)RX1_Buffer[3],(u16)RX1_Buffer[4],(u16)RX1_Buffer[5],(u16)RX1_Buffer[6],(u16)__LINE__);
//#endif
#endif
#if JIELI
CrcCheckSum = Crc8Maxim(RX1_Buffer, RX1_Buffer[2] + 3); //求校验和
if( CrcCheckSum == RX1_Buffer[RX1_Buffer[2] + 3] )
#elif ZHONGKE
CrcCheckSum = Crc8Maxim( RX1_Buffer, RX1_Buffer[4] + 5 );
if( CrcCheckSum == RX1_Buffer[ RX1_Buffer[4] + 5 ] )
#endif
{
HandleRxMsg((VOX_BES_COMMAND_E)RX1_Buffer[3]);
}