fix bInterval
This commit is contained in:
@@ -252,7 +252,7 @@ static const byte PROGMEM _hidReportPOPN[] = {
|
|||||||
HIDDescriptor hidInterface = {
|
HIDDescriptor hidInterface = {
|
||||||
D_INTERFACE(pluggedInterface, 1, USB_DEVICE_CLASS_HUMAN_INTERFACE, HID_SUBCLASS_NONE, HID_PROTOCOL_NONE),
|
D_INTERFACE(pluggedInterface, 1, USB_DEVICE_CLASS_HUMAN_INTERFACE, HID_SUBCLASS_NONE, HID_PROTOCOL_NONE),
|
||||||
D_HIDREPORT(sizeof(_hidReportPOPN)),
|
D_HIDREPORT(sizeof(_hidReportPOPN)),
|
||||||
D_ENDPOINT(USB_ENDPOINT_IN(pluggedEndpoint), USB_ENDPOINT_TYPE_INTERRUPT, USB_EP_SIZE, 16)
|
D_ENDPOINT(USB_ENDPOINT_IN(pluggedEndpoint), USB_ENDPOINT_TYPE_INTERRUPT, USB_EP_SIZE, 0x01) // this last parameter is the bInterval (requested polling rate)
|
||||||
};
|
};
|
||||||
return USB_SendControl(0, &hidInterface, sizeof(hidInterface));
|
return USB_SendControl(0, &hidInterface, sizeof(hidInterface));
|
||||||
}
|
}
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
#include <EEPROM.h>
|
#include <EEPROM.h>
|
||||||
#endif
|
#endif
|
||||||
#include "POPNHID.h"
|
#include "POPNHID.h"
|
||||||
/* 125µs delay is 1 frame on highspeed USB spec */
|
/* 1 frame (as declared in POPNHID.cpp) on highspeed USB spec is 125µs */
|
||||||
#define REPORT_DELAY 125
|
#define REPORT_DELAY 125
|
||||||
#define MILLIDEBOUNCE 15
|
#define MILLIDEBOUNCE 15
|
||||||
POPNHID_ POPNHID;
|
POPNHID_ POPNHID;
|
||||||
@@ -118,7 +118,7 @@ void loop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* USB DATA */
|
/* USB DATA */
|
||||||
if ( ( (micros() - lastReport) >= REPORT_DELAY) )//&& (buttonsState != prevButtonsState) )
|
if ( ( (micros() - lastReport) >= REPORT_DELAY) )
|
||||||
{
|
{
|
||||||
POPNHID.sendState(buttonsState);
|
POPNHID.sendState(buttonsState);
|
||||||
lastReport = micros();
|
lastReport = micros();
|
||||||
@@ -196,6 +196,40 @@ void loop() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Light up button lights according to bitfield */
|
||||||
|
void but_lights(uint16_t lightDesc) {
|
||||||
|
for (int i = 0; i < 9; i++) {
|
||||||
|
if ((lightDesc >> i) & 1) {
|
||||||
|
digitalWrite(LightPins[i], HIGH);
|
||||||
|
} else {
|
||||||
|
digitalWrite(LightPins[i], LOW);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Light up pillars and top neons according to bitfield */
|
||||||
|
void neon_lights(uint16_t lightDesc) {
|
||||||
|
for (int i = 0; i < 9; i++) {
|
||||||
|
if ((lightDesc >> i) & 1) {
|
||||||
|
digitalWrite(LightPins[i + 9], HIGH);
|
||||||
|
} else {
|
||||||
|
digitalWrite(LightPins[i + 9], LOW);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Display animation on the cab according to a bitfield array */
|
||||||
|
void animate(uint16_t* tab, uint8_t n, int mswait) {
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
but_lights(tab[i]);
|
||||||
|
#if defined(ARDUINO_ARCH_SAM)
|
||||||
|
neon_lights(tab[i]);
|
||||||
|
#endif
|
||||||
|
delay(mswait);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ARDUINO DUE ONLY FUNCTIONS */
|
||||||
|
|
||||||
#if defined(ARDUINO_ARCH_SAM)
|
#if defined(ARDUINO_ARCH_SAM)
|
||||||
/* Manage pillars and top neons in reactive mode */
|
/* Manage pillars and top neons in reactive mode */
|
||||||
@@ -286,37 +320,5 @@ if (pillar_lit)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Light up button lights according to bitfield */
|
|
||||||
void but_lights(uint16_t lightDesc) {
|
|
||||||
for (int i = 0; i < 9; i++) {
|
|
||||||
if ((lightDesc >> i) & 1) {
|
|
||||||
digitalWrite(LightPins[i], HIGH);
|
|
||||||
} else {
|
|
||||||
digitalWrite(LightPins[i], LOW);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Light up pillars and top neons according to bitfield */
|
|
||||||
void neon_lights(uint16_t lightDesc) {
|
|
||||||
for (int i = 0; i < 9; i++) {
|
|
||||||
if ((lightDesc >> i) & 1) {
|
|
||||||
digitalWrite(LightPins[i + 9], HIGH);
|
|
||||||
} else {
|
|
||||||
digitalWrite(LightPins[i + 9], LOW);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Display animation on the cab according to a bitfield array */
|
|
||||||
void animate(uint16_t* tab, uint8_t n, int mswait) {
|
|
||||||
for (int i = 0; i < n; i++) {
|
|
||||||
but_lights(tab[i]);
|
|
||||||
#if defined(ARDUINO_ARCH_SAM)
|
|
||||||
neon_lights(tab[i]);
|
|
||||||
#endif
|
|
||||||
delay(mswait);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user