Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add signal property to pin Connectors #42

Merged
merged 9 commits into from
Aug 21, 2017
79 changes: 79 additions & 0 deletions dist/EagleLoader.js
Original file line number Diff line number Diff line change
Expand Up @@ -553,6 +553,16 @@ var EagleBrdRenderer = function( xml, params ) {
**/
this._shouldPopulateOverride = params.shouldPopulate || {};

/**
A mapping from pin identifier to the name of the signal to
which that pin is connected.

@property _pinSignalMap {object}
@private
**/
this._pinSignalMap = {};


this._parseDesignRules();

this._populateLayers();
Expand Down Expand Up @@ -1096,6 +1106,10 @@ EagleBrdRenderer.prototype._buildDepthHoles = function( add ) {
connector.userData.drill = drills[ i ];
if ( drills[ i ].elementParent ) {
connector.userData.element = drills[ i ].elementParent;
if ( drills[ i ].tagName === "pad" ) {
connector.name = this._makePinId(drills[ i ].elementParent.getAttribute("name"), drills[ i ].getAttribute("name"));
connector.userData.signal = this._pinSignalMap[connector.name];
}
}

// Bottom connector
Expand Down Expand Up @@ -1419,6 +1433,28 @@ EagleBrdRenderer.prototype._parseCollection = function( collection ) {
for ( j = 0; j < this.layers.length; j++ ) {
this.layers[ j ].assessElementCandidate( el );
}

} else if ( ( collection.tagName === "signal" ) && ( name === "contactref" ) ) {
//
// Record which pins are connected to each signal to enable a future lookup.
//
// Note: Duplicate `<contactref>` entries for a single pin have
// been observed in the wild but these appear to be an
// application bug rather than intentional, so we just
// silently process the duplicate entry.
//
// Note: While it appears that it's not legitimate to have
// multiple signals connected to a single pin via multiple
// `<contactref>` entries, documentation from later Eagle
// versions suggests this functionality might now be
// supported via the `route`/`routetag` attributes--which
// we do not currently process.
//
// TODO: Perform this task at a different stage in the parsing process?
//
var pinId = this._makePinId(el.getAttribute("element"), el.getAttribute("pad"));
var signalName = collection.getAttribute("name");
this._pinSignalMap[pinId] = signalName;
}
}
}
Expand Down Expand Up @@ -3581,6 +3617,49 @@ EagleBrdRenderer.prototype.visualizeConnector = function( connector, color ) {
};


EagleBrdRenderer.prototype._makePinId = function(componentName, pinName) {

/**
Constructs a board-unique canonical identifier for the
specified component pin.

The generated pin ID allows every pin on the board to be
uniquely identified even if the pin name (e.g. "4" or "GND")
itself is not unique (e.g. components "JP1" and "JP2" might
both have pins named "1").

This is a convenience method to ensure the ID is constructed
consistently and allow the ID format to be transparently
changed in future.

Note: The terminology used in this method is somewhat
inconsistent with that used by Eagle and elsewhere in
this library.

In part this is due to Eagle separating the concept of
a component pin and the PCB pad to which that pin is
connected--a distinction we don't make here.

The other reason is a desire to avoid confusion between
an XML "element" in the `.brd` file and an Eagle board
"element" (e.g. the footprint of an electronic component).

@method _makePinId
@param componentName {string} Name of "component" (a.k.a
"element") to which pin is attached. e.g. "JP8"
@param pinName {string} Name of "pin" (a.k.a. "pad").
e.g. "4" or "GND"
@return {string} The board-unique canonical ID of the pin.
e.g. "JP8.4"
@private
**/

const PIN_ID_SEPARATOR = ".";

return componentName + PIN_ID_SEPARATOR + pinName;
}


EagleBrdRenderer.prototype.viewComponents = function( show, componentMapCfg ) {

/**
Expand Down
10 changes: 5 additions & 5 deletions docs/classes/EagleBrdRenderer.AngleData.html
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ <h1>EagleBrdRenderer.AngleData Class</h1>


<div class="foundat">
Defined in: <a href="../files/src_eagle-brd-renderer.js.html#l3591"><code>src&#x2F;eagle-brd-renderer.js:3591</code></a>
Defined in: <a href="../files/src_eagle-brd-renderer.js.html#l3670"><code>src&#x2F;eagle-brd-renderer.js:3670</code></a>
</div>

Module: <a href="../modules/EagleBrdRenderer.html">EagleBrdRenderer</a>
Expand Down Expand Up @@ -122,7 +122,7 @@ <h3 class="name"><code>EagleBrdRenderer.AngleData</code></h3>
<div class="meta">
<p>
Defined in
<a href="../files/src_eagle-brd-renderer.js.html#l3591"><code>src&#x2F;eagle-brd-renderer.js:3591</code></a>
<a href="../files/src_eagle-brd-renderer.js.html#l3670"><code>src&#x2F;eagle-brd-renderer.js:3670</code></a>
</p>


Expand Down Expand Up @@ -205,7 +205,7 @@ <h3 class="name"><code>angle</code></h3>
<div class="meta">
<p>
Defined in
<a href="../files/src_eagle-brd-renderer.js.html#l3603"><code>src&#x2F;eagle-brd-renderer.js:3603</code></a>
<a href="../files/src_eagle-brd-renderer.js.html#l3682"><code>src&#x2F;eagle-brd-renderer.js:3682</code></a>
</p>


Expand All @@ -230,7 +230,7 @@ <h3 class="name"><code>mirror</code></h3>
<div class="meta">
<p>
Defined in
<a href="../files/src_eagle-brd-renderer.js.html#l3610"><code>src&#x2F;eagle-brd-renderer.js:3610</code></a>
<a href="../files/src_eagle-brd-renderer.js.html#l3689"><code>src&#x2F;eagle-brd-renderer.js:3689</code></a>
</p>


Expand All @@ -256,7 +256,7 @@ <h3 class="name"><code>spin</code></h3>
<div class="meta">
<p>
Defined in
<a href="../files/src_eagle-brd-renderer.js.html#l3618"><code>src&#x2F;eagle-brd-renderer.js:3618</code></a>
<a href="../files/src_eagle-brd-renderer.js.html#l3697"><code>src&#x2F;eagle-brd-renderer.js:3697</code></a>
</p>


Expand Down
32 changes: 16 additions & 16 deletions docs/classes/EagleBrdRenderer.ChordData.html
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ <h1>EagleBrdRenderer.ChordData Class</h1>


<div class="foundat">
Defined in: <a href="../files/src_eagle-brd-renderer.js.html#l3633"><code>src&#x2F;eagle-brd-renderer.js:3633</code></a>
Defined in: <a href="../files/src_eagle-brd-renderer.js.html#l3712"><code>src&#x2F;eagle-brd-renderer.js:3712</code></a>
</div>

Module: <a href="../modules/EagleBrdRenderer.html">EagleBrdRenderer</a>
Expand Down Expand Up @@ -123,7 +123,7 @@ <h3 class="name"><code>EagleBrdRenderer.ChordData</code></h3>
<div class="meta">
<p>
Defined in
<a href="../files/src_eagle-brd-renderer.js.html#l3633"><code>src&#x2F;eagle-brd-renderer.js:3633</code></a>
<a href="../files/src_eagle-brd-renderer.js.html#l3712"><code>src&#x2F;eagle-brd-renderer.js:3712</code></a>
</p>


Expand Down Expand Up @@ -251,7 +251,7 @@ <h3 class="name"><code>bearing</code></h3>
<div class="meta">
<p>
Defined in
<a href="../files/src_eagle-brd-renderer.js.html#l3732"><code>src&#x2F;eagle-brd-renderer.js:3732</code></a>
<a href="../files/src_eagle-brd-renderer.js.html#l3811"><code>src&#x2F;eagle-brd-renderer.js:3811</code></a>
</p>


Expand All @@ -276,7 +276,7 @@ <h3 class="name"><code>bearing1</code></h3>
<div class="meta">
<p>
Defined in
<a href="../files/src_eagle-brd-renderer.js.html#l3763"><code>src&#x2F;eagle-brd-renderer.js:3763</code></a>
<a href="../files/src_eagle-brd-renderer.js.html#l3842"><code>src&#x2F;eagle-brd-renderer.js:3842</code></a>
</p>


Expand All @@ -301,7 +301,7 @@ <h3 class="name"><code>bearing2</code></h3>
<div class="meta">
<p>
Defined in
<a href="../files/src_eagle-brd-renderer.js.html#l3770"><code>src&#x2F;eagle-brd-renderer.js:3770</code></a>
<a href="../files/src_eagle-brd-renderer.js.html#l3849"><code>src&#x2F;eagle-brd-renderer.js:3849</code></a>
</p>


Expand All @@ -326,7 +326,7 @@ <h3 class="name"><code>chord</code></h3>
<div class="meta">
<p>
Defined in
<a href="../files/src_eagle-brd-renderer.js.html#l3725"><code>src&#x2F;eagle-brd-renderer.js:3725</code></a>
<a href="../files/src_eagle-brd-renderer.js.html#l3804"><code>src&#x2F;eagle-brd-renderer.js:3804</code></a>
</p>


Expand All @@ -351,7 +351,7 @@ <h3 class="name"><code>curve</code></h3>
<div class="meta">
<p>
Defined in
<a href="../files/src_eagle-brd-renderer.js.html#l3676"><code>src&#x2F;eagle-brd-renderer.js:3676</code></a>
<a href="../files/src_eagle-brd-renderer.js.html#l3755"><code>src&#x2F;eagle-brd-renderer.js:3755</code></a>
</p>


Expand All @@ -376,7 +376,7 @@ <h3 class="name"><code>dx</code></h3>
<div class="meta">
<p>
Defined in
<a href="../files/src_eagle-brd-renderer.js.html#l3711"><code>src&#x2F;eagle-brd-renderer.js:3711</code></a>
<a href="../files/src_eagle-brd-renderer.js.html#l3790"><code>src&#x2F;eagle-brd-renderer.js:3790</code></a>
</p>


Expand All @@ -401,7 +401,7 @@ <h3 class="name"><code>dy</code></h3>
<div class="meta">
<p>
Defined in
<a href="../files/src_eagle-brd-renderer.js.html#l3718"><code>src&#x2F;eagle-brd-renderer.js:3718</code></a>
<a href="../files/src_eagle-brd-renderer.js.html#l3797"><code>src&#x2F;eagle-brd-renderer.js:3797</code></a>
</p>


Expand All @@ -426,7 +426,7 @@ <h3 class="name"><code>radius</code></h3>
<div class="meta">
<p>
Defined in
<a href="../files/src_eagle-brd-renderer.js.html#l3741"><code>src&#x2F;eagle-brd-renderer.js:3741</code></a>
<a href="../files/src_eagle-brd-renderer.js.html#l3820"><code>src&#x2F;eagle-brd-renderer.js:3820</code></a>
</p>


Expand All @@ -452,7 +452,7 @@ <h3 class="name"><code>x</code></h3>
<div class="meta">
<p>
Defined in
<a href="../files/src_eagle-brd-renderer.js.html#l3749"><code>src&#x2F;eagle-brd-renderer.js:3749</code></a>
<a href="../files/src_eagle-brd-renderer.js.html#l3828"><code>src&#x2F;eagle-brd-renderer.js:3828</code></a>
</p>


Expand All @@ -477,7 +477,7 @@ <h3 class="name"><code>x1</code></h3>
<div class="meta">
<p>
Defined in
<a href="../files/src_eagle-brd-renderer.js.html#l3683"><code>src&#x2F;eagle-brd-renderer.js:3683</code></a>
<a href="../files/src_eagle-brd-renderer.js.html#l3762"><code>src&#x2F;eagle-brd-renderer.js:3762</code></a>
</p>


Expand All @@ -502,7 +502,7 @@ <h3 class="name"><code>x2</code></h3>
<div class="meta">
<p>
Defined in
<a href="../files/src_eagle-brd-renderer.js.html#l3697"><code>src&#x2F;eagle-brd-renderer.js:3697</code></a>
<a href="../files/src_eagle-brd-renderer.js.html#l3776"><code>src&#x2F;eagle-brd-renderer.js:3776</code></a>
</p>


Expand All @@ -527,7 +527,7 @@ <h3 class="name"><code>y</code></h3>
<div class="meta">
<p>
Defined in
<a href="../files/src_eagle-brd-renderer.js.html#l3756"><code>src&#x2F;eagle-brd-renderer.js:3756</code></a>
<a href="../files/src_eagle-brd-renderer.js.html#l3835"><code>src&#x2F;eagle-brd-renderer.js:3835</code></a>
</p>


Expand All @@ -552,7 +552,7 @@ <h3 class="name"><code>y1</code></h3>
<div class="meta">
<p>
Defined in
<a href="../files/src_eagle-brd-renderer.js.html#l3690"><code>src&#x2F;eagle-brd-renderer.js:3690</code></a>
<a href="../files/src_eagle-brd-renderer.js.html#l3769"><code>src&#x2F;eagle-brd-renderer.js:3769</code></a>
</p>


Expand All @@ -577,7 +577,7 @@ <h3 class="name"><code>y2</code></h3>
<div class="meta">
<p>
Defined in
<a href="../files/src_eagle-brd-renderer.js.html#l3704"><code>src&#x2F;eagle-brd-renderer.js:3704</code></a>
<a href="../files/src_eagle-brd-renderer.js.html#l3783"><code>src&#x2F;eagle-brd-renderer.js:3783</code></a>
</p>


Expand Down
Loading