<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def init_can(self, channel=Channel.CHANNEL_CH0, BTR=Baudrate.BAUD_1MBit, baudrate=BaudrateEx.BAUDEX_USE_BTR01, AMR=AMR_ALL, ACR=ACR_ALL, mode=Mode.MODE_NORMAL, OCR=OutputControl.OCR_DEFAULT, rx_buffer_entries=DEFAULT_BUFFER_ENTRIES, tx_buffer_entries=DEFAULT_BUFFER_ENTRIES):
 """ Initializes a specific CAN channel of a device. :param int channel: CAN channel to be initialized (:data:`Channel.CHANNEL_CH0` or :data:`Channel.CHANNEL_CH1`). :param int BTR: Baud rate register BTR0 as high byte, baud rate register BTR1 as low byte (see enum :class:`Baudrate`). :param int baudrate: Baud rate register for all systec USB-CANmoduls (see enum :class:`BaudrateEx`). :param int AMR: Acceptance filter mask (see method :meth:`set_acceptance`). :param int ACR: Acceptance filter code (see method :meth:`set_acceptance`). :param int mode: Transmission mode of CAN channel (see enum :class:`Mode`). :param int OCR: Output Control Register (see enum :class:`OutputControl`). :param int rx_buffer_entries: The number of maximum entries in the receive buffer. :param int tx_buffer_entries: The number of maximum entries in the transmit buffer. """

        if not self._ch_is_initialized.get(channel, False):
            init_param = InitCanParam(mode, BTR, OCR, AMR, ACR, baudrate, rx_buffer_entries, tx_buffer_entries)
            UcanInitCanEx2(self._handle, channel, init_param)
            self._ch_is_initialized[channel] = True