1am

Serializer.h

Committer:
sowmy87
Date:
2010-12-16
Revision:
3:94b650d0861d
Parent:
2:9e0d3f159ec3

File content as of revision 3:94b650d0861d:

#ifndef SERIALIZER_H
#define SERIALIZER_H


#define     BAUD                    19200
#define     MAX_SPEED               127

#define     WAIT                    .001
#define     PI                      3.1415926
#define     PIVET_ADJUSTMENT        7.4
#define     PIVET_SPEED             20

#define     PULSES_PER_REVOLUTION   624
#define     WHEEL_DIAMETER          2.25           //inches
#define     WHEEL_CIRCUMFERENCE     PI*WHEEL_DIAMETER
#define     PULSE_DISTANCE          WHEEL_CIRCUMFERENCE / 624
#define     PULSES_PER_INCH         int(PULSES_PER_REVOLUTION / WHEEL_CIRCUMFERENCE)


#include "mbed.h"

/**
 * Serializer Class to communicate with Robotics
 * Connection Serializer(tm) board
 */
class Serializer {

public:
    /**
     * Constructor.
     *
     */
    Serializer();

    /**
     * Destructor.
     *
     */
    ~Serializer();

    /**
     * Clears left motor encoder count
     *
     */
    void    ClearCountLeft();

    /**
     * Clears right motor encoder count
     *
     */
    void    ClearCountRight();

    /**
     * Clears motors encoder counts
     *
     */
    void    ClearCount();

    /**
     * Sets left motor speed
     * @param inPsec Motor Speed in inches per second
     */
    void    SetSpeedLeft(int inPsec);

    /**
     * Sets right motor speed
     * @param inPsec Motor Speed in inches per second
     */
    void    SetSpeedRight(int inPsec);

    /**
     * Sets speed for both motors
     * @param inPsec Motor Speed in inches per second
     */
    void    SetSpeed(int inPsec);

    /**
     * Sets VPID
     * @param p
     * @param i
     * @param d
     * @param l
     */
    void    SetVPID(int,int,int,int);

    /**
     * Sets DPID
     * @param p
     * @param i
     * @param d
     * @param a
     */
    void    SetDPID(int,int,int,int);

    /**
     * Sets left motor distance and speed
     * @param inches Distance in ticks
     * @param inPsec Motor Speed
     */
    void    DiGoLeft(int inches,int inPsec);

    /**
     * Sets right motor distance and speed
     * @param inches Distance in ticks
     * @param inPsec Motor Speed
     */
    void    DiGoRight(int inches,int inPsec);

    /**
     * Sets both motors distance and speed
     * @param inches Distance in ticks
     * @param inPsec Motor Speed
     */
    void    DiGo(int inches,int inPsec);

    void    SetLeftPWM(int pwm);
    void    SetRightPWM(int pwm);
    void    SetPWM(int pwm);
    void    SetPWM(int lPwm, int rPwm);
    int     IsBusy();

    /**
     * Stops both motors
     */
    void    Stop();

    void    TurnLeft(int deg);
    void    TurnRight(int deg);
    void    PivetLeft(int deg);
    void    PivetRight(int deg);

    int     GetCountLeft();
    int     GetCountRight();
    int     GetCount();
    float   GetDistanceLeft();
    float   GetDistanceRight();
    float   GetDistance();





//protected:
    int     GetReply();
    void    InterruptHandler();
    int     Initialize();
//private:
    Serial          *serial;
    volatile int    leftSpeed, rightSpeed;
    volatile int    _lPWM, _rPWM;
    volatile char   _isBusy;
    volatile char   _irqIsBusy;
};
#endif