protected int magneticNotificationInterval = 1;   // x20ms

        public override void ConfigMagneticSensor(Cube.MagneticMode mode, int intervalMs, Cube.MagneticNotificationType notificationType)
        {
            this.magneticMode = mode;
            this.magneticNotificationInterval = Mathf.Clamp(intervalMs / 20, 0, 255);
            this.magneticNotificationType     = notificationType;
            this.configMagneticSensorCallback?.Invoke(true);
        }
 protected virtual void ResetMagneticSensor()
 {
     this.magneticMode                 = Cube.MagneticMode.Off;
     this.magnetState                  = Cube.MagnetState.None;
     this.magnetStateCallback          = null;
     this.configMagneticSensorCallback = null;
 }
 public override void ConfigMagneticSensor(Cube.MagneticMode mode)
 {
     if (mode > Cube.MagneticMode.MagnetState)
     {
         return;
     }
     this.magneticMode = mode;
     this.configMagneticSensorCallback?.Invoke(true);
 }
    public async void OnSwitchMag()
    {
        this.magMode = (Cube.MagneticMode)(((int)this.magMode + 1) % 3);
        await cube.ConfigMagneticSensor(
            this.magMode,
            intervalMs : 500,    // 精度20msなの注意
            notificationType : Cube.MagneticNotificationType.OnChanged
            );

        if (this.magMode == Cube.MagneticMode.Off)
        {
            this.textMag.text = "MagneticSensor Off";
        }
        else
        {
            cube.RequestMagneticSensor();
        }
    }
        // --------- 2.3.0 --------

        public void ConfigMagneticSensor(Cube.MagneticMode mode, int interval, Cube.MagneticNotificationType notificationType)
        {
            DelayCommand(() => impl.ConfigMagneticSensor(mode, interval, notificationType));
        }
 public void ConfigMagneticSensor(Cube.MagneticMode mode)
 {
     DelayCommand(() => impl.ConfigMagneticSensor(mode));
 }