Committer:
inst
Date:
Wed Oct 14 06:05:07 2015 +0000
Revision:
1:b6face630ed3
Parent:
0:9b3bf538a693

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
inst 0:9b3bf538a693 1 #include "YMotorDriverShooter.h"
inst 0:9b3bf538a693 2 #include "YMotorDriverBase.h"
inst 1:b6face630ed3 3 #include "YMotorDriver.h"
inst 0:9b3bf538a693 4 #include "mbed.h"
inst 0:9b3bf538a693 5
inst 0:9b3bf538a693 6 const PinName YMotorDriverShooter::mRelayDriveDoutPinName[] = {
inst 1:b6face630ed3 7 dp14,
inst 1:b6face630ed3 8 dp11,
inst 1:b6face630ed3 9 dp4,
inst 1:b6face630ed3 10 dp2
inst 0:9b3bf538a693 11 };
inst 0:9b3bf538a693 12
inst 1:b6face630ed3 13 YMotorDriverShooter::YMotorDriverShooter( char address ) : YMotorDriverBase( address, YMotorDriver::SHOOTER_ID ){
inst 1:b6face630ed3 14 mRelayDriveDout = new DigitalOut*[ 4 ];
inst 1:b6face630ed3 15 for ( int i = 0; i < 4; ++i ){
inst 0:9b3bf538a693 16 mRelayDriveDout[ i ] = new DigitalOut( mRelayDriveDoutPinName[ i ] );
inst 0:9b3bf538a693 17 }
inst 0:9b3bf538a693 18
inst 0:9b3bf538a693 19 mActionType = STOP;
inst 0:9b3bf538a693 20 }
inst 0:9b3bf538a693 21
inst 1:b6face630ed3 22 void YMotorDriverShooter::updateI2CSlave(){
inst 0:9b3bf538a693 23 switch ( mI2C->receive() ){
inst 0:9b3bf538a693 24 case I2CSlave::ReadAddressed:{
inst 0:9b3bf538a693 25 char buf = mActionType;
inst 0:9b3bf538a693 26 mI2C->write( &buf, 1 );
inst 0:9b3bf538a693 27 break;
inst 0:9b3bf538a693 28 }
inst 0:9b3bf538a693 29 case I2CSlave::WriteGeneral:
inst 0:9b3bf538a693 30 break;
inst 0:9b3bf538a693 31
inst 0:9b3bf538a693 32 case I2CSlave::WriteAddressed:{
inst 0:9b3bf538a693 33 char buf;
inst 0:9b3bf538a693 34 mI2C->read( &buf, 1 );
inst 0:9b3bf538a693 35 mActionType = static_cast< ShooterActionType >( buf );
inst 0:9b3bf538a693 36 break;
inst 0:9b3bf538a693 37 }
inst 0:9b3bf538a693 38
inst 0:9b3bf538a693 39 case I2CSlave::NoData:
inst 0:9b3bf538a693 40 break;
inst 0:9b3bf538a693 41 }
inst 0:9b3bf538a693 42 }
inst 0:9b3bf538a693 43
inst 0:9b3bf538a693 44 void YMotorDriverShooter::write(){
inst 1:b6face630ed3 45 for ( int i = 0; i < 4; ++i ){
inst 0:9b3bf538a693 46 mRelayDriveDout[ i ]->write( ( mActionType >> i ) & 0x01 );
inst 0:9b3bf538a693 47 }
inst 0:9b3bf538a693 48 }