summaryrefslogtreecommitdiff
path: root/libs/TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Portable/dispatch.c
blob: 255818839e1c0b0e57e7c80e71da5a4825aba774 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/**
 * dispatch.c
 * Description:
 */

#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h"
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h"
#include "TRK_MINNOW_DOLPHIN/utils/common/MWTrace.h"

DSError TRKInitializeDispatcher() {
    return DS_NoError;
}

BOOL TRKDispatchMessage(TRKBuffer* msg) {
    u32 err;

	err = DS_DispatchError;
	TRKSetBufferPosition(msg, 0);
	MWTRACE(1, "Dispatch command 0x%08x\n", msg->data[4]);

	switch (msg->data[4]) {
	case DSMSG_Connect:
		err = TRKDoConnect(msg);
		break;
	case DSMSG_Disconnect:
		err = TRKDoDisconnect(msg);
		break;
	case DSMSG_Reset:
		err = TRKDoReset(msg);
		break;
	case DSMSG_Override:
		err = TRKDoOverride(msg);
		break;
	case DSMSG_Versions:
		err = TRKDoVersions(msg);
		break;
	case DSMSG_SupportMask:
		err = TRKDoSupportMask(msg);
		break;
	case DSMSG_ReadMemory:
		err = TRKDoReadMemory(msg);
		break;
	case DSMSG_WriteMemory:
		err = TRKDoWriteMemory(msg);
		break;
	case DSMSG_ReadRegisters:
		err = TRKDoReadRegisters(msg);
		break;
	case DSMSG_WriteRegisters:
		err = TRKDoWriteRegisters(msg);
		break;
	case DSMSG_Continue:
		err = TRKDoContinue(msg);
		break;
	case DSMSG_Step:
		err = TRKDoStep(msg);
		break;
	case DSMSG_Stop:
		err = TRKDoStop(msg);
		break;
	case DSMSG_SetOption:
		err = TRKDoSetOption(msg);
		break;
	}
	MWTRACE(1, "Dispatch complete err = %ld\n", err);
	return err;
}