Diff: AmmoPusher.cpp
- Revision:
- 2:5ec2a3097d4c
- Parent:
- 1:42d2772575c5
--- a/AmmoPusher.cpp Fri Aug 21 04:52:43 2015 +0000 +++ b/AmmoPusher.cpp Wed Oct 14 03:52:34 2015 +0000 @@ -1,55 +1,21 @@ #include "AmmoPusher.h" #include "mbed.h" #include "I2CMotor.h" - -const float AmmoPusher::mDuty = 0.8f; -const PinName AmmoPusher::mDrawingLimitSwitchPinName = D7; -const PinName AmmoPusher::mPushingLimitSwitchPinName = D6; +#include "I2CDevice.h" -AmmoPusher::AmmoPusher( I2CMotor* drawerMotor ){ - mDrawerMotor = drawerMotor; - mDrawerMotor->setDuty( mDuty ); - mDrawingLimitSwitch = new DigitalIn( mDrawingLimitSwitchPinName ); - mPushingLimitSwitch = new DigitalIn( mPushingLimitSwitchPinName ); -} - -void AmmoPusher::update(){ - // スイッチが押されたらブレーキ - if ( mDrawingLimitSwitch->read() || mPushingLimitSwitch->read() ){ - mDrawerMotor->setActionType( I2CMotor::BRAKE ); - } +AmmoPusher::AmmoPusher( char address ) : I2CDevice( address ){ + mState = BETWEEN; + mActionType = NO_OPERATION; } -void AmmoPusher::draw(){ - // スイッチが押されたらブレーキ - if ( mDrawingLimitSwitch->read() || mPushingLimitSwitch->read() ){ - mDrawerMotor->setActionType( I2CMotor::BRAKE ); - } else { - mDrawerMotor->setActionType( I2CMotor::REVERSE ); - } +int AmmoPusher::write(){ + char buf = mActionType; + return I2CDevice::write( &buf, 1 ); } -void AmmoPusher::push(){ - // スイッチが押されたらブレーキ - if ( mDrawingLimitSwitch->read() || mPushingLimitSwitch->read() ){ - mDrawerMotor->setActionType( I2CMotor::BRAKE ); - } else { - mDrawerMotor->setActionType( I2CMotor::FORWARD ); - } +int AmmoPusher::read(){ + char buf; + int val = I2CDevice::read( &buf, 1 ); + mState = static_cast< State >( buf ); + return val; } - -bool AmmoPusher::hasPusherFinishedPushing(){ - if ( mPushingLimitSwitch->read() ){ - mDrawerMotor->setActionType( I2CMotor::BRAKE ); - return true; - } - return false; -} - -bool AmmoPusher::hasPusherFinishedDrawing(){ - if ( mDrawingLimitSwitch->read() ){ - mDrawerMotor->setActionType( I2CMotor::BRAKE ); - return true; - } - return false; -}