USB Host Shield 2.0
Loading...
Searching...
No Matches
PSBuzz.h
Go to the documentation of this file.
1/* Copyright (C) 2014 Kristian Lauszus, TKJ Electronics. All rights reserved.
2
3 This software may be distributed and modified under the terms of the GNU
4 General Public License version 2 (GPL2) as published by the Free Software
5 Foundation and appearing in the file GPL2.TXT included in the packaging of
6 this file. Please note that GPL2 Section 2[b] requires that all works based
7 on this software must also be made publicly available under the terms of
8 the GPL2 ("Copyleft").
9
10 Contact information
11 -------------------
12
13 Kristian Lauszus, TKJ Electronics
14 Web : http://www.tkjelectronics.com
15 e-mail : kristianl@tkjelectronics.com
16 */
17
18#ifndef _psbuzz_h_
19#define _psbuzz_h_
20
21#include "hiduniversal.h"
22#include "controllerEnums.h"
23
24#define PSBUZZ_VID 0x054C // Sony Corporation
25#define PSBUZZ_PID 0x1000 // PS Buzz Controller
26
38
43class PSBuzz : public HIDUniversal {
44public:
51 Reset();
52 };
53
61
66 void attachOnInit(void (*funcOnInit)(void)) {
67 pFuncOnInit = funcOnInit;
68 };
69
95 void setLedRaw(bool value, uint8_t controller = 0);
96
98 void setLedOffAll() {
99 for (uint8_t i = 1; i < 4; i++) // Skip first as it will be set in setLedRaw
100 ledState[i] = false; // Just an easy way to set all four off at the same time
101 setLedRaw(false); // Turn the LED off, on all four controllers
102 };
103
109 setLedRaw(false, controller);
110 };
111
112
114 void setLedOnAll() {
115 for (uint8_t i = 1; i < 4; i++) // Skip first as it will be set in setLedRaw
116 ledState[i] = true; // Just an easy way to set all four off at the same time
117 setLedRaw(true); // Turn the LED on, on all four controllers
118 };
119
125 setLedRaw(true, controller);
126 };
127
133 setLedRaw(!ledState[controller], controller);
134 };
137protected:
147
157 void Reset() {
158 psbuzzButtons.val = 0;
159 oldButtonState.val = 0;
160 buttonClickState.val = 0;
161 for (uint8_t i = 0; i < sizeof(ledState); i++)
162 ledState[i] = 0;
163 };
164
172 virtual bool VIDPIDOK(uint16_t vid, uint16_t pid) {
173 return (vid == PSBUZZ_VID && pid == PSBUZZ_PID);
174 };
177private:
178 static int8_t getButtonIndexBuzz(ButtonEnum b);
179
180 void (*pFuncOnInit)(void); // Pointer to function called in onInit()
181
182 void PSBuzz_Command(uint8_t *data, uint16_t nbytes);
183
184 PSBUZZButtons psbuzzButtons, oldButtonState, buttonClickState;
185 bool ledState[4];
186};
187#endif
#define PSBUZZ_PID
Definition PSBuzz.h:25
#define PSBUZZ_VID
Definition PSBuzz.h:24
uint16_t PID
virtual bool isReady()
uint16_t VID
void setLedOff(uint8_t controller=0)
Definition PSBuzz.h:108
PSBuzz(USB *p)
Definition PSBuzz.h:49
void attachOnInit(void(*funcOnInit)(void))
Definition PSBuzz.h:66
void setLedOffAll()
Definition PSBuzz.h:98
bool getButtonPress(ButtonEnum b, uint8_t controller=0)
Definition PSBuzz.cpp:58
void Reset()
Definition PSBuzz.h:157
void setLedOn(uint8_t controller=0)
Definition PSBuzz.h:124
void ParseHIDData(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf)
Definition PSBuzz.cpp:23
bool connected()
Definition PSBuzz.h:58
void setLedToggle(uint8_t controller=0)
Definition PSBuzz.h:132
void setLedOnAll()
Definition PSBuzz.h:114
bool getButtonClick(ButtonEnum b, uint8_t controller=0)
Definition PSBuzz.cpp:63
uint8_t OnInitSuccessful()
Definition PSBuzz.cpp:41
virtual bool VIDPIDOK(uint16_t vid, uint16_t pid)
Definition PSBuzz.h:172
void setLedRaw(bool value, uint8_t controller=0)
Definition PSBuzz.cpp:72
Definition UsbCore.h:220
ButtonEnum
uint8_t blue
Definition PSBuzz.h:34
uint8_t yellow
Definition PSBuzz.h:31
uint8_t orange
Definition PSBuzz.h:33
uint8_t red
Definition PSBuzz.h:30
struct PSBUZZButtons::@39 btn[4]
uint8_t green
Definition PSBuzz.h:32
uint32_t val
Definition PSBuzz.h:36