--- /dev/null
+/*
+ * Copyright © 2013 Bdale Garbee <bdale@gag.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+/*
+ * This is a footprint for a fotofab shield mean for boards in the Fox-1
+ * satellite, which a cubesat. The boards are 95mm square with corner
+ * cutouts, the shield is 92mm square with similar cutouts. To be able to
+ * "sweat solder" the shield down to the board, we're going to create what
+ * amounts to a 2mm wide opening in the solder mask over what is presumed to
+ * be ground plane with plenty of vias to whatever the real ground layer is
+ * in the stack. The shield is intended to sit right on the center-line of
+ * the exposed surfaces.
+ */
+
+load "footprint.5c";
+import Footprint;
+
+real pad_width = 2.00; /* mm */
+real shield_width = 92.0;
+real edge_width = 61.0;
+real corner_inset = 8.0;
+
+element_start("cubesatshield");
+
+/* 4 outer edges */
+pad_mm(-shield_width / 2, 0,
+ pad_width, edge_width + pad_width,
+ "1", "1");
+
+pad_mm( shield_width / 2, 0,
+ pad_width, edge_width + pad_width,
+ "1", "1");
+
+pad_mm(0, -shield_width / 2,
+ edge_width + pad_width, pad_width,
+ "1", "1");
+
+pad_mm(0, shield_width / 2,
+ edge_width + pad_width, pad_width,
+ "1", "1");
+
+/* NW corner */
+pad_mm((-shield_width + corner_inset) / 2, -edge_width /2,
+ corner_inset + pad_width, pad_width,
+ "1", "1");
+
+pad_mm(-edge_width / 2, (-shield_width + corner_inset) / 2,
+ pad_width, corner_inset + pad_width,
+ "1", "1");
+
+/* NE corner */
+pad_mm((shield_width - corner_inset) / 2, -edge_width /2,
+ corner_inset + pad_width, pad_width,
+ "1", "1");
+
+pad_mm(edge_width / 2, (-shield_width + corner_inset) / 2,
+ pad_width, corner_inset + pad_width,
+ "1", "1");
+
+/* SW corner */
+pad_mm((-shield_width + corner_inset) / 2, edge_width /2,
+ corner_inset + pad_width, pad_width,
+ "1", "1");
+
+pad_mm(-edge_width / 2, (shield_width - corner_inset) / 2,
+ pad_width, corner_inset + pad_width,
+ "1", "1");
+
+/* SE corner */
+pad_mm((shield_width - corner_inset) / 2, edge_width /2,
+ corner_inset + pad_width, pad_width,
+ "1", "1");
+
+pad_mm(edge_width / 2, (shield_width - corner_inset) / 2,
+ pad_width, corner_inset + pad_width,
+ "1", "1");
+
+
+element_end();
+
+
+