gaku takasawa / MyLib
Committer:
gaku_sigu
Date:
Thu May 11 01:38:34 2017 +0000
Revision:
1:c75100913a65
Child:
9:1c0640c61fce
my

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gaku_sigu 1:c75100913a65 1 #include "PS3.h"
gaku_sigu 1:c75100913a65 2
gaku_sigu 1:c75100913a65 3 PS3::PS3(PinName TX, PinName RX) : Serial(TX, RX)
gaku_sigu 1:c75100913a65 4 {
gaku_sigu 1:c75100913a65 5 PS3Data[0] = 128;
gaku_sigu 1:c75100913a65 6 PS3Data[1] = 0;
gaku_sigu 1:c75100913a65 7 PS3Data[2] = 0;
gaku_sigu 1:c75100913a65 8 PS3Data[3] = 64;
gaku_sigu 1:c75100913a65 9 PS3Data[4] = 64;
gaku_sigu 1:c75100913a65 10 PS3Data[5] = 64;
gaku_sigu 1:c75100913a65 11 PS3Data[6] = 64;
gaku_sigu 1:c75100913a65 12 PS3Data[7] = 0;
gaku_sigu 1:c75100913a65 13 baud(2400);
gaku_sigu 1:c75100913a65 14 Serial::attach(this, &PS3::getdata, Serial::RxIrq);
gaku_sigu 1:c75100913a65 15 }
gaku_sigu 1:c75100913a65 16
gaku_sigu 1:c75100913a65 17 bool PS3::maru()
gaku_sigu 1:c75100913a65 18 {
gaku_sigu 1:c75100913a65 19 return PS3Data[2] & MARU;
gaku_sigu 1:c75100913a65 20 }
gaku_sigu 1:c75100913a65 21
gaku_sigu 1:c75100913a65 22 bool PS3::batu()
gaku_sigu 1:c75100913a65 23 {
gaku_sigu 1:c75100913a65 24 return PS3Data[2] & BATU;
gaku_sigu 1:c75100913a65 25 }
gaku_sigu 1:c75100913a65 26
gaku_sigu 1:c75100913a65 27 bool PS3::sikaku()
gaku_sigu 1:c75100913a65 28 {
gaku_sigu 1:c75100913a65 29 return PS3Data[1] & SIKAKU;
gaku_sigu 1:c75100913a65 30 }
gaku_sigu 1:c75100913a65 31
gaku_sigu 1:c75100913a65 32 bool PS3::sankaku()
gaku_sigu 1:c75100913a65 33 {
gaku_sigu 1:c75100913a65 34 return PS3Data[2] & SANKAKU;
gaku_sigu 1:c75100913a65 35 }
gaku_sigu 1:c75100913a65 36
gaku_sigu 1:c75100913a65 37 bool PS3::ue()
gaku_sigu 1:c75100913a65 38 {
gaku_sigu 1:c75100913a65 39 return PS3Data[2] & UE && !(PS3Data[2] & SITA);
gaku_sigu 1:c75100913a65 40 }
gaku_sigu 1:c75100913a65 41
gaku_sigu 1:c75100913a65 42 bool PS3::sita()
gaku_sigu 1:c75100913a65 43 {
gaku_sigu 1:c75100913a65 44 return PS3Data[2] & SITA && !(PS3Data[2] & UE);
gaku_sigu 1:c75100913a65 45 }
gaku_sigu 1:c75100913a65 46
gaku_sigu 1:c75100913a65 47 bool PS3::start()
gaku_sigu 1:c75100913a65 48 {
gaku_sigu 1:c75100913a65 49 return PS3Data[2] & UE && PS3Data[2] & SITA;
gaku_sigu 1:c75100913a65 50 }
gaku_sigu 1:c75100913a65 51
gaku_sigu 1:c75100913a65 52 bool PS3::migi()
gaku_sigu 1:c75100913a65 53 {
gaku_sigu 1:c75100913a65 54 return PS3Data[2] & MIGI && !(PS3Data[2] & HIDARI);
gaku_sigu 1:c75100913a65 55 }
gaku_sigu 1:c75100913a65 56
gaku_sigu 1:c75100913a65 57 bool PS3::hidari()
gaku_sigu 1:c75100913a65 58 {
gaku_sigu 1:c75100913a65 59 return PS3Data[2] & HIDARI && !(PS3Data[2] & MIGI);
gaku_sigu 1:c75100913a65 60 }
gaku_sigu 1:c75100913a65 61
gaku_sigu 1:c75100913a65 62 bool PS3::select()
gaku_sigu 1:c75100913a65 63 {
gaku_sigu 1:c75100913a65 64 return PS3Data[2] & MIGI && PS3Data[2] & HIDARI;
gaku_sigu 1:c75100913a65 65 }
gaku_sigu 1:c75100913a65 66
gaku_sigu 1:c75100913a65 67 bool PS3::L1()
gaku_sigu 1:c75100913a65 68 {
gaku_sigu 1:c75100913a65 69 return PS3Data[1] & LEFT1;
gaku_sigu 1:c75100913a65 70 }
gaku_sigu 1:c75100913a65 71
gaku_sigu 1:c75100913a65 72 bool PS3::L2()
gaku_sigu 1:c75100913a65 73 {
gaku_sigu 1:c75100913a65 74 return PS3Data[1] & LEFT2;
gaku_sigu 1:c75100913a65 75 }
gaku_sigu 1:c75100913a65 76
gaku_sigu 1:c75100913a65 77 bool PS3::R1()
gaku_sigu 1:c75100913a65 78 {
gaku_sigu 1:c75100913a65 79 return PS3Data[1] & RIGHT1;
gaku_sigu 1:c75100913a65 80 }
gaku_sigu 1:c75100913a65 81
gaku_sigu 1:c75100913a65 82 bool PS3::R2()
gaku_sigu 1:c75100913a65 83 {
gaku_sigu 1:c75100913a65 84 return PS3Data[1] & RIGHT2;
gaku_sigu 1:c75100913a65 85 }
gaku_sigu 1:c75100913a65 86
gaku_sigu 1:c75100913a65 87 int8_t PS3::analogLX()
gaku_sigu 1:c75100913a65 88 {
gaku_sigu 1:c75100913a65 89 if(PS3Data[3] == 0)
gaku_sigu 1:c75100913a65 90 PS3Data[3]=1;
gaku_sigu 1:c75100913a65 91 return PS3Data[3]-64;
gaku_sigu 1:c75100913a65 92 }
gaku_sigu 1:c75100913a65 93
gaku_sigu 1:c75100913a65 94 int8_t PS3::analogLY()
gaku_sigu 1:c75100913a65 95 {
gaku_sigu 1:c75100913a65 96 if(PS3Data[4] == 0)
gaku_sigu 1:c75100913a65 97 PS3Data[4]=1;
gaku_sigu 1:c75100913a65 98 return (PS3Data[4]-64)*(-1);
gaku_sigu 1:c75100913a65 99 }
gaku_sigu 1:c75100913a65 100
gaku_sigu 1:c75100913a65 101 int8_t PS3::analogRX()
gaku_sigu 1:c75100913a65 102 {
gaku_sigu 1:c75100913a65 103 if(PS3Data[5] == 0)
gaku_sigu 1:c75100913a65 104 PS3Data[5]=1;
gaku_sigu 1:c75100913a65 105 return PS3Data[5]-64;
gaku_sigu 1:c75100913a65 106 }
gaku_sigu 1:c75100913a65 107
gaku_sigu 1:c75100913a65 108 int8_t PS3::analogRY()
gaku_sigu 1:c75100913a65 109 {
gaku_sigu 1:c75100913a65 110 if(PS3Data[6] == 0)
gaku_sigu 1:c75100913a65 111 PS3Data[6]=1;
gaku_sigu 1:c75100913a65 112 return (PS3Data[6]-64)*(-1);
gaku_sigu 1:c75100913a65 113 }
gaku_sigu 1:c75100913a65 114
gaku_sigu 1:c75100913a65 115
gaku_sigu 1:c75100913a65 116
gaku_sigu 1:c75100913a65 117 void PS3::getdata()
gaku_sigu 1:c75100913a65 118 {
gaku_sigu 1:c75100913a65 119 while(Serial::getc() != 128)
gaku_sigu 1:c75100913a65 120 {
gaku_sigu 1:c75100913a65 121 }
gaku_sigu 1:c75100913a65 122 for(int i = 1;i < 8;i++)
gaku_sigu 1:c75100913a65 123 {
gaku_sigu 1:c75100913a65 124 GetData[i] = Serial::getc();
gaku_sigu 1:c75100913a65 125 }
gaku_sigu 1:c75100913a65 126
gaku_sigu 1:c75100913a65 127 sum = GetData[1] + GetData[2];
gaku_sigu 1:c75100913a65 128 for(int i = 3;i < 7;i++)
gaku_sigu 1:c75100913a65 129 {
gaku_sigu 1:c75100913a65 130 sum += GetData[i] - 64;
gaku_sigu 1:c75100913a65 131 }
gaku_sigu 1:c75100913a65 132
gaku_sigu 1:c75100913a65 133 if(sum < 0)
gaku_sigu 1:c75100913a65 134 sum+=128;
gaku_sigu 1:c75100913a65 135
gaku_sigu 1:c75100913a65 136 if(sum == GetData[7])
gaku_sigu 1:c75100913a65 137 {
gaku_sigu 1:c75100913a65 138 for(int i = 0;i < 8;i++)
gaku_sigu 1:c75100913a65 139 {
gaku_sigu 1:c75100913a65 140 PS3Data[i]=GetData[i];
gaku_sigu 1:c75100913a65 141 }
gaku_sigu 1:c75100913a65 142 }
gaku_sigu 1:c75100913a65 143 }