2 * @file task_userinput.c
3 * @author Shinichiro Nakamura
4 * @brief ユーザインプットタスクの実装(task_userinput)
6 * ユーザインプットタスクは4系統のユーザ入力の変化を観察するタスク。
7 * 変化があればデータキューを介してメニュータスクに通知を行う。
14 #include "kernel_cfg.h"
15 #include "task_userinput.h"
16 #include "task_menu.h"
19 void task_userinput(intptr_t exinf)
21 uint16_t initdone = 0;
22 uint16_t s0prev = 0, s1prev = 0, s2prev = 0, s3prev = 0;
23 uint16_t v0prev = 0, v1prev = 0, v2prev = 0, v3prev = 0;
30 uint16_t s0curr = hid_swread(0);
31 uint16_t s1curr = hid_swread(1);
32 uint16_t s2curr = hid_swread(2);
33 uint16_t s3curr = hid_swread(3);
34 uint16_t v0curr = (uint16_t)(hid_volread(0) >> 2);
35 uint16_t v1curr = (uint16_t)(hid_volread(1) >> 2);
36 uint16_t v2curr = (uint16_t)(hid_volread(2) >> 2);
37 uint16_t v3curr = (uint16_t)(hid_volread(3) >> 2);
42 if ((s0prev != s0curr) || (!initdone)) {
44 TSKAPI_MENU_USERMSG(DEVICE_SW0, 1);
46 TSKAPI_MENU_USERMSG(DEVICE_SW0, 0);
49 if ((s1prev != s1curr) || (!initdone)) {
51 TSKAPI_MENU_USERMSG(DEVICE_SW1, 1);
53 TSKAPI_MENU_USERMSG(DEVICE_SW1, 0);
56 if ((s2prev != s2curr) || (!initdone)) {
58 TSKAPI_MENU_USERMSG(DEVICE_SW2, 1);
60 TSKAPI_MENU_USERMSG(DEVICE_SW2, 0);
63 if ((s3prev != s3curr) || (!initdone)) {
65 TSKAPI_MENU_USERMSG(DEVICE_SW3, 1);
67 TSKAPI_MENU_USERMSG(DEVICE_SW3, 0);
70 if ((v0prev != v0curr) || (!initdone)) {
71 TSKAPI_MENU_USERMSG(DEVICE_VOL0, v0curr);
73 if ((v1prev != v1curr) || (!initdone)) {
74 TSKAPI_MENU_USERMSG(DEVICE_VOL1, v1curr);
76 if ((v2prev != v2curr) || (!initdone)) {
77 TSKAPI_MENU_USERMSG(DEVICE_VOL2, v2curr);
79 if ((v3prev != v3curr) || (!initdone)) {
80 TSKAPI_MENU_USERMSG(DEVICE_VOL3, v3curr);