26float targetOTGVoltage = 0.0;
39 _registerMap[bq25713::MANUFACTURER_ID_ADDR] = std::make_unique<ManufacturerId>();
40 _registerMap[bq25713::DEVICE_ID_ADDR] = std::make_unique<DeviceId>();
43 _registerMap[bq25713::CHARGE_OPTION_0_ADDR] = std::make_unique<Register>();
44 _registerMap[bq25713::CHARGE_OPTION_1_ADDR] = std::make_unique<Register>();
45 _registerMap[bq25713::CHARGE_OPTION_2_ADDR] = std::make_unique<Register>();
46 _registerMap[bq25713::CHARGE_OPTION_3_ADDR] = std::make_unique<Register>();
48 _registerMap[bq25713::ADC_OPTION_ADDR] = std::make_unique<AdcOption_Register>();
49 _registerMap[bq25713::PROCHOT_STATUS_ADDR] = std::make_unique<Register>();
51 _registerMap[bq25713::PROCHOT_OPTION_0_ADDR] = std::make_unique<Register>();
52 _registerMap[bq25713::PROCHOT_OPTION_1_ADDR] = std::make_unique<Register>();
55 _registerMap[bq25713::CHARGE_STATUS_ADDR] = std::make_unique<ChargerStatus_Register>();
57 _registerMap[bq25713::VBAT_ADC_ADDR] = std::make_unique<VBAT_ADC_Register>();
58 _registerMap[bq25713::CHARGE_CURRENT_ADDR] = std::make_unique<Register>();
59 _registerMap[bq25713::MAX_CHARGE_VOLTAGE_ADDR] = std::make_unique<Register>();
60 _registerMap[bq25713::MINIMUM_SYSTEM_VOLTAGE_ADDR] = std::make_unique<Register>();
61 _registerMap[bq25713::OTG_VOLTAGE_ADDR] = std::make_unique<OTG_Register>();
62 _registerMap[bq25713::OTG_CURRENT_ADDR] = std::make_unique<Register>();
63 _registerMap[bq25713::INPUT_VOLTAGE_ADDR] = std::make_unique<Register>();
64 _registerMap[bq25713::IIN_HOST_ADDR] = std::make_unique<Register>();
65 _registerMap[bq25713::IIN_DPM_ADDR] = std::make_unique<Register>();
67 _registerMap[bq25713::ADC_VBUS_PSYS_ADC_ADDR] = std::make_unique<AdcVbusPsys_Register>();
68 _registerMap[bq25713::ADC_IBAT_ADDR] = std::make_unique<Register>();
69 _registerMap[bq25713::CMPIN_ADC_ADDR] = std::make_unique<Register>();
72 void run_electrical_update()
override
77 const uint16_t chargeOption3 = _registerMap[bq25713::CHARGE_OPTION_3_ADDR]->read();
80 const uint8_t val0 = chargeOption3 & 0xff;
81 const uint8_t val1 = (chargeOption3 >> 8) & 0xff;
83 if ((val1 & (1 << 0x04)) != 0 && __private::enableOTG.is_high())
85 mock_electrical::chargeOtgOutput = targetOTGVoltage;
89 mock_electrical::chargeOtgOutput = 0;
94 uint8_t get_i2c_address()
const override {
return bq25713::BQ25713::BQ25713addr; }
106 (::lampda::lmpd_constrain<uint16_t>(val, reg->minVal(), reg->maxVal()) - reg->minVal()) / reg->resolution();
108 uint16_t valR = (valC & reg->mask()) << reg->offset();
115 res >>= reg->offset();
118 return res * reg->resolution() + reg->minVal();
121 static uint16_t encode_to_double_register(
const uint16_t val0,
126 uint8_t val0R = (std::max<uint16_t>(val0, reg->minVal0()) - reg->minVal0()) / reg->resolutionVal0();
127 uint8_t val1R = (std::max<uint16_t>(val1, reg->minVal1()) - reg->minVal1()) / reg->resolutionVal1();
129 uint16_t result = (val1R & reg->maskVal1()) << 8 | (val0R & reg->maskVal0());
133 struct ChargerStatus_Register :
public Register
135 uint16_t read()
override
144 return val1 << 8 | val0;
148 struct AdcOption_Register :
public Register
150 uint16_t read()
override
157 return val1 << 8 | val0;
161 struct OTG_Register :
public Register
163 int write(uint16_t data)
override
165 const uint16_t decoded = decode_base_register_value(data, &IcRegisters.oTGVoltage);
168 targetOTGVoltage = (decoded + (IcRegisters.chargeOption3.OTG_RANGE_LOW() ? 0 : 1280) + 154) / 1000.0;
175 struct AdcVbusPsys_Register :
public Register
177 uint16_t read()
override
179 return encode_to_double_register(
180 mock_battery::voltage * 1000.0, mock_electrical::powerRailVoltage * 1000.0, &IcRegisters.aDCVBUSPSYS);
185 struct VBAT_ADC_Register :
public Register
187 uint16_t read()
override
189 return encode_to_double_register(
190 mock_battery::voltage * 1000.0, mock_battery::voltage * 1000.0, &IcRegisters.aDCVSYSVBAT);
194 struct ManufacturerId :
public Register
196 uint16_t read()
override {
return bq25713::MANUFACTURER_ID; }
201 uint16_t read()
override {
return bq25713::DEVICE_ID; }
Definition: BQ25713_mock.h:32
Interface for the platform specific GeneralPurposeInputOutputs.
Handle the physical simulation paremeters of a real lamp.
Electrical simulation interface with the electrical simulator.
Simulator dedicated namespace.
Definition: default_simulation.h:8
Definition: BQ25713.h:121
Definition: BQ25713.h:195
Definition: BQ25713.h:242