eizoctl: also report USB-C from --input '?'
And related cleanup.
This commit is contained in:
parent
9039db44f6
commit
2594f8467d
73
eizoctl.c
73
eizoctl.c
@ -803,7 +803,7 @@ eizo_port_by_name(const char *name)
|
|||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static const char *
|
||||||
eizo_port_to_name(uint16_t port)
|
eizo_port_to_name(uint16_t port)
|
||||||
{
|
{
|
||||||
const char *stem = NULL;
|
const char *stem = NULL;
|
||||||
@ -811,14 +811,14 @@ eizo_port_to_name(uint16_t port)
|
|||||||
if (group && group < sizeof g_port_names / sizeof g_port_names[0])
|
if (group && group < sizeof g_port_names / sizeof g_port_names[0])
|
||||||
stem = g_port_names[group][0];
|
stem = g_port_names[group][0];
|
||||||
|
|
||||||
static char buffer[32] = "";
|
static char buf[32] = "";
|
||||||
if (!stem)
|
if (!stem)
|
||||||
snprintf(buffer, sizeof buffer, "%x", port);
|
snprintf(buf, sizeof buf, "%x", port);
|
||||||
else if (!number)
|
else if (!number)
|
||||||
snprintf(buffer, sizeof buffer, "%s", stem);
|
snprintf(buf, sizeof buf, "%s", stem);
|
||||||
else
|
else
|
||||||
snprintf(buffer, sizeof buffer, "%s %d", stem, (number + 1));
|
snprintf(buf, sizeof buf, "%s %d", stem, (number + 1));
|
||||||
return buffer;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
@ -895,7 +895,7 @@ eizo_get_input_ports(struct eizo_monitor *m, uint16_t *ports, size_t size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static uint16_t
|
static uint16_t
|
||||||
eizo_resolve_port(struct eizo_monitor *m, const char *port)
|
eizo_resolve_port_by_name(struct eizo_monitor *m, const char *port)
|
||||||
{
|
{
|
||||||
uint8_t usb_c_index = 0;
|
uint8_t usb_c_index = 0;
|
||||||
if (eizo_port_by_name_in_group(port, g_port_names_usb_c, &usb_c_index)) {
|
if (eizo_port_by_name_in_group(port, g_port_names_usb_c, &usb_c_index)) {
|
||||||
@ -907,6 +907,26 @@ eizo_resolve_port(struct eizo_monitor *m, const char *port)
|
|||||||
return eizo_port_by_name(port);
|
return eizo_port_by_name(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *
|
||||||
|
eizo_resolve_port_to_name(struct eizo_monitor *m, uint16_t port)
|
||||||
|
{
|
||||||
|
// USB-C ports are a bit tricky, they only need to be /displayed/ as such.
|
||||||
|
struct eizo_profile_item *item =
|
||||||
|
&m->profile[EIZO_PROFILE_KEY_USB_C_INPUT_PORTS];
|
||||||
|
for (uint8_t i = 0; i < item->len / 2; i++) {
|
||||||
|
if (port != peek_u16le(item->data + i * 2))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
static char buf[32] = "";
|
||||||
|
if (!i)
|
||||||
|
snprintf(buf, sizeof buf, "%s", g_port_names_usb_c[0]);
|
||||||
|
else
|
||||||
|
snprintf(buf, sizeof buf, "%s %u", g_port_names_usb_c[0], (i + 1));
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
return eizo_port_to_name(port);
|
||||||
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
eizo_set_input_port(struct eizo_monitor *m, uint16_t port)
|
eizo_set_input_port(struct eizo_monitor *m, uint16_t port)
|
||||||
{
|
{
|
||||||
@ -1118,13 +1138,12 @@ run(int argc, char *argv[], print_fn output, print_fn error)
|
|||||||
}
|
}
|
||||||
if (port) {
|
if (port) {
|
||||||
uint16_t prev = 0;
|
uint16_t prev = 0;
|
||||||
uint16_t next = eizo_resolve_port(&m, port);
|
uint16_t next = eizo_resolve_port_by_name(&m, port);
|
||||||
if (!eizo_get_input_port(&m, &prev)) {
|
if (!eizo_get_input_port(&m, &prev)) {
|
||||||
error("Failed to get input port: %s\n", m.error);
|
error("Failed to get input port: %s\n", m.error);
|
||||||
} else if (!strcmp(port, "?")) {
|
} else if (!strcmp(port, "?")) {
|
||||||
// XXX: This does not report USB-C.
|
|
||||||
output("%s %s: input: %s\n",
|
output("%s %s: input: %s\n",
|
||||||
m.product, m.serial, eizo_port_to_name(prev));
|
m.product, m.serial, eizo_resolve_port_to_name(&m, prev));
|
||||||
} else if (!next) {
|
} else if (!next) {
|
||||||
error("Failed to resolve port name: %s\n", port);
|
error("Failed to resolve port name: %s\n", port);
|
||||||
} else {
|
} else {
|
||||||
@ -1283,21 +1302,9 @@ append_monitor(struct eizo_monitor *m, HMENU menu, UINT_PTR base)
|
|||||||
if (!ports[0])
|
if (!ports[0])
|
||||||
ports[0] = current;
|
ports[0] = current;
|
||||||
|
|
||||||
// USB-C ports are a bit tricky, they only need to be /displayed/ as such.
|
|
||||||
struct eizo_profile_item *item =
|
|
||||||
&m->profile[EIZO_PROFILE_KEY_USB_C_INPUT_PORTS];
|
|
||||||
for (size_t i = 0; ports[i]; i++) {
|
for (size_t i = 0; ports[i]; i++) {
|
||||||
uint8_t usb_c = 0;
|
snwprintf(buf, sizeof buf, L"%s",
|
||||||
for (size_t u = 0; u < item->len / 2; u++)
|
eizo_resolve_port_to_name(m, ports[i]));
|
||||||
if (ports[i] == peek_u16le(item->data + u * 2))
|
|
||||||
usb_c = u + 1;
|
|
||||||
|
|
||||||
if (!usb_c)
|
|
||||||
snwprintf(buf, sizeof buf, L"%s", eizo_port_to_name(ports[i]));
|
|
||||||
else if (usb_c == 1)
|
|
||||||
snwprintf(buf, sizeof buf, L"%s", g_port_names_usb_c[0]);
|
|
||||||
else
|
|
||||||
snwprintf(buf, sizeof buf, L"%s %u", g_port_names_usb_c[0], usb_c);
|
|
||||||
|
|
||||||
UINT flags = MF_STRING;
|
UINT flags = MF_STRING;
|
||||||
if (ports[i] == current)
|
if (ports[i] == current)
|
||||||
@ -1664,23 +1671,9 @@ message_error(const char *format, ...)
|
|||||||
if (!ports[0])
|
if (!ports[0])
|
||||||
ports[0] = current;
|
ports[0] = current;
|
||||||
|
|
||||||
// USB-C ports are a bit tricky, they only need to be /displayed/ as such.
|
|
||||||
struct eizo_profile_item *item =
|
|
||||||
&m.monitor->profile[EIZO_PROFILE_KEY_USB_C_INPUT_PORTS];
|
|
||||||
for (size_t i = 0; ports[i]; i++) {
|
for (size_t i = 0; ports[i]; i++) {
|
||||||
uint8_t usb_c = 0;
|
NSString *title = [NSString stringWithUTF8String:
|
||||||
for (size_t u = 0; u < item->len / 2; u++)
|
eizo_resolve_port_to_name(m.monitor, ports[i])];
|
||||||
if (ports[i] == peek_u16le(item->data + u * 2))
|
|
||||||
usb_c = u + 1;
|
|
||||||
|
|
||||||
NSString *title = nil;
|
|
||||||
if (!usb_c)
|
|
||||||
title = [NSString stringWithUTF8String:eizo_port_to_name(ports[i])];
|
|
||||||
else if (usb_c == 1)
|
|
||||||
title = [NSString stringWithUTF8String:g_port_names_usb_c[0]];
|
|
||||||
else
|
|
||||||
title = [NSString stringWithFormat:@"%s %u",
|
|
||||||
g_port_names_usb_c[0], usb_c];
|
|
||||||
|
|
||||||
NSMenuItem *inputPortItem = [[NSMenuItem alloc]
|
NSMenuItem *inputPortItem = [[NSMenuItem alloc]
|
||||||
initWithTitle:title action:@selector(setInputPort:)
|
initWithTitle:title action:@selector(setInputPort:)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user