Skip to content

Commit c55550a

Browse files
committed
Fix compat with broken garmin files and add float decode support
1 parent 617a6e1 commit c55550a

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/binary.mjs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ function encodeTypedData(data, fDef, fields) {
7070
case 'uint16z':
7171
case 'uint32z':
7272
case 'uint64z':
73+
case 'float32':
74+
case 'float64':
7375
return fDef.attrs.scale ? (x - fDef.attrs.offset) * fDef.attrs.scale : x;
7476
case 'string': {
7577
const te = new TextEncoder();
@@ -136,6 +138,8 @@ function decodeTypedData(data, fDef, fields) {
136138
case 'uint16z':
137139
case 'uint32z':
138140
case 'uint64z':
141+
case 'float32':
142+
case 'float64':
139143
return fDef.attrs.scale ? x / fDef.attrs.scale + fDef.attrs.offset : x;
140144
case 'string': {
141145
const td = new TextDecoder();
@@ -307,7 +311,8 @@ function readDefinitionMessage(dataView, recordHeader, localMessageType, definit
307311
if (!attrs) {
308312
attrs = {
309313
field: `UNDOCUMENTED[${fDefNum}]`,
310-
type: baseType.name
314+
type: baseType.name,
315+
undocumented: true,
311316
};
312317
console.warn(`Undocumented field: (${baseType.name}) ${message && message.name}[${fDefNum}]`);
313318
}
@@ -384,7 +389,7 @@ function readDataMessage(dataView, recordHeader, localMessageType, definitions,
384389
}
385390
return {
386391
type: 'data',
387-
name: message.name,
392+
name: message ? message.name : undefined,
388393
size,
389394
mDef,
390395
fields,

0 commit comments

Comments
 (0)