Files
djhackersdev_bemanitools/src/main/aciotest/kfca.c
T

79 lines
2.1 KiB
C

#include "aciotest/kfca.h"
#include "acio/acio.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "aciodrv/kfca.h"
bool aciotest_kfca_handler_init(
struct aciodrv_device_ctx *device, uint8_t node_id, void **ctx)
{
*ctx = malloc(sizeof(uint32_t));
*((uint32_t *) *ctx) = 0;
return aciodrv_kfca_init(device, node_id);
}
bool aciotest_kfca_handler_update(
struct aciodrv_device_ctx *device, uint8_t node_id, void *ctx)
{
struct ac_io_kfca_poll_in pin;
struct ac_io_kfca_poll_out pout;
static int gpio_test_pin = 0;
static int gpio_test_counter = 0;
memset(&pout, 0, sizeof(pout));
pout.gpio |= 1 << gpio_test_pin;
pout.gpio = ac_io_u32(pout.gpio);
if (!aciodrv_kfca_poll(device, node_id, &pout, &pin)) {
return false;
}
pin.adc[0] = ac_io_u16(pin.adc[0]);
pin.adc[1] = ac_io_u16(pin.adc[1]);
pin.gpio[0] = ac_io_u16(pin.gpio[0]);
pin.gpio[1] = ac_io_u16(pin.gpio[1]);
printf(
">>> KFCA %d: GPIO ON %d\n"
"BTN A B C D: %d %d %d %d\n"
"FX-L R: %d %d\n"
"VOL L: %d\n"
"VOL R: %d\n"
"START COIN TEST SERV REC HP: %d %d %d %d %d %d\n",
node_id,
gpio_test_pin,
pin.gpio[0] & AC_IO_KFCA_IN_GPIO_0_A,
pin.gpio[0] & AC_IO_KFCA_IN_GPIO_0_B,
pin.gpio[0] & AC_IO_KFCA_IN_GPIO_0_C,
pin.gpio[1] & AC_IO_KFCA_IN_GPIO_1_D,
pin.gpio[1] & AC_IO_KFCA_IN_GPIO_1_FX_L,
pin.gpio[1] & AC_IO_KFCA_IN_GPIO_1_FX_R,
(pin.adc[0] >> 6) & 0x3FF,
(pin.adc[1] >> 6) & 0x3FF,
pin.gpio[0] & AC_IO_KFCA_IN_GPIO_0_START,
(pin.gpio_sys) & AC_IO_KFCA_IN_GPIO_SYS_COIN,
(pin.gpio_sys) & AC_IO_KFCA_IN_GPIO_SYS_TEST,
(pin.gpio_sys) & AC_IO_KFCA_IN_GPIO_SYS_SERVICE,
pin.gpio[0] & AC_IO_KFCA_IN_GPIO_0_RECORDER,
pin.gpio[0] & AC_IO_KFCA_IN_GPIO_0_HEADPHONE);
++gpio_test_counter;
if (gpio_test_counter >= 4) {
gpio_test_counter = 0;
++gpio_test_pin;
if (gpio_test_pin >= 16) {
gpio_test_pin = 0;
}
}
return true;
}