Line 95: |
Line 95: |
| | | |
| Writes raw data to the device. | | Writes raw data to the device. |
| + | |
| + | == Cmd7 == |
| + | Takes a type-0x9 input buffer containing a path string. No output. |
| + | |
| + | == Cmd8 == |
| + | Takes a type-0x9 input buffer containing a path string. No output. |
| + | |
| + | = Protocol = |
| + | |
| + | == CommandId == |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value || Name |
| + | |- |
| + | |} |
| + | |
| + | == Command == |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset || Size || Description |
| + | |- |
| + | | 0x0 || 0x8 || Magicnum (0xDEADCAFEDEADCAFE) |
| + | |- |
| + | | 0x8 || 0x4 || [[#CommandId|CommandId]] |
| + | |- |
| + | | 0xC || 0x4 || Padding |
| + | |- |
| + | | 0x10 || 0x8 || Payload size |
| + | |} |
| + | |
| + | The payload data with the above size follows. |
| + | |
| + | After [[#WriteFile|WriteFile]] sends the file-data, it reads an additional [[#Response|Response]]. |
| + | |
| + | == Response == |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset || Size || Description |
| + | |- |
| + | | 0x0 || 0x8 || Ignored by manu. |
| + | |- |
| + | | 0x8 || 0x4 || Status, non-zero indicates error. |
| + | |- |
| + | | 0xC || 0x4 || Padding |
| + | |- |
| + | | 0x10 || 0x8 || Output value if any. May be returned by the service commands. |
| + | |} |
| + | |
| + | [[#ReadFile|ReadFile]] additionally returns the requested file-data, followed by another [[#Response|Response]]. |
| + | |
| + | == CommandServerStatus == |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset || Size || Description |
| + | |- |
| + | | 0x0 || 0x4 || Status, non-zero indicates error. |
| + | |} |
| + | |
| + | == CommandServerResponse == |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset || Size || Description |
| + | |- |
| + | | 0x0 || 0x4 || Status, non-zero indicates error. |
| + | |- |
| + | | 0x4 || 0x4 || Padding |
| + | |- |
| + | | 0x8 || 0x4 || Result from handling the [[#CommandId|CommandId]]. |
| + | |} |
| + | |
| + | = Notes = |
| + | There's a total of 3 threads: 2 for the IPC handler threads (which send commands to the remote device and gets the response). And there's the separate nn::manu::CommandServer::RunThread, which receives commands from the remote device and sends replies. This latter thread runs regardless of any service commands being used. |
| | | |
| [[Category:Services]] | | [[Category:Services]] |