private normalizeSchedule()

in libs/core/output.ts [304:339]


        private normalizeSchedule(speed: number, step1: number, step2: number, step3: number, unit: MoveUnit): MoveSchedule {
            // motor polarity is not supported at the firmware level for sync motor operations
            const r: MoveSchedule = {
                speed: Math.clamp(-100, 100, speed | 0) * this.invertedFactor(),
                useSteps: true,
                steps: [step1 || 0, step2 || 0, step3 || 0]
            }
            let scale = 1;
            switch (unit) {
                case MoveUnit.Rotations:
                    scale = 360;
                    r.useSteps = true;
                    if (r.steps[1] < 0) {
                        r.speed = -r.speed;
                        r.steps[1] = -r.steps[1];
                    }
                    break;
                case MoveUnit.Degrees:
                    r.useSteps = true;
                    if (r.steps[1] < 0) {
                        r.speed = -r.speed;
                        r.steps[1] = -r.steps[1];
                    }
                    break;
                case MoveUnit.Seconds:
                    scale = 1000;
                    r.useSteps = false;
                    break;
                default:
                    r.useSteps = false;
                    break;
            }
            for (let i = 0; i < r.steps.length; ++i)
                r.steps[i] = Math.max(0, (r.steps[i] * scale) | 0);
            return r;
        }