MCPcopy Create free account
hub / github.com/Santroller/Santroller / initPio

Method initPio

lib/n64_gamecube_controller/Controller.cpp:15–39  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13}
14
15void Controller::initPio(InitParams *initParams) {
16 pio_hw_t *pios[2] = {pio0, pio1};
17 uint pio_index = 0;
18 if (!pio_can_add_program(pios[pio_index], &controller_program)) {
19 pio_index = 1;
20 if (!pio_can_add_program(pios[pio_index], &controller_program)) {
21 // throw 0;
22 }
23 }
24 initParams->pio = pios[pio_index];
25 initParams->offset = pio_add_program(initParams->pio, &controller_program);
26 initParams->sm = pio_claim_unused_sm(initParams->pio, true);
27 pio_sm_config tmpConfig =
28 controller_program_get_default_config(initParams->offset);
29 initParams->c = &tmpConfig;
30 controller_program_init(initParams->pio, initParams->sm, initParams->offset,
31 initParams->pin, initParams->c);
32
33 // Send a command to see if connected controller is N64 or Gamecube
34 uint8_t initRequest[1] = {0x00};
35 uint8_t initResponse[3] = {0x00};
36 transfer(initParams->pio, initParams->sm, initRequest, sizeof(initRequest),
37 initResponse, sizeof(initResponse));
38 initParams->controllerType = (ControllerType)initResponse[0];
39}
40void Controller::transfer(uint8_t *request, uint8_t requestLength,
41 uint8_t *response, uint8_t responseLength) {
42 transfer(_pio, _sm, request, requestLength, response, responseLength);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected