var accountTransToJson=require('./mysql/transToJson').accountTransToJson;
var transToJson=require('./mysql/transToJson');
//var accountInJsonTransToBinary=require('./mysql/transToBinary').accountInJsonTransToBinary;
var Account=require('./mysql/Account');
var publish=require('./mqtt-server/mqttpublish/publishToLock');
var async = require('async');
const mysql = require ('mysql');
var mysqlconfig=require('./config/mysql_config/mysql_config').mysqlconfig;
var db = mysql.createConnection(mysqlconfig);
var update ='UPDATE dev_tb SET account = ? WHERE sn = ?' ;
var insert ='INSERT INTO dev_tb(sn,name,account) VALUES(?,?,?)' ;
function hextobin(bin, hex, len)
{ //max wrote in 2018.4.26
console.log('hex:',hex);
var i;
var upper_str = hex.toUpperCase();
var dig;
var base;
//parseInt(j)
for (i=0; i<len; i++) {
if (upper_str.charCodeAt(i*2) >= 0x30 && upper_str.charCodeAt(i*2) <= 0x39)
base = 0x30;
else if (upper_str.charCodeAt(i*2) >= 0x41 && upper_str.charCodeAt(i*2) <= 0x5a)
base = 0x41-10;
else
base = 0;
if (base != 0){
bin[i] = (upper_str.charCodeAt(i*2)-base)<<4;
//console.log('bin1 :',bin.toString('hex'));
}
else
bin[i] = 0;
if (upper_str.charCodeAt(i*2+1) >= 0x30 && upper_str.charCodeAt(i*2+1) <= 0x39)
base = 0x30;
else if (upper_str.charCodeAt(i*2+1) >= 0x41 && upper_str.charCodeAt(i*2+1) <= 0x5a)
base = 0x41-10;
else
base = 0;
if (base != 0)
bin[i] |= upper_str.charCodeAt(i*2+1)-base;
//bin[i] = (((upper_str.charCodeAt(i*2)-65+10)<<4)|(upper_str.charCodeAt(i*2+1)-65+10));
}
console.log('bin.toString():',bin.toString('hex'));
//console.log('bin.toString():',bin);
//console.log("ori str", hex);
return bin;
}
function AccountBindToBinary(phone)
{ // 2018.5.4
/* length for eachuserinfo:
phone :7 bytes(1') usernickfordev:20 bytes(1') auth:1 byte(1')
pwid:2 byte(15') pwnick:20 byte(15')
total: 358 bytes
*/
var userinfo=Buffer.alloc(358);
for(var i=0;i<14-phone.length;i++){
phone+='a';
}
var buf=Buffer.alloc(7);
hextobin(buf,phone,7);
//console.log('buf',buf.toString('hex'));
buf.copy(userinfo, 0);
//auth
var authbuf=Buffer.alloc(1);
//var hex333=parseInt(json[p].devauth,2).toString(16);console.log('hex333',hex333);
var authstr='1f';
hextobin(authbuf,authstr,1);
authbuf.copy(userinfo,27);
return userinfo;
};
function accountTransToJson(userinfo)
{ //transform json farmat RECORD from device into binary 2018.5.8
console.log('accountInBinaryToJson userinfo:',userinfo);
console.log('userinfo.length',userinfo.length/358);
var userinfoinjson=[];
for(var m=0;m<1;m++){
console.log('for for ');
//the 1~4th byte ,time 2018.4.27
var phone=Buffer.alloc(7);
userinfo.slice(m*358,m*358+7).copy(phone,0);
//console.log('phone:',phone.toString('hex'));
phone=phone.toString('hex').split('a');
console.log('phone.toString',phone[0]);
//usernickfordev
var usernickfordev=Buffer.alloc(16);
userinfo.slice(m*358+7,m*358+27).copy(usernickfordev,0);
usernickfordev=usernickfordev.toString().split('\u0000');
console.log('usernickfordev :',usernickfordev[0]);
//auth
var auth=Buffer.alloc(1);
userinfo.slice(m*358+27,m*358+28).copy(auth,0);
//console.log('',auth.toString('hex'));
auth=auth.readUInt8(0).toString(2);
console.log('auth',auth);
var dig =[];
for (var a=0;a<5;a++){
var id=userinfo.readUInt16BE(m*358+28+a*22,m*358+28+a*22+2).toString();
//console.log('id++++++++++++++++++++++++++++++++++++++++++++++++=:',id);
if (id!=' '){
var nick =Buffer.alloc(20);
userinfo.slice(m*358+30+a*22,m*358+30+a*22+20).copy(nick,0);
nick=nick.toString().split('\u0000');
//console.log('nick:',nick[0]);
}
if (id!='0'){
dig.push(CreateJson2(id,nick[0]));
}
}
var fp =[];
for (var a=5;a<10;a++){
var id=userinfo.readUInt16BE(m*358+28+a*22,m*358+28+a*22+2).toString();
//console.log('id++++++++++++++++++++++++++++++++++++++++++++++++=:',id);
if (id!=' '){
var nick =Buffer.alloc(20);
userinfo.slice(m*358+30+a*22,m*358+30+a*22+20).copy(nick,0);
nick=nick.toString().split('\u0000');
//console.log('nick:',nick[0]);
}
if (id!='0'){
fp.push(CreateJson2(id,nick[0]));
}
}
var ble =[];
for (var a=10;a<15;a++){
var id=userinfo.readUInt16BE(m*358+28+a*22,m*358+28+a*22+2).toString();
//console.log('id++++++++++++++++++++++++++++++++++++++++++++++++=:',id);
if (id!=' '){
var nick =Buffer.alloc(20);
userinfo.slice(m*358+30+a*22,m*358+30+a*22+20).copy(nick,0);
nick=nick.toString().split('\u0000');
//console.log('nick:',nick[0]);
}
if (id!='0'){
ble.push(CreateJson2(id,nick[0]));
}
}
userinfoinjson.push(CreateJson(phone[0],usernickfordev[0],auth,ble,dig,fp));
}
console.log('userinfoinjson:',JSON.stringify(userinfoinjson));
return userinfoinjson;
}
//console.log('AccountBindToBinary:',AccountBindToBinary('886987654321'));
//console.log('accountTransToJson:',accountTransToJson(AccountBindToBinary('886987654321')));
db.query(update,[AccountBindToBinary('886963852741'),'4401677LA03ED'],(err,data)=>{
if(err)
console.log('ERROR:',err);
else{
console.log('update account in dev_tb success!');
console.log(' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^',data.toString());
}
});