Program Listing for File BQ27441_Constants.h

Return to documentation for file (components/ESC/src/BQ27441_Constants.h)

#ifndef BQ27441_CONSTANTS_H
#define BQ27441_CONSTANTS_H

#include <cstdint>

namespace esc {

const std::uint8_t FUELGAUGE_ADDRESS = 0x55;

const std::uint16_t UNSEAL_KEY = 0x8000;

const std::uint16_t DEVICE_TYPE_ID = 0x0421;

enum Command {
    CONTROL = 0x00,
    TEMP = 0x02,
    VOLTAGE = 0x04,
    FLAGS = 0x06,
    NOM_CAPACITY = 0x08,
    AVAIL_CAPACITY = 0x0A,
    REM_CAPACITY = 0x0C,
    FULL_CAPACITY = 0x0E,
    AVG_CURRENT = 0x10,
    STDBY_CURRENT = 0x12,
    MAX_CURRENT = 0x14,
    AVG_POWER = 0x18,
    SOC = 0x1C,
    INT_TEMP = 0x1E,
    SOH = 0x20,
    REM_CAP_UNFL = 0x28,
    REM_CAP_FIL = 0x2A,
    FULL_CAP_UNFL = 0x2C,
    FULL_CAP_FIL = 0x2E,
    SOC_UNFL = 0x30
};

enum Control {
    STATUS = 0x00,
    DEVICE_TYPE = 0x01,
    FW_VERSION = 0x02,
    DM_CODE = 0x04,
    PREV_MACWRITE = 0x07,
    CHEM_ID = 0x08,
    BAT_INSERT = 0x0C,
    BAT_REMOVE = 0x0D,
    SET_HIBERNATE = 0x11,
    CLEAR_HIBERNATE = 0x12,
    SET_CFG_UPDATE = 0x13,
    SHUTDOWN_ENABLE = 0x1B,
    SHUTDOWN = 0x1C,
    SEALED = 0x20,
    PULSE_SOC_INT = 0x23,
    RESET = 0x41,
    SOFT_RESET = 0x42,
    EXIT_CFGUPDATE = 0x43,
    EXIT_RESIM = 0x44
};

const std::uint16_t STATUS_SHUTDOWNEN = (1 << 15);
const std::uint16_t STATUS_WDRESET = (1 << 14);
const std::uint16_t STATUS_SS = (1 << 13);
const std::uint16_t STATUS_CALMODE = (1 << 12);
const std::uint16_t STATUS_CCA = (1 << 11);
const std::uint16_t STATUS_BCA = (1 << 10);
const std::uint16_t STATUS_QMAX_UP = (1 << 9);
const std::uint16_t STATUS_RES_UP = (1 << 8);
const std::uint16_t STATUS_INITCOMP = (1 << 7);
const std::uint16_t STATUS_HIBERNATE = (1 << 6);
const std::uint16_t STATUS_SLEEP = (1 << 4);
const std::uint16_t STATUS_LDMD = (1 << 3);
const std::uint16_t STATUS_RUP_DIS = (1 << 2);
const std::uint16_t STATUS_VOK = (1 << 1);

const std::uint16_t FLAG_OT = (1 << 15);
const std::uint16_t FLAG_UT = (1 << 14);
const std::uint16_t FLAG_FC = (1 << 9);
const std::uint16_t FLAG_CHG = (1 << 8);
const std::uint16_t FLAG_OCVTAKEN = (1 << 7);
const std::uint16_t FLAG_ITPOR = (1 << 5);
const std::uint16_t FLAG_CFGUPMODE = (1 << 4);
const std::uint16_t FLAG_BAT_DET = (1 << 3);
const std::uint16_t FLAG_SOC1 = (1 << 2);
const std::uint16_t FLAG_SOCF = (1 << 1);
const std::uint16_t FLAG_DSG = (1 << 0);

const std::uint8_t EXTENDED_OPCONFIG = 0x3A;
const std::uint8_t EXTENDED_CAPACITY = 0x3C;
const std::uint8_t EXTENDED_DATACLASS = 0x3E;
const std::uint8_t EXTENDED_DATABLOCK = 0x3F;
const std::uint8_t EXTENDED_BLOCKDATA = 0x40;
const std::uint8_t EXTENDED_CHECKSUM = 0x60;
const std::uint8_t EXTENDED_CONTROL = 0x61;

const std::uint8_t ID_SAFETY = 2;
const std::uint8_t ID_CHG_TERMINATION = 36;
const std::uint8_t ID_CONFIG_DATA = 48;
const std::uint8_t ID_DISCHARGE = 49;
const std::uint8_t ID_REGISTERS = 64;
const std::uint8_t ID_POWER = 68;
const std::uint8_t ID_IT_CFG = 80;
const std::uint8_t ID_CURRENT_THRESH = 81;
const std::uint8_t ID_STATE = 82;
const std::uint8_t ID_R_A_RAM = 89;
const std::uint8_t ID_CALIB_DATA = 104;
const std::uint8_t ID_CC_CAL = 105;
const std::uint8_t ID_CURRENT = 107;
const std::uint8_t ID_CODES = 112;

const std::uint16_t OPCONFIG_BIE = (1 << 13);
const std::uint16_t OPCONFIG_BI_PU_EN = (1 << 12);
const std::uint16_t OPCONFIG_GPIOPOL = (1 << 11);
const std::uint16_t OPCONFIG_SLEEP = (1 << 5);
const std::uint16_t OPCONFIG_RMFCC = (1 << 4);
const std::uint16_t OPCONFIG_BATLOWEN = (1 << 2);
const std::uint16_t OPCONFIG_TEMPS = (1 << 0);

} // namespace esc

#endif // BQ27441_CONSTANTS_H