@@ -78,13 +78,101 @@ STATIC mp_obj_t usb_midi_enable(void) {
78
78
}
79
79
MP_DEFINE_CONST_FUN_OBJ_0 (usb_midi_enable_obj , usb_midi_enable );
80
80
81
+ STATIC mp_obj_t usb_midi_set_custom_name (size_t n_args , const mp_obj_t * pos_args , mp_map_t * kw_args , char * * custom_name ) {
82
+ static const mp_arg_t allowed_args [] = {
83
+ { MP_QSTR_name , MP_ARG_OBJ | MP_ARG_REQUIRED , {.u_rom_obj = mp_const_none } }
84
+ };
85
+ mp_arg_val_t args [MP_ARRAY_SIZE (allowed_args )];
86
+ mp_arg_parse_all (n_args , pos_args , kw_args , MP_ARRAY_SIZE (allowed_args ), allowed_args , (mp_arg_val_t * )& args );
87
+
88
+ mp_buffer_info_t name ;
89
+ mp_get_buffer_raise (args [0 ].u_obj , & name , MP_BUFFER_READ );
90
+ mp_arg_validate_length_range (name .len , 1 , 126 , MP_QSTR_name );
91
+
92
+ if (* custom_name == NULL ) {
93
+ * custom_name = port_malloc (sizeof (char ) * 128 , false);
94
+ }
95
+ memcpy (* custom_name , name .buf , name .len );
96
+ * custom_name [name .len ] = 0 ;
97
+
98
+ return mp_const_none ;
99
+ }
100
+
101
+ //| def set_streaming_interface_name(name: str) -> None:
102
+ //| """Override the MIDI interface name in the USB Interface Descriptor.
103
+ //|
104
+ //| ``name`` must be an ASCII string (or buffer) of at most 126 characters.
105
+ //|
106
+ //| This method must be called in boot.py to have any effect.
107
+ //|
108
+ //| Not available on boards without native USB support.
109
+ //| """
110
+ //| ...
111
+ //|
112
+ STATIC mp_obj_t usb_midi_set_streaming_interface_name (size_t n_args , const mp_obj_t * pos_args , mp_map_t * kw_args ) {
113
+ return usb_midi_set_custom_name (n_args , pos_args , kw_args , & custom_usb_midi_streaming_interface_name );
114
+ }
115
+ MP_DEFINE_CONST_FUN_OBJ_KW (usb_midi_set_streaming_interface_name_obj , 1 , usb_midi_set_streaming_interface_name );
116
+
117
+ //| def set_audio_control_interface_name(name: str) -> None:
118
+ //| """Override the audio control interface name in the USB Interface Descriptor.
119
+ //|
120
+ //| ``name`` must be an ASCII string (or buffer) of at most 126 characters.
121
+ //|
122
+ //| This method must be called in boot.py to have any effect.
123
+ //|
124
+ //| Not available on boards without native USB support.
125
+ //| """
126
+ //| ...
127
+ //|
128
+ STATIC mp_obj_t usb_midi_set_audio_control_interface_name (size_t n_args , const mp_obj_t * pos_args , mp_map_t * kw_args ) {
129
+ return usb_midi_set_custom_name (n_args , pos_args , kw_args , & custom_usb_midi_audio_control_interface_name );
130
+ }
131
+ MP_DEFINE_CONST_FUN_OBJ_KW (usb_midi_set_audio_control_interface_name_obj , 1 , usb_midi_set_audio_control_interface_name );
132
+
133
+ //| def set_in_jack_name(name: str) -> None:
134
+ //| """Override the MIDI IN jack name in the USB Interface Descriptor.
135
+ //|
136
+ //| ``name`` must be an ASCII string (or buffer) of at most 126 characters.
137
+ //|
138
+ //| This method must be called in boot.py to have any effect.
139
+ //|
140
+ //| Not available on boards without native USB support.
141
+ //| """
142
+ //| ...
143
+ //|
144
+ STATIC mp_obj_t usb_midi_set_in_jack_name (size_t n_args , const mp_obj_t * pos_args , mp_map_t * kw_args ) {
145
+ return usb_midi_set_custom_name (n_args , pos_args , kw_args , & custom_usb_midi_in_jack_name );
146
+ }
147
+ MP_DEFINE_CONST_FUN_OBJ_KW (usb_midi_set_in_jack_name_obj , 1 , usb_midi_set_in_jack_name );
148
+
149
+ //| def set_out_jack_name(name: str) -> None:
150
+ //| """Override the MIDI OUT jack name in the USB Interface Descriptor.
151
+ //|
152
+ //| ``name`` must be an ASCII string (or buffer) of at most 126 characters.
153
+ //|
154
+ //| This method must be called in boot.py to have any effect.
155
+ //|
156
+ //| Not available on boards without native USB support.
157
+ //| """
158
+ //| ...
159
+ //|
160
+ STATIC mp_obj_t usb_midi_set_out_jack_name (size_t n_args , const mp_obj_t * pos_args , mp_map_t * kw_args ) {
161
+ return usb_midi_set_custom_name (n_args , pos_args , kw_args , & custom_usb_midi_out_jack_name );
162
+ }
163
+ MP_DEFINE_CONST_FUN_OBJ_KW (usb_midi_set_out_jack_name_obj , 1 , usb_midi_set_out_jack_name );
164
+
81
165
mp_map_elem_t usb_midi_module_globals_table [] = {
82
- { MP_ROM_QSTR (MP_QSTR___name__ ), MP_ROM_QSTR (MP_QSTR_usb_midi ) },
83
- { MP_ROM_QSTR (MP_QSTR_disable ), MP_OBJ_FROM_PTR (& usb_midi_disable_obj ) },
84
- { MP_ROM_QSTR (MP_QSTR_enable ), MP_OBJ_FROM_PTR (& usb_midi_enable_obj ) },
85
- { MP_ROM_QSTR (MP_QSTR_ports ), mp_const_empty_tuple },
86
- { MP_ROM_QSTR (MP_QSTR_PortIn ), MP_OBJ_FROM_PTR (& usb_midi_portin_type ) },
87
- { MP_ROM_QSTR (MP_QSTR_PortOut ), MP_OBJ_FROM_PTR (& usb_midi_portout_type ) },
166
+ { MP_ROM_QSTR (MP_QSTR___name__ ), MP_ROM_QSTR (MP_QSTR_usb_midi ) },
167
+ { MP_ROM_QSTR (MP_QSTR_disable ), MP_OBJ_FROM_PTR (& usb_midi_disable_obj ) },
168
+ { MP_ROM_QSTR (MP_QSTR_enable ), MP_OBJ_FROM_PTR (& usb_midi_enable_obj ) },
169
+ { MP_ROM_QSTR (MP_QSTR_ports ), mp_const_empty_tuple },
170
+ { MP_ROM_QSTR (MP_QSTR_PortIn ), MP_OBJ_FROM_PTR (& usb_midi_portin_type ) },
171
+ { MP_ROM_QSTR (MP_QSTR_PortOut ), MP_OBJ_FROM_PTR (& usb_midi_portout_type ) },
172
+ { MP_ROM_QSTR (MP_QSTR_set_streaming_interface_name ), MP_OBJ_FROM_PTR (& usb_midi_set_streaming_interface_name_obj ) },
173
+ { MP_ROM_QSTR (MP_QSTR_set_audio_control_interface_name ), MP_OBJ_FROM_PTR (& usb_midi_set_audio_control_interface_name_obj ) },
174
+ { MP_ROM_QSTR (MP_QSTR_set_in_jack_name ), MP_OBJ_FROM_PTR (& usb_midi_set_in_jack_name_obj ) },
175
+ { MP_ROM_QSTR (MP_QSTR_set_out_jack_name ), MP_OBJ_FROM_PTR (& usb_midi_set_out_jack_name_obj ) },
88
176
};
89
177
90
178
// This isn't const so we can set ports dynamically.
0 commit comments