| 1010 | } |
| 1011 | |
| 1012 | static void panel_write_cmd(uint8_t value) { |
| 1013 | panel.cmd = value; |
| 1014 | panel.paramIter = panel.paramEnd = 0; |
| 1015 | |
| 1016 | #define PANEL_CMD_CASE(cmd_num, field) \ |
| 1017 | case cmd_num: \ |
| 1018 | panel.paramIter = offsetof(panel_params_t, field); \ |
| 1019 | panel.paramEnd = panel.paramIter + sizeof(panel.params.field); |
| 1020 | |
| 1021 | switch (panel.cmd) { |
| 1022 | /* Command table 1 */ |
| 1023 | case 0x00: |
| 1024 | break; |
| 1025 | case 0x01: |
| 1026 | panel_sw_reset(); |
| 1027 | break; |
| 1028 | case 0x10: |
| 1029 | panel.pendingMode |= PANEL_MODE_SLEEP; |
| 1030 | break; |
| 1031 | case 0x11: |
| 1032 | panel.pendingMode &= ~PANEL_MODE_SLEEP; |
| 1033 | break; |
| 1034 | case 0x12: |
| 1035 | panel.pendingMode |= PANEL_MODE_PARTIAL; |
| 1036 | panel.params.VSCRSADD.VSP = 0; |
| 1037 | break; |
| 1038 | case 0x13: |
| 1039 | panel.pendingMode &= ~(PANEL_MODE_PARTIAL | PANEL_MODE_SCROLL); |
| 1040 | panel.params.VSCRSADD.VSP = 0; |
| 1041 | break; |
| 1042 | case 0x20: |
| 1043 | if (panel.invert) { |
| 1044 | panel.invert = false; |
| 1045 | panel_spi_catchup(); |
| 1046 | panel_buffer_pixels(); |
| 1047 | panel_invert_luts(); |
| 1048 | } |
| 1049 | break; |
| 1050 | case 0x21: |
| 1051 | if (!panel.invert) { |
| 1052 | panel.invert = true; |
| 1053 | panel_spi_catchup(); |
| 1054 | panel_buffer_pixels(); |
| 1055 | panel_invert_luts(); |
| 1056 | } |
| 1057 | break; |
| 1058 | PANEL_CMD_CASE(0x26, GAMSET) |
| 1059 | break; |
| 1060 | case 0x28: |
| 1061 | panel.pendingMode |= PANEL_MODE_OFF; |
| 1062 | break; |
| 1063 | case 0x29: |
| 1064 | panel.pendingMode &= ~PANEL_MODE_OFF; |
| 1065 | break; |
| 1066 | PANEL_CMD_CASE(0x2A, CASET) |
| 1067 | break; |
| 1068 | PANEL_CMD_CASE(0x2B, RASET) |
| 1069 | break; |
nothing calls this directly
no test coverage detected