var dimension = 20;
var maxspeed = 60 - 10;
var P1 = 86;
var P2 = 0;
var P3 = 1;
var P4 = 0;
var P5 = 1;
var C1 = 6;
var C2 = 0;
var C3 = 5;
var C4 = 4;
var C5 = 4;
var C7 = 1;
var C12 = 2;
var C13 = 1;
var C14 = 2;
var percent = 50;
var hb_speed = 50; //handle bar max speed
var cadence = 12;
var p2 = "0x" + (P2.toString(16)).toUpperCase();
var p3 = "0x" + (P3.toString(16)).toUpperCase();
var p4 = "0x" + (P4.toString(16)).toUpperCase();
arrayData = new Array(13 );
function b2b4(dimension, p2, p3, p4, maxspeed) {
var dimension;
var _dimension;
var dimensionHex;
var code;
if (dimension < 10) {
code = 0;
dimensionHex = "0x" + (dimension.toString(16)).toUpperCase();
dimension = dimensionHex;
}
else {
code = 1;
_dimension = dimension - 10;
dimensionHex = "0x" + (_dimension.toString(16)).toUpperCase();
dimension = dimensionHex;
};
var limitSpeed;
if (maxspeed <= 31) {
limitSpeed = 0x0;
var speed = maxspeed;
var speedHexStr = "0x" + (speed.toString(16)).toUpperCase();
var speedHex = void 0;
speedHex = speedHexStr << 3;
arrayData[2] = speedHex + dimension * 1; //限速+轮径
if (dimension.code == 1) {
var expand = 0x80;
arrayData[4] = (p2 * 1) + (p3 << 3) + (p4 << 4) + limitSpeed + expand; // p2+p3+p4+限速+轮径拓展
}
else {
var expand = 0x0;
arrayData[4] = (p2 * 1) + (p3 << 3) + (p4 << 4) + limitSpeed + expand; // p2+p3+p4+限速+轮径拓展
}
// code = 0 轮径不需要扩展 code = 1 需要扩展
// SETTINGS_MAX_SPEED < 31 限速不需要扩展
//this.arrayData[4] = 0x28;
}
if (maxspeed >= 32 && maxspeed <= 63) {
limitSpeed = 0x20;
var speed = maxspeed - 32;
if (speed == 0) {
arrayData[2] = 0x5; //限速+轮径
}
else {
var speedHexStr = "0x" + (speed.toString(16)).toUpperCase();
var speedHex = void 0;
speedHex = speedHexStr << 3;
arrayData[2] = speedHex + dimension * 1; //限速+轮径
if (dimension.code == 1) {
var expand = 0x80;
arrayData[4] = (p2 * 1) + (p3 << 3) + (p4 << 4) + limitSpeed + expand; // p2+p3+p4+限速+轮径拓展
}
else {
var expand = 0x0;
arrayData[4] = (p2 * 1) + (p3 << 3) + (p4 << 4) + limitSpeed + expand; // p2+p3+p4+限速+轮径拓展
}
// code = 0 轮径不需要扩展
// SETTINGS_MAX_SPEED < 31 限速不需要扩展
}
}
};
function p1() {
if (P1) {
var p1HexStr = P1.toString(16).toUpperCase();
var p1Hex = p1HexStr * 1;
arrayData[3] = p1Hex;
}
};
function p5() {
if (P5) {
var p5HexStr = P5.toString(16).toUpperCase();
var p5Hex = p5HexStr * 1;
arrayData[0] = p5Hex;
}
};
function c1c2() {
var c1HexStr = C1.toString(16).toUpperCase();
var c1Hex = c1HexStr * 1;
var c2HexStr = C2.toString(16).toUpperCase();
var c2Hex = c2HexStr * 1;
arrayData[6] = (c1Hex << 3) + (c2Hex);
};
function c3() {
if (C3) {
C3 = C3 * 1;
if (C3 <= 5) {
switch (C3) {
case 1:
arrayData[1] = gear = 0x01;
break;
case 2:
arrayData[1] = gear = 0x02;
break;
case 3:
arrayData[1] = gear = 0x03;
break;
case 4:
arrayData[1] = gear = 0x04;
break;
case 5:
arrayData[1] = gear = 0x05;
break;
default:
arrayData[1] = gear = 0x05;
break;
}
}
}
};
function c5c14() {
if (C5 && C14) {
var c5HexStr = C5.toString(16).toUpperCase();
var c5Hex = c5HexStr * 1;
var c14HexStr = C14.toString(16).toUpperCase();
var c14Hex = c14HexStr * 1;
arrayData[7] = (c14Hex << 5) + (c5Hex);
}
};
function c4c7c12() {
if (C4 && C7 && C12) {
var c4HexStr = C4.toString(16).toUpperCase();
var c4Hex = c4HexStr * 1;
var c7HexStr = C7.toString(16).toUpperCase();
var c7Hex = c7HexStr * 1;
var c12HexStr = C12.toString(16).toUpperCase();
var c12Hex = c12HexStr * 1;
arrayData[8] = (c4Hex << 5) + (c7Hex << 3) + c12Hex;
}
};
function perc() {
if (percent) {
var percentHexStr = percent.toString(16).toUpperCase();
var percentHex = percentHexStr * 1;
arrayData[11] = percentHex;
}
};
function handlebar() {
if (hb_speed) {
var HexStr = hb_speed.toString(16).toUpperCase();
var Hex = HexStr * 1;
arrayData[9] = Hex;
}
};
function c13() {
if (C13) {
var c13HexStr = C13.toString(16).toUpperCase();
var c13Hex = c13HexStr * 1;
arrayData[10] = c13Hex << 2;
}
};
b2b4(dimension, p2, p3, p4, maxspeed);
p1();
p5();
c1c2();
c3();
c5c14();
c4c7c12();
perc();
handlebar();
c13();
arrayData[5] = arrayData[1] ^ arrayData[2] ^ arrayData[3] ^ arrayData[4] ^ arrayData[6] ^ arrayData[7] ^ arrayData[8] ^ arrayData[9] ^ arrayData[10] ^ arrayData[11];
console.log(arrayData.toString(16))