Skip to content

Commit

Permalink
Bug fixes for live logging
Browse files Browse the repository at this point in the history
  • Loading branch information
jwbonner committed Dec 27, 2021
1 parent 22ad7a4 commit d97d0ce
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 11 deletions.
7 changes: 3 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
Minor bug fixes:
* Restores original state on window refresh.
* Fixes file filter name when downloading a single log file.
* Improves handling of substitute holidays.
Bug fixes for live logging:
* Added support for new protocol to improve reliability on some connections. Note that *only log servers based on Advantage Kit v0.0.5 or newer are supported*.
* The timestamp is syncronized on every cycle rather than just the intial connection. This guarantees syncronization between the latest timestamp when locked and the timestamp of the data being received.
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "advantage-scope",
"productName": "Advantage Scope",
"version": "1.9.1",
"version": "1.9.2",
"description": "Logging tool from FRC Team 6328.",
"main": "main.js",
"scripts": {
Expand Down
34 changes: 30 additions & 4 deletions preload/indexPreload.js
Original file line number Diff line number Diff line change
Expand Up @@ -136,17 +136,43 @@ ipcRenderer.on("start-live", () => {


var client = null
var dataArray = new Uint8Array()

function appendArray(newArray) {
fullArray = new Uint8Array(dataArray.length + newArray.length)
fullArray.set(dataArray)
fullArray.set(newArray, dataArray.length)
dataArray = fullArray
}

window.addEventListener("start-live-socket", event => {
client = net.createConnection({
host: event.detail.address,
port: event.detail.port
})

client.on("data", data => {
if (client) {
window.dispatchEvent(new CustomEvent("live-data", {
detail: data
}))
appendArray(data)

while (true) {
var expectedLength
if (dataArray.length < 4) {
break
} else {
expectedLength = new DataView(dataArray.buffer).getInt32() + 4
if (dataArray.length < expectedLength) {
break
}
}

var singleArray = dataArray.slice(4, expectedLength)
dataArray = dataArray.slice(expectedLength)

if (client) {
window.dispatchEvent(new CustomEvent("live-data", {
detail: new Uint8Array(singleArray)
}))
}
}
})

Expand Down
4 changes: 3 additions & 1 deletion www/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -181,11 +181,13 @@ window.addEventListener("start-live", () => {
window.log = new Log()
window.log.rawData = event.data.data

var timeRange = window.log.getTimestamps()[window.log.getTimestamps().length - 1] - window.log.getTimestamps()[0]
window.liveStart = (new Date().getTime() / 1000) - timeRange

if (firstData) {
setWindowState(oldState, true)
firstData = false
window.liveReconnecting = false
window.liveStart = new Date().getTime() / 1000
selection.updateLockButtons()
} else if (window.log.getFieldCount() != oldFieldCount) { // Reset state when fields update
setWindowState(oldState, false)
Expand Down

0 comments on commit d97d0ce

Please sign in to comment.