Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions browser.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// Browser-compatible version of DataflashParser
(function(global) {
/* eslint-disable no-unused-vars */
/* eslint-disable no-var */
/* eslint-disable no-prototype-builtins */
const MAV_TYPE_GENERIC = 0 // Generic micro air vehicle.
// ... existing code ...

// Export to browser global scope
global.DataflashParser = DataflashParser;

})(typeof window !== 'undefined' ? window : this);
25 changes: 25 additions & 0 deletions build.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
const fs = require('fs');

// Read the parser code
const parserCode = fs.readFileSync('./parser.js', 'utf8');

// Create browser-compatible wrapper
const browserCode = `
// Browser-compatible version of DataflashParser
(function(global) {
${parserCode}

// Export to browser global scope
global.DataflashParser = DataflashParser;

})(typeof window !== 'undefined' ? window : this);
`;

// Write to dist directory
if (!fs.existsSync('./dist')) {
fs.mkdirSync('./dist');
}
fs.writeFileSync('./dist/dataflash-parser.js', browserCode);
fs.writeFileSync('./dist/dataflash-parser.min.js', browserCode); // TODO: Add minification

console.log('Browser bundle created in dist/');
84 changes: 84 additions & 0 deletions example.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
<!DOCTYPE html>
<html>
<head>
<title>Dataflash Parser Example</title>
<style>
.message-list {
margin-top: 20px;
border: 1px solid #ccc;
padding: 10px;
max-height: 500px;
overflow-y: auto;
}
.message {
margin: 5px 0;
padding: 5px;
background: #f5f5f5;
}
pre {
white-space: pre-wrap;
word-wrap: break-word;
}
</style>
</head>
<body>
<h1>Dataflash Parser Example</h1>
<input type="file" id="logFile" accept=".BIN,.bin">

<div id="stats"></div>
<div class="message-list">
<h2>System Messages (MSG)</h2>
<div id="messages"></div>
</div>
<pre id="output"></pre>

<script src="dist/dataflash-parser.js"></script>
<script>
document.getElementById('logFile').addEventListener('change', function(e) {
const file = e.target.files[0];
const reader = new FileReader();

reader.onload = function(e) {
const parser = new DataflashParser();
const result = parser.processData(e.target.result, ['MSG']);

// Display basic stats
document.getElementById('stats').innerHTML = `
<h3>Log Statistics</h3>
<p>Total messages: ${result.messages.length}</p>
<p>Message types: ${result.messageTypes.length}</p>
`;

// Find and display all MSG messages
const msgMessages = result.messages.filter(msg => msg.name === 'MSG');
const messagesDiv = document.getElementById('messages');
messagesDiv.innerHTML = ''; // Clear previous messages

if (msgMessages.length > 0) {
msgMessages.forEach((msg, index) => {
const messageDiv = document.createElement('div');
messageDiv.className = 'message';

// Format timestamp if available
const timestamp = msg.time_boot_ms ? new Date(msg.time_boot_ms).toISOString() : 'N/A';

messageDiv.innerHTML = `
<strong>Message ${index + 1}</strong> (Time: ${timestamp})<br>
${msg.Message || 'No message content'}
`;
messagesDiv.appendChild(messageDiv);
});
} else {
messagesDiv.innerHTML = '<p>No MSG messages found in the log.</p>';
}

// Display all message types for reference
document.getElementById('output').textContent =
`Available message types:\n${JSON.stringify(result.messageTypes, null, 2)}`;
};

reader.readAsArrayBuffer(file);
});
</script>
</body>
</html>
1 change: 1 addition & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
const DataflashParser = require("./parser.js"); module.exports = DataflashParser;
13 changes: 13 additions & 0 deletions package-lock.json

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

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"name":"js-dataflash-parser","version":"1.0.0","description":"A JavaScript parser for ArduPilot dataflash logs","main":"index.js","browser":"dist/dataflash-parser.min.js","scripts":{"test":"node test.js","build":"node build.js","prepare":"npm run build"},"keywords":["ardupilot","dataflash","parser","logs","mavlink"],"author":"","license":"MIT","files":["index.js","parser.js","dist/dataflash-parser.js","dist/dataflash-parser.min.js"]}
Loading