Editing Talk:SC Communication
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
0x30 AV Service return packet when HDMI inserted (personal info removed): | |||
<pre> | <pre> | ||
000c000: 3001 0000 0000 8031 8000 0000 0104 0104 0......1........ | |||
000c010: 2000 0282 00ff ffff ffff ff00 0469 fa22 ............i." | |||
000c020: 0101 0101 2c15 0103 8030 1b78 eec4 f5a3 ....,....0.x.... | |||
000c030: 574a 9c23 1150 54bf ef00 714f 8180 8140 WJ.#.PT...qO...@ | |||
000c040: 9500 a940 b300 d1c0 0101 023a 8018 7138 ...@.......:..q8 | |||
000c050: 2d40 582c 4500 132b 2100 001e 0000 00fd -@X,E..+!....... | |||
000c060: 0032 4c1e 5311 000a 2020 2020 2020 0000 .2L.S... .. | |||
000c070: 00fc 0056 4532 3238 0a20 2020 2020 2020 ...VE228. | |||
# | 000c080: 0000 00ff 00XX XXXX XXXX XXXX XXXX XXXX .....EDIDSERIALN | ||
000c090: XX0a 0188 0203 1ef1 4b90 0504 0302 0111 M.......K....... | |||
000c0a0: 1213 141f 2309 0707 8301 0000 6503 0c00 ....#.......e... | |||
000c0b0: 1000 1a36 80a0 7038 1e40 3020 3500 132b ...6..p8.@0 5..+ | |||
000c0c0: 2100 001a 6621 56aa 5100 1e30 468f 3300 !...f!V.Q..0F.3. | |||
000c0d0: 132b 2100 001e 011d 0072 51d0 1e20 6e28 .+!......rQ.. n( | |||
000c0e0: 5500 132b 2100 001e 8c0a d08a 20e0 2d10 U..+!....... .-. | |||
# | 000c0f0: 103e 9600 132b 2100 0018 011d 8018 711c .>...+!.......q. | ||
000c100: 1620 582c 2500 132b 2100 009f 0000 0000 . X,%..+!....... | |||
</pre> | </pre> | ||
== Syscon packets == | == Syscon packets == | ||
=== | === Timezone/Thermal Service (0x11) === | ||
==== | ==== Get temperature ==== | ||
Purpose: | Purpose: Used to get current temperature. | ||
<pre> | <pre> | ||
struct __attribute__ ((packed)) | struct __attribute__ ((packed)) get_temperature_request_t { | ||
uint8_t cmd; // 0x20 | uint8_t cmd; // 0x20 | ||
uint8_t param; // 0xFF | uint8_t param; // 0xFF | ||
}; | }; | ||
struct __attribute__ ((packed)) | struct __attribute__ ((packed)) get_temperature_response_t { | ||
uint8_t unk1; // status? | uint8_t unk1; // status? | ||
uint8_t unk2; // status? | uint8_t unk2; // status? | ||
Line 407: | Line 40: | ||
</pre> | </pre> | ||
* To calculate temperature in celsius use: (data[0] * 0x64) >> 8. | |||
=== Configuration Service (0x12) === | === Configuration Service (0x12) === | ||
==== Get IDlog information ==== | ==== Get IDlog information ==== | ||
Line 473: | Line 60: | ||
</pre> | </pre> | ||
==== | ==== Get reference clock ==== | ||
Purpose: Used to calculate an initial value of timebase register. | Purpose: Used to calculate an initial value of timebase register. | ||
<pre> | <pre> | ||
struct __attribute__ ((packed)) get_reference_clock_request_t { | struct __attribute__ ((packed)) get_reference_clock_request_t { | ||
uint8_t cmd; // 0x03 | uint8_t cmd; // 0x03 | ||
uint8_t param; // 0x10 | uint8_t param; // 0x10 | ||
}; | }; | ||
Line 581: | Line 153: | ||
struct __attribute__ ((packed)) reboot_request_t { | struct __attribute__ ((packed)) reboot_request_t { | ||
uint8_t cmd; // 0x01 | uint8_t cmd; // 0x01 | ||
}; | }; | ||
</pre> | </pre> | ||
Line 624: | Line 162: | ||
<pre> | <pre> | ||
struct __attribute__ ((packed)) nvs_access_request_t { | struct __attribute__ ((packed)) nvs_access_request_t { | ||
uint8_t cmd; // | uint8_t cmd; // 0x20 | ||
uint8_t index; | uint8_t index; | ||
uint8_t offset; | uint8_t offset; | ||
uint8_t size; // 0x00 for full block | uint8_t size; // 0x00 for full block | ||
}; | }; | ||
Line 644: | Line 181: | ||
<pre> | <pre> | ||
struct __attribute__ ((packed)) nvs_access_request_t { | struct __attribute__ ((packed)) nvs_access_request_t { | ||
uint8_t cmd; // | uint8_t cmd; // 0x10 | ||
uint8_t index; | uint8_t index; | ||
uint8_t offset; | uint8_t offset; | ||
Line 659: | Line 196: | ||
</pre> | </pre> | ||
=== | ==== Query system power up cause ==== | ||
Purpose: Get information about system power up cause. | |||
<pre> | |||
struct __attribute__ ((packed)) query_system_power_up_cause_request_t { | |||
uint8_t cmd; // 0x10 | |||
}; | |||
struct __attribute__ ((packed)) query_system_power_up_cause_response_t { | |||
uint8_t cmd; | |||
uint8_t padding1[3]; | |||
uint32_t wake_source; | |||
uint8_t requested_os_context; | |||
uint8_t current_os_context; | |||
uint8_t requested_gr_context; | |||
uint8_t current_gr_context; | |||
uint8_t last_shutdown_cause; | |||
uint8_t padding2[3]; | |||
}; | |||
</pre> | |||
==== Get realtime clock ==== | |||
Purpose: Get current value of realtime clock. | |||
<pre> | |||
struct __attribute__ ((packed)) get_rtc_request_t { | |||
uint8_t cmd; // 0x33 | |||
}; | |||
struct __attribute__ ((packed)) get_rtc_response_t { | |||
uint8_t cmd; | |||
uint8_t padding[3]; | |||
uint32_t rtc; | |||
}; | |||
</pre> | |||
=== Livelock Service (0x18) === | |||
==== Get service version ==== | ==== Get service version ==== | ||
Line 671: | Line 242: | ||
struct __attribute__ ((packed)) get_service_version_response_t { | struct __attribute__ ((packed)) get_service_version_response_t { | ||
uint8_t status; | uint8_t status; | ||
uint8_t | uint8_t padding; | ||
uint8_t major_version; | uint8_t major_version; | ||
uint8_t minor_version; | uint8_t minor_version; | ||
Line 678: | Line 249: | ||
==== Get syscon version ==== | ==== Get syscon version ==== | ||
Purpose: Get information about syscon version | Purpose: Get information about syscon version. | ||
<pre> | <pre> | ||
struct __attribute__ ((packed)) get_sc_version_request_t { | struct __attribute__ ((packed)) get_sc_version_request_t { | ||
Line 689: | Line 259: | ||
uint8_t padding[3]; | uint8_t padding[3]; | ||
uint16_t version; | uint16_t version; | ||
}; | }; | ||
</pre> | </pre> | ||
=== A/V Service (0x30) === | === A/V Service (0x30) === | ||
==== Get HDMI KSV ==== | ==== Get HDMI KSV ==== | ||
Line 781: | Line 277: | ||
}; | }; | ||
</pre> | </pre> | ||