code: def get_config_string(self):
          
          config_entries = []
  
          # HACK: This is ugly.. but I can't think of an elegant way of doing it.
          config_entries.append(('ADDRESS', '{0}'.format(self.address)))
          config_entries.append(('CONFIGBITS', '{0:x}'.format(self.configbits)))
          config_entries.append(('MASK', '{0:x}'.format(self.address_mask)))
          config_entries.append(('EXP',
                                 ''.join(['Y' if z else 'N' for z in self.emulate_zone])))
          config_entries.append(('REL',
                                 ''.join(['Y' if r else 'N' for r in self.emulate_relay])))
          config_entries.append(('LRR', 'Y' if self.emulate_lrr else 'N'))
          config_entries.append(('DEDUPLICATE', 'Y' if self.deduplicate else 'N'))
          config_entries.append(('MODE', list(PANEL_TYPES)[list(PANEL_TYPES.values()).index(self.mode)]))
          config_entries.append(('COM', 'Y' if self.emulate_com else 'N'))
  
          config_string = '&'.join(['='.join(t) for t in config_entries])
  
          return '&'.join(['='.join(t) for t in config_entries])
docs: Build a configuration string that's compatible with the AlarmDecoder configuration
          command from the current values in the object.
  
          :returns: string