Class used to interface with the handheld gamepad.

Fork of Gamepad by Craig Evans

Revision:
9:893189072e89
Parent:
8:7eaf26f4b5f2
Child:
10:a13d2f9d8a14
--- a/Gamepad.h	Tue Feb 07 10:53:46 2017 +0000
+++ b/Gamepad.h	Tue Feb 07 11:50:26 2017 +0000
@@ -1,14 +1,3 @@
-/**
-@file Gamepad.h
-
-@brief Library for interfacing with ELEC2645 Gamepad PCB
-@brief University of Leeds
-
-@author Dr Craig A. Evans
-@date Febraury 2017
-
-*/
-
 #ifndef GAMEPAD_H
 #define GAMEPAD_H
 
@@ -17,153 +6,186 @@
 #define TOL 0.1f
 #define RAD2DEG 57.2957795131f
 
+/** Enum for direction */
 enum Direction {
-    CENTRE,  // 0
-    N,       // 1
-    NE,      // 2
-    E,       // 3
-    SE,      // 4
-    S,       // 5
-    SW,      // 6
-    W,       // 7
-    NW      // 8
+    CENTRE,  /**< joystick centred */
+    N,       /**< pushed North (0)*/
+    NE,      /**< pushed North-East (45) */
+    E,       /**< pushed East (90) */
+    SE,      /**< pushed South-East (135) */
+    S,       /**< pushed South (180) */
+    SW,      /**< pushed South-West (225) */
+    W,       /**< pushed West (270) */
+    NW       /**< pushed North-West (315) */
 };
 
+/** Vector 2D struct */
 struct Vector2D {
-    float x;
-    float y;
+    float x; /**< float for x value */
+    float y; /**< float for y value */
 };
 
+/** Polar coordinate struct */
 struct Polar {
-    float mag;
-    float angle;
+    float mag;  /**< float for magnitude */
+    float angle; /**< float for angle (in degrees) */
 };
 
+/** Gamepad Class
+@brief Library for interfacing with ELEC2645 Gamepad PCB, University of Leeds
+@author Dr Craig A. Evans
+@date Febraury 2017
+*/
 class Gamepad
 {
 
 public:
 
-    /** Constructor
-    */
+    /** Constructor */
     Gamepad();
 
-    /** Destructor
-    */
+    /** Destructor */
     ~Gamepad();
 
-    /** Initialise all peripherals and configure interrupts
-    */
+    /** Initialise all peripherals and configure interrupts */
     void init();
 
-    /** Turn all LEDs on
-    */
+    /** Turn all LEDs on */
     void leds_on();
 
-    /** Turn all LEDs off
-    */
+    /** Turn all LEDs off */
     void leds_off();
 
-    /** Fade all to set duty-cycle
-    @param value in range 0.0 to 1.0
+    /** Set all LEDs to duty-cycle
+    *@param value in range 0.0 to 1.0
+    */
+    void set_leds(float val);
+
+    /** Set LED to duty-cycle
+    *@param value in range 0.0 to 1.0
     */
-    void fade_leds(float val);
+    void set_led1(float val);
+
+    /** Set LED to duty-cycle
+      *@param value in range 0.0 to 1.0
+      */
+    void set_led2(float val);
+
+    /** Set LED to duty-cycle
+    *@param value in range 0.0 to 1.0
+    */
+    void set_led3(float val);
+
+    /** Set LED to duty-cycle
+    *@param value in range 0.0 to 1.0
+    */
+    void set_led4(float val);
+
+    /** Set LED to duty-cycle
+    *@param value in range 0.0 to 1.0
+    */
+    void set_led5(float val);
+
+    /** Set LED to duty-cycle
+    *@param value in range 0.0 to 1.0
+    */
+    void set_led6(float val);
 
     /** Read potentiometer
-    @returns potentiometer value in range 0.0 to 1.0
+    *@returns potentiometer value in range 0.0 to 1.0
     */
     float read_pot();
 
     /** Play tone on piezo
-    @param frequency in Hz
-    @param duration of tone in seconds
+    * @param frequency in Hz
+    * @param duration of tone in seconds
     */
     void tone(float frequency, float duration);
 
     /** Check if A button pressed
-    @returns true if yes, false if no
+    * @returns true if yes, false if no
     */
     bool a_pressed();
 
     /** Check if B button pressed
-    @returns true if yes, false if no
+    * @returns true if yes, false if no
     */
     bool b_pressed();
 
     /** Check if X button pressed
-    @returns true if yes, false if no
+    * @returns true if yes, false if no
     */
     bool x_pressed();
 
     /** Check if Y button pressed
-    @returns true if yes, false if no
+    * @returns true if yes, false if no
     */
     bool y_pressed();
 
     /** Check if L button pressed
-    @returns true if yes, false if no
+    * @returns true if yes, false if no
     */
     bool l_pressed();
 
     /** Check if R button pressed
-    @returns true if yes, false if no
+    * @returns true if yes, false if no
     */
     bool r_pressed();
 
     /** Check if Back button pressed
-    @returns true if yes, false if no
+    * @returns true if yes, false if no
     */
     bool back_pressed();
 
     /** Check if Start button pressed
-    @returns true if yes, false if no
+    * @returns true if yes, false if no
     */
     bool start_pressed();
 
     /** Check if Joystick button pressed
-    @returns true if yes, false if no
+    * @returns true if yes, false if no
     */
     bool joystick_pressed();
 
     /** Get magnitude of joystick movement
-    @returns value in range 0.0 to 1.0
+    * @returns value in range 0.0 to 1.0
     */
 
     float get_mag();
-    
+
     /** Get angle of joystick movement
-    @returns value in range 0.0 to 359.9. 0.0 corresponds to N, 180.0 to S. -1.0 is central
+    * @returns value in range 0.0 to 359.9. 0.0 corresponds to N, 180.0 to S. -1.0 is central
     */
     float get_angle();
-    
+
     /** Gets joystick direction
-    @returns an enum: CENTRE, N, NE, E, SE, S, SW, W, NW,
+    * @returns an enum: CENTRE, N, NE, E, SE, S, SW, W, NW,
     */
     Direction get_direction();    // N,NE,E,SE etc.
-    
+
     /** Gets raw cartesian co-ordinates of joystick
-    @returns a struct with x,y members, each in the range 0.0 to 1.0
+    * @returns a struct with x,y members, each in the range 0.0 to 1.0
     */
     Vector2D get_coord();         // cartesian co-ordinates x,y
-    
+
     /** Gets cartesian coordinates mapped to circular grid
-     @returns a struct with x,y members, each in the range 0.0 to 1.0
+    * @returns a struct with x,y members, each in the range 0.0 to 1.0
     */
     Vector2D get_mapped_coord();  // x,y mapped to circle
-    
+
     /** Gets polar coordinates of the joystick
-    @returns a struct contains mag and angle
+    * @returns a struct contains mag and angle
     */
     Polar get_polar();            // mag and angle in struct form
 
 private:
 
-    PwmOut *led_1;
-    PwmOut *led_2;
-    PwmOut *led_3;
-    PwmOut *led_4;
-    PwmOut *led_5;
-    PwmOut *led_6;
+    PwmOut *led1;
+    PwmOut *led2;
+    PwmOut *led3;
+    PwmOut *led4;
+    PwmOut *led5;
+    PwmOut *led6;
 
     InterruptIn *button_A;
     InterruptIn *button_B;