Commit Graph

1365 Commits

Author SHA1 Message Date
NicoHood c4fb153142 [PHID] Added SetReport function
This commit just shows other that this option is available and not implemented.
You may use this to determine the Led Lights state of a keyboard or transmit data via RAWHID from the PC.

Quick usage guide:
int length = ((setup.wValueH << 8) | setup.wLength);
USB_RecvControl((uint8_t* data, USB_EP_SIZE); // Needs to be splitted into USB_EP_SIZE packets, not shown here. See HID Project.
2015-10-07 20:37:05 +02:00
NicoHood dfe89ddd01 [PUSB] Made getDescriptor() and setup() more flexible
Alternatively we can only pass the wIndex to getDescriptor but I suggest to just pass the pointer aka reference of the whole setup.
In guess (havent tested this) that this results in more or less the code size but its a) idential with the other functions and b) we late have more flexibility here.
The Code got a quick SerialKeyboard.ino test
2015-10-07 19:02:40 +02:00
NicoHood 4a1921932d [PUSB] Changed Interface + Endpoint to unsigned variables
The iterations in the for loop also use unsigned and the setup struct etc as well.
There was no change in HID required since we just init the inherited variables via constructor and the type is never mentioned.
2015-10-07 18:45:10 +02:00
Cristian Maglie 663c55706b [PUSB] renamed some parameters 2015-10-07 13:21:21 +02:00
NicoHood eb084e235d Small return value error check correction 2015-10-07 12:39:18 +02:00
NicoHood 9cd24d7a0d Removed not needed public statement for root node 2015-10-03 07:56:48 +02:00
Martino Facchin 8cab209ef9 [PUSB] Fix static initialization order fiasco
For details see:
https://isocpp.org/wiki/faq/ctors#static-init-order-on-first-use
2015-10-02 11:59:24 +02:00
Cristian Maglie 66d3eabe42 [HID] removed HIDDescriptor field
The field is now built on-the-fly on the stack and sent over USB.
This change increase Flash usage and decrease SRAM usage:

before: 6114 / 241
after:  6152 / 216 (removed HIDDescriptor field)

delta:   +38 / -25

SRAM is a much more scarse resource and this change free up to
about 10% of the "base" usage.
2015-10-02 11:59:24 +02:00
Cristian Maglie 2e328bae3b [HID] Code cleanup (no semantic changes) 2015-10-02 11:59:23 +02:00
Cristian Maglie 0b3244c5ec [HID] removed unused modules_count field 2015-10-02 11:59:23 +02:00
Cristian Maglie bad9b58ce3 [PUSB] Fixed checks on return values 2015-10-02 11:59:23 +02:00
Cristian Maglie 10512b3f9b [USB] Fixed some compiler warnings 2015-10-02 11:59:23 +02:00
Cristian Maglie cabae13e55 [PUSB] Fixed the correct number of endpoints 2015-10-02 11:59:23 +02:00
Cristian Maglie e42d7d6221 [PUSB] Fixed check for available endpoints
The check for available slot in PluggableUSB is done on the endpoint
and not on the number of plugged modules.

The modulesCount field is no longer useful and it has been removed.
2015-10-02 11:59:23 +02:00
Cristian Maglie c0f9296ae5 [PUSB] No more static fields in PluggableUSB class 2015-10-02 11:59:23 +02:00
Cristian Maglie dbaec17c03 [PUSB] epType array is now part of HID class 2015-10-02 11:59:23 +02:00
Cristian Maglie f8b2d8acb3 [HID] Removed static fields in HID class
There is still the epType[] array to be handled in some way.
2015-10-02 11:59:23 +02:00
Cristian Maglie 27c1832aca [PUSB] The latest fields are now set via constructor 2015-10-02 11:59:23 +02:00
Cristian Maglie 9065229595 [PUSB] callbacks are now pure virtual methods
This change allows the compiler to handle callbacks resolution.

Callbacks now must be implemented on the class that extends
PUSBListNode and this is forced by compiler by means of pure
virtual methods.

Also the calls to HID.interface() and HID.endpoint() can now
be simplified to interface() and endpoint() respectively since
the methods are no more static.
2015-10-02 11:59:23 +02:00
Cristian Maglie ab19daef28 [PUSB] Moved static members inside HID_ class
This commit prepares for the next refactoring
2015-10-02 11:59:22 +02:00
Cristian Maglie 7fee0f0a75 [PUSB] replaced u8 with uint8_t 2015-10-02 11:59:22 +02:00
Cristian Maglie 34a75d9416 [PUSB] Selected interface and endpoint are now part of PUSBListNode
The method

   int8_t PluggableUSB::addFunction(PUSBListNode *, uint8_t *)

has been changed to

   bool PluggableUSB::plug(PUSBListNode *node)

since both EP and Interfaces are now saved directly into node
2015-10-02 11:59:22 +02:00
Cristian Maglie 7811c2ceed [HID] Now HID extends directly PluggableUSBListNode
This avoid duplicate instatiation of callback and save a
considerable amount of flash.
2015-10-02 11:59:22 +02:00
Cristian Maglie c07f988609 [PUSB] Global functions PUSB_* are now methods of PluggableUSB class 2015-10-02 11:59:22 +02:00
Cristian Maglie 7302965552 [PUSB] PUSBCallback struct has been merged into PUSBListNode
This slightly simplifies PluggableUSB API.
2015-10-02 11:59:22 +02:00
Arturo Guadalupi 2aaef8cdad Added LED_BUILTIN to GEMMA
as asked in #3907
2015-10-01 17:09:59 +02:00
Cristian Maglie 766b8c383a Merge remote-tracking branch 'arduino/master' 2015-09-29 18:52:38 +02:00
Nico d2a52bc2ac Removed not used PUSB_Begin() 2015-09-29 17:02:07 +02:00
Cristian Maglie a8f15a5766 [HID] Added missing return in HID.begin() 2015-09-28 17:05:36 +02:00
Cristian Maglie 1bfae1d7d5 [HID] Removed unused PUSBReturn structure 2015-09-28 17:05:35 +02:00
Cristian Maglie 691d9fb7f0 [HID] Changed 'u8' to 'uint8_t' in definitions 2015-09-28 17:05:35 +02:00
Nico b53611a0d1 Removed not needed Timer warning
Timer is declared above, so nothing is missing here.
2015-09-28 16:30:40 +02:00
Nico 5ab6edb114 Removed Timer warnings when Timer 2 is not present 2015-09-28 16:30:40 +02:00
Nico a7edf4d66f Remove Compiler Warning in Tone.cpp 2015-09-28 16:30:39 +02:00
Nico 1be98bd7d5 Fix compiler warning in CDC.cpp 2015-09-28 16:30:39 +02:00
Nico 948c73c5e3 Fix compiler warnings in USBCore.cpp 2015-09-28 16:30:39 +02:00
Cristian Maglie 37e2914dbb [HID] added 'const' qualifier in HID initialization
See https://github.com/arduino/Arduino/pull/3840#discussion_r40438845
2015-09-28 13:32:01 +02:00
Cristian Maglie dfe6048175 Merge branch 'pluggable_hid_impr' of https://github.com/cmaglie/Arduino 2015-09-28 12:06:35 +02:00
Arturo Guadalupi d508e4dc54 Added Arduino Zero exclusion to README 2015-09-28 11:29:18 +02:00
Martino Facchin d3f399fad5 Merge pull request #3864 from facchinm/pulseInLongOVF
fix pulseInLong considering overflow
2015-09-25 16:05:35 +02:00
Cristian Maglie aba020da75 Fixed another regression in IPAddress.h
If the includer tries to inlcude IPAddress.h without first including
WString.h the build will fail.
2015-09-24 15:52:32 +02:00
Federico Fissore f36a7f6e48 {build.path}/{archive_file} is now {archive_file_path} in recipe.ar.pattern 2015-09-24 11:28:26 +02:00
Cristian Maglie 5a5cf764db HID: merged HID_Descriptor into HIDDescriptorListNode
This simplifies the object model and produce a small gain in code
size and performance.
2015-09-22 16:51:30 +02:00
Cristian Maglie 9b9bf95324 HID: Renamed fields in HIDDescriptorListNode and HID_Descriptor
In particular HIDDescriptorListNode.cb has been renamed to
HIDDescriptorListNode.descriptor because it contains decriptor data
and not callbacks.

Moreover the HID_Descriptor.descriptor field has been renamed
to HID_Descriptor.data so the structure has now two fields length
and data.

   typedef struct __attribute__((packed)) {
     uint16_t length;
     const void* data;
   } HID_Descriptor;

   class HIDDescriptorListNode {
   public:
     HIDDescriptorListNode *next = NULL;
     const HID_Descriptor *descriptor;
     HIDDescriptorListNode(const HID_Descriptor *d) : descriptor(d) { }
   };

This imply a change in the use of the node from:

  node->cb->lenght
  node->cd->descriptor

to

  node->descriptor->length
  node->descriptor->data
2015-09-22 16:49:14 +02:00
Arturo Guadalupi d775df409f Modified reference to Leonardo only in the examples
According to #3786 removed the reference to Leonardo only in while(!Serial) of the examples.
Changed in in "wait for serial port to connect. Needed for native USB port only"
2015-09-21 14:58:58 +02:00
Cristian Maglie 987b9bf2a8 Merge branch 'patch-7' of https://github.com/NicoHood/Arduino 2015-09-21 12:03:26 +02:00
Martino Facchin e5685758e3 fix pulseInLong considering overflow
fixes #3830
2015-09-21 11:59:20 +02:00
Martino Facchin 2453337d85 Merge pull request #3825 from NicoHood/patch-6
Remove Raw HID definitions at wrong place
2015-09-21 10:31:53 +02:00
Martino Facchin dc04933aa9 pulseInLong: fix incorrect timeout handling 2015-09-21 10:24:48 +02:00
Nico 7f2ca6ee28 Fix CDC Serial buffer size determination 2015-09-20 11:08:49 +02:00