ibctminer
Version:
```js const IntMiner = require('./src'); const Debug = require('./src/log')(); const fs = require('fs'); const COMP = '[SIPC]';
129 lines (119 loc) • 4.21 kB
JavaScript
const EventEmitter = require('events');
const DetectUsbMiner = require('./detect');
const Miner = require('./miner');
const Debug = require('./log')();
const I18n = require('i18n');
const COMP = '[index]'
class IbctMiner extends EventEmitter {
constructor({
algoname,
minername,
pool,
cryptoname,
protocolname
}) {
super();
var _this = this
_this.algoname = algoname;
_this.minername = minername;
_this.cryptoname = cryptoname;
_this.protocolname = protocolname;
_this.pool = pool;
_this.initMiningLanguage();
_this.detectUsbMiner = DetectUsbMiner({});
_this.Miner = Miner({
algoname: _this.algoname,
minername: _this.minername,
pool: _this.pool,
cryptoname: _this.cryptoname,
protocolname: _this.protocolname
});
_this.on("error", function(ID, data) {
Debug.IbctLogDbg(COMP, (ID !== undefined) ? "Miner " + ID + ":" + data : data)
})
_this.on("warning", function(ID, data) {
Debug.IbctLogDbg(COMP, (ID !== undefined) ? "Miner " + ID + ":" + data : data)
})
if (_this.Miner) {
_this.Miner.on("error", function (data, Device, ID) {
return _this.emit("error", ID, data);
});
_this.Miner.on("warning", function (data, Device, ID) {
return _this.emit("warning", ID, data);
});
}
_this.detectUsbMiner.on('plug-in', async (Device) => {
await _this.addMining(Device);
return _this.emit('plug-in', Device);
})
_this.detectUsbMiner.on('plug-out', async (Device) => {
await _this.removeMining(Device);
return _this.emit('plug-out', Device);
})
}
async exitMining() {
await this.detectUsbMiner.ExitUsbMiner();
this.detectUsbMiner.removeAllListeners('plug-in');
this.detectUsbMiner.removeAllListeners('plug-out');
await this.stopMining(null);
await this.Miner.ExitMiner();
this.Miner.removeAllListeners('error');
this.Miner.removeAllListeners('warning');
}
initMiningLanguage() {
I18n.configure({
locales: ['en', 'zh'],
staticCatalog: {
en: require('./translate/en.json'),
zh: require('./translate/zh.json')
},
register: global
});
I18n.setLocale('zh');
}
setMiningLanguage(m) {
I18n.setLocale(m);
}
async initMining() {
await this.detectUsbMiner.ListUsbMiner();
await this.addMining();
}
async startMining(Device) {
return (Device ? await this.Miner.EnableMiner(Device) : await this.Miner.EnableMiners(this.listDevices()));
}
async stopMining(Device) {
return (Device ? await this.Miner.DisableMiner(Device) : await this.Miner.DisableMiners(this.listDevices()));
}
async addMining(Device) {
return (Device ? await this.Miner.AddMiner(Device) : await this.Miner.AddMiners(this.listDevices()));
}
async connectMining(Device) {
return (Device ? await this.Miner.connectMiner(Device) : await this.Miner.connectMiners(this.listDevices()));
}
async removeMining(Device) {
return (Device ? await this.Miner.RemoveMiner(Device) : await this.Miner.RemoveMiners(this.listDevices()));
}
setMiningConfig(setName, settings) {
if (!setName || !settings)
return
return this.Miner.SetMinerConfig(setName, settings)
}
getMiningStatus(Device) {
return (Device ? this.Miner.GetMinerStatus(Device) : this.Miner.GetMinersStatus(this.listDevices()));
}
RebootMining(Device) {
return (Device ? this.Miner.RebootMiner(Device) : this.Miner.RebootMiners(this.listDevices()));
}
SetMiningLed(Device, Enable) {
return (Device ? this.Miner.SetMinerLed(Device, Enable) : this.Miner.SetMinersLed(this.listDevices(), Enable));
}
async BurnMiningFirmware(Device, Image, Callback) {
return (Device ? await this.Miner.BurnMinerFirmware(Device, Image, Callback) : await this.Miner.BurnMinersFirmware(this.listDevices(), Image, Callback));
}
listDevices() {
return this.detectUsbMiner.GetUsbMiner();
}
}
module.exports = function GetIbctMiner(options = {}) {
return new IbctMiner(options);
};