var FIELDS = [
  'overcurrent',
  'fetShort',
  'softwareFault',
  'batteryHvd',
  'arrayHvd',
  'dipSwitchChange',
  'customSettingsEdit',
  'rtsShorted',
  'rtsDisconnected',
  'eepromRetryLimit',
  'controllerWasReset',
  'chargeSlaveControlTimeout',
  'rs232SerialToMeterBridge',
  'batteryLvd',
  'fault14Undefined',
  'powerboardCommunicationFault',
  'fault16Software',
  'fault17Software',
  'fault18Software',
  'fault19Software',
  'fault20Software',
  'fault21Software',
  'fpgaVersion',
  'currentSensorReferenceOutOfRange',
  'ia-refSlaveModeTimeout',
  'blockbusBoot',
  'hscommMaster',
  'hscomm',
  'slave',
];

var flags = parseInt(value.replace(/\\x20/g, ''), 16),
  result = [];

for (var i = 0, f = 1 << 31 >>> 0, l = FIELDS.length; i < l; i++, f >>>= 1) {
    if (flags & f) {
        result.push(FIELDS[i]);
    }
}

return result.length ? result.join('\\n') : 'No faults';