]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/EbcDxe/EbcDebugger/EbcDebuggerConfig.c
MdeModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Universal / EbcDxe / EbcDebugger / EbcDebuggerConfig.c
CommitLineData
2b2efe33
PB
1/** @file\r
2 Configuration application for the EBC Debugger.\r
3\r
4 Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>\r
9d510e61 5 SPDX-License-Identifier: BSD-2-Clause-Patent\r
2b2efe33
PB
6\r
7**/\r
8\r
9#include <Uefi.h>\r
10#include <Protocol/ShellParameters.h>\r
11\r
12#include "EdbCommon.h"\r
13#include "EdbSupport.h"\r
14\r
d138a2e9
DB
15/**\r
16\r
17 The function that displays the utility usage message.\r
18\r
19**/\r
2b2efe33
PB
20VOID\r
21PrintUsage (\r
22 VOID\r
23 )\r
24{\r
25 Print (\r
26 L"EbcDebuggerConfig Version 1.0\n"\r
27 L"Copyright (C) Intel Corp 2007-2016. All rights reserved.\n"\r
28 L"\n"\r
29 L"Configure EbcDebugger in EFI Shell Environment.\n"\r
30 L"\n"\r
31 L"usage: EdbCfg <Command>\n"\r
32 L" CommandList:\n"\r
33 L" BO[C|CX|R|E|T|K] <ON|OFF> - Enable/Disable BOC/BOCX/BOR/BOE/BOT/BOK.\n"\r
34// L" SHOWINFO - Show Debugger Information.\n"\r
35 L"\n"\r
36 );\r
37 return;\r
38}\r
39\r
d138a2e9
DB
40/**\r
41\r
42 The function is to show some information.\r
43\r
44 @param DebuggerConfiguration Point to the EFI_DEBUGGER_CONFIGURATION_PROTOCOL.\r
45\r
46**/\r
2b2efe33
PB
47VOID\r
48EdbShowInfo (\r
49 EFI_DEBUGGER_CONFIGURATION_PROTOCOL *DebuggerConfiguration\r
50 )\r
51{\r
52 Print (L"Not supported!\n");\r
53 return ;\r
54}\r
55\r
d138a2e9
DB
56/**\r
57\r
58 EdbConfigBreak function.\r
59\r
60 @param DebuggerConfiguration Point to the EFI_DEBUGGER_CONFIGURATION_PROTOCOL.\r
61 @param Command Point to the command.\r
62 @param CommandArg The argument for this command.\r
63\r
64**/\r
2b2efe33
PB
65VOID\r
66EdbConfigBreak (\r
67 EFI_DEBUGGER_CONFIGURATION_PROTOCOL *DebuggerConfiguration,\r
68 CHAR16 *Command,\r
69 CHAR16 *CommandArg\r
70 )\r
71{\r
72 EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate;\r
73\r
74 DebuggerPrivate = (EFI_DEBUGGER_PRIVATE_DATA *)DebuggerConfiguration->DebuggerPrivateData;\r
75\r
76 if (StriCmp (Command, L"BOC") == 0) {\r
77 if (CommandArg == NULL) {\r
78 if ((DebuggerPrivate->FeatureFlags & EFI_DEBUG_FLAG_EBC_BOC) == EFI_DEBUG_FLAG_EBC_BOC) {\r
79 Print (L"BOC on\n");\r
80 } else {\r
81 Print (L"BOC off\n");\r
82 }\r
83 } else if (StriCmp (CommandArg, L"ON") == 0) {\r
84 DebuggerPrivate->FeatureFlags |= EFI_DEBUG_FLAG_EBC_BOC;\r
85 } else if (StriCmp (CommandArg, L"OFF") == 0) {\r
86 DebuggerPrivate->FeatureFlags &= ~EFI_DEBUG_FLAG_EBC_B_BOC;\r
87 } else {\r
88 Print (L"Invalid parameter\n");\r
89 }\r
90 } else if (StriCmp (Command, L"BOCX") == 0) {\r
91 if (CommandArg == NULL) {\r
92 if ((DebuggerPrivate->FeatureFlags & EFI_DEBUG_FLAG_EBC_BOCX) == EFI_DEBUG_FLAG_EBC_BOCX) {\r
93 Print (L"BOCX on\n");\r
94 } else {\r
95 Print (L"BOCX off\n");\r
96 }\r
97 } else if (StriCmp (CommandArg, L"ON") == 0) {\r
98 DebuggerPrivate->FeatureFlags |= EFI_DEBUG_FLAG_EBC_BOCX;\r
99 } else if (StriCmp (CommandArg, L"OFF") == 0) {\r
100 DebuggerPrivate->FeatureFlags &= ~EFI_DEBUG_FLAG_EBC_B_BOCX;\r
101 } else {\r
102 Print (L"Invalid parameter\n");\r
103 }\r
104 } else if (StriCmp (Command, L"BOR") == 0) {\r
105 if (CommandArg == NULL) {\r
106 if ((DebuggerPrivate->FeatureFlags & EFI_DEBUG_FLAG_EBC_BOR) == EFI_DEBUG_FLAG_EBC_BOR) {\r
107 Print (L"BOR on\n");\r
108 } else {\r
109 Print (L"BOR off\n");\r
110 }\r
111 } else if (StriCmp (CommandArg, L"ON") == 0) {\r
112 DebuggerPrivate->FeatureFlags |= EFI_DEBUG_FLAG_EBC_BOR;\r
113 } else if (StriCmp (CommandArg, L"OFF") == 0) {\r
114 DebuggerPrivate->FeatureFlags &= ~EFI_DEBUG_FLAG_EBC_B_BOR;\r
115 } else {\r
116 Print (L"Invalid parameter\n");\r
117 }\r
118 } else if (StriCmp (Command, L"BOE") == 0) {\r
119 if (CommandArg == NULL) {\r
120 if ((DebuggerPrivate->FeatureFlags & EFI_DEBUG_FLAG_EBC_BOE) == EFI_DEBUG_FLAG_EBC_BOE) {\r
121 Print (L"BOE on\n");\r
122 } else {\r
123 Print (L"BOE off\n");\r
124 }\r
125 } else if (StriCmp (CommandArg, L"ON") == 0) {\r
126 DebuggerPrivate->FeatureFlags |= EFI_DEBUG_FLAG_EBC_BOE;\r
127 } else if (StriCmp (CommandArg, L"OFF") == 0) {\r
128 DebuggerPrivate->FeatureFlags &= ~EFI_DEBUG_FLAG_EBC_B_BOE;\r
129 } else {\r
130 Print (L"Invalid parameter\n");\r
131 }\r
132 } else if (StriCmp (Command, L"BOT") == 0) {\r
133 if (CommandArg == NULL) {\r
134 if ((DebuggerPrivate->FeatureFlags & EFI_DEBUG_FLAG_EBC_BOT) == EFI_DEBUG_FLAG_EBC_BOT) {\r
135 Print (L"BOT on\n");\r
136 } else {\r
137 Print (L"BOT off\n");\r
138 }\r
139 } else if (StriCmp (CommandArg, L"ON") == 0) {\r
140 DebuggerPrivate->FeatureFlags |= EFI_DEBUG_FLAG_EBC_BOT;\r
141 } else if (StriCmp (CommandArg, L"OFF") == 0) {\r
142 DebuggerPrivate->FeatureFlags &= ~EFI_DEBUG_FLAG_EBC_B_BOT;\r
143 } else {\r
144 Print (L"Invalid parameter\n");\r
145 }\r
146 } else if (StriCmp (Command, L"BOK") == 0) {\r
147 if (CommandArg == NULL) {\r
148 if ((DebuggerPrivate->FeatureFlags & EFI_DEBUG_FLAG_EBC_BOK) == EFI_DEBUG_FLAG_EBC_BOK) {\r
149 Print (L"BOK on\n");\r
150 } else {\r
151 Print (L"BOK off\n");\r
152 }\r
153 } else if (StriCmp (CommandArg, L"ON") == 0) {\r
154 DebuggerPrivate->FeatureFlags |= EFI_DEBUG_FLAG_EBC_BOK;\r
155 } else if (StriCmp (CommandArg, L"OFF") == 0) {\r
156 DebuggerPrivate->FeatureFlags &= ~EFI_DEBUG_FLAG_EBC_B_BOK;\r
157 } else {\r
158 Print (L"Invalid parameter\n");\r
159 }\r
160 }\r
161 return ;\r
162}\r
163\r
164/**\r
165 Alter the EBC Debugger configuration.\r
166\r
167 @param[in] ImageHandle The image handle.\r
168 @param[in] SystemTable The system table.\r
169\r
170 @retval EFI_SUCCESS Operation completed successfully.\r
171 @retval EFI_INVALID_PARAMETER Usage error.\r
172 @retval EFI_NOT_FOUND A running debugger cannot be located.\r
173**/\r
174EFI_STATUS\r
175EFIAPI\r
176InitializeEbcDebuggerConfig (\r
177 IN EFI_HANDLE ImageHandle,\r
178 IN EFI_SYSTEM_TABLE *SystemTable\r
179 )\r
180{\r
181 UINTN Argc;\r
182 CHAR16 **Argv;\r
183 EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters;\r
184 EFI_DEBUGGER_CONFIGURATION_PROTOCOL *DebuggerConfiguration;\r
185 EFI_STATUS Status;\r
186\r
187 Status = gBS->HandleProtocol (\r
188 gImageHandle,\r
189 &gEfiShellParametersProtocolGuid,\r
190 (VOID**)&ShellParameters\r
191 );\r
192 if (EFI_ERROR(Status)) {\r
193 Print (L"Please use UEFI Shell to run this application.\n");\r
194 return EFI_INVALID_PARAMETER;\r
195 }\r
196\r
197 Argc = ShellParameters->Argc;\r
198 Argv = ShellParameters->Argv;\r
199\r
200 if (Argc < 2) {\r
201 PrintUsage ();\r
202 return EFI_INVALID_PARAMETER;\r
203 }\r
204\r
205 if (Argc == 2) {\r
206 if ((StrCmp (Argv[1], L"/?") == 0) ||\r
207 (StrCmp (Argv[1], L"-?") == 0) ||\r
208 (StrCmp (Argv[1], L"-h") == 0) ||\r
209 (StrCmp (Argv[1], L"-H") == 0) ) {\r
210 PrintUsage ();\r
211 return EFI_SUCCESS;\r
212 }\r
213 }\r
214\r
215 Status = gBS->LocateProtocol (\r
216 &gEfiDebuggerConfigurationProtocolGuid,\r
217 NULL,\r
218 (VOID**)&DebuggerConfiguration\r
219 );\r
220 if (EFI_ERROR(Status)) {\r
221 Print (L"Error: DebuggerConfiguration protocol not found.\n");\r
222 return EFI_NOT_FOUND;\r
223 }\r
224\r
225 if (StriCmp (Argv[1], L"SHOWINFO") == 0) {\r
226 EdbShowInfo (DebuggerConfiguration);\r
227 return EFI_SUCCESS;\r
228 }\r
229\r
230 if (((Argc == 2) || (Argc == 3)) &&\r
231 ((StriCmp (Argv[1], L"BOC") == 0) ||\r
232 (StriCmp (Argv[1], L"BOCX") == 0) ||\r
233 (StriCmp (Argv[1], L"BOR") == 0) ||\r
234 (StriCmp (Argv[1], L"BOE") == 0) ||\r
235 (StriCmp (Argv[1], L"BOT") == 0) ||\r
236 (StriCmp (Argv[1], L"BOK") == 0))) {\r
237 if (Argc == 3) {\r
238 EdbConfigBreak (DebuggerConfiguration, Argv[1], Argv[2]);\r
239 } else {\r
240 EdbConfigBreak (DebuggerConfiguration, Argv[1], NULL);\r
241 }\r
242 return EFI_SUCCESS;\r
243 }\r
244\r
245 Print (L"Error: Invalid Command.\n");\r
246 return EFI_INVALID_PARAMETER;\r
247}\r