00001
00025 #include "register_functions.c"
00026 #include "dips.h"
00027
00028
00035 int
00036 dips_create_element ()
00037 {
00038 gdouble xmax;
00039 gdouble xmin;
00040 gdouble ymax;
00041 gdouble ymin;
00042 gdouble x_text;
00043 gdouble y_text;
00044 gdouble dx;
00045 gint pin_number;
00046 gchar *pin_pad_name = g_strdup ("");
00047 gint i;
00048 FlagType pad_flag;
00049 ElementTypePtr element;
00050
00051 if (!element)
00052 {
00053 if (verbose)
00054 g_log ("", G_LOG_LEVEL_WARNING,
00055 _("could not create a valid element pointer for a %s package."),
00056 footprint_type);
00057 return (EXIT_FAILURE);
00058 }
00059
00060
00061 element->MarkX = 0;
00062 element->MarkY = 0;
00063
00064
00065 xmin = multiplier *
00066 (
00067 (-pitch_x / 2.0) -
00068 (((pad_diameter > pad_length) ? pad_diameter : pad_length) / 2.0) -
00069 pad_solder_mask_clearance
00070 );
00071 xmax = multiplier *
00072 (
00073 (pitch_x / 2.0) +
00074 (((pad_diameter > pad_length) ? pad_diameter : pad_length) / 2.0) +
00075 pad_solder_mask_clearance
00076 );
00077 ymin = multiplier *
00078 (
00079 ((((-count_y - 1) / 2.0) + 1) * pitch_y) -
00080 (((pad_diameter > pad_width) ? pad_diameter : pad_width) / 2.0) -
00081 pad_solder_mask_clearance
00082 );
00083 ymax = multiplier *
00084 (
00085 (((count_y - 1) / 2.0) * pitch_y) +
00086 (((pad_diameter > pad_width) ? pad_diameter : pad_width) / 2.0) +
00087 pad_solder_mask_clearance
00088 );
00089
00090
00091 if ((multiplier * ((-package_body_length / 2.0) - courtyard_clearance_with_package)) < xmin)
00092 xmin = (multiplier * ((-package_body_length / 2.0) - courtyard_clearance_with_package));
00093 if ((multiplier * ((package_body_length / 2.0) + courtyard_clearance_with_package)) > xmax)
00094 xmax = (multiplier * ((package_body_length / 2.0) + courtyard_clearance_with_package));
00095 if ((multiplier * ((-package_body_width / 2.0) - courtyard_clearance_with_package)) < ymin)
00096 ymin = (multiplier * ((-package_body_width / 2.0) - courtyard_clearance_with_package));
00097 if ((multiplier * ((package_body_width / 2.0) + courtyard_clearance_with_package)) > ymax)
00098 ymax = (multiplier * ((package_body_width / 2.0) + courtyard_clearance_with_package));
00099
00100 if (multiplier * (-courtyard_length / 2.0) < xmin)
00101 xmin = multiplier * (-courtyard_length / 2.0);
00102 if (multiplier * (courtyard_length / 2.0) > xmax)
00103 xmax = multiplier * (courtyard_length / 2.0);
00104 if (multiplier * (-courtyard_width / 2.0) < ymin)
00105 ymin = multiplier * (-courtyard_width / 2.0);
00106 if (multiplier * (courtyard_width / 2.0) > ymax)
00107 ymax = multiplier * (courtyard_width / 2.0);
00108
00109 element->Name[1].Scale = 100;
00110 element->Name[1].X = 0.0 ;
00111 element->Name[1].Y = (ymin - 10000.0);
00112 element->Name[1].TextString = footprint_name;
00113 element->Name[1].Element = element;
00114 element->Name[1].Direction = EAST;
00115 element->Name[1].ID = ID++;
00116
00117 element->Name[2].Scale = 100;
00118 element->Name[2].X = 0.0 ;
00119 element->Name[2].Y = (ymin - 10000.0);
00120 element->Name[2].TextString = footprint_refdes;
00121 element->Name[2].Element = element;
00122 element->Name[2].Direction = EAST;
00123 element->Name[2].ID = ID++;
00124
00125 element->Name[3].Scale = 100;
00126 element->Name[3].X = 0.0 ;
00127 element->Name[3].Y = (ymin - 10000.0);
00128 element->Name[3].TextString = footprint_value;
00129 element->Name[3].Element = element;
00130 element->Name[3].Direction = EAST;
00131 element->Name[3].ID = ID++;
00132
00133 for (i = 0; (i < count_y); i++)
00134 {
00135 pin_number = 1 + i;
00136 if (pin1_square && (pin_number == 1))
00137 pad_flag.f = SQUARE;
00138 else
00139 pad_flag.f = CLEAR;
00140 create_new_pin
00141 (
00142 element,
00143 (int) (multiplier * (-pitch_x / 2.0)),
00144 (int) (multiplier * ((((-count_y - 1) / 2.0) +1 + i) * pitch_y)),
00145 (int) (multiplier * pad_diameter),
00146 (int) (multiplier * pad_clearance),
00147 (int) (multiplier * (pad_diameter + pad_solder_mask_clearance)),
00148 (int) (multiplier * pin_drill_diameter),
00149 pin_pad_name,
00150 g_strdup_printf ("%d", pin_number),
00151 pad_flag
00152 );
00153 if (!strcmp (pad_shape, "rounded pad, elongated"))
00154 {
00155 pad_flag.f = ONSOLDER;
00156 create_new_pad
00157 (
00158 element,
00159 (int) (multiplier * (-pitch_x + pad_length - pad_width) / 2.0),
00160 (int) (multiplier * ((((-count_y - 1) / 2.0) + 1 + i) * pitch_y)),
00161 (int) (multiplier * (-pitch_x - pad_length + pad_width) / 2.0),
00162 (int) (multiplier * ((((-count_y - 1) / 2.0) + 1 + i) * pitch_y)),
00163 (int) (multiplier * pad_width),
00164 (int) (multiplier * pad_clearance),
00165 (int) (multiplier * (pad_width + (2 * pad_solder_mask_clearance))),
00166 pin_pad_name,
00167 g_strdup_printf ("%d", pin_number),
00168 pad_flag
00169 );
00170 }
00171 pin_number = (number_of_columns * count_y) - i;
00172 if (pin1_square && (pin_number == 1))
00173 pad_flag.f = SQUARE;
00174 else
00175 pad_flag.f = CLEAR;
00176 create_new_pin
00177 (
00178 element,
00179 (int) (multiplier * pitch_x / 2.0),
00180 (int) (multiplier * ((((-count_y - 1) / 2.0) + 1 + i) * pitch_y)),
00181 (int) (multiplier * pad_diameter),
00182 (int) (multiplier * pad_clearance),
00183 (int) (multiplier * (pad_diameter + pad_solder_mask_clearance)),
00184 (int) (multiplier * pin_drill_diameter),
00185 pin_pad_name,
00186 g_strdup_printf ("%d", pin_number),
00187 pad_flag
00188 );
00189 if (!strcmp (pad_shape, "rounded pad, elongated"))
00190 {
00191 pad_flag.f = ONSOLDER;
00192 create_new_pad
00193 (
00194 element,
00195 (int) (multiplier * (pitch_x - pad_length + pad_width) / 2.0),
00196 (int) (multiplier * ((((-count_y - 1) / 2.0) + 1 + i) * pitch_y)),
00197 (int) (multiplier * (pitch_x + pad_length - pad_width) / 2.0),
00198 (int) (multiplier * ((((-count_y - 1) / 2.0) + 1 + i) * pitch_y)),
00199 (int) (multiplier * pad_width),
00200 (int) (multiplier * pad_clearance),
00201 (int) (multiplier * (pad_width + (2 * pad_solder_mask_clearance))),
00202 pin_pad_name,
00203 g_strdup_printf ("%d", pin_number),
00204 pad_flag
00205 );
00206 }
00207 }
00208
00209 if (silkscreen_package_outline)
00210 {
00211 create_new_line
00212 (
00213 element,
00214 (int) (multiplier * (-package_body_length / 2)),
00215 (int) (multiplier * (-package_body_width / 2)),
00216 (int) (multiplier * (package_body_length / 2)),
00217 (int) (multiplier * (-package_body_width / 2)),
00218 (int) (multiplier * silkscreen_line_width)
00219 );
00220 create_new_line
00221 (
00222 element,
00223 (int) (multiplier * (package_body_length / 2)),
00224 (int) (multiplier * (-package_body_width / 2)),
00225 (int) (multiplier * (package_body_length / 2)),
00226 (int) (multiplier * (package_body_width / 2)),
00227 (int) (multiplier * silkscreen_line_width)
00228 );
00229 create_new_line
00230 (
00231 element,
00232 (int) (multiplier * (package_body_length / 2)),
00233 (int) (multiplier * (package_body_width / 2)),
00234 (int) (multiplier * (-package_body_length / 2)),
00235 (int) (multiplier * (package_body_width / 2)),
00236 (int) (multiplier * silkscreen_line_width)
00237 );
00238 create_new_line
00239 (
00240 element,
00241 (int) (multiplier * (-package_body_length / 2)),
00242 (int) (multiplier * (package_body_width / 2)),
00243 (int) (multiplier * (-package_body_length / 2)),
00244 (int) (multiplier * (-package_body_width / 2)),
00245 (int) (multiplier * silkscreen_line_width)
00246 );
00247 }
00248
00249 if (silkscreen_indicate_1)
00250 {
00251 create_new_arc
00252 (
00253 element,
00254 (int) (0.0),
00255 (int) ymin,
00256 (int) (multiplier * (pitch_x / 8)),
00257 (int) (multiplier * (pitch_x / 8)),
00258 0,
00259 180,
00260 (int) (multiplier * silkscreen_line_width)
00261 );
00262 }
00263
00264 if (courtyard)
00265 {
00266 create_new_line
00267 (
00268 element,
00269 (int) (xmin),
00270 (int) (ymin),
00271 (int) (xmin),
00272 (int) (ymax),
00273 (int) (multiplier * courtyard_line_width)
00274 );
00275 create_new_line
00276 (
00277 element,
00278 (int) (xmax),
00279 (int) (ymin),
00280 (int) (xmax),
00281 (int) (ymax),
00282 (int) (multiplier * courtyard_line_width)
00283 );
00284 create_new_line
00285 (
00286 element,
00287 (int) (xmin),
00288 (int) (ymin),
00289 (int) (xmax),
00290 (int) (ymin),
00291 (int) (multiplier * courtyard_line_width)
00292 );
00293 create_new_line
00294 (
00295 element,
00296 (int) (xmax),
00297 (int) (ymax),
00298 (int) (xmin),
00299 (int) (ymax),
00300 (int) (multiplier * courtyard_line_width)
00301 );
00302 }
00303
00304 if (attributes_in_footprint)
00305 element = create_attributes_in_element (element);
00306
00307 if (verbose)
00308 {
00309 g_log ("", G_LOG_LEVEL_INFO,
00310 _("created an element for a %s package: %s."),
00311 footprint_type,
00312 footprint_filename);
00313 }
00314 current_element = (ElementTypePtr) &element;
00315 return (EXIT_SUCCESS);
00316 }
00317
00318
00328 int
00329 dips_create_packages_list ()
00330 {
00331 g_list_free (packages_list);
00332 packages_list = g_list_append (packages_list, "DIPS762W52P254L508H254Q4B");
00333 packages_list = g_list_append (packages_list, "DIPS762W52P254L762H254Q6B");
00334 packages_list = g_list_append (packages_list, "DIPS762W52P254L1016H254Q8B");
00335 packages_list = g_list_append (packages_list, "DIPS1016W52P254L1016H254Q8B");
00336 packages_list = g_list_append (packages_list, "DIPS762W52P254L1270H254Q10B");
00337 packages_list = g_list_append (packages_list, "DIPS762W52P254L1778H254Q14B");
00338 packages_list = g_list_append (packages_list, "DIPS1016W52P254L1778H254Q14B");
00339 packages_list = g_list_append (packages_list, "DIPS762W52P254L2032H254Q16B");
00340 packages_list = g_list_append (packages_list, "DIPS1016W52P254L2032H254Q16B");
00341 packages_list = g_list_append (packages_list, "DIPS762W52P254L2286H254Q18B");
00342 packages_list = g_list_append (packages_list, "DIPS1016W52P254L2286H254Q18B");
00343 packages_list = g_list_append (packages_list, "DIPS762W52P254L2540H254Q20B");
00344 packages_list = g_list_append (packages_list, "DIPS1016W52P254L2540H254Q20B");
00345 packages_list = g_list_append (packages_list, "DIPS04300");
00346 packages_list = g_list_append (packages_list, "DIPS06300");
00347 packages_list = g_list_append (packages_list, "DIPS08300");
00348 packages_list = g_list_append (packages_list, "DIPS08400");
00349 packages_list = g_list_append (packages_list, "DIPS10300");
00350 packages_list = g_list_append (packages_list, "DIPS14300");
00351 packages_list = g_list_append (packages_list, "DIPS14400");
00352 packages_list = g_list_append (packages_list, "DIPS16300");
00353 packages_list = g_list_append (packages_list, "DIPS16400");
00354 packages_list = g_list_append (packages_list, "DIPS18300");
00355 packages_list = g_list_append (packages_list, "DIPS18400");
00356 packages_list = g_list_append (packages_list, "DIPS20300");
00357 packages_list = g_list_append (packages_list, "DIPS20400");
00358 packages_list = g_list_append (packages_list, "DIPS22300");
00359 packages_list = g_list_append (packages_list, "DIPS22400");
00360 packages_list = g_list_append (packages_list, "DIPS24300");
00361 packages_list = g_list_append (packages_list, "DIPS24400");
00362 packages_list = g_list_append (packages_list, "DIPS24600");
00363 packages_list = g_list_append (packages_list, "DIPS28300");
00364 packages_list = g_list_append (packages_list, "DIPS28400");
00365 packages_list = g_list_append (packages_list, "DIPS28600");
00366 packages_list = g_list_append (packages_list, "DIPS32300");
00367 packages_list = g_list_append (packages_list, "DIPS32600");
00368 packages_list = g_list_append (packages_list, "DIPS36600");
00369 packages_list = g_list_append (packages_list, "DIPS38600");
00370 packages_list = g_list_append (packages_list, "DIPS40600");
00371 packages_list = g_list_append (packages_list, "DIPS42600");
00372 packages_list = g_list_append (packages_list, "DIPS48600");
00373 packages_list = g_list_append (packages_list, "DIPS50900");
00374 packages_list = g_list_append (packages_list, "DIPS52600");
00375 packages_list = g_list_append (packages_list, "DIPS64900");
00376 return (EXIT_SUCCESS);
00377 }
00378
00379
00411 int
00412 dips_drc ()
00413 {
00414 int result = EXIT_SUCCESS;
00415 if (verbose)
00416 {
00417 g_log ("", G_LOG_LEVEL_INFO,
00418 (_("[%s] DRC Check: checking package %s.")),
00419 footprint_type, footprint_name);
00420 }
00421
00422 switch (pad_shapes_type)
00423 {
00424 case NO_SHAPE:
00425 {
00426 if (verbose)
00427 {
00428 g_log ("", G_LOG_LEVEL_WARNING,
00429 (_("[%s] DRC Error: NO_SHAPE specified for check for allowed pad shapes.")),
00430 footprint_type);
00431 }
00432 result = EXIT_FAILURE;
00433 break;
00434 }
00435 case ROUND:
00436 {
00437 break;
00438 }
00439 case SQUARE:
00440 {
00441 break;
00442 }
00443 case OCTAGONAL:
00444 {
00445 break;
00446 }
00447 case ROUND_ELONGATED:
00448 {
00449 break;
00450 }
00451 default:
00452 {
00453 if (verbose)
00454 {
00455 g_log ("", G_LOG_LEVEL_WARNING,
00456 (_("[%s] DRC Error: no valid pad shape type specified.")),
00457 footprint_type);
00458 }
00459 result = EXIT_FAILURE;
00460 break;
00461 }
00462 }
00463
00464 if (package_body_length <= 0.0)
00465 {
00466 if (verbose)
00467 {
00468 g_log ("", G_LOG_LEVEL_WARNING,
00469 (_("[%s] DRC Error: check for package body length is <= 0.0.")),
00470 footprint_type);
00471 }
00472 result = EXIT_FAILURE;
00473 }
00474 if (package_body_width <= 0.0)
00475 {
00476 if (verbose)
00477 {
00478 g_log ("", G_LOG_LEVEL_WARNING,
00479 (_("[%s] DRC Error: check for package body width is <= 0.0.")),
00480 footprint_type);
00481 }
00482 result = EXIT_FAILURE;
00483 }
00484 if (package_body_height <= 0.0)
00485 {
00486 if (verbose)
00487 {
00488 g_log ("", G_LOG_LEVEL_WARNING,
00489 (_("[%s] DRC Error: check for package body height is <= 0.0.")),
00490 footprint_type);
00491 }
00492 result = EXIT_FAILURE;
00493 }
00494
00495 if (courtyard_length <= 0.0)
00496 {
00497 if (verbose)
00498 {
00499 g_log ("", G_LOG_LEVEL_WARNING,
00500 (_("[%s] DRC Error: check for courtyard length is <= 0.0.")),
00501 footprint_type);
00502 }
00503 result = EXIT_FAILURE;
00504 }
00505 if (courtyard_width <= 0.0)
00506 {
00507 if (verbose)
00508 {
00509 g_log ("", G_LOG_LEVEL_WARNING,
00510 (_("[%s] DRC Error: check for courtyard width is <= 0.0.")),
00511 footprint_type);
00512 }
00513 result = EXIT_FAILURE;
00514 }
00515
00516 if ((pitch_x - pad_diameter < pad_clearance) || (pitch_x - pad_length < pad_clearance))
00517 {
00518 if (verbose)
00519 {
00520 g_log ("", G_LOG_LEVEL_WARNING,
00521 (_("[%s] DRC Error: check for minimum clearance between copper (X-direction).")),
00522 footprint_type);
00523 }
00524 result = EXIT_FAILURE;
00525 }
00526
00527 if ((pitch_y - pad_diameter < pad_clearance) || (pitch_y - pad_width < pad_clearance))
00528 {
00529 if (verbose)
00530 {
00531 g_log ("", G_LOG_LEVEL_WARNING,
00532 (_("[%s] DRC Error: check for minimum clearance between copper (Y-direction).")),
00533 footprint_type);
00534 }
00535 result = EXIT_FAILURE;
00536 }
00543 if (fiducial)
00544 {
00545
00546 if (fiducial_pad_diameter == 0.0)
00547 {
00548 if (verbose)
00549 {
00550 g_log ("", G_LOG_LEVEL_WARNING,
00551 (_("[%s] DRC Error: check for zero width fiducial pad.")),
00552 footprint_type);
00553 }
00554 result = EXIT_FAILURE;
00555 }
00556
00557 if (fiducial_pad_solder_mask_clearance == 0.0)
00558 {
00559 if (verbose)
00560 {
00561 g_log ("", G_LOG_LEVEL_WARNING,
00562 (_("[%s] DRC Error: check for zero width solder mask clearance.")),
00563 footprint_type);
00564 }
00565 result = EXIT_FAILURE;
00566 }
00567
00568
00569 #if 0
00570 if ()
00571 {
00572 if (verbose)
00573 (
00574 g_log ("", G_LOG_LEVEL_WARNING,
00575 (_("[%s] DRC Error: check for distance between fiducial and nearest pad.")),
00576 footprint_type);
00577 }
00578 result = EXIT_FAILURE;
00579 }
00580 #endif
00581 }
00582
00583
00584 if (package_body_length - courtyard_length < courtyard_clearance_with_package)
00585 {
00586 if (verbose)
00587 {
00588 g_log ("", G_LOG_LEVEL_WARNING,
00589 (_("[%s] DRC Error: check for clearance of the package length with regard to the courtyard dimensions.")),
00590 footprint_type);
00591 }
00592 result = EXIT_FAILURE;
00593 }
00594
00595
00596 if (package_body_width - courtyard_width < courtyard_clearance_with_package)
00597 {
00598 if (verbose)
00599 {
00600 g_log ("", G_LOG_LEVEL_WARNING,
00601 (_("[%s] DRC Error: check for clearance of the package width with regard to the courtyard dimensions.")),
00602 footprint_type);
00603 }
00604 result = EXIT_FAILURE;
00605 }
00611
00612 if (silkscreen_package_outline && (silkscreen_line_width == 0.0))
00613 {
00614 if (verbose)
00615 {
00616 g_log ("", G_LOG_LEVEL_WARNING,
00617 (_("[%s] DRC Error: line width 0.0 specified for check for a reasonable silk line width.")),
00618 footprint_type);
00619 }
00620 result = EXIT_FAILURE;
00621 }
00622 switch (units_type)
00623 {
00624 case NO_UNITS:
00625 {
00626 if (verbose)
00627 {
00628 g_log ("", G_LOG_LEVEL_WARNING,
00629 (_("[%s] DRC Error: no units specified for check for a reasonable silk line width.")),
00630 footprint_type);
00631 }
00632 result = EXIT_FAILURE;
00633 break;
00634 }
00635 case MIL:
00636 if (silkscreen_package_outline && (silkscreen_line_width > 40.0))
00637 {
00638 if (verbose)
00639 {
00640 g_log ("", G_LOG_LEVEL_WARNING,
00641 (_("[%s] DRC Error: line width > 40.0 mil specified check for a reasonable silk line width.")),
00642 footprint_type);
00643 }
00644 result = EXIT_FAILURE;
00645 break;
00646 }
00647 case MIL_100:
00648 if (silkscreen_package_outline && (silkscreen_line_width > 4000.0))
00649 {
00650 if (verbose)
00651 {
00652 g_log ("", G_LOG_LEVEL_WARNING,
00653 (_("[%s] DRC Error: line width > 40.0 mil specified check for a reasonable silk line width.")),
00654 footprint_type);
00655 }
00656 result = EXIT_FAILURE;
00657 break;
00658 }
00659 case MM:
00660 if (silkscreen_package_outline && (silkscreen_line_width > 1.0))
00661 {
00662 if (verbose)
00663 {
00664 g_log ("", G_LOG_LEVEL_WARNING,
00665 (_("[%s] DRC Error: line width > 1.0 mm specified check for a reasonable silk line width.")),
00666 footprint_type);
00667 }
00668 result = EXIT_FAILURE;
00669 break;
00670 }
00671 default:
00672 {
00673 if (verbose)
00674 {
00675 g_log ("", G_LOG_LEVEL_WARNING,
00676 (_("[%s] DRC Error: no valid units type specified for check for a reasonable silk line width.")),
00677 footprint_type);
00678 }
00679 result = EXIT_FAILURE;
00680 break;
00681 }
00682 }
00683
00684 if (verbose && (result == EXIT_SUCCESS))
00685 {
00686 g_log ("", G_LOG_LEVEL_INFO,
00687 (_("[%s] DRC Check: no errors while checking package %s.")),
00688 footprint_type, footprint_name);
00689 }
00690 return (result);
00691 }
00692
00693
00754 int
00755 dips_get_default_footprint_values ()
00756 {
00757 if (!strcmp (footprint_name, "?DIPS762W52P254L508H254Q4B"))
00758 {
00759 footprint_units = g_strdup ("mil");
00760 number_of_pins = 4;
00761 package_body_width = 300;
00762 package_body_length = 200;
00763 package_body_height = 100;
00764 package_is_radial = FALSE;
00765 number_of_columns = 2;
00766 number_of_rows = 0;
00767 pitch_x = 300;
00768 pitch_y = 100;
00769 count_x = 0;
00770 count_y = 2;
00771 pad_shape = g_strdup ("circular pad");
00772 pad_shapes_type = ROUND;
00773 pin_drill_diameter = 28;
00774 pad_diameter = 60;
00775 pad_clearance = 15;
00776 pad_solder_mask_clearance = 6;
00777 thermal = FALSE;
00778 thermal_length = 0.0;
00779 thermal_width = 0.0;
00780 fiducial = FALSE;
00781 fiducial_pad_diameter = 0.0;
00782 fiducial_pad_solder_mask_clearance = 0.0;
00783 silkscreen_line_width = 8;
00784 courtyard_line_width = 2;
00785 g_free (footprint_name);
00786 footprint_name = g_strdup ("DIPS762W52P254L508H254Q4B");
00787 return (EXIT_SUCCESS);
00788 }
00789 if (!strcmp (footprint_name, "?DIPS762W52P254L762H254Q6B"))
00790 {
00791 footprint_units = g_strdup ("mil");
00792 number_of_pins = 6;
00793 package_body_width = 300;
00794 package_body_length = 200;
00795 package_body_height = 100;
00796 package_is_radial = FALSE;
00797 number_of_columns = 2;
00798 number_of_rows = 0;
00799 pitch_x = 300;
00800 pitch_y = 100;
00801 count_x = 0;
00802 count_y = 3;
00803 pad_shape = g_strdup ("circular pad");
00804 pad_shapes_type = ROUND;
00805 pin_drill_diameter = 28;
00806 pad_diameter = 60;
00807 pad_clearance = 15;
00808 pad_solder_mask_clearance = 6;
00809 thermal = FALSE;
00810 thermal_length = 0.0;
00811 thermal_width = 0.0;
00812 fiducial = FALSE;
00813 fiducial_pad_diameter = 0.0;
00814 fiducial_pad_solder_mask_clearance = 0.0;
00815 silkscreen_line_width = 8;
00816 courtyard_line_width = 2;
00817 g_free (footprint_name);
00818 footprint_name = g_strdup ("DIPS762W52P254L762H254Q6B");
00819 return (EXIT_SUCCESS);
00820 }
00821 else if (!strcmp (footprint_name, "?DIPS762W52P254L1016H254Q8B"))
00822 {
00823 footprint_units = g_strdup ("mil");
00824 number_of_pins = 8;
00825 package_body_width = 300;
00826 package_body_length = 400;
00827 package_body_height = 100;
00828 package_is_radial = FALSE;
00829 number_of_columns = 2;
00830 number_of_rows = 0;
00831 pitch_x = 300;
00832 pitch_y = 100;
00833 count_x = 0;
00834 count_y = 4;
00835 pad_shape = g_strdup ("circular pad");
00836 pad_shapes_type = ROUND;
00837 pin_drill_diameter = 28;
00838 pad_diameter = 60;
00839 pad_clearance = 15;
00840 pad_solder_mask_clearance = 6;
00841 thermal = FALSE;
00842 thermal_length = 0.0;
00843 thermal_width = 0.0;
00844 fiducial = FALSE;
00845 fiducial_pad_diameter = 0.0;
00846 fiducial_pad_solder_mask_clearance = 0.0;
00847 silkscreen_line_width = 8;
00848 courtyard_line_width = 2;
00849 g_free (footprint_name);
00850 footprint_name = g_strdup ("DIPS762W52P254L1016H254Q8B");
00851 return (EXIT_SUCCESS);
00852 }
00853 else if (!strcmp (footprint_name, "?DIPS1016W52P254L1016H254Q8B"))
00854 {
00855 footprint_units = g_strdup ("mil");
00856 number_of_pins = 8;
00857 package_body_width = 400;
00858 package_body_length = 400;
00859 package_body_height = 100;
00860 package_is_radial = FALSE;
00861 number_of_columns = 2;
00862 number_of_rows = 0;
00863 pitch_x = 400;
00864 pitch_y = 100;
00865 count_x = 0;
00866 count_y = 4;
00867 pad_shape = g_strdup ("circular pad");
00868 pad_shapes_type = ROUND;
00869 pin_drill_diameter = 28;
00870 pad_diameter = 60;
00871 pad_clearance = 15;
00872 pad_solder_mask_clearance = 6;
00873 thermal = FALSE;
00874 thermal_length = 0.0;
00875 thermal_width = 0.0;
00876 fiducial = FALSE;
00877 fiducial_pad_diameter = 0.0;
00878 fiducial_pad_solder_mask_clearance = 0.0;
00879 silkscreen_line_width = 8;
00880 courtyard_line_width = 2;
00881 g_free (footprint_name);
00882 footprint_name = g_strdup ("DIPS1016W52P254L1016H254Q8B");
00883 return (EXIT_SUCCESS);
00884 }
00885 else if (!strcmp (footprint_name, "?DIPS762W52P254L1270H254Q10B"))
00886 {
00887 footprint_units = g_strdup ("mil");
00888 number_of_pins = 10;
00889 package_body_width = 300;
00890 package_body_length = 500;
00891 package_body_height = 100;
00892 package_is_radial = FALSE;
00893 number_of_columns = 2;
00894 number_of_rows = 0;
00895 pitch_x = 300;
00896 pitch_y = 100;
00897 count_x = 0;
00898 count_y = 5;
00899 pad_shape = g_strdup ("circular pad");
00900 pad_shapes_type = ROUND;
00901 pin_drill_diameter = 28;
00902 pad_diameter = 60;
00903 pad_clearance = 15;
00904 pad_solder_mask_clearance = 6;
00905 thermal = FALSE;
00906 thermal_length = 0.0;
00907 thermal_width = 0.0;
00908 fiducial = FALSE;
00909 fiducial_pad_diameter = 0.0;
00910 fiducial_pad_solder_mask_clearance = 0.0;
00911 silkscreen_line_width = 8;
00912 courtyard_line_width = 2;
00913 g_free (footprint_name);
00914 footprint_name = g_strdup ("DIPS762W52P254L1270H254Q10B");
00915 return (EXIT_SUCCESS);
00916 }
00917 else if (!strcmp (footprint_name, "?DIPS762W52P254L1778H254Q14B"))
00918 {
00919 footprint_units = g_strdup ("mil");
00920 number_of_pins = 14;
00921 package_body_width = 300;
00922 package_body_length = 700;
00923 package_body_height = 100;
00924 package_is_radial = FALSE;
00925 number_of_columns = 2;
00926 number_of_rows = 0;
00927 pitch_x = 300;
00928 pitch_y = 100;
00929 count_x = 0;
00930 count_y = 7;
00931 pad_shape = g_strdup ("circular pad");
00932 pad_shapes_type = ROUND;
00933 pin_drill_diameter = 28;
00934 pad_diameter = 60;
00935 pad_clearance = 15;
00936 pad_solder_mask_clearance = 6;
00937 thermal = FALSE;
00938 thermal_length = 0.0;
00939 thermal_width = 0.0;
00940 fiducial = FALSE;
00941 fiducial_pad_diameter = 0.0;
00942 fiducial_pad_solder_mask_clearance = 0.0;
00943 silkscreen_line_width = 8;
00944 courtyard_line_width = 2;
00945 g_free (footprint_name);
00946 footprint_name = g_strdup ("DIPS762W52P254L1778H254Q14B");
00947 return (EXIT_SUCCESS);
00948 }
00949 else if (!strcmp (footprint_name, "?DIPS1016W52P254L1778H254Q14B"))
00950 {
00951 footprint_units = g_strdup ("mil");
00952 number_of_pins = 8;
00953 package_body_width = 400;
00954 package_body_length = 700;
00955 package_body_height = 100;
00956 package_is_radial = FALSE;
00957 number_of_columns = 2;
00958 number_of_rows = 0;
00959 pitch_x = 400;
00960 pitch_y = 100;
00961 count_x = 0;
00962 count_y = 7;
00963 pad_shape = g_strdup ("circular pad");
00964 pad_shapes_type = ROUND;
00965 pin_drill_diameter = 28;
00966 pad_diameter = 60;
00967 pad_clearance = 15;
00968 pad_solder_mask_clearance = 6;
00969 thermal = FALSE;
00970 thermal_length = 0.0;
00971 thermal_width = 0.0;
00972 fiducial = FALSE;
00973 fiducial_pad_diameter = 0.0;
00974 fiducial_pad_solder_mask_clearance = 0.0;
00975 silkscreen_line_width = 8;
00976 courtyard_line_width = 2;
00977 g_free (footprint_name);
00978 footprint_name = g_strdup ("DIPS1016W52P254L1778H254Q14B");
00979 return (EXIT_SUCCESS);
00980 }
00981 else if (!strcmp (footprint_name, "?DIPS762W52P254L2032H254Q16B"))
00982 {
00983 footprint_units = g_strdup ("mil");
00984 number_of_pins = 16;
00985 package_body_width = 300;
00986 package_body_length = 800;
00987 package_body_height = 100;
00988 package_is_radial = FALSE;
00989 number_of_columns = 2;
00990 number_of_rows = 0;
00991 pitch_x = 300;
00992 pitch_y = 100;
00993 count_x = 0;
00994 count_y = 8;
00995 pad_shape = g_strdup ("circular pad");
00996 pad_shapes_type = ROUND;
00997 pin_drill_diameter = 28;
00998 pad_diameter = 60;
00999 pad_clearance = 15;
01000 pad_solder_mask_clearance = 6;
01001 thermal = FALSE;
01002 thermal_length = 0.0;
01003 thermal_width = 0.0;
01004 fiducial = FALSE;
01005 fiducial_pad_diameter = 0.0;
01006 fiducial_pad_solder_mask_clearance = 0.0;
01007 silkscreen_line_width = 8;
01008 courtyard_line_width = 2;
01009 g_free (footprint_name);
01010 footprint_name = g_strdup ("DIPS762W52P254L2032H254Q16B");
01011 return (EXIT_SUCCESS);
01012 }
01013 else if (!strcmp (footprint_name, "?DIPS1016W52P254L2032H254Q16B"))
01014 {
01015 footprint_units = g_strdup ("mil");
01016 number_of_pins = 16;
01017 package_body_width = 400;
01018 package_body_length = 400;
01019 package_body_height = 100;
01020 package_is_radial = FALSE;
01021 number_of_columns = 2;
01022 number_of_rows = 0;
01023 pitch_x = 400;
01024 pitch_y = 100;
01025 count_x = 0;
01026 count_y = 8;
01027 pad_shape = g_strdup ("circular pad");
01028 pad_shapes_type = ROUND;
01029 pin_drill_diameter = 28;
01030 pad_diameter = 60;
01031 pad_clearance = 15;
01032 pad_solder_mask_clearance = 6;
01033 thermal = FALSE;
01034 thermal_length = 0.0;
01035 thermal_width = 0.0;
01036 fiducial = FALSE;
01037 fiducial_pad_diameter = 0.0;
01038 fiducial_pad_solder_mask_clearance = 0.0;
01039 silkscreen_line_width = 8;
01040 courtyard_line_width = 2;
01041 g_free (footprint_name);
01042 footprint_name = g_strdup ("DIPS1016W52P254L2032H254Q16B");
01043 return (EXIT_SUCCESS);
01044 }
01045 else if (!strcmp (footprint_name, "?DIPS762W52P254L2286H254Q18B"))
01046 {
01047 footprint_units = g_strdup ("mil");
01048 number_of_pins = 18;
01049 package_body_width = 300;
01050 package_body_length = 900;
01051 package_body_height = 100;
01052 package_is_radial = FALSE;
01053 number_of_columns = 2;
01054 number_of_rows = 0;
01055 pitch_x = 300;
01056 pitch_y = 100;
01057 count_x = 0;
01058 count_y = 9;
01059 pad_shape = g_strdup ("circular pad");
01060 pad_shapes_type = ROUND;
01061 pin_drill_diameter = 28;
01062 pad_diameter = 60;
01063 pad_clearance = 15;
01064 pad_solder_mask_clearance = 6;
01065 thermal = FALSE;
01066 thermal_length = 0.0;
01067 thermal_width = 0.0;
01068 fiducial = FALSE;
01069 fiducial_pad_diameter = 0.0;
01070 fiducial_pad_solder_mask_clearance = 0.0;
01071 silkscreen_line_width = 8;
01072 courtyard_line_width = 2;
01073 g_free (footprint_name);
01074 footprint_name = g_strdup ("DIPS762W52P254L2286H254Q18B");
01075 return (EXIT_SUCCESS);
01076 }
01077 else if (!strcmp (footprint_name, "?DIPS1016W52P254L2286H254Q18B"))
01078 {
01079 footprint_units = g_strdup ("mil");
01080 number_of_pins = 18;
01081 package_body_width = 400;
01082 package_body_length = 900;
01083 package_body_height = 100;
01084 package_is_radial = FALSE;
01085 number_of_columns = 2;
01086 number_of_rows = 0;
01087 pitch_x = 400;
01088 pitch_y = 100;
01089 count_x = 0;
01090 count_y = 9;
01091 pad_shape = g_strdup ("circular pad");
01092 pad_shapes_type = ROUND;
01093 pin_drill_diameter = 28;
01094 pad_diameter = 60;
01095 pad_clearance = 15;
01096 pad_solder_mask_clearance = 6;
01097 thermal = FALSE;
01098 thermal_length = 0.0;
01099 thermal_width = 0.0;
01100 fiducial = FALSE;
01101 fiducial_pad_diameter = 0.0;
01102 fiducial_pad_solder_mask_clearance = 0.0;
01103 silkscreen_line_width = 8;
01104 courtyard_line_width = 2;
01105 g_free (footprint_name);
01106 footprint_name = g_strdup ("DIPS1016W52P254L2286H254Q18B");
01107 return (EXIT_SUCCESS);
01108 }
01109 else if (!strcmp (footprint_name, "?DIPS762W52P254L2540H254Q20B"))
01110 {
01111 footprint_units = g_strdup ("mil");
01112 number_of_pins = 20;
01113 package_body_width = 300;
01114 package_body_length = 1000;
01115 package_body_height = 100;
01116 package_is_radial = FALSE;
01117 number_of_columns = 2;
01118 number_of_rows = 0;
01119 pitch_x = 300;
01120 pitch_y = 100;
01121 count_x = 0;
01122 count_y = 10;
01123 pad_shape = g_strdup ("circular pad");
01124 pad_shapes_type = ROUND;
01125 pin_drill_diameter = 28;
01126 pad_diameter = 60;
01127 pad_clearance = 15;
01128 pad_solder_mask_clearance = 6;
01129 thermal = FALSE;
01130 thermal_length = 0.0;
01131 thermal_width = 0.0;
01132 fiducial = FALSE;
01133 fiducial_pad_diameter = 0.0;
01134 fiducial_pad_solder_mask_clearance = 0.0;
01135 silkscreen_line_width = 8;
01136 courtyard_line_width = 2;
01137 g_free (footprint_name);
01138 footprint_name = g_strdup ("DIPS762W52P254L2540H254Q20B");
01139 return (EXIT_SUCCESS);
01140 }
01141 else if (!strcmp (footprint_name, "?DIPS1016W52P254L2540H254Q20B"))
01142 {
01143 footprint_units = g_strdup ("mil");
01144 number_of_pins = 20;
01145 package_body_width = 400;
01146 package_body_length = 1000;
01147 package_body_height = 100;
01148 package_is_radial = FALSE;
01149 number_of_columns = 2;
01150 number_of_rows = 0;
01151 pitch_x = 400;
01152 pitch_y = 100;
01153 count_x = 0;
01154 count_y = 10;
01155 pad_shape = g_strdup ("circular pad");
01156 pad_shapes_type = ROUND;
01157 pin_drill_diameter = 28;
01158 pad_diameter = 60;
01159 pad_clearance = 15;
01160 pad_solder_mask_clearance = 6;
01161 thermal = FALSE;
01162 thermal_length = 0.0;
01163 thermal_width = 0.0;
01164 fiducial = FALSE;
01165 fiducial_pad_diameter = 0.0;
01166 fiducial_pad_solder_mask_clearance = 0.0;
01167 silkscreen_line_width = 8;
01168 courtyard_line_width = 2;
01169 g_free (footprint_name);
01170 footprint_name = g_strdup ("DIPS1016W52P254L2540H254Q20B");
01171 return (EXIT_SUCCESS);
01172 }
01173 else if (!strcmp (footprint_name, "?DIPS762W52P254L2794H254Q22B"))
01174 {
01175 footprint_units = g_strdup ("mil");
01176 number_of_pins = 22;
01177 package_body_width = 300;
01178 package_body_length = 1100;
01179 package_body_height = 100;
01180 package_is_radial = FALSE;
01181 number_of_columns = 2;
01182 number_of_rows = 0;
01183 pitch_x = 300;
01184 pitch_y = 100;
01185 count_x = 0;
01186 count_y = 11;
01187 pad_shape = g_strdup ("circular pad");
01188 pad_shapes_type = ROUND;
01189 pin_drill_diameter = 28;
01190 pad_diameter = 60;
01191 pad_clearance = 15;
01192 pad_solder_mask_clearance = 6;
01193 thermal = FALSE;
01194 thermal_length = 0.0;
01195 thermal_width = 0.0;
01196 fiducial = FALSE;
01197 fiducial_pad_diameter = 0.0;
01198 fiducial_pad_solder_mask_clearance = 0.0;
01199 silkscreen_line_width = 8;
01200 courtyard_line_width = 2;
01201 g_free (footprint_name);
01202 footprint_name = g_strdup ("DIPS762W52P254L2794H254Q22B");
01203 return (EXIT_SUCCESS);
01204 }
01205 else if (!strcmp (footprint_name, "?DIPS1016W52P254L2794H254Q22B"))
01206 {
01207 footprint_units = g_strdup ("mil");
01208 number_of_pins = 22;
01209 package_body_width = 400;
01210 package_body_length = 1100;
01211 package_body_height = 100;
01212 package_is_radial = FALSE;
01213 number_of_columns = 2;
01214 number_of_rows = 0;
01215 pitch_x = 400;
01216 pitch_y = 100;
01217 count_x = 0;
01218 count_y = 11;
01219 pad_shape = g_strdup ("circular pad");
01220 pad_shapes_type = ROUND;
01221 pin_drill_diameter = 28;
01222 pad_diameter = 60;
01223 pad_clearance = 15;
01224 pad_solder_mask_clearance = 6;
01225 thermal = FALSE;
01226 thermal_length = 0.0;
01227 thermal_width = 0.0;
01228 fiducial = FALSE;
01229 fiducial_pad_diameter = 0.0;
01230 fiducial_pad_solder_mask_clearance = 0.0;
01231 silkscreen_line_width = 8;
01232 courtyard_line_width = 2;
01233 g_free (footprint_name);
01234 footprint_name = g_strdup ("DIPS1016W52P254L2794H254Q22B");
01235 return (EXIT_SUCCESS);
01236 }
01237 else if (!strcmp (footprint_name, "?DIPS04300"))
01238 {
01239 footprint_units = g_strdup ("mil");
01240 number_of_pins = 4;
01241 package_body_width = 300;
01242 package_body_length = 300;
01243 package_body_height = 200;
01244 package_is_radial = FALSE;
01245 number_of_columns = 2;
01246 number_of_rows = 0;
01247 pitch_x = 300;
01248 pitch_y = 100;
01249 count_x = 0;
01250 count_y = 2;
01251 pad_shape = g_strdup ("circular pad");
01252 pad_shapes_type = ROUND;
01253 pin_drill_diameter = 28;
01254 pad_diameter = 60;
01255 pad_clearance = 15;
01256 pad_solder_mask_clearance = 6;
01257 thermal = FALSE;
01258 thermal_length = 0.0;
01259 thermal_width = 0.0;
01260 fiducial = FALSE;
01261 fiducial_pad_diameter = 0.0;
01262 fiducial_pad_solder_mask_clearance = 0.0;
01263 silkscreen_line_width = 8;
01264 courtyard_line_width = 2;
01265 g_free (footprint_name);
01266 footprint_name = g_strdup ("DIPS04300");
01267 return (EXIT_SUCCESS);
01268 }
01269 else if (!strcmp (footprint_name, "?DIPS06300"))
01270 {
01271 footprint_units = g_strdup ("mil");
01272 number_of_pins = 6;
01273 package_body_width = 300;
01274 package_body_length = 300;
01275 package_body_height = 200;
01276 package_is_radial = FALSE;
01277 number_of_columns = 2;
01278 number_of_rows = 0;
01279 pitch_x = 300;
01280 pitch_y = 100;
01281 count_x = 0;
01282 count_y = 3;
01283 pad_shape = g_strdup ("circular pad");
01284 pad_shapes_type = ROUND;
01285 pin_drill_diameter = 28;
01286 pad_diameter = 60;
01287 pad_clearance = 15;
01288 pad_solder_mask_clearance = 6;
01289 thermal = FALSE;
01290 thermal_length = 0.0;
01291 thermal_width = 0.0;
01292 fiducial = FALSE;
01293 fiducial_pad_diameter = 0.0;
01294 fiducial_pad_solder_mask_clearance = 0.0;
01295 silkscreen_line_width = 8;
01296 courtyard_line_width = 2;
01297 g_free (footprint_name);
01298 footprint_name = g_strdup ("DIPS06300");
01299 return (EXIT_SUCCESS);
01300 }
01301 else if (!strcmp (footprint_name, "?DIPS08300"))
01302 {
01303 footprint_units = g_strdup ("mil");
01304 number_of_pins = 8;
01305 package_body_width = 300;
01306 package_body_length = 400;
01307 package_body_height = 200;
01308 package_is_radial = FALSE;
01309 number_of_columns = 2;
01310 number_of_rows = 0;
01311 pitch_x = 300;
01312 pitch_y = 100;
01313 count_x = 0;
01314 count_y = 4;
01315 pad_shape = g_strdup ("circular pad");
01316 pad_shapes_type = ROUND;
01317 pin_drill_diameter = 28;
01318 pad_diameter = 60;
01319 pad_clearance = 15;
01320 pad_solder_mask_clearance = 6;
01321 thermal = FALSE;
01322 thermal_length = 0.0;
01323 thermal_width = 0.0;
01324 fiducial = FALSE;
01325 fiducial_pad_diameter = 0.0;
01326 fiducial_pad_solder_mask_clearance = 0.0;
01327 silkscreen_line_width = 8;
01328 courtyard_line_width = 2;
01329 g_free (footprint_name);
01330 footprint_name = g_strdup ("DIPS08300");
01331 return (EXIT_SUCCESS);
01332 }
01333 else if (!strcmp (footprint_name, "?DIPS08400"))
01334 {
01335 footprint_units = g_strdup ("mil");
01336 number_of_pins = 8;
01337 package_body_width = 400;
01338 package_body_length = 400;
01339 package_body_height = 220;
01340 package_is_radial = FALSE;
01341 number_of_columns = 2;
01342 number_of_rows = 0;
01343 pitch_x = 400;
01344 pitch_y = 100;
01345 count_x = 0;
01346 count_y = 4;
01347 pad_shape = g_strdup ("circular pad");
01348 pad_shapes_type = ROUND;
01349 pin_drill_diameter = 28;
01350 pad_diameter = 60;
01351 pad_clearance = 15;
01352 pad_solder_mask_clearance = 6;
01353 thermal = FALSE;
01354 thermal_length = 0.0;
01355 thermal_width = 0.0;
01356 fiducial = FALSE;
01357 fiducial_pad_diameter = 0.0;
01358 fiducial_pad_solder_mask_clearance = 0.0;
01359 silkscreen_line_width = 8;
01360 courtyard_line_width = 2;
01361 g_free (footprint_name);
01362 footprint_name = g_strdup ("DIPS08400");
01363 return (EXIT_SUCCESS);
01364 }
01365 else if (!strcmp (footprint_name, "?DIPS10300"))
01366 {
01367 footprint_units = g_strdup ("mil");
01368 number_of_pins = 10;
01369 package_body_width = 300;
01370 package_body_length = 500;
01371 package_body_height = 200;
01372 package_is_radial = FALSE;
01373 number_of_columns = 2;
01374 number_of_rows = 0;
01375 pitch_x = 300;
01376 pitch_y = 100;
01377 count_x = 0;
01378 count_y = 5;
01379 pad_shape = g_strdup ("circular pad");
01380 pad_shapes_type = ROUND;
01381 pin_drill_diameter = 28;
01382 pad_diameter = 60;
01383 pad_clearance = 15;
01384 pad_solder_mask_clearance = 6;
01385 thermal = FALSE;
01386 thermal_length = 0.0;
01387 thermal_width = 0.0;
01388 fiducial = FALSE;
01389 fiducial_pad_diameter = 0.0;
01390 fiducial_pad_solder_mask_clearance = 0.0;
01391 silkscreen_line_width = 8;
01392 courtyard_line_width = 2;
01393 g_free (footprint_name);
01394 footprint_name = g_strdup ("DIPS10300");
01395 return (EXIT_SUCCESS);
01396 }
01397 else if (!strcmp (footprint_name, "?DIPS14300"))
01398 {
01399 footprint_units = g_strdup ("mil");
01400 number_of_pins = 14;
01401 package_body_width = 300;
01402 package_body_length = 700;
01403 package_body_height = 200;
01404 package_is_radial = FALSE;
01405 number_of_columns = 2;
01406 number_of_rows = 0;
01407 pitch_x = 300;
01408 pitch_y = 100;
01409 count_x = 0;
01410 count_y = 7;
01411 pad_shape = g_strdup ("circular pad");
01412 pad_shapes_type = ROUND;
01413 pin_drill_diameter = 28;
01414 pad_diameter = 60;
01415 pad_clearance = 15;
01416 pad_solder_mask_clearance = 6;
01417 thermal = FALSE;
01418 thermal_length = 0.0;
01419 thermal_width = 0.0;
01420 fiducial = FALSE;
01421 fiducial_pad_diameter = 0.0;
01422 fiducial_pad_solder_mask_clearance = 0.0;
01423 silkscreen_line_width = 8;
01424 courtyard_line_width = 2;
01425 g_free (footprint_name);
01426 footprint_name = g_strdup ("DIPS14300");
01427 return (EXIT_SUCCESS);
01428 }
01429 else if (!strcmp (footprint_name, "?DIPS14400"))
01430 {
01431 footprint_units = g_strdup ("mil");
01432 number_of_pins = 8;
01433 package_body_width = 400;
01434 package_body_length = 700;
01435 package_is_radial = FALSE;
01436 number_of_columns = 2;
01437 number_of_rows = 0;
01438 pitch_x = 400;
01439 pitch_y = 100;
01440 count_x = 0;
01441 count_y = 7;
01442 pad_shape = g_strdup ("circular pad");
01443 pad_shapes_type = ROUND;
01444 pin_drill_diameter = 28;
01445 pad_diameter = 60;
01446 pad_clearance = 15;
01447 pad_solder_mask_clearance = 6;
01448 thermal = FALSE;
01449 thermal_length = 0.0;
01450 thermal_width = 0.0;
01451 fiducial = FALSE;
01452 fiducial_pad_diameter = 0.0;
01453 fiducial_pad_solder_mask_clearance = 0.0;
01454 silkscreen_line_width = 8;
01455 courtyard_line_width = 2;
01456 g_free (footprint_name);
01457 footprint_name = g_strdup ("DIPS14400");
01458 return (EXIT_SUCCESS);
01459 }
01460 else if (!strcmp (footprint_name, "?DIPS16300"))
01461 {
01462 footprint_units = g_strdup ("mil");
01463 number_of_pins = 16;
01464 package_body_width = 300;
01465 package_body_length = 800;
01466 package_body_height = 200;
01467 package_is_radial = FALSE;
01468 number_of_columns = 2;
01469 number_of_rows = 0;
01470 pitch_x = 300;
01471 pitch_y = 100;
01472 count_x = 0;
01473 count_y = 8;
01474 pad_shape = g_strdup ("circular pad");
01475 pad_shapes_type = ROUND;
01476 pin_drill_diameter = 28;
01477 pad_diameter = 60;
01478 pad_clearance = 15;
01479 pad_solder_mask_clearance = 6;
01480 thermal = FALSE;
01481 thermal_length = 0.0;
01482 thermal_width = 0.0;
01483 fiducial = FALSE;
01484 fiducial_pad_diameter = 0.0;
01485 fiducial_pad_solder_mask_clearance = 0.0;
01486 silkscreen_line_width = 8;
01487 courtyard_line_width = 2;
01488 g_free (footprint_name);
01489 footprint_name = g_strdup ("DIPS16300");
01490 return (EXIT_SUCCESS);
01491 }
01492 else if (!strcmp (footprint_name, "?DIPS16400"))
01493 {
01494 footprint_units = g_strdup ("mil");
01495 number_of_pins = 16;
01496 package_body_width = 400;
01497 package_body_length = 400;
01498 package_is_radial = FALSE;
01499 number_of_columns = 2;
01500 number_of_rows = 0;
01501 pitch_x = 400;
01502 pitch_y = 100;
01503 count_x = 0;
01504 count_y = 8;
01505 pad_shape = g_strdup ("circular pad");
01506 pad_shapes_type = ROUND;
01507 pin_drill_diameter = 28;
01508 pad_diameter = 60;
01509 pad_clearance = 15;
01510 pad_solder_mask_clearance = 6;
01511 thermal = FALSE;
01512 thermal_length = 0.0;
01513 thermal_width = 0.0;
01514 fiducial = FALSE;
01515 fiducial_pad_diameter = 0.0;
01516 fiducial_pad_solder_mask_clearance = 0.0;
01517 silkscreen_line_width = 8;
01518 courtyard_line_width = 2;
01519 g_free (footprint_name);
01520 footprint_name = g_strdup ("DIPS16400");
01521 return (EXIT_SUCCESS);
01522 }
01523 else if (!strcmp (footprint_name, "?DIPS18300"))
01524 {
01525 footprint_units = g_strdup ("mil");
01526 number_of_pins = 18;
01527 package_body_width = 300;
01528 package_body_length = 900;
01529 package_body_height = 200;
01530 package_is_radial = FALSE;
01531 number_of_columns = 2;
01532 number_of_rows = 0;
01533 pitch_x = 300;
01534 pitch_y = 100;
01535 count_x = 0;
01536 count_y = 9;
01537 pad_shape = g_strdup ("circular pad");
01538 pad_shapes_type = ROUND;
01539 pin_drill_diameter = 28;
01540 pad_diameter = 60;
01541 pad_clearance = 15;
01542 pad_solder_mask_clearance = 6;
01543 thermal = FALSE;
01544 thermal_length = 0.0;
01545 thermal_width = 0.0;
01546 fiducial = FALSE;
01547 fiducial_pad_diameter = 0.0;
01548 fiducial_pad_solder_mask_clearance = 0.0;
01549 silkscreen_line_width = 8;
01550 courtyard_line_width = 2;
01551 g_free (footprint_name);
01552 footprint_name = g_strdup ("DIPS18300");
01553 return (EXIT_SUCCESS);
01554 }
01555 else if (!strcmp (footprint_name, "?DIPS18400"))
01556 {
01557 footprint_units = g_strdup ("mil");
01558 number_of_pins = 18;
01559 package_body_width = 400;
01560 package_body_length = 900;
01561 package_body_height = 200;
01562 package_is_radial = FALSE;
01563 number_of_columns = 2;
01564 number_of_rows = 0;
01565 pitch_x = 400;
01566 pitch_y = 100;
01567 count_x = 0;
01568 count_y = 9;
01569 pad_shape = g_strdup ("circular pad");
01570 pad_shapes_type = ROUND;
01571 pin_drill_diameter = 28;
01572 pad_diameter = 60;
01573 pad_clearance = 15;
01574 pad_solder_mask_clearance = 6;
01575 thermal = FALSE;
01576 thermal_length = 0.0;
01577 thermal_width = 0.0;
01578 fiducial = FALSE;
01579 fiducial_pad_diameter = 0.0;
01580 fiducial_pad_solder_mask_clearance = 0.0;
01581 silkscreen_line_width = 8;
01582 courtyard_line_width = 2;
01583 g_free (footprint_name);
01584 footprint_name = g_strdup ("DIPS18400");
01585 return (EXIT_SUCCESS);
01586 }
01587 else if (!strcmp (footprint_name, "?DIPS20300"))
01588 {
01589 footprint_units = g_strdup ("mil");
01590 number_of_pins = 20;
01591 package_body_width = 300;
01592 package_body_length = 1000;
01593 package_body_height = 200;
01594 package_is_radial = FALSE;
01595 number_of_columns = 2;
01596 number_of_rows = 0;
01597 pitch_x = 300;
01598 pitch_y = 100;
01599 count_x = 0;
01600 count_y = 10;
01601 pad_shape = g_strdup ("circular pad");
01602 pad_shapes_type = ROUND;
01603 pin_drill_diameter = 28;
01604 pad_diameter = 60;
01605 pad_clearance = 15;
01606 pad_solder_mask_clearance = 6;
01607 thermal = FALSE;
01608 thermal_length = 0.0;
01609 thermal_width = 0.0;
01610 fiducial = FALSE;
01611 fiducial_pad_diameter = 0.0;
01612 fiducial_pad_solder_mask_clearance = 0.0;
01613 silkscreen_line_width = 8;
01614 courtyard_line_width = 2;
01615 g_free (footprint_name);
01616 footprint_name = g_strdup ("DIPS20300");
01617 return (EXIT_SUCCESS);
01618 }
01619 else if (!strcmp (footprint_name, "?DIPS20400"))
01620 {
01621 footprint_units = g_strdup ("mil");
01622 number_of_pins = 20;
01623 package_body_width = 400;
01624 package_body_length = 1000;
01625 package_is_radial = FALSE;
01626 number_of_columns = 2;
01627 number_of_rows = 0;
01628 pitch_x = 400;
01629 pitch_y = 100;
01630 count_x = 0;
01631 count_y = 10;
01632 pad_shape = g_strdup ("circular pad");
01633 pad_shapes_type = ROUND;
01634 pin_drill_diameter = 28;
01635 pad_diameter = 60;
01636 pad_clearance = 15;
01637 pad_solder_mask_clearance = 6;
01638 thermal = FALSE;
01639 thermal_length = 0.0;
01640 thermal_width = 0.0;
01641 fiducial = FALSE;
01642 fiducial_pad_diameter = 0.0;
01643 fiducial_pad_solder_mask_clearance = 0.0;
01644 silkscreen_line_width = 8;
01645 courtyard_line_width = 2;
01646 g_free (footprint_name);
01647 footprint_name = g_strdup ("DIPS20400");
01648 return (EXIT_SUCCESS);
01649 }
01650 else if (!strcmp (footprint_name, "?DIPS22300"))
01651 {
01652 footprint_units = g_strdup ("mil");
01653 number_of_pins = 22;
01654 package_body_width = 300;
01655 package_body_length = 1100;
01656 package_body_height = 200;
01657 package_is_radial = FALSE;
01658 number_of_columns = 2;
01659 number_of_rows = 0;
01660 pitch_x = 300;
01661 pitch_y = 100;
01662 count_x = 0;
01663 count_y = 11;
01664 pad_shape = g_strdup ("circular pad");
01665 pad_shapes_type = ROUND;
01666 pin_drill_diameter = 28;
01667 pad_diameter = 60;
01668 pad_clearance = 15;
01669 pad_solder_mask_clearance = 6;
01670 thermal = FALSE;
01671 thermal_length = 0.0;
01672 thermal_width = 0.0;
01673 fiducial = FALSE;
01674 fiducial_pad_diameter = 0.0;
01675 fiducial_pad_solder_mask_clearance = 0.0;
01676 silkscreen_line_width = 8;
01677 courtyard_line_width = 2;
01678 g_free (footprint_name);
01679 footprint_name = g_strdup ("DIPS22300");
01680 return (EXIT_SUCCESS);
01681 }
01682 else if (!strcmp (footprint_name, "?DIPS22400"))
01683 {
01684 footprint_units = g_strdup ("mil");
01685 number_of_pins = 22;
01686 package_body_width = 400;
01687 package_body_length = 1100;
01688 package_is_radial = FALSE;
01689 number_of_columns = 2;
01690 number_of_rows = 0;
01691 pitch_x = 400;
01692 pitch_y = 100;
01693 count_x = 0;
01694 count_y = 11;
01695 pad_shape = g_strdup ("circular pad");
01696 pad_shapes_type = ROUND;
01697 pin_drill_diameter = 28;
01698 pad_diameter = 60;
01699 pad_clearance = 15;
01700 pad_solder_mask_clearance = 6;
01701 thermal = FALSE;
01702 thermal_length = 0.0;
01703 thermal_width = 0.0;
01704 fiducial = FALSE;
01705 fiducial_pad_diameter = 0.0;
01706 fiducial_pad_solder_mask_clearance = 0.0;
01707 silkscreen_line_width = 8;
01708 courtyard_line_width = 2;
01709 g_free (footprint_name);
01710 footprint_name = g_strdup ("DIPS22400");
01711 return (EXIT_SUCCESS);
01712 }
01713 else if (!strcmp (footprint_name, "?DIPS24300"))
01714 {
01715 footprint_units = g_strdup ("mil");
01716 number_of_pins = 24;
01717 package_body_width = 300;
01718 package_body_length = 1200;
01719 package_body_height = 200;
01720 package_is_radial = FALSE;
01721 number_of_columns = 2;
01722 number_of_rows = 0;
01723 pitch_x = 300;
01724 pitch_y = 100;
01725 count_x = 0;
01726 count_y = 12;
01727 pad_shape = g_strdup ("circular pad");
01728 pad_shapes_type = ROUND;
01729 pin_drill_diameter = 28;
01730 pad_diameter = 60;
01731 pad_clearance = 15;
01732 pad_solder_mask_clearance = 6;
01733 thermal = FALSE;
01734 thermal_length = 0.0;
01735 thermal_width = 0.0;
01736 fiducial = FALSE;
01737 fiducial_pad_diameter = 0.0;
01738 fiducial_pad_solder_mask_clearance = 0.0;
01739 silkscreen_line_width = 8;
01740 courtyard_line_width = 2;
01741 g_free (footprint_name);
01742 footprint_name = g_strdup ("DIPS24300");
01743 return (EXIT_SUCCESS);
01744 }
01745 else if (!strcmp (footprint_name, "?DIPS24400"))
01746 {
01747 footprint_units = g_strdup ("mil");
01748 number_of_pins = 24;
01749 package_body_width = 400;
01750 package_body_length = 1200;
01751 package_body_height = 200;
01752 package_is_radial = FALSE;
01753 number_of_columns = 2;
01754 number_of_rows = 0;
01755 pitch_x = 400;
01756 pitch_y = 100;
01757 count_x = 0;
01758 count_y = 12;
01759 pad_shape = g_strdup ("circular pad");
01760 pad_shapes_type = ROUND;
01761 pin_drill_diameter = 28;
01762 pad_diameter = 60;
01763 pad_clearance = 15;
01764 pad_solder_mask_clearance = 6;
01765 thermal = FALSE;
01766 thermal_length = 0.0;
01767 thermal_width = 0.0;
01768 fiducial = FALSE;
01769 fiducial_pad_diameter = 0.0;
01770 fiducial_pad_solder_mask_clearance = 0.0;
01771 silkscreen_line_width = 8;
01772 courtyard_line_width = 2;
01773 g_free (footprint_name);
01774 footprint_name = g_strdup ("DIPS24400");
01775 return (EXIT_SUCCESS);
01776 }
01777 else if (!strcmp (footprint_name, "?DIPS24600"))
01778 {
01779 footprint_units = g_strdup ("mil");
01780 number_of_pins = 24;
01781 package_body_width = 600;
01782 package_body_length = 1200;
01783 package_body_height = 200;
01784 package_is_radial = FALSE;
01785 number_of_columns = 2;
01786 number_of_rows = 0;
01787 pitch_x = 600;
01788 pitch_y = 100;
01789 count_x = 0;
01790 count_y = 12;
01791 pad_shape = g_strdup ("circular pad");
01792 pad_shapes_type = ROUND;
01793 pin_drill_diameter = 28;
01794 pad_diameter = 60;
01795 pad_clearance = 15;
01796 pad_solder_mask_clearance = 6;
01797 thermal = FALSE;
01798 thermal_length = 0.0;
01799 thermal_width = 0.0;
01800 fiducial = FALSE;
01801 fiducial_pad_diameter = 0.0;
01802 fiducial_pad_solder_mask_clearance = 0.0;
01803 silkscreen_line_width = 8;
01804 courtyard_line_width = 2;
01805 g_free (footprint_name);
01806 footprint_name = g_strdup ("DIPS24600");
01807 return (EXIT_SUCCESS);
01808 }
01809 else if (!strcmp (footprint_name, "?DIPS28300"))
01810 {
01811 footprint_units = g_strdup ("mil");
01812 number_of_pins = 28;
01813 package_body_width = 300;
01814 package_body_length = 1400;
01815 package_body_height = 200;
01816 package_is_radial = FALSE;
01817 number_of_columns = 2;
01818 number_of_rows = 0;
01819 pitch_x = 300;
01820 pitch_y = 100;
01821 count_x = 0;
01822 count_y = 14;
01823 pad_shape = g_strdup ("circular pad");
01824 pad_shapes_type = ROUND;
01825 pin_drill_diameter = 28;
01826 pad_diameter = 60;
01827 pad_clearance = 15;
01828 pad_solder_mask_clearance = 6;
01829 thermal = FALSE;
01830 thermal_length = 0.0;
01831 thermal_width = 0.0;
01832 fiducial = FALSE;
01833 fiducial_pad_diameter = 0.0;
01834 fiducial_pad_solder_mask_clearance = 0.0;
01835 silkscreen_line_width = 8;
01836 courtyard_line_width = 2;
01837 g_free (footprint_name);
01838 footprint_name = g_strdup ("DIPS28300");
01839 return (EXIT_SUCCESS);
01840 }
01841 else if (!strcmp (footprint_name, "?DIPS28400"))
01842 {
01843 footprint_units = g_strdup ("mil");
01844 number_of_pins = 28;
01845 package_body_width = 400;
01846 package_body_length = 1400;
01847 package_is_radial = FALSE;
01848 number_of_columns = 2;
01849 number_of_rows = 0;
01850 pitch_x = 400;
01851 pitch_y = 100;
01852 count_x = 0;
01853 count_y = 14;
01854 pad_shape = g_strdup ("circular pad");
01855 pad_shapes_type = ROUND;
01856 pin_drill_diameter = 28;
01857 pad_diameter = 60;
01858 pad_clearance = 15;
01859 pad_solder_mask_clearance = 6;
01860 thermal = FALSE;
01861 thermal_length = 0.0;
01862 thermal_width = 0.0;
01863 fiducial = FALSE;
01864 fiducial_pad_diameter = 0.0;
01865 fiducial_pad_solder_mask_clearance = 0.0;
01866 silkscreen_line_width = 8;
01867 courtyard_line_width = 2;
01868 g_free (footprint_name);
01869 footprint_name = g_strdup ("DIPS28400");
01870 return (EXIT_SUCCESS);
01871 }
01872 else if (!strcmp (footprint_name, "?DIPS28600"))
01873 {
01874 footprint_units = g_strdup ("mil");
01875 number_of_pins = 28;
01876 package_body_width = 600;
01877 package_body_length = 1400;
01878 package_body_height = 200;
01879 package_is_radial = FALSE;
01880 number_of_columns = 2;
01881 number_of_rows = 0;
01882 pitch_x = 600;
01883 pitch_y = 100;
01884 count_x = 0;
01885 count_y = 14;
01886 pad_shape = g_strdup ("circular pad");
01887 pad_shapes_type = ROUND;
01888 pin_drill_diameter = 28;
01889 pad_diameter = 60;
01890 pad_clearance = 15;
01891 pad_solder_mask_clearance = 6;
01892 thermal = FALSE;
01893 thermal_length = 0.0;
01894 thermal_width = 0.0;
01895 fiducial = FALSE;
01896 fiducial_pad_diameter = 0.0;
01897 fiducial_pad_solder_mask_clearance = 0.0;
01898 silkscreen_line_width = 8;
01899 courtyard_line_width = 2;
01900 g_free (footprint_name);
01901 footprint_name = g_strdup ("DIPS28600");
01902 return (EXIT_SUCCESS);
01903 }
01904 else if (!strcmp (footprint_name, "?DIPS32300"))
01905 {
01906 footprint_units = g_strdup ("mil");
01907 number_of_pins = 32;
01908 package_body_width = 300;
01909 package_body_length = 1600;
01910 package_body_height = 200;
01911 package_is_radial = FALSE;
01912 number_of_columns = 2;
01913 number_of_rows = 0;
01914 pitch_x = 300;
01915 pitch_y = 100;
01916 count_x = 0;
01917 count_y = 16;
01918 pad_shape = g_strdup ("circular pad");
01919 pad_shapes_type = ROUND;
01920 pin_drill_diameter = 28;
01921 pad_diameter = 60;
01922 pad_clearance = 15;
01923 pad_solder_mask_clearance = 6;
01924 thermal = FALSE;
01925 thermal_length = 0.0;
01926 thermal_width = 0.0;
01927 fiducial = FALSE;
01928 fiducial_pad_diameter = 0.0;
01929 fiducial_pad_solder_mask_clearance = 0.0;
01930 silkscreen_line_width = 8;
01931 courtyard_line_width = 2;
01932 g_free (footprint_name);
01933 footprint_name = g_strdup ("DIPS32300");
01934 return (EXIT_SUCCESS);
01935 }
01936 else if (!strcmp (footprint_name, "?DIPS32600"))
01937 {
01938 footprint_units = g_strdup ("mil");
01939 number_of_pins = 32;
01940 package_body_width = 600;
01941 package_body_length = 1600;
01942 package_body_height = 200;
01943 package_is_radial = FALSE;
01944 number_of_columns = 2;
01945 number_of_rows = 0;
01946 pitch_x = 600;
01947 pitch_y = 100;
01948 count_x = 0;
01949 count_y = 16;
01950 pad_shape = g_strdup ("circular pad");
01951 pad_shapes_type = ROUND;
01952 pin_drill_diameter = 28;
01953 pad_diameter = 60;
01954 pad_clearance = 15;
01955 pad_solder_mask_clearance = 6;
01956 thermal = FALSE;
01957 thermal_length = 0.0;
01958 thermal_width = 0.0;
01959 fiducial = FALSE;
01960 fiducial_pad_diameter = 0.0;
01961 fiducial_pad_solder_mask_clearance = 0.0;
01962 silkscreen_line_width = 8;
01963 courtyard_line_width = 2;
01964 g_free (footprint_name);
01965 footprint_name = g_strdup ("DIPS32600");
01966 return (EXIT_SUCCESS);
01967 }
01968 else if (!strcmp (footprint_name, "?DIPS36600"))
01969 {
01970 footprint_units = g_strdup ("mil");
01971 number_of_pins = 36;
01972 package_body_width = 600;
01973 package_body_length = 1800;
01974 package_is_radial = FALSE;
01975 number_of_columns = 2;
01976 number_of_rows = 0;
01977 pitch_x = 600;
01978 pitch_y = 100;
01979 count_x = 0;
01980 count_y = 18;
01981 pad_shape = g_strdup ("circular pad");
01982 pad_shapes_type = ROUND;
01983 pin_drill_diameter = 28;
01984 pad_diameter = 60;
01985 pad_clearance = 15;
01986 pad_solder_mask_clearance = 6;
01987 thermal = FALSE;
01988 thermal_length = 0.0;
01989 thermal_width = 0.0;
01990 fiducial = FALSE;
01991 fiducial_pad_diameter = 0.0;
01992 fiducial_pad_solder_mask_clearance = 0.0;
01993 silkscreen_line_width = 8;
01994 courtyard_line_width = 2;
01995 g_free (footprint_name);
01996 footprint_name = g_strdup ("DIPS36600");
01997 return (EXIT_SUCCESS);
01998 }
01999 else if (!strcmp (footprint_name, "?DIPS38600"))
02000 {
02001 footprint_units = g_strdup ("mil");
02002 number_of_pins = 38;
02003 package_body_width = 600;
02004 package_body_length = 1900;
02005 package_is_radial = FALSE;
02006 number_of_columns = 2;
02007 number_of_rows = 0;
02008 pitch_x = 600;
02009 pitch_y = 100;
02010 count_x = 0;
02011 count_y = 19;
02012 pad_shape = g_strdup ("circular pad");
02013 pad_shapes_type = ROUND;
02014 pin_drill_diameter = 28;
02015 pad_diameter = 60;
02016 pad_clearance = 15;
02017 pad_solder_mask_clearance = 6;
02018 thermal = FALSE;
02019 thermal_length = 0.0;
02020 thermal_width = 0.0;
02021 fiducial = FALSE;
02022 fiducial_pad_diameter = 0.0;
02023 fiducial_pad_solder_mask_clearance = 0.0;
02024 silkscreen_line_width = 8;
02025 courtyard_line_width = 2;
02026 g_free (footprint_name);
02027 footprint_name = g_strdup ("DIPS38600");
02028 return (EXIT_SUCCESS);
02029 }
02030 else if (!strcmp (footprint_name, "?DIPS40600"))
02031 {
02032 footprint_units = g_strdup ("mil");
02033 number_of_pins = 40;
02034 package_body_width = 600;
02035 package_body_length = 2000;
02036 package_body_height = 200;
02037 package_is_radial = FALSE;
02038 number_of_columns = 2;
02039 number_of_rows = 0;
02040 pitch_x = 600;
02041 pitch_y = 100;
02042 count_x = 0;
02043 count_y = 20;
02044 pad_shape = g_strdup ("circular pad");
02045 pad_shapes_type = ROUND;
02046 pin_drill_diameter = 28;
02047 pad_diameter = 60;
02048 pad_clearance = 15;
02049 pad_solder_mask_clearance = 6;
02050 thermal = FALSE;
02051 thermal_length = 0.0;
02052 thermal_width = 0.0;
02053 fiducial = FALSE;
02054 fiducial_pad_diameter = 0.0;
02055 fiducial_pad_solder_mask_clearance = 0.0;
02056 silkscreen_line_width = 8;
02057 courtyard_line_width = 2;
02058 g_free (footprint_name);
02059 footprint_name = g_strdup ("DIPS40600");
02060 return (EXIT_SUCCESS);
02061 }
02062 else if (!strcmp (footprint_name, "?DIPS42600"))
02063 {
02064 footprint_units = g_strdup ("mil");
02065 number_of_pins = 42;
02066 package_body_width = 600;
02067 package_body_length = 2100;
02068 package_is_radial = FALSE;
02069 number_of_columns = 2;
02070 number_of_rows = 0;
02071 pitch_x = 600;
02072 pitch_y = 100;
02073 count_x = 0;
02074 count_y = 21;
02075 pad_shape = g_strdup ("circular pad");
02076 pad_shapes_type = ROUND;
02077 pin_drill_diameter = 28;
02078 pad_diameter = 60;
02079 pad_clearance = 15;
02080 pad_solder_mask_clearance = 6;
02081 thermal = FALSE;
02082 thermal_length = 0.0;
02083 thermal_width = 0.0;
02084 fiducial = FALSE;
02085 fiducial_pad_diameter = 0.0;
02086 fiducial_pad_solder_mask_clearance = 0.0;
02087 silkscreen_line_width = 8;
02088 courtyard_line_width = 2;
02089 g_free (footprint_name);
02090 footprint_name = g_strdup ("DIPS42600");
02091 return (EXIT_SUCCESS);
02092 }
02093 else if (!strcmp (footprint_name, "?DIPS48600"))
02094 {
02095 footprint_units = g_strdup ("mil");
02096 number_of_pins = 48;
02097 package_body_width = 600;
02098 package_body_length = 2400;
02099 package_body_height = 200;
02100 package_is_radial = FALSE;
02101 number_of_columns = 2;
02102 number_of_rows = 0;
02103 pitch_x = 600;
02104 pitch_y = 100;
02105 count_x = 0;
02106 count_y = 24;
02107 pad_shape = g_strdup ("circular pad");
02108 pad_shapes_type = ROUND;
02109 pin_drill_diameter = 28;
02110 pad_diameter = 60;
02111 pad_clearance = 15;
02112 pad_solder_mask_clearance = 6;
02113 thermal = FALSE;
02114 thermal_length = 0.0;
02115 thermal_width = 0.0;
02116 fiducial = FALSE;
02117 fiducial_pad_diameter = 0.0;
02118 fiducial_pad_solder_mask_clearance = 0.0;
02119 silkscreen_line_width = 8;
02120 courtyard_line_width = 2;
02121 g_free (footprint_name);
02122 footprint_name = g_strdup ("DIPS48600");
02123 return (EXIT_SUCCESS);
02124 }
02125 else if (!strcmp (footprint_name, "?DIPS50900"))
02126 {
02127 footprint_units = g_strdup ("mil");
02128 number_of_pins = 50;
02129 package_body_width = 900;
02130 package_body_length = 2500;
02131 package_is_radial = FALSE;
02132 number_of_columns = 2;
02133 number_of_rows = 0;
02134 pitch_x = 900;
02135 pitch_y = 100;
02136 count_x = 0;
02137 count_y = 25;
02138 pad_shape = g_strdup ("circular pad");
02139 pad_shapes_type = ROUND;
02140 pin_drill_diameter = 28;
02141 pad_diameter = 60;
02142 pad_clearance = 15;
02143 pad_solder_mask_clearance = 6;
02144 thermal = FALSE;
02145 thermal_length = 0.0;
02146 thermal_width = 0.0;
02147 fiducial = FALSE;
02148 fiducial_pad_diameter = 0.0;
02149 fiducial_pad_solder_mask_clearance = 0.0;
02150 silkscreen_line_width = 8;
02151 courtyard_line_width = 2;
02152 g_free (footprint_name);
02153 footprint_name = g_strdup ("DIPS50900");
02154 return (EXIT_SUCCESS);
02155 }
02156 else if (!strcmp (footprint_name, "?DIPS52600"))
02157 {
02158 footprint_units = g_strdup ("mil");
02159 number_of_pins = 52;
02160 package_body_width = 600;
02161 package_body_length = 2600;
02162 package_is_radial = FALSE;
02163 number_of_columns = 2;
02164 number_of_rows = 0;
02165 pitch_x = 600;
02166 pitch_y = 100;
02167 count_x = 0;
02168 count_y = 26;
02169 pad_shape = g_strdup ("circular pad");
02170 pad_shapes_type = ROUND;
02171 pin_drill_diameter = 28;
02172 pad_diameter = 60;
02173 pad_clearance = 15;
02174 pad_solder_mask_clearance = 6;
02175 thermal = FALSE;
02176 thermal_length = 0.0;
02177 thermal_width = 0.0;
02178 fiducial = FALSE;
02179 fiducial_pad_diameter = 0.0;
02180 fiducial_pad_solder_mask_clearance = 0.0;
02181 silkscreen_line_width = 8;
02182 courtyard_line_width = 2;
02183 g_free (footprint_name);
02184 footprint_name = g_strdup ("DIPS52600");
02185 return (EXIT_SUCCESS);
02186 }
02187 else if (!strcmp (footprint_name, "?DIPS64900"))
02188 {
02189 footprint_units = g_strdup ("mil");
02190 number_of_pins = 64;
02191 package_body_width = 900;
02192 package_body_length = 3200;
02193 package_is_radial = FALSE;
02194 number_of_columns = 2;
02195 number_of_rows = 0;
02196 pitch_x = 900;
02197 pitch_y = 100;
02198 count_x = 0;
02199 count_y = 32;
02200 pad_shape = g_strdup ("circular pad");
02201 pad_shapes_type = ROUND;
02202 pin_drill_diameter = 28;
02203 pad_diameter = 60;
02204 pad_clearance = 15;
02205 pad_solder_mask_clearance = 6;
02206 thermal = FALSE;
02207 thermal_length = 0.0;
02208 thermal_width = 0.0;
02209 fiducial = FALSE;
02210 fiducial_pad_diameter = 0.0;
02211 fiducial_pad_solder_mask_clearance = 0.0;
02212 silkscreen_line_width = 8;
02213 courtyard_line_width = 2;
02214 g_free (footprint_name);
02215 footprint_name = g_strdup ("DIPS64900");
02216 return (EXIT_SUCCESS);
02217 }
02218 else
02219 {
02220 fprintf (stderr,
02221 _("WARNING: default values for footprint %s not found.\n"),
02222 footprint_name);
02223 return (EXIT_FAILURE);
02224 }
02225 }
02226
02227
02235 #if GUI
02236 int
02237 dips_set_gui_constraints ()
02238 {
02239
02240 GtkWidget *package_is_radial_checkbutton = lookup_widget (GTK_WIDGET (widget),
02241 "package_is_radial_checkbutton");
02242 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (package_is_radial_checkbutton), FALSE);
02243 gtk_widget_set_sensitive (package_is_radial_checkbutton, FALSE);
02244
02245
02246 GtkWidget *number_of_columns_entry = lookup_widget (GTK_WIDGET (widget),
02247 "number_of_columns_entry");
02248 gtk_entry_set_text (GTK_ENTRY (number_of_columns_entry), "2");
02249 gtk_widget_set_sensitive (number_of_columns_entry, FALSE);
02250 GtkWidget *number_of_rows_entry = lookup_widget (GTK_WIDGET (widget),
02251 "number_of_rows_entry");
02252 gtk_entry_set_text (GTK_ENTRY (number_of_rows_entry), "");
02253 gtk_widget_set_sensitive (number_of_rows_entry, FALSE);
02254 GtkWidget *count_x_entry = lookup_widget (GTK_WIDGET (widget),
02255 "count_x_entry");
02256 gtk_entry_set_text (GTK_ENTRY (count_x_entry), "");
02257 gtk_widget_set_sensitive (count_x_entry, FALSE);
02258 GtkWidget *count_y_entry = lookup_widget (GTK_WIDGET (widget),
02259 "count_y_entry");
02260 gtk_entry_set_text (GTK_ENTRY (count_y_entry), "");
02261 gtk_widget_set_sensitive (count_y_entry, TRUE);
02262 GtkWidget *number_1_position_entry = lookup_widget (GTK_WIDGET (widget),
02263 "number_1_position_entry");
02264 gtk_combo_box_set_active (GTK_COMBO_BOX (number_1_position_entry), UPPER_LEFT);
02265 gtk_widget_set_sensitive (number_1_position_entry, FALSE);
02266
02267
02268 gui_constraints_disable_thermal_tab_widgets (widget);
02269
02270
02271 gui_constraints_disable_heel_and_toe_goals_tab_widgets (widget);
02272 }
02273 #endif
02274
02275
02284 int
02285 dips_write_footprint ()
02286 {
02287 gdouble xmax;
02288 gdouble xmin;
02289 gdouble ymax;
02290 gdouble ymin;
02291 gdouble x_text;
02292 gdouble y_text;
02293 gint pin_number;
02294 gchar *pin_pad_name = g_strdup ("");
02295 gchar *pin_pad_flags = g_strdup ("");
02296 gint i;
02297
02298
02299 fp = fopen (footprint_filename, "w");
02300 if (!fp)
02301 {
02302 g_log ("", G_LOG_LEVEL_WARNING,
02303 _("could not open file for %s footprint: %s."),
02304 footprint_type, footprint_filename);
02305 fclose (fp);
02306 return (EXIT_FAILURE);
02307 }
02308
02309 if (license_in_footprint)
02310 {
02311 write_license ();
02312 }
02313
02314
02315 xmin = multiplier *
02316 (
02317 (-pitch_x / 2.0) -
02318 (((pad_diameter > pad_length) ? pad_diameter : pad_length) / 2.0) -
02319 pad_solder_mask_clearance
02320 );
02321 xmax = multiplier *
02322 (
02323 (pitch_x / 2.0) +
02324 (((pad_diameter > pad_length) ? pad_diameter : pad_length) / 2.0) +
02325 pad_solder_mask_clearance
02326 );
02327 ymin = multiplier *
02328 (
02329 ((((-count_y - 1) / 2.0) + 1) * pitch_y) -
02330 (((pad_diameter > pad_width) ? pad_diameter : pad_width) / 2.0) -
02331 pad_solder_mask_clearance
02332 );
02333 ymax = multiplier *
02334 (
02335 (((count_y - 1) / 2.0) * pitch_y) +
02336 (((pad_diameter > pad_width) ? pad_diameter : pad_width) / 2.0) +
02337 pad_solder_mask_clearance
02338 );
02339
02340
02341 if ((multiplier * ((-package_body_length / 2.0) - courtyard_clearance_with_package)) < xmin)
02342 xmin = (multiplier * ((-package_body_length / 2.0) - courtyard_clearance_with_package));
02343 if ((multiplier * ((package_body_length / 2.0) + courtyard_clearance_with_package)) > xmax)
02344 xmax = (multiplier * ((package_body_length / 2.0) + courtyard_clearance_with_package));
02345 if ((multiplier * ((-package_body_width / 2.0) - courtyard_clearance_with_package)) < ymin)
02346 ymin = (multiplier * ((-package_body_width / 2.0) - courtyard_clearance_with_package));
02347 if ((multiplier * ((package_body_width / 2.0) + courtyard_clearance_with_package)) > ymax)
02348 ymax = (multiplier * ((package_body_width / 2.0) + courtyard_clearance_with_package));
02349
02350 if (multiplier * (-courtyard_length / 2.0) < xmin)
02351 xmin = multiplier * (-courtyard_length / 2.0);
02352 if (multiplier * (courtyard_length / 2.0) > xmax)
02353 xmax = multiplier * (courtyard_length / 2.0);
02354 if (multiplier * (-courtyard_width / 2.0) < ymin)
02355 ymin = multiplier * (-courtyard_width / 2.0);
02356 if (multiplier * (courtyard_width / 2.0) > ymax)
02357 ymax = multiplier * (courtyard_width / 2.0);
02358
02359
02360 x_text = 0.0 ;
02361 y_text = (ymin - 10000.0);
02362 write_element_header (x_text, y_text);
02363
02364 for (i = 0; (i < count_y); i++)
02365 {
02366 pin_number = 1 + i;
02367 if (pin1_square && (pin_number == 1))
02368 pin_pad_flags = g_strdup ("square");
02369 else
02370 pin_pad_flags = g_strdup ("");
02371 write_pin
02372 (
02373 pin_number,
02374 pin_pad_name,
02375 multiplier * (-pitch_x / 2.0),
02376 multiplier * ((((-count_y - 1) / 2.0) +1 + i) * pitch_y),
02377 multiplier * pad_diameter,
02378 multiplier * pad_clearance,
02379 multiplier * (pad_diameter + pad_solder_mask_clearance),
02380 multiplier * pin_drill_diameter,
02381 pin_pad_flags
02382 );
02383 if (!strcmp (pad_shape, "rounded pad, elongated"))
02384 {
02385 if (!strcmp (pin_pad_flags, ""))
02386 pin_pad_flags = g_strconcat (pin_pad_flags, "onsolder", NULL);
02387 else
02388 pin_pad_flags = g_strconcat (pin_pad_flags, ",onsolder", NULL);
02389 write_pad
02390 (
02391 pin_number,
02392 pin_pad_name,
02393 multiplier * (-pitch_x + pad_length - pad_width) / 2.0,
02394 multiplier * ((((-count_y - 1) / 2.0) + 1 + i) * pitch_y),
02395 multiplier * (-pitch_x - pad_length + pad_width) / 2.0,
02396 multiplier * ((((-count_y - 1) / 2.0) + 1 + i) * pitch_y),
02397 multiplier * pad_width,
02398 multiplier * pad_clearance,
02399 multiplier * (pad_width + (2 * pad_solder_mask_clearance)),
02400 pin_pad_flags
02401 );
02402 }
02403 pin_number = (number_of_columns * count_y) - i;
02404 if (pin1_square && (pin_number == 1))
02405 pin_pad_flags = g_strdup ("square");
02406 else
02407 pin_pad_flags = g_strdup ("");
02408 write_pin
02409 (
02410 pin_number,
02411 pin_pad_name,
02412 multiplier * pitch_x / 2.0,
02413 multiplier * ((((-count_y - 1) / 2.0) + 1 + i) * pitch_y),
02414 multiplier * pad_diameter,
02415 multiplier * pad_clearance,
02416 multiplier * (pad_diameter + pad_solder_mask_clearance),
02417 multiplier * pin_drill_diameter,
02418 pin_pad_flags
02419 );
02420 if (!strcmp (pad_shape, "rounded pad, elongated"))
02421 {
02422 if (!strcmp (pin_pad_flags, ""))
02423 pin_pad_flags = g_strconcat (pin_pad_flags, "onsolder", NULL);
02424 else
02425 pin_pad_flags = g_strconcat (pin_pad_flags, ",onsolder", NULL);
02426 write_pad
02427 (
02428 pin_number,
02429 pin_pad_name,
02430 multiplier * (pitch_x - pad_length + pad_width) / 2.0,
02431 multiplier * ((((-count_y - 1) / 2.0) + 1 + i) * pitch_y),
02432 multiplier * (pitch_x + pad_length - pad_width) / 2.0,
02433 multiplier * ((((-count_y - 1) / 2.0) + 1 + i) * pitch_y),
02434 multiplier * pad_width,
02435 multiplier * pad_clearance,
02436 multiplier * (pad_width + (2 * pad_solder_mask_clearance)),
02437 pin_pad_flags
02438 );
02439 }
02440 }
02441
02442 if (silkscreen_package_outline)
02443 {
02444 fprintf (fp, "# Write a package body on the silkscreen\n");
02445 write_rectangle
02446 (
02447 multiplier * (-package_body_length / 2) ,
02448 multiplier * (-package_body_width / 2) ,
02449 multiplier * (package_body_length / 2) ,
02450 multiplier * (package_body_width / 2) ,
02451 multiplier * silkscreen_line_width
02452 );
02453 }
02454
02455 if (silkscreen_indicate_1)
02456 {
02457 fprintf (fp, "# Write a pin 1 marker on the silkscreen\n");
02458 write_element_arc
02459 (
02460 (0.0),
02461 ymin,
02462 multiplier * (pitch_x / 8),
02463 multiplier * (pitch_x / 8),
02464 0,
02465 180,
02466 multiplier * silkscreen_line_width
02467 );
02468 }
02469
02470 if (courtyard)
02471 {
02472 fprintf (fp, "# Write a courtyard on the silkscreen\n");
02473 write_rectangle
02474 (
02475 xmin,
02476 ymin,
02477 xmax,
02478 ymax,
02479 multiplier * courtyard_line_width
02480 );
02481 }
02482
02483 if (attributes_in_footprint)
02484 {
02485 write_attributes ();
02486 }
02487
02488 fprintf (fp, "\n");
02489 fprintf (fp, ")\n");
02490 fclose (fp);
02491
02492 if (verbose)
02493 {
02494 g_log ("", G_LOG_LEVEL_INFO,
02495 _("wrote a footprint for a %s package: %s."),
02496 footprint_type,
02497 footprint_filename);
02498 }
02499 return (EXIT_SUCCESS);
02500 }
02501
02502
02506 static fpw_function_t
02507 dips_function_list[] =
02508 {
02509 #if GUI
02510 {
02511 "Set GUI constraints",
02512 dips_set_gui_constraints,
02513 "Set GUI constraints for a DIPS package",
02514 NULL
02515 },
02516 #endif
02517 {
02518 "Create Element",
02519 dips_create_element,
02520 "Create a pcb element for a DIPS package",
02521 NULL
02522 },
02523 {
02524 "Create Package List",
02525 dips_create_packages_list,
02526 "Create a list of packages with known values",
02527 NULL
02528 },
02529 {
02530 "DRC DIPS Element",
02531 dips_drc,
02532 "Design Rule Check for a DIPS package",
02533 NULL
02534 },
02535 {
02536 "Default Element Values",
02537 dips_get_default_footprint_values,
02538 "Get default values for a selected DIPS package",
02539 NULL
02540 },
02541 {
02542 "Write footprint",
02543 dips_write_footprint,
02544 "Write a footprint for a selected DIPS package",
02545 NULL
02546 }
02547 };
02548
02549
02553 REGISTER_FUNCTIONS (dips_function_list)
02554
02555
02556
02563 void
02564 dips_init ()
02565 {
02566 register_dips_function_list ();
02567 }
02568
02569
02570