add crc and sequence numbers to packets
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
import BasePanel from './BasePanel';
|
import BasePanel from './BasePanel';
|
||||||
import { byteSize } from '../Humanize';
|
import { byteSize, metricNumber } from '../Humanize';
|
||||||
|
|
||||||
class PacketizationPanel extends BasePanel {
|
class PacketizationPanel extends BasePanel {
|
||||||
constructor() {
|
constructor() {
|
||||||
@@ -38,7 +38,23 @@ class PacketizationPanel extends BasePanel {
|
|||||||
this.addDynamicText('size', 'n/a')
|
this.addDynamicText('size', 'n/a')
|
||||||
this.closeField();
|
this.closeField();
|
||||||
|
|
||||||
this.addCheckboxes('packet-encoding', [
|
this.openField('CRC');
|
||||||
|
this.addDropdown('packet-crc', [
|
||||||
|
{text: 'None', value: 0},
|
||||||
|
{text: 'CRC-8', value: 8},
|
||||||
|
{text: 'CRC-16', value: 16},
|
||||||
|
{text: 'CRC-32', value: 32},
|
||||||
|
], 'packetCrcChange');
|
||||||
|
this.closeField();
|
||||||
|
|
||||||
|
this.openField('Sequence Numbers');
|
||||||
|
this.addText('2^');
|
||||||
|
this.addInputNumber('sequence-power', 0, {min: 0, max: 16, eventName: 'sequenceNumberPowerChange', translation: 'power of 2'});
|
||||||
|
this.addText(' ');
|
||||||
|
this.addDynamicText('sequence-max', 'n/a')
|
||||||
|
this.closeField();
|
||||||
|
|
||||||
|
this.addCheckboxes('packet-options', [
|
||||||
{ text: 'Error Correction', id: 'error-correction', checked: true, eventName: 'errorCorrectionChange' },
|
{ text: 'Error Correction', id: 'error-correction', checked: true, eventName: 'errorCorrectionChange' },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -55,6 +71,11 @@ class PacketizationPanel extends BasePanel {
|
|||||||
this.addEventListener('dataSizePowerChange', this.handleDataSizePowerChange);
|
this.addEventListener('dataSizePowerChange', this.handleDataSizePowerChange);
|
||||||
this.dispatcher.emit('dataSizePowerChange', {value: this.getDataSizePower()});
|
this.dispatcher.emit('dataSizePowerChange', {value: this.getDataSizePower()});
|
||||||
this.dispatcher.emit('dataSizeChange', {value: this.getDataSize()});
|
this.dispatcher.emit('dataSizeChange', {value: this.getDataSize()});
|
||||||
|
|
||||||
|
this.addEventListener('sequenceNumberPowerChange', ({value}) => {
|
||||||
|
this.setValueById('sequence-max', metricNumber(this.getMaxSequenceNumber()))
|
||||||
|
})
|
||||||
|
this.dispatcher.emit('sequenceNumberPowerChange', ({ value: this.getMaxSequenceNumber() }))
|
||||||
};
|
};
|
||||||
|
|
||||||
getSizePower = () => this.getNumberById('size-power');
|
getSizePower = () => this.getNumberById('size-power');
|
||||||
@@ -81,7 +102,20 @@ class PacketizationPanel extends BasePanel {
|
|||||||
setDataSizeCrc = bitLength => this.setValueById('data-size-crc', bitLength)
|
setDataSizeCrc = bitLength => this.setValueById('data-size-crc', bitLength)
|
||||||
|
|
||||||
getDataCrc = () => this.getNumberById('data-crc');
|
getDataCrc = () => this.getNumberById('data-crc');
|
||||||
setDataCrc = bitLength => this.setValueById('data-crc', bitLength)
|
setDataCrc = bitLength => this.setValueById('data-crc', bitLength);
|
||||||
|
|
||||||
|
getPacketCrc = () => this.getNumberById('packet-crc');
|
||||||
|
setPacketCrc = (bitLength) => this.setValueById('packet-crc', bitLength);
|
||||||
|
|
||||||
|
getSequenceNumberPower = () => this.getNumberById('sequence-power');
|
||||||
|
setSequenceNumberPower = (count) => {
|
||||||
|
this.setValueById('sequence-power', count);
|
||||||
|
this.dispatcher.emit('sequenceNumberPowerChange', {value: this.getMaxSequenceNumber()});
|
||||||
|
}
|
||||||
|
getMaxSequenceNumber = () => {
|
||||||
|
const power = this.getSequenceNumberPower();
|
||||||
|
return power === 0 ? Infinity : 2 ** power;
|
||||||
|
}
|
||||||
|
|
||||||
getInterleaving = () => this.getCheckedById('interleaving');
|
getInterleaving = () => this.getCheckedById('interleaving');
|
||||||
setInterleaving = (value) => this.setCheckedById('interleaving', value);
|
setInterleaving = (value) => this.setCheckedById('interleaving', value);
|
||||||
|
|||||||
Reference in New Issue
Block a user