#include "HAL/Power.hpp" #include "ChipObject.h" static tPower *power = NULL; static void initializePower(int32_t *status) { if(power == NULL) { power = tPower::create(status); } } /** * Get the roboRIO input voltage */ float getVinVoltage(int32_t *status) { initializePower(status); return power->readVinVoltage(status) / 4.096f * 0.025733f - 0.029f; } /** * Get the roboRIO input current */ float getVinCurrent(int32_t *status) { initializePower(status); return power->readVinCurrent(status) / 4.096f * 0.017042 - 0.071f; } /** * Get the 6V rail voltage */ float getUserVoltage6V(int32_t *status) { initializePower(status); return power->readUserVoltage6V(status) / 4.096f * 0.007019f - 0.014f; } /** * Get the 6V rail current */ float getUserCurrent6V(int32_t *status) { initializePower(status); return power->readUserCurrent6V(status) / 4.096f * 0.005566f - 0.009f; } /** * Get the active state of the 6V rail */ bool getUserActive6V(int32_t *status) { initializePower(status); return power->readStatus_User6V(status) == 4; } /** * Get the fault count for the 6V rail */ int getUserCurrentFaults6V(int32_t *status) { initializePower(status); return (int)power->readFaultCounts_OverCurrentFaultCount6V(status); } /** * Get the 5V rail voltage */ float getUserVoltage5V(int32_t *status) { initializePower(status); return power->readUserVoltage5V(status) / 4.096f * 0.005962f - 0.013f; } /** * Get the 5V rail current */ float getUserCurrent5V(int32_t *status) { initializePower(status); return power->readUserCurrent5V(status) / 4.096f * 0.001996f - 0.002f; } /** * Get the active state of the 5V rail */ bool getUserActive5V(int32_t *status) { initializePower(status); return power->readStatus_User5V(status) == 4; } /** * Get the fault count for the 5V rail */ int getUserCurrentFaults5V(int32_t *status) { initializePower(status); return (int)power->readFaultCounts_OverCurrentFaultCount5V(status); } unsigned char getUserStatus5V(int32_t *status) { initializePower(status); return power->readStatus_User5V(status); } /** * Get the 3.3V rail voltage */ float getUserVoltage3V3(int32_t *status) { initializePower(status); return power->readUserVoltage3V3(status) / 4.096f * 0.004902f - 0.01f; } /** * Get the 3.3V rail current */ float getUserCurrent3V3(int32_t *status) { initializePower(status); return power->readUserCurrent3V3(status) / 4.096f * 0.002486f - 0.003f; } /** * Get the active state of the 3.3V rail */ bool getUserActive3V3(int32_t *status) { initializePower(status); return power->readStatus_User3V3(status) == 4; } /** * Get the fault count for the 3.3V rail */ int getUserCurrentFaults3V3(int32_t *status) { initializePower(status); return (int)power->readFaultCounts_OverCurrentFaultCount3V3(status); }