From 0847373414c0d5ed1947e1a89575a042baa42961 Mon Sep 17 00:00:00 2001 From: Matthew Donoughe Date: Sun, 20 Dec 2020 18:05:25 -0500 Subject: [PATCH] allow extension use with unrecognized boards --- src/boards/board.ts | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/boards/board.ts b/src/boards/board.ts index 4232bb8..5561a76 100644 --- a/src/boards/board.ts +++ b/src/boards/board.ts @@ -3,6 +3,13 @@ import * as fs from 'fs'; import { stringify } from "querystring"; import { normalize } from "path"; +class BoardData { + public vid: string; + public pid: string; + public product: string; + public manufacturer: string; +} + export class Board implements QuickPickItem { public vid: string; public pid: string; @@ -11,7 +18,7 @@ export class Board implements QuickPickItem { public label: string; public description: string = ""; - public constructor(m: Map) { + public constructor(m: BoardData) { this.vid = m["vid"]; this.pid = m["pid"]; this.product = m["product"]; @@ -25,7 +32,7 @@ export class Board implements QuickPickItem { Board._boards = new Map(); } let jsonData: Buffer = fs.readFileSync(metadataFile); - let boardMetadata: Array> = JSON.parse(jsonData.toString()); + let boardMetadata: Array = JSON.parse(jsonData.toString()); boardMetadata.forEach(b => { Board._boards.set(Board.key(b["vid"], b["pid"]), new Board(b)); }); @@ -35,11 +42,22 @@ export class Board implements QuickPickItem { return Array.from(Board._boards.values()); } public static lookup(vid: string, pid: string): Board { + vid = Board._normalizeHex(vid); + pid = Board._normalizeHex(pid); let key: string = Board.key(vid, pid); - return Board._boards.get(key); + let found: Board = Board._boards.get(key); + if (found) { + return found; + } + return new Board({ + vid: vid, + pid: pid, + manufacturer: Board._normalizeHex(vid), + product: Board._normalizeHex(pid) + }); } public static key(vid: string, pid: string): string { - return Board._normalizeHex(vid) + ":" + Board._normalizeHex(pid); + return `${vid}:${pid}`; } private static _normalizeHex(hex: string): string { let n: string = hex;