/* gripper control bits (DIGOUTPUT) */
#define sfGRIPSTATEMASK 0x05 /* picks out state bits in DIGOUTPUT */ #define sfGRIPMOTORBIT 0x02 /* motor bit, 0 is off, 1 is on */
#define sfGRIPDIRBIT 0x01 | /* direction bit, 0 is down, 1 is up */ | |||
#define sfSPEAKERBIT |
| 0x04 |
| |
#define sfRIGHTLEDBIT |
| 0x08 | /* 0 is off, 1 is on */ | |
#define sfLEFTLEDBIT | 0x10 |
| ||
/* gripper sense bits (DIGINPUT) */ | ||||
#define sfGRIPTOPBIT |
| 0x01 | /* top limit, 0 if hit */ | |
#define sfGRIPMIDBIT | 0x02 | /* | ||
#define sfGRIPBOTBIT |
| 0x04 | /* bottom limit, 0 if hit */ | |
#define sfGRIPINIRBIT | 0x08 | /* inner IR, 0 is beam break */ | ||
#define sfGRIPOUTIRBIT | 0x10 | /* outer IR */ | ||
#define sfGRIPBUMPBIT | 0x20 | /* gripper bumpers, 0 is bump */ | ||
#define sfGRIPMOMBIT |
| 0x40 | /* momentary switch, 0 is pressed */ | |
#define sfGRIPSPSTBIT |
| 0x80 | /* SPST switch, 0 is up */ | |
int | /* returns the robot gripper state setpoint */ |
sfGripperGetState(void)
{
if (flakey.digoutput & sfGRIPMOTORBIT) return sfMOVING;
else
return flakey.digoutput & sfGRIPSTATEMASK;
} |
|
void | /* sets robot gripper state setpoint */ |
sfGripperSetState(int state)
{
sfRobotComInt(sfCOMGRIPPER, state & sfGRIPSTATEMASK);
}
void/* sfLEFT, sfRIGHT, sfON, sfOFF */ sfGripperSetLed(int which, int state)
{
switch(which)
{
case sfLEFT:
which = sfLEFTLEDBIT;
break;
(continued)
22