添加强制上下线和视频流

This commit is contained in:
Comma Device
2026-03-14 23:19:41 +08:00
parent bdb05826f4
commit e74a404b62
28 changed files with 257 additions and 215 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -36,215 +36,215 @@ BS_:
BU_: XXX
BO_ 85 CID_NQYTDI: 8 XXX
SG_ sig_egbeiu : 40|1@1+ (1,0) [0|1] "" XXX
SG_ sig_byqwgs : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 85 CID_OKZOAA: 8 XXX
SG_ sig_xaocnc : 40|1@1+ (1,0) [0|1] "" XXX
SG_ sig_hzgifc : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 287 CID_OCXNKR: 5 XXX
SG_ sig_iyezyy : 0|16@1- (0.1,0) [-450|450] "" XXX
SG_ sig_gsnaqn : 16|8@1+ (4,0) [0|1020] "" XXX
SG_ sig_adosij : 32|8@1+ (1,0) [0|255] "" XXX
BO_ 287 CID_KMCFLN: 5 XXX
SG_ sig_qgzobx : 0|16@1- (0.1,0) [-450|450] "" XXX
SG_ sig_iegswo : 16|8@1+ (4,0) [0|1020] "" XXX
SG_ sig_cwxlhr : 32|8@1+ (1,0) [0|255] "" XXX
BO_ 289 CID_PBYRDE: 8 XXX
SG_ sig_kgpqgl : 0|12@1+ (1,0) [0|255] "" XXX
BO_ 289 CID_SYEDNK: 8 XXX
SG_ sig_scasyf : 0|12@1+ (1,0) [0|255] "" XXX
BO_ 301 CID_PIRARR: 8 XXX
SG_ sig_mxrbls : 0|1@0+ (1,0) [0|1] "" XXX
SG_ sig_znokhf : 1|1@0+ (1,0) [0|1] "" XXX
SG_ sig_uhhqzh : 2|1@0+ (1,0) [0|1] "" XXX
SG_ sig_bwwgrp : 3|1@0+ (1,0) [0|1] "" XXX
SG_ sig_tjnifs : 4|1@0+ (1,0) [0|1] "" XXX
SG_ sig_pwjnxd : 6|1@0+ (1,0) [0|1] "" XXX
SG_ sig_nhhpvd : 8|1@0+ (1,0) [0|1] "" XXX
SG_ sig_zfuwcw : 55|1@0+ (1,0) [0|1] "" XXX
BO_ 301 CID_ROGXSS: 8 XXX
SG_ sig_hlexow : 0|1@0+ (1,0) [0|1] "" XXX
SG_ sig_tpjgsg : 1|1@0+ (1,0) [0|1] "" XXX
SG_ sig_roturu : 2|1@0+ (1,0) [0|1] "" XXX
SG_ sig_pcazyl : 3|1@0+ (1,0) [0|1] "" XXX
SG_ sig_didrer : 4|1@0+ (1,0) [0|1] "" XXX
SG_ sig_xccihb : 6|1@0+ (1,0) [0|1] "" XXX
SG_ sig_ykgnlg : 8|1@0+ (1,0) [0|1] "" XXX
SG_ sig_ncgaqj : 55|1@0+ (1,0) [0|1] "" XXX
BO_ 307 CID_SHJGTP: 8 XXX
SG_ sig_pngbww : 0|1@0+ (1,0) [0|1] "" XXX
SG_ sig_sdksml : 1|1@1+ (1,0) [0|1] "" XXX
SG_ sig_gdtagx : 2|1@1+ (1,0) [0|1] "" XXX
SG_ sig_ofgdxo : 3|1@1+ (1,0) [0|1] "" XXX
SG_ sig_uznrqz : 4|1@0+ (1,0) [0|1] "" XXX
SG_ sig_fxosis : 5|1@0+ (1,0) [0|1] "" XXX
SG_ sig_wrloto : 7|1@0+ (1,0) [0|1] "" XXX
SG_ sig_bdbuch : 36|3@1+ (1,0) [0|7] "" XXX
SG_ sig_vzsapb : 40|1@0+ (1,0) [0|1] "" XXX
SG_ sig_hcgekc : 63|4@0+ (1,0) [0|15] "" XXX
BO_ 307 CID_WTBOVK: 8 XXX
SG_ sig_ytpixh : 0|1@0+ (1,0) [0|1] "" XXX
SG_ sig_wyngmy : 1|1@1+ (1,0) [0|1] "" XXX
SG_ sig_spvsjn : 2|1@1+ (1,0) [0|1] "" XXX
SG_ sig_vtvsfv : 3|1@1+ (1,0) [0|1] "" XXX
SG_ sig_djekfp : 4|1@0+ (1,0) [0|1] "" XXX
SG_ sig_zpezrx : 5|1@0+ (1,0) [0|1] "" XXX
SG_ sig_pfihwe : 7|1@0+ (1,0) [0|1] "" XXX
SG_ sig_tfxrql : 36|3@1+ (1,0) [0|7] "" XXX
SG_ sig_wxgdqe : 40|1@0+ (1,0) [0|1] "" XXX
SG_ sig_ltcupk : 63|4@0+ (1,0) [0|15] "" XXX
BO_ 482 CID_IYIQVZ: 8 XXX
SG_ sig_bmxfid : 0|10@1- (0.01,0) [0|5] "" XXX
SG_ sig_txrzgt : 10|10@1- (0.01,0) [-5|0] "" XXX
SG_ sig_ncmvif : 20|1@0+ (1,0) [0|1] "" XXX
SG_ sig_voexne : 21|1@0+ (1,0) [0|1] "" XXX
SG_ sig_hqypwu : 22|2@1+ (1,0) [0|1] "" XXX
SG_ sig_upijht : 24|16@1- (0.1,0) [-780|779.9] "" XXX
SG_ sig_yyvjva : 47|8@0+ (1,0) [0|255] "" XXX
SG_ sig_vjdruq : 48|4@1+ (1,0) [0|15] "" XXX
SG_ sig_adosij : 52|4@1+ (1,0) [0|15] "" XXX
SG_ sig_byqwgs : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 482 CID_RJGMCN: 8 XXX
SG_ sig_ovvnjj : 0|10@1- (0.01,0) [0|5] "" XXX
SG_ sig_depkgm : 10|10@1- (0.01,0) [-5|0] "" XXX
SG_ sig_tbuidb : 20|1@0+ (1,0) [0|1] "" XXX
SG_ sig_yvztzn : 21|1@0+ (1,0) [0|1] "" XXX
SG_ sig_tsasef : 22|2@1+ (1,0) [0|1] "" XXX
SG_ sig_dzurkf : 24|16@1- (0.1,0) [-780|779.9] "" XXX
SG_ sig_oqkoxb : 47|8@0+ (1,0) [0|255] "" XXX
SG_ sig_ewqcbt : 48|4@1+ (1,0) [0|15] "" XXX
SG_ sig_cwxlhr : 52|4@1+ (1,0) [0|15] "" XXX
SG_ sig_hzgifc : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 508 CID_PBIEKY: 8 XXX
SG_ sig_annvyn : 0|2@1+ (1,0) [0|1] "" XXX
SG_ sig_txzhek : 2|1@1+ (1,0) [0|1] "" XXX
SG_ sig_kcvnxd : 3|1@0+ (1,0) [0|1] "" XXX
SG_ sig_upgdmp : 4|12@1- (1,0) [-2048|2047] "" XXX
SG_ sig_vbexxu : 16|16@1- (0.1,0) [-780|779.9] "Deg" XXX
SG_ sig_zfjbwx : 32|12@1- (1,0) [0|63] "" XXX
SG_ sig_sepfak : 44|1@0+ (1,0) [0|1] "" XXX
SG_ sig_xkvkzb : 45|1@1+ (1,0) [0|255] "" XXX
SG_ sig_ztmndc : 46|1@1+ (1,0) [0|1] "" XXX
SG_ sig_fzqhpl : 47|1@0+ (1,0) [0|3] "" XXX
SG_ sig_suuiao : 48|4@1+ (1,0) [0|15] "" XXX
SG_ sig_adosij : 52|4@1+ (1,0) [0|15] "" XXX
SG_ sig_byqwgs : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 508 CID_OZFMZZ: 8 XXX
SG_ sig_jgrlcy : 0|2@1+ (1,0) [0|1] "" XXX
SG_ sig_kxlfeg : 2|1@1+ (1,0) [0|1] "" XXX
SG_ sig_dwtrdv : 3|1@0+ (1,0) [0|1] "" XXX
SG_ sig_zhaajp : 4|12@1- (1,0) [-2048|2047] "" XXX
SG_ sig_jyfbkp : 16|16@1- (0.1,0) [-780|779.9] "Deg" XXX
SG_ sig_tjjfzy : 32|12@1- (1,0) [0|63] "" XXX
SG_ sig_boznex : 44|1@0+ (1,0) [0|1] "" XXX
SG_ sig_srckhu : 45|1@1+ (1,0) [0|255] "" XXX
SG_ sig_npusjl : 46|1@1+ (1,0) [0|1] "" XXX
SG_ sig_oebxxb : 47|1@0+ (1,0) [0|3] "" XXX
SG_ sig_vevgbj : 48|4@1+ (1,0) [0|15] "" XXX
SG_ sig_cwxlhr : 52|4@1+ (1,0) [0|15] "" XXX
SG_ sig_hzgifc : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 578 CID_HGPNAD: 8 XXX
SG_ sig_xehsgn : 30|7@0+ (1,0) [0|127] "" XXX
SG_ sig_lhmncg : 37|1@0+ (1,0) [0|1] "" XXX
SG_ sig_fspyvf : 40|3@1+ (1,0) [0|7] "" XXX
SG_ sig_adosij : 55|4@0+ (1,0) [0|15] "" XXX
SG_ sig_byqwgs : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 578 CID_ZUINNJ: 8 XXX
SG_ sig_qcfusv : 30|7@0+ (1,0) [0|127] "" XXX
SG_ sig_ktlgim : 37|1@0+ (1,0) [0|1] "" XXX
SG_ sig_njxmsj : 40|3@1+ (1,0) [0|7] "" XXX
SG_ sig_cwxlhr : 55|4@0+ (1,0) [0|15] "" XXX
SG_ sig_hzgifc : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 660 CID_UILPUT: 8 XXX
SG_ sig_mxrbls : 1|2@0+ (1,0) [0|3] "" XXX
SG_ sig_znokhf : 3|2@0+ (1,0) [0|3] "" XXX
SG_ sig_uhhqzh : 5|2@0+ (1,0) [0|3] "" XXX
SG_ sig_bwwgrp : 7|2@0+ (1,0) [0|3] "" XXX
SG_ sig_pwjnxd : 17|2@0+ (1,0) [0|3] "" XXX
SG_ sig_tjnifs : 19|2@0+ (1,0) [0|3] "" XXX
SG_ sig_jgilrs : 21|2@0+ (1,0) [0|3] "" XXX
SG_ sig_yukpcy : 26|1@0+ (1,0) [0|1] "" XXX
BO_ 660 CID_FDWFUZ: 8 XXX
SG_ sig_hlexow : 1|2@0+ (1,0) [0|3] "" XXX
SG_ sig_tpjgsg : 3|2@0+ (1,0) [0|3] "" XXX
SG_ sig_roturu : 5|2@0+ (1,0) [0|3] "" XXX
SG_ sig_pcazyl : 7|2@0+ (1,0) [0|3] "" XXX
SG_ sig_xccihb : 17|2@0+ (1,0) [0|3] "" XXX
SG_ sig_didrer : 19|2@0+ (1,0) [0|3] "" XXX
SG_ sig_ggizps : 21|2@0+ (1,0) [0|3] "" XXX
SG_ sig_xuvmup : 26|1@0+ (1,0) [0|1] "" XXX
BO_ 694 CID_FKBZQA: 8 XXX
SG_ sig_bsedod : 7|8@0+ (1,0) [0|255] "" XXX
SG_ sig_linnmo : 15|8@0+ (1,0) [0|255] "" XXX
SG_ sig_kjwhkt : 23|8@0+ (1,0) [0|255] "" XXX
SG_ sig_qsyfro : 31|8@0+ (1,0) [0|255] "" XXX
SG_ sig_enptdv : 39|8@0+ (1,0) [0|255] "" XXX
SG_ sig_adpufg : 47|8@0+ (1,0) [0|255] "" XXX
BO_ 694 CID_JMHYQQ: 8 XXX
SG_ sig_kawzou : 7|8@0+ (1,0) [0|255] "" XXX
SG_ sig_vhebfp : 15|8@0+ (1,0) [0|255] "" XXX
SG_ sig_asszmc : 23|8@0+ (1,0) [0|255] "" XXX
SG_ sig_uhmtqr : 31|8@0+ (1,0) [0|255] "" XXX
SG_ sig_tfmeok : 39|8@0+ (1,0) [0|255] "" XXX
SG_ sig_cadgdq : 47|8@0+ (1,0) [0|255] "" XXX
BO_ 790 CID_USFXJA: 8 XXX
SG_ sig_repzpd : 3|4@0+ (1,0) [0|1] "" XXX
SG_ sig_latwyj : 4|2@1+ (1,0) [0|3] "" XXX
SG_ sig_kdhdkj : 6|2@1+ (1,0) [0|3] "" XXX
SG_ sig_rfnpwb : 8|2@1+ (1,0) [0|3] "" XXX
SG_ sig_ikiofk : 10|1@1+ (1,0) [0|1] "" XXX
SG_ sig_ozgrpa : 11|4@1+ (1,0) [0|1] "" XXX
SG_ sig_hhkper : 15|1@0+ (1,0) [0|1] "" XXX
SG_ sig_upijht : 16|11@1- (1,0) [-1024|1023] "" XXX
SG_ sig_ncmvif : 27|1@1+ (1,0) [0|1] "" XXX
SG_ sig_voexne : 28|1@1+ (1,0) [0|3] "" XXX
SG_ sig_jgbtwh : 29|1@0+ (1,0) [0|1] "" XXX
SG_ sig_evguaw : 30|1@0+ (1,0) [0|1] "" XXX
SG_ sig_uwiigm : 31|1@0+ (1,0) [0|1] "" XXX
SG_ sig_awbzfq : 32|2@1+ (1,0) [0|3] "" XXX
SG_ sig_olhoxc : 34|2@1+ (1,0) [0|3] "" XXX
SG_ sig_pbagqe : 36|4@1+ (1,0) [0|3] "" XXX
SG_ sig_czwddt : 40|8@1+ (5,-5) [-5|1270] "" XXX
SG_ sig_hdeumb : 49|2@0+ (1,0) [0|3] "" XXX
SG_ sig_zdzkjz : 51|2@0+ (1,0) [0|3] "" XXX
SG_ sig_adosij : 52|4@1+ (1,0) [0|15] "" XXX
SG_ sig_byqwgs : 56|8@1+ (1,0) [0|15] "" XXX
BO_ 790 CID_ZXSANG: 8 XXX
SG_ sig_ihdhlg : 3|4@0+ (1,0) [0|1] "" XXX
SG_ sig_ofpprc : 4|2@1+ (1,0) [0|3] "" XXX
SG_ sig_lvcebi : 6|2@1+ (1,0) [0|3] "" XXX
SG_ sig_arsgzp : 8|2@1+ (1,0) [0|3] "" XXX
SG_ sig_pczrmy : 10|1@1+ (1,0) [0|1] "" XXX
SG_ sig_qxfdyg : 11|4@1+ (1,0) [0|1] "" XXX
SG_ sig_ivqaqu : 15|1@0+ (1,0) [0|1] "" XXX
SG_ sig_dzurkf : 16|11@1- (1,0) [-1024|1023] "" XXX
SG_ sig_tbuidb : 27|1@1+ (1,0) [0|1] "" XXX
SG_ sig_yvztzn : 28|1@1+ (1,0) [0|3] "" XXX
SG_ sig_sgxvyp : 29|1@0+ (1,0) [0|1] "" XXX
SG_ sig_yyngpp : 30|1@0+ (1,0) [0|1] "" XXX
SG_ sig_cvhcfn : 31|1@0+ (1,0) [0|1] "" XXX
SG_ sig_dgzlhz : 32|2@1+ (1,0) [0|3] "" XXX
SG_ sig_jkofzs : 34|2@1+ (1,0) [0|3] "" XXX
SG_ sig_jrbkzi : 36|4@1+ (1,0) [0|3] "" XXX
SG_ sig_pmmpuk : 40|8@1+ (5,-5) [-5|1270] "" XXX
SG_ sig_lmuonx : 49|2@0+ (1,0) [0|3] "" XXX
SG_ sig_cablev : 51|2@0+ (1,0) [0|3] "" XXX
SG_ sig_cwxlhr : 52|4@1+ (1,0) [0|15] "" XXX
SG_ sig_hzgifc : 56|8@1+ (1,0) [0|15] "" XXX
BO_ 792 CID_BSCNTN: 8 XXX
SG_ sig_annvyn : 0|2@1+ (1,0) [0|1] "" XXX
SG_ sig_txzhek : 2|1@1+ (1,0) [0|1] "" XXX
SG_ sig_kcvnxd : 3|1@1+ (1,0) [0|1] "" XXX
SG_ sig_svefss : 4|1@1+ (1,0) [0|1] "" XXX
SG_ sig_zyawkc : 5|3@1+ (1,0) [0|1] "" XXX
SG_ sig_zfjbwx : 8|12@1- (1,0) [-2048|2047] "" XXX
SG_ sig_meqskb : 20|1@1+ (1,0) [0|1] "" XXX
SG_ sig_xkvkzb : 21|1@1+ (1,0) [0|1] "" XXX
SG_ sig_zmxdwu : 22|2@1+ (1,0) [0|15] "" XXX
SG_ sig_upgdmp : 24|12@1- (1,0) [-2048|2047] "" XXX
SG_ sig_spbiav : 36|4@1+ (1,0) [0|15] "" XXX
SG_ sig_dkppec : 40|12@1+ (1,0) [0|4095] "" XXX
SG_ sig_adosij : 52|4@1+ (1,0) [0|15] "" XXX
SG_ sig_byqwgs : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 792 CID_XRQEDV: 8 XXX
SG_ sig_jgrlcy : 0|2@1+ (1,0) [0|1] "" XXX
SG_ sig_kxlfeg : 2|1@1+ (1,0) [0|1] "" XXX
SG_ sig_dwtrdv : 3|1@1+ (1,0) [0|1] "" XXX
SG_ sig_umilfa : 4|1@1+ (1,0) [0|1] "" XXX
SG_ sig_imntvu : 5|3@1+ (1,0) [0|1] "" XXX
SG_ sig_tjjfzy : 8|12@1- (1,0) [-2048|2047] "" XXX
SG_ sig_usbrih : 20|1@1+ (1,0) [0|1] "" XXX
SG_ sig_srckhu : 21|1@1+ (1,0) [0|1] "" XXX
SG_ sig_nifbpk : 22|2@1+ (1,0) [0|15] "" XXX
SG_ sig_zhaajp : 24|12@1- (1,0) [-2048|2047] "" XXX
SG_ sig_gipmqz : 36|4@1+ (1,0) [0|15] "" XXX
SG_ sig_oyhzox : 40|12@1+ (1,0) [0|4095] "" XXX
SG_ sig_cwxlhr : 52|4@1+ (1,0) [0|15] "" XXX
SG_ sig_hzgifc : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 813 CID_VJUMNN: 8 XXX
SG_ sig_jgwkce : 0|9@1+ (0.5,0) [0|255.5] "" XXX
SG_ sig_jxoxrl : 9|1@1+ (1,0) [0|1] "" XXX
SG_ sig_fxcbge : 10|3@1+ (1,0) [0|7] "" XXX
SG_ sig_smduuh : 13|3@1+ (1,0) [0|7] "" XXX
SG_ sig_zxjlsj : 16|1@1+ (1,0) [0|1] "" XXX
SG_ sig_vudeho : 17|1@1+ (1,0) [0|1] "" XXX
SG_ sig_kcvnxd : 18|1@1+ (1,0) [0|1] "" XXX
SG_ sig_srqyfb : 19|3@1+ (1,0) [0|1] "" XXX
SG_ sig_zjklve : 22|1@0+ (1,0) [0|1] "" XXX
SG_ sig_zeplhs : 23|1@0+ (1,0) [0|1] "" XXX
SG_ sig_rfnpwb : 24|1@1+ (1,0) [0|1] "" XXX
SG_ sig_zpqcdm : 25|7@1+ (1,0) [0|127] "" XXX
SG_ sig_mbpcdu : 32|4@1+ (1,0) [0|15] "" XXX
SG_ sig_pyrxir : 36|8@1+ (1,0) [0|15] "" XXX
SG_ sig_jdzoda : 47|4@0+ (1,0) [0|7] "" XXX
SG_ sig_adosij : 48|4@1+ (1,0) [0|15] "" XXX
SG_ sig_lisgeq : 55|4@0+ (1,0) [0|15] "" XXX
SG_ sig_byqwgs : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 813 CID_POVSKP: 8 XXX
SG_ sig_kounas : 0|9@1+ (0.5,0) [0|255.5] "" XXX
SG_ sig_mcjajy : 9|1@1+ (1,0) [0|1] "" XXX
SG_ sig_xsfxul : 10|3@1+ (1,0) [0|7] "" XXX
SG_ sig_lhjbbg : 13|3@1+ (1,0) [0|7] "" XXX
SG_ sig_mtzlhn : 16|1@1+ (1,0) [0|1] "" XXX
SG_ sig_ggzlgb : 17|1@1+ (1,0) [0|1] "" XXX
SG_ sig_dwtrdv : 18|1@1+ (1,0) [0|1] "" XXX
SG_ sig_yildeu : 19|3@1+ (1,0) [0|1] "" XXX
SG_ sig_swiihc : 22|1@0+ (1,0) [0|1] "" XXX
SG_ sig_iumwkg : 23|1@0+ (1,0) [0|1] "" XXX
SG_ sig_arsgzp : 24|1@1+ (1,0) [0|1] "" XXX
SG_ sig_jngiqq : 25|7@1+ (1,0) [0|127] "" XXX
SG_ sig_jifxix : 32|4@1+ (1,0) [0|15] "" XXX
SG_ sig_bcklbi : 36|8@1+ (1,0) [0|15] "" XXX
SG_ sig_ycuoin : 47|4@0+ (1,0) [0|7] "" XXX
SG_ sig_cwxlhr : 48|4@1+ (1,0) [0|15] "" XXX
SG_ sig_ebbykk : 55|4@0+ (1,0) [0|15] "" XXX
SG_ sig_hzgifc : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 814 CID_RTDZBE: 8 XXX
SG_ sig_hgzkdg : 0|8@1+ (0.05,-5) [-100|155] "" XXX
SG_ sig_cmwaou : 8|8@1+ (0.05,-5) [0|1.26] "" XXX
SG_ sig_otdohr : 16|8@1+ (0.05,-5) [0|1.26] "" XXX
SG_ sig_ogrdfc : 24|7@1+ (0.2,0) [0|12.7] "" XXX
SG_ sig_kcvnxd : 31|1@0+ (1,0) [0|1] "" XXX
SG_ sig_mejmpm : 32|7@1+ (0.2,-16) [0|12.7] "" XXX
SG_ sig_xhkpvy : 39|1@0+ (1,0) [0|1] "" XXX
SG_ sig_ehahae : 40|1@0+ (1,0) [0|1] "" XXX
SG_ sig_migoey : 41|1@0+ (1,0) [0|1] "" XXX
SG_ sig_densqy : 42|1@1+ (1,0) [0|3] "" XXX
SG_ sig_kpqtvk : 45|3@0+ (1,0) [0|1] "" XXX
SG_ sig_dyfssb : 46|2@1+ (1,0) [0|3] "" XXX
SG_ sig_adosij : 48|4@1+ (1,0) [0|15] "" XXX
SG_ sig_eegptn : 55|4@0+ (1,0) [0|15] "" XXX
SG_ sig_byqwgs : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 814 CID_VAKDRQ: 8 XXX
SG_ sig_kzqsbh : 0|8@1+ (0.05,-5) [-100|155] "" XXX
SG_ sig_fhiwbm : 8|8@1+ (0.05,-5) [0|1.26] "" XXX
SG_ sig_lhdrzk : 16|8@1+ (0.05,-5) [0|1.26] "" XXX
SG_ sig_dteiig : 24|7@1+ (0.2,0) [0|12.7] "" XXX
SG_ sig_dwtrdv : 31|1@0+ (1,0) [0|1] "" XXX
SG_ sig_rjxhxn : 32|7@1+ (0.2,-16) [0|12.7] "" XXX
SG_ sig_ouwygs : 39|1@0+ (1,0) [0|1] "" XXX
SG_ sig_syhrlw : 40|1@0+ (1,0) [0|1] "" XXX
SG_ sig_ybtjkd : 41|1@0+ (1,0) [0|1] "" XXX
SG_ sig_ywqhgw : 42|1@1+ (1,0) [0|3] "" XXX
SG_ sig_zalznz : 45|3@0+ (1,0) [0|1] "" XXX
SG_ sig_yniluy : 46|2@1+ (1,0) [0|3] "" XXX
SG_ sig_cwxlhr : 48|4@1+ (1,0) [0|15] "" XXX
SG_ sig_jleudj : 55|4@0+ (1,0) [0|15] "" XXX
SG_ sig_hzgifc : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 815 CID_ELPGBL: 8 XXX
SG_ sig_adosij : 48|4@1+ (1,0) [0|15] "" XXX
SG_ sig_kkrhof : 55|4@0+ (1,0) [0|15] "" XXX
SG_ sig_byqwgs : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 815 CID_MPOOOJ: 8 XXX
SG_ sig_cwxlhr : 48|4@1+ (1,0) [0|15] "" XXX
SG_ sig_jhtcho : 55|4@0+ (1,0) [0|15] "" XXX
SG_ sig_hzgifc : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 834 CID_OPWASX: 8 XXX
SG_ sig_cmmwxe : 0|8@1+ (0.01,0) [0|2.55] "" XXX
SG_ sig_ftrdfz : 8|8@1+ (0.01,0) [0|2.55] "" XXX
SG_ sig_sdagen : 19|1@1+ (1,0) [0|1] "" XXX
SG_ sig_bjldna : 20|2@1+ (1,0) [0|255] "" XXX
SG_ sig_abifet : 28|2@1+ (1,0) [0|1] "" XXX
SG_ sig_byqwgs : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 834 CID_DXPRYU: 8 XXX
SG_ sig_tcdrfk : 0|8@1+ (0.01,0) [0|2.55] "" XXX
SG_ sig_mnobhz : 8|8@1+ (0.01,0) [0|2.55] "" XXX
SG_ sig_fbozml : 19|1@1+ (1,0) [0|1] "" XXX
SG_ sig_uiiakp : 20|2@1+ (1,0) [0|255] "" XXX
SG_ sig_owxhqb : 28|2@1+ (1,0) [0|1] "" XXX
SG_ sig_hzgifc : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 884 CID_XERLCI: 8 MRR
SG_ sig_eesqja : 2|3@0+ (1,0) [0|3] "" MRR
SG_ sig_tygxbr : 7|4@0+ (1,0) [0|15] "" MRR
SG_ sig_wvbnlc : 15|8@0+ (0.1,-12) [0|255] "" MRR
SG_ sig_xhhlbu : 23|8@0+ (1,-100) [0|255] "" MRR
SG_ sig_qsfufe : 40|1@0+ (1,0) [0|3] "" MRR
SG_ sig_jgqhmi : 43|1@0+ (1,0) [0|1] "" XXX
SG_ sig_bhuyic : 44|4@1+ (1,0) [0|15] "" XXX
SG_ sig_adosij : 52|4@1+ (1,0) [0|15] "" MRR
SG_ sig_byqwgs : 56|8@1+ (1,0) [0|255] "" MRR
BO_ 884 CID_ECRZET: 8 MRR
SG_ sig_vkcecy : 2|3@0+ (1,0) [0|3] "" MRR
SG_ sig_cbtzsg : 7|4@0+ (1,0) [0|15] "" MRR
SG_ sig_achvkf : 15|8@0+ (0.1,-12) [0|255] "" MRR
SG_ sig_wscmpj : 23|8@0+ (1,-100) [0|255] "" MRR
SG_ sig_teykcz : 40|1@0+ (1,0) [0|3] "" MRR
SG_ sig_gjnebz : 43|1@0+ (1,0) [0|1] "" XXX
SG_ sig_nalliq : 44|4@1+ (1,0) [0|15] "" XXX
SG_ sig_cwxlhr : 52|4@1+ (1,0) [0|15] "" MRR
SG_ sig_hzgifc : 56|8@1+ (1,0) [0|255] "" MRR
BO_ 944 CID_SPTUML: 8 XXX
SG_ sig_rbugoa : 1|2@0+ (1,0) [0|3] "" XXX
SG_ sig_motoog : 2|1@0+ (1,0) [0|1] "" XXX
SG_ sig_mbqbur : 4|2@0+ (1,0) [0|3] "" XXX
SG_ sig_kgpmpm : 5|1@0+ (1,0) [0|1] "" XXX
SG_ sig_czkqqc : 6|1@0+ (1,0) [0|1] "" XXX
SG_ sig_tmhxmt : 7|1@0+ (1,0) [0|1] "" XXX
SG_ sig_lbblyt : 8|1@0+ (1,0) [0|1] "" XXX
SG_ sig_edegnl : 11|3@0+ (1,0) [0|7] "" XXX
SG_ sig_iexadz : 12|1@0+ (1,0) [0|1] "" XXX
SG_ sig_hdjyxm : 14|2@0+ (1,0) [0|3] "" XXX
SG_ sig_haxgii : 15|1@0+ (1,0) [0|1] "" XXX
SG_ sig_xhqmau : 16|1@0+ (1,0) [0|1] "" XXX
SG_ sig_jtzrgq : 18|2@0+ (1,0) [0|3] "" XXX
SG_ sig_fwttic : 19|1@0+ (1,0) [0|1] "" XXX
SG_ sig_bugoul : 23|4@0+ (1,0) [0|15] "" XXX
SG_ sig_dohdsj : 24|28@1+ (1,0) [0|268435455] "" XXX
SG_ sig_adosij : 52|4@1+ (1,0) [0|15] "" XXX
SG_ sig_byqwgs : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 944 CID_MSVHKQ: 8 XXX
SG_ sig_qtenru : 1|2@0+ (1,0) [0|3] "" XXX
SG_ sig_qjkruq : 2|1@0+ (1,0) [0|1] "" XXX
SG_ sig_pdmojj : 4|2@0+ (1,0) [0|3] "" XXX
SG_ sig_qkstja : 5|1@0+ (1,0) [0|1] "" XXX
SG_ sig_mnbhna : 6|1@0+ (1,0) [0|1] "" XXX
SG_ sig_lfzlgq : 7|1@0+ (1,0) [0|1] "" XXX
SG_ sig_buzonl : 8|1@0+ (1,0) [0|1] "" XXX
SG_ sig_yjzdca : 11|3@0+ (1,0) [0|7] "" XXX
SG_ sig_jcswbi : 12|1@0+ (1,0) [0|1] "" XXX
SG_ sig_djhppi : 14|2@0+ (1,0) [0|3] "" XXX
SG_ sig_qnmqhe : 15|1@0+ (1,0) [0|1] "" XXX
SG_ sig_tzmtbd : 16|1@0+ (1,0) [0|1] "" XXX
SG_ sig_qmnixl : 18|2@0+ (1,0) [0|3] "" XXX
SG_ sig_qrzrmc : 19|1@0+ (1,0) [0|1] "" XXX
SG_ sig_didogh : 23|4@0+ (1,0) [0|15] "" XXX
SG_ sig_mitvri : 24|28@1+ (1,0) [0|268435455] "" XXX
SG_ sig_cwxlhr : 52|4@1+ (1,0) [0|15] "" XXX
SG_ sig_hzgifc : 56|8@1+ (1,0) [0|255] "" XXX
BO_ 1048 CID_PTXWZE: 8 XXX
SG_ sig_wmamjx : 9|2@0+ (1,0) [0|1] "" XXX
SG_ sig_vckptj : 11|2@0+ (1,0) [0|1] "" XXX
SG_ sig_fqamus : 17|1@0+ (1,0) [0|1] "" XXX
BO_ 1048 CID_YQTWBS: 8 XXX
SG_ sig_pvfqmo : 9|2@0+ (1,0) [0|1] "" XXX
SG_ sig_bldpjf : 11|2@0+ (1,0) [0|1] "" XXX
SG_ sig_vvgjov : 17|1@0+ (1,0) [0|1] "" XXX
VAL_ 578 sig_fspyvf 4 "D" 2 "R" 3 "N" 1 "P";
VAL_ 578 sig_njxmsj 4 "D" 2 "R" 3 "N" 1 "P";

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,2 +1,2 @@
# Pyarmor 9.2.3 (trial), 000000, 2026-03-08T23:16:31.710142
# Pyarmor 9.2.3 (trial), 000000, 2026-03-14T23:19:30.740157
from .pyarmor_runtime import __pyarmor__

View File

@@ -1044,6 +1044,14 @@
<source>Power Off</source>
<translation></translation>
</message>
<message>
<source>Force to Offroad mode</source>
<translation>线</translation>
</message>
<message>
<source>Cancel ForceOffroad</source>
<translation>线</translation>
</message>
<message>
<source>openpilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. openpilot is continuously calibrating, resetting is rarely required.</source>
<translation>openpilot要求设备安装的偏航角在左4°4°5°9°openpilot会持续更新校准</translation>

Binary file not shown.

10
system/manager/process_config.py Normal file → Executable file
View File

@@ -78,6 +78,9 @@ def enable_connect(started, params, CP: car.CarParams) -> bool:
def enable_xiaoge_data(started, params, CP: car.CarParams) -> bool:
return params.get_bool("ShareData")
def enable_webrtc(started, params, CP: car.CarParams) -> bool:
return params.get_int("DisableDM") == 2
def c3x_lite(started: bool, params: Params, CP: car.CarParams) -> bool:
return started and params.get_bool("HardwareC3xLite")
@@ -86,7 +89,7 @@ procs = [
NativeProcess("loggerd", "system/loggerd", ["./loggerd"], logging),
NativeProcess("encoderd", "system/loggerd", ["./encoderd"], only_onroad),
NativeProcess("stream_encoderd", "system/loggerd", ["./encoderd", "--stream"], notcar),
NativeProcess("stream_encoderd", "system/loggerd", ["./encoderd", "--stream"], or_(notcar, and_(only_onroad, enable_webrtc))),
PythonProcess("logmessaged", "system.logmessaged", always_run),
NativeProcess("camerad", "system/camerad", ["./camerad"], driverview, enabled=not WEBCAM),
@@ -132,17 +135,16 @@ procs = [
# debug procs
NativeProcess("bridge", "cereal/messaging", ["./bridge"], notcar),
PythonProcess("webrtcd", "system.webrtc.webrtcd", notcar),
PythonProcess("webrtcd", "system.webrtc.webrtcd", or_(notcar, and_(only_onroad, enable_webrtc))),
PythonProcess("webjoystick", "tools.bodyteleop.web", notcar),
PythonProcess("joystick", "tools.joystick.joystick_control", and_(joystick, iscar)),
#PythonProcess("fleet_manager", "selfdrive.frogpilot.fleetmanager.fleet_manager", check_fleet, enabled=not PC),
PythonProcess("fleet_manager", "selfdrive.frogpilot.fleetmanager.fleet_manager", check_fleet),
PythonProcess("carrot_man", "selfdrive.carrot.carrot_man", always_run),#, enabled=not PC),
PythonProcess("carrot_server", "selfdrive.carrot.carrot_server", always_run),
#Xiaoge data broadcaster (conditional on ShareData param)
PythonProcess("xiaoge_data", "selfdrive.carrot.xiaoge_data", enable_xiaoge_data),
# c3x lite
PythonProcess("beep", "selfdrive.controls.beep", c3x_lite, enabled=TICI),
]

View File

@@ -42,7 +42,7 @@ class CerealOutgoingMessageProxy:
return msg_dict
def update(self):
async def update(self):
# this is blocking in async context...
self.sm.update(0)
for service, updated in self.sm.updated.items():
@@ -53,7 +53,11 @@ class CerealOutgoingMessageProxy:
outgoing_msg = {"type": service, "logMonoTime": mono_time, "valid": valid, "data": msg_dict}
encoded_msg = json.dumps(outgoing_msg).encode()
for channel in self.channels:
channel.send(encoded_msg)
# 支持 WebSocketResponse用于浏览器端调试
if isinstance(channel, web.WebSocketResponse):
await channel.send_bytes(encoded_msg)
else:
channel.send(encoded_msg)
class CerealIncomingMessageProxy:
@@ -94,7 +98,7 @@ class CerealProxyRunner:
while True:
try:
self.proxy.update()
await self.proxy.update()
except InvalidStateError:
self.logger.warning("Cereal outgoing proxy invalid state (connection closed)")
break
@@ -229,7 +233,11 @@ async def get_stream(request: 'web.Request'):
stream_dict[session.identifier] = session
return web.json_response({"sdp": answer.sdp, "type": answer.type})
# 基本 CORS 支持,方便外部网页直接访问
return web.json_response(
{"sdp": answer.sdp, "type": answer.type},
headers={"Access-Control-Allow-Origin": "*"},
)
async def get_schema(request: 'web.Request'):
@@ -246,19 +254,43 @@ async def on_shutdown(app: 'web.Application'):
del app['streams']
@web.middleware
async def cors_middleware(request, handler):
response = await handler(request)
response.headers['Access-Control-Allow-Origin'] = '*'
response.headers['Access-Control-Allow-Methods'] = 'GET, POST, PUT, DELETE, OPTIONS'
response.headers['Access-Control-Allow-Headers'] = 'Content-Type, Authorization'
return response
async def handle_cors_preflight(request):
if request.method == 'OPTIONS':
headers = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, Authorization',
'Access-Control-Max-Age': '86400',
}
return web.Response(status=200, headers=headers)
return await request.app['handler'](request)
def webrtcd_thread(host: str, port: int, debug: bool):
logging.basicConfig(level=logging.CRITICAL, handlers=[logging.StreamHandler()])
logging_level = logging.DEBUG if debug else logging.INFO
logging.getLogger("WebRTCStream").setLevel(logging_level)
logging.getLogger("webrtcd").setLevel(logging_level)
app = web.Application()
# 加上 CORS 中间件,允许外部网页(如 carrot web直接访问
app = web.Application(middlewares=[cors_middleware])
app['streams'] = dict()
app['debug'] = debug
app.on_shutdown.append(on_shutdown)
app.router.add_post("/stream", get_stream)
app.router.add_get("/schema", get_schema)
# 处理任意路径的 CORS 预检请求
app.router.add_route('OPTIONS', '/{tail:.*}', handle_cors_preflight)
web.run_app(app, host=host, port=port)