First Release

Dependencies:   USBDevice

Committer:
sankichi
Date:
Sat Jul 27 14:19:33 2013 +0000
Revision:
1:6c392ebcd4d4
Parent:
0:e1265f6b3565
First release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sankichi 0:e1265f6b3565 1 /* USBJoystick.h */
sankichi 0:e1265f6b3565 2 /* USB device example: Joystick*/
sankichi 0:e1265f6b3565 3 /* Copyright (c) 2011 ARM Limited. All rights reserved. */
sankichi 0:e1265f6b3565 4 /* Modified Mouse code for Joystick - WH 2012 */
sankichi 0:e1265f6b3565 5
sankichi 0:e1265f6b3565 6 // PS3向け改修版
sankichi 0:e1265f6b3565 7
sankichi 0:e1265f6b3565 8 #ifndef USBJOYSTICK_H
sankichi 0:e1265f6b3565 9 #define USBJOYSTICK_H
sankichi 0:e1265f6b3565 10
sankichi 0:e1265f6b3565 11 #include "USBHID.h"
sankichi 0:e1265f6b3565 12
sankichi 0:e1265f6b3565 13 #define REPORT_ID_JOYSTICK 4
sankichi 0:e1265f6b3565 14
sankichi 0:e1265f6b3565 15 #define JOYSTICK_UP (1<<0)
sankichi 0:e1265f6b3565 16 #define JOYSTICK_DOWN (1<<1)
sankichi 0:e1265f6b3565 17 #define JOYSTICK_LEFT (1<<2)
sankichi 0:e1265f6b3565 18 #define JOYSTICK_RIGHT (1<<3)
sankichi 0:e1265f6b3565 19
sankichi 0:e1265f6b3565 20 class USBJoystick: public USBHID
sankichi 0:e1265f6b3565 21 {
sankichi 0:e1265f6b3565 22 private:
sankichi 0:e1265f6b3565 23 int8_t _x;
sankichi 0:e1265f6b3565 24 int8_t _y;
sankichi 0:e1265f6b3565 25 int8_t _z;
sankichi 0:e1265f6b3565 26 int8_t _rz;
sankichi 0:e1265f6b3565 27 uint32_t _buttons;
sankichi 0:e1265f6b3565 28 uint8_t _stick;
sankichi 0:e1265f6b3565 29
sankichi 0:e1265f6b3565 30 void _init();
sankichi 0:e1265f6b3565 31
sankichi 0:e1265f6b3565 32 public:
sankichi 0:e1265f6b3565 33 /**
sankichi 0:e1265f6b3565 34 * Constructor
sankichi 0:e1265f6b3565 35 *
sankichi 0:e1265f6b3565 36 * @param vendor_id Your vendor_id (default: 0x1234)
sankichi 0:e1265f6b3565 37 * @param product_id Your product_id (default: 0x0002)
sankichi 0:e1265f6b3565 38 * @param product_release Your product_release (default: 0x0001)
sankichi 0:e1265f6b3565 39 */
sankichi 0:e1265f6b3565 40 USBJoystick(uint16_t vendor_id = 0x1234, uint16_t product_id = 0x0100, uint16_t product_release = 0x0001):
sankichi 0:e1265f6b3565 41 USBHID(0, 0, vendor_id, product_id, product_release, false)
sankichi 0:e1265f6b3565 42 {
sankichi 0:e1265f6b3565 43 _init();
sankichi 0:e1265f6b3565 44 connect();
sankichi 0:e1265f6b3565 45 };
sankichi 0:e1265f6b3565 46
sankichi 0:e1265f6b3565 47 /**
sankichi 0:e1265f6b3565 48 * Write a state of the mouse
sankichi 0:e1265f6b3565 49 *
sankichi 0:e1265f6b3565 50 * @param x x-axis position
sankichi 0:e1265f6b3565 51 * @param y y-axis position
sankichi 0:e1265f6b3565 52 * @param z z-axis position
sankichi 0:e1265f6b3565 53 * @param rz rotate-z position
sankichi 0:e1265f6b3565 54 * @param buttons buttons state
sankichi 0:e1265f6b3565 55 * @param stick rest of buttons, and hat state 0 (up), 1 (right, 2 (down), 3 (left) or 4 (neutral)
sankichi 0:e1265f6b3565 56 * @returns true if there is no error, false otherwise
sankichi 0:e1265f6b3565 57 */
sankichi 0:e1265f6b3565 58 bool update(int16_t x, int16_t y, int16_t z, int16_t rz, uint32_t buttons, uint8_t stick);
sankichi 0:e1265f6b3565 59
sankichi 0:e1265f6b3565 60 /**
sankichi 0:e1265f6b3565 61 * Write a state of the mouse
sankichi 0:e1265f6b3565 62 *
sankichi 0:e1265f6b3565 63 * @returns true if there is no error, false otherwise
sankichi 0:e1265f6b3565 64 */
sankichi 0:e1265f6b3565 65 bool update();
sankichi 0:e1265f6b3565 66
sankichi 0:e1265f6b3565 67
sankichi 0:e1265f6b3565 68 /*
sankichi 0:e1265f6b3565 69 * To define the report descriptor. Warning: this method has to store the length of the report descriptor in reportLength.
sankichi 0:e1265f6b3565 70 *
sankichi 0:e1265f6b3565 71 * @returns pointer to the report descriptor
sankichi 0:e1265f6b3565 72 */
sankichi 0:e1265f6b3565 73 virtual uint8_t * reportDesc();
sankichi 0:e1265f6b3565 74
sankichi 0:e1265f6b3565 75 };
sankichi 0:e1265f6b3565 76
sankichi 0:e1265f6b3565 77 #endif