static void blink_callback(struct work_struct *blink_work) { if (bln_led_state) { if (--blink_count == 0) { pr_notice("%s: notification led time out\n", __FUNCTION__); disable_led_notification(); return; } bln_led_off(); } else { bln_led_on(); } }
static void enable_led_notification(void) { if ( ! (!bln_enabled || bln_ongoing || !bln_suspended) ) { if (bln_imp->enable()) { bln_led_on(); bln_ongoing = true; pr_info("%s: success\n", __FUNCTION__); return; } } pr_notice("%s: fail (enabled=%c ongoing=%c suspended=%c\n", __FUNCTION__, bln_enabled, bln_ongoing, bln_suspended); }
static void blink_callback(struct work_struct *blink_work) { mutex_lock(&bln_mutex); if (bln_led_state) { if (--blink_count == 0) { pr_notice("%s: notification led time out\n", __FUNCTION__); disable_led_notification(); goto unlock; } bln_led_off(); } else { bln_led_on(); } unlock: mutex_unlock(&bln_mutex); }
static void bln_blink_stop(void) { if (bln_blink_state) { if (timer_pending(&blink_timer)) del_timer_sync(&blink_timer); if (wake_lock_active(&bln_wake_lock)) wake_unlock(&bln_wake_lock); bln_blink_state = 0; if (bln_ongoing) bln_led_on(); pr_info("%s: complete\n", __FUNCTION__); } else { pr_notice("%s: fail (blink_state=%c)\n", __FUNCTION__, bln_blink_state); } }