MCPcopy Create free account
hub / github.com/Shim06/Anemoia-ESP32 / initController

Function initController

src/controller.cpp:287–367  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

285}
286
287void initController(ControllerType controller_type)
288{
289 switch (controller_type)
290 {
291 case CT_GPIO:
292 pinMode(A_BUTTON, INPUT_PULLUP);
293 pinMode(B_BUTTON, INPUT_PULLUP);
294 pinMode(LEFT_BUTTON, INPUT_PULLUP);
295 pinMode(RIGHT_BUTTON, INPUT_PULLUP);
296 pinMode(UP_BUTTON, INPUT_PULLUP);
297 pinMode(DOWN_BUTTON, INPUT_PULLUP);
298 pinMode(START_BUTTON, INPUT_PULLUP);
299 pinMode(SELECT_BUTTON, INPUT_PULLUP);
300 _controllerRead = gpioRead;
301 break;
302
303 case CT_NES:
304 pinMode(CONTROLLER_NES_CLK, OUTPUT);
305 pinMode(CONTROLLER_NES_LATCH, OUTPUT);
306 pinMode(CONTROLLER_NES_DATA, INPUT);
307 _controllerRead = NESControllerRead;
308 break;
309
310 case CT_SNES:
311 pinMode(CONTROLLER_SNES_CLK, OUTPUT);
312 pinMode(CONTROLLER_SNES_LATCH, OUTPUT);
313 pinMode(CONTROLLER_SNES_DATA, INPUT);
314 _controllerRead = SNESControllerRead;
315 break;
316
317 case CT_PSX:
318 pinMode(CONTROLLER_PSX_DATA, INPUT_PULLUP);
319 pinMode(CONTROLLER_PSX_COMMAND, OUTPUT);
320 pinMode(CONTROLLER_PSX_ATTENTION, OUTPUT);
321 pinMode(CONTROLLER_PSX_CLK, OUTPUT);
322
323 digitalWrite(CONTROLLER_PSX_ATTENTION, HIGH);
324 digitalWrite(CONTROLLER_PSX_CLK, HIGH);
325 delayMicroseconds(10);
326
327 // Dummy transfer bytes to clean internal controller state
328 for (int i = 0; i < 2; i++)
329 {
330 digitalWrite(CONTROLLER_PSX_ATTENTION, LOW);
331 delayMicroseconds(10);
332
333 PSXTransferByte(0);
334 delayMicroseconds(10);
335
336 digitalWrite(CONTROLLER_PSX_ATTENTION, HIGH);
337 delayMicroseconds(12);
338 }
339 _controllerRead = PSXControllerRead;
340 break;
341 case CT_UART:
342#ifndef DEBUG
343 // If DEBUG is defined then Serial.begin() was called during setup().
344 // Here Serial is not being used for debugging but for reading button

Callers

nothing calls this directly

Calls 3

PSXTransferByteFunction · 0.85
writeMethod · 0.80
readMethod · 0.45

Tested by

no test coverage detected