flesh out hex keypad footprint approximation, put 3 Mhz crystal datasheet back
[hw/altusmetrum] / packages / footprint.5c
index 885c21a081060430889094610d992693a74fc5f1..e6af81a9304f2332de4b7964cd762ffe08acff51 100644 (file)
@@ -82,8 +82,8 @@ namespace Footprint {
                        mm2mils100(thickness),
                        mm2mils100(clearance),
                        mm2mils100(mask));
-               printf (" \"%s\" \"%s\" \"square%s%s\"]\n",
-                       name, num, options == "" ? "" : ",", options);
+               printf (" \"%s\" \"%s\" \"%s\"]\n",
+                       name, num, options);
        }
 
        public void pad_mm_clear_options(real center_x,
@@ -127,8 +127,8 @@ namespace Footprint {
                        mm2mils100(thickness),
                        mm2mils100(clearance),
                        mm2mils100(mask));
-               printf (" \"%s\" \"%s\" \"square%s%s\"]\n",
-                       name, num, options == "" ? "" : ",", options);
+               printf (" \"%s\" \"%s\" \"%s\"]\n",
+                       name, num, options);
        }
 
        public void pad_mm_clear(real center_x,
@@ -146,7 +146,7 @@ namespace Footprint {
                                     clearance,
                                     name,
                                     num,
-                                    "");
+                                    "square");
        }
 
        public void pad_mm(real center_x,
@@ -164,6 +164,50 @@ namespace Footprint {
                             name,
                             num);
        }
+       public void pad_mm_options(real center_x,
+                                  real center_y,
+                                  real width,
+                                  real height,
+                                  string name,
+                                  string num,
+                                  string options)
+       {
+               pad_mm_clear_options(center_x,
+                                    center_y,
+                                    width,
+                                    height,
+                                    process_clearance,
+                                    name,
+                                    num,
+                                    options);
+       }
+
+       public void pad_mm_arbitrary(   real x1,
+                                       real y1,
+                                       real x2,
+                                       real y2,
+                                       real thickness,
+                                       string name,
+                                       string num,
+                                       string options)
+       {
+               real clearance = process_clearance;
+
+               real mask = thickness + clearance / 2;
+
+               printf ("    Pad[");
+               printf (" %6d %6d %6d %6d",
+                       mm2mils100(x1),
+                       mm2mils100(y1),
+                       mm2mils100(x2),
+                       mm2mils100(y2));
+               printf (" %6d %6d %6d",
+                       mm2mils100(thickness),
+                       mm2mils100(clearance),
+                       mm2mils100(mask));
+               printf (" \"%s\" \"%s\" \"%s\"]\n",
+                       name, num, options);
+       }
 
        public void pin_mm_clear(real x, real y, real drill, real copper, real clearance,
                        string name,
@@ -186,11 +230,52 @@ namespace Footprint {
                       
        }
 
+       public void pin_mm_clear_options(real x, real y, real drill, real copper, real clearance,
+                                        string name,
+                                        string number,
+                                        string options)
+       {
+               real thickness = drill + copper * 2;
+               real mask = thickness + clearance / 2;
+               printf("    Pin[");
+               printf(" %6d %6d",
+                      mm2mils100(x),
+                      mm2mils100(y));
+               printf(" %6d %6d %6d %6d",
+                      mm2mils100(thickness),
+                      mm2mils100(clearance),
+                      mm2mils100(mask),
+                      mm2mils100(drill));
+               printf (" \"%s\" \"%s\"",
+                       name, number);
+               printf (" \"%s\"]\n", options);
+                      
+       }
+
+       public void pin_mm_clear_mask_options(real x, real y,
+                                             real drill, real copper, real clearance, real mask,
+                                             string name, string number, string options)
+       {
+               real thickness = drill + copper * 2;
+               printf("    Pin[");
+               printf(" %6d %6d",
+                      mm2mils100(x),
+                      mm2mils100(y));
+               printf(" %6d %6d %6d %6d",
+                      mm2mils100(thickness),
+                      mm2mils100(clearance),
+                      mm2mils100(mask),
+                      mm2mils100(drill));
+               printf (" \"%s\" \"%s\"",
+                       name, number);
+               printf (" \"%s\"]\n", options);
+                      
+       }
        public void pin_mm_clear_mask(real x, real y,
                                      real drill, real copper, real clearance, real mask,
                                      string name, string number)
        {
-               real thickness = drill + copper * 2;
+               real thickness = copper;
                printf("    Pin[");
                printf(" %6d %6d",
                       mm2mils100(x),
@@ -214,6 +299,15 @@ namespace Footprint {
                             name, number);
        }
 
+       public void pin_mm_options(real x, real y, real drill, real copper,
+                                  string name,
+                                  string number,
+                                  string options)
+       {
+               pin_mm_clear_options(x, y, drill, copper, process_clearance,
+                                    name, number, options);
+       }
+
        public void line (real x1, real y1, real x2, real y2)
        {
                printf ("    ElementLine[");
@@ -232,4 +326,14 @@ namespace Footprint {
                line(x+w,y+h,x,y+h);
                line(x,y+h,x,y);
        }
+
+       public void arc (real center_x, real center_y,
+                        real radius_x, real radius_y,
+                        real start_angle, real delta_angle)
+       {
+               printf ("    ElementArc[ %6d %6d %6d %6d %3d %3d %d]\n",
+                       mm2mils100(center_x), mm2mils100(center_y),
+                       mm2mils100(radius_x), mm2mils100(radius_y),
+                       start_angle, delta_angle, line_thickness);
+       }
 }