static void rfkill_check(gpointer key, gpointer value, gpointer user_data) { struct connman_rfkill *rfkill = value; enum connman_service_type type = GPOINTER_TO_INT(user_data); /* Calling _technology_rfkill_add will update the tech. */ if (rfkill->type == type) __connman_technology_add_rfkill(rfkill->index, type, rfkill->softblock, rfkill->hardblock); }
static GIOStatus rfkill_process(GIOChannel *chan) { unsigned char buf[32]; struct rfkill_event *event = (void *) buf; enum connman_service_type type; gsize len; GIOStatus status; DBG(""); memset(buf, 0, sizeof(buf)); status = g_io_channel_read_chars(chan, (gchar *) buf, sizeof(struct rfkill_event), &len, NULL); if (status != G_IO_STATUS_NORMAL) return status; if (len != sizeof(struct rfkill_event)) return status; DBG("idx %u type %u op %u soft %u hard %u", event->idx, event->type, event->op, event->soft, event->hard); type = convert_type(event->type); switch (event->op) { case RFKILL_OP_ADD: __connman_technology_add_rfkill(event->idx, type, event->soft, event->hard); break; case RFKILL_OP_DEL: __connman_technology_remove_rfkill(event->idx, type); break; case RFKILL_OP_CHANGE: __connman_technology_update_rfkill(event->idx, type, event->soft, event->hard); break; default: break; } return status; }