Merge pull request #9 from nzkarit/FR24-CSV
first part of integrating velocity from https://github.com/jaywilhelm…
This commit is contained in:
commit
99ffefcf89
@ -72,13 +72,23 @@ def singlePlane(arguments):
|
|||||||
samples = bytearray()
|
samples = bytearray()
|
||||||
for i in range(0, arguments.repeats):
|
for i in range(0, arguments.repeats):
|
||||||
modes = ModeS()
|
modes = ModeS()
|
||||||
(df17_even, df17_odd) = modes.df17_pos_rep_encode(arguments.capability, arguments.icao, arguments.typecode, arguments.surveillancestatus, arguments.nicsupplementb, arguments.altitude, arguments.time, arguments.latitude, arguments.longitude, arguments.surface)
|
(df17_pos_even, df17_pos_odd) = modes.df17_pos_rep_encode(arguments.capability, arguments.icao, arguments.typecode, arguments.surveillancestatus, arguments.nicsupplementb, arguments.altitude, arguments.time, arguments.latitude, arguments.longitude, arguments.surface)
|
||||||
|
|
||||||
|
df17_velocity = modes.vel_heading_encode(arguments.capability, arguments.icao)
|
||||||
|
|
||||||
ppm = PPM()
|
ppm = PPM()
|
||||||
df17_array = ppm.frame_1090es_ppm_modulate(df17_even, df17_odd)
|
df17_array_position = ppm.frame_1090es_ppm_modulate(df17_pos_even, df17_pos_odd)
|
||||||
|
df17_array_velocity = ppm.frame_1090es_ppm_modulate(df17_velocity, df17_velocity)
|
||||||
|
|
||||||
hackrf = HackRF()
|
hackrf = HackRF()
|
||||||
samples_array = hackrf.hackrf_raw_IQ_format(df17_array)
|
#Position
|
||||||
|
samples_array = hackrf.hackrf_raw_IQ_format(df17_array_position)
|
||||||
|
samples = samples+samples_array
|
||||||
|
gap_array = ppm.addGap(arguments.intermessagegap)
|
||||||
|
samples_array = hackrf.hackrf_raw_IQ_format(gap_array)
|
||||||
|
samples = samples+samples_array
|
||||||
|
#Velocity
|
||||||
|
samples_array = hackrf.hackrf_raw_IQ_format(df17_array_velocity)
|
||||||
samples = samples+samples_array
|
samples = samples+samples_array
|
||||||
gap_array = ppm.addGap(arguments.intermessagegap)
|
gap_array = ppm.addGap(arguments.intermessagegap)
|
||||||
samples_array = hackrf.hackrf_raw_IQ_format(gap_array)
|
samples_array = hackrf.hackrf_raw_IQ_format(gap_array)
|
||||||
|
75
ModeS.py
75
ModeS.py
@ -35,9 +35,9 @@ class ModeS:
|
|||||||
df17_even_bytes.append((tc<<3) | (ss<<1) | nicsb)
|
df17_even_bytes.append((tc<<3) | (ss<<1) | nicsb)
|
||||||
df17_even_bytes.append((enc_alt>>4) & 0xff)
|
df17_even_bytes.append((enc_alt>>4) & 0xff)
|
||||||
df17_even_bytes.append((enc_alt & 0xf) << 4 | (time<<3) | (ff<<2) | (evenenclat>>15))
|
df17_even_bytes.append((enc_alt & 0xf) << 4 | (time<<3) | (ff<<2) | (evenenclat>>15))
|
||||||
df17_even_bytes.append((evenenclat>>7) & 0xff)
|
df17_even_bytes.append((evenenclat>>7) & 0xff)
|
||||||
df17_even_bytes.append(((evenenclat & 0x7f) << 1) | (evenenclon>>16))
|
df17_even_bytes.append(((evenenclat & 0x7f) << 1) | (evenenclon>>16))
|
||||||
df17_even_bytes.append((evenenclon>>8) & 0xff)
|
df17_even_bytes.append((evenenclon>>8) & 0xff)
|
||||||
df17_even_bytes.append((evenenclon ) & 0xff)
|
df17_even_bytes.append((evenenclon ) & 0xff)
|
||||||
|
|
||||||
df17_str = "{0:02x}{1:02x}{2:02x}{3:02x}{4:02x}{5:02x}{6:02x}{7:02x}{8:02x}{9:02x}{10:02x}".format(*df17_even_bytes[0:11])
|
df17_str = "{0:02x}{1:02x}{2:02x}{3:02x}{4:02x}{5:02x}{6:02x}{7:02x}{8:02x}{9:02x}{10:02x}".format(*df17_even_bytes[0:11])
|
||||||
@ -58,9 +58,9 @@ class ModeS:
|
|||||||
df17_odd_bytes.append((tc<<3) | (ss<<1) | nicsb)
|
df17_odd_bytes.append((tc<<3) | (ss<<1) | nicsb)
|
||||||
df17_odd_bytes.append((enc_alt>>4) & 0xff)
|
df17_odd_bytes.append((enc_alt>>4) & 0xff)
|
||||||
df17_odd_bytes.append((enc_alt & 0xf) << 4 | (time<<3) | (ff<<2) | (oddenclat>>15))
|
df17_odd_bytes.append((enc_alt & 0xf) << 4 | (time<<3) | (ff<<2) | (oddenclat>>15))
|
||||||
df17_odd_bytes.append((oddenclat>>7) & 0xff)
|
df17_odd_bytes.append((oddenclat>>7) & 0xff)
|
||||||
df17_odd_bytes.append(((oddenclat & 0x7f) << 1) | (oddenclon>>16))
|
df17_odd_bytes.append(((oddenclat & 0x7f) << 1) | (oddenclon>>16))
|
||||||
df17_odd_bytes.append((oddenclon>>8) & 0xff)
|
df17_odd_bytes.append((oddenclon>>8) & 0xff)
|
||||||
df17_odd_bytes.append((oddenclon ) & 0xff)
|
df17_odd_bytes.append((oddenclon ) & 0xff)
|
||||||
|
|
||||||
df17_str = "{0:02x}{1:02x}{2:02x}{3:02x}{4:02x}{5:02x}{6:02x}{7:02x}{8:02x}{9:02x}{10:02x}".format(*df17_odd_bytes[0:11])
|
df17_str = "{0:02x}{1:02x}{2:02x}{3:02x}{4:02x}{5:02x}{6:02x}{7:02x}{8:02x}{9:02x}{10:02x}".format(*df17_odd_bytes[0:11])
|
||||||
@ -68,10 +68,71 @@ class ModeS:
|
|||||||
|
|
||||||
df17_odd_bytes.append((df17_crc>>16) & 0xff)
|
df17_odd_bytes.append((df17_crc>>16) & 0xff)
|
||||||
df17_odd_bytes.append((df17_crc>> 8) & 0xff)
|
df17_odd_bytes.append((df17_crc>> 8) & 0xff)
|
||||||
df17_odd_bytes.append((df17_crc ) & 0xff)
|
df17_odd_bytes.append((df17_crc ) & 0xff)
|
||||||
|
|
||||||
return (df17_even_bytes, df17_odd_bytes)
|
return (df17_even_bytes, df17_odd_bytes)
|
||||||
|
|
||||||
|
#From https://github.com/jaywilhelm/ADSB-Out_Python on 2019-08-18
|
||||||
|
def vel_heading_encode(self, ca, icao):
|
||||||
|
#(ca,icao,ew_dir,ew_vel,ns_dir,ns_vel)
|
||||||
|
df = 17
|
||||||
|
#ca = 5
|
||||||
|
|
||||||
|
|
||||||
|
#1-5 downlink format
|
||||||
|
#6-8 CA capability
|
||||||
|
#9-32 ICAO
|
||||||
|
#33-88 DATA -> 33-87 w/ 33-37 TC
|
||||||
|
#89-112 Parity
|
||||||
|
|
||||||
|
tc = 19 #33-37 1-5 type code
|
||||||
|
st = 0x01 #38-40 6-8 subtype, 3 air, 1 ground speed
|
||||||
|
ic = 0 # #41 9 intent change flag
|
||||||
|
resv_a = 0#1 #42 10
|
||||||
|
NAC = 2#0 #43-45 11-13 velocity uncertainty
|
||||||
|
S_EW = 1#1 #46 14
|
||||||
|
V_EW = 97#9 #47-56 15-24
|
||||||
|
S_NS = 0#1 #57 25 north-south sign
|
||||||
|
V_NS = 378#0xA0 #58-67 26-35 160 north-south vel
|
||||||
|
VrSrc = 1#0 #68 36 vertical rate source
|
||||||
|
S_Vr = 1#1 #69 37 vertical rate sign
|
||||||
|
Vr = 40#0x0E #70-78 38-46 14 vertical rate
|
||||||
|
RESV_B = 0 #79-80 47-48
|
||||||
|
S_Dif = 0 #81 49 diff from baro alt, sign
|
||||||
|
Dif = 0x1c#0x17 #82-88 50-66 23 diff from baro alt
|
||||||
|
|
||||||
|
#ca = 5
|
||||||
|
#icao = 0xabcdef#0xa06703 #0x485020 #
|
||||||
|
|
||||||
|
dfvel = []
|
||||||
|
dfvel.append((df << 3) | ca)
|
||||||
|
dfvel.append((icao >> 16) & 0xff)
|
||||||
|
dfvel.append((icao >> 8) & 0xff)
|
||||||
|
dfvel.append((icao) & 0xff)
|
||||||
|
# data
|
||||||
|
dfvel.append((tc << 3) | st)
|
||||||
|
dfvel.append((ic << 7) | (resv_a << 6) | (NAC << 3) | (S_EW << 2) | ((V_EW >> 8) & 0x03))
|
||||||
|
dfvel.append(0xFF & V_EW)
|
||||||
|
dfvel.append((S_NS << 7) | ((V_NS >> 3))) #& 0x7F))
|
||||||
|
dfvel.append(((V_NS << 5) & 0xE0) | (VrSrc << 4) | (S_Vr << 3) | ((Vr >> 6) & 0x03))
|
||||||
|
dfvel.append(((Vr << 2) & 0xFC) | (RESV_B))
|
||||||
|
dfvel.append((S_Dif << 7) | (Dif))
|
||||||
|
|
||||||
|
dfvel_str = "{0:02x} {1:02x} {2:02x} {3:02x} {4:02x} {5:02x} {6:02x} {7:02x} {8:02x} {9:02x} {10:02x}".format(
|
||||||
|
*dfvel[0:11])
|
||||||
|
#print(dfvel_str)
|
||||||
|
dfvel_str2 = "{0:02x}{1:02x}{2:02x}{3:02x}{4:02x}{5:02x}{6:02x}{7:02x}{8:02x}{9:02x}{10:02x}".format(
|
||||||
|
*dfvel[0:11])
|
||||||
|
crc_str = "%X" % self.bin2int(self.modes_crc(dfvel_str2+"000000", encode=True))
|
||||||
|
#print(crc_str)
|
||||||
|
#print(dfvel_str), " %X" % +"000000", encode=True))
|
||||||
|
#, "%X" % get_parity(hex2bin(dfvel_str+"000000"), extended=True))
|
||||||
|
dfvel_crc = self.bin2int(self.modes_crc(dfvel_str2 + "000000", encode=True))
|
||||||
|
dfvel.append((dfvel_crc >> 16) & 0xff)
|
||||||
|
dfvel.append((dfvel_crc >> 8) & 0xff)
|
||||||
|
dfvel.append((dfvel_crc) & 0xff)
|
||||||
|
return dfvel
|
||||||
|
|
||||||
###############################################################
|
###############################################################
|
||||||
|
|
||||||
# Copyright (C) 2015 Junzi Sun (TU Delft)
|
# Copyright (C) 2015 Junzi Sun (TU Delft)
|
||||||
|
Loading…
Reference in New Issue
Block a user