Commit Graph

301 Commits

Author SHA1 Message Date
Sandeep Mistry 6e2f0746bd Add inline to recv and setRxIntMsk to remove warning (#4078) 2015-11-05 14:28:29 -05:00
Cristian Maglie 0b69598cfb [PUSB] Fixed return value for HID_::SendReport 2015-10-30 13:00:33 +01:00
Nico 7d012c11b8 [PHID] send data if report ID was sent successful
If the first sending was not successful it is better to abort. Then we get a return value of -1 (instead of -2 if the 2nd call will also fail) and we do not need to block even longer, with another timeout.
2015-10-30 12:58:14 +01:00
NicoHood 1f318b08d4 Added return value to HID SendReport 2015-10-30 12:58:14 +01:00
Sandeep Mistry 02dcc6ec74 check TWWC (Write Collision Flag) bit after setting TWDR
as suggested by @earlyprogrammer in #2173, to ensure TWDR value is set
if there is a write collision
2015-10-22 16:33:00 +02:00
Sandeep Mistry 48bcef5a15 release TWI bus right after stop or repeated start is condition
this resolves timing issues seen in #1477
2015-10-22 16:29:43 +02:00
Cristian Maglie eefb9a8bcb Merge remote-tracking branch 'arduino/master' into HEAD 2015-10-21 15:53:59 +02:00
Martino Facchin ced062988b [USB] use plugged modules name to create iSerial field 2015-10-21 15:23:56 +02:00
NicoHood ca3c821c04 [PHID] Fixes protocol on reenumeration 2015-10-12 18:05:34 +02:00
Cristian Maglie f42b26c257 [HID] renamed HIDDescriptorListNode to HIDSubDescriptor 2015-10-12 12:24:07 +02:00
Cristian Maglie 2e755384f5 [PUSB] Renamed PUSBListNode to PluggableUSBModule 2015-10-12 12:14:07 +02:00
Cristian Maglie f720c8cacf [HID] made HIDDescriptorListNode.length constant 2015-10-12 11:59:08 +02:00
NicoHood ad0b3d9332 [PHID] Added missing GET_IDLE Request 2015-10-11 14:39:36 +02:00
NicoHood 8237e5422d [PHID] Added some hints for further optional implementations 2015-10-10 13:11:31 +02:00
NicoHood e3977037ae Added official HID definitions
Since the HID library adds some general HID definitions and structs, it is very useful to also include this in a custom library.
If you dupe the information you have problems of redeclaration.
Having those defintions inside the official HID library is essential for a good working additional  HID API.
2015-10-10 12:49:45 +02:00
Nico a343dd88d1 Remove unnecessary include
Its included by HID.h anyways.
2015-10-08 17:24:09 +02:00
Cristian Maglie f2d7b52e1b [HID] Improved checks in getDescriptor() method 2015-10-08 16:38:57 +02:00
NicoHood abd6b795c4 [PUSB] Removed unnecessary endpoint and interface function 2015-10-07 20:39:50 +02:00
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
Cristian Maglie 663c55706b [PUSB] renamed some parameters 2015-10-07 13:21:21 +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 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
Cristian Maglie a8f15a5766 [HID] Added missing return in HID.begin() 2015-09-28 17:05:36 +02:00
Cristian Maglie 691d9fb7f0 [HID] Changed 'u8' to 'uint8_t' in definitions 2015-09-28 17:05:35 +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
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
Nico 6153b93907 Remove Raw HID definitions at wrong place 2015-09-20 11:04:42 +02:00
Cristian Maglie b5911b2bc5 Fixed wrong category in EEPROM
See #3812
2015-09-18 11:23:11 +02:00
Cristian Maglie 08de587da7 Added categories to libraries
Fix #3812
2015-09-18 11:01:08 +02:00
Nate Williams 0b27210105 Wire (AVR): Fix bug with repeated START
Fix #66
2015-08-26 16:02:02 +02:00
Sandeep Mistry eab6601ebc implement Wire.end() for AVR core 2015-08-25 10:24:24 -04:00