ums.c (9b4fcf851a73554063d4a2de9a4f10cd23a0a4f6) | ums.c (b635069c09160a7bc742011b66e57e2e91f7e374) |
---|---|
1/*- 2 * Copyright (c) 1998 The NetBSD Foundation, Inc. 3 * All rights reserved. 4 * 5 * This code is derived from software contributed to The NetBSD Foundation 6 * by Lennart Augustsson (lennart@augustsson.net) at 7 * Carlstedt Research & Technology. 8 * --- 654 unchanged lines hidden (view full) --- 663 UID_ROOT, GID_OPERATOR, 0644); 664 if (err) { 665 goto detach; 666 } 667 SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), 668 SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), 669 OID_AUTO, "parseinfo", CTLTYPE_STRING|CTLFLAG_RD, 670 sc, 0, ums_sysctl_handler_parseinfo, | 1/*- 2 * Copyright (c) 1998 The NetBSD Foundation, Inc. 3 * All rights reserved. 4 * 5 * This code is derived from software contributed to The NetBSD Foundation 6 * by Lennart Augustsson (lennart@augustsson.net) at 7 * Carlstedt Research & Technology. 8 * --- 654 unchanged lines hidden (view full) --- 663 UID_ROOT, GID_OPERATOR, 0644); 664 if (err) { 665 goto detach; 666 } 667 SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), 668 SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), 669 OID_AUTO, "parseinfo", CTLTYPE_STRING|CTLFLAG_RD, 670 sc, 0, ums_sysctl_handler_parseinfo, |
671 "", "Dump UMS report parsing information"); | 671 "", "Dump of parsed HID report descriptor"); |
672 673 return (0); 674 675detach: 676 if (d_ptr) { 677 free(d_ptr, M_TEMP); 678 } 679 ums_detach(dev); --- 264 unchanged lines hidden (view full) --- 944} 945 946static int 947ums_sysctl_handler_parseinfo(SYSCTL_HANDLER_ARGS) 948{ 949 struct ums_softc *sc = arg1; 950 struct ums_info *info; 951 struct sbuf *sb; | 672 673 return (0); 674 675detach: 676 if (d_ptr) { 677 free(d_ptr, M_TEMP); 678 } 679 ums_detach(dev); --- 264 unchanged lines hidden (view full) --- 944} 945 946static int 947ums_sysctl_handler_parseinfo(SYSCTL_HANDLER_ARGS) 948{ 949 struct ums_softc *sc = arg1; 950 struct ums_info *info; 951 struct sbuf *sb; |
952 int i, j, err; | 952 int i, j, err, had_output; |
953 954 sb = sbuf_new_auto(); | 953 954 sb = sbuf_new_auto(); |
955 for (i = 0; i < UMS_INFO_MAX; i++) { | 955 for (i = 0, had_output = 0; i < UMS_INFO_MAX; i++) { |
956 info = &sc->sc_info[i]; 957 958 /* Don't emit empty info */ 959 if ((info->sc_flags & 960 (UMS_FLAG_X_AXIS | UMS_FLAG_Y_AXIS | UMS_FLAG_Z_AXIS | 961 UMS_FLAG_T_AXIS | UMS_FLAG_W_AXIS)) == 0 && 962 info->sc_buttons == 0) 963 continue; 964 | 956 info = &sc->sc_info[i]; 957 958 /* Don't emit empty info */ 959 if ((info->sc_flags & 960 (UMS_FLAG_X_AXIS | UMS_FLAG_Y_AXIS | UMS_FLAG_Z_AXIS | 961 UMS_FLAG_T_AXIS | UMS_FLAG_W_AXIS)) == 0 && 962 info->sc_buttons == 0) 963 continue; 964 |
965 if (had_output) 966 sbuf_printf(sb, "\n"); 967 had_output = 1; |
|
965 sbuf_printf(sb, "i%d:", i + 1); 966 if (info->sc_flags & UMS_FLAG_X_AXIS) 967 sbuf_printf(sb, " X:r%d, p%d, s%d;", 968 (int)info->sc_iid_x, 969 (int)info->sc_loc_x.pos, 970 (int)info->sc_loc_x.size); 971 if (info->sc_flags & UMS_FLAG_Y_AXIS) 972 sbuf_printf(sb, " Y:r%d, p%d, s%d;", --- 17 unchanged lines hidden (view full) --- 990 (int)info->sc_loc_w.size); 991 992 for (j = 0; j < info->sc_buttons; j++) { 993 sbuf_printf(sb, " B%d:r%d, p%d, s%d;", j + 1, 994 (int)info->sc_iid_btn[j], 995 (int)info->sc_loc_btn[j].pos, 996 (int)info->sc_loc_btn[j].size); 997 } | 968 sbuf_printf(sb, "i%d:", i + 1); 969 if (info->sc_flags & UMS_FLAG_X_AXIS) 970 sbuf_printf(sb, " X:r%d, p%d, s%d;", 971 (int)info->sc_iid_x, 972 (int)info->sc_loc_x.pos, 973 (int)info->sc_loc_x.size); 974 if (info->sc_flags & UMS_FLAG_Y_AXIS) 975 sbuf_printf(sb, " Y:r%d, p%d, s%d;", --- 17 unchanged lines hidden (view full) --- 993 (int)info->sc_loc_w.size); 994 995 for (j = 0; j < info->sc_buttons; j++) { 996 sbuf_printf(sb, " B%d:r%d, p%d, s%d;", j + 1, 997 (int)info->sc_iid_btn[j], 998 (int)info->sc_loc_btn[j].pos, 999 (int)info->sc_loc_btn[j].size); 1000 } |
998 sbuf_printf(sb, "\n"); | |
999 } 1000 sbuf_finish(sb); 1001 err = SYSCTL_OUT(req, sbuf_data(sb), sbuf_len(sb) + 1); 1002 sbuf_delete(sb); 1003 1004 return (err); 1005} 1006 --- 18 unchanged lines hidden --- | 1001 } 1002 sbuf_finish(sb); 1003 err = SYSCTL_OUT(req, sbuf_data(sb), sbuf_len(sb) + 1); 1004 sbuf_delete(sb); 1005 1006 return (err); 1007} 1008 --- 18 unchanged lines hidden --- |