CoilGun

coilgun.h

Committer:
mlaane
Date:
2013-09-14
Revision:
4:0e2bdd3d52bc
Parent:
3:7273ba733560
Child:
6:4c75db8a43db

File content as of revision 4:0e2bdd3d52bc:

#ifndef COILGUN_H
#define COILGUN_H

#include "mbed.h"

/** Interface to the CoilGun*/
class CoilGun {
public:
    /** Create an instance of the CoilGun connected to specfied pins.
     *
     * @param chargePinName The charge pin.
     * @param kickPinName The kick pin.
     * @param donePinName The done pin.
     */
    CoilGun(PinName chargePinName, PinName kickPinName, PinName donePinName);
    
    /** Kick with coilgun.
     *
     * @param length The length of the kick in uS
     */
    void kick(unsigned int length);
    
    /** Discharge coilgun */
    void discharge(void);
    
    /** turn charging on or off
     *
     * @param chargeState Set true to charge. False, to not charge.
     */
    void setCharge(bool chargeState);
 
private:
    DigitalOut chargePin;
    DigitalOut kickPin;
    InterruptIn donePin;
    void doneCallback(void);
    
    bool kicking; //True while kick is in progress
    Timeout kickTimeout; // This will end kicking
    void kickEnd(void);
    
    bool discharging; //True as long discharging is in progress
    Timeout dischargeTimeout; // This will end discharging
    Ticker discharger; // Calls short kicks during discharge
    void dischargeKick(void); //Short kick for discharging
    void dischargeEnd(void); //Method that ends discharging (dischargeTimeout calls this)
};

#endif