libmanta
A cross-platform API for the Snyderphonics Manta
Manta.h
00001 #ifndef _MANTA_H
00002 #define _MANTA_H
00003 
00004 #include "MantaUSB.h"
00005 #include "MantaClient.h"
00006 #include "MantaServer.h"
00007 
00008 /************************************************************************/
00026 class Manta :
00027    public MantaUSB,
00028    public MantaClient,
00029    public MantaServer
00030 {
00031    public:
00032       Manta(void);
00033 
00034       /* MantaServer messages implemented here */
00035       virtual void SetPadLED(LEDState state, int ledID);
00036       virtual void SetPadLEDRow(LEDState state, int row, uint8_t mask);
00037       virtual void SetPadLEDColumn(LEDState state, int column, uint8_t mask);
00038       virtual void SetPadLEDFrame(LEDState state, uint8_t mask[]);
00039       virtual void SetSliderLED(LEDState state, int id, uint8_t mask);
00040       virtual void SetButtonLED(LEDState state, int id);
00041       virtual void ResendLEDState(void);
00042       virtual void ClearPadAndButtonLEDs(void);
00043       virtual void ClearButtonLEDs(void);
00044       virtual void Recalibrate(void);
00045       virtual void SetLEDControl(LEDControlType control, bool state);
00046       virtual void SetTurboMode(bool Enabled);
00047       virtual void SetRawMode(bool Enabled);
00048       virtual void SetMaxSensorValues(int *values);
00049 
00050    private:
00051       /* declare superclass callback implemented by this class */
00052       virtual void FrameReceived(int8_t *frame);
00053       int ScaleSensorValue(int rawValue, int index);
00054 
00055       static uint8_t byteReverse(uint8_t inByte);
00056       static int CalculateVelocity(int firstValue, int secondValue);
00057       static const int AmberIndex = 0;
00058       static const int RedIndex = 10;
00059       static const int SliderIndex = 7;
00060       static const int ButtonIndex = 6;
00061       static const int ConfigIndex = 9;
00062       static const int AverageMaxSensorValues[53];
00063 
00064       int MaxSensorValues[53];
00065       uint8_t LastInReport[InPacketLen];
00066       uint8_t CurrentOutReport[OutPacketLen];
00067       bool VelocityWaiting[53];
00068       /* output modes */
00069       bool CentroidEnabled;
00070       bool MaximumEnabled;
00071       bool PadFrameEnabled;
00072 };
00073 
00074 #endif // _MANTA_H