#ifndef _DRIBBLER_H
#define _DRIBBLER_H
#include "../../stdafx.h"
class Dribbler : public IO_Module
{
public:
Dribbler()
this->enabled = false;
this->curSpeed = 0;
this->parent = NULL;
this->moduleId = 0;
this->hardwarePort = NULL;
this->portPower = NULL;
this->pinForward = 0;
this->pinReverse = 0;
this->pinPower = 0;
}
Dribbler(uint32 dribblerId)
this->curSpeed = 1.0f;
this->moduleId = dribblerId;
switch(dribblerId)
case IO_DRIBBLER_MAIN:
this->hardwarePort = &PORTD;
this->portPower = &PORTA;
this->pinForward = (1 << 6);
this->pinReverse = (1 << 7);
this->pinPower = (1 << 5);
break;
default:
UpdateDirection();
protected:
bool enabled;
float curSpeed;
//Hardware
volatile uint8* hardwarePort;
volatile uint8* portPower;
uint8 pinForward;
uint8 pinReverse;
uint8 pinPower;
void UpdateDirection()
if(enabled)
if(curSpeed > 0)
*hardwarePort |= pinForward;
*hardwarePort &= ~pinReverse;
*portPower |= pinPower;
else if(curSpeed < 0)
*hardwarePort |= pinReverse;
*hardwarePort &= ~pinForward;
else
*portPower &= ~pinPower;
float GetSpeed()
return curSpeed;
void SetSpeed(float newSpeed)
curSpeed = newSpeed;
bool GetEnabled()
return enabled;
void SetEnabled(bool newStatus)
enabled = newStatus;
};
#endif