diff --git a/src/core/operations/ManchesterDecode.mjs b/src/core/operations/ManchesterDecode.mjs index 9f167562..bfde046a 100644 --- a/src/core/operations/ManchesterDecode.mjs +++ b/src/core/operations/ManchesterDecode.mjs @@ -5,6 +5,7 @@ */ import Operation from "../Operation.mjs"; +import OperationError from "../errors/OperationError.mjs"; /** * Manchester decoding operation @@ -19,10 +20,10 @@ class ManchesterDecode extends Operation { this.name = "Manchester Decode"; this.module = "Encodings"; - this.description = ""; - this.infoURL = ""; - this.inputType = "binaryArray"; - this.outputType = "binaryArray"; + this.description = "Decodes data that has been encoded using the Manchester Encoding (also known as phase encoding). A 01 is converted to 1 and a 10 is converted to 0.

As every bit is encoded into two bits when using this encoding, inputs must be a multiple of 2 long."; + this.infoURL = "https://en.wikipedia.org/wiki/Manchester_code"; + this.inputType = "string"; + this.outputType = "string"; this.args = []; } @@ -32,7 +33,7 @@ class ManchesterDecode extends Operation { * @returns {string} */ run(input, args) { - const result = []; + const decoding = []; if (input.length % 2 != 0){ throw new OperationError(`Length of an input should be a multiple of 2, the input is ${input.length} long.`); @@ -43,16 +44,16 @@ class ManchesterDecode extends Operation { const bit2 = input[i+1]; if (bit1 == 1 && bit2 == 0){ - result.push(0); + decoding.push(0); } else if (bit1 == 0 && bit2 == 1){ - result.push(1); + decoding.push(1); } else { throw new OperationError(`Invalid input.`); } } - - return result; + const output = decoding.join(""); + return output; } } diff --git a/src/core/operations/ManchesterEncode.mjs b/src/core/operations/ManchesterEncode.mjs index 406b235e..55dc62fe 100644 --- a/src/core/operations/ManchesterEncode.mjs +++ b/src/core/operations/ManchesterEncode.mjs @@ -19,10 +19,10 @@ class ManchesterEncode extends Operation { this.name = "Manchester Encode"; this.module = "Encodings"; - this.description = ""; - this.infoURL = ""; - this.inputType = "binaryArray"; - this.outputType = "binaryArray"; + this.description = "Performs the Manchester encoding on the data (also known as phase encoding). A 1 is converted to 01 and a 0 is converted to 10. "; + this.infoURL = "https://en.wikipedia.org/wiki/Manchester_code"; + this.inputType = "string"; + this.outputType = "string"; this.args = []; } @@ -32,22 +32,22 @@ class ManchesterEncode extends Operation { * @returns {string} */ run(input, args) { - const result = []; + const encoding = []; for (let i = 0; i < input.length; i ++){ const bit = input[i]; if (bit == 0){ - result.push(1); - result.push(0); + encoding.push(1); + encoding.push(0); } else { - result.push(0); - result.push(1); + encoding.push(0); + encoding.push(1); } } - - return result; + const output = encoding.join(""); + return output; } }