Kodi Documentation 18.0
Kodi is an open source media player and entertainment hub.
addons/kodi-addon-dev-kit/include/kodi/addon-instance/Peripheral.h File Reference
#include "../AddonBase.h"

Classes

struct  PERIPHERAL_INFO
 Information shared between peripherals. More...
 
struct  PERIPHERAL_CAPABILITIES
 Peripheral add-on capabilities. More...
 
struct  PERIPHERAL_EVENT
 Event information. More...
 
struct  JOYSTICK_INFO
 Info specific to joystick peripherals. More...
 
struct  JOYSTICK_DRIVER_BUTTON
 Button primitive. More...
 
struct  JOYSTICK_DRIVER_HAT
 Hat direction primitive. More...
 
struct  JOYSTICK_DRIVER_SEMIAXIS
 Semiaxis primitive. More...
 
struct  JOYSTICK_DRIVER_MOTOR
 Motor primitive. More...
 
struct  JOYSTICK_DRIVER_KEY
 Keyboard key primitive. More...
 
struct  JOYSTICK_DRIVER_MOUSE_BUTTON
 Mouse button primitive. More...
 
struct  JOYSTICK_DRIVER_RELPOINTER
 Relative pointer direction primitive. More...
 
struct  JOYSTICK_DRIVER_PRIMITIVE
 Driver primitive struct. More...
 
struct  JOYSTICK_FEATURE
 Mapping between higher-level controller feature and its driver primitives. More...
 
struct  AddonProps_Peripheral
 } More...
 
struct  AddonToKodiFuncTable_Peripheral
 
struct  KodiToAddonFuncTable_Peripheral
 
struct  AddonInstance_Peripheral
 
class  kodi::addon::CInstancePeripheral
 

Namespaces

namespace  kodi
 
namespace  kodi::addon
 

Macros

#define NO_PORT_REQUESTED   (-1)
 
#define DRIVER_INDEX_UNKNOWN   (-1)
 

Peripheral types

{

enum  PERIPHERAL_ERROR {
  PERIPHERAL_NO_ERROR = 0 , PERIPHERAL_ERROR_UNKNOWN = -1 , PERIPHERAL_ERROR_FAILED = -2 , PERIPHERAL_ERROR_INVALID_PARAMETERS = -3 ,
  PERIPHERAL_ERROR_NOT_IMPLEMENTED = -4 , PERIPHERAL_ERROR_NOT_CONNECTED = -5 , PERIPHERAL_ERROR_CONNECTION_FAILED = -6
}
 API error codes. More...
 
enum  PERIPHERAL_TYPE { PERIPHERAL_TYPE_UNKNOWN , PERIPHERAL_TYPE_JOYSTICK , PERIPHERAL_TYPE_KEYBOARD }
 Peripheral types. More...
 
typedef enum PERIPHERAL_ERROR PERIPHERAL_ERROR
 API error codes. More...
 
typedef enum PERIPHERAL_TYPE PERIPHERAL_TYPE
 Peripheral types. More...
 
typedef struct PERIPHERAL_INFO PERIPHERAL_INFO
 Information shared between peripherals. More...
 
typedef struct PERIPHERAL_CAPABILITIES PERIPHERAL_CAPABILITIES
 Peripheral add-on capabilities. More...
 

Event types

}

{

enum  PERIPHERAL_EVENT_TYPE {
  PERIPHERAL_EVENT_TYPE_NONE , PERIPHERAL_EVENT_TYPE_DRIVER_BUTTON , PERIPHERAL_EVENT_TYPE_DRIVER_HAT , PERIPHERAL_EVENT_TYPE_DRIVER_AXIS ,
  PERIPHERAL_EVENT_TYPE_SET_MOTOR
}
 Types of events that can be sent and received. More...
 
enum  JOYSTICK_STATE_BUTTON { JOYSTICK_STATE_BUTTON_UNPRESSED = 0x0 , JOYSTICK_STATE_BUTTON_PRESSED = 0x1 }
 States a button can have. More...
 
enum  JOYSTICK_STATE_HAT {
  JOYSTICK_STATE_HAT_UNPRESSED = 0x0 , JOYSTICK_STATE_HAT_LEFT = 0x1 , JOYSTICK_STATE_HAT_RIGHT = 0x2 , JOYSTICK_STATE_HAT_UP = 0x4 ,
  JOYSTICK_STATE_HAT_DOWN = 0x8 , JOYSTICK_STATE_HAT_LEFT_UP = JOYSTICK_STATE_HAT_LEFT | JOYSTICK_STATE_HAT_UP , JOYSTICK_STATE_HAT_LEFT_DOWN = JOYSTICK_STATE_HAT_LEFT | JOYSTICK_STATE_HAT_DOWN , JOYSTICK_STATE_HAT_RIGHT_UP = JOYSTICK_STATE_HAT_RIGHT | JOYSTICK_STATE_HAT_UP ,
  JOYSTICK_STATE_HAT_RIGHT_DOWN = JOYSTICK_STATE_HAT_RIGHT | JOYSTICK_STATE_HAT_DOWN
}
 States a D-pad (also called a hat) can have. More...
 
typedef enum PERIPHERAL_EVENT_TYPE PERIPHERAL_EVENT_TYPE
 Types of events that can be sent and received. More...
 
typedef enum JOYSTICK_STATE_BUTTON JOYSTICK_STATE_BUTTON
 States a button can have. More...
 
typedef enum JOYSTICK_STATE_HAT JOYSTICK_STATE_HAT
 States a D-pad (also called a hat) can have. More...
 
typedef float JOYSTICK_STATE_AXIS
 Axis value in the closed interval [-1.0, 1.0]. More...
 
typedef float JOYSTICK_STATE_MOTOR
 Motor value in the closed interval [0.0, 1.0]. More...
 
typedef struct PERIPHERAL_EVENT PERIPHERAL_EVENT
 Event information. More...
 

Joystick types

}

{

enum  JOYSTICK_DRIVER_PRIMITIVE_TYPE {
  JOYSTICK_DRIVER_PRIMITIVE_TYPE_UNKNOWN , JOYSTICK_DRIVER_PRIMITIVE_TYPE_BUTTON , JOYSTICK_DRIVER_PRIMITIVE_TYPE_HAT_DIRECTION , JOYSTICK_DRIVER_PRIMITIVE_TYPE_SEMIAXIS ,
  JOYSTICK_DRIVER_PRIMITIVE_TYPE_MOTOR , JOYSTICK_DRIVER_PRIMITIVE_TYPE_KEY , JOYSTICK_DRIVER_PRIMITIVE_TYPE_MOUSE_BUTTON , JOYSTICK_DRIVER_PRIMITIVE_TYPE_RELPOINTER_DIRECTION
}
 Driver input primitives. More...
 
enum  JOYSTICK_DRIVER_HAT_DIRECTION {
  JOYSTICK_DRIVER_HAT_UNKNOWN , JOYSTICK_DRIVER_HAT_LEFT , JOYSTICK_DRIVER_HAT_RIGHT , JOYSTICK_DRIVER_HAT_UP ,
  JOYSTICK_DRIVER_HAT_DOWN
}
 Hat direction. More...
 
enum  JOYSTICK_DRIVER_SEMIAXIS_DIRECTION { JOYSTICK_DRIVER_SEMIAXIS_NEGATIVE = -1 , JOYSTICK_DRIVER_SEMIAXIS_UNKNOWN = 0 , JOYSTICK_DRIVER_SEMIAXIS_POSITIVE = 1 }
 Semiaxis direction. More...
 
enum  JOYSTICK_DRIVER_MOUSE_INDEX {
  JOYSTICK_DRIVER_MOUSE_INDEX_UNKNOWN , JOYSTICK_DRIVER_MOUSE_INDEX_LEFT , JOYSTICK_DRIVER_MOUSE_INDEX_RIGHT , JOYSTICK_DRIVER_MOUSE_INDEX_MIDDLE ,
  JOYSTICK_DRIVER_MOUSE_INDEX_BUTTON4 , JOYSTICK_DRIVER_MOUSE_INDEX_BUTTON5 , JOYSTICK_DRIVER_MOUSE_INDEX_WHEEL_UP , JOYSTICK_DRIVER_MOUSE_INDEX_WHEEL_DOWN ,
  JOYSTICK_DRIVER_MOUSE_INDEX_HORIZ_WHEEL_LEFT , JOYSTICK_DRIVER_MOUSE_INDEX_HORIZ_WHEEL_RIGHT
}
 Mouse buttons. More...
 
enum  JOYSTICK_DRIVER_RELPOINTER_DIRECTION {
  JOYSTICK_DRIVER_RELPOINTER_UNKNOWN , JOYSTICK_DRIVER_RELPOINTER_LEFT , JOYSTICK_DRIVER_RELPOINTER_RIGHT , JOYSTICK_DRIVER_RELPOINTER_UP ,
  JOYSTICK_DRIVER_RELPOINTER_DOWN
}
 Relative pointer direction. More...
 
enum  JOYSTICK_FEATURE_TYPE {
  JOYSTICK_FEATURE_TYPE_UNKNOWN , JOYSTICK_FEATURE_TYPE_SCALAR , JOYSTICK_FEATURE_TYPE_ANALOG_STICK , JOYSTICK_FEATURE_TYPE_ACCELEROMETER ,
  JOYSTICK_FEATURE_TYPE_MOTOR , JOYSTICK_FEATURE_TYPE_RELPOINTER , JOYSTICK_FEATURE_TYPE_ABSPOINTER , JOYSTICK_FEATURE_TYPE_WHEEL ,
  JOYSTICK_FEATURE_TYPE_THROTTLE , JOYSTICK_FEATURE_TYPE_KEY
}
 Controller feature. More...
 
enum  JOYSTICK_FEATURE_PRIMITIVE {
  JOYSTICK_SCALAR_PRIMITIVE = 0 , JOYSTICK_ANALOG_STICK_UP = 0 , JOYSTICK_ANALOG_STICK_DOWN = 1 , JOYSTICK_ANALOG_STICK_RIGHT = 2 ,
  JOYSTICK_ANALOG_STICK_LEFT = 3 , JOYSTICK_ACCELEROMETER_POSITIVE_X = 0 , JOYSTICK_ACCELEROMETER_POSITIVE_Y = 1 , JOYSTICK_ACCELEROMETER_POSITIVE_Z = 2 ,
  JOYSTICK_MOTOR_PRIMITIVE = 0 , JOYSTICK_WHEEL_LEFT = 0 , JOYSTICK_WHEEL_RIGHT = 1 , JOYSTICK_THROTTLE_UP = 0 ,
  JOYSTICK_THROTTLE_DOWN = 1 , JOYSTICK_KEY_PRIMITIVE = 0 , JOYSTICK_MOUSE_BUTTON = 0 , JOYSTICK_RELPOINTER_UP = 0 ,
  JOYSTICK_RELPOINTER_DOWN = 1 , JOYSTICK_RELPOINTER_RIGHT = 2 , JOYSTICK_RELPOINTER_LEFT = 3 , JOYSTICK_PRIMITIVE_MAX = 4
}
 Indices used to access a feature's driver primitives. More...
 
typedef struct JOYSTICK_INFO JOYSTICK_INFO
 Info specific to joystick peripherals. More...
 
typedef enum JOYSTICK_DRIVER_PRIMITIVE_TYPE JOYSTICK_DRIVER_PRIMITIVE_TYPE
 Driver input primitives. More...
 
typedef struct JOYSTICK_DRIVER_BUTTON JOYSTICK_DRIVER_BUTTON
 Button primitive. More...
 
typedef enum JOYSTICK_DRIVER_HAT_DIRECTION JOYSTICK_DRIVER_HAT_DIRECTION
 Hat direction. More...
 
typedef struct JOYSTICK_DRIVER_HAT JOYSTICK_DRIVER_HAT
 Hat direction primitive. More...
 
typedef enum JOYSTICK_DRIVER_SEMIAXIS_DIRECTION JOYSTICK_DRIVER_SEMIAXIS_DIRECTION
 Semiaxis direction. More...
 
typedef struct JOYSTICK_DRIVER_SEMIAXIS JOYSTICK_DRIVER_SEMIAXIS
 Semiaxis primitive. More...
 
typedef struct JOYSTICK_DRIVER_MOTOR JOYSTICK_DRIVER_MOTOR
 Motor primitive. More...
 
typedef struct JOYSTICK_DRIVER_KEY JOYSTICK_DRIVER_KEY
 Keyboard key primitive. More...
 
typedef enum JOYSTICK_DRIVER_MOUSE_INDEX JOYSTICK_DRIVER_MOUSE_INDEX
 Mouse buttons. More...
 
typedef struct JOYSTICK_DRIVER_MOUSE_BUTTON JOYSTICK_DRIVER_MOUSE_BUTTON
 Mouse button primitive. More...
 
typedef enum JOYSTICK_DRIVER_RELPOINTER_DIRECTION JOYSTICK_DRIVER_RELPOINTER_DIRECTION
 Relative pointer direction. More...
 
typedef struct JOYSTICK_DRIVER_RELPOINTER JOYSTICK_DRIVER_RELPOINTER
 Relative pointer direction primitive. More...
 
typedef struct JOYSTICK_DRIVER_PRIMITIVE JOYSTICK_DRIVER_PRIMITIVE
 Driver primitive struct. More...
 
typedef enum JOYSTICK_FEATURE_TYPE JOYSTICK_FEATURE_TYPE
 Controller feature. More...
 
typedef enum JOYSTICK_FEATURE_PRIMITIVE JOYSTICK_FEATURE_PRIMITIVE
 Indices used to access a feature's driver primitives. More...
 
typedef struct JOYSTICK_FEATURE JOYSTICK_FEATURE
 Mapping between higher-level controller feature and its driver primitives. More...
 
typedef struct AddonProps_Peripheral AddonProps_Peripheral
 } More...
 
typedef struct AddonToKodiFuncTable_Peripheral AddonToKodiFuncTable_Peripheral
 
typedef struct KodiToAddonFuncTable_Peripheral KodiToAddonFuncTable_Peripheral
 
typedef struct AddonInstance_Peripheral AddonInstance_Peripheral
 

Macro Definition Documentation

◆ DRIVER_INDEX_UNKNOWN

#define DRIVER_INDEX_UNKNOWN   (-1)

◆ NO_PORT_REQUESTED

#define NO_PORT_REQUESTED   (-1)

Typedef Documentation

◆ AddonInstance_Peripheral

◆ AddonProps_Peripheral

◆ AddonToKodiFuncTable_Peripheral

◆ JOYSTICK_DRIVER_BUTTON

Button primitive.

◆ JOYSTICK_DRIVER_HAT

Hat direction primitive.

◆ JOYSTICK_DRIVER_HAT_DIRECTION

◆ JOYSTICK_DRIVER_KEY

Keyboard key primitive.

◆ JOYSTICK_DRIVER_MOTOR

Motor primitive.

◆ JOYSTICK_DRIVER_MOUSE_BUTTON

Mouse button primitive.

◆ JOYSTICK_DRIVER_MOUSE_INDEX

◆ JOYSTICK_DRIVER_PRIMITIVE

Driver primitive struct.

◆ JOYSTICK_DRIVER_PRIMITIVE_TYPE

Driver input primitives.

Mapping lower-level driver values to higher-level controller features is non-injective; two triggers can share a single axis.

To handle this, driver values are subdivided into "primitives" that map injectively to higher-level features.

◆ JOYSTICK_DRIVER_RELPOINTER

Relative pointer direction primitive.

◆ JOYSTICK_DRIVER_RELPOINTER_DIRECTION

◆ JOYSTICK_DRIVER_SEMIAXIS

Semiaxis primitive.

◆ JOYSTICK_DRIVER_SEMIAXIS_DIRECTION

◆ JOYSTICK_FEATURE

Mapping between higher-level controller feature and its driver primitives.

◆ JOYSTICK_FEATURE_PRIMITIVE

Indices used to access a feature's driver primitives.

◆ JOYSTICK_FEATURE_TYPE

Controller feature.

Controller features are an abstraction over driver values. Each feature maps to one or more driver primitives.

◆ JOYSTICK_INFO

typedef struct JOYSTICK_INFO JOYSTICK_INFO

Info specific to joystick peripherals.

◆ JOYSTICK_STATE_AXIS

typedef float JOYSTICK_STATE_AXIS

Axis value in the closed interval [-1.0, 1.0].

The axis state uses the XInput coordinate system:

  • Negative values signify down or to the left
  • Positive values signify up or to the right

◆ JOYSTICK_STATE_BUTTON

States a button can have.

◆ JOYSTICK_STATE_HAT

States a D-pad (also called a hat) can have.

◆ JOYSTICK_STATE_MOTOR

typedef float JOYSTICK_STATE_MOTOR

Motor value in the closed interval [0.0, 1.0].

◆ KodiToAddonFuncTable_Peripheral

Todo:
Mouse, light gun, multitouch

◆ PERIPHERAL_CAPABILITIES

Peripheral add-on capabilities.

◆ PERIPHERAL_ERROR

API error codes.

◆ PERIPHERAL_EVENT

Event information.

◆ PERIPHERAL_EVENT_TYPE

Types of events that can be sent and received.

◆ PERIPHERAL_INFO

Information shared between peripherals.

◆ PERIPHERAL_TYPE

Peripheral types.

Enumeration Type Documentation

◆ JOYSTICK_DRIVER_HAT_DIRECTION

Hat direction.

Enumerator
JOYSTICK_DRIVER_HAT_UNKNOWN 
JOYSTICK_DRIVER_HAT_LEFT 
JOYSTICK_DRIVER_HAT_RIGHT 
JOYSTICK_DRIVER_HAT_UP 
JOYSTICK_DRIVER_HAT_DOWN 

◆ JOYSTICK_DRIVER_MOUSE_INDEX

Mouse buttons.

Enumerator
JOYSTICK_DRIVER_MOUSE_INDEX_UNKNOWN 
JOYSTICK_DRIVER_MOUSE_INDEX_LEFT 
JOYSTICK_DRIVER_MOUSE_INDEX_RIGHT 
JOYSTICK_DRIVER_MOUSE_INDEX_MIDDLE 
JOYSTICK_DRIVER_MOUSE_INDEX_BUTTON4 
JOYSTICK_DRIVER_MOUSE_INDEX_BUTTON5 
JOYSTICK_DRIVER_MOUSE_INDEX_WHEEL_UP 
JOYSTICK_DRIVER_MOUSE_INDEX_WHEEL_DOWN 
JOYSTICK_DRIVER_MOUSE_INDEX_HORIZ_WHEEL_LEFT 
JOYSTICK_DRIVER_MOUSE_INDEX_HORIZ_WHEEL_RIGHT 

◆ JOYSTICK_DRIVER_PRIMITIVE_TYPE

Driver input primitives.

Mapping lower-level driver values to higher-level controller features is non-injective; two triggers can share a single axis.

To handle this, driver values are subdivided into "primitives" that map injectively to higher-level features.

Enumerator
JOYSTICK_DRIVER_PRIMITIVE_TYPE_UNKNOWN 
JOYSTICK_DRIVER_PRIMITIVE_TYPE_BUTTON 
JOYSTICK_DRIVER_PRIMITIVE_TYPE_HAT_DIRECTION 
JOYSTICK_DRIVER_PRIMITIVE_TYPE_SEMIAXIS 
JOYSTICK_DRIVER_PRIMITIVE_TYPE_MOTOR 
JOYSTICK_DRIVER_PRIMITIVE_TYPE_KEY 
JOYSTICK_DRIVER_PRIMITIVE_TYPE_MOUSE_BUTTON 
JOYSTICK_DRIVER_PRIMITIVE_TYPE_RELPOINTER_DIRECTION 

◆ JOYSTICK_DRIVER_RELPOINTER_DIRECTION

Relative pointer direction.

Enumerator
JOYSTICK_DRIVER_RELPOINTER_UNKNOWN 
JOYSTICK_DRIVER_RELPOINTER_LEFT 
JOYSTICK_DRIVER_RELPOINTER_RIGHT 
JOYSTICK_DRIVER_RELPOINTER_UP 
JOYSTICK_DRIVER_RELPOINTER_DOWN 

◆ JOYSTICK_DRIVER_SEMIAXIS_DIRECTION

Semiaxis direction.

Enumerator
JOYSTICK_DRIVER_SEMIAXIS_NEGATIVE 

negative half of the axis

JOYSTICK_DRIVER_SEMIAXIS_UNKNOWN 

unknown direction

JOYSTICK_DRIVER_SEMIAXIS_POSITIVE 

positive half of the axis

◆ JOYSTICK_FEATURE_PRIMITIVE

Indices used to access a feature's driver primitives.

Enumerator
JOYSTICK_SCALAR_PRIMITIVE 
JOYSTICK_ANALOG_STICK_UP 
JOYSTICK_ANALOG_STICK_DOWN 
JOYSTICK_ANALOG_STICK_RIGHT 
JOYSTICK_ANALOG_STICK_LEFT 
JOYSTICK_ACCELEROMETER_POSITIVE_X 
JOYSTICK_ACCELEROMETER_POSITIVE_Y 
JOYSTICK_ACCELEROMETER_POSITIVE_Z 
JOYSTICK_MOTOR_PRIMITIVE 
JOYSTICK_WHEEL_LEFT 
JOYSTICK_WHEEL_RIGHT 
JOYSTICK_THROTTLE_UP 
JOYSTICK_THROTTLE_DOWN 
JOYSTICK_KEY_PRIMITIVE 
JOYSTICK_MOUSE_BUTTON 
JOYSTICK_RELPOINTER_UP 
JOYSTICK_RELPOINTER_DOWN 
JOYSTICK_RELPOINTER_RIGHT 
JOYSTICK_RELPOINTER_LEFT 
JOYSTICK_PRIMITIVE_MAX 

◆ JOYSTICK_FEATURE_TYPE

Controller feature.

Controller features are an abstraction over driver values. Each feature maps to one or more driver primitives.

Enumerator
JOYSTICK_FEATURE_TYPE_UNKNOWN 
JOYSTICK_FEATURE_TYPE_SCALAR 
JOYSTICK_FEATURE_TYPE_ANALOG_STICK 
JOYSTICK_FEATURE_TYPE_ACCELEROMETER 
JOYSTICK_FEATURE_TYPE_MOTOR 
JOYSTICK_FEATURE_TYPE_RELPOINTER 
JOYSTICK_FEATURE_TYPE_ABSPOINTER 
JOYSTICK_FEATURE_TYPE_WHEEL 
JOYSTICK_FEATURE_TYPE_THROTTLE 
JOYSTICK_FEATURE_TYPE_KEY 

◆ JOYSTICK_STATE_BUTTON

States a button can have.

Enumerator
JOYSTICK_STATE_BUTTON_UNPRESSED 

button is released

JOYSTICK_STATE_BUTTON_PRESSED 

button is pressed

◆ JOYSTICK_STATE_HAT

States a D-pad (also called a hat) can have.

Enumerator
JOYSTICK_STATE_HAT_UNPRESSED 

no directions are pressed

JOYSTICK_STATE_HAT_LEFT 

only left is pressed

JOYSTICK_STATE_HAT_RIGHT 

only right is pressed

JOYSTICK_STATE_HAT_UP 

only up is pressed

JOYSTICK_STATE_HAT_DOWN 

only down is pressed

JOYSTICK_STATE_HAT_LEFT_UP 
JOYSTICK_STATE_HAT_LEFT_DOWN 
JOYSTICK_STATE_HAT_RIGHT_UP 
JOYSTICK_STATE_HAT_RIGHT_DOWN 

◆ PERIPHERAL_ERROR

API error codes.

Enumerator
PERIPHERAL_NO_ERROR 
PERIPHERAL_ERROR_UNKNOWN 
PERIPHERAL_ERROR_FAILED 
PERIPHERAL_ERROR_INVALID_PARAMETERS 
PERIPHERAL_ERROR_NOT_IMPLEMENTED 
PERIPHERAL_ERROR_NOT_CONNECTED 
PERIPHERAL_ERROR_CONNECTION_FAILED 

◆ PERIPHERAL_EVENT_TYPE

Types of events that can be sent and received.

Enumerator
PERIPHERAL_EVENT_TYPE_NONE 

unknown event

PERIPHERAL_EVENT_TYPE_DRIVER_BUTTON 

state changed for joystick driver button

PERIPHERAL_EVENT_TYPE_DRIVER_HAT 

state changed for joystick driver hat

PERIPHERAL_EVENT_TYPE_DRIVER_AXIS 

state changed for joystick driver axis

PERIPHERAL_EVENT_TYPE_SET_MOTOR 

set the state for joystick rumble motor

◆ PERIPHERAL_TYPE

Peripheral types.

Enumerator
PERIPHERAL_TYPE_UNKNOWN 
PERIPHERAL_TYPE_JOYSTICK 
PERIPHERAL_TYPE_KEYBOARD