specifying pin positions
This commit is contained in:
		@@ -987,7 +987,7 @@ namespace pxsim.visuals {
 | 
			
		||||
        "C16, Serial - RX", "C17, Serial - TX", "+3v3", "GND"
 | 
			
		||||
    ];
 | 
			
		||||
    const MB_WIDTH = 251.8;
 | 
			
		||||
    const MB_HEIGHT =  222.2;
 | 
			
		||||
    const MB_HEIGHT = 222.2;
 | 
			
		||||
    export interface IBoardTheme {
 | 
			
		||||
        accent?: string;
 | 
			
		||||
        display?: string;
 | 
			
		||||
@@ -1059,8 +1059,205 @@ namespace pxsim.visuals {
 | 
			
		||||
        private thermometerText: SVGTextElement;
 | 
			
		||||
        private shakeButton: SVGElement;
 | 
			
		||||
        public board: pxsim.DalBoard;
 | 
			
		||||
        private pinNmToCoord: Map<Coord>;
 | 
			
		||||
        private rgbLed: SVGElement;
 | 
			
		||||
        private pinNmToCoord: Map<Coord> = {
 | 
			
		||||
			"EXT_PWR": [
 | 
			
		||||
				92.30997467041016,
 | 
			
		||||
				-42.92474937438965
 | 
			
		||||
			],
 | 
			
		||||
			"SPKR": [
 | 
			
		||||
				106.44635391235352,
 | 
			
		||||
				-16.370698928833008
 | 
			
		||||
			],
 | 
			
		||||
			"BTN_A": [
 | 
			
		||||
				93.8138427734375,
 | 
			
		||||
				56.631452560424805
 | 
			
		||||
			],
 | 
			
		||||
			"BTN_B": [
 | 
			
		||||
				204.92835235595703,
 | 
			
		||||
				56.631452560424805
 | 
			
		||||
			],
 | 
			
		||||
			"EDGE_P0": [
 | 
			
		||||
				56.002254486083984,
 | 
			
		||||
				95.43130111694336
 | 
			
		||||
			],
 | 
			
		||||
			"EDGE_P1": [
 | 
			
		||||
				103.00893783569336,
 | 
			
		||||
				175.82388305664062
 | 
			
		||||
			],
 | 
			
		||||
			"EDGE_P2": [
 | 
			
		||||
				195.90512084960938,
 | 
			
		||||
				175.3082733154297
 | 
			
		||||
			],
 | 
			
		||||
			"EDGE_P3": [
 | 
			
		||||
				241.79466247558594,
 | 
			
		||||
				95.3883285522461
 | 
			
		||||
			],
 | 
			
		||||
			"EDGE_GND": [
 | 
			
		||||
				103.00893783569336,
 | 
			
		||||
				14.86682915687561
 | 
			
		||||
			],
 | 
			
		||||
			"EDGE_VCC": [
 | 
			
		||||
				195.64733123779297,
 | 
			
		||||
				14.86682915687561
 | 
			
		||||
			],
 | 
			
		||||
			"C_GND1": [
 | 
			
		||||
				113.1493148803711,
 | 
			
		||||
				159.83989715576172
 | 
			
		||||
			],
 | 
			
		||||
			"C_GND2": [
 | 
			
		||||
				150.27342987060547,
 | 
			
		||||
				159.83989715576172
 | 
			
		||||
			],
 | 
			
		||||
			"C_GND3": [
 | 
			
		||||
				150.27342987060547,
 | 
			
		||||
				153.5666275024414
 | 
			
		||||
			],
 | 
			
		||||
			"C_GND4": [
 | 
			
		||||
				187.39752960205078,
 | 
			
		||||
				153.5666275024414
 | 
			
		||||
			],
 | 
			
		||||
			"C_VCC1": [
 | 
			
		||||
				187.39752960205078,
 | 
			
		||||
				159.83989715576172
 | 
			
		||||
			],
 | 
			
		||||
			"C_VCC2": [
 | 
			
		||||
				113.1922836303711,
 | 
			
		||||
				153.5666275024414
 | 
			
		||||
			],
 | 
			
		||||
			"C_P0": [
 | 
			
		||||
				119.33667373657227,
 | 
			
		||||
				159.83989715576172
 | 
			
		||||
			],
 | 
			
		||||
			"C_P2": [
 | 
			
		||||
				125.52401733398438,
 | 
			
		||||
				159.83989715576172
 | 
			
		||||
			],
 | 
			
		||||
			"C_P4": [
 | 
			
		||||
				131.71136474609375,
 | 
			
		||||
				159.83989715576172
 | 
			
		||||
			],
 | 
			
		||||
			"C_P6": [
 | 
			
		||||
				137.89871978759766,
 | 
			
		||||
				159.83989715576172
 | 
			
		||||
			],
 | 
			
		||||
			"C_P8": [
 | 
			
		||||
				144.08607482910156,
 | 
			
		||||
				159.83989715576172
 | 
			
		||||
			],
 | 
			
		||||
			"C_P10": [
 | 
			
		||||
				156.46077728271484,
 | 
			
		||||
				159.83989715576172
 | 
			
		||||
			],
 | 
			
		||||
			"C_P12": [
 | 
			
		||||
				162.64812469482422,
 | 
			
		||||
				159.83989715576172
 | 
			
		||||
			],
 | 
			
		||||
			"C_P14": [
 | 
			
		||||
				168.83545684814453,
 | 
			
		||||
				159.83989715576172
 | 
			
		||||
			],
 | 
			
		||||
			"C_P16": [
 | 
			
		||||
				175.02281951904297,
 | 
			
		||||
				159.83989715576172
 | 
			
		||||
			],
 | 
			
		||||
			"C_P20": [
 | 
			
		||||
				181.2101821899414,
 | 
			
		||||
				159.83989715576172
 | 
			
		||||
			],
 | 
			
		||||
			"C_P1": [
 | 
			
		||||
				119.379638671875,
 | 
			
		||||
				153.5666275024414
 | 
			
		||||
			],
 | 
			
		||||
			"C_P22": [
 | 
			
		||||
				125.56698226928711,
 | 
			
		||||
				153.5666275024414
 | 
			
		||||
			],
 | 
			
		||||
			"C_P5": [
 | 
			
		||||
				131.71136474609375,
 | 
			
		||||
				153.5666275024414
 | 
			
		||||
			],
 | 
			
		||||
			"C_P7": [
 | 
			
		||||
				137.89871978759766,
 | 
			
		||||
				153.5666275024414
 | 
			
		||||
			],
 | 
			
		||||
			"C_P9": [
 | 
			
		||||
				144.08607482910156,
 | 
			
		||||
				153.5666275024414
 | 
			
		||||
			],
 | 
			
		||||
			"C_P11": [
 | 
			
		||||
				156.46077728271484,
 | 
			
		||||
				153.5666275024414
 | 
			
		||||
			],
 | 
			
		||||
			"C_P13": [
 | 
			
		||||
				162.64812469482422,
 | 
			
		||||
				153.5666275024414
 | 
			
		||||
			],
 | 
			
		||||
			"C_P15": [
 | 
			
		||||
				168.83545684814453,
 | 
			
		||||
				153.5666275024414
 | 
			
		||||
			],
 | 
			
		||||
			"C_P21": [
 | 
			
		||||
				175.02281951904297,
 | 
			
		||||
				153.5666275024414
 | 
			
		||||
			],
 | 
			
		||||
			"C_P19": [
 | 
			
		||||
				181.2101821899414,
 | 
			
		||||
				153.5666275024414
 | 
			
		||||
			],
 | 
			
		||||
			"M_GND1": [
 | 
			
		||||
				137.89871978759766,
 | 
			
		||||
				141.70752716064453
 | 
			
		||||
			],
 | 
			
		||||
			"M_GND2": [
 | 
			
		||||
				156.46077728271484,
 | 
			
		||||
				141.70752716064453
 | 
			
		||||
			],
 | 
			
		||||
			"M_OUT1": [
 | 
			
		||||
				144.08607482910156,
 | 
			
		||||
				141.70752716064453
 | 
			
		||||
			],
 | 
			
		||||
			"M_OUT2": [
 | 
			
		||||
				150.27342987060547,
 | 
			
		||||
				141.70752716064453
 | 
			
		||||
			],
 | 
			
		||||
			"M_VM": [
 | 
			
		||||
				162.64812469482422,
 | 
			
		||||
				141.70752716064453
 | 
			
		||||
			],
 | 
			
		||||
			"G_A0_GND": [
 | 
			
		||||
				82.47036743164062,
 | 
			
		||||
				72.35763549804688
 | 
			
		||||
			],
 | 
			
		||||
			"G_A0_VCC": [
 | 
			
		||||
				78.34546279907227,
 | 
			
		||||
				76.3106689453125
 | 
			
		||||
			],
 | 
			
		||||
			"G_A0_SDA": [
 | 
			
		||||
				74.65023803710938,
 | 
			
		||||
				80.00588989257812
 | 
			
		||||
			],
 | 
			
		||||
			"G_A0_SCL": [
 | 
			
		||||
				70.43940734863281,
 | 
			
		||||
				84.21672821044922
 | 
			
		||||
			],
 | 
			
		||||
			"G_A1_RX": [
 | 
			
		||||
				216.52963256835938,
 | 
			
		||||
				71.4982795715332
 | 
			
		||||
			],
 | 
			
		||||
			"G_A1_TX": [
 | 
			
		||||
				220.65453338623047,
 | 
			
		||||
				75.53724670410156
 | 
			
		||||
			],
 | 
			
		||||
			"G_A1_VCC": [
 | 
			
		||||
				224.34976959228516,
 | 
			
		||||
				79.23247528076172
 | 
			
		||||
			],
 | 
			
		||||
			"G_A1_GND": [
 | 
			
		||||
				228.56060028076172,
 | 
			
		||||
				83.44330978393555
 | 
			
		||||
			]
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
        constructor(public props: IBoardProps) {
 | 
			
		||||
            this.buildDom();
 | 
			
		||||
@@ -1089,7 +1286,6 @@ namespace pxsim.visuals {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public getCoord(pinNm: string): Coord {
 | 
			
		||||
			if (!this.pinNmToCoord) this.recordPinCoords();
 | 
			
		||||
            return this.pinNmToCoord[pinNm];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -1101,14 +1297,13 @@ namespace pxsim.visuals {
 | 
			
		||||
            return 10;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public recordPinCoords() {
 | 
			
		||||
			this.pinNmToCoord = {};
 | 
			
		||||
			pinNames.forEach((nm,i) => {
 | 
			
		||||
				// TODO: position pins from SVG
 | 
			
		||||
        private recordPinCoords() {
 | 
			
		||||
			pinNames.forEach((nm, i) => {
 | 
			
		||||
				const p = this.pins[i];
 | 
			
		||||
				const r = p.getBoundingClientRect();
 | 
			
		||||
                this.pinNmToCoord[nm] = [r.left + r.width / 2, r.top + r.height / 2];
 | 
			
		||||
            });
 | 
			
		||||
			console.log(JSON.stringify(this.pinNmToCoord, null, 2))
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private updateTheme() {
 | 
			
		||||
@@ -1168,7 +1363,7 @@ namespace pxsim.visuals {
 | 
			
		||||
                const g = (c >> 8) & 0xFF;
 | 
			
		||||
                const r = (c >> 16) & 0xFF;
 | 
			
		||||
                const w = (c >> 24) & 0xFF;
 | 
			
		||||
                const ch =  `rgba(${r}, ${g}, ${b}, 1)`;
 | 
			
		||||
                const ch = `rgba(${r}, ${g}, ${b}, 1)`;
 | 
			
		||||
                svg.fill(this.rgbLed, ch);
 | 
			
		||||
            } else if (this.rgbLed) {
 | 
			
		||||
                svg.fill(this.rgbLed, 'white');
 | 
			
		||||
@@ -1246,8 +1441,10 @@ namespace pxsim.visuals {
 | 
			
		||||
                    rx: 5, ry: 5,
 | 
			
		||||
                    fill: `url(#${gid})`
 | 
			
		||||
                });
 | 
			
		||||
                this.thermometerText = svg.child(this.g, "text", { class: 'sim-text', 
 | 
			
		||||
					x: 100, y: MB_HEIGHT - 174 }) as SVGTextElement;
 | 
			
		||||
                this.thermometerText = svg.child(this.g, "text", {
 | 
			
		||||
					class: 'sim-text',
 | 
			
		||||
					x: 100, y: MB_HEIGHT - 174
 | 
			
		||||
				}) as SVGTextElement;
 | 
			
		||||
                this.updateTheme();
 | 
			
		||||
 | 
			
		||||
                let pt = this.element.createSVGPoint();
 | 
			
		||||
@@ -1356,7 +1553,7 @@ namespace pxsim.visuals {
 | 
			
		||||
                        }
 | 
			
		||||
                    }, ev => { },
 | 
			
		||||
                    ev => { })
 | 
			
		||||
                this.lightLevelText = svg.child(this.g, "text", { x: cx-r-7, y: cy + r + 8, text: '', class: 'sim-text inverted' }) as SVGTextElement;
 | 
			
		||||
                this.lightLevelText = svg.child(this.g, "text", { x: cx - r - 7, y: cy + r + 8, text: '', class: 'sim-text inverted' }) as SVGTextElement;
 | 
			
		||||
                this.updateTheme();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user