PS3の移動ライブラリ(バグあり動作不可)です。 誠意製作中です。

Dependents:   NHK2018_BM

PS3_S.cpp

Committer:
tektomo
Date:
2018-09-27
Revision:
2:9b3aeecc67d9
Parent:
1:5bb9feb40944

File content as of revision 2:9b3aeecc67d9:

#include "PS3_S.h"

PS3s::PS3s(PinName TX, PinName RX) : Serial(TX, RX)
{
    baud(2400);
    Rdata[0] = 128;
    Rdata[1] = 0;
    Rdata[2] = 0;
    Rdata[3] = 64;
    Rdata[4] = 64;
    Rdata[5] = 64;
    Rdata[6] = 64;
    Rdata[7] = 0;
    for(int i = 0; i < 18; i++) {
        condata[i] = 0;
    }
}

void PS3s::getdata()
{
    if (Serial::readable()) {
        while(Serial::getc() != 128) {}
        for (int i = 1;i < 8;i++){
            Rdata[i] = Serial::getc();
        }
    }
}

void PS3s::checkdata()
{
    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;
    }
}