[問題] notification status問題

看板LinuxDev作者 (早起精神好)時間11年前 (2014/01/25 01:13), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/1
目前剛知道notifier 可以register 當status有變動時可以給註冊者知道 目前想結合backlight開關與usb插著led開啟的關係 我先定義全域變數 int x; static int fb_notifier_callback(struct notifier_block *self, unsigned long event, void *data) { struct fb_event *evdata = data; int *blank; if (evdata && evdata->data ) { if (event == FB_EVENT_BLANK) { blank = evdata->data; { if (*blank == FB_BLANK_POWERDOWN ) x=0; else if (*blank == FB_BLANK_UNBLANK ) x=1; else x=0; } } } return 0; } static void power_supply_update_gen_leds(struct power_supply *psy) { union power_supply_propval online; if (psy->get_property(psy, POWER_SUPPLY_PROP_ONLINE, &online)) return; dev_dbg(psy->dev, "%s %d\n", __func__, online.intval); if (online.intval) { if (x==1) { led_trigger_event(psy->online_trig, LED_FULL); } else if (x==0) { led_trigger_event(psy->online_trig, LED_OFF); } } else led_trigger_event(psy->online_trig, LED_OFF); } 但執行時發現notifier會使x的值改變一次 若backlight亮了則x=1 LED會亮 但backlight關了之後(blank == FB_BLANK_POWERDOWN) 卻不會使LED燈暗掉 想請問我的問題出在哪裡呢 目前是希望根據usb-online和backlight的兩個關係同時決定 LED亮暗關係 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.166.112.50

01/25 11:34, , 1F
建議印些log,先確認LED_OFF LED是否會暗, 再來是
01/25 11:34, 1F

01/25 11:35, , 2F
確認從POWER_SUPPLY_PROP_ONLINE (sysfs) 得到的值是多少
01/25 11:35, 2F
目前印出來的log確認是對的 backlight的亮暗也的確會使x的值改變 目前想請問因為notifier call back的地方需要update led的狀態 應該是這樣問 linux 內有那種每幾秒執行一次的function嗎 若我將online.intval中的條件設為y 然後根據x y 分出四種狀況 每幾秒執行一次這樣可以嗎? ※ 編輯: tanker 來自: 111.81.208.22 (01/27 23:44)

01/28 23:31, , 3F
http://ppt.cc/v3c2 timer routine ?
01/28 23:31, 3F
文章代碼(AID): #1IufyjM_ (LinuxDev)
文章代碼(AID): #1IufyjM_ (LinuxDev)