| 46 | } |
| 47 | |
| 48 | static void receive(const msg_t *const msg, UNUSED const void* userdata) { |
| 49 | switch (MSG_TYPE()) { |
| 50 | case FD_UPD: { |
| 51 | /* We are reading a message delayed of conf.resumedelay */ |
| 52 | message_t *suspend_msg = (message_t *)msg->fd_msg->userptr; |
| 53 | read_timer(delayed_resume_fd); |
| 54 | M_PUB(suspend_msg); |
| 55 | m_deregister_fd(delayed_resume_fd); |
| 56 | break; |
| 57 | } |
| 58 | case INHIBIT_UPD: { |
| 59 | if (conf.inh_conf.inhibit_pm) { |
| 60 | DECLARE_HEAP_MSG(pm_req, PM_REQ); |
| 61 | pm_req->pm.old = !state.inhibited; |
| 62 | pm_req->pm.new = state.inhibited; |
| 63 | M_PUB(pm_req); |
| 64 | } |
| 65 | break; |
| 66 | } |
| 67 | case PM_REQ: { |
| 68 | pm_upd *up = (pm_upd *)MSG_DATA(); |
| 69 | if (VALIDATE_REQ(up)) { |
| 70 | on_pm_req(up->new); |
| 71 | } |
| 72 | break; |
| 73 | } |
| 74 | case SYSTEM_UPD: |
| 75 | /* Release any PowerManagement inhibition upon leaving as we're not PM manager */ |
| 76 | if (msg->ps_msg->type == LOOP_STOPPED && pm_inh_token != -1) { |
| 77 | on_pm_req(false); |
| 78 | } |
| 79 | break; |
| 80 | case SUSPEND_REQ: { |
| 81 | suspend_upd *up = (suspend_upd *)MSG_DATA(); |
| 82 | // VALIDATE_REQ is called inside |
| 83 | on_suspend_req(up); |
| 84 | break; |
| 85 | } |
| 86 | default: |
| 87 | break; |
| 88 | } |
| 89 | } |
| 90 | |
| 91 | static void destroy(void) { |
| 92 | /* Destroy this match slot */ |
nothing calls this directly
no test coverage detected