code: function D0Protocol(options, storeCallback) {
      this.options = options;
      this.storeCallback = storeCallback;
  
      this.communicationState = 0;
  
      this.commMode = undefined;
      this.commModeDetail = undefined;
      this.commBaudrateInitial = this.options.transportSerialBaudrate;
      this.commBaudrateChangeover = undefined;
      this.deviceIdentification = undefined;
      this.deviceManufacturer = undefined;
  
      if (!this.options.protocolD0WakeupCharacters) this.options.protocolD0WakeupCharacters = 0;
      if (!this.options.protocolD0SignOnMessage) this.options.protocolD0SignOnMessage = '?';
      if (!this.options.protocolD0DeviceAddress) this.options.protocolD0DeviceAddress = '';
  
      this.signOnMessages = this.options.protocolD0SignOnMessage.split(',');
      this.signOnMessageCounter = 0;
  }
docs: /* Protocol Mode A: No baud changeover, detected by non valid baudrate changeover cvharacter from B-E
  Protocol Mode B: Baud Changeover supported, No Ack Message
  Protocol Mode C: Baud Changeover supported, With Ack Message
  Protocol Mode D: No Request needed, Device sends data, No Baudrate changeover, start with 2400 baud (normally)
  Protocol Mode E: Baud Changeover supported, With Ack Message, Used protocol defined by additional data in Identification Message