diff --git a/pages/index.html b/pages/index.html index 76dea5b..242f9ce 100644 --- a/pages/index.html +++ b/pages/index.html @@ -162,8 +162,7 @@

Sniffer

Slave address Function Data length - From master to slave - From slave to master + Data diff --git a/src/data-field.ts b/src/data-field.ts index 7f8d5fd..4342a0e 100644 --- a/src/data-field.ts +++ b/src/data-field.ts @@ -21,13 +21,13 @@ class AddressQuantity { class Booleans { static readonly bitsInByte: number[] = [0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01]; - readonly onOff: boolean[]; + readonly booleans: boolean[]; constructor(data: number[]) { if (data[0] !== data.length - 1) { throw new Error(`Invalid data format for Booleans!`); } - this.onOff = data.slice(1).flatMap((byte) => Booleans.bitsInByte.map((bit) => !!(bit & byte))); + this.booleans = data.slice(1).flatMap((byte) => Booleans.bitsInByte.map((bit) => !!(bit & byte))); } } diff --git a/src/dom.ts b/src/dom.ts index a2767be..6c1c009 100644 --- a/src/dom.ts +++ b/src/dom.ts @@ -62,13 +62,21 @@ export const insertFrameRow = (frame: Frame, className: '' | 'send' = ''): void `${frame.functionCode} ${getFunctionCodeDescription(frame.functionCode)}`, `${frame.data.length}`, ].map((it) => new TableDataColumn(it, className)); - if (frame.isNoValidDataFormat()) { - [frame.fromMasterToSlaveError, frame.fromSlaveToMasterError] - .forEach((it) => columns.push(new TableDataColumn(`${it} ${getBytesAsHex(frame.data)}`, 'error'))); + + if (frame.isUnknownFrame()) { + columns.push(new TableDataColumn(`Unknown frame: ${getBytesAsHex(frame.data)}`, 'error')); + } else if (frame.isNoValidDataFormat()) { + columns.push(new TableDataColumn(`This frame format does not fit to the function: + fromMasterToSlaveError=${frame.fromMasterToSlaveError} + fromSlaveToMasterError=${frame.fromSlaveToMasterError} + , for: ${getBytesAsHex(frame.data)}`, 'error')); } else { - [frame.fromMasterToSlave, frame.fromSlaveToMaster] - .forEach((it) => columns.push(new TableDataColumn(JSON.stringify(it, undefined, 2)))); + columns.push(new TableDataColumn( + JSON.stringify(frame.fromMasterToSlave) + + JSON.stringify(frame.fromSlaveToMaster) + )); } + insertSniffedRow(columns); }; export const insertErrorRow = (errorMessage: string): void => { @@ -77,7 +85,6 @@ export const insertErrorRow = (errorMessage: string): void => { ``, ``, ``, - ``, errorMessage, ].map((it) => new TableDataColumn(it, 'error'))); }; diff --git a/src/frame.ts b/src/frame.ts index af045cf..884b658 100644 --- a/src/frame.ts +++ b/src/frame.ts @@ -30,6 +30,10 @@ export class Frame { return !!this.fromMasterToSlaveError && !!this.fromSlaveToMasterError; } + isUnknownFrame(): boolean { + return !this.isNoValidDataFormat() && !this.fromMasterToSlave && !this.fromSlaveToMaster; + } + protected getError(e: any): string { return `${e.message}`; } diff --git a/src/main.ts b/src/main.ts index 659b292..6c9682c 100644 --- a/src/main.ts +++ b/src/main.ts @@ -94,7 +94,6 @@ document.querySelector('form[name=send]')!.addEventListener('submit', event => { bytes.push(parseInt(data.substring(i, i + 2), 16)); } const frameBytes = new Uint8Array([formData.slaveAddress, formData.functionCode, ...bytes]); - console.log(formData, frameBytes); insertFrameRow(new Frame(Array.from(frameBytes)), 'send'); });