libdragon
Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Enumerations | Functions
joypad_accessory.h File Reference

Joypad accessory helpers. More...

Go to the source code of this file.

Data Structures

struct  joypad_accessory_io_t
 Joypad Accessory I/O operation state. More...
 
struct  joypad_transfer_pak_io_t
 Joypad N64 Transfer Pak I/O operation state. More...
 
struct  joypad_accessory_t
 Joypad accessory structure. More...
 

Macros

#define JOYPAD_ACCESSORY_RETRY_LIMIT   2
 Number of times to retry accessory commands.
 
#define joypad_accessory_state_is_detecting(state)
 Is Joypad accessory currently in detection state?
 
#define joypad_accessory_state_is_transfer_enabling(state)
 Is Joypad accessory currently in Transfer Pak enabling state?
 
#define joypad_accessory_state_is_transfer_loading(state)
 Is Joypad accessory currently in Transfer Pak loading state?
 
#define joypad_accessory_state_is_transfer_storing(state)
 Is Joypad accessory currently in Transfer Pak storing state?
 
#define JOYPAD_CONTROLLER_PAK_BANK_SWITCH_ADDRESS   0x8000
 Controller pak address to perform bank switching.
 

Typedefs

typedef void(* joypad_accessory_io_callback_t) (joypad_accessory_error_t error, void *ctx)
 Callback function signature for joypad_accessory_xfer_async.
 

Enumerations

enum  joypad_accessory_state_t {
  JOYPAD_ACCESSORY_STATE_IDLE = 0 , JOYPAD_ACCESSORY_STATE_DETECT_INIT , JOYPAD_ACCESSORY_STATE_DETECT_CPAK_BANK_WRITE , JOYPAD_ACCESSORY_STATE_DETECT_CPAK_LABEL_BACKUP ,
  JOYPAD_ACCESSORY_STATE_DETECT_CPAK_LABEL_WRITE , JOYPAD_ACCESSORY_STATE_DETECT_CPAK_LABEL_READ , JOYPAD_ACCESSORY_STATE_DETECT_CPAK_LABEL_RESTORE , JOYPAD_ACCESSORY_STATE_DETECT_RUMBLE_PROBE_WRITE ,
  JOYPAD_ACCESSORY_STATE_DETECT_RUMBLE_PROBE_READ , JOYPAD_ACCESSORY_STATE_DETECT_TRANSFER_PROBE_ON , JOYPAD_ACCESSORY_STATE_DETECT_TRANSFER_PROBE_READ , JOYPAD_ACCESSORY_STATE_DETECT_TRANSFER_PROBE_OFF ,
  JOYPAD_ACCESSORY_STATE_DETECT_SNAP_PROBE_WRITE , JOYPAD_ACCESSORY_STATE_DETECT_SNAP_PROBE_READ , JOYPAD_ACCESSORY_STATE_READ , JOYPAD_ACCESSORY_STATE_WRITE ,
  JOYPAD_ACCESSORY_STATE_RUMBLE_WRITE , JOYPAD_ACCESSORY_STATE_TRANSFER_ENABLE_PROBE_WRITE , JOYPAD_ACCESSORY_STATE_TRANSFER_ENABLE_PROBE_WAIT , JOYPAD_ACCESSORY_STATE_TRANSFER_ENABLE_STATUS_WRITE ,
  JOYPAD_ACCESSORY_STATE_TRANSFER_ENABLE_STATUS_WAIT , JOYPAD_ACCESSORY_STATE_TRANSFER_ENABLE_STATUS_READ , JOYPAD_ACCESSORY_STATE_TRANSFER_LOAD_STATUS_READ , JOYPAD_ACCESSORY_STATE_TRANSFER_LOAD_BANK_WRITE ,
  JOYPAD_ACCESSORY_STATE_TRANSFER_LOAD_DATA_READ , JOYPAD_ACCESSORY_STATE_TRANSFER_STORE_STATUS_READ , JOYPAD_ACCESSORY_STATE_TRANSFER_STORE_BANK_WRITE , JOYPAD_ACCESSORY_STATE_TRANSFER_STORE_DATA_WRITE
}
 Joypad accessory states enumeration.
 
enum  joypad_accessory_error_t {
  JOYPAD_ACCESSORY_ERROR_PENDING = -1 , JOYPAD_ACCESSORY_ERROR_NONE = 0 , JOYPAD_ACCESSORY_ERROR_ABSENT , JOYPAD_ACCESSORY_ERROR_CHECKSUM ,
  JOYPAD_ACCESSORY_ERROR_TRANSFER_PAK_STATUS_CHANGE , JOYPAD_ACCESSORY_ERROR_UNKNOWN
}
 Joypad accessory error codes. More...
 
enum  joypad_accessory_xfer_t { JOYPAD_ACCESSORY_XFER_READ , JOYPAD_ACCESSORY_XFER_WRITE }
 Type of transfer performed by joypad_accessory_xfer_async. More...
 

Functions

void joypad_accessory_reset (joypad_port_t port)
 Reset the accessory state for a Joypad port.
 
void joypad_accessory_detect_async (joypad_port_t port)
 Detect which accessory is inserted in an N64 controller.
 
void joypad_accessory_xfer_async (joypad_port_t port, joypad_accessory_xfer_t xfer, uint16_t start_addr, void *dst, size_t len, joypad_accessory_io_callback_t callback, void *ctx)
 Read or write data from a Joypad accessory asynchronously.
 
joypad_accessory_error_t joypad_accessory_xfer (joypad_port_t port, joypad_accessory_xfer_t xfer, uint16_t start_addr, void *dst, size_t len)
 Read or write data from a joypad accessory.
 
joypad_accessory_error_t joypad_controller_pak_set_bank (joypad_port_t port, uint8_t bank)
 Select the active bank for a Controller Pak.
 
void joypad_rumble_pak_toggle_async (joypad_port_t port, bool active)
 Turn the Rumble Pak motor on or off for a Joypad port.
 
uint8_t joypad_get_transfer_pak_status (joypad_port_t port)
 Get the Transfer Pak status byte for a Joypad port.
 
void joypad_transfer_pak_enable_async (joypad_port_t port, bool enabled)
 Enable or disable the Transfer Pak for a Joypad port.
 
void joypad_transfer_pak_load_async (joypad_port_t port, uint16_t cart_addr, void *dst, size_t len)
 Load data from the GB cartridge inserted in a Transfer Pak.
 
void joypad_transfer_pak_store_async (joypad_port_t port, uint16_t cart_addr, void *src, size_t len)
 Store data on the GB cartridge inserted in a Transfer Pak.
 

Detailed Description

Joypad accessory helpers.

Author
Christopher Bonhage me@ch.nosp@m.rist.nosp@m.opher.nosp@m.bonh.nosp@m.age.c.nosp@m.om