1/*====================================================================2* os_cont.h3*4* Copyright 1995, Silicon Graphics, Inc.5* All Rights Reserved.6*7* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,8* Inc.; the contents of this file may not be disclosed to third9* parties, copied or duplicated in any form, in whole or in part,10* without the prior written permission of Silicon Graphics, Inc.11*12* RESTRICTED RIGHTS LEGEND:13* Use, duplication or disclosure by the Government is subject to14* restrictions as set forth in subdivision (c)(1)(ii) of the Rights15* in Technical Data and Computer Software clause at DFARS16* 252.227-7013, and/or in similar or successor clauses in the FAR,17* DOD or NASA FAR Supplement. Unpublished - rights reserved under the18* Copyright Laws of the United States.19*====================================================================*/2021/*---------------------------------------------------------------------*22Copyright (C) 1998 Nintendo. (Originated by SGI)2324$RCSfile: os_cont.h,v $25$Revision: 1.1 $26$Date: 1998/10/09 08:01:05 $27*---------------------------------------------------------------------*/2829#ifndef _OS_CONT_H_30#define _OS_CONT_H_3132#ifdef _LANGUAGE_C_PLUS_PLUS33extern "C" {34#endif3536#include <PR/ultratypes.h>37#include "os_message.h"383940#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)4142/**************************************************************************43*44* Type definitions45*46*/4748/*49* Structure for controllers50*/5152typedef struct {53u16 type; /* Controller Type */54u8 status; /* Controller status */55u8 errnum;56}OSContStatus;5758typedef struct {59u16 button;60s8 stick_x; /* -80 <= stick_x <= 80 */61s8 stick_y; /* -80 <= stick_y <= 80 */62s16 stick2_x;63s16 stick2_y;64u8 errnum;65} OSContPad;6667typedef struct {68void *address; /* Ram pad Address: 11 bits */69u8 databuffer[32]; /* address of the data buffer */70u8 addressCrc; /* CRC code for address */71u8 dataCrc; /* CRC code for data */72u8 errnum;73} OSContRamIo;747576#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */7778/**************************************************************************79*80* Global definitions81*82*/8384/*85* Controllers number86*/8788#ifndef _HW_VERSION_189#define MAXCONTROLLERS 490#else91#define MAXCONTROLLERS 692#endif9394/* controller errors */95#define CONT_NO_RESPONSE_ERROR 0x896#define CONT_OVERRUN_ERROR 0x497#ifdef _HW_VERSION_198#define CONT_FRAME_ERROR 0x299#define CONT_COLLISION_ERROR 0x1100#endif101102/* Controller type */103104#define CONT_ABSOLUTE 0x0001105#define CONT_RELATIVE 0x0002106#define CONT_JOYPORT 0x0004107#define CONT_EEPROM 0x8000108#define CONT_EEP16K 0x4000109#define CONT_TYPE_MASK 0x1f07110#define CONT_TYPE_NORMAL 0x0005111#define CONT_TYPE_MOUSE 0x0002112#define CONT_TYPE_VOICE 0x0100113114/* Controller status */115116#define CONT_CARD_ON 0x01117#define CONT_CARD_PULL 0x02118#define CONT_ADDR_CRC_ER 0x04119#define CONT_EEPROM_BUSY 0x80120121/* Buttons */122123#define CONT_A 0x8000124#define CONT_B 0x4000125#define CONT_G 0x2000126#define CONT_START 0x1000127#define CONT_UP 0x0800128#define CONT_DOWN 0x0400129#define CONT_LEFT 0x0200130#define CONT_RIGHT 0x0100131#define CONT_L 0x0020132#define CONT_R 0x0010133#define CONT_E 0x0008134#define CONT_D 0x0004135#define CONT_C 0x0002136#define CONT_F 0x0001137138/* Nintendo's official button names */139140#define A_BUTTON CONT_A141#define B_BUTTON CONT_B142#define L_TRIG CONT_L143#define R_TRIG CONT_R144#define Z_TRIG CONT_G145#define START_BUTTON CONT_START146#define U_JPAD CONT_UP147#define L_JPAD CONT_LEFT148#define R_JPAD CONT_RIGHT149#define D_JPAD CONT_DOWN150#define U_CBUTTONS CONT_E151#define L_CBUTTONS CONT_C152#define R_CBUTTONS CONT_F153#define D_CBUTTONS CONT_D154155/* Controller error number */156157#define CONT_ERR_NO_CONTROLLER PFS_ERR_NOPACK /* 1 */158#define CONT_ERR_CONTRFAIL CONT_OVERRUN_ERROR /* 4 */159#define CONT_ERR_INVALID PFS_ERR_INVALID /* 5 */160#define CONT_ERR_DEVICE PFS_ERR_DEVICE /* 11 */161#define CONT_ERR_NOT_READY 12162#define CONT_ERR_VOICE_MEMORY 13163#define CONT_ERR_VOICE_WORD 14164#define CONT_ERR_VOICE_NO_RESPONSE 15165166167#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)168169/**************************************************************************170*171* Macro definitions172*173*/174175176/**************************************************************************177*178* Extern variables179*180*/181182183/**************************************************************************184*185* Function prototypes186*187*/188189/* Controller interface */190191extern s32 osContInit(OSMesgQueue *, u8 *, OSContStatus *);192extern s32 osContReset(OSMesgQueue *, OSContStatus *);193extern s32 osContStartQuery(OSMesgQueue *);194extern s32 osContStartReadData(OSMesgQueue *);195#ifndef _HW_VERSION_1196extern s32 osContSetCh(u8);197#endif198extern void osContGetQuery(OSContStatus *);199extern void osContGetReadData(OSContPad *);200201202#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */203204#ifdef _LANGUAGE_C_PLUS_PLUS205}206#endif207208#endif /* !_OS_CONT_H_ */209210211