FreeCalypso > hg > ueda-linux
comparison ueda/mclutils/getfps.c @ 0:cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
| author | Space Falcon <falcon@ivan.Harhan.ORG> |
|---|---|
| date | Mon, 20 Jul 2015 00:24:37 +0000 |
| parents | |
| children | d098f8548b44 |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:cd92449fdb51 |
|---|---|
| 1 /* | |
| 2 * This program "gets" all footprints for the board. The footprint attributes | |
| 3 * are extracted from the MCL and a set of M4 macro calls is emitted on stdout | |
| 4 * which when run through M4 will produce all footprints for the board with the | |
| 5 * refdes and value filled in. | |
| 6 */ | |
| 7 | |
| 8 #include <stdio.h> | |
| 9 #include <strings.h> | |
| 10 #include "../libueda/mcl.h" | |
| 11 | |
| 12 extern char *optarg; | |
| 13 | |
| 14 extern char *MCLfile; | |
| 15 extern struct component components[]; | |
| 16 extern int ncomponents; | |
| 17 extern char *get_comp_attr(); | |
| 18 | |
| 19 int check_completeness; | |
| 20 | |
| 21 main(argc, argv) | |
| 22 char **argv; | |
| 23 { | |
| 24 register int c; | |
| 25 register struct component *comp; | |
| 26 register char *footprint, *value; | |
| 27 | |
| 28 while ((c = getopt(argc, argv, "chM:")) != EOF) | |
| 29 switch (c) { | |
| 30 case 'c': | |
| 31 check_completeness++; | |
| 32 break; | |
| 33 case 'h': | |
| 34 puts("include(template.pcb)"); | |
| 35 break; | |
| 36 case 'M': | |
| 37 MCLfile = optarg; | |
| 38 break; | |
| 39 default: | |
| 40 /* getopt prints the error message */ | |
| 41 exit(1); | |
| 42 } | |
| 43 | |
| 44 read_MCL(); | |
| 45 | |
| 46 for (comp = components, c = 0; c < ncomponents; comp++, c++) { | |
| 47 footprint = get_comp_attr(comp, "footprint"); | |
| 48 if (!footprint) { | |
| 49 if (check_completeness) | |
| 50 fprintf(stderr, "%s has no footprint\n", | |
| 51 comp->name); | |
| 52 continue; | |
| 53 } | |
| 54 if (!strcmp(footprint, "none")) | |
| 55 continue; | |
| 56 if (!strcmp(footprint, "TBD")) { | |
| 57 if (check_completeness) | |
| 58 fprintf(stderr, "%s: footprint=TBD\n", | |
| 59 comp->name); | |
| 60 continue; | |
| 61 } | |
| 62 value = get_comp_attr(comp, "pcbvalue"); | |
| 63 if (!value) | |
| 64 value = get_comp_attr(comp, "value"); | |
| 65 if (!value) | |
| 66 value = get_comp_attr(comp, "device"); | |
| 67 if (!value) | |
| 68 value = get_comp_attr(comp, "manufacturer_part_number"); | |
| 69 if (!value) | |
| 70 value = ""; | |
| 71 if (strncmp(footprint, "file:", 5)) | |
| 72 printf("make_footprint(`%s',`%s',`%s')\n", footprint, | |
| 73 comp->name, value); | |
| 74 else | |
| 75 printf("make_footprint_file(`%s',`%s',`%s')\n", | |
| 76 footprint + 5, comp->name, value); | |
| 77 } | |
| 78 exit(0); | |
| 79 } |
