Skip to content

Commit e97ac18

Browse files
committed
factor out name-setting in usb_midi_set_names()
1 parent 814ebc6 commit e97ac18

File tree

2 files changed

+32
-29
lines changed

2 files changed

+32
-29
lines changed

shared-bindings/usb_midi/__init__.c

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -78,23 +78,23 @@ STATIC mp_obj_t usb_midi_enable(void) {
7878
}
7979
MP_DEFINE_CONST_FUN_OBJ_0(usb_midi_enable_obj, usb_midi_enable);
8080

81-
STATIC void set_name(mp_obj_t *arg_obj, qstr arg_name, char **custom_name) {
82-
if (*arg_obj == mp_const_none) {
83-
return;
84-
}
8581

86-
mp_buffer_info_t name;
87-
mp_get_buffer_raise(*arg_obj, &name, MP_BUFFER_READ);
88-
mp_arg_validate_length_range(name.len, 1, 126, arg_name);
82+
static void set_name(mp_obj_t name_obj, qstr arg_name_qstr, char **custom_name_p) {
83+
if (name_obj != mp_const_none) {
84+
mp_buffer_info_t name;
85+
mp_get_buffer_raise(name_obj, &name, MP_BUFFER_READ);
86+
mp_arg_validate_length_range(name.len, 1, 126, arg_name_qstr);
8987

90-
if (*custom_name == NULL) {
91-
*custom_name = port_malloc(sizeof(char) * 128, false);
92-
}
88+
if (*custom_name_p == NULL) {
89+
*custom_name_p = port_malloc(sizeof(char) * 128, false);
90+
}
9391

94-
memcpy(*custom_name, name.buf, name.len);
95-
*custom_name[name.len] = 0;
92+
memcpy(*custom_name_p, name.buf, name.len);
93+
(*custom_name_p)[name.len] = 0;
94+
}
9695
}
9796

97+
9898
//| def set_names(
9999
//| self,
100100
//| *,
@@ -117,24 +117,27 @@ STATIC void set_name(mp_obj_t *arg_obj, qstr arg_name, char **custom_name) {
117117
//| ...
118118
//|
119119
STATIC mp_obj_t usb_midi_set_names(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
120+
enum { ARG_streaming_interface_name, ARG_audio_control_interface_name, ARG_in_jack_name, ARG_out_jack_name };
120121
static const mp_arg_t allowed_args[] = {
121-
{ MP_QSTR_streaming_interface_name, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = mp_const_none} },
122+
{ MP_QSTR_streaming_interface_name, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = mp_const_none} },
122123
{ MP_QSTR_audio_control_interface_name, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = mp_const_none} },
123-
{ MP_QSTR_in_jack_name, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = mp_const_none} },
124-
{ MP_QSTR_out_jack_name, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = mp_const_none} },
124+
{ MP_QSTR_in_jack_name, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = mp_const_none} },
125+
{ MP_QSTR_out_jack_name, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = mp_const_none} },
125126
};
126-
struct {
127-
mp_arg_val_t streaming_interface_name;
128-
mp_arg_val_t audio_control_interface_name;
129-
mp_arg_val_t in_jack_name;
130-
mp_arg_val_t out_jack_name;
131-
} args;
127+
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
132128
mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, (mp_arg_val_t *)&args);
133129

134-
set_name(&(args.streaming_interface_name.u_obj), MP_QSTR_streaming_interface_name, &custom_usb_midi_streaming_interface_name);
135-
set_name(&(args.audio_control_interface_name.u_obj), MP_QSTR_audio_control_interface_name, &custom_usb_midi_audio_control_interface_name);
136-
set_name(&(args.in_jack_name.u_obj), MP_QSTR_in_jack_name, &custom_usb_midi_in_jack_name);
137-
set_name(&(args.out_jack_name.u_obj), MP_QSTR_out_jack_name, &custom_usb_midi_out_jack_name);
130+
mp_obj_t streaming_interface_name_obj = args[ARG_streaming_interface_name].u_obj;
131+
set_name(streaming_interface_name_obj, MP_QSTR_streaming_interface_name, &custom_usb_midi_streaming_interface_name);
132+
133+
mp_obj_t audio_control_interface_name_obj = args[ARG_audio_control_interface_name].u_obj;
134+
set_name(audio_control_interface_name_obj, MP_QSTR_audio_control_interface_name, &custom_usb_midi_audio_control_interface_name);
135+
136+
mp_obj_t in_jack_name_obj = args[ARG_in_jack_name].u_obj;
137+
set_name(in_jack_name_obj, MP_QSTR_in_jack_name, &custom_usb_midi_in_jack_name);
138+
139+
mp_obj_t out_jack_name_obj = args[ARG_out_jack_name].u_obj;
140+
set_name(out_jack_name_obj, MP_QSTR_out_jack_name, &custom_usb_midi_out_jack_name);
138141

139142
return mp_const_none;
140143
}

shared-module/usb_midi/__init__.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,10 +177,10 @@ size_t usb_midi_descriptor_length(void) {
177177
return sizeof(usb_midi_descriptor_template);
178178
}
179179

180-
char *custom_usb_midi_streaming_interface_name;
181-
char *custom_usb_midi_audio_control_interface_name;
182-
char *custom_usb_midi_in_jack_name;
183-
char *custom_usb_midi_out_jack_name;
180+
char *custom_usb_midi_streaming_interface_name = NULL;
181+
char *custom_usb_midi_audio_control_interface_name = NULL;
182+
char *custom_usb_midi_in_jack_name = NULL;
183+
char *custom_usb_midi_out_jack_name = NULL;
184184

185185
size_t usb_midi_add_descriptor(uint8_t *descriptor_buf, descriptor_counts_t *descriptor_counts, uint8_t *current_interface_string) {
186186
const char *midi_streaming_interface_name;

0 commit comments

Comments
 (0)