code: def calc_crc(self, data, crc=0):
          '''
          Calculate the Cyclic Redundancy Check for a given block of data, can
          also be used to update a CRC.
  
              >>> crc = modem.calc_crc('hello')
              >>> crc = modem.calc_crc('world', crc)
              >>> hex(crc)
              '0xd5e3'
  
          '''
          for char in data:
              crc = (crc << 8) ^ self.crctable[((crc >> 8) ^ ord(char)) & 0xff]
          return crc & 0xffff calc_crc(self, data, crc=0):
          '''
          Calculate the Cyclic Redundancy Check for a given block of data, can
          also be used to update a CRC.
  
              >>> crc = modem.calc_crc('hello')
              >>> crc = modem.calc_crc('world', crc)
              >>> hex(crc)
              '0xd5e3'
  
          '''
          for char in data:
              crc = (crc << 8) ^ self.crctable[((crc >> 8) ^ ord(char)) & 0xff]
          return crc & 0xffff
docs: Calculate the Cyclic Redundancy Check for a given block of data, can
          also be used to update a CRC.
  
              >>> crc = modem.calc_crc('hello')
              >>> crc = modem.calc_crc('world', crc)
              >>> hex(crc)
              '0xd5e3'