
ジョイスティック切換えで色々な処理をやります。 C言語学習用です。
Dependencies: C12832 MMA7660 mbed
src/ringBuffer.cpp@19:caab1538fa62, 2018-04-18 (annotated)
- Committer:
- suzukimitsuru
- Date:
- Wed Apr 18 11:14:40 2018 +0000
- Revision:
- 19:caab1538fa62
- Parent:
- 14:15447d4751c3
?????????????; ????????????
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 "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 | } |