summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Shawcroft <scott@tannewt.org>2019-01-10 11:00:40 -0800
committerScott Shawcroft <scott@tannewt.org>2019-01-10 11:00:40 -0800
commit3dd59c3d5fa59f5bea3acc8e55c4d4a5091e66eb (patch)
tree2f88dec06349002ce2406046ab260a7429a21b3d
parentb5e40f52c2b1c2890c866d7305e0e99b4811b7f5 (diff)
Polish thanks to Dan's feedback
-rwxr-xr-x.travis.yml2
-rw-r--r--shared-bindings/usb_midi/PortIn.c3
-rw-r--r--shared-bindings/usb_midi/PortOut.c3
-rw-r--r--shared-module/usb_midi/__init__.c13
-rwxr-xr-xsupervisor/memory.h9
-rw-r--r--tools/gen_usb_descriptor.py2
6 files changed, 21 insertions, 11 deletions
diff --git a/.travis.yml b/.travis.yml
index d3e9f4bf1..bab5a2456 100755
--- a/.travis.yml
+++ b/.travis.yml
@@ -21,7 +21,7 @@ git:
# that SDK is shortest and add it there. In the case of major re-organizations,
# just try to make the builds "about equal in run time"
env:
- - TRAVIS_TESTS="unix docs translations website" TRAVIS_BOARDS="feather_huzzah circuitplayground_express mini_sam_m4 grandcentral_m4_express pca10056 pca10059 feather_nrf52832 feather_nrf52840_express makerdiary_nrf52840_mdk particle_boron particle_argon particle_xenon sparkfun_nrf52840_mini" TRAVIS_SDK=arm:nrf:esp8266
+ - TRAVIS_TESTS="unix docs translations website" TRAVIS_BOARDS="feather_huzzah circuitplayground_express mini_sam_m4 grandcentral_m4_express pca10056 pca10059 feather_nrf52840_express makerdiary_nrf52840_mdk particle_boron particle_argon particle_xenon sparkfun_nrf52840_mini" TRAVIS_SDK=arm:nrf:esp8266
- TRAVIS_BOARDS="metro_m0_express metro_m4_express pirkey_m0 trellis_m4_express trinket_m0" TRAVIS_SDK=arm
- TRAVIS_BOARDS="feather_radiofruit_zigbee gemma_m0 hallowing_m0_express itsybitsy_m0_express itsybitsy_m4_express meowmeow" TRAVIS_SDK=arm
- TRAVIS_BOARDS="feather_m0_express_crickit feather_m0_rfm69 feather_m0_rfm9x feather_m4_express arduino_zero arduino_mkr1300 arduino_mkrzero" TRAVIS_SDK=arm
diff --git a/shared-bindings/usb_midi/PortIn.c b/shared-bindings/usb_midi/PortIn.c
index 0309b70f7..3c4d4f73f 100644
--- a/shared-bindings/usb_midi/PortIn.c
+++ b/shared-bindings/usb_midi/PortIn.c
@@ -45,6 +45,9 @@
//|
//| Not currently dynamically supported.
//|
+//| PortIn objects are constructed for every corresponding entry in the USB descriptor and added
+//| to the `usb_midi.ports` tuple.
+//|
STATIC mp_obj_t usb_midi_portin_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *pos_args) {
return mp_const_none;
diff --git a/shared-bindings/usb_midi/PortOut.c b/shared-bindings/usb_midi/PortOut.c
index 156a092e0..8b26b8ffc 100644
--- a/shared-bindings/usb_midi/PortOut.c
+++ b/shared-bindings/usb_midi/PortOut.c
@@ -45,6 +45,9 @@
//|
//| Not currently dynamically supported.
//|
+//| PortOut objects are constructed for every corresponding entry in the USB descriptor and added
+//| to the `usb_midi.ports` tuple.
+//|
STATIC mp_obj_t usb_midi_portout_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *pos_args) {
return mp_const_none;
diff --git a/shared-module/usb_midi/__init__.c b/shared-module/usb_midi/__init__.c
index 60afeeef1..73a314b99 100644
--- a/shared-module/usb_midi/__init__.c
+++ b/shared-module/usb_midi/__init__.c
@@ -38,18 +38,11 @@
supervisor_allocation* usb_midi_allocation;
-static inline uint16_t word_align(uint16_t size) {
- if (size % 4 != 0) {
- return (size & 0xfffc) + 0x4;
- }
- return size;
-}
-
void usb_midi_init(void) {
// TODO(tannewt): Make this dynamic.
- uint16_t tuple_size = word_align(sizeof(mp_obj_tuple_t) + sizeof(mp_obj_t*) * 2);
- uint16_t portin_size = word_align(sizeof(usb_midi_portin_obj_t));
- uint16_t portout_size = word_align(sizeof(usb_midi_portout_obj_t));
+ uint16_t tuple_size = align32_size(sizeof(mp_obj_tuple_t) + sizeof(mp_obj_t*) * 2);
+ uint16_t portin_size = align32_size(sizeof(usb_midi_portin_obj_t));
+ uint16_t portout_size = align32_size(sizeof(usb_midi_portout_obj_t));
// For each embedded MIDI Jack in the descriptor we create a Port
usb_midi_allocation = allocate_memory(tuple_size + portin_size + portout_size, false);
diff --git a/supervisor/memory.h b/supervisor/memory.h
index 4f8317a2d..c89f14bd9 100755
--- a/supervisor/memory.h
+++ b/supervisor/memory.h
@@ -39,6 +39,8 @@ typedef struct {
uint32_t length; // in bytes
} supervisor_allocation;
+
+
void memory_init(void);
void free_memory(supervisor_allocation* allocation);
supervisor_allocation* allocate_remaining_memory(void);
@@ -48,4 +50,11 @@ supervisor_allocation* allocate_remaining_memory(void);
// statically allocated memory.
supervisor_allocation* allocate_memory(uint32_t length, bool high_address);
+static inline uint16_t align32_size(uint16_t size) {
+ if (size % 4 != 0) {
+ return (size & 0xfffc) + 0x4;
+ }
+ return size;
+}
+
#endif // MICROPY_INCLUDED_SUPERVISOR_MEMORY_H
diff --git a/tools/gen_usb_descriptor.py b/tools/gen_usb_descriptor.py
index e8d66443d..10bbf5066 100644
--- a/tools/gen_usb_descriptor.py
+++ b/tools/gen_usb_descriptor.py
@@ -274,6 +274,8 @@ descriptor_list = []
descriptor_list.append(cdc_iad)
descriptor_list.extend(cdc_interfaces)
descriptor_list.extend(msc_interfaces)
+# Only add the control interface because other audio interfaces are managed by it to ensure the
+# correct ordering.
descriptor_list.append(audio_control_interface)
# Put the CDC IAD just before the CDC interfaces.
# There appears to be a bug in the Windows composite USB driver that requests the