From 0b01651c7d5b9fa8d283b2a7702ce3d2800b6b3b Mon Sep 17 00:00:00 2001 From: error Date: Mon, 9 Oct 2023 19:20:51 +0200 Subject: [PATCH] Support ADSB --- _locales/en/messages.json | 12 ++++ js/fc.js | 7 +++ js/msp/MSPCodes.js | 4 +- js/msp/MSPHelper.js | 29 +++++++++ resources/adsb/adsb_1.png | Bin 0 -> 953 bytes resources/adsb/adsb_10.png | Bin 0 -> 962 bytes resources/adsb/adsb_11.png | Bin 0 -> 982 bytes resources/adsb/adsb_12.png | Bin 0 -> 2026 bytes resources/adsb/adsb_13.png | Bin 0 -> 1127 bytes resources/adsb/adsb_14.png | Bin 0 -> 1171 bytes resources/adsb/adsb_15.png | Bin 0 -> 1034 bytes resources/adsb/adsb_2.png | Bin 0 -> 981 bytes resources/adsb/adsb_3.png | Bin 0 -> 1193 bytes resources/adsb/adsb_4.png | Bin 0 -> 1461 bytes resources/adsb/adsb_5.png | Bin 0 -> 1450 bytes resources/adsb/adsb_6.png | Bin 0 -> 821 bytes resources/adsb/adsb_7.png | Bin 0 -> 1415 bytes resources/adsb/adsb_8.png | Bin 0 -> 919 bytes resources/adsb/adsb_9.png | Bin 0 -> 963 bytes tabs/gps.js | 123 +++++++++++++++++++++++++++++++++++++ tabs/osd.html | 10 +++ tabs/osd.js | 37 +++++++++++ 22 files changed, 221 insertions(+), 1 deletion(-) create mode 100644 resources/adsb/adsb_1.png create mode 100644 resources/adsb/adsb_10.png create mode 100644 resources/adsb/adsb_11.png create mode 100644 resources/adsb/adsb_12.png create mode 100644 resources/adsb/adsb_13.png create mode 100644 resources/adsb/adsb_14.png create mode 100644 resources/adsb/adsb_15.png create mode 100644 resources/adsb/adsb_2.png create mode 100644 resources/adsb/adsb_3.png create mode 100644 resources/adsb/adsb_4.png create mode 100644 resources/adsb/adsb_5.png create mode 100644 resources/adsb/adsb_6.png create mode 100644 resources/adsb/adsb_7.png create mode 100644 resources/adsb/adsb_8.png create mode 100644 resources/adsb/adsb_9.png diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 7e4a89009..fd8674443 100755 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -3590,6 +3590,12 @@ "osdAlarmGFORCE_AXIS_MAX_HELP": { "message": "The axes g force elements will start blinking when greater than this value" }, + "osdAlarmADSB_MAX_DISTANCE_WARNING": { + "message": "Distance in meters of ADSB aircraft that is displayed" + }, + "osdAlarmADSB_MAX_DISTANCE_ALERT": { + "message": "Distance inside which ADSB data flashes for proximity warning" + }, "osd_current_alarm": { "message": "Current (A)" }, @@ -3629,6 +3635,12 @@ "osd_rssi_dbm_alarm": { "message": "CRSF RSSI dBm Alarm" }, + "osd_adsb_distance_warning": { + "message": "ADSB distance warning" + }, + "osd_adsb_distance_alert": { + "message": "ADSB distance alert" + }, "osd_rssi_dbm_alarm_HELP": { "message": "RSSI indicator blinks below this value. Range: [-130,0]. Zero disables this alarm." }, diff --git a/js/fc.js b/js/fc.js index 447eb114a..cf47c58af 100644 --- a/js/fc.js +++ b/js/fc.js @@ -29,6 +29,7 @@ var CONFIG, MOTOR_DATA, SERVO_DATA, GPS_DATA, + ADSB_VEHICLES, MISSION_PLANNER, ANALOG, ARMING_CONFIG, @@ -251,6 +252,12 @@ var FC = { packetCount: 0 }; + ADSB_VEHICLES = { + vehiclesCount: 0, + callsignLength: 0, + vehicles: [] + }; + MISSION_PLANNER = new WaypointCollection(); ANALOG = { diff --git a/js/msp/MSPCodes.js b/js/msp/MSPCodes.js index fe28c2a3c..c86be42c5 100644 --- a/js/msp/MSPCodes.js +++ b/js/msp/MSPCodes.js @@ -245,5 +245,7 @@ var MSPCodes = { MSP2_INAV_EZ_TUNE: 0x2070, MSP2_INAV_EZ_TUNE_SET: 0x2071, - MSP2_INAV_SELECT_MIXER_PROFILE: 0x2080 + MSP2_INAV_SELECT_MIXER_PROFILE: 0x2080, + + MSP2_ADSB_VEHICLE_LIST: 0x2090, }; diff --git a/js/msp/MSPHelper.js b/js/msp/MSPHelper.js index f54f3ec37..48bba5026 100644 --- a/js/msp/MSPHelper.js +++ b/js/msp/MSPHelper.js @@ -186,6 +186,35 @@ var mspHelper = (function (gui) { GPS_DATA.eph = data.getUint16(16, true); GPS_DATA.epv = data.getUint16(18, true); break; + case MSPCodes.MSP2_ADSB_VEHICLE_LIST: + var byteOffsetCounter = 0; + ADSB_VEHICLES.vehicles = []; + ADSB_VEHICLES.vehiclesCount = data.getUint8(byteOffsetCounter++); + ADSB_VEHICLES.callsignLength = data.getUint8(byteOffsetCounter++); + + for(i = 0; i < ADSB_VEHICLES.vehiclesCount; i++){ + + var vehicle = {callSignByteArray: [], callsign: "", icao: 0, lat: 0, lon: 0, alt: 0, heading: 0, ttl: 0, tslc: 0, emitterType: 0}; + + for(ii = 0; ii < ADSB_VEHICLES.callsignLength; ii++){ + vehicle.callSignByteArray.push(data.getUint8(byteOffsetCounter++)); + } + + vehicle.callsign = (String.fromCharCode(...vehicle.callSignByteArray)).replace(/[^\x20-\x7E]/g, ''); + vehicle.icao = data.getUint32(byteOffsetCounter, true); byteOffsetCounter += 4; + vehicle.lat = data.getInt32(byteOffsetCounter, true); byteOffsetCounter += 4; + vehicle.lon = data.getInt32(byteOffsetCounter, true); byteOffsetCounter += 4; + vehicle.altCM = data.getInt32(byteOffsetCounter, true); byteOffsetCounter += 4; + vehicle.headingDegrees = data.getUint16(byteOffsetCounter, true); byteOffsetCounter += 2; + vehicle.tslc = data.getUint8(byteOffsetCounter++); + vehicle.emitterType = data.getUint8(byteOffsetCounter++); + vehicle.ttl = data.getUint8(byteOffsetCounter++); + + ADSB_VEHICLES.vehicles.push(vehicle); + } + + break; + case MSPCodes.MSP_ATTITUDE: SENSOR_DATA.kinematics[0] = data.getInt16(0, true) / 10.0; // x SENSOR_DATA.kinematics[1] = data.getInt16(2, true) / 10.0; // y diff --git a/resources/adsb/adsb_1.png b/resources/adsb/adsb_1.png new file mode 100644 index 0000000000000000000000000000000000000000..838abaf31a3f4c06825e3d3697b7375b92881028 GIT binary patch literal 953 zcmV;q14jIbP)EX>4Tx04R~2kiAO7U=)U*)S^-p2gN}gBDi)mlY@U4911m!V02287K=#?NlNh! zyc4~c4uaqxj;MAw_eZFFu{L(dA&3%8q#duUk%5y~)PhRv*(Ce!Fg(`>Uc$}R?`uGq%qj2?Y#hD@1|P|;P+R5`)Xowj-kLhdPvloLj( z&D2wIBPyljawPIa+NQy8tM=>5Whjk_w2Z?YsWgor=6}D(KF;e&Yjd85MOc>>6s_?X z-XCE#fc0nSTsL?v|GurE$Ekb%dE*yNpHP=>e``Yk0007FOGiWi|A&vvzW@LL32;bR za{vGf6951U69E94oEQKA00(qQO+^Ri3Iq@cBR8FWQhbVF}#ZDnqB07G(R zVRU6=Aa`kWXdp*PO;A^X4i^9b0rp8mK~zY`wU^KQs3~N(E5|r~{M^=-{{t zj#L00BpsYP2pwQoaJmW*6(B0u{IFzvXTSoS=NS(c_~~hPpH@IF76=Cxxj!!kzBjB; z09XYCr~nAO5O@F^BweMHa(ZHO{l%w2#aIlAIa2^i04m}-?#3c1tVBd)lk^7WJP3`& zAqNo=shS{IG^604Bms%(8^9!sSefqAkFkj7a3Z$kg<+WZmA76Aykl|#GzfajADG}_KPu%1fPccn9F4)E^GtOSdpuQ>LSJAgJ4Jy- zqi>j`Cg5;{&s)gPqOG!?XoZQxT?aMgHk4GHfm_Ce3?1;H>?QJy0J`o@DQkF+t zCE}2&H@UtpW8m00000NkvXXu0mjf_`R%` literal 0 HcmV?d00001 diff --git a/resources/adsb/adsb_10.png b/resources/adsb/adsb_10.png new file mode 100644 index 0000000000000000000000000000000000000000..b4bce66ad89fa1f9516f246fa001a306c47830e5 GIT binary patch literal 962 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 literal 0 HcmV?d00001 diff --git a/resources/adsb/adsb_13.png b/resources/adsb/adsb_13.png new file mode 100644 index 0000000000000000000000000000000000000000..a6b2e3ffc6314b2b2286f355393ae74e52be04d2 GIT binary patch literal 1127 zcmV-t1ep7YP)EX>4Tx04R~2kiAO7U=)U*)S^-p2gN}gBDi)mlY@U4911m!V02287K=#?NlNh! zyc4~c4uaqxj;MAw_eZFFu{L(dA&3%8q#duUk%5y~)PhRv*(Ce!Fg(`>Uc$}R?`uGq%qj2?Y#hD@1|P|;P+R5`)Xowj-kLhdPvloLj( z&D2wIBPyljawPIa+NQy8tM=>5Whjk_w2Z?YsWgor=6}D(KF;e&Yjd85MOc>>6s_?X z-XCE#fc0nSTsL?v|GurE$Ekb%dE*yNpHP=>e``Yk0007FOGiWi|A&vvzW@LL32;bR za{vGf6951U69E94oEQKA00(qQO+^Ri3Iq@fHZm{aP5=M^8FWQhbVF}#ZDnqB07G(R zVRU6=Aa`kWXdp*PO;A^X4i^9b0;EYqK~zY`)tAwAn?MjnuYL5N?I3huQh{*=Q3pm9 zSRI&D5OrX6V5I`#3P2Tz4%k%i^0A8qXjc-7&&kQ~g|yrqW@p|EcYxt1u;4b!cm!&G z0T?QT*kW!#<;Y(Z2Igq4^l%$6!y}I|l+nAknhQ}tfl9T?!Z^dL-?`;AgsLQ2=gbNU zw2>s`AzXzLJ?p!S3q=4W=ST^VBBMHtTcKR7Bz3+oPf@uLb@x;r!6hj1D2Fqm#hgQh zaS5e)Dvs@1lsnl2 z?kxzr9u>gp~*(_vq@P2J5&%u*rVr*?~;%=E22-z_5TO9W63H=l${X^ECnv|C(4 zjgz(+D_%MQHBQ=6sFU)`xDg63yMDjv3w2LZwyxLbmr;;)-WEb+A&II6xHzf@TMl6% zTrxn_E&|!G7K-C=lEnmcEktq8mNe%L*txZfbMiM*yo}wNZ~XS5oUtQ?4;q$OSg@WT z2bPSoe((-&yt9mtIN_Nj_?j6ngQ_%?2z5>vayAshu=_c+8o(;{eu_*69!wfG2P)EX>4Tx04R~2kiAO7U=)U*)S^-p2gN}gBDi)mlY@U4911m!V02287K=#?NlNh! zyc4~c4uaqxj;MAw_eZFFu{L(dA&3%8q#duUk%5y~)PhRv*(Ce!Fg(`>Uc$}R?`uGq%qj2?Y#hD@1|P|;P+R5`)Xowj-kLhdPvloLj( z&D2wIBPyljawPIa+NQy8tM=>5Whjk_w2Z?YsWgor=6}D(KF;e&Yjd85MOc>>6s_?X z-XCE#fc0nSTsL?v|GurE$Ekb%dE*yNpHP=>e``Yk0007FOGiWi|A&vvzW@LL32;bR za{vGf6951U69E94oEQKA00(qQO+^Ri3Iq@g1hu&)2><{98FWQhbVF}#ZDnqB07G(R zVRU6=Aa`kWXdp*PO;A^X4i^9b0?{jw`yOsKAUD$2iX19`m7gs~Q-Ij&j8oWNpzeAL0*68(l;omMR<)tw1 zbx_{%sn^188B33S>gV5FyVF#uTdO1OI`Ad0Z`_m3kkNB5B#mHqbm8~jZWh97E!2+e z0=xMzSKNa3wN{9zvC{=IWkbNK5xgQ`L)wk^g>8VSG-*IOwSj##xg&4JAKW{0fE*d^ zl(!@Mf?M%B|BTJK;(d2qB8P!%@TKFaXpnXy$AIhbxoi0afS8yNizVhbd1#7>frx;d zBS-QA3~;z{P>id)1|Na`KLp=wr^~YTKb{S1b;i17B91Iw_QmuMnkxyHEhnlbf&%(O z+lF+KXd{mlfK0aZj1@61(ux~9i`IK*l*l&~KZY1SMdj3vBfW=nYyf7z)H>|t) z;oykp^IkEOaP@0uP;K>--Pj(x^zgOj`fpNlaxA9S25)TI{~~$lvG_*>r_LOJ1NlWt lu~-7kX=sidiJJ%6=`Z#W%%Q`?b1?t_002ovPDHLkV1l}qD;od+ literal 0 HcmV?d00001 diff --git a/resources/adsb/adsb_15.png b/resources/adsb/adsb_15.png new file mode 100644 index 0000000000000000000000000000000000000000..e2f54672a9470d089ee46aefb807f614ae877780 GIT binary patch literal 1034 zcmV+l1oiugP)+c0003ZX+uL$Nkc;* zaB^>EX>4Tx04R~2kiAO7U=)U*)L)8D76)<2;M&o+IQWObp-|HZR;M&cv6#e=q!jPK zJJE~jAPC-qyMnXt7abhT;s=NGa5(3E&-tKbCt+GH9zdE^h3g#-FNat5${TH#=-{vy zgk|0vocc7r&sQvyU%E!Cx$n=n9K~g*JXd64UQ}T1i=A1O8&=S{^}S>9gV>JJED}G7 zccL^hY-YVQnT9`_W}CG*yBL_dVjGt;di1dwF=awRMOQgfsqTf4|2*&g)5QbDjr9P?r`It??M% zA7On68_&?bZtz8>00Lr5M??VshmXv^00009a7bBm z000XU000XU0RWnu7ytkO2XskIMF-~!1r#_RJ44f}0000PbVXQnLvL+uWo~o;Lvm$d zbY)~9cWHEJAV*0}P*;Ht7XSbPNJ&INR7l6Ama&r4Kn#YzWKuGWiyKO^@B-PPx$?GQ zD9&g8Mjf9(7eM( zHMbRWGM@9Q+%c6bz%PDq)t(K@mi5rMD3&DkyIe~k8;K-GAV?Pi(QcK+|~>&8iwbCNz|j5$P;;eBC^NNolgNx#3s*_Az{nkvd{qHv)HMgd^YQwN-bvm z;R8wWR1_N`bWUQE?`ooak0ZLLaN^!K-PSUy(yZbKFl=C2JjCF{khF0lJ*v5+oiX!D zsUazfLg7zy4|lA30&YikxV9+dm{-;-?%aWCQ49S&xQaeq+k3Lv8(m$RX?`yKkFh!q zgGuzuo!8ir*s|tW3U6x4rXm@eo~#x*TlsZh%@?;lW6Nhqc@JoOd=_1dFF<-m{x@r4 z;;M)3jEqk#iz6v3JYMpQuc&f#cszDkEZ=#`+ootuHUsYXh>y=r5yGFqHzxBWsFWS?0Bqk;%t(U8Z!N=6zQ3p)x6f-z1x%=LELZL8d^bk4&aljH| zN!z$i23*-VV%~@%*#Q>ox_o-pFfN!ehh)T#Y^)Xh18#}?7-NX|A^-pY07*qoM6N<$ Eg3jC0t^fc4 literal 0 HcmV?d00001 diff --git a/resources/adsb/adsb_2.png b/resources/adsb/adsb_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a319bf54eba9d29350f94f03e83543c0c067375c GIT binary patch literal 981 zcmV;`11kK9P)EX>4Tx04R~2kiAO7U=)U*)S^-p2gN}gBDi)mlY@U4911m!V02287K=#?NlNh! zyc4~c4uaqxj;MAw_eZFFu{L(dA&3%8q#duUk%5y~)PhRv*(Ce!Fg(`>Uc$}R?`uGq%qj2?Y#hD@1|P|;P+R5`)Xowj-kLhdPvloLj( z&D2wIBPyljawPIa+NQy8tM=>5Whjk_w2Z?YsWgor=6}D(KF;e&Yjd85MOc>>6s_?X z-XCE#fc0nSTsL?v|GurE$Ekb%dE*yNpHP=>e``Yk0007FOGiWi|A&vvzW@LL32;bR za{vGf6951U69E94oEQKA00(qQO+^Ri3Iq@d9yP2hHUIzs8FWQhbVF}#ZDnqB07G(R zVRU6=Aa`kWXdp*PO;A^X4i^9b0uo6?K~zY`?U%8Y+CUUVud#AZ2Uh6J;|iD#j4N1o zuyg>f09?Ut2Z+ca+RT|m1m?MA<@Kr*+ zkpeN0lH>75i8Tfws$LRd`LP)6aWDFS98$iJUNY#(F(s|i8bjzm`m>M>0rCJ?=U>xf zgO$l@%Id&nnKlQ5hVedt(g2t;#kYC!zW&44g3MvC#KGyfONvXA{`w$@?%AaL(7Rr5 z;OBZ(U8D8%D3>6kRoPy)I3eDBES@3cYLW3+guvo%Z;P`K*c2goR+eg7SA}&Qha1pp=T!0QOy#JH+ zUd2RC#Jt=sEZ=#?m;X#FYP-u=PQEX>4Tx04R~2kiAO7U=)U*)S^-p2gN}gBDi)mlY@U4911m!V02287K=#?NlNh! zyc4~c4uaqxj;MAw_eZFFu{L(dA&3%8q#duUk%5y~)PhRv*(Ce!Fg(`>Uc$}R?`uGq%qj2?Y#hD@1|P|;P+R5`)Xowj-kLhdPvloLj( z&D2wIBPyljawPIa+NQy8tM=>5Whjk_w2Z?YsWgor=6}D(KF;e&Yjd85MOc>>6s_?X z-XCE#fc0nSTsL?v|GurE$Ekb%dE*yNpHP=>e``Yk0007FOGiWi|A&vvzW@LL32;bR za{vGf6951U69E94oEQKA00(qQO+^Ri3Iq@dFJy8n3;+NC8FWQhbVF}#ZDnqB07G(R zVRU6=Aa`kWXdp*PO;A^X4i^9b0_I6XK~z}7?U>tjn?M+Zzg*tE9fVZi?I4tZD+nD3 zSD@`6bP!yD=s>sva0S5?u&!Y80Flte2+-x6oMfH^XIG=y%Rlq$19M>b4m{zx2@GYR zK$Mu<5IUnqjf`-&(br^>q)aro&={jelGF$hPo4g8GGQ2YvJ4^E>l5B@IqVF==}^0a z-7f0d3N74k#ddG5Noe{EwtI8kJvplvR)L0Fg!u#|z;8jH1zDCY;OC5pNXIu?y0 zp*cDO)@Z%j7Dhl zN)-s1eo1x*gxl)r0-->u{0W^Ajos5$%gKnE7>Da^{Scw0pdh9;a(fG0%5HRqDB01K z$+o)OkarCFgEK-_*^bsk2>ZET0AEPS@vo#9583RJn0cV`abmtiBwfF?AO!=?^mLJ( z=oO*^h2e=_B-?6jPlF2;xBHchXuU#u%j8cJwnx%Y8zl;bgAkGLAKQUC)Vu73(CC^O zk+(n3Oe?b}-4LczTkZh!5kE0!J#UBC@H}a5jh`Nbt77x9;B*c>KY4%Ia#VBy_-Y6! zO)qkEks`Pj-4R=!X0_A8;>zgfQQ!MHU_o>7j&%)N&^aiglaV44#RX64pQ!oD6AwHB z@W=yCyzPy+M1R;hNls1$FL?7U1~U9h4)>P$lB?O>a3OMH0wBPrN`>#95-MayF6r1F zaaTfSWVGX#hWMKQfCo(RiFtdtSA?J1+C3egW@_|Q^9X+fB22XX#cPmE00000NkvXX Hu0mjfF1H|= literal 0 HcmV?d00001 diff --git a/resources/adsb/adsb_4.png b/resources/adsb/adsb_4.png new file mode 100644 index 0000000000000000000000000000000000000000..69bdd04963d111f655e77c1488d62ea607a679ad GIT binary patch literal 1461 zcmV;m1xosfP)EX>4Tx04R~2kiAO7U=)U*)S^-p2gN}gBDi)mlY@U4911m!V02287K=#?NlNh! zyc4~c4uaqxj;MAw_eZFFu{L(dA&3%8q#duUk%5y~)PhRv*(Ce!Fg(`>Uc$}R?`uGq%qj2?Y#hD@1|P|;P+R5`)Xowj-kLhdPvloLj( z&D2wIBPyljawPIa+NQy8tM=>5Whjk_w2Z?YsWgor=6}D(KF;e&Yjd85MOc>>6s_?X z-XCE#fc0nSTsL?v|GurE$Ekb%dE*yNpHP=>e``Yk0007FOGiWi|A&vvzW@LL32;bR za{vGf6951U69E94oEQKA00(qQO+^Ri3Iq@e0OXEEmH+?%8FWQhbVF}#ZDnqB07G(R zVRU6=Aa`kWXdp*PO;A^X4i^9b1M*2kK~!ko?U~D!qec{lKkM|uyQvI@44Mq4oB@u& z)9elH4|hr|eIJ&wR$% zaC-nD1kGdfa!UY@?H7A{AHbY=x}gSwjzhH6aU%ex2f*CH1ecMY0RFcCzWg-7-2s^X z^G%7_8ojEKy%5`Z$>^6+qY}PQPyo-s8s}K|=+U3B<2OnipD~1#{C>F;%LxCmyrL%^ z%i7b^z>hP2?1jXlT+%^^16u2}Y-Pj&Ws)RBa$zSl0A`IFqzD^~nOc_?(>#AOxV?uk z{gyHkKminN&YCq~!zbYFqCpp;P}3w9BEFOc=BAj(`Dbp^9fv|4G*z5XCs~;B-sz~L zK4FR6jO`_9Da0$$`)cXvTVJ51mI{UZ1$3^gtE9BlQdaE80?4f-Df!^`HH2oh$xisv z%lOm9@p{Je55qq_4NiR{!|=!Z`!`bDfYV1aNqme>Z@4=Llu{xoFl#H|<6)5km zaqw%rob7t`lTN8Zh?0Z=OI$g|F#uZ~z+rF{C_6HU6Jj&uT87u-uuEk;^1dex0cefr zd&+xeI9W17wtcFRD{IuwWB`eu8~2P+(Uz#sc@9RKj^dqAC`t_WgwoCf082m?2-!|l z?R}1Y>Xn;)Ye?cbU4aJq#~1)!vn3@ZidD88GHR8o07Wgw%YDS=XSzOP0o4ArLPo28 zsd6pK>BBAZCqLi$oCd(_B1d7%BWl_jQ>j0Z@!>Y6Zg&7=V@bH9M6NPMP<2@Iuu*(A zy4|+39iKU!W=|R;sf`g=vlROTQB0~D`Ah)b>v9zOHn#;I6sxHP>jMCMk@Wl81?=G4 zI0kz`$@pv6A|%td&&zJD`+M>VG2d$dUr(gk^ImvdY^O=-gK#nH{7{~GA0sQ?V8QdO z1MJ#b&$|klLK$awngf(pF|hl{zeZ*;OL2sm_!tLM&YQOz2H zyUO3$E#~M+SgcT}RH#5sX$Q#ICgltOJFS{~VvaxUjuN5p{StB|0JiQJ?^qFG>gyL4 zuq5OjSTqU1!vqfUos68kRXv~o`IUbufSepKSZo&Y`5O5zoaC}&*){(Gs?_%5Wg3<- P00000NkvXXu0mjfq8P1L literal 0 HcmV?d00001 diff --git a/resources/adsb/adsb_5.png b/resources/adsb/adsb_5.png new file mode 100644 index 0000000000000000000000000000000000000000..d04f39dda11d18091875a2644b8f3c582f783d64 GIT binary patch literal 1450 zcmV;b1y%ZqP)EX>4Tx04R~2kiAO7U=)U*)S^-p2gN}gBDi)mlY@U4911m!V02287K=#?NlNh! zyc4~c4uaqxj;MAw_eZFFu{L(dA&3%8q#duUk%5y~)PhRv*(Ce!Fg(`>Uc$}R?`uGq%qj2?Y#hD@1|P|;P+R5`)Xowj-kLhdPvloLj( z&D2wIBPyljawPIa+NQy8tM=>5Whjk_w2Z?YsWgor=6}D(KF;e&Yjd85MOc>>6s_?X z-XCE#fc0nSTsL?v|GurE$Ekb%dE*yNpHP=>e``Yk0007FOGiWi|A&vvzW@LL32;bR za{vGf6951U69E94oEQKA00(qQO+^Ri3Iq@e4VphWD*ylh8FWQhbVF}#ZDnqB07G(R zVRU6=Aa`kWXdp*PO;A^X4i^9b1LsLZK~!ko?U~Ven^+Kq|LF6(ZwDb2?Croe9jJrg z3d~j@Qh}8Uq*Nfb0!RhO6^K*-Tfy0fi)@6z0*tNi+uh+wmOUe} zAc&xumk#c(0pj+QAiTjB(?M9*24OxP#EiC>oS@SWJ|~DK1^&1aCt98CKg)@KABdaL zg!~LV^?vW`=5LDkR1hUXq&SqRX^5BzA;e+E{5>;SrF!%*&OzjqPN{Yt(EEXik3XnD zhZ7JRp~m;|+??<{IAMY%ZFxMz^0oPg4FRy{&za05Wh?4%Nzzj2Ep@_h#~lF%mbh9%?x`+5vcw*nyKg6k9VzMf-eSlRq9pQp zkO@8XgyGy)LXy1ya-%yLk&jK>#Av5fM#zK6m1>On|Bjw>W{M)u+;O5PhcThc%K8v- z?a4k6i%YD;n8_N}up2a{E-pRBlD=WabL2cszB@50B;|vt_kO9f#Y4Z}csHd}{e^!*a=HLJ)qnoO#=q``lB& zn(y7k*HIch_MD;8R)J_-uB|6duCQ)qT{M00>cgIU;*rR*=_K$IYZ5AWB6;cE?sIzT z(w}S_8Z6{CU`bT#fKGqJd~Yg-ystBCJ)J7HEqs|fmv?P3m>^`eRdvxHA*Io-qa{ba z>=r~FB#F5M!m})5-xr>pU%DAEl=jRAiJXt^wl}kffjIJXO@#tQDq3lah#=-fEf$JB z0Sn?+3;!4puY|{n>?F3CFRmhCc`+x)gXj#8djU~t?ayDa9=M-90g;VU3ytv9p0El% z0kcuP8xNF?j#mNlcQ@8xaSK1Kls8A{vLGKjK%6FU$JZ{cmnpdAiw9YcdQZ( z9a<=U83gR}#FY^oC0qQgxUyOEqvk~B%aKT)A05}1JC$rs+vD2I&R42lgm8SZLj=SW zC{m!t*f@g~%dxMbGdp<4{b{f-0$@F&dj|v*!`^%R17bN>E-u$iL;wH)07*qoM6N<$ Ef+nA!vj6}9 literal 0 HcmV?d00001 diff --git a/resources/adsb/adsb_6.png b/resources/adsb/adsb_6.png new file mode 100644 index 0000000000000000000000000000000000000000..55bb74d1c7f3dcc1dbaf6f297edbb4e81066dbcc GIT binary patch literal 821 zcmV-51Iqk~P)EX>4Tx04R~2kiAO7U=)U*)S^-p2gN}gBDi)mlY@U4911m!V02287K=#?NlNh! zyc4~c4uaqxj;MAw_eZFFu{L(dA&3%8q#duUk%5y~)PhRv*(Ce!Fg(`>Uc$}R?`uGq%qj2?Y#hD@1|P|;P+R5`)Xowj-kLhdPvloLj( z&D2wIBPyljawPIa+NQy8tM=>5Whjk_w2Z?YsWgor=6}D(KF;e&Yjd85MOc>>6s_?X z-XCE#fc0nSTsL?v|GurE$Ekb%dE*yNpHP=>e``Yk0007FOGiWi|A&vvzW@LL32;bR za{vGf6951U69E94oEQKA00(qQO+^Ri3Iq@e9fyc1PXGV_8FWQhbVF}#ZDnqB07G(R zVRU6=Aa`kWXdp*PO;A^X4i^9b0dh%1K~zY`#g@%c!!QtqKSS=Q1JnWPAWH?L1AOF| z4sZv74on3}2T^X^Pzg>2v2Wa#gYDozNaTqo>b^eJX2TOB@!|F&z6CQ1u>}}I2#s75D46dj%i)e{eGVH!V_i86 z4nc6-w8JZaz==F60wsYG|4p|g;On51U)6CxbrB2>#{(5B3Or>evVHym-))rSkANHo zhrwdoOmaMV8(DE+7eEM^ijv1}i`aH+(<}~E_=jE5m$(?7*pEd#rW9ol-|NV=_Q(_F zy}qEfd=8V9utU*>ilQhVoh5w{R-$XIvD2kmB^`#?d+j1qvSEr>z8q|vJgSOG%;Sos zA;nEX>4Tx04R~2kiAO7U=)U*)S^-p2gN}gBDi)mlY@U4911m!V02287K=#?NlNh! zyc4~c4uaqxj;MAw_eZFFu{L(dA&3%8q#duUk%5y~)PhRv*(Ce!Fg(`>Uc$}R?`uGq%qj2?Y#hD@1|P|;P+R5`)Xowj-kLhdPvloLj( z&D2wIBPyljawPIa+NQy8tM=>5Whjk_w2Z?YsWgor=6}D(KF;e&Yjd85MOc>>6s_?X z-XCE#fc0nSTsL?v|GurE$Ekb%dE*yNpHP=>e``Yk0007FOGiWi|A&vvzW@LL32;bR za{vGf6951U69E94oEQKA00(qQO+^Ri3Iq@eE;v|7SpWb48FWQhbVF}#ZDnqB07G(R zVRU6=Aa`kWXdp*PO;A^X4i^9b1H?&0K~zY`jg~)e6h|0`pIa_Ca3B^Z#uf%{BR~mN zE(J+Jkt?W>qFfD9Z1D-)QHGWZD_;OmQqj1A)_1ZZDs<;2F$H+fQ4A8GyOYlW8|+_- znVsFa-Ag>x?#%nl`*+@%5=A3q4tPMH1B{5f^bn%Q&qV(xUZ;m5MfyUKf$IMyK954( z(<9x~O+C^*g+k1a6K|kUZAsVFQcKq*wGGlJ60gxS;w!o#NxGqx1nCv|(nd>?q+5C@ zNqVSTlB6Xemh;Z4AxRqQ8x2Rk>O!N=FQauy(qkz$c*lbEa(#eiKp&cRYJ!~{u;X%*I^9hc zkBnp$;2lTOpH&0I&uXwvH`72(@x}w*FqH*5PDAY4 z$}10e>Do@;tEJV%q-kDyz$>P4Mz>O+lcamvb-JVz8ldZ}a)2>vCI`%T9wb0BiPH?b zu5rO0yJLV(l8h3w{N;cRX6^B5!XOJkE6LuOw0POzOd8aVf8v_470d!%3v@GwCK%n~ zY+CKaoK5Q>4>WVYx&=C!UKF^^x@P7aFEYTnL_;@8b>Mornhb!`l)YlJu+YxVa_s2y(Y*xR`mYT;vY` z{^Vlj?R6VMY6hr#_aYOv!S8stMXjh+nsJR4hHUdY*9w|(xu`>b$r>fTD(v26lafBG zHqd>3MBJyuKJdUA8@hCsfQSw!(mgu-O%te7@!xF&BKl<@rk;5`EzFa2n7H`G{Vx{P V!>Sy71t$Oi002ovPDHLkV1mGWi>m+t literal 0 HcmV?d00001 diff --git a/resources/adsb/adsb_8.png b/resources/adsb/adsb_8.png new file mode 100644 index 0000000000000000000000000000000000000000..c302bcde7ef43ca3b50921a5a0361d19fffba453 GIT binary patch literal 919 zcmV;I18Dq-P)EX>4Tx04R~2kiAO7U=)U*)S^-p2gN}gBDi)mlY@U4911m!V02287K=#?NlNh! zyc4~c4uaqxj;MAw_eZFFu{L(dA&3%8q#duUk%5y~)PhRv*(Ce!Fg(`>Uc$}R?`uGq%qj2?Y#hD@1|P|;P+R5`)Xowj-kLhdPvloLj( z&D2wIBPyljawPIa+NQy8tM=>5Whjk_w2Z?YsWgor=6}D(KF;e&Yjd85MOc>>6s_?X z-XCE#fc0nSTsL?v|GurE$Ekb%dE*yNpHP=>e``Yk0007FOGiWi|A&vvzW@LL32;bR za{vGf6951U69E94oEQKA00(qQO+^Ri3Iq@eILwUw2mk;88FWQhbVF}#ZDnqB07G(R zVRU6=Aa`kWXdp*PO;A^X4i^9b0n|xEK~z}7?UvnHqd*jf-(42?3Qh`vxw-*V+fF}GYqtCNnu1LbnJ9EzY&iTb01>CZuqQH@M2>C+1 zxB&>!R&SCXg!tnEA@%j9qY@#4qJTCYOvmIjDXsz!)(>Qd|J6n=|{(g8w8g=2(# z#=Gn3duG;S=>VamYHof%>msHHBG21laF7dGPSqeBW~IY)gMK=>f-j!jbO~)GNtqDa z>C1S7+w#Vo-mjg>s)JjuO;k!dONSu5UmRj%fZ_R9qtmWeL>%HGzEC~6v9CI5>x!<( zS7b!}M;=J^;ch+Ga^peB!+^zy_KkRusT@K7a(B#yVXu9r>K#{gI+pB#kgG*8_Qp^> z$UC=S2PCkDp}6&*>&}u@%bN4ZL~UNoV{;ojRMi7lO)^&`@TRPF7o7_flqs# zA!yGi+*{Aj6s<#+%NVwj#vNy5^cv^-kMJWAGGu*hy|jKAm7Lx<;EX>4Tx04R~2kiAO7U=)U*)S^-p2gN}gBDi)mlY@U4911m!V02287K=#?NlNh! zyc4~c4uaqxj;MAw_eZFFu{L(dA&3%8q#duUk%5y~)PhRv*(Ce!Fg(`>Uc$}R?`uGq%qj2?Y#hD@1|P|;P+R5`)Xowj-kLhdPvloLj( z&D2wIBPyljawPIa+NQy8tM=>5Whjk_w2Z?YsWgor=6}D(KF;e&Yjd85MOc>>6s_?X z-XCE#fc0nSTsL?v|GurE$Ekb%dE*yNpHP=>e``Yk0007FOGiWi|A&vvzW@LL32;bR za{vGf6951U69E94oEQKA00(qQO+^Ri3Iq@f34}?^a{vGU8FWQhbVF}#ZDnqB07G(R zVRU6=Aa`kWXdp*PO;A^X4i^9b0su)wK~zY`?U$`j!$25^pEU!qhJ+=2xV2!&1PKY~ zfj|sLz%ogOp1^`w_%|ldkf6Yj5EKHEVfZkR;zq@mz$RvfXs_$7*N=^$#;;D zCN&lW2*47nMC*+^2L-f#^(1jx^p!P6)Hs0Y!HQXO80Z-8e~UIYA6Vhw6h#UiAe481 zZLW9-^m|N?-b*h|wg@}f$BS6MF4d-9aOjnvy^>DOE8nWYFV2A{EINS!GcZ7^mqzt0 z#6%mL`@lS!9I+12i1o4A&lIFFIZit1T~W9p_1nnNSwxS0d6GGi2gE$;EKAE&tt^}W z3;9=IW>m03VKmU7%-Zl^o(!-TVX&t5ui~!5t>M6m*HbY$nBm0BY>)}{GXNe8BuED= z#DT@Y9ytR*IbgIVC#8~NT3{C_F&hpV$`LNJqiBr<`~Ky_!RYvuQj4jv;?JK^l3F)3 z=b$n_koZ-)_a7ik$y6%>eRg+9T|JMdfqlbKhtuc)u&64~4%Mg~S)ltAq!7E6wzp6) z{ME6|tKCt-W@6ygJ=|;5hwI6;?M72w2@` + feature.get('name') + `
` + + `lat: `+ (feature.get('data').lat / 10000000) + `
` + + `lon: `+ (feature.get('data').lon / 10000000) + `
` + + `ASL: `+ (feature.get('data').altCM ) / 100 + `m
` + + `heading: `+ feature.get('data').headingDegrees + `°
` + + `type: `+ feature.get('data').emitterType + `` + ).open(); + }else{ + TABS.gps.toolboxAdsbVehicle.close(); + } + }); + let center = ol.proj.fromLonLat([0, 0]); mapView.setCenter(center); mapView.setZoom(2); @@ -221,6 +281,66 @@ TABS.gps.initialize = function (callback) { iconGeometry.setCoordinates(center); } + + if (semver.gte(CONFIG.flightControllerVersion, "7.1.0")) { + MSP.send_message(MSPCodes.MSP2_ADSB_VEHICLE_LIST, false, false, function () { + //ADSB vehicles + + if (vehiclesCursorInitialized) { + vehicleVectorSource.clear(); + } + + for (let key in ADSB_VEHICLES.vehicles) { + let vehicle = ADSB_VEHICLES.vehicles[key]; + + if (!vehiclesCursorInitialized) { + vehiclesCursorInitialized = true; + + vehicleVectorSource = new ol.source.Vector({}); + + let vehicleLayer = new ol.layer.Vector({ + source: vehicleVectorSource + }); + + mapHandler.addLayer(vehicleLayer); + } + + if (vehicle.lat > 0 && vehicle.lon > 0 && vehicle.ttl > 0) { + let vehicleIconStyle = new ol.style.Style({ + image: new ol.style.Icon(({ + opacity: 1, + rotation: vehicle.headingDegrees * (Math.PI / 180), + scale: 0.8, + anchor: [0.5, 0.5], + src: '../resources/adsb/' + ADSB_VEHICLE_TYPE[vehicle.emitterType], + })), + text: new ol.style.Text(({ + text: vehicle.callsign, + textAlign: 'center', + textBaseline: "bottom", + offsetY: +40, + padding: [2, 2, 2, 2], + backgroundFill: '#444444', + fill: new ol.style.Fill({color: '#ffffff'}), + })), + }); + + + let iconGeometry = new ol.geom.Point(ol.proj.fromLonLat([vehicle.lon / 10000000, vehicle.lat / 10000000])); + let iconFeature = new ol.Feature({ + geometry: iconGeometry, + name: vehicle.callsign, + type: 'adsb', + data: vehicle, + }); + + iconFeature.setStyle(vehicleIconStyle); + vehicleVectorSource.addFeature(iconFeature); + } + } + }); + } + } /* @@ -271,4 +391,7 @@ TABS.gps.initialize = function (callback) { TABS.gps.cleanup = function (callback) { if (callback) callback(); + if(TABS.gps.toolboxAdsbVehicle){ + TABS.gps.toolboxAdsbVehicle.close(); + } }; diff --git a/tabs/osd.html b/tabs/osd.html index 99d215b5e..f9489d713 100644 --- a/tabs/osd.html +++ b/tabs/osd.html @@ -242,6 +242,16 @@

+
+ +
+
diff --git a/tabs/osd.js b/tabs/osd.js index 95393953d..f3dbc8d4b 100644 --- a/tabs/osd.js +++ b/tabs/osd.js @@ -114,6 +114,7 @@ SYM.FLIGHT_DIST_REMAINING = 0x167; SYM.GROUND_COURSE = 0xDC; SYM.ALERT = 0xDD; SYM.CROSS_TRACK_ERROR = 0xFC; +SYM.ADSB = 0xFD; SYM.PAN_SERVO_IS_OFFSET_L = 0x1C7; SYM.ODOMETER = 0X168; SYM.PILOT_LOGO_SML_L = 0x1D5; @@ -480,6 +481,8 @@ OSD.initData = function () { imu_temp_alarm_max: null, baro_temp_alarm_min: null, baro_temp_alarm_max: null, + adsb_distance_warning: null, + adsb_distance_alert: null, }, layouts: [], layout_count: 1, // This needs to be 1 for compatibility with < 2.0 @@ -781,6 +784,24 @@ OSD.constants = { min: -55, max: 125 }, + { + name: 'ADSB_MAX_DISTANCE_WARNING', + field: 'adsb_distance_warning', + step: 1, + unit: "meters", + min: 1, + max: 64000, + min_version: '7.1.0', + }, + { + name: 'ADSB_MAX_DISTANCE_ALERT', + field: 'adsb_distance_alert', + step: 1, + unit: "meters", + min: 1, + max: 64000, + min_version: '7.1.0', + }, ], // All display fields, from every version, do not remove elements, only add! @@ -1654,6 +1675,18 @@ OSD.constants = { min_version: '6.0.0', preview: FONT.symbol(SYM.GROUND_COURSE) + '245' + FONT.symbol(SYM.DEGREES) }, + { + name: 'ADSB_WARNING_MESSAGE', + id: 147, + min_version: '7.1.0', + preview: FONT.symbol(SYM.ADSB) + '19.25' + FONT.symbol(SYM.DIR_TO_HOME+1) + '2.75', + }, + { + name: 'ADSB_INFO', + id: 148, + min_version: '7.1.0', + preview: FONT.symbol(SYM.ADSB) + '2', + }, { name: 'CROSS TRACK ERROR', id: 141, @@ -2264,6 +2297,8 @@ OSD.msp = { result.push16(OSD.data.alarms.imu_temp_alarm_max); result.push16(OSD.data.alarms.baro_temp_alarm_min); result.push16(OSD.data.alarms.baro_temp_alarm_max); + result.push16(OSD.data.alarms.adsb_distance_warning); + result.push16(OSD.data.alarms.adsb_distance_alert); return result; }, @@ -2283,6 +2318,8 @@ OSD.msp = { OSD.data.alarms.imu_temp_alarm_max = alarms.read16(); OSD.data.alarms.baro_temp_alarm_min = alarms.read16(); OSD.data.alarms.baro_temp_alarm_max = alarms.read16(); + OSD.data.alarms.adsb_distance_warning = alarms.read16(); + OSD.data.alarms.adsb_distance_alert = alarms.read16(); }, encodePreferences: function() {