whole_func_string: function crc16(octet_nums) {
          var crc = octet_nums[0];
          for (var b=1; b<octet_nums.length; b++) {
              crc = _updcrc( octet_nums[b], crc );
          }
  
          crc = _updcrc( 0, _updcrc(0, crc) );
  
          //a big-endian 2-byte sequence
          return Zmodem.ENCODELIB.pack_u16_be(crc);
      }
func_code_string: function crc16(octet_nums) {
          var crc = octet_nums[0];
          for (var b=1; b<octet_nums.length; b++) {
              crc = _updcrc( octet_nums[b], crc );
          }
  
          crc = _updcrc( 0, _updcrc(0, crc) );
  
          //a big-endian 2-byte sequence
          return Zmodem.ENCODELIB.pack_u16_be(crc);
      }
func_documentation_string: https://www.lammertbies.nl/comm/info/crc-calculation.html CRC-CCITT (XModem) 
  Deduce a given set of octet values’ CRC16, as per the CRC16
  variant that ZMODEM uses (CRC-CCITT/XModem).
  
  @param {Array} octets - The array of octet values.
  Each array member should be an 8-bit unsigned integer (0-255).
  
  @returns {Array} crc - The CRC, expressed as an array of octet values.