From 839903ab482a520d81d945ff9c4bcb177f164ce4 Mon Sep 17 00:00:00 2001 From: Will Xyen Date: Sun, 12 Sep 2021 19:04:15 -0700 Subject: [PATCH] acio: add MDXF node definition --- src/main/acio/acio.h | 8 +++++++- src/main/acio/mdxf.h | 48 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 src/main/acio/mdxf.h diff --git a/src/main/acio/acio.h b/src/main/acio/acio.h index 4ea3459..040f308 100644 --- a/src/main/acio/acio.h +++ b/src/main/acio/acio.h @@ -9,6 +9,7 @@ #include "acio/hdxs.h" #include "acio/icca.h" #include "acio/kfca.h" +#include "acio/mdxf.h" #include "acio/panb.h" #define AC_IO_SOF 0xAA @@ -37,9 +38,11 @@ enum ac_io_node_type { AC_IO_NODE_TYPE_LED_STRIP = 0x04020000, AC_IO_NODE_TYPE_LED_SPIKE = 0x05010000, AC_IO_NODE_TYPE_KFCA = 0x09060000, - AC_IO_NODE_TYPE_BI2A = 0x0d060000, AC_IO_NODE_TYPE_RVOL = 0x09060001, + AC_IO_NODE_TYPE_MDXF = 0x09070000, AC_IO_NODE_TYPE_PANB = 0x090E0000, + AC_IO_NODE_TYPE_BMPU = 0x0B000000, + AC_IO_NODE_TYPE_BI2A = 0x0D060000, }; #pragma pack(push, 1) @@ -84,6 +87,9 @@ struct ac_io_message { struct ac_io_panb_poll_out panb_poll_out; struct ac_io_hdxs_output hdxs_output; + + struct ac_io_mdxf_poll_in mdxf_poll_in; + struct ac_io_mdxf_light_out mdxf_light_out; }; } cmd; diff --git a/src/main/acio/mdxf.h b/src/main/acio/mdxf.h new file mode 100644 index 0000000..9bb5005 --- /dev/null +++ b/src/main/acio/mdxf.h @@ -0,0 +1,48 @@ +#ifndef AC_IO_MDXF_H +#define AC_IO_MDXF_H + +#include + +#define AC_IO_CMD_MDXF_POLL 0x0110 +#define AC_IO_CMD_MDXF_AUTO_GET_START 0x0116 +#define AC_IO_CMD_MDXF_LIGHT 0x0113 + +#pragma pack(push, 1) + +union mdxf_panel_sensors_individual { + struct { + uint8_t right : 1; + uint8_t left : 1; + uint8_t down : 1; + uint8_t up : 1; + }; + uint8_t raw; +}; + +struct mdxf_panel_sensors { + uint8_t down : 4; + uint8_t up : 4; + uint8_t right : 4; + uint8_t left : 4; +}; + +struct ac_io_mdxf_poll_in { + struct mdxf_panel_sensors panel; + uint8_t unk; +}; + +struct mdxf_lights { + uint8_t up_right; + uint8_t down_left; + uint8_t up_left; + uint8_t down_right; + uint8_t unk; +}; + +struct ac_io_mdxf_light_out { + struct mdxf_lights side[2]; +}; + +#pragma pack(pop) + +#endif