Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка ForceFeedback.h

Опции
Развертывание Target:

На этой странице
Язык:

Ссылка ForceFeedback.h

Открытые интерфейсы к реализации Обратной связи Силы в OS X.

Обратная связь Силы API позволяет разработчикам управлять устройствами Обратной связи Силы, присоединенными к системе. Это - дистиллированная версия функциональности Обратной связи Силы, найденной в DirectInput Microsoft API. Разработчики, знакомые с тем API, должны найти, что этот API подобен.

Включенные заголовки

  • <CoreFoundation/CoreFoundation.h>

  • <CoreFoundation/CFPlugInCOM.h>

  • <MacTypes.h>

  • <IOKit/IOTypes.h>

  • <ForceFeedback/ForceFeedbackConstants.h>

Функции

  • Создает новый объект устройства API из объекта OS в подготовке для использования устройства для обратной связи силы.

    Объявление

    Swift

    func FFCreateDevice(_ hidDevice: io_service_t, _ pdeviceReference: UnsafeMutablePointer<FFDeviceObjectReference>) -> HRESULT

    Objective C

    HRESULT FFCreateDevice ( io_service_t hidDevice, FFDeviceObjectReference *pDeviceReference );

    Параметры

    hidDevice

    Указатель на объект устройства HID.

    pdeviceReference

    Адрес переменной для получения непрозрачного ссылочного дескриптора к новому объекту устройства. Эта ссылка может привыкнуть в последующих вызовах к FFDevice* функции

    Возвращаемое значение

    Если метод успешно выполняется, и устройство поддерживает FF, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:

    FFERR_INVALIDPARAM

    FFERR_NOINTERFACE

    FFERR_OUTOFMEMORY

    FFERR_INTERNAL

    Обсуждение

    Когда Вы закончены с устройством, FFReleaseDevice нужно вызвать на ссылке, полученной в этой функции для избавления от объекта устройства API.

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Создает и инициализирует экземпляр эффекта, идентифицированного эффектом UUID на устройстве.

    Объявление

    Swift

    func FFDeviceCreateEffect(_ deviceReference: FFDeviceObjectReference, _ uuidRef: CFUUID!, _ pEffectDefinition: UnsafeMutablePointer<FFEFFECT>, _ pEffectReference: UnsafeMutablePointer<FFEffectObjectReference>) -> HRESULT

    Objective C

    HRESULT FFDeviceCreateEffect ( FFDeviceObjectReference deviceReference, CFUUIDRef uuidRef, FFEFFECT *pEffectDefinition, FFEffectObjectReference *pEffectReference );

    Параметры

    deviceReference

    Непрозрачный ссылочный дескриптор к объекту устройства. Это получено от предыдущего вызова до FFCreateDevice.

    uuidRef

    Ссылка на UUID идентификация эффекта, который будет создаваться. Только предопределенный эффект UUIDs принят. Следующий стандартный эффект UUIDs определяется:

    kFFEffectType_ConstantForce_ID

    kFFEffectType_RampForce_ID

    kFFEffectType_Square_ID

    kFFEffectType_Sine_ID

    kFFEffectType_Triangle_ID

    kFFEffectType_SawtoothUp_ID

    kFFEffectType_SawtoothDown_ID

    kFFEffectType_Spring_ID

    kFFEffectType_Damper_ID

    kFFEffectType_Inertia_ID

    kFFEffectType_Friction_ID

    kFFEffectType_CustomForce_ID

    pEffectDefinition

    Указатель на структуру FFEFFECT, обеспечивающую параметры для создаваемого эффекта. Этот параметр является дополнительным. Если это - NULL, объект эффекта создается без параметров. Приложение должно тогда вызвать функцию FFEffectSetParameters для установки параметров эффекта, прежде чем это сможет загрузить эффект.

    pEffectReference

    Адрес переменной для получения непрозрачного ссылочного дескриптора к новому объекту эффекта. Эта ссылка может привыкнуть в последующих вызовах к FFEffect* функции.

    Возвращаемое значение

    Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:

    FFERR_INVALIDPARAM

    FFERR_UNSUPPORTEDAXIS

    FFERR_OUTOFMEMORY

    FFERR_DEVICEPAUSED

    FFERR_DEVICEFULL

    FFERR_INVALIDDOWNLOADID

    FFERR_INTERNAL

    FFERR_EFFECTTYPEMISMATCH

    Обсуждение

    Когда Вы закончены с эффектом, FFReleaseEffect нужно вызвать на ссылке, полученной в этой функции для избавления от объекта эффекта API.

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Отправляет специфичную для аппаратных средств команду в устройство.

    Объявление

    Swift

    func FFDeviceEscape(_ deviceReference: FFDeviceObjectReference, _ pFFEffectEscape: UnsafeMutablePointer<FFEFFESCAPE>) -> HRESULT

    Objective C

    HRESULT FFDeviceEscape ( FFDeviceObjectReference deviceReference, FFEFFESCAPE *pFFEffectEscape );

    Параметры

    deviceReference

    Непрозрачный ссылочный дескриптор к объекту устройства. Это получено от предыдущего вызова до FFCreateDevice.

    pFFEffectEscape

    Указатель на структуру FFEFFESCAPE, описывающую команду, которая будет отправлена. На успехе cbOutBuffer элемент содержит число байтов используемого буфера вывода.

    Возвращаемое значение

    Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:

    FFERR_INVALIDPARAM

    FFERR_UNSUPPORTED

    Обсуждение

    Поскольку каждый драйвер реализует различные Escape, это - ответственность приложения гарантировать, что это отправляет Escape в корректный драйвер.

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Получает возможности обратной связи силы устройства.

    Объявление

    Swift

    func FFDeviceGetForceFeedbackCapabilities(_ deviceReference: FFDeviceObjectReference, _ pFFCapabilities: UnsafeMutablePointer<FFCAPABILITIES>) -> HRESULT

    Objective C

    HRESULT FFDeviceGetForceFeedbackCapabilities ( FFDeviceObjectReference deviceReference, FFCAPABILITIES *pFFCapabilities );

    Параметры

    deviceReference

    Непрозрачный ссылочный дескриптор к объекту устройства, который является быть избавленным. Этот дескриптор получен от предыдущего вызова до FFCreateDevice.

    pFFCapabilities

    Указатель на структуру FFCAPABILITIES, которая должна быть заполнена в этим вызовом.

    Возвращаемое значение

    Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:

    FFERR_INVALIDPARAM

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Получает свойства, определяющие поведение устройства.

    Объявление

    Swift

    func FFDeviceGetForceFeedbackProperty(_ deviceReference: FFDeviceObjectReference, _ property: FFProperty, _ pValue: UnsafeMutablePointer<Void>, _ valueSize: IOByteCount) -> HRESULT

    Objective C

    HRESULT FFDeviceGetForceFeedbackProperty ( FFDeviceObjectReference deviceReference, FFProperty property, void *pValue, IOByteCount valueSize );

    Параметры

    deviceReference

    Непрозрачный ссылочный дескриптор к объекту устройства, который является быть избавленным. Этот дескриптор получен от предыдущего вызова до FFCreateDevice.

    property

    Следующие значения свойств определяются для устройства FF (см. FFDeviceSetForceFeedbackProperty для подробных данных):

    FFPROP_AUTOCENTER

    FFPROP_FFGAIN

    pValue

    Адрес расположения, где должно быть сохранено значение, связанное со свойством. GetForceFeedbackProperty предполагает, что указатель допустим, несмотря на то, что это выполнит проверку размера прежде, чем записать данные в pValue

    valueSize

    На размер, в байтах, области данных указывает pValue. Если несоответствие происходит, размер по сравнению с ожидаемым размером свойства, и функциональными сбоями.

    Возвращаемое значение

    Если метод успешно выполняется, возвращаемое значение является FF_OK или FFERR_UNSUPPORTED. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:

    FFERR_INVALIDPARAM

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Получает состояние системы с обратной связью силы устройства.

    Объявление

    Swift

    func FFDeviceGetForceFeedbackState(_ deviceReference: FFDeviceObjectReference, _ pFFState: UnsafeMutablePointer<FFState>) -> HRESULT

    Objective C

    HRESULT FFDeviceGetForceFeedbackState ( FFDeviceObjectReference deviceReference, FFState *pFFState );

    Параметры

    deviceReference

    Непрозрачный ссылочный дескриптор к объекту устройства. Это получено от предыдущего вызова до FFCreateDevice.

    pFFState

    Расположение для флагов, описывающих текущее состояние системы с обратной связью силы устройства. Значение является комбинацией следующих констант:

    ФФГФФС_ЭКТУЭТОРСОФФ

    Приводы обратной связи силы устройства отключены.

    ФФГФФС_ЭКТУЭТОРСОН

    Приводы обратной связи силы устройства включены.

    FFGFFS_DEVICELOST

    Устройство перенесло неожиданный отказ и находится в неопределенном состоянии. Это должно быть сброшено или путем неполучения и переполучения устройства, или путем отправки команды FFSFFC_RESET.

    FFGFFS_EMPTY

    Устройство не имеет никаких загруженных эффектов.

    FFGFFS_PAUSED

    Воспроизведение всех активных эффектов было приостановлено.

    ФФГФФС_ПАУЭРОФФ

    Система с обратной связью силы не в настоящее время доступна. Если устройство не может сообщить о состоянии электропитания, ни FFGFFS_POWERON, ни ФФГФФС_ПАУЭРОФФ не возвращаются.

    FFGFFS_POWERON

    Питание к системе с обратной связью силы в настоящее время доступно. Если устройство не может сообщить о состоянии электропитания, ни FFGFFS_POWERON, ни ФФГФФС_ПАУЭРОФФ не возвращаются.

    ФФГФФС_СЭФЕТИСВИЧОФФ

    Предохранительный выключатель в настоящее время выключен; т.е. устройство не может работать. Если устройство не может сообщить о состоянии предохранительного выключателя, ни FFGFFS_SAFETYSWITCHON, ни ФФГФФС_СЭФЕТИСВИЧОФФ не возвращаются.

    FFGFFS_SAFETYSWITCHON

    Предохранительный выключатель в настоящее время включен; т.е. устройство может работать. Если устройство не может сообщить о состоянии предохранительного выключателя, ни FFGFFS_SAFETYSWITCHON, ни ФФГФФС_СЭФЕТИСВИЧОФФ не возвращаются.

    FFGFFS_STOPPED

    Никакие эффекты не играют, и устройство не приостанавливается.

    ФФГФФС_ЮЗРФФСВИЧОФФ

    Пользовательский переключатель обратной связи силы в настоящее время выключен; т.е. устройство не может работать. Если устройство не может сообщить о состоянии пользовательского переключателя обратной связи силы, ни FFGFFS_USERFFSWITCHON, ни ФФГФФС_ЮЗРФФСВИЧОФФ не возвращаются.

    FFGFFS_USERFFSWITCHON

    Пользовательский переключатель обратной связи силы в настоящее время включен; т.е. устройство может работать. Если устройство не может сообщить о состоянии пользовательского переключателя обратной связи силы, ни FFGFFS_USERFFSWITCHON, ни ФФГФФС_ЮЗРФФСВИЧОФФ не возвращаются.

    Будущие версии могут определить дополнительные флаги. Приложения должны проигнорировать любые в настоящее время не определяющиеся флаги.

    Возвращаемое значение

    Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:

    FFERR_INVALIDPARAM

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Избавляется от объекта эффекта API, создаваемого с FFDeviceCreateEffect.

    Объявление

    Swift

    func FFDeviceReleaseEffect(_ deviceReference: FFDeviceObjectReference, _ effectReference: FFEffectObjectReference) -> HRESULT

    Objective C

    HRESULT FFDeviceReleaseEffect ( FFDeviceObjectReference deviceReference, FFEffectObjectReference effectReference );

    Параметры

    deviceReference

    Непрозрачный ссылочный дескриптор к объекту устройства, который является быть избавленным. Этот дескриптор получен от предыдущего вызова до FFCreateDevice.

    effectReference

    Непрозрачный ссылочный дескриптор к объекту эффекта. Это получено от предыдущего вызова до FFDeviceCreateEffect.

    Возвращаемое значение

    Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:

    FFERR_INVALIDPARAM

    FFERR_NOTDOWNLOADED

    FFERR_GENERIC

    FFERR_INTERNAL

    FFERR_INVALIDDOWNLOADID

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Отправляет команду в систему с обратной связью силы устройства.

    Объявление

    Swift

    func FFDeviceSendForceFeedbackCommand(_ deviceReference: FFDeviceObjectReference, _ flags: FFCommandFlag) -> HRESULT

    Objective C

    HRESULT FFDeviceSendForceFeedbackCommand ( FFDeviceObjectReference deviceReference, FFCommandFlag flags );

    Параметры

    deviceReference

    Непрозрачный ссылочный дескриптор к объекту устройства, который является быть избавленным. Этот дескриптор получен от предыдущего вызова до FFCreateDevice.

    flags

    Единственное значение, указывающее желаемое изменение в состоянии. Значение может быть одним из следующего:

    FFSFFC_CONTINUE

    Приостановленное воспроизведение всех активных эффектов должно продолжаться. Когда устройство не находится в приостановленном состоянии, это - ошибка отправить эту команду.

    FFSFFC_PAUSE

    Воспроизведение всех активных эффектов должно быть приостановлено. Эта команда также останавливает отмечать время прихода на работу эффекты так, чтобы они продолжали играть к их полной продолжительности, когда перезапущено.

    В то время как устройство приостанавливается, новые эффекты не могут быть запущены, и существующие не могут быть изменены. Выполнение так может заставить последующей команде FFSFFC_CONTINUE не удаваться выполнить должным образом.

    Чтобы отказаться от паузы и остановить все эффекты, используйте команды FFSFFC_STOPALL или FFSFCC_RESET.

    FFSFFC_RESET

    Система с обратной связью силы устройства должна быть помещена в ее состояние запуска. Все эффекты удалены из устройства, больше не действительны, и должны быть воссозданы, если они должны использоваться снова. Приводы устройства отключены.

    ФФСФФК_СЕТЭКТУЭТОРСОФФ

    Приводы обратной связи силы устройства должны быть отключены. В то время как приводы выключены, эффекты продолжают играть, но проигнорированы устройством. Используя аналогию устройства воспроизведения звука, они отключены звук, а не приостановлены.

    ФФСФФК_СЕТЭКТУЭТОРСОН

    Приводы обратной связи силы устройства должны быть включены.

    FFSFFC_STOPALL

    Воспроизведение любых активных эффектов должно быть остановлено. Все активные эффекты сбрасываются, но все еще сохраняются устройством и все еще допустимы. Если устройство находится в приостановленном состоянии, то состояние потеряно.

    Эта команда эквивалентна вызову метода FFEffect_Stop для каждой игры эффекта.

    Возвращаемое значение

    Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:

    FFERR_INVALIDPARAM

    FFERR_INTERNAL

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Функция не реализована в версии 1.0 этого API

    Объявление

    Swift

    func FFDeviceSetCooperativeLevel(_ deviceReference: FFDeviceObjectReference, _ taskIdentifier: UnsafeMutablePointer<Void>, _ flags: FFCooperativeLevelFlag) -> HRESULT

    Objective C

    HRESULT FFDeviceSetCooperativeLevel ( FFDeviceObjectReference deviceReference, void *taskIdentifier, FFCooperativeLevelFlag flags );

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Получает возможности обратной связи силы устройства.

    Объявление

    Swift

    func FFDeviceSetForceFeedbackProperty(_ deviceReference: FFDeviceObjectReference, _ property: FFProperty, _ pValue: UnsafeMutablePointer<Void>) -> HRESULT

    Objective C

    HRESULT FFDeviceSetForceFeedbackProperty ( FFDeviceObjectReference deviceReference, FFProperty property, void *pValue );

    Параметры

    deviceReference

    Непрозрачный ссылочный дескриптор к объекту устройства, который является быть избавленным. Этот дескриптор получен от предыдущего вызова до FFCreateDevice.

    property

    Следующие значения свойств определяются для устройства FF:

    FFPROP_AUTOCENTER

    Указывает, самоцентрируются ли приводимые в действие оси FF. Это свойство управляет «центрирующей пружиной устройства по умолчанию».

    pValue задействованные точки к UInt32 могут быть одним из следующих значений.

    0 - OFF: устройство не должно автоматически центрироваться когда разъединения абонентом устройство. Приложение, применяющее силу обратная связь, должно отключить автоцентрирование перед игрением эффектов.

    1 - ON: устройство должно автоматически центрироваться когда разъединения абонентом устройство.

    Не все устройства поддерживают автоцентральное свойство.

    FFPROP_FFGAIN

    Устанавливает усиление для устройства.

    pValue элемент указывает на UInt32, содержащий значение усиления, применяющееся ко всем эффектам, создаваемым на устройстве. Значение является целым числом в диапазоне от 0 до 10,000, указывая сумму, которой величины эффекта должны масштабироваться для устройства. Например, значение 10 000 указывает, что все величины эффекта должны быть взяты по номиналу. Значение 9 000 указывает, что все величины эффекта должны быть сокращены до 90% их номинальных величин.

    Когда приложение хочет уменьшить масштаб силы всех эффектов обратной связи силы унифицированно, на основе пользовательских настроек, установка значения усиления полезна.

    pValue

    Адрес расположения, где должно быть считано значение свойства. SetForceFeedbackProperty предположит, что данные допустимы, и корректного типа.

    Возвращаемое значение

    Если метод успешно выполняется, возвращаемое значение является FF_OK или FFERR_UNSUPPORTED. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:

    FFERR_INVALIDPARAM

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Помещает эффект на устройство. Если эффект уже находится на устройстве, существующий эффект обновляется для соответствия значений, установленных методом FFEffectSetParameters.

    Объявление

    Swift

    func FFEffectDownload(_ efffectRef: FFEffectObjectReference) -> HRESULT

    Objective C

    HRESULT FFEffectDownload ( FFEffectObjectReference effectReference );

    Параметры

    efffectRef

    Непрозрачный ссылочный дескриптор к объекту эффекта. Это получено от предыдущего вызова до FFDeviceCreateEffect.

    Возвращаемое значение

    Если метод успешно выполняется, возвращаемое значение является FF_OK или S_FALSE. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:

    FFERR_INVALIDPARAM

    FFERR_DEVICEPAUSED

    FFERR_DEVICEFULL

    FFERR_INVALIDDOWNLOADID

    FFERR_INTERNAL

    FFERR_EFFECTTYPEMISMATCH

    Если метод возвращает S_FALSE, эффект был уже загружен на устройство.

    Обсуждение

    Это допустимо для обновления эффекта, в то время как это играет. Семантика такой работы объяснена в ссылке для FFEffectSetParameters.

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Отправляет специфичную для аппаратных средств команду в драйвер.

    Объявление

    Swift

    func FFEffectEscape(_ effectReference: FFEffectObjectReference, _ pFFEffectEscape: UnsafeMutablePointer<FFEFFESCAPE>) -> HRESULT

    Objective C

    HRESULT FFEffectEscape ( FFEffectObjectReference effectReference, FFEFFESCAPE *pFFEffectEscape );

    Параметры

    effectReference

    Непрозрачный ссылочный дескриптор к объекту эффекта. Это получено от предыдущего вызова до FFDeviceCreateEffect.

    pFFEffectEscape

    Структура FFEFFESCAPE, описывающая команду, которая будет отправлена. На успехе cbOutBuffer элемент содержит число байтов используемого буфера вывода.

    Возвращаемое значение

    Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:

    FFERR_INVALIDPARAM

    FFERR_NOTDOWNLOADED

    FFERR_UNSUPPORTED

    Другие специфичные для устройства коды ошибки также возможны. Попросите у производителя оборудования подробных данных

    Обсуждение

    Поскольку каждый драйвер реализует различные Escape, это - ответственность приложения гарантировать, что это отправляет Escape в корректный драйвер.

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Отправляет специфичную для аппаратных средств команду в драйвер.

    Объявление

    Swift

    func FFEffectGetEffectStatus(_ effectReference: FFEffectObjectReference, _ pFlags: UnsafeMutablePointer<FFEffectStatusFlag>) -> HRESULT

    Objective C

    HRESULT FFEffectGetEffectStatus ( FFEffectObjectReference effectReference, FFEffectStatusFlag *pFlags );

    Параметры

    effectReference

    Непрозрачный ссылочный дескриптор к объекту эффекта. Это получено от предыдущего вызова до FFDeviceCreateEffect.

    pFlags

    Указатель на состояние отмечает для эффекта. Значение может быть 0 включая всех правопреемников следующих констант:

    FFEGES_PLAYING

    Эффект играет.

    FFEGES_EMULATED

    Эффект эмулирован.

    Возвращаемое значение

    Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:

    FFERR_INVALIDPARAM

    FFERR_NOTDOWNLOADED

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Получает информацию об эффекте.

    Объявление

    Swift

    func FFEffectGetParameters(_ efffectRef: FFEffectObjectReference, _ pFFEffect: UnsafeMutablePointer<FFEFFECT>, _ flags: FFEffectParameterFlag) -> HRESULT

    Objective C

    HRESULT FFEffectGetParameters ( FFEffectObjectReference effectReference, FFEFFECT *pFFEffect, FFEffectParameterFlag flags );

    Параметры

    efffectRef

    Непрозрачный ссылочный дескриптор к объекту эффекта. Это получено от предыдущего вызова до FFDeviceCreateEffect.

    pFFEffect

    Адрес структуры FFEFFECT, получающей информацию об эффекте. dwSize элемент должен быть переполнен в приложением прежде, чем вызвать этот метод.

    flags

    Флаги, указывающие, какие части информации об эффекте должны быть получены. Значение может быть 0 включая всех правопреемников следующих констант:

    FFEP_ALLPARAMS

    Объединение всех других флагов FFEP_*, указывая, что требуют все элементы структуры FFEFFECT.

    FFEP_AXES

    cAxes и rgdwAxes элементы должны получить данные. cAxes элемент на записи содержит размер (в DWORDs) буфера, на который указывает rgdwAxes элемент. Если буфер является слишком маленьким, метод возвращает FFERR_MOREDATA и устанавливает cAxes в необходимый размер буфера.

    FFEP_DIRECTION

    cAxes и rglDirection элементы должны получить данные. cAxes элемент на записи содержит размер (в DWORDs) буфера, на который указывает rglDirection элемент. Если буфер является слишком маленьким, метод GetParameters возвращает FFERR_MOREDATA и устанавливает cAxes в необходимый размер буфера.

    dwFlags элемент должен включать по крайней мере один из флагов системы координат (FFEFF_CARTESIAN, FFEFF_POLAR или FFEFF_SPHERICAL). API возвращает направление эффекта в одной из систем координат, которые Вы указали, преобразовав между системами координат по мере необходимости. На выходе точно один из флагов системы координат установлен в dwFlags элементе, указав, какую систему координат FF API использовал. В частности передача всех трех флагов системы координат получает координаты в точно том же формате, в котором они были установлены.

    FFEP_DURATION

    dwDuration элемент должен получить данные.

    FFEP_ENVELOPE

    lpEnvelope элемент указывает на структуру FFENVELOPE, которая должна получить данные. Если эффекту не связывали конверт с ним, lpEnvelope элемент устанавливается в NULL.

    FFEP_GAIN

    dwGain элемент должен получить данные.

    FFEP_SAMPLEPERIOD

    dwSamplePeriod элемент должен получить данные.

    FFEP_STARTDELAY

    dwStartDelay элемент должен получить данные.

    FFEP_TRIGGERBUTTON

    dwTriggerButton элемент должен получить данные.

    FFEP_TRIGGERREPEATINTERVAL

    dwTriggerRepeatInterval элемент должен получить данные.

    FFEP_TYPESPECIFICPARAMS

    lpvTypeSpecificParams элемент указывает на буфер, размер которого указан cbTypeSpecificParams элементом. По возврату буфер заполнен в специфичными для типа данными, связанными с эффектом, и cbTypeSpecificParams элемент содержит число скопированных байтов. Если буфер, предоставленный приложением, является слишком маленьким для содержания всех специфичных для типа данных, метод возвращает FFERR_MOREDATA, и cbTypeSpecificParams элемент содержит требуемый размер буфера в байтах.

    Возвращаемое значение

    Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:

    FFERR_INVALIDPARAM

    FFERR_NOTDOWNLOADED

    FFERR_MOREDATA

    Обсуждение

    Распространенные ошибки, приводящие к ошибке FFERR_INVALIDPARAM, включают не установку dwSize элемента структуры FFEFFECT, передавая недопустимые флаги, или не настраивая элементы в структуре FFEFFECT должным образом в подготовке к получению информации об эффекте.

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Устанавливает характеристики эффекта.

    Объявление

    Swift

    func FFEffectSetParameters(_ efffectRef: FFEffectObjectReference, _ pFFEffect: UnsafeMutablePointer<FFEFFECT>, _ flags: FFEffectParameterFlag) -> HRESULT

    Objective C

    HRESULT FFEffectSetParameters ( FFEffectObjectReference effectReference, FFEFFECT *pFFEffect, FFEffectParameterFlag flags );

    Параметры

    efffectRef

    Непрозрачный ссылочный дескриптор к объекту эффекта. Это получено от предыдущего вызова до FFDeviceCreateEffect.

    pFFEffect

    Адрес структуры FFEFFECT, содержащей информацию об эффекте. dwSize элемент должен быть переполнен в приложением прежде, чем вызвать этот метод, а также любые элементы, указанные соответствующими битами в параметре флагов.

    flags

    Флаги, указывающие, какие части информации об эффекте должны быть установлены и как должна быть обработана загрузка параметров. Значение может быть 0 включая всех правопреемников следующих констант:

    FFEP_AXES

    cAxes и rgdwAxes элементы содержат данные.

    FFEP_DIRECTION

    cAxes и rglDirection элементы содержат данные. dwFlags элемент указывает (с FFEFF_CARTESIAN или FFEFF_POLAR) систему координат, в которой должны быть интерпретированы значения.

    FFEP_DURATION

    dwDuration элемент содержит данные.

    FFEP_ENVELOPE

    lpEnvelope элемент указывает на структуру FFENVELOPE, содержащую данные. Для отсоединения любого существующего конверта от эффекта передайте этот флаг и установите lpEnvelope элемент в NULL.

    FFEP_GAIN

    dwGain элемент содержит данные.

    FFEP_NODOWNLOAD

    Подавите автоматический FFEffect_Download, обычно выполняющийся после того, как параметры обновляются.

    FFEP_NORESTART

    Подавите остановку и перезапуск эффекта изменить параметры. Посмотрите Комментарии.

    FFEP_SAMPLEPERIOD

    dwSamplePeriod элемент содержит данные.

    FFEP_START

    Эффект состоит в том, чтобы быть запущен (или перезапущен, если он в настоящее время играет) после того, как обновляются параметры. По умолчанию состояние игры эффекта не изменено.

    FFEP_STARTDELAY

    dwStartDelay элемент содержит данные.

    FFEP_TRIGGERBUTTON

    dwTriggerButton элемент содержит данные.

    dwTriggerRepeatInterval элемент содержит данные.

    FFEP_TYPESPECIFICPARAMS

    lpvTypeSpecificParams и cbTypeSpecificParams элементы структуры FFEFFECT содержат адрес и размер специфичных для типа данных для эффекта.

    Возвращаемое значение

    Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:

    FFERR_INVALIDPARAM

    FFERR_UNSUPPORTEDAXIS

    FFERR_OUTOFMEMORY

    FFERR_DEVICEPAUSED

    FFERR_DEVICEFULL

    FFERR_INVALIDDOWNLOADID

    FFERR_INTERNAL

    FFERR_EFFECTTYPEMISMATCH

    Обсуждение

    Метод FFEffectSetParameters автоматически загружает эффект, но это поведение может быть подавлено путем установки флага FFEP_NODOWNLOAD. Если автоматическая загрузка была подавлена, можно вручную загрузить эффект путем вызова метода FFEffectDownload.

    Если эффект играет, в то время как параметры изменяются, новые параметры вступают в силу, как будто они были параметрами, когда запустился эффект.

    Например, предположите, что запускается периодический эффект с продолжительностью трех секунд. После двух секунд изменено направление эффекта. Эффект тогда продолжается в течение одной дополнительной секунды в новом направлении. Конверт, фаза, амплитуда и другие параметры эффекта продолжаются гладко, как будто не изменилось направление.

    В той же ситуации, если бы после двух секунд продолжительность эффекта была изменена на 1,5 секунды, остановился бы эффект.

    Обычно, если драйвер не может обновить параметры эффекта игры, драйверу разрешают остановить эффект, обновить параметры, и затем перезапустить эффект. Передача флага FFEP_NORESTART подавляет это поведение. Если драйвер не может обновить параметры эффекта, в то время как он играет, код ошибки, FFERR_EFFECTPLAYING возвращается, и параметры не обновляются.

    Не больше, чем один из FFEP_NODOWNLOAD, FFEP_START и флагов FFEP_NORESTART должен быть установлен. (Это также допустимо для передачи ни одного из них.)

    Эти три флага управляют поведением загрузки и воспроизведения следующим образом:

    Если FFEP_NODOWNLOAD установлен, параметры эффекта обновляются, но не загружаются на устройство.

    Если флаг FFEP_START установлен, параметры эффекта обновляются и загружаются на устройство, и эффект запускается так же, как если бы метод FFEffect_Start вызвали с dwIterations набором параметра к 1 и без флагов. (Объединение обновления с FFEP_START немного быстрее, чем вызов Запускается отдельно, потому что это запрашивает меньше информации, которая будет передана к устройству.)

    Если ни FFEP_NODOWNLOAD, ни FFEP_START не установлены, и эффект не играет, параметры обновляются и загружаются на устройство.

    Если ни FFEP_NODOWNLOAD, ни FFEP_START не установлены, и эффект играет, параметры обновляются, если устройство поддерживает на лету обновление. Иначе поведение зависит от состояния флага FFEP_NORESTART. Если это установлено, код ошибки, FFERR_EFFECTPLAYING возвращается. Если это ясно, эффект останавливается, параметры обновляются, и эффект перезапущен.

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Начинает играть эффект. Если эффект уже играет, он перезапущен с начала. Если эффект не был загружен или был изменен начиная с его последней загрузки он загружается прежде чем быть запущенным. Это поведение по умолчанию может быть подавлено путем передачи флага FFES_NODOWNLOAD.

    Объявление

    Swift

    func FFEffectStart(_ efffectReference: FFEffectObjectReference, _ iterations: UInt32, _ flags: FFEffectStartFlag) -> HRESULT

    Objective C

    HRESULT FFEffectStart ( FFEffectObjectReference effectReference, UInt32 iterations, FFEffectStartFlag flags );

    Параметры

    efffectReference

    Непрозрачный ссылочный дескриптор к объекту эффекта. Это получено от предыдущего вызова до FFDeviceCreateEffect.

    iterations

    Число раз для игры эффекта в последовательности. Конверт повторно ясно сформулирован с каждой итерацией.

    Для игры эффекта точно один раз передайте 1. Для игры эффекта неоднократно, пока явно не остановлено передайте INFINITE. Для игры эффекта, пока явно не остановлено, не повторно ясно формулируя конверт измените параметры эффекта с методом FFEffect_SetParameters и измените dwDuration элемент на INFINITE.

    flags

    Флаги, описывающие, как эффект должен играться устройством. Значение может быть 0 включая всех правопреемников следующих значений:

    FFES_SOLO

    Все другие эффекты на устройство должны быть остановлены, прежде чем указанный эффект играется. Если этот флаг опущен, эффект смешан с существующими эффектами, уже запустился на устройстве.

    FFES_NODOWNLOAD

    Автоматически не загружайте эффект.

    Возвращаемое значение

    Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:

    FFERR_INVALIDPARAM

    FFERR_DEVICEPAUSED

    FFERR_DEVICEFULL

    FFERR_INVALIDDOWNLOADID

    FFERR_INTERNAL

    FFERR_EFFECTTYPEMISMATCH

    FFERR_GENERIC

    Обсуждение

    Не все устройства поддерживают многократные итерации.

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Остановки играя эффект.

    Объявление

    Swift

    func FFEffectStop(_ effectReference: FFEffectObjectReference) -> HRESULT

    Objective C

    HRESULT FFEffectStop ( FFEffectObjectReference effectReference );

    Параметры

    effectReference

    Непрозрачный ссылочный дескриптор к объекту эффекта. Это получено от предыдущего вызова до FFDeviceCreateEffect.

    Возвращаемое значение

    Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:

    FFERR_INVALIDPARAM

    FFERR_NOTDOWNLOADED

    FFERR_GENERIC

    FFERR_INTERNAL

    FFERR_INVALIDDOWNLOADID

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Удаляет эффект из устройства. Если эффект играет, он автоматически останавливается, прежде чем он будет разгружен.

    Объявление

    Swift

    func FFEffectUnload(_ effectReference: FFEffectObjectReference) -> HRESULT

    Objective C

    HRESULT FFEffectUnload ( FFEffectObjectReference effectReference );

    Параметры

    effectReference

    Непрозрачный ссылочный дескриптор к объекту эффекта. Это получено от предыдущего вызова до FFDeviceCreateEffect.

    Возвращаемое значение

    Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:

    FFERR_INVALIDPARAM

    FFERR_NOTDOWNLOADED

    FFERR_GENERIC

    FFERR_INTERNAL

    FFERR_INVALIDDOWNLOADID

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Используемый, чтобы определить, является ли определенное устройство, предоставленное менеджером по HID, устройством обратной связи силы.

    Объявление

    Swift

    func FFIsForceFeedback(_ hidDevice: io_service_t) -> HRESULT

    Objective C

    HRESULT FFIsForceFeedback ( io_service_t hidDevice );

    Параметры

    hidDevice

    Указатель на устройство HID возражает, чтобы быть протестированным на поддержку обратной связи силы.

    Возвращаемое значение

    Если метод успешно выполняется, и устройство поддерживает FF, возвращаемое значение является FF_OK. Если метод успешно выполняется, и устройство не поддерживает FF, возвращаемое значение является FFERR_NOINTERFACE. Если метод перестал работать, возвращаемое значение является FFERR_INVALIDPARAM

    Обсуждение

    Когда Вы закончены с устройством, FFReleaseDevice нужно вызвать на ссылке, полученной в этой функции для избавления от объекта устройства API.

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Избавляется от объекта устройства API, создаваемого с FFCreateDevice.

    Объявление

    Swift

    func FFReleaseDevice(_ deviceReference: FFDeviceObjectReference) -> HRESULT

    Objective C

    HRESULT FFReleaseDevice ( FFDeviceObjectReference deviceReference );

    Параметры

    deviceReference

    Непрозрачный ссылочный дескриптор к объекту устройства, который является быть избавленным. Этот дескриптор получен от предыдущего вызова до FFCreateDevice.

    Возвращаемое значение

    Если метод успешно выполняется, и устройство поддерживает FF, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:

    FFERR_INVALIDPARAM

    FFERR_NOINTERFACE

    FFERR_OUTOFMEMORY

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

Типы данных

См. Обзор для документации уровня заголовка.

  • Используемый методом FFDeviceGetForceFeedbackCapabilities для получения возможностей обратной связи силы устройства.

    Объявление

    Swift

    struct FFCAPABILITIES { var ffSpecVer: NumVersion var supportedEffects: UInt32 var emulatedEffects: UInt32 var subType: UInt32 var numFfAxes: UInt32 var ffAxes: (UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8) var storageCapacity: UInt32 var playbackCapacity: UInt32 var firmwareVer: NumVersion var hardwareVer: NumVersion var driverVer: NumVersion }

    Objective C

    typedef struct FFCAPABILITIES FFCAPABILITIES;

    Обсуждение

    Эта структура не имеет никакого эквивалентного DirectInput.

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Содержит специфичную для типа информацию для следующих эффектов.

    • SPRING

    • УВЛАЖНИТЕЛЬ

    • ИНЕРЦИЯ

    • ТРЕНИЕ

    Объявление

    Swift

    struct FFCONDITION { var lOffset: LONG var lPositiveCoefficient: LONG var lNegativeCoefficient: LONG var dwPositiveSaturation: DWORD var dwNegativeSaturation: DWORD var lDeadBand: LONG }

    Objective C

    typedef struct FFCONDITION FFCONDITION;

    Обсуждение

    Указатель на массив структур FFCONDITION для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT. Число элементов в массиве должно быть или один, или равно числу осей, связанных с эффектом.

    Различные типы условий интерпретируют параметры по-другому, но основная идея состоит в том, что сила, следующая из условия, равна (q - q0), где A является масштабным коэффициентом, q является некоторой метрикой, и q0 является нейтральным значением для той метрики.

    Если ненулевая мертвая зона предоставлена, предыдущая упрощенная формула должна быть скорректирована. Если метрика является меньше, чем lOffset - lDeadBand, получающаяся сила дана следующей формулой:

    вызовите = lNegativeCoefficient * (q - (lOffset - lDeadBand))

    Точно так же, если метрика больше, чем lOffset + lDeadBand, получающаяся сила дана следующей формулой:

    вызовите = lPositiveCoefficient * (q - (lOffset + lDeadBand))

    Пружинное условие использует позицию оси как метрика.

    Условие увлажнителя использует скорость оси в качестве метрики.

    Условие инерции использует ускорение оси в качестве метрики.

    Если число структур FFCONDITION в массиве равно числу осей для эффекта, первая структура применяется к первой оси, второе применяется к второй оси и т.д. Например, пружинное условие с двумя осями с набором lOffset к 0 в обоих структуры FFCONDITION имело бы тот же эффект как самоцентрирующая пружина джойстика. Когда условие определяется для каждой оси таким образом, эффект не должен быть повернут.

    Если существует единственная структура FFCONDITION для эффекта больше чем с одной осью, направление, вдоль которого имеют силу параметры структуры FFCONDITION, определяется параметрами направления, переданными в rglDirection поле структуры FFEFFECT. Например, условие трения вращалось, 45 градусов (в полярных координатах) будут сопротивляться движению джойстика в северо-восточно-юго-западном направлении, но не имели бы никакого эффекта на движение джойстика в северо-западно-юго-восточном направлении.

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Содержит специфичную для типа информацию для эффекта CONSTANTFORCE.

    Объявление

    Swift

    struct FFCONSTANTFORCE { var lMagnitude: LONG }

    Objective C

    typedef struct FFCONSTANTFORCE FFCONSTANTFORCE;

    Обсуждение

    Указатель на единственную структуру FFCONSTANTFORCE для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT.

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Содержит специфичную для типа информацию для эффекта CUSTOMFORCE.

    Объявление

    Swift

    struct FFCUSTOMFORCE { var cChannels: DWORD var dwSamplePeriod: DWORD var cSamples: DWORD var rglForceData: LPLONG }

    Objective C

    typedef struct FFCUSTOMFORCE FFCUSTOMFORCE;

    Обсуждение

    Указатель на единственную структуру FFCUSTOMFORCE для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT.

    Структура описывает пользовательскую или определяемую пользователем силу.

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • UsUsed методом FFDeviceCreateEffect для инициализации нового объекта эффекта. Это также используется функциями FFEffectSetParameters и FFEffectGetParameters.

    Объявление

    Swift

    struct FFEFFECT { var dwSize: DWORD var dwFlags: DWORD var dwDuration: DWORD var dwSamplePeriod: DWORD var dwGain: DWORD var dwTriggerButton: DWORD var dwTriggerRepeatInterval: DWORD var cAxes: DWORD var rgdwAxes: LPDWORD var rglDirection: LPLONG var lpEnvelope: PFFENVELOPE var cbTypeSpecificParams: DWORD var lpvTypeSpecificParams: UnsafeMutablePointer<Void> var dwStartDelay: DWORD }

    Objective C

    typedef struct FFEFFECT FFEFFECT;

    Обсуждение

    OBJECT IDS не может использоваться, чтобы идентифицировать кнопки запуска в dwTriggerButton и вывести оси в rgdwAxes [. Используйте объектные смещения (константы FFJOFS_*), единственный поддерживаемый метод.

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Структура FFEFFESCAPE передает специфичные для аппаратных средств данные непосредственно плагину Обратной связи Силы.

    Объявление

    Swift

    struct FFEFFESCAPE { var dwSize: DWORD var dwCommand: DWORD var lpvInBuffer: UnsafeMutablePointer<Void> var cbInBuffer: DWORD var lpvOutBuffer: UnsafeMutablePointer<Void> var cbOutBuffer: DWORD }

    Objective C

    typedef struct FFEFFESCAPE FFEFFESCAPE;

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Используемый структурой FFEFFECT для указания дополнительных параметров конверта для эффекта.

    Объявление

    Swift

    struct FFENVELOPE { var dwSize: DWORD var dwAttackLevel: DWORD var dwAttackTime: DWORD var dwFadeLevel: DWORD var dwFadeTime: DWORD }

    Objective C

    typedef struct FFENVELOPE FFENVELOPE;

    Обсуждение

    Выдержать уровень для конверта представлен dwMagnitude элементом структуры FFPERIODIC и lMagnitude элементом структуры FFCONSTANTFORCE. Выдержать время представлено dwDuration элементом структуры FFEFFECT

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Содержит специфичную для типа информацию для следующих эффектов.

    • СИНУС

    • КВАДРАТ

    • ТРЕУГОЛЬНИК

    • SAWTOOTHUP

    • SAWTOOTHDOWN

    Объявление

    Swift

    struct FFPERIODIC { var dwMagnitude: DWORD var lOffset: LONG var dwPhase: DWORD var dwPeriod: DWORD }

    Objective C

    typedef struct FFPERIODIC FFPERIODIC;

    Обсуждение

    Указатель на единственную структуру FFPERIODIC для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT. Плагин Обратной связи Силы не может предоставить поддержку для всех значений в dwPhase элементе. В этом случае значение округляется до самого близкого поддерживаемого значения.

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Содержит специфичную для типа информацию для эффекта RAMPFORCE.

    Объявление

    Swift

    struct FFRAMPFORCE { var lStart: LONG var lEnd: LONG }

    Objective C

    typedef struct FFRAMPFORCE FFRAMPFORCE;

    Обсуждение

    Указатель на единственную структуру FFRAMPFORCE для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT.

    dwDuration для эффекта силы ската не может быть FF_INFINITE.

    Оператор импорта

    Objective C

    @import ForceFeedback;

    Swift

    import ForceFeedback

    Доступность

    Доступный в OS X v10.2 и позже.

  • Используемый методом FFDeviceGetForceFeedbackCapabilities для получения возможностей обратной связи силы устройства.

    Объявление

    Objective C

    struct FFCAPABILITIES { NumVersion ffSpecVer; UInt32 supportedEffects; UInt32 emulatedEffects; UInt32 subType; UInt32 numFfAxes; UInt8 ffAxes[32]; UInt32 storageCapacity; UInt32 playbackCapacity; NumVersion firmwareVer; NumVersion hardwareVer; NumVersion driverVer; };

    Поля

    ffSpecVer

    Указывает номер версии спецификации API FF, поддерживаемой этим плагином. Это должно быть указано с помощью полей структуры NumVersion. Первая версия спецификации API FF 1.0.0f0.

    supportedEffects

    Флаги FFCapabilitiesEffectType, идентифицирующие все типы эффекта, поддерживаемые плагином/устройством (включая эмулированные драйвером эффекты). Это значение может быть комбинацией один или больше следующих значений:

    FFCAP_ET_CONSTANTFORCE

    Постоянный тип эффекта Силы поддерживается этим устройством.

    ...

    FFCAP_ET_*

    Посмотрите заголовочный файл ForceFeedbackConstants.h для полного списка флагов FFCapabilitiesEffectType.

    emulatedEffects

    Флаги FFCapabilitiesEffectType, идентифицирующие все типы эффекта, не непосредственно поддерживаемые устройством, но эмулированные плагином. Эмулированные флаги эффектов должны также появиться в supportedEffects элементе. Это значение может быть комбинацией один или больше следующих значений:

    FFCAP_ET_*

    Посмотрите заголовочный файл ForceFeedbackConstants.h для полного списка флагов FFCapabilitiesEffectType.

    subType

    Подкатегория обратной связи силы, лучше всего идентифицирующая возможности FF устройства. Это значение может быть одним из следующего:

    FFCAP_ST_KINESTHETIC

    Кинестетическое устройство обратной связи силы является тем, которое может произвести «основанные» силы на основе позиции контроллера. Это поддерживает временные эффекты обратной связи силы (периодические колебания), а также направленный (постоянная сила) и основанный на позиции (пружина, увлажнитель) силы. Большинство джойстиков обратной связи силы более высокого качества и рулей попадают в эту категорию.

    FFCAP_ST_VIBRATION

    Устройство обратной связи силы вибрации является тем, которое может только произвести неоснованные временные эффекты обратной связи силы (периодические колебания). Игровые планшеты консоли Most и некоторые низкокачественные джойстики попадают в эту категорию.

    Подтип обратной связи силы должен быть предоставлен и может только быть одним из вышеупомянутых значений.

    numFfAxes

    Число осей контроллера, обеспечивающих обратную связь силы. Указывает число допустимых элементов в факсах.

    ffAxes

    Массив значений, что decribe оси, на которых присутствует обратная связь силы. Число допустимых элементов в массиве указано в numFfAxes. Каждый элемент массива может содержать одно из следующих значений:

    FFJOFS_X

    Ось X приводится в действие силой-обратной связью.

    FFJOFS_Y

    Ось Y приводится в действие силой-обратной связью.

    FFJOFS_Z

    Ось Z приводится в действие силой-обратной связью.

    Для устройств подтипа FFCAP_ST_VIBRATION рекомендуется что numFfAxes = 1, и что ffAxes[0] = FFJOFS_X.

    storageCapacity

    Максимальное количество эффектов, которые могут быть созданы через вызовы к FFDeviceCreateEffect и сосуществовать в любой момент. Это может или может не отличаться от playbackCapacity, в зависимости от сложности драйвера устройства.

    playbackCapacity

    Максимальное количество создаваемых эффектов, которые могут одновременно играться через вызовы к FFEffectStart. Это число всегда будет равно или меньше, чем storageCapacity. Драйвер устройства может позволить большему количеству эффектов создаваться, чем физическое устройство может фактически обработать. Поэтому это число является важным параметром для разработчиков FF.

    driverVer

    Указывает номер версии драйвера устройства обратной связи силы, с помощью структуры NumVersion.

    firmwareVer

    Указывает микропрограммную версию устройства, с помощью структуры NumVersion.

    hardwareVer

    Указывает версию оборудования устройства, с помощью структуры NumVersion.

    Обсуждение

    Эта структура не имеет никакого эквивалентного DirectInput.

  • Содержит специфичную для типа информацию для следующих эффектов.

    • SPRING

    • УВЛАЖНИТЕЛЬ

    • ИНЕРЦИЯ

    • ТРЕНИЕ

    Объявление

    Objective C

    struct FFCONDITION { LONG lOffset; LONG lPositiveCoefficient; LONG lNegativeCoefficient; DWORD dwPositiveSaturation; DWORD dwNegativeSaturation; LONG lDeadBand; };

    Поля

    lOffset

    Смещение для условия, в диапазоне от-10 000 до 10,000.

    lPositiveCoefficient

    Коэффициент, постоянный на положительной стороне смещения, в диапазоне от-10 000 до 10,000.

    lNegativeCoefficient

    Коэффициент, постоянный на отрицательной стороне смещения, в диапазоне от-10 000 до 10,000.

    Если устройство не поддерживает отдельные положительные и отрицательные коэффициенты, значение lNegativeCoefficient проигнорировано, и значение lPositiveCoefficient используется и в качестве положительных и в качестве отрицательных коэффициентов.

    dwPositiveSaturation

    Максимальный вывод силы на положительной стороне смещения, в диапазоне от 0 до 10,000.

    Если устройство не поддерживает насыщенность силы, значение этого элемента проигнорировано.

    dwNegativeSaturation

    Максимальный вывод силы на отрицательной стороне смещения, в диапазоне от 0 до 10,000.

    Если устройство не поддерживает насыщенность силы, значение этого элемента проигнорировано.

    Если устройство не поддерживает отдельную положительную и отрицательную насыщенность, значение dwNegativeSaturation проигнорировано, и значение dwPositiveSaturation используется и в качестве положительной и в качестве отрицательной насыщенности.

    lDeadBand

    Область вокруг lOffset, в котором условие не активно в диапазоне от 0 до 10,000. Другими словами, условие не активно между lOffset минус lDeadBand и lOffset плюс lDeadBand.

    Обсуждение

    Указатель на массив структур FFCONDITION для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT. Число элементов в массиве должно быть или один, или равно числу осей, связанных с эффектом.

    Различные типы условий интерпретируют параметры по-другому, но основная идея состоит в том, что сила, следующая из условия, равна (q - q0), где A является масштабным коэффициентом, q является некоторой метрикой, и q0 является нейтральным значением для той метрики.

    Если ненулевая мертвая зона предоставлена, предыдущая упрощенная формула должна быть скорректирована. Если метрика является меньше, чем lOffset - lDeadBand, получающаяся сила дана следующей формулой:

    вызовите = lNegativeCoefficient * (q - (lOffset - lDeadBand))

    Точно так же, если метрика больше, чем lOffset + lDeadBand, получающаяся сила дана следующей формулой:

    вызовите = lPositiveCoefficient * (q - (lOffset + lDeadBand))

    Пружинное условие использует позицию оси как метрика.

    Условие увлажнителя использует скорость оси в качестве метрики.

    Условие инерции использует ускорение оси в качестве метрики.

    Если число структур FFCONDITION в массиве равно числу осей для эффекта, первая структура применяется к первой оси, второе применяется к второй оси и т.д. Например, пружинное условие с двумя осями с набором lOffset к 0 в обоих структуры FFCONDITION имело бы тот же эффект как самоцентрирующая пружина джойстика. Когда условие определяется для каждой оси таким образом, эффект не должен быть повернут.

    Если существует единственная структура FFCONDITION для эффекта больше чем с одной осью, направление, вдоль которого имеют силу параметры структуры FFCONDITION, определяется параметрами направления, переданными в rglDirection поле структуры FFEFFECT. Например, условие трения вращалось, 45 градусов (в полярных координатах) будут сопротивляться движению джойстика в северо-восточно-юго-западном направлении, но не имели бы никакого эффекта на движение джойстика в северо-западно-юго-восточном направлении.

  • Содержит специфичную для типа информацию для эффекта CONSTANTFORCE.

    Объявление

    Objective C

    struct FFCONSTANTFORCE { LONG lMagnitude; };

    Поля

    lMagnitude

    Величина эффекта, в диапазоне от-10 000 до 10,000. Если конверт применяется с этой целью, значение представляет величину выдержания. Если никакой конверт не применяется, значение представляет амплитуду всего эффекта.

    Обсуждение

    Указатель на единственную структуру FFCONSTANTFORCE для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT.

  • Содержит специфичную для типа информацию для эффекта CUSTOMFORCE.

    Объявление

    Objective C

    struct FFCUSTOMFORCE { DWORD cChannels; DWORD dwSamplePeriod; DWORD cSamples; LPLONG rglForceData; };

    Поля

    cChannels

    Число каналов (оси) затронуто этой силой.

    Первый канал применяется к первой оси, связанной с эффектом, вторым к второму, и т.д. Если существует меньше каналов, чем оси, ничто не связано с дополнительными осями.

    Если существует только единственный канал, эффект повернут в направлении, указанном rglDirection элементом структуры FFEFFECT. Если существует больше чем один канал, вращение не позволяется.

    Не все устройства поддерживают вращение пользовательских эффектов.

    dwSamplePeriod

    Период дискретизации, в микросекундах.

    cSamples

    Общее количество выборок в rglForceData. Это должно быть интегральное кратное число каналов.

    rglForceData

    Указатель на массив значений силы, представляющих пользовательскую силу. Если многократные каналы предоставлены, значения чередованы. Например, если каналы равняются 3, первый элемент массива принадлежит первому каналу, второму к второму, и третье к третьему.

    Обсуждение

    Указатель на единственную структуру FFCUSTOMFORCE для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT.

    Структура описывает пользовательскую или определяемую пользователем силу.

  • UsUsed методом FFDeviceCreateEffect для инициализации нового объекта эффекта. Это также используется функциями FFEffectSetParameters и FFEffectGetParameters.

    Объявление

    Objective C

    struct FFEFFECT { DWORD dwSize; DWORD dwFlags; DWORD dwDuration; DWORD dwSamplePeriod; DWORD dwGain; DWORD dwTriggerButton; DWORD dwTriggerRepeatInterval; DWORD cAxes; LPDWORD rgdwAxes; LPLONG rglDirection; PFFENVELOPE lpEnvelope; DWORD cbTypeSpecificParams; void *lpvTypeSpecificParams; DWORD dwStartDelay; };

    Поля

    dwSize

    Размер, в байтах, этой структуры. Этот элемент должен быть инициализирован, прежде чем структура используется.

    dwFlags

    Флаги связались с эффектом. Это значение может быть комбинацией один или больше следующих значений:

    • FFEFF_CARTESIAN

    Значения rglDirection должны быть интерпретированы как Декартовы координаты.

    • FFEFF_OBJECTOFFSETS

    Значения dwTriggerButton и rgdwAxes являются смещениями формата данных, константами FFJOFS_*. Этот флаг не необходим, поскольку принят формат. Метод OBJECTIDS указания dwTriggerButton и rgdwAxes не поддерживается - константы FFJOFS_* MUST использоваться.

    • FFEFF_POLAR

    Значения rglDirection должны быть интерпретированы как полярные координаты.

    • FFEFF_SPHERICAL

    Значения rglDirection должны быть интерпретированы как сферические координаты.

    dwDuration

    Общая продолжительность эффекта, в микросекундах. Если это значение является FF_INFINITE, эффект имеет бесконечную продолжительность. Если конверт был применен к эффекту, атака применяется, сопровождается большим количеством, выдерживают.

    dwSamplePeriod

    Период, в который устройство должно воспроизвести эффект в микросекундах. Значение 0 указывает, что должна использоваться частота дискретизации воспроизведения по умолчанию.

    Если устройство не способно к воспроизведению эффекта на указанном уровне, это выбирает поддерживаемый уровень, который является самым близким к требуемому значению.

    Установка пользовательского dwSamplePeriod может использоваться для специальных эффектов. Например, игра синусоидальной волны в искусственно период большой выборки приводит к более грубой текстуре.

    dwGain

    Усиление, которое будет применено к эффекту в диапазоне от 0 до 10,000. Усиление является масштабным коэффициентом, применился ко всем величинам эффекта и его конверта.

    dwTriggerButton

    Идентификатор или смещение кнопки, которая будет использоваться для инициирования воспроизведения эффекта. Флаги FFJOFS_* должны использоваться для указания значения. Если этот элемент установлен в FFEB_NOTRIGGER, никакая кнопка запуска не связана с эффектом.

    dwTriggerRepeatInterval

    Интервал, в микросекундах, между концом одного воспроизведения и запуском следующего, когда эффект инициирован нажатием кнопки и кнопкой, удерживается. Установка этого значения к FF_INFINITE подавляет повторение.

    cAxes

    Число осей, вовлеченных в эффект. Этот элемент должен быть переполнен в вызывающей стороной при изменении или установке списка оси или списка направления.

    Число осей для эффекта не может быть изменено, как только оно было установлено.

    rgdwAxes

    Указатель на массив DWORD (cAxes элементов) содержащий идентификаторы или смещения, идентифицирующие оси, к которым состоит в том, чтобы быть применен эффект. Флаги FFJOFS_* должны использоваться для указания значений в массиве.

    Список осей, связанных с эффектом, не может быть изменен, как только он был установлен.

    Не больше, чем 32 оси могут быть связаны с единственным эффектом.

    rglDirection

    Указатель на массив LONG (cAxes элементов) содержащий или Декартовы координаты, полярные координаты или сферические координаты. Флаги FFEFF_CARTESIAN, FFEFF_POLAR и FFEFF_SPHERICAL определяют семантику значений в массиве.

    Если Декартов, каждое значение в rglDirection связано с соответствующей осью в rgdwAxes.

    Если полярный, угол измеряется в сотых частях градусов от (0,-1) направление, повернутое в направлении (1, 0). Это обычно означает, что север вдали от пользователя, и восток к праву пользователя. Последний элемент не используется.

    Если сферический, первый угол измеряется в сотых частях градуса от (1, 0) направление, повернутое в направлении (0, 1). Второй угол (если число осей равняется трем или больше) измеряется в сотых частях градуса к (0, 0, 1). Третий угол (если число осей равняется четырем или больше) измеряется в сотых частях градуса к (0, 0, 0, 1), и т.д. Последний элемент не используется.

    Примечание: Даже если полярные или сферические координаты даны, массив rglDirection должен содержать cAxes записи. В этих случаях последний элемент в массиве rglDirection резервируется для будущего использования и должен быть 0.

    lpEnvelope

    Дополнительный указатель на структуру FFENVELOPE, описывающую конверт, который будет использоваться этим эффектом. Не весь эффект вводит конверты использования. Если никакой конверт не должен быть применен, элемент должен быть установлен в NULL.

    cbTypeSpecificParams

    Число байтов дополнительных специфичных для типа параметров для соответствующего типа эффекта.

    lpvTypeSpecificParams

    TPointer к специфичным для типа параметрам или NULL, при отсутствии специфичных для типа параметров.

    Если эффект имеет тип FFEFT_CONDITION, этот элемент содержит указатель на массив структур FFCONDITION, определяющих параметры для условия. Единственная структура может использоваться, когда условие применяется в направлении, указанном в массиве rglDirection. Иначе, должна быть одна структура для каждой оси в том же порядке как оси в массиве rgdwAxes. Если структура предоставляется для каждой оси, эффект не должен быть повернут; необходимо использовать следующие значения в массиве rglDirection:

    • FFEFF_SPHERICAL: 0, 0...

    • FFEFF_POLAR: 9000, 0...

    • FFEFF_CARTESIAN: 1, 0...

    Если эффект имеет тип FFEFT_CUSTOMFORCE, этот элемент содержит указатель на структуру FFCUSTOMFORCE, определяющую параметры для пользовательской силы.

    Если эффект имеет тип FFEFT_PERIODIC, этот элемент содержит указатель на структуру FFPERIODIC, определяющую параметры для эффекта.

    Если эффект имеет тип FFEFT_CONSTANTFORCE, этот элемент содержит указатель на структуру FFCONSTANTFORCE, определяющую параметры для постоянной силы.

    Если эффект имеет тип FFEFT_RAMPFORCE, этот элемент содержит указатель на структуру FFRAMPFORCE, определяющую параметры для силы ската.

    dwStartDelay

    Время (в микросекундах), что устройство должно ожидать после вызова FFEffectStart прежде, чем играть эффект. Если это значение 0, воспроизведение эффекта сразу начинается.

    Обсуждение

    OBJECT IDS не может использоваться, чтобы идентифицировать кнопки запуска в dwTriggerButton и вывести оси в rgdwAxes [. Используйте объектные смещения (константы FFJOFS_*), единственный поддерживаемый метод.

  • Структура FFEFFESCAPE передает специфичные для аппаратных средств данные непосредственно плагину Обратной связи Силы.

    Объявление

    Objective C

    struct FFEFFESCAPE { DWORD dwSize; DWORD dwCommand; void *lpvInBuffer; DWORD cbInBuffer; void *lpvOutBuffer; DWORD cbOutBuffer; };

    Поля

    dwSize

    Размер, в байтах, этой структуры. Этот элемент должен быть инициализирован, прежде чем структура используется.

    dwCommand

    Указывает сменное определенное число команды. Свяжитесь с поставщиком оборудования для списка допустимых команд и их параметров.

    lpvInBuffer

    Буфер, содержащий данные, требуемые выполнять работу.

    cbInBuffer

    Указывает размер, в байтах, буфера lpvInBuffer.

    lpvOutBuffer

    Буфер, в котором выходные данные работы возвращается.

    cbOutBuffer

    На записи, указывает размер, в байтах, буфера lpvOutBuffer. На выходе, указывает число байтов, фактически произведенных командой.

  • Используемый структурой FFEFFECT для указания дополнительных параметров конверта для эффекта.

    Объявление

    Objective C

    struct FFENVELOPE { DWORD dwSize; DWORD dwAttackLevel; DWORD dwAttackTime; DWORD dwFadeLevel; DWORD dwFadeTime; };

    Поля

    dwSize

    Размер, в байтах, этой структуры. Этот элемент должен быть инициализирован, прежде чем структура используется.

    dwAttackLevel

    Амплитуда для запуска конверта, относительно базовой линии, в диапазоне от 0 до 10,000. Если специфичные для типа данные эффекта не указывают базовую линию, амплитуда относительно 0.

    dwAttackTime

    Время, в микросекундах, для достижения выдержать уровня.

    dwFadeLevel

    Амплитуда для конца конверта, относительно базовой линии, в диапазоне от 0 до 10,000. Если специфичные для типа данные эффекта не указывают базовую линию, амплитуда относительно 0.

    dwFadeTime

    Время, в микросекундах, для достижения исчезнуть уровня.

    Обсуждение

    Выдержать уровень для конверта представлен dwMagnitude элементом структуры FFPERIODIC и lMagnitude элементом структуры FFCONSTANTFORCE. Выдержать время представлено dwDuration элементом структуры FFEFFECT

  • Содержит специфичную для типа информацию для следующих эффектов.

    • СИНУС

    • КВАДРАТ

    • ТРЕУГОЛЬНИК

    • SAWTOOTHUP

    • SAWTOOTHDOWN

    Объявление

    Objective C

    struct FFPERIODIC { DWORD dwMagnitude; LONG lOffset; DWORD dwPhase; DWORD dwPeriod; };

    Поля

    dwMagnitude

    Величина эффекта, в диапазоне от 0 до 10,000. Если конверт применяется с этой целью, значение представляет величину выдержания. Если никакой конверт не применяется, значение представляет амплитуду всего эффекта.

    lOffset

    Смещение эффекта. Диапазон сил, сгенерированных эффектом, является lOffset минус dwMagnitude к lOffset плюс dwMagnitude. Значение lOffset элемента является также базовой линией для любого конверта, применяющегося к эффекту.

    dwPhase

    Позиция в цикле периодического эффекта, в котором воспроизведение начинается в диапазоне от 0 до 35,999.

    dwPeriod

    Период эффекта, в микросекундах.

    Обсуждение

    Указатель на единственную структуру FFPERIODIC для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT. Плагин Обратной связи Силы не может предоставить поддержку для всех значений в dwPhase элементе. В этом случае значение округляется до самого близкого поддерживаемого значения.

  • Содержит специфичную для типа информацию для эффекта RAMPFORCE.

    Объявление

    Objective C

    struct FFRAMPFORCE { LONG lStart; LONG lEnd; };

    Поля

    lMagnitude

    Величина в начале эффекта, в диапазоне от-10 000 до 10,000.

    lEnd

    Величина в конце эффекта, в диапазоне от-10 000 до 10,000.

    Обсуждение

    Указатель на единственную структуру FFRAMPFORCE для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT.

    dwDuration для эффекта силы ската не может быть FF_INFINITE.

Константы

См. Обзор для документации уровня заголовка.

  • Объявление

    Objective C

    enum { kFFAPIMajorRev = 1, kFFAPIMinorAndBugRev = 0, kFFAPIStage = finalStage, kFFAPINonRelRev = 0 };

    Обсуждение

    Это отсылает Платформу Обратной связи Силы API (а не сменный API).