#include "BSP.h" #include "BSP_Power.h" #include "Model_Config.h" #include "Pins.h" #include "QC3.h" #include "Settings.h" #include "fusb_user.h" #include "fusbpd.h" #include "int_n.h" #include "policy_engine.h" bool FUSB302_present = false; bool FUSB302_probed = false; void power_check() { #ifdef POW_PD if (FUSB302_present) { PolicyEngine::PPSTimerCallback(); // Cant start QC until either PD works or fails if (PolicyEngine::setupCompleteOrTimedOut() == false) { return; } if (PolicyEngine::pdHasNegotiated()) { return; } } #endif #ifdef POW_QC QC_resync(); #endif } uint8_t usb_pd_detect() { #ifdef POW_PD if (FUSB302_probed) { return FUSB302_present; } else { FUSB302_present = fusb302_detect(); FUSB302_probed = true; } return FUSB302_present; #endif return false; } bool getIsPoweredByDCIN() { // We return false until we are sure we are not using PD if (PolicyEngine::setupCompleteOrTimedOut() == false) { return false; } if (PolicyEngine::pdHasNegotiated()) { return false; // We are using PD } if (hasQCNegotiated()) { return false; // We are using QC } return true; }