new stuff for lipocharger v0.2
[hw/bdale] / pkg / newlib / PCM12SMTR.py
1 #!/usr/bin/python
2 # Copyright 2007 by Bdale Garbee <bdale@gag.com>.  GPLv2
3 #
4 # Program to emit PCB footprint for C&K PCM12SMTR SPDT switch
5 #
6
7 # dimensions in mm from C&K datasheet
8 PinHeight = 1.5
9 PinWidth = 0.7
10 Pin12 = 3.0
11 Pin23 = 1.5
12 Pin2Offset = 0.75
13 PinBase = 1.0
14
15 PadHeight = 0.8
16 PadWidth = 1.0
17 HSpacing = 1.4
18 WSpacing = 6.3
19
20 HoleSize = 0.9
21 HoleSpacing = 3.0
22
23 import sys
24
25 # we're going to use the 1/100 of a mil fundamental unit form
26 def mm2mils100( mm ):
27         return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
28
29 print '# author: Bdale Garbee'
30 print '# email: bdale@gag.com'
31 print '# dist-license: GPL 2'
32 print '# use-license: unlimited'
33
34 print 'Element[0x0 "ABM8" "" "" 0 0 0 0 0 100 0x0]'
35 print "("
36 print '   Pad[',\
37         mm2mils100(WSpacing/2 + PadHeight/2), \
38         mm2mils100(-HSpacing/2 - PadHeight/2), \
39         mm2mils100(WSpacing/2 + PadWidth - PadHeight/2), \
40         mm2mils100(-HSpacing/2 - PadHeight/2), \
41         mm2mils100(PadHeight), \
42         mm2mils100(WSpacing - PadWidth), \
43         mm2mils100(PadWidth)+600, \
44         '"mnt" "M" 0x0100]'
45
46 print '   Pad[',\
47         mm2mils100(WSpacing/2 + PadHeight/2), \
48         mm2mils100(HSpacing/2 + PadHeight/2), \
49         mm2mils100(WSpacing/2 + PadWidth - PadHeight/2), \
50         mm2mils100(HSpacing/2 + PadHeight/2), \
51         mm2mils100(PadHeight), \
52         mm2mils100(WSpacing - PadWidth), \
53         mm2mils100(PadWidth)+600, \
54         '"mnt" "M" 0x0100]'
55
56 print '   Pad[',\
57         mm2mils100(-WSpacing/2 - PadHeight/2), \
58         mm2mils100(HSpacing/2 + PadHeight/2), \
59         mm2mils100(-WSpacing/2 - PadWidth + PadHeight/2), \
60         mm2mils100(HSpacing/2 + PadHeight/2), \
61         mm2mils100(PadHeight), \
62         mm2mils100(WSpacing - PadWidth), \
63         mm2mils100(PadWidth)+600, \
64         '"mnt" "M" 0x0100]'
65
66 print '   Pad[',\
67         mm2mils100(-WSpacing/2 - PadHeight/2), \
68         mm2mils100(-HSpacing/2 - PadHeight/2), \
69         mm2mils100(-WSpacing/2 - PadWidth + PadHeight/2), \
70         mm2mils100(-HSpacing/2 - PadHeight/2), \
71         mm2mils100(PadHeight), \
72         mm2mils100(WSpacing - PadWidth), \
73         mm2mils100(PadWidth)+600, \
74         '"mnt" "M" 0x0100]'
75
76 print '   Pin[',\
77         mm2mils100(-HoleSpacing/2), \
78         mm2mils100(0), \
79         mm2mils100(HoleSize+.1524), \
80         mm2mils100(.31), \
81         mm2mils100(HoleSize+0.31), \
82         mm2mils100(HoleSize), \
83         '"mnt" "M" 0x0000]'
84
85 print '   Pin[',\
86         mm2mils100(HoleSpacing/2), \
87         mm2mils100(0), \
88         mm2mils100(HoleSize+.1524), \
89         mm2mils100(.31), \
90         mm2mils100(HoleSize+0.31), \
91         mm2mils100(HoleSize), \
92         '"mnt" "M" 0x0000]'
93
94 #PinHeight = 1.5
95 #PinWidth = 0.7
96 #Pin12 = 3.0
97 #Pin23 = 1.5
98 #Pin2Offset = 0.75
99
100 print '   Pad[',\
101         mm2mils100(Pin2Offset - Pin12), \
102         mm2mils100(- PinBase - (PinWidth/2)), \
103         mm2mils100(Pin2Offset - Pin12), \
104         mm2mils100(- PinBase - PinHeight + (PinWidth/2)), \
105         mm2mils100(PinWidth), \
106         mm2mils100(.1524), \
107         mm2mils100(PinWidth + .1524), \
108         '"pin1" "1" 0x0100]'
109
110 print '   Pad[',\
111         mm2mils100(Pin2Offset), \
112         mm2mils100(- PinBase - (PinWidth/2)), \
113         mm2mils100(Pin2Offset), \
114         mm2mils100(- PinBase - PinHeight + (PinWidth/2)), \
115         mm2mils100(PinWidth), \
116         mm2mils100(.1524), \
117         mm2mils100(PinWidth + .1524), \
118         '"pin2" "2" 0x0100]'
119
120 print '   Pad[',\
121         mm2mils100(Pin2Offset + Pin23), \
122         mm2mils100(- PinBase - (PinWidth/2)), \
123         mm2mils100(Pin2Offset + Pin23), \
124         mm2mils100(- PinBase - PinHeight + (PinWidth/2)), \
125         mm2mils100(PinWidth), \
126         mm2mils100(.1524), \
127         mm2mils100(PinWidth + .1524), \
128         '"pin3" "3" 0x0100]'
129
130
131 print ")"