var FIELDS = [
  'rtsOpen',
  'rtsShorted',
  'rtsDisconnected',
  'heatsinkTempSensorOpen',
  'heatsinkTempSensorShorted',
  'heatsinkTempLimit',
  'inductorTempSensorOpen',
  'inductorTempSensorShorted',
  'inductorTempLimit',
  'currentLimit',
  'currentMeasurementError',
  'batterySenseOutOfRange',
  'batterySenseDisconnected',
  'uncalibrated',
  'tb5v',
  'fp10SupplyOutOfRange',
  'unused',
  'mosfetOpen',
  'arrayCurrentOffset',
  'loadCurrentOffset',
  'p33SupplyOutOfRange',
  'p12SupplyOutOfRange',
  'hightInputVoltageLimit',
  'controllerReset',
  'loadLvd',
  'logTimeout',
  'eepromAccessFailure'
];

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 alarms';