/* * Copyright (c) 2023 The ChromiumOS Authors * * SPDX-License-Identifier: Apache-2.0 */ #include #include #include #include "meas.h" enum led_color_t { LED_RED, LED_GREEN, LED_BLUE, }; static void set_led(const struct device *const led, enum led_color_t led_color) { if (led_color != LED_RED) { led_off(led, LED_RED); } if (led_color != LED_GREEN) { led_off(led, LED_GREEN); } if (led_color != LED_BLUE) { led_off(led, LED_BLUE); } led_on(led, led_color); } #define CHARGING_VOLTAGE 5000 #define CHARGING_CURRENT 1000 int main(void) { meas_init(); const struct device *const led = DEVICE_DT_GET_ONE(gpio_leds); int32_t vbus_v = 0; int32_t vbus_c = 0; if (!device_is_ready(led)) { return 0; } while (1) { meas_vbus_v(&vbus_v); meas_vbus_c(&vbus_c); if (vbus_v > CHARGING_VOLTAGE) { if (vbus_c > CHARGING_CURRENT) { set_led(led, LED_GREEN); } else { set_led(led, LED_BLUE); } } else { set_led(led, LED_RED); } k_usleep(500); } }