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 ---