mm/include/PR/os_cont.h
Derek Hensley db8f5f5ccc
General Cleanup 2 (#1538)
* Cleanup

* Cleanup variables.h

* Cleanup fault headers

* Some includes/headers cleanup

* Libultra btn wrappers

* Mark differences to original libultra headers

* Remove duplicate include in fault

* format

* Update include/PR/os_voice.h

Co-authored-by: Tom Overton <tom-overton@users.noreply.github.com>

* align

---------

Co-authored-by: Tom Overton <tom-overton@users.noreply.github.com>
2024-01-28 21:27:50 -03:00

95 lines
2.6 KiB
C

#ifndef PR_OS_CONT_H
#define PR_OS_CONT_H
#include "ultratypes.h"
#include "os_message.h"
typedef struct {
/* 0x0 */ u16 type;
/* 0x2 */ u8 status;
/* 0x3 */ u8 errno;
} OSContStatus; // size = 0x4
typedef struct {
/* 0x0 */ u16 button;
/* 0x2 */ s8 stick_x;
/* 0x3 */ s8 stick_y;
/* 0x4 */ u8 errno;
} OSContPad; // size = 0x6
#define MAXCONTROLLERS 4
/* controller errors */
#define CONT_NO_RESPONSE_ERROR 0x8
#define CONT_OVERRUN_ERROR 0x4
/* Controller type */
#define CONT_ABSOLUTE 0x0001
#define CONT_RELATIVE 0x0002
#define CONT_JOYPORT 0x0004
#define CONT_EEPROM 0x8000
#define CONT_EEP16K 0x4000
#define CONT_TYPE_MASK 0x1F07
#define CONT_TYPE_NORMAL 0x0005
#define CONT_TYPE_MOUSE 0x0002
#define CONT_TYPE_VOICE 0x0100
/* Controller status */
#define CONT_CARD_ON 0x01
#define CONT_CARD_PULL 0x02
#define CONT_ADDR_CRC_ER 0x04
#define CONT_EEPROM_BUSY 0x80
#define R_CBUTTONS 0x0001
#define L_CBUTTONS 0x0002
#define D_CBUTTONS 0x0004
#define U_CBUTTONS 0x0008
#define R_TRIG 0x0010
#define L_TRIG 0x0020
#define R_JPAD 0x0100
#define L_JPAD 0x0200
#define D_JPAD 0x0400
#define U_JPAD 0x0800
#define START_BUTTON 0x1000
#define Z_TRIG 0x2000
#define B_BUTTON 0x4000
#define A_BUTTON 0x8000
/* Not original to libultra: button macros */
/* Buttons */
#define BTN_CRIGHT R_CBUTTONS
#define BTN_CLEFT L_CBUTTONS
#define BTN_CDOWN D_CBUTTONS
#define BTN_CUP U_CBUTTONS
#define BTN_R R_TRIG
#define BTN_L L_TRIG
#define BTN_RESET 0x0080 /* "neutral reset": Corresponds to holding L+R and pressing S */
#define BTN_DRIGHT R_JPAD
#define BTN_DLEFT L_JPAD
#define BTN_DDOWN D_JPAD
#define BTN_DUP U_JPAD
#define BTN_START START_BUTTON
#define BTN_Z Z_TRIG
#define BTN_B B_BUTTON
#define BTN_A A_BUTTON
#define CONT_ERR_NO_CONTROLLER PFS_ERR_NOPACK /* 1 */
#define CONT_ERR_CONTRFAIL CONT_OVERRUN_ERROR /* 4 */
#define CONT_ERR_INVALID PFS_ERR_INVALID /* 5 */
#define CONT_ERR_DEVICE PFS_ERR_DEVICE /* 11 */
#define CONT_ERR_NOT_READY 12
#define CONT_ERR_VOICE_MEMORY 13
#define CONT_ERR_VOICE_WORD 14
#define CONT_ERR_VOICE_NO_RESPONSE 15
s32 osContInit(OSMesgQueue* mq, u8* bitpattern, OSContStatus* data);
s32 osContStartQuery(OSMesgQueue* mq);
s32 osContStartReadData(OSMesgQueue* mq);
s32 osContSetCh(u8 ch);
void osContGetQuery(OSContStatus* data);
void osContGetReadData(OSContPad* data);
#endif