ジョイスティック切換えで色々な処理をやります。 C言語学習用です。
Dependencies: C12832 MMA7660 mbed
src/main.cpp@13:2c1fe87a06cd, 2018-04-04 (annotated)
- Committer:
- INTRA\mitsuru.suzuki
- Date:
- Wed Apr 04 20:58:28 2018 +0900
- Revision:
- 13:2c1fe87a06cd
- Child:
- 14:15447d4751c3
??????????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 1 | #include "mbed.h" |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 2 | #include "C12832.h" |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 3 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 4 | #include "commands.h" |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 5 | #include "ringBuffer.h" |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 6 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 7 | extern COMMAND_TRRIGER commandList[]; |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 8 | extern COMMAND_TRRIGER triggerNull; |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 9 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 10 | BusIn joyStick(p15,p12,p13,p16,p14); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 11 | C12832 lcd(p5, p7, p6, p8, p11); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 12 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 13 | int main() |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 14 | { |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 15 | lcd.cls(); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 16 | lcd.locate(0,3); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 17 | lcd.printf("mbed Switches application"); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 18 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 19 | // デバイスの初期化 |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 20 | for(int index = 0; commandList[index].trigger != nothing; index++) { |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 21 | commandList[index].command->initialize(); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 22 | } |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 23 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 24 | COMMAND_TRRIGER *current = &triggerNull; |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 25 | while(true) { |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 26 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 27 | // 要求の取得 |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 28 | COMMAND_TRRIGER *request = NULL; |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 29 | for(int index = 0; commandList[index].trigger != nothing; index++) { |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 30 | if (joyStick == commandList[index].trigger) { |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 31 | request = &commandList[index]; |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 32 | } |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 33 | } |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 34 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 35 | // 要求があったら |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 36 | if (request != NULL) { |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 37 | bool full = ringbufferPut(request); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 38 | if (full) { |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 39 | printf("full\n"); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 40 | } |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 41 | } |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 42 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 43 | // 要求があって実行中のものと異なる場合 |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 44 | if (request != NULL && request != current) { |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 45 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 46 | // コマンドの終了 |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 47 | current->command->finalize(); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 48 | current = &triggerNull; |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 49 | } |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 50 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 51 | // 何も処理していない場合に |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 52 | if (current->trigger == nothing) { |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 53 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 54 | // 要求があったら |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 55 | if (request != NULL) { |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 56 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 57 | // コマンドを開始 |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 58 | current = request; |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 59 | lcd.locate(0,15); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 60 | lcd.printf(" "); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 61 | lcd.locate(0,15); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 62 | lcd.printf(current->command->name); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 63 | current->command->processInitialize(); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 64 | } |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 65 | } else { |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 66 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 67 | // コマンドの実行 |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 68 | current->command->processRunning(); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 69 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 70 | // コマンドが終わったら |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 71 | if (! current->command->processIsContinue()){ |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 72 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 73 | // コマンドの終了 |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 74 | current->command->finalize(); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 75 | current = &triggerNull; |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 76 | } |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 77 | } |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 78 | } |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 79 | } |