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');
});