1515#include " openearable_common.h"
1616
1717#include " SDLogger.h"
18+ #include " PowerManager.h"
1819
1920#include < zephyr/logging/log.h>
2021LOG_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
149159int SDCardManager::unmount () {
0 commit comments