blob: b1a1f059ce74664ab1ad4c36f260d8eb07ac68e4 [file] [log] [blame]
/*
* Copyright (c) 2023 The ChromiumOS Authors
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/device.h>
#include <zephyr/drivers/led.h>
#include <zephyr/kernel.h>
#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);
}
}