/* * @brief sdcard detect callback. * @param present: * @arg present 1-card insert, 0-card remove * @retval none */ void sdcard_detect_callback(uint32_t present) { int ret; uint16_t subtype; FS_CTRL_LOCK(); if (!fs_ctrl.mount_auto) { FS_CTRL_UNLOCK(); return; } if (present) { FS_INFO("card insert\n"); subtype = FS_CTRL_MSG_SDCARD_INSERT; } else { FS_INFO("card remove\n"); subtype = FS_CTRL_MSG_SDCARD_REMOVE; } ret = sys_event_send(CTRL_MSG_TYPE_SDCARD, subtype, 0, 0); if (ret != 0) { FS_ERROR("send fail\n"); } FS_CTRL_UNLOCK(); }
static void fs_ctrl_msg_process(uint32_t event, uint32_t data, void *arg) { int ret; uint16_t msg = FS_CTRL_MSG_NULL; uint32_t param = 0; FS_CTRL_LOCK(); switch (EVENT_SUBTYPE(event)) { case FS_CTRL_MSG_SDCARD_INSERT: if (fs_ctrl_mount(FS_MNT_DEV_TYPE_SDCARD, 0) < 0) { param = FS_MNT_MSG_PARAM(FS_MNT_DEV_TYPE_SDCARD, 0, FS_MNT_STATUS_MOUNT_FAIL); } else { param = FS_MNT_MSG_PARAM(FS_MNT_DEV_TYPE_SDCARD, 0, FS_MNT_STATUS_MOUNT_OK); } msg = FS_CTRL_MSG_FS_MNT; break; case FS_CTRL_MSG_SDCARD_REMOVE: ret = fs_ctrl_unmount(FS_MNT_DEV_TYPE_SDCARD, 0); if (ret == 0) { msg = FS_CTRL_MSG_FS_MNT; param = FS_MNT_MSG_PARAM(FS_MNT_DEV_TYPE_SDCARD, 0, FS_MNT_STATUS_UNMOUNT); } break; default: break; } if (msg != FS_CTRL_MSG_NULL) { ret = sys_event_send(CTRL_MSG_TYPE_FS, msg, param, 0); if (ret != 0) FS_ERROR("send fail\n"); } FS_CTRL_UNLOCK(); }
int sys_send_event(int pid, int event, unsigned int timeout) { return sys_event_send( pid, event, timeout); }