Menu

JsRadioMaster

Perrotti

Class JsRadioMaster

Driver to Joystick Shield V1.a board whith RF24 radio conected.

Public declarations:

// Button's pins
#define BT_A_PIN 2
#define BT_B_PIN 3
#define BT_C_PIN 4
#define BT_D_PIN 5
#define BT_E_PIN 6
#define BT_F_PIN 7
#define BT_Z_PIN 8

// Button's IDs
#define BT_A_ID 0
#define BT_B_ID 1  
#define BT_C_ID 2
#define BT_D_ID 3
#define BT_E_ID 4
#define BT_F_ID 5
#define BT_Z_ID 6

#define JS_BUTTONS 7

// JoyStick pins
#define X_AXIS_PIN A0
#define Y_AXIS_PIN A1

typedef struct 
{
  byte msgID;
  int param;
}
TJsPacket;

// msgID
#define msg_JS_BUTTON_PRESSED    1
#define msg_JS_BUTTON_RELEASED   2
#define msg_JS_X_AXIS_CHANGE     3
#define msg_JS_Y_AXIS_CHANGE     4
#define msg_JS_LAST_JS_MSG_ID    msg_JS_Y_AXIS_CHANGE

class JoyStickRadio: public RadioMessage
{
public:  
  JoyStickRadio(int cePin, int csPin): RadioMessage(cePin, csPin){}

  void run();
  TJsPacket* makeJsPacket(TJsPacket *pack, byte msgID, int param);
  int sendJsPacket(TJsPacket *pack);
  int readJsPacket(TJsPacket *pack);

protected:
  virtual void onJsPacketSent(TJsPacket *pack){};
  virtual void onJsPacketRead(TJsPacket *pack){};
};

class JsRadioMaster: public JoyStickRadio, public JoyStickShield{
public:  
  JsRadioMaster(): JoyStickShield(), JoyStickRadio(RADIO_CE_PIN, RADIO_CS_PIN){}

  void begin(uint8_t* pipeIn, uint8_t* pipeOut, TDatarate rate, boolean autoSendEvents= false);
  void run();

protected:
  virtual void jsButtonPressed(byte btID){}
  virtual void jsButtonReleased(byte btID){}
  virtual void jsXAxisChange(int xVal){}
  virtual void jsYAxisChange(int yVal){}
};

Related

Wiki: Home
Wiki: JoyStick
Wiki: JoyStickShield
Wiki: PushButton
Wiki: PushButtonArray
Wiki: RadioMessage

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.