protected override unsafe long ExecuteCommand(InputDeviceCommand *commandPtr)
        {
            var t = commandPtr->type;

            if (t == QueryEnabledStateCommand.Type)
            {
#if UNITY_EDITOR
                ((QueryEnabledStateCommand *)commandPtr)->isEnabled = m_Enabled;
#else
                ((QueryEnabledStateCommand *)commandPtr)->isEnabled = _iOSStepCounterIsEnabled(deviceId) != 0;
#endif
                return(kCommandSuccess);
            }

            if (t == EnableDeviceCommand.Type)
            {
                if (InputSystem.settings.iOS.motionUsage.enabled == false)
                {
                    Debug.LogError("Please enable Motion Usage in Input Settings before using Step Counter.");
                    return(kCommandFailure);
                }
#if UNITY_EDITOR
                m_Enabled = true;
                return(kCommandSuccess);
#else
                var callbacks = new iOSStepCounterCallbacks();
                callbacks.onData = OnDataReceived;
                return(_iOSStepCounterEnable(deviceId, ref callbacks, Marshal.SizeOf(callbacks)));
#endif
            }

            if (t == DisableDeviceCommand.Type)
            {
#if UNITY_EDITOR
                m_Enabled = false;
                return(kCommandSuccess);
#else
                return(_iOSStepCounterDisable(deviceId));
#endif
            }

            if (t == QueryCanRunInBackground.Type)
            {
                ((QueryCanRunInBackground *)commandPtr)->canRunInBackground = true;
                return(kCommandSuccess);
            }

            if (t == RequestResetCommand.Type)
            {
#if UNITY_EDITOR
                m_Enabled = false;
#else
                _iOSStepCounterDisable(deviceId);
#endif
                return(kCommandSuccess);
            }

            return(kCommandFailure);
        }
 private static extern int _iOSStepCounterEnable(int deviceId, ref iOSStepCounterCallbacks callbacks, int sizeOfCallbacks);