PS3の移動ライブラリ(バグあり動作不可)です。 誠意製作中です。
Diff: PS3_S.cpp
- Revision:
- 0:1e79ec3fb922
- Child:
- 1:5bb9feb40944
diff -r 000000000000 -r 1e79ec3fb922 PS3_S.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PS3_S.cpp Sat Sep 22 10:58:14 2018 +0000 @@ -0,0 +1,98 @@ +#include "PS3_S.h" + +PS3s::PS3s(PinName TX, PinName RX) : Serial(TX, RX) +{ + baud(2400); + Rdata[0] = 0; + Rdata[1] = 0; + Rdata[2] = 0; + Rdata[3] = 0; + Rdata[4] = 0; + Rdata[5] = 0; + Rdata[6] = 0; + Rdata[7] = 0; + for(int i = 0; i < 18; i++) { + condata[i] = 0; + } +} + +void PS3s::getdata() +{ + + if (Serial::readable() == true) { + databuffer = Serial::getc(); + if(databuffer == 128) { + endval = 1; + dataval = 0; + checkval = 1; + Rdata[dataval] = databuffer; + dataval++; + }else if(endval == 1){ + Rdata[dataval] = databuffer; + dataval++; + if(dataval == 7) { + endval = 0; + checkval = 0; + dataval = 0; + } + } + } +} + +void PS3s::checkdata() +{ + if (checkval == false) { + for (int i = 1; i < 7; i++) { + checksum_buffer += Rdata[i]; + } + checksum_buffer = checksum_buffer & 0x0000007F; + checkval = 1; + if(checksum_buffer == (Rdata[7] & 0x0000007F)) { + button1_buffer = Rdata[1]; + button2_buffer = Rdata[2]; + condata[14] = Rdata[3]; + condata[15] = Rdata[4]; + condata[16] = Rdata[5]; + condata[17] = Rdata[6]; + + int num1 = 16; + int num2 = 64; + int value1 = 0; + int value2 = 0; + + for(int i = 5; i >= 1; i--) { + value1 = i + 6; + if (button1_buffer >= num1) { + condata[value1] = 1; + button1_buffer -= num1; + } else { + condata[value1] = 0; + } + num1 /= 2; + } + + for(int j = 7; j >= 1; j--) { + value2 = j - 1; + if (button2_buffer - num2 >= 0) { + condata[value2] = 1; + button2_buffer -= num2; + } else { + condata[value2] = 0; + } + num2 /= 2; + } + if(condata[0]!=0 && condata[1]!=0) { + condata[0] = 0; + condata[1] = 0; + condata[13] = 1; + } else if(condata[2]!=0 && condata[3]!=0) { + condata[2] = 0; + condata[3] = 0; + condata[12] = 1; + } else { + condata[12] = 0; + condata[13] = 0; + } + } + } +} \ No newline at end of file