Lines Matching defs:trial

24 	int (*add_elem_set)(struct elem_set_trial *trial,
26 int (*check_elem_props)(struct elem_set_trial *trial,
28 void (*change_elem_members)(struct elem_set_trial *trial,
30 int (*allocate_elem_set_tlv)(struct elem_set_trial *trial,
57 static int add_bool_elem_set(struct elem_set_trial *trial,
60 return snd_ctl_add_boolean_elem_set(trial->handle, info,
61 trial->element_count, trial->member_count);
64 static void change_bool_elem_members(struct elem_set_trial *trial,
70 for (i = 0; i < trial->member_count; ++i) {
76 static int allocate_bool_elem_set_tlv(struct elem_set_trial *trial,
94 static int add_int_elem_set(struct elem_set_trial *trial,
97 return snd_ctl_add_integer_elem_set(trial->handle, info,
98 trial->element_count, trial->member_count,
102 static int check_int_elem_props(struct elem_set_trial *trial,
115 static void change_int_elem_members(struct elem_set_trial *trial,
121 for (i = 0; i < trial->member_count; ++i) {
127 static int allocate_int_elem_set_tlv(struct elem_set_trial *trial,
177 static int add_enum_elem_set(struct elem_set_trial *trial,
180 return snd_ctl_add_enumerated_elem_set(trial->handle, info,
181 trial->element_count, trial->member_count,
186 static int check_enum_elem_props(struct elem_set_trial *trial,
201 err = snd_ctl_elem_info(trial->handle, info);
213 static void change_enum_elem_members(struct elem_set_trial *trial,
219 for (i = 0; i < trial->member_count; ++i) {
226 static int add_bytes_elem_set(struct elem_set_trial *trial,
229 return snd_ctl_add_bytes_elem_set(trial->handle, info,
230 trial->element_count, trial->member_count);
233 static void change_bytes_elem_members(struct elem_set_trial *trial,
239 for (i = 0; i < trial->member_count; ++i) {
245 static int allocate_bytes_elem_set_tlv(struct elem_set_trial *trial,
264 static int add_iec958_elem_set(struct elem_set_trial *trial,
269 snd_ctl_elem_info_get_id(info, trial->id);
271 err = snd_ctl_elem_add_iec958(trial->handle, trial->id);
279 return snd_ctl_elem_info(trial->handle, info);
282 static void change_iec958_elem_members(struct elem_set_trial *trial,
288 trial->element_count = 1;
297 static int add_int64_elem_set(struct elem_set_trial *trial,
300 return snd_ctl_add_integer64_elem_set(trial->handle, info,
301 trial->element_count, trial->member_count,
305 static int check_int64_elem_props(struct elem_set_trial *trial,
318 static void change_int64_elem_members(struct elem_set_trial *trial,
324 for (i = 0; i < trial->member_count; ++i) {
330 static int allocate_int64_elem_set_tlv(struct elem_set_trial *trial,
370 static int add_elem_set(struct elem_set_trial *trial)
377 snd_ctl_elem_type_name(trial->type));
383 err = trial->add_elem_set(trial, info);
385 snd_ctl_elem_info_get_id(info, trial->id);
390 static int check_event(struct elem_set_trial *trial, unsigned int mask,
401 if (snd_ctl_poll_descriptors_count(trial->handle) != 1)
404 if (snd_ctl_poll_descriptors(trial->handle, &pfds, 1) != 1)
415 err = snd_ctl_poll_descriptors_revents(trial->handle, &pfds,
424 err = snd_ctl_read(trial->handle, event);
444 static int check_elem_list(struct elem_set_trial *trial)
455 err = snd_ctl_elem_list(trial->handle, list);
468 err = snd_ctl_elem_list(trial->handle, list);
472 if (trial->element_count > snd_ctl_elem_list_get_count(list)) {
482 snd_ctl_elem_id_get_name(trial->id)) != 0)
485 snd_ctl_elem_id_get_interface(trial->id))
488 snd_ctl_elem_id_get_device(trial->id))
491 snd_ctl_elem_id_get_subdevice(trial->id))
499 snd_ctl_elem_id_get_numid(trial->id) + i)
502 snd_ctl_elem_id_get_index(trial->id) + i)
508 if (i != trial->element_count)
516 static int check_elem_set_props(struct elem_set_trial *trial)
529 snd_ctl_elem_info_set_id(info, trial->id);
530 numid = snd_ctl_elem_id_get_numid(trial->id);
531 index = snd_ctl_elem_id_get_index(trial->id);
533 for (i = 0; i < trial->element_count; ++i) {
543 err = snd_ctl_elem_info(trial->handle, info);
548 if (snd_ctl_elem_info_get_type(info) != trial->type)
550 if (snd_ctl_elem_info_get_count(info) != trial->member_count)
573 if (trial->type != SND_CTL_ELEM_TYPE_IEC958 &&
578 if (trial->check_elem_props != NULL) {
579 err = trial->check_elem_props(trial, info);
585 err = snd_ctl_elem_unlock(trial->handle, id);
597 err = snd_ctl_elem_tlv_read(trial->handle, trial->id,
604 trial->tlv_readable = true;
612 static int check_elems(struct elem_set_trial *trial)
622 snd_ctl_elem_value_set_id(data, trial->id);
623 numid = snd_ctl_elem_id_get_numid(trial->id);
624 index = snd_ctl_elem_id_get_index(trial->id);
626 for (i = 0; i < trial->element_count; ++i) {
636 err = snd_ctl_elem_read(trial->handle, data);
641 trial->change_elem_members(trial, data);
643 err = snd_ctl_elem_write(trial->handle, data);
651 static int check_tlv(struct elem_set_trial *trial)
660 err = trial->allocate_elem_set_tlv(trial, &tlv);
676 err = snd_ctl_elem_tlv_write(trial->handle, trial->id,
686 if (!trial->tlv_readable) {
688 count = trial->element_count;
693 err = check_event(trial, mask, count);
696 if (!trial->tlv_readable) {
700 snd_ctl_elem_info_set_id(info, trial->id);
701 err = snd_ctl_elem_info(trial->handle, info);
708 trial->tlv_readable = true;
711 err = snd_ctl_elem_tlv_read(trial->handle, trial->id, curr, len);
725 struct elem_set_trial trial = {0};
729 snd_ctl_elem_id_alloca(&trial.id);
731 err = snd_ctl_open(&trial.handle, "hw:0", 0);
735 err = snd_ctl_subscribe_events(trial.handle, 1);
741 trial.type = i + 1;
744 switch (trial.type) {
746 trial.element_count = 900;
747 trial.member_count = 128;
748 trial.add_elem_set = add_bool_elem_set;
749 trial.check_elem_props = NULL;
750 trial.change_elem_members = change_bool_elem_members;
751 trial.allocate_elem_set_tlv =
753 trial.tlv_readable = false;
756 trial.element_count = 900;
757 trial.member_count = 128;
758 trial.add_elem_set = add_int_elem_set;
759 trial.check_elem_props = check_int_elem_props;
760 trial.change_elem_members = change_int_elem_members;
761 trial.allocate_elem_set_tlv =
763 trial.tlv_readable = false;
766 trial.element_count = 900;
767 trial.member_count = 128;
768 trial.add_elem_set = add_enum_elem_set;
769 trial.check_elem_props = check_enum_elem_props;
770 trial.change_elem_members = change_enum_elem_members;
771 trial.allocate_elem_set_tlv = NULL;
772 trial.tlv_readable = false;
775 trial.element_count = 900;
776 trial.member_count = 512;
777 trial.add_elem_set = add_bytes_elem_set;
778 trial.check_elem_props = NULL;
779 trial.change_elem_members = change_bytes_elem_members;
780 trial.allocate_elem_set_tlv =
782 trial.tlv_readable = false;
785 trial.element_count = 1;
786 trial.member_count = 1;
787 trial.add_elem_set = add_iec958_elem_set;
788 trial.check_elem_props = NULL;
789 trial.change_elem_members = change_iec958_elem_members;
790 trial.allocate_elem_set_tlv = NULL;
791 trial.tlv_readable = false;
795 trial.element_count = 900;
796 trial.member_count = 64;
797 trial.add_elem_set = add_int64_elem_set;
798 trial.check_elem_props = check_int64_elem_props;
799 trial.change_elem_members = change_int64_elem_members;
800 trial.allocate_elem_set_tlv =
802 trial.tlv_readable = false;
807 err = add_elem_set(&trial);
810 snd_ctl_elem_type_name(trial.type));
813 err = check_event(&trial, SND_CTL_EVENT_MASK_ADD,
814 trial.element_count);
818 snd_ctl_elem_type_name(trial.type));
823 err = check_elem_list(&trial);
826 snd_ctl_elem_type_name(trial.type));
831 err = check_elem_set_props(&trial);
835 snd_ctl_elem_type_name(trial.type));
843 err = check_elems(&trial);
847 snd_ctl_elem_type_name(trial.type));
850 err = check_event(&trial, SND_CTL_EVENT_MASK_VALUE,
851 trial.element_count);
855 snd_ctl_elem_type_name(trial.type));
863 if (trial.allocate_elem_set_tlv != NULL) {
864 err = check_tlv(&trial);
868 snd_ctl_elem_type_name(trial.type));
874 err = snd_ctl_elem_remove(trial.handle, trial.id);
877 snd_ctl_elem_type_name(trial.type));
880 err = check_event(&trial, SND_CTL_EVENT_MASK_REMOVE,
881 trial.element_count);
885 snd_ctl_elem_type_name(trial.type));
894 snd_ctl_elem_remove(trial.handle, trial.id);