
ジョイスティック切換えで色々な処理をやります。 C言語学習用です。
Dependencies: C12832 MMA7660 mbed
src/main.cpp@19:caab1538fa62, 2018-04-18 (annotated)
- Committer:
- suzukimitsuru
- Date:
- Wed Apr 18 11:14:40 2018 +0000
- Revision:
- 19:caab1538fa62
- Parent:
- 15:56e31e726469
?????????????; ????????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
INTRA\mitsuru.suzuki |
14:15447d4751c3 | 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 |
15:56e31e726469 | 25 | COMMAND_TRRIGER *previous = NULL; |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 26 | while(true) { |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 27 | |
suzukimitsuru | 19:caab1538fa62 | 28 | // 中断だったら |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 29 | COMMAND_TRRIGER *request = NULL; |
suzukimitsuru | 19:caab1538fa62 | 30 | if (joyStick == center) { |
suzukimitsuru | 19:caab1538fa62 | 31 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 32 | // コマンドの終了 |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 33 | current->command->finalize(); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 34 | current = &triggerNull; |
suzukimitsuru | 19:caab1538fa62 | 35 | |
suzukimitsuru | 19:caab1538fa62 | 36 | // リングバッファのクリア |
suzukimitsuru | 19:caab1538fa62 | 37 | while(ringbufferGet() != NULL); |
suzukimitsuru | 19:caab1538fa62 | 38 | } else { |
suzukimitsuru | 19:caab1538fa62 | 39 | |
suzukimitsuru | 19:caab1538fa62 | 40 | // 要求の検索 |
suzukimitsuru | 19:caab1538fa62 | 41 | for(int index = 0; commandList[index].trigger != nothing; index++) { |
suzukimitsuru | 19:caab1538fa62 | 42 | if (joyStick == commandList[index].trigger) { |
suzukimitsuru | 19:caab1538fa62 | 43 | request = &commandList[index]; |
suzukimitsuru | 19:caab1538fa62 | 44 | } |
suzukimitsuru | 19:caab1538fa62 | 45 | } |
suzukimitsuru | 19:caab1538fa62 | 46 | |
suzukimitsuru | 19:caab1538fa62 | 47 | // 要求があったら |
suzukimitsuru | 19:caab1538fa62 | 48 | if (request != NULL) { |
suzukimitsuru | 19:caab1538fa62 | 49 | |
suzukimitsuru | 19:caab1538fa62 | 50 | // 前回と異なる要求の場合 |
suzukimitsuru | 19:caab1538fa62 | 51 | if (previous != request) { |
suzukimitsuru | 19:caab1538fa62 | 52 | |
suzukimitsuru | 19:caab1538fa62 | 53 | // コマンドの蓄積 |
suzukimitsuru | 19:caab1538fa62 | 54 | bool full = ringbufferPut(request); |
suzukimitsuru | 19:caab1538fa62 | 55 | if (full) { |
suzukimitsuru | 19:caab1538fa62 | 56 | printf("full\n"); |
suzukimitsuru | 19:caab1538fa62 | 57 | } |
suzukimitsuru | 19:caab1538fa62 | 58 | |
suzukimitsuru | 19:caab1538fa62 | 59 | // 前回の設定 |
suzukimitsuru | 19:caab1538fa62 | 60 | previous = request; |
suzukimitsuru | 19:caab1538fa62 | 61 | } |
suzukimitsuru | 19:caab1538fa62 | 62 | } else { |
suzukimitsuru | 19:caab1538fa62 | 63 | previous = NULL; |
suzukimitsuru | 19:caab1538fa62 | 64 | } |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 65 | } |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 66 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 67 | // 何も処理していない場合に |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 68 | if (current->trigger == nothing) { |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 69 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 70 | // 要求があったら |
suzukimitsuru | 19:caab1538fa62 | 71 | COMMAND_TRRIGER* get = ringbufferGet(); |
suzukimitsuru | 19:caab1538fa62 | 72 | if (get != NULL) { |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 73 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 74 | // コマンドを開始 |
suzukimitsuru | 19:caab1538fa62 | 75 | current = get; |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 76 | lcd.locate(0,15); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 77 | lcd.printf(" "); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 78 | lcd.locate(0,15); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 79 | lcd.printf(current->command->name); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 80 | current->command->processInitialize(); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 81 | } |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 82 | } else { |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 83 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 84 | // コマンドの実行 |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 85 | current->command->processRunning(); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 86 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 87 | // コマンドが終わったら |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 88 | if (! current->command->processIsContinue()){ |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 89 | |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 90 | // コマンドの終了 |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 91 | current->command->finalize(); |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 92 | current = &triggerNull; |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 93 | } |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 94 | } |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 95 | } |
INTRA\mitsuru.suzuki |
13:2c1fe87a06cd | 96 | } |