Skip to content

Commit ee84ae2

Browse files
committed
modules: power: Add events for VBUS detected
Add events for VBUS detection. Will be used to disable/enable UART. Signed-off-by: Simen S. Røstad <simen.rostad@nordicsemi.no>
1 parent de53c92 commit ee84ae2

File tree

4 files changed

+51
-13
lines changed

4 files changed

+51
-13
lines changed

app/src/main.c

+4-4
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@
2626
#include "environmental.h"
2727
#endif /* CONFIG_APP_ENVIRONMENTAL */
2828

29-
#if defined(CONFIG_APP_BATTERY)
29+
#if defined(CONFIG_APP_POWER)
3030
#include "power.h"
31-
#endif /* CONFIG_APP_BATTERY */
31+
#endif /* CONFIG_APP_POWER */
3232

3333
/* Register log module */
3434
LOG_MODULE_REGISTER(app, CONFIG_APP_LOG_LEVEL);
@@ -238,7 +238,7 @@ static void sensor_and_poll_triggers_send(void)
238238
}
239239
#endif /* CONFIG_APP_REQUEST_NETWORK_QUALITY */
240240

241-
#if defined(CONFIG_APP_BATTERY)
241+
#if defined(CONFIG_APP_POWER)
242242
struct power_msg power_msg = {
243243
.type = POWER_BATTERY_PERCENTAGE_SAMPLE_REQUEST,
244244
};
@@ -249,7 +249,7 @@ static void sensor_and_poll_triggers_send(void)
249249
SEND_FATAL_ERROR();
250250
return;
251251
}
252-
#endif /* CONFIG_APP_BATTERY */
252+
#endif /* CONFIG_APP_POWER */
253253

254254
#if defined(CONFIG_APP_ENVIRONMENTAL)
255255
struct environmental_msg environmental_msg = {

app/src/modules/cloud/cloud_module.c

+8-8
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
#include "message_channel.h"
2323
#include "network.h"
2424

25-
#if defined(CONFIG_APP_BATTERY)
25+
#if defined(CONFIG_APP_POWER)
2626
#include "power.h"
27-
#endif /* CONFIG_APP_BATTERY */
27+
#endif /* CONFIG_APP_POWER */
2828

2929
#if defined(CONFIG_APP_ENVIRONMENTAL)
3030
#include "environmental.h"
@@ -36,11 +36,11 @@ LOG_MODULE_REGISTER(cloud, CONFIG_APP_CLOUD_LOG_LEVEL);
3636
#define CUSTOM_JSON_APPID_VAL_CONEVAL "CONEVAL"
3737
#define CUSTOM_JSON_APPID_VAL_BATTERY "BATTERY"
3838

39-
#if defined(CONFIG_APP_BATTERY)
39+
#if defined(CONFIG_APP_POWER)
4040
#define BAT_MSG_SIZE sizeof(struct power_msg)
4141
#else
4242
#define BAT_MSG_SIZE 0
43-
#endif /* CONFIG_APP_BATTERY */
43+
#endif /* CONFIG_APP_POWER */
4444

4545
#if defined(CONFIG_APP_ENVIRONMENTAL)
4646
#define ENV_MSG_SIZE sizeof(struct environmental_msg)
@@ -68,9 +68,9 @@ ZBUS_CHAN_ADD_OBS(CLOUD_CHAN, cloud, 0);
6868
ZBUS_CHAN_ADD_OBS(ENVIRONMENTAL_CHAN, cloud, 0);
6969
#endif /* CONFIG_APP_ENVIRONMENTAL */
7070

71-
#if defined(CONFIG_APP_BATTERY)
71+
#if defined(CONFIG_APP_POWER)
7272
ZBUS_CHAN_ADD_OBS(POWER_CHAN, cloud, 0);
73-
#endif /* CONFIG_APP_BATTERY */
73+
#endif /* CONFIG_APP_POWER */
7474

7575
/* Define channels provided by this module */
7676

@@ -567,7 +567,7 @@ static void state_connected_ready_run(void *o)
567567
}
568568
}
569569

570-
#if defined(CONFIG_APP_BATTERY)
570+
#if defined(CONFIG_APP_POWER)
571571
if (state_object->chan == &POWER_CHAN) {
572572
struct power_msg msg = MSG_TO_POWER_MSG(state_object->msg_buf);
573573

@@ -588,7 +588,7 @@ static void state_connected_ready_run(void *o)
588588
return;
589589
}
590590
}
591-
#endif /* CONFIG_APP_BATTERY */
591+
#endif /* CONFIG_APP_POWER */
592592

593593
#if defined(CONFIG_APP_ENVIRONMENTAL)
594594
if (state_object->chan == &ENVIRONMENTAL_CHAN) {

app/src/modules/power/power.c

+38
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <zephyr/logging/log.h>
99
#include <zephyr/zbus/zbus.h>
1010
#include <zephyr/drivers/sensor/npm1300_charger.h>
11+
#include <zephyr/drivers/mfd/npm1300.h>
1112
#include <zephyr/sys/util.h>
1213
#include <nrf_fuel_gauge.h>
1314
#include <date_time.h>
@@ -54,8 +55,10 @@ BUILD_ASSERT(CONFIG_APP_POWER_WATCHDOG_TIMEOUT_SECONDS >
5455
#define NPM1300_CHG_STATUS_CV_MASK BIT(4)
5556

5657
static const struct device *charger = DEVICE_DT_GET(DT_NODELABEL(npm1300_charger));
58+
static const struct device *pmic = DEVICE_DT_GET(DT_NODELABEL(pmic_main));
5759

5860
/* Forward declarations */
61+
static int subscribe_to_vsbus_events(const struct device *pmic, struct gpio_callback *event_cb);
5962
static int charger_read_sensors(float *voltage, float *current, float *temp, int32_t *chg_status);
6063
static void sample(int64_t *ref_time);
6164

@@ -107,13 +110,21 @@ static void state_running_entry(void *o)
107110
};
108111
int32_t chg_status;
109112
struct power_state *state_object = o;
113+
static struct gpio_callback event_cb;
110114

111115
if (!device_is_ready(charger)) {
112116
LOG_ERR("Charger device not ready.");
113117
SEND_FATAL_ERROR();
114118
return;
115119
}
116120

121+
err = subscribe_to_vsbus_events(pmic, &event_cb);
122+
if (err) {
123+
LOG_ERR("subscribe_to_vsbus_events, error: %d", err);
124+
SEND_FATAL_ERROR();
125+
return;
126+
}
127+
117128
err = charger_read_sensors(&parameters.v0, &parameters.i0, &parameters.t0, &chg_status);
118129
if (err < 0) {
119130
LOG_ERR("charger_read_sensors, error: %d", err);
@@ -154,6 +165,33 @@ static void state_running_run(void *o)
154165

155166
/* End of state handling */
156167

168+
static void event_callback(const struct device *dev, struct gpio_callback *cb, uint32_t pins)
169+
{
170+
if (pins & BIT(NPM1300_EVENT_VBUS_DETECTED)) {
171+
LOG_WRN("Vbus detected");
172+
}
173+
174+
if (pins & BIT(NPM1300_EVENT_VBUS_REMOVED)) {
175+
LOG_WRN("Vbus removed");
176+
}
177+
}
178+
179+
static int subscribe_to_vsbus_events(const struct device *pmic, struct gpio_callback *event_cb)
180+
{
181+
int err;
182+
183+
gpio_init_callback(event_cb, event_callback, BIT(NPM1300_EVENT_VBUS_DETECTED) |
184+
BIT(NPM1300_EVENT_VBUS_REMOVED));
185+
186+
err = mfd_npm1300_add_callback(pmic, event_cb);
187+
if (err) {
188+
LOG_ERR("mfd_npm1300_add_callback, error: %d", err);
189+
return err;
190+
}
191+
192+
return 0;
193+
}
194+
157195
static int charger_read_sensors(float *voltage, float *current, float *temp, int32_t *chg_status)
158196
{
159197
struct sensor_value value;

tests/module/main/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ target_compile_definitions(app PRIVATE
6060
-DCONFIG_LTE_LC_PSM_MODULE=1
6161
-DCONFIG_APP_MODULE_RECV_BUFFER_SIZE=1024
6262
-DCOAP_CONTENT_FORMAT_APP_JSON=50
63-
-DCONFIG_APP_BATTERY=1
63+
-DCONFIG_APP_POWER=1
6464
-DCONFIG_APP_ENVIRONMENTAL=1
6565
-DZEPHYR_INCLUDE_SYS_REBOOT_H_
6666
-DCONFIG_APP_REQUEST_NETWORK_QUALITY=1

0 commit comments

Comments
 (0)