ジョイスティック切換えで色々な処理をやります。 C言語学習用です。

Dependencies:   C12832 MMA7660 mbed

Committer:
suzukimitsuru
Date:
Wed Apr 18 11:14:40 2018 +0000
Revision:
19:caab1538fa62
Parent:
14:15447d4751c3
?????????????; ????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
INTRA\mitsuru.suzuki 14:15447d4751c3 1 #include "./mbed.h"
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 2 #include "commands.h"
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 3 #include "ringBuffer.h"
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 4
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 5 static COMMAND_TRRIGER* _ringBuffer[10];
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 6 static int _putIndex = 0;
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 7 static int _getIndex = 0;
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 8 static int _count = 0;
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 9
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 10 #define COUNT sizeof(_ringBuffer) / sizeof(COMMAND_TRRIGER*)
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 11
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 12 bool ringbufferPut(COMMAND_TRRIGER* command) {
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 13 bool full = false;
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 14 if (_count <= 0) {
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 15 _ringBuffer[_putIndex] = command;
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 16 _putIndex = (_putIndex < COUNT) ? _putIndex + 1 : 0;
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 17 _count++;
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 18 full = false;
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 19 } else {
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 20 if (_count < COUNT) {
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 21 _ringBuffer[_putIndex] = command;
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 22 _putIndex = (_putIndex < COUNT) ? _putIndex + 1 : 0;
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 23 _count++;
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 24 full = false;
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 25 } else {
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 26 full = true;
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 27 }
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 28 }
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 29 return full;
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 30 }
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 31
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 32 COMMAND_TRRIGER* ringbufferGet(void) {
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 33 COMMAND_TRRIGER* command = NULL;
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 34
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 35 if (_count > 0) {
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 36 command = _ringBuffer[_getIndex];
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 37 _getIndex = (_getIndex < COUNT) ? _getIndex + 1 : 0;
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 38 _count--;
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 39 } else {
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 40 command = NULL;
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 41 }
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 42 return command;
INTRA\mitsuru.suzuki 13:2c1fe87a06cd 43 }