-
Notifications
You must be signed in to change notification settings - Fork 24
/
subghz_Firefly.js
113 lines (98 loc) · 3.32 KB
/
subghz_Firefly.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
class subghzFirefly{
constructor() {
this.cardSpanName = 'cardFirefly';
this.cardTitle = 'Firefly/Linear (SubGHz)';
this.cardCollapseBodyClassCode = cardCollapseEnabled() ? "collapse" : "";
this.cardCollapseBodyIdCode = this.cardSpanName+'Body';
this.cardCollapseHeadCode = genCardHeadCode(this.cardTitle, this.cardSpanName);
this.cardCode = `
<div class="card mb-3">
${this.cardCollapseHeadCode}
<div class="card-body ${this.cardCollapseBodyClassCode}" id="${this.cardCollapseBodyIdCode}">
<!--<h5 class="card-title">Firefly</h5>-->
<form id="generateFirefly">
<div class="mb-3">
<label for="nameFirefly" class="form-label">File Name</label>
<input type="text" class="form-control" id="nameFirefly">
<div id="nameHelpFirefly" class="form-text">Do not include ".sub" It will be added automatically.</div>
</div>
<div class="mb-3">
<label for="codeFirefly" class="form-label">Dip Switches</label>
<input type="text" class="form-control" id="codeFirefly">
<div id="codeHelpFirefly" class="form-text">Example: 0111100100</div>
</div>
<button id="generateFirefly" type="submit" class="btn btn-primary">Generate</button>
<button id="resetFirefly" type="reset" class="btn btn-primary">Reset</button>
</form>
</div>
</div>
`;
}
renderCard(){
document.getElementById(this.cardSpanName).innerHTML = this.cardCode;
showHideCard(this.cardSpanName+'BodyCollapse', '#'+this.cardSpanName+'Body');
this.formFirefly = document.getElementById("generateFirefly");
this.formFirefly.addEventListener("submit", (event) => {
event.preventDefault();
var generateModal = getGenerateModal();
clearGenerateModal();
var nameFirefly = this.formFirefly.elements["nameFirefly"].value;
nameFirefly = cleanString(nameFirefly);
if (nameFirefly.length <= 0) {
nameFirefly = "NoName";
}
var codeFirefly = this.formFirefly.elements["codeFirefly"].value;
codeFirefly = cleanString(codeFirefly);
var codeIntFirefly = pad(parseInt(codeFirefly), 10);
if (
codeIntFirefly.length != 10 ||
!allBinary(codeFirefly) ||
!allAlphaNumericUnderscore(nameFirefly)
) {
setTextGenerateModal("Name Or Value Error");
} else {
var hexFirefly = this.getFireflyHex(codeIntFirefly);
setButtonGenerateModal(this.genUrlFirefly(nameFirefly, hexFirefly));
setTextGenerateModal("Name: " + nameFirefly + ".sub");
appendTextGenerateModal("Hex: " + hexFirefly);
appendTextGenerateModal("Binary: " + codeIntFirefly);
}
generateModal.show();
});
}
getFireflyHex(codeData) {
var codeHex = binToHex(codeData);
codeHex = pad(codeHex, 10);
return codeHex;
}
genUrlFirefly(keyName, hexData) {
var shortName = keyName;
if (shortName.length > 10) {
shortName = shortName.slice(0, 10) + "..";
}
hexData = pad(hexData, 16);
var urlFirefly = genUrlSub(
keyName,
"Flipper SubGhz Key File",
"1",
"300000000",
"FuriHalSubGhzPresetOok650Async",
"Firefly",
"10",
hexData
);
var returnUrl =
'<a href="' +
urlFirefly +
'" class="btn btn-primary" target="_blank">Download ' +
shortName +
".sub</a>";
return returnUrl;
}
}
/* function getFireflyBin(codeData, facData) {
var hexData = getFireflyHex(codeData, facData);
var binData = hexToBin(hexData);
binData = pad(binData, 24);
return binData;
}*/