exports.defaultName = 'Dataton Watchout';
exports.connectionType = 'TCPsocket';
exports.heartbeatInterval = 500;
exports.searchOptions = {
  type: 'TCPport',
  searchBuffer: Buffer.from('authenticate 1\n', 'ascii'),
  testPort: 3040,
  validateResponse: function (msg, info) {
    return msg.toString().substring(0, 5) == 'Ready';
  },
};
exports.defaultPort = 3040;

exports.ready = function (device) {
  device.send('authenticate 1\n');
};

exports.data = function (device, message) {
  const msg = message.toString();
  if (msg.substring(0, 5) == 'Ready') {
    device.send('getStatus\n');
  }
  if (msg.substring(0, 5) == 'Reply') {
    const arr = msg.split(' ');

    device.data.showName = '';
    let i = 0;
    while (arr[i][arr[i].length - 1] != '"') {
      i++;
      device.data.showName += `${arr[i]} `;
    }
    device.data.showName = device.data.showName.substring(
      1,
      device.data.showName.length - 2
    );

    i--;
    device.data.busy = arr[i + 2];
    device.data.health = arr[i + 3];
    device.data.displayOpen = arr[i + 4];
    device.data.showActive = arr[i + 5];
    device.data.programmerOnline = arr[i + 6];
    device.data.position = Number(arr[i + 7]).toFixed(2);
    device.data.rate = arr[i + 8];
    device.data.standby = arr[i + 9];

    this.deviceInfoUpdate(device, 'defaultName', device.data.showName);
    device.draw();
  }
  // if(msg.substring(0, 5)=="Error"){
  // 	device.data.error = msg.substring(6, 7);
  // }
  // console.log(msg)
};

exports.heartbeat = function (device) {
  device.send('getStatus\n');
};
