YMotorDriverShooter.cpp

Committer:
inst
Date:
2015-10-14
Revision:
1:b6face630ed3
Parent:
0:9b3bf538a693

File content as of revision 1:b6face630ed3:

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

const PinName YMotorDriverShooter::mRelayDriveDoutPinName[] = {
    dp14,
    dp11,
    dp4,
    dp2
};

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

void YMotorDriverShooter::updateI2CSlave(){
    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;
    }
}

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