Skip to content

Commit 455db50

Browse files
authored
Merge pull request #10 from vertexodessa/master
SNR support
2 parents d8af8c5 + 73e264b commit 455db50

File tree

2 files changed

+64
-2
lines changed

2 files changed

+64
-2
lines changed

src/FrameParser.cpp

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,65 @@
66

77
#include "basic_types.h"
88
#include "rtl8812a_recv.h"
9+
10+
#include <string.h>
911
#include <vector>
1012

13+
struct _phy_status_rpt_8812 {
14+
/* DWORD 0*/
15+
u8 gain_trsw[2]; /*path-A and path-B {TRSW, gain[6:0] }*/
16+
u8 chl_num_LSB; /*channel number[7:0]*/
17+
u8 chl_num_MSB : 2; /*channel number[9:8]*/
18+
u8 sub_chnl : 4; /*sub-channel location[3:0]*/
19+
u8 r_RFMOD : 2; /*RF mode[1:0]*/
20+
21+
/* DWORD 1*/
22+
u8 pwdb_all; /*CCK signal quality / OFDM pwdb all*/
23+
s8 cfosho[2]; /*DW1 byte 1 DW1 byte2 CCK AGC report and CCK_BB_Power /
24+
OFDM path-A and path-B short CFO*/
25+
/*this should be checked again because the definition of 8812 and 8814
26+
* is different*/
27+
/* u8 r_cck_rx_enable_pathc:2; cck rx enable pathc[1:0]*/
28+
/* u8 cck_rx_path:4; cck rx path[3:0]*/
29+
u8 resvd_0 : 6;
30+
u8 bt_RF_ch_MSB : 2; /*8812A:2'b0 8814A: bt rf channel keep[7:6]*/
31+
u8 ant_div_sw_a : 1; /*8812A: ant_div_sw_a 8814A: 1'b0*/
32+
u8 ant_div_sw_b : 1; /*8812A: ant_div_sw_b 8814A: 1'b0*/
33+
u8 bt_RF_ch_LSB : 6; /*8812A: 6'b0 8814A: bt rf
34+
channel keep[5:0]*/
35+
s8 cfotail[2]; /*DW2 byte 1 DW2 byte 2 path-A and path-B CFO tail*/
36+
u8 PCTS_MSK_RPT_0; /*PCTS mask report[7:0]*/
37+
u8 PCTS_MSK_RPT_1; /*PCTS mask report[15:8]*/
38+
39+
/* DWORD 3*/
40+
s8 rxevm[2]; /*DW3 byte 1 DW3 byte 2 stream 1 and stream 2 RX EVM*/
41+
s8 rxsnr[2]; /*DW3 byte 3 DW4 byte 0 path-A and path-B RX SNR*/
42+
43+
/* DWORD 4*/
44+
u8 PCTS_MSK_RPT_2; /*PCTS mask report[23:16]*/
45+
u8 PCTS_MSK_RPT_3 : 6; /*PCTS mask report[29:24]*/
46+
u8 pcts_rpt_valid : 1; /*pcts_rpt_valid*/
47+
u8 resvd_1 : 1; /*1'b0*/
48+
s8 rxevm_cd[2]; /*DW 4 byte 3 DW5 byte 0 8812A: 16'b0 8814A: stream 3
49+
and stream 4 RX EVM*/
50+
51+
/* DWORD 5*/
52+
u8 csi_current[2]; /*DW5 byte 1 DW5 byte 2 8812A: stream 1 and 2 CSI
53+
8814A: path-C and path-D RX SNR*/
54+
u8 gain_trsw_cd[2]; /*DW5 byte 3 DW6 byte 0 path-C and path-D {TRSW,
55+
gain[6:0] }*/
56+
57+
/* DWORD 6*/
58+
s8 sigevm; /*signal field EVM*/
59+
u8 antidx_antc : 3; /*8812A: 3'b0 8814A: antidx_antc[2:0]*/
60+
u8 antidx_antd : 3; /*8812A: 3'b0 8814A: antidx_antd[2:0]*/
61+
u8 dpdt_ctrl_keep : 1; /*8812A: 1'b0 8814A: dpdt_ctrl_keep*/
62+
u8 GNT_BT_keep : 1; /*8812A: 1'b0 8814A: GNT_BT_keep*/
63+
u8 antidx_anta : 3; /*antidx_anta[2:0]*/
64+
u8 antidx_antb : 3; /*antidx_antb[2:0]*/
65+
u8 hw_antsw_occur : 2; /*1'b0*/
66+
};
67+
1168
FrameParser::FrameParser(Logger_t logger) : _logger{logger} {}
1269

1370
static rx_pkt_attrib rtl8812_query_rx_desc_status(uint8_t *pdesc) {
@@ -119,8 +176,12 @@ std::vector<Packet> FrameParser::recvbuf2recvframe(std::span<uint8_t> ptr) {
119176
pattrib.drvinfo_sz + RXDESC_SIZE,
120177
pattrib.pkt_len)});
121178

122-
ret.back().RxAtrib.rssi[0] = pbuf[RXDESC_SIZE];
123-
ret.back().RxAtrib.rssi[1] = pbuf[RXDESC_SIZE + 1];
179+
struct _phy_status_rpt_8812 driver_data;
180+
memcpy(static_cast<void*>(&driver_data), pbuf.data() + RXDESC_SIZE, sizeof(driver_data));
181+
ret.back().RxAtrib.rssi[0] = driver_data.gain_trsw[0];
182+
ret.back().RxAtrib.rssi[1] = driver_data.gain_trsw[1];
183+
ret.back().RxAtrib.snr[0] = driver_data.rxsnr[0];
184+
ret.back().RxAtrib.snr[1] = driver_data.rxsnr[1];
124185
} else {
125186
/* pkt_rpt_type == TX_REPORT1-CCX, TX_REPORT2-TX RTP,HIS_REPORT-USB HISR
126187
* RTP */

src/FrameParser.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,7 @@ struct rx_pkt_attrib
291291
uint8_t ldpc;
292292
uint8_t sgi;
293293
uint8_t rssi[2];
294+
int8_t snr[2];
294295
RX_PACKET_TYPE pkt_rpt_type;
295296
};
296297

0 commit comments

Comments
 (0)