YMotorDriverShooter.cpp

Committer:
inst
Date:
2015-08-23
Revision:
0:9b3bf538a693
Child:
1:b6face630ed3

File content as of revision 0:9b3bf538a693:

#include "YMotorDriverShooter.h"
#include "YMotorDriverBase.h"
#include "mbed.h"

const PinName YMotorDriverShooter::mRelayDriveDoutPinName[] = {
    dp6,
    dp13,
    dp14
};

YMotorDriverShooter::YMotorDriverShooter( char address ) : YMotorDriverBase( address ){
    mRelayDriveDout = new DigitalOut*[ 3 ];
    for ( int i = 0; i < 3; ++i ){
        mRelayDriveDout[ i ] = new DigitalOut( mRelayDriveDoutPinName[ i ] );
    }
    
    mActionType = STOP;
}

void YMotorDriverShooter::update(){
    switch ( mI2C->receive() ){
        case I2CSlave::ReadAddressed:{
            char buf = mActionType;
            mI2C->write( &buf, 1 );
            break;
        }
        case I2CSlave::WriteGeneral:
            break;
        
        case I2CSlave::WriteAddressed:{
            char buf;
            mI2C->read( &buf, 1 );
            mActionType = static_cast< ShooterActionType >( buf );
            break;
        }
        
        case I2CSlave::NoData:
            break;
    }
    
    write();
}

void YMotorDriverShooter::write(){
    for ( int i = 0; i < 3; ++i ){
        mRelayDriveDout[ i ]->write( ( mActionType >> i ) & 0x01 );
    }
}