diff --git a/README.md b/README.md index 72258c9..8c79e06 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ This project has not been prepared to handle proxying in a production-ready rele ### 4G LTE - Connected band +- Carrier Aggregation (Download, Upload, Bands) - Current/Best RSRP - Current/Best SNR - Current/Best RSRQ diff --git a/src/App.css b/src/App.css index 303cbb7..0f1b570 100644 --- a/src/App.css +++ b/src/App.css @@ -79,6 +79,7 @@ dl { margin-top: 0.25rem; } dl dt { + flex-basis: 50%; width: 40%; font-weight: bold; } diff --git a/src/App.js b/src/App.js index c1e6f96..a9f3e0d 100644 --- a/src/App.js +++ b/src/App.js @@ -82,7 +82,17 @@ function App() { const date = new Date(); const primary = {...json['cell_LTE_stats_cfg'][0]['stat']}; const secondary = {...json['cell_5G_stats_cfg'][0]['stat']}; - setData(data => [...data.slice(-24), {date, time: `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}` , lte: primary, nr: secondary}]); + if (primary['RSRPStrengthIndexCurrent'] === 0) { + primary['SNRCurrent'] = null; + primary['RSRPCurrent'] = null; + primary['RSRQCurrent'] = null; + } + if (secondary['RSRPStrengthIndexCurrent'] === 0) { + secondary['SNRCurrent'] = null; + secondary['RSRPCurrent'] = null; + secondary['RSRQCurrent'] = null; + } + setData(data => [...data.slice(-24), {date, time: `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}` , lte: primary, nr: secondary, ca: { ...json['cell_CA_stats_cfg'][0] }}]); }, 2000); return ( @@ -96,9 +106,10 @@ function App() { main={true} band={data.length ? data.slice(-1)[0].lte.Band : 'N/A'} RSRPCurrent={data.length ? data.slice(-1)[0].lte.RSRPCurrent : null} - RSRPBest={data.length ? data.map(plot => plot.lte.RSRPCurrent).reduce((best, val) => val > best ? val : best, -140) : null} + RSRPBest={data.length ? data.map(plot => plot.lte.RSRPCurrent).filter(val => val !== null).reduce((best, val) => val > best ? val : best, -140) : null} SNRCurrent={data.length ? data.slice(-1)[0].lte.SNRCurrent : null} - SNRBest={data.length ? data.map(plot => plot.lte.SNRCurrent).reduce((best, val) => val > best ? val : best, -19.5) : null} + SNRBest={data.length ? data.map(plot => plot.lte.SNRCurrent).filter(val => val !== null).reduce((best, val) => val > best ? val : best, -19.5) : null} + CA={data.length ? data.slice(-1)[0].ca /* "ca":{ "X_ALU_COM_DLCarrierAggregationNumberOfEntries":1, "X_ALU_COM_ULCarrierAggregationNumberOfEntries":0 ,"1":{"PhysicalCellID":49, "ScellBand":"B2", "ScellChannel":675 }} }]} */ : null } /> plot.nr.RSRPCurrent).reduce((best, val) => val > best ? val : best, -140) : null} + RSRPBest={data.length ? data.map(plot => plot.nr.RSRPCurrent).filter(val => val !== null).reduce((best, val) => val > best ? val : best, -140) : null} SNRCurrent={data.length ? data.slice(-1)[0].nr.SNRCurrent : null} - SNRBest={data.length ? data.map(plot => plot.nr.SNRCurrent).reduce((best, val) => val > best ? val : best, -19.5) : null} + SNRBest={data.length ? data.map(plot => plot.nr.SNRCurrent).filter(val => val !== null).reduce((best, val) => val > best ? val : best, -19.5) : null} /> @@ -122,14 +133,14 @@ function App() { title="4G LTE" main={false} RSRQCurrent={data.length ? data.slice(-1)[0].lte.RSRQCurrent : null} - RSRQBest={data.length ? data.map(plot => plot.lte.RSRQCurrent).reduce((best, val) => val > best ? val : best, -19.5) : null} + RSRQBest={data.length ? data.map(plot => plot.lte.RSRQCurrent).filter(val => val !== null).reduce((best, val) => val > best ? val : best, -19.5) : null} /> plot.nr.RSRQCurrent).reduce((best, val) => val > best ? val : best, -19.5) : null} + RSRQBest={data.length ? data.map(plot => plot.nr.RSRQCurrent).filter(val => val !== null).reduce((best, val) => val > best ? val : best, -19.5) : null} /> diff --git a/src/components/card.js b/src/components/card.js index b1f2602..cf0df97 100644 --- a/src/components/card.js +++ b/src/components/card.js @@ -7,7 +7,22 @@ function Card(props) {

{props.title}

{props.main ? ( <> -

Band {props.band}

+

Band {props.band ? props.band : 'N/A'}

+ {props.signal === 'lte' && props.CA ? ( + <> +

Carrier Aggregation

+
+
Download
+
{props.CA.ca.X_ALU_COM_DLCarrierAggregationNumberOfEntries ? `+{props.CA.ca.X_ALU_COM_DLCarrierAggregationNumberOfEntries}` : 'None'}
+
Upload
+
{props.CA.ca.X_ALU_COM_ULCarrierAggregationNumberOfEntries ? `+{props.CA.ca.X_ALU_COM_ULCarrierAggregationNumberOfEntries}` : 'None'}
+ {Object.keys(props.CA.ca).filter(key => props.CA.ca.hasOwnProperty(key) && !isNaN(key)).map(key => <> +
CA Add({key})
+
Band {props.CA.ca[key]['ScellBand']}
+ )} +
+ + ) : props.signal === 'lte' ? 'NO CA' : ''}

RSRP

Current:
@@ -16,7 +31,7 @@ function Card(props) { <> {props.RSRPCurrent} dBm - ) : ''} + ) : 'N/A'}
Best:
@@ -24,7 +39,7 @@ function Card(props) { <> {props.RSRPBest} dBm - ) : ''} + ) : 'N/A'}

SNR

@@ -35,7 +50,7 @@ function Card(props) { <> {props.SNRCurrent} dB - ) : ''} + ) : 'N/A'}
Best:
@@ -43,7 +58,7 @@ function Card(props) { <> {props.SNRBest} dB - ) : ''} + ) : 'N/A'}
@@ -57,7 +72,7 @@ function Card(props) { <> {props.RSRQCurrent} dB - ) : ''} + ) : 'N/A'}
Best:
@@ -65,7 +80,7 @@ function Card(props) { <> {props.RSRQBest} dB - ) : ''} + ) : 'N/A'}