def AtherosMPDU2(csifile, index=0): """Parse payload without scapy""" csidata = csiread.Atheros(csifile, Nrxnum=3, Ntxnum=2, pl_size=40, Tones=56, if_report=False) csidata.read() print("=" * 20 + "Atheros MPDU2" + "=" * 20) m = MPDU(csidata.payload[index].tobytes()) m.show()
def seekAtheros(csifile, num=36): positions_all = getPos(csifile) positions = positions_all[::num][:-1] random.shuffle(positions) print("-" * 40, "[Atheros]") last = default_timer() csidata = csiread.Atheros(csifile, 3, 2, 0, 56, False) csidata.read() cost_time = default_timer() - last print("%-18s: %18fs" % ("read()", cost_time)) last = default_timer() csidata = csiread.Atheros(None, 3, 2, 0, 56, False, bufsize=num) for pos in positions: csidata.seek(csifile, pos, num) cost_time = (default_timer() - last) * len(positions_all) / (len(positions) * num) print("%-18s: %18fs" % ("seek(num=%d)" % (num), cost_time))
def atheros(): """ atheros """ print("="*40) print("atheros") csifile = "../material/atheros/dataset/ath_csi_1.dat" csidata = csiread.Atheros(csifile, Nrxnum=3, Ntxnum=2, pl_size=10, Tones=56) last = time.time() csidata.read() now = time.time() print('-'*40) lmember = [s for s in csidata.__dir__() if s[:2] != "__"] print("Methods: \n", lmember[:1]) print('Time:') print(" read ", now - last, "s") print('-'*40) index = 10 print("%dth packet: " % index) print(" file ", csidata.file) print(" count ", csidata.count) print(" timestamp ", csidata.timestamp[index]) print(" csi_len ", csidata.csi_len[index]) print(" tx_channel ", csidata.tx_channel[index]) print(" err_info ", csidata.err_info[index]) print(" noise_floor ", csidata.noise_floor[index]) print(" Rate ", csidata.Rate[index]) print(" bandWidth ", csidata.bandWidth[index]) print(" num_tones ", csidata.num_tones[index]) print(" nr ", csidata.nr[index]) print(" nc ", csidata.nc[index]) print(" rssi ", csidata.rssi[index]) print(" rssi_1 ", csidata.rssi_1[index]) print(" rssi_2 ", csidata.rssi_2[index]) print(" rssi_3 ", csidata.rssi_3[index]) print(" payload_len ", csidata.payload_len[index]) print(" csi ", csidata.csi[index].shape) print(" payload ", " ".join([hex(per)[2:].zfill(2) for per in csidata.payload[index]])) print('-'*40)
def atheros(csifile, index, Ntxnum=2): """atheros""" print("=" * 40 + "[atheros]") members = [ s for s in dir(csiread.Atheros) if not s.startswith("__") and callable(getattr(csiread.Atheros, s)) ] print("Methods: \n", members) print('Time:') last = default_timer() csidata = csiread.Atheros(csifile, Ntxnum=Ntxnum, pl_size=10, if_report=False) csidata.read() print(" read ", default_timer() - last, "s") print('-' * 40) print("%dth packet: " % index) print(" file ", csidata.file) print(" count ", csidata.count) print(" timestamp ", csidata.timestamp[index]) print(" csi_len ", csidata.csi_len[index]) print(" tx_channel ", csidata.tx_channel[index]) print(" err_info ", csidata.err_info[index]) print(" noise_floor ", csidata.noise_floor[index]) print(" Rate ", csidata.Rate[index]) print(" bandWidth ", csidata.bandWidth[index]) print(" num_tones ", csidata.num_tones[index]) print(" nr ", csidata.nr[index]) print(" nc ", csidata.nc[index]) print(" rssi ", csidata.rssi[index]) print(" rssi_1 ", csidata.rssi_1[index]) print(" rssi_2 ", csidata.rssi_2[index]) print(" rssi_3 ", csidata.rssi_3[index]) print(" payload_len ", csidata.payload_len[index]) print(" csi ", csidata.csi[index].shape) print(" payload ", " ".join([hex(per)[2:].zfill(2) for per in csidata.payload[index]]))
def atheros(csifile, index, ntxnum=2): """atheros""" print("=" * 40 + "[atheros]") members = [ s for s in dir(csiread.Atheros) if not s.startswith("_") and callable(getattr(csiread.Atheros, s)) ] print("Methods: \n ", members) print('Time:') last = default_timer() csidata = csiread.Atheros(csifile, ntxnum=ntxnum, pl_size=10, if_report=False) csidata.read() print(" read ", default_timer() - last, "s") print('-' * 40) csidata.display(index)
phase = np.unwrap(np.angle(csi), axis=1) phase = calib(phase, s_index) plt.subplot(3, 1, 2) plt.plot(s_index, phase[200:300, :, 0, 0].T) # alg_3 # csicopy = csi.copy() # for i in range(100, 200): # csicopy[i] = alg_3(csi, i) # phase = np.unwrap(np.angle(csicopy), axis=1) # phase = calib(phase, s_index) # plt.subplot(3, 1, 3) # plt.plot(s_index, phase[100:200, :, 0, 0].T) plt.show() if __name__ == "__main__": csidata = csiread.Intel("../material/5300/dataset/sample_0x5_64_3000.dat", ntxnum=1, if_report=False) athdata = csiread.Atheros("../material/atheros/dataset/ath_csi_1.dat", if_report=False) csidata.read() csidata.get_scaled_csi(True) athdata.read() fig_2(csidata) fig_4(athdata) fig_6(csidata) # algshow(csidata)
from PyQt5.QtWidgets import QLabel, QMenuBar, QPushButton, QVBoxLayout, QWidget os.environ['QT_SCALE_FACTOR'] = '1' Device = 'Intel' # Intel or Atheros if Device == 'Intel': csidata = csiread.CSI(None, 3, 2) SUBCARRIERS_NUM = 30 BW = 20 NG = 2 YRange_A = 70 YRange_B = 70 YRange_D = 40 elif Device == 'Atheros': csidata = csiread.Atheros(None, 3, 2) SUBCARRIERS_NUM = 56 BW = 20 NG = 1 YRange_A = 300 YRange_B = 300 YRange_D = 200 else: raise ValueError("Device = 'Intel' or 'Atheros'") cache_amptiA = np.zeros([SUBCARRIERS_NUM, 800]) # [subcarriers, packets] cache_amptiB = np.zeros([SUBCARRIERS_NUM, 10, 3]) # [subcarriers, packets, Nrx] cache_phaseC = np.zeros([SUBCARRIERS_NUM, 10, 3]) # [subcarriers, packets, Nrx] cache_cirD = np.zeros([64, 10, 3]) # [time(samples), packets, Nrx]