Skip to content

Commit 35f421f

Browse files
mkuettner97actions-user
authored andcommitted
fix autoresetting on sd card insertion
1 parent 9bf9334 commit 35f421f

2 files changed

Lines changed: 15 additions & 3 deletions

File tree

src/SD_Card/SD_Card_Manager/SD_Card_Manager.cpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "openearable_common.h"
1616

1717
#include "SDLogger.h"
18+
#include "PowerManager.h"
1819

1920
#include <zephyr/logging/log.h>
2021
LOG_MODULE_REGISTER(SDCardManager, LOG_LEVEL_DBG);
@@ -56,7 +57,10 @@ void SDCardManager::unmount_work_handler(struct k_work *work) {
5657
sdcard_manager.aquire_ls();
5758
} else {
5859
// sd inserted --> reboot
59-
sys_reboot(SYS_REBOOT_COLD);
60+
//sys_reboot(SYS_REBOOT_COLD);
61+
62+
LOG_INF("SD Card mounted. Rebooting ...");
63+
power_manager.reboot();
6064
}
6165
}
6266

@@ -112,6 +116,9 @@ int SDCardManager::aquire_ls() {
112116

113117
ls_aquired = true;
114118

119+
ret = gpio_add_callback(sd_state_pin.port, &sd_state_cb);
120+
if (ret) LOG_ERR("Failed to add callback");
121+
115122
return 0;
116123
}
117124

@@ -120,6 +127,9 @@ int SDCardManager::release_ls() {
120127

121128
if (!ls_aquired) return -EALREADY;
122129

130+
ret = gpio_remove_callback(sd_state_pin.port, &sd_state_cb);
131+
if (ret) LOG_ERR("Failed to remove callback");
132+
123133
ret = pm_device_runtime_put(ls_1_8);
124134
ret = pm_device_runtime_put(ls_3_3);
125135
ret = pm_device_runtime_put(ls_sd);
@@ -141,9 +151,9 @@ void SDCardManager::init() {
141151
gpio_pin_interrupt_configure_dt(&sd_state_pin, GPIO_INT_EDGE_BOTH);
142152

143153
gpio_init_callback(&sd_state_cb, sd_card_state_change_isr, sd_state_cb.pin_mask | BIT(sd_state_pin.pin));
144-
ret = gpio_add_callback(sd_state_pin.port, &sd_state_cb);
145154

146-
if (ret) LOG_ERR("Failed to add callback");
155+
//ret = gpio_add_callback(sd_state_pin.port, &sd_state_cb);
156+
//if (ret) LOG_ERR("Failed to add callback");
147157
}
148158

149159
int SDCardManager::unmount() {

src/SD_Card/SD_Card_Manager/SD_Card_Manager.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,8 @@ class SDCardManager {
195195

196196
bool sd_inserted();
197197

198+
bool _insertion_state = false;
199+
198200
};
199201

200202
extern SDCardManager sdcard_manager;

0 commit comments

Comments
 (0)