docs: def _recv_fc(self, data):
          """Process a received 'Flow Control' frame"""
          if (self.tx_state != ISOTP_WAIT_FC and
                  self.tx_state != ISOTP_WAIT_FIRST_FC):
              return 0
  
          self.tx_timer.cancel()
  
          if len(data) < 3:
              self.tx_state = ISOTP_IDLE
              self.tx_exception = "CF frame discarded because it was too short"
              self.tx_done.set()
              raise Scapy_Exception(self.tx_exception)
  
          # get communication parameters only from the first FC frame
          if self.tx_state == ISOTP_WAIT_FIRST_FC:
              self.txfc_bs = six.indexbytes(data, 1)
              self.txfc_stmin = six.indexbytes(data, 2)
  
          if ((self.txfc_stmin > 0x7F) and
                  ((self.txfc_stmin < 0xF1) or (self.txfc_stmin > 0xF9))):
              self.txfc_stmin = 0x7F
  
          if six.indexbytes(data, 2) <= 127:
              tx_gap = six.indexbytes(data, 2) / 1000.0
          elif 0xf1 <= six.indexbytes(data, 2) <= 0xf9:
              tx_gap = (six.indexbytes(data, 2) & 0x0f) / 10000.0
          else:
              tx_gap = 0
          self.tx_gap = tx_gap
  
          self.tx_state = ISOTP_WAIT_FC
  
          isotp_fc = six.indexbytes(data, 0) & 0x0f
  
          if isotp_fc == ISOTP_FC_CTS:
              self.tx_bs = 0
              self.tx_state = ISOTP_SENDING
              # start cyclic timer for sending CF frame
              self.tx_timer.set_timeout(self.tx_gap, self._tx_timer_handler)
          elif isotp_fc == ISOTP_FC_WT:
              # start timer to wait for next FC frame
              self.tx_state = ISOTP_WAIT_FC
              self.tx_timer.set_timeout(self.fc_timeout, self._tx_timer_handler)
          elif isotp_fc == ISOTP_FC_OVFLW:
              # overflow in receiver side
              self.tx_state = ISOTP_IDLE
              self.tx_exception = "Overflow happened at the receiver side"
              self.tx_done.set()
              raise Scapy_Exception(self.tx_exception)
          else:
              self.tx_state = ISOTP_IDLE
              self.tx_exception = "Unknown FC frame type"
              self.tx_done.set()
              raise Scapy_Exception(self.tx_exception)
  
          return 0