move to python3 explicitly, per Debian policy
[hw/altusmetrum] / packages / 11071.py
index ac1e2821125f704a5b44a7746f600bc62a954b91..6271e6fcd927bb6cf7697507b79802fcadf4bbd4 100755 (executable)
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#! /usr/bin/python3
 #
 # generate lihata footprint for 4ucon 11071 tabbed micro USB connector
 # Copyright 2020 by Bdale Garbee <bdale@gag.com>
 import math
 from fplht import *
 
+# dimensions taken from 4ucon part drawing
+# note that we define Y origin to be the board edge, not center mass
+
+pad_width = 0.4
+pad_height = 1.35
+pad_spacing = 0.65
+pad_y = 1.45 + 3.35 - pad_height/2
+
+tab_width = 1.9
+tab_height = 1.9
+tab_x = 0.2 + tab_width / 2
+tab_y = 1.45
+
+slot_x = 6.40 / 2
+slot_y = 1.45
+slot_width = 0.45
+slot_height = 1.55
+slot_copper = (2.15 - 1.55) / 2
+
+wing_width = 1.6
+wing_height = 1.4
+wing_x = 3.2
+wing_y = 1.45 + 2.25
+
 fp = footprint()
 
 fp.name = "11071"
 fp.description = "4ucon 11071 tabbed micro USB connector"
 
+fp.pad({'x' : pad_spacing* 2, 'y' : pad_y, 'width' : pad_width, 'height' : pad_height, 'name' : 'VBUS', 'number' : '1'})
+fp.pad({'x' : pad_spacing* 1, 'y' : pad_y, 'width' : pad_width, 'height' : pad_height, 'name' : 'D-', 'number' : '2'})
+fp.pad({'x' : pad_spacing* 0, 'y' : pad_y, 'width' : pad_width, 'height' : pad_height, 'name' : 'D+', 'number' : '3'})
+fp.pad({'x' : pad_spacing* -1, 'y' : pad_y, 'width' : pad_width, 'height' : pad_height, 'name' : 'HS', 'number' : '4'})
+fp.pad({'x' : pad_spacing* -2, 'y' : pad_y, 'width' : pad_width, 'height' : pad_height, 'name' : 'GND', 'number' : '5'})
+
+# mounting "wings", or tabs next to the signal pads 
+
+fp.pad({'x' : -wing_x, 'y' : wing_y, 'width' : wing_width, 'height' : wing_height, 'spacing' : 0, 'name' : "", 'number' : "G"})
+fp.pad({'x' :  wing_x, 'y' : wing_y, 'width' : wing_width, 'height' : wing_height, 'spacing' : 0, 'name' : "", 'number' : "G"})
+
+# mounting tabs under package
+
+fp.pad({'x' : -tab_x, 'y' : tab_y, 'width' : tab_width, 'height' : tab_height, 'spacing' : 0, 'name' : "", 'number' : "G"})
+fp.pad({'x' :  tab_x, 'y' : tab_y, 'width' : tab_width, 'height' : tab_height, 'spacing' : 0, 'name' : "", 'number' : "G"})
+
+# slots for through-hole mounting tabs
+fp.slot({'x' : -slot_x, 'y' : slot_y, 'width' : slot_width, 'height' : slot_height, 'thickness' : slot_width + slot_copper * 2, 'name' : 'GND', 'number' : 5})
+fp.slot({'x' :  slot_x, 'y' : slot_y, 'width' : slot_width, 'height' : slot_height, 'thickness' : slot_width + slot_copper * 2, 'name' : 'GND', 'number' : 5})
+
 fp.emit()