#
# This file is autogenerated, do not edit manually. Instead,
# edit gen/BuffTrajPointStream_data.yml
#

import typing

from hal_impl.data import hal_data, NotifyDict

from .ctre_sim_enums import ErrorCode


class BuffTrajPointStream:

    def __init__(self):
        self.create_called = False

    def _create1(self) -> None:
        self.create_called = True

    def clear(self) -> ErrorCode:
        '''Clear all trajectory points.

        :returns: nonzero error code if operation fails.


        .. note:: This function works on a real robot, but has not yet
                  been implemented in simulation mode. See :ref:`api_support`
                  for more details.

        '''
        retval = ErrorCode.OK
        raise NotImplementedError("clear not implemented in simulation (file a bug on github if you need it)")

    def _write(self, position: float, velocity: float, arbFeedFwd: float, auxiliaryPos: float, auxiliaryVel: float, auxiliaryArbFeedFwd: float, profileSlotSelect0: int, profileSlotSelect1: int, isLastPoint: bool, zeroPos: bool, timeDur: int, useAuxPID: bool) -> ErrorCode:
        assert isinstance(position, (int, float))
        assert isinstance(velocity, (int, float))
        assert isinstance(arbFeedFwd, (int, float))
        assert isinstance(auxiliaryPos, (int, float))
        assert isinstance(auxiliaryVel, (int, float))
        assert isinstance(auxiliaryArbFeedFwd, (int, float))
        assert isinstance(profileSlotSelect0, int) and 0 <= profileSlotSelect0 < 1<<32
        assert isinstance(profileSlotSelect1, int) and 0 <= profileSlotSelect1 < 1<<32
        assert isinstance(isLastPoint, bool)
        assert isinstance(zeroPos, bool)
        assert isinstance(timeDur, int) and 0 <= timeDur < 1<<32
        assert isinstance(useAuxPID, bool)
        retval = ErrorCode.OK
        raise NotImplementedError("_write not implemented in simulation (file a bug on github if you need it)")


