Skip to content

Commit c01bb36

Browse files
Commented FOX Controller files
Added comments to files that are emulated from the original FOX Controller.
1 parent e5e640a commit c01bb36

14 files changed

+356
-18
lines changed

changelog.md

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,41 @@
11
# Changelog
22

3-
**./fox-custom/random-values.js**
4-
* Renamed 'generateRandomFlag' to 'generateRandomBinary'
3+
**Commented Files**
4+
* ./databases/
5+
* device.database.js
6+
* ./fox-devices/
7+
* device.settings.js
8+
* _classes/
9+
* device.class.js
10+
* device-model.class.js
11+
* remote_io/
12+
* advantech.models.js
13+
* moxa.models.js
14+
* remote_io.settings.js
15+
* remote-io-factories.js
16+
* remote-io.index.js
17+
* sonoff.models.js
18+
* node-red-settings.js
19+
* service.main.js
20+
* settings.js
521

622
---
723

8-
**./fox-api/alarm-database.js - defineNode**
9-
* Changed 'generateFlag' to 'generateBinary'
24+
**./fox-devices/remote_io/remote-io-factories.js**
25+
* These variables are declared and assigned separately:
26+
* createRemoteIoModule
27+
* storedDeviceObject
28+
* connectedDeviceObject
29+
* registerRemoteIoNodeCallback
30+
* ioSet
31+
* parsedPrefix
32+
* parsedIndex
33+
* registerFunction
34+
35+
---
36+
37+
**./service.main.js - getHealth**
38+
* These variables are declared and assigned separately:
39+
* envFunc
40+
* databaseFunc
41+
* logFunc

databases/device.database.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,72 @@
1+
/*
2+
NoSQL database for Remote IO devices.
3+
Powered by LevelDB.
4+
Original FOX Controller file.
5+
*/
6+
7+
18
const path = require("path");
29
const fs = require("fs");
310
const level = require("level");
411
const hashGen = require("hashids");
512
const createFolder = require("../fox-custom/create-folder");
613
const databaseHelp = require("../fox-custom/database-help");
714
const pathSettings = require("../settings");
15+
16+
17+
// Creates database root folder upon start.
818
createFolder(pathSettings.dbsPath);
919

1020

21+
// Main function creates LevelDB object.
1122
function loadDatabase(dbName)
1223
{
1324
var dbFolderPath = path.join(pathSettings.dbsPath, dbName);
1425
var dbHash = new hashGen(dbName);
1526
var loadedDatabaseObject = null;
1627
var loadRes = {};
1728

29+
30+
// Create or load database.
1831
createFolder(dbFolderPath);
1932
loadedDatabaseObject = level(dbFolderPath);
2033

2134

35+
// Read active device entries.
2236
function callListDevices(listCallback)
2337
{
2438
callListAllDevices(false, listCallback);
2539
}
2640

2741

42+
// List device entries.
2843
function callListAllDevices(deleteStatus, listAllCallback)
2944
{
3045
var retrievedEntries = [];
3146
var readStreamObject = loadedDatabaseObject.createReadStream();
3247

48+
// Read current row.
3349
readStreamObject.on("data", function (currentEntry)
3450
{
3551
addRetrievedEntry(currentEntry, deleteStatus, retrievedEntries);
3652
});
3753

54+
// Row stream end.
3855
readStreamObject.on("end", function()
3956
{
4057
return listAllCallback(null, retrievedEntries);
4158
});
4259
}
4360

4461

62+
// Create new device.
4563
function callCreateDevice(addInputObject, addCallback)
4664
{
4765
callUpdateDevice(null, addInputObject, addCallback);
4866
}
4967

5068

69+
// Read existing device.
5170
function callReadDevice(readTargetID, readCallback)
5271
{
5372
var retrievedObject = null;
@@ -56,106 +75,127 @@ function loadDatabase(dbName)
5675
{
5776
if (readErr !== null)
5877
{
78+
// Error
5979
return readCallback(readErr, null);
6080
}
6181
else
6282
{
83+
// Successful.
6384
retrievedObject = JSON.parse(readRes);
6485
return readCallback(null, retrievedObject);
6586
}
6687
});
6788
}
6889

6990

91+
// Update existing device.
7092
function callUpdateDevice(updateTargetID, updateInputObject, updateCallback)
7193
{
7294
var preparedID = databaseHelp.generateID(updateTargetID, dbHash);
7395
var jsonSyntaxObject = {definition: ""};
7496

7597

98+
// Validate and prepare update input.
7699
databaseHelp.checkUpdateInput(updateInputObject, preparedID, jsonSyntaxObject, function (inpCheckErr, inpCheckRes)
77100
{
78101
if (inpCheckErr !== null)
79102
{
103+
// Input error.
80104
return updateCallback(inpCheckErr, null);
81105
}
82106
else
83107
{
108+
// Execute update.
84109
handlePut(preparedID, jsonSyntaxObject.definition, updateCallback);
85110
}
86111
});
87112

88113
}
89114

90115

116+
// Delete existing device.
91117
function callDeleteDevice(delTargetID, delPerm, deleteCallback)
92118
{
93119
if (delPerm === true)
94120
{
121+
// Full deletion.
95122
loadedDatabaseObject.del(delTargetID, deleteCallback);
96123
}
97124
else
98125
{
126+
// Set inactive.
99127
getDeviceForDeletion(delTargetID, deleteCallback);
100128
}
101129
}
102130

103131

132+
// Close device database.
104133
function callDatabaseClose(dbCloseCallback)
105134
{
106135
loadedDatabaseObject.close(dbCloseCallback);
107136
}
108137

109138

139+
// Secondary - Retrieve device so it can be set inactive.
110140
function getDeviceForDeletion(delTgtID, getDeleteCallback)
111141
{
112142
callReadDevice(delTgtID, function (getDeleteErr, getDeleteRes)
113143
{
114144
if (getDeleteErr !== null)
115145
{
146+
// Error retrieving device.
116147
return getDeleteCallback(getDeleteErr, null);
117148
}
118149
else
119150
{
151+
// Set delete status.
120152
getDeleteRes.isDeleted = true;
121153
updateDeleteStatus(delTgtID, getDeleteRes, getDeleteCallback);
122154
}
123155
});
124156
}
125157

126158

159+
// Secondary - Save device delete status.
127160
function updateDeleteStatus(delTgt, delProps, deleteStatusCallback)
128161
{
129162
callUpdateDevice(delTgt, delProps, function (statUpdateErr, statUpdateRes)
130163
{
131164
if (statUpdateErr !== null)
132165
{
166+
// Status update error.
133167
return deleteStatusCallback(statUpdateErr, null);
134168
}
135169
else
136170
{
171+
// Status updated successfully.
137172
return deleteStatusCallback(null, true);
138173
}
139174
});
140175
}
141176

142177

143178

179+
// Secondary - Execute PUT query.
144180
function handlePut(putID, putSyntax, putCallback)
145181
{
146182
loadedDatabaseObject.put(putID, putSyntax, function (putErr, putRes)
147183
{
148184
if (putErr !== undefined && putErr !== null)
149185
{
186+
// Error
150187
return putCallback(putErr, null);
151188
}
152189
else
153190
{
191+
// Successful.
154192
return putCallback(null, putID);
155193
}
156194
});
157195
}
158196

197+
198+
// Set database object properties.
159199
loadRes["listDevices"] = callListDevices;
160200
loadRes["listAllDevices"] = callListAllDevices;
161201
loadRes["createDeviceEntity"] = callCreateDevice;
@@ -168,21 +208,28 @@ function loadDatabase(dbName)
168208
}
169209

170210

211+
212+
213+
// Secondary - Read database entry and save to list.
171214
function addRetrievedEntry(dataObj, delStat, entryArr)
172215
{
173216
var parsedEntry = {};
174217

175218
try
176219
{
220+
// Parse string data into JSON.
177221
parsedEntry = JSON.parse(dataObj.value);
178222

223+
179224
if (delStat === true || parsedEntry.isDeleted !== true)
180225
{
226+
// Save.
181227
entryArr.push(parsedEntry);
182228
}
183229
}
184230
catch(e)
185231
{
232+
// Thrown error.
186233
parsedEntry = null;
187234
}
188235
}

0 commit comments

Comments
 (0)