1 | /* |
---|
2 | * AMBA Plug & Play Device and Vendor name database: Created from GRLIB 3386. |
---|
3 | * |
---|
4 | * COPYRIGHT (c) 2009. |
---|
5 | * Aeroflex Gaisler. |
---|
6 | * |
---|
7 | * The device and vendor definitions are extracted with a script from |
---|
8 | * GRLIB. |
---|
9 | * |
---|
10 | * The license and distribution terms for this file may be |
---|
11 | * found in the file LICENSE in this distribution or at |
---|
12 | * http://www.rtems.org/license/LICENSE. |
---|
13 | */ |
---|
14 | |
---|
15 | #include <grlib/ambapp.h> |
---|
16 | #include <grlib/ambapp_ids.h> |
---|
17 | #include <string.h> |
---|
18 | |
---|
19 | #ifndef NULL |
---|
20 | #define NULL 0 |
---|
21 | #endif |
---|
22 | |
---|
23 | typedef struct { |
---|
24 | int device_id; |
---|
25 | char *name; |
---|
26 | } ambapp_device_name; |
---|
27 | |
---|
28 | typedef struct { |
---|
29 | unsigned int vendor_id; |
---|
30 | char *name; |
---|
31 | ambapp_device_name *devices; |
---|
32 | } ambapp_vendor_devnames; |
---|
33 | |
---|
34 | /**************** AUTO GENERATED FROM devices.vhd ****************/ |
---|
35 | static ambapp_device_name GAISLER_devices[] = |
---|
36 | { |
---|
37 | {GAISLER_LEON2DSU, "LEON2DSU"}, |
---|
38 | {GAISLER_LEON3, "LEON3"}, |
---|
39 | {GAISLER_LEON3DSU, "LEON3DSU"}, |
---|
40 | {GAISLER_ETHAHB, "ETHAHB"}, |
---|
41 | {GAISLER_APBMST, "APBMST"}, |
---|
42 | {GAISLER_AHBUART, "AHBUART"}, |
---|
43 | {GAISLER_SRCTRL, "SRCTRL"}, |
---|
44 | {GAISLER_SDCTRL, "SDCTRL"}, |
---|
45 | {GAISLER_SSRCTRL, "SSRCTRL"}, |
---|
46 | {GAISLER_I2C2AHB, "I2C2AHB"}, |
---|
47 | {GAISLER_APBUART, "APBUART"}, |
---|
48 | {GAISLER_IRQMP, "IRQMP"}, |
---|
49 | {GAISLER_AHBRAM, "AHBRAM"}, |
---|
50 | {GAISLER_AHBDPRAM, "AHBDPRAM"}, |
---|
51 | {GAISLER_GRIOMMU2, "GRIOMMU2"}, |
---|
52 | {GAISLER_GPTIMER, "GPTIMER"}, |
---|
53 | {GAISLER_PCITRG, "PCITRG"}, |
---|
54 | {GAISLER_PCISBRG, "PCISBRG"}, |
---|
55 | {GAISLER_PCIFBRG, "PCIFBRG"}, |
---|
56 | {GAISLER_PCITRACE, "PCITRACE"}, |
---|
57 | {GAISLER_DMACTRL, "DMACTRL"}, |
---|
58 | {GAISLER_AHBTRACE, "AHBTRACE"}, |
---|
59 | {GAISLER_DSUCTRL, "DSUCTRL"}, |
---|
60 | {GAISLER_CANAHB, "CANAHB"}, |
---|
61 | {GAISLER_GPIO, "GPIO"}, |
---|
62 | {GAISLER_AHBROM, "AHBROM"}, |
---|
63 | {GAISLER_AHBJTAG, "AHBJTAG"}, |
---|
64 | {GAISLER_ETHMAC, "ETHMAC"}, |
---|
65 | {GAISLER_SWNODE, "SWNODE"}, |
---|
66 | {GAISLER_SPW, "SPW"}, |
---|
67 | {GAISLER_AHB2AHB, "AHB2AHB"}, |
---|
68 | {GAISLER_USBDC, "USBDC"}, |
---|
69 | {GAISLER_USB_DCL, "USB_DCL"}, |
---|
70 | {GAISLER_DDRMP, "DDRMP"}, |
---|
71 | {GAISLER_ATACTRL, "ATACTRL"}, |
---|
72 | {GAISLER_DDRSP, "DDRSP"}, |
---|
73 | {GAISLER_EHCI, "EHCI"}, |
---|
74 | {GAISLER_UHCI, "UHCI"}, |
---|
75 | {GAISLER_I2CMST, "I2CMST"}, |
---|
76 | {GAISLER_SPW2, "SPW2"}, |
---|
77 | {GAISLER_AHBDMA, "AHBDMA"}, |
---|
78 | {GAISLER_NUHOSP3, "NUHOSP3"}, |
---|
79 | {GAISLER_CLKGATE, "CLKGATE"}, |
---|
80 | {GAISLER_SPICTRL, "SPICTRL"}, |
---|
81 | {GAISLER_DDR2SP, "DDR2SP"}, |
---|
82 | {GAISLER_SLINK, "SLINK"}, |
---|
83 | {GAISLER_GRTM, "GRTM"}, |
---|
84 | {GAISLER_GRTC, "GRTC"}, |
---|
85 | {GAISLER_GRPW, "GRPW"}, |
---|
86 | {GAISLER_GRCTM, "GRCTM"}, |
---|
87 | {GAISLER_GRHCAN, "GRHCAN"}, |
---|
88 | {GAISLER_GRFIFO, "GRFIFO"}, |
---|
89 | {GAISLER_GRADCDAC, "GRADCDAC"}, |
---|
90 | {GAISLER_GRPULSE, "GRPULSE"}, |
---|
91 | {GAISLER_GRTIMER, "GRTIMER"}, |
---|
92 | {GAISLER_AHB2PP, "AHB2PP"}, |
---|
93 | {GAISLER_GRVERSION, "GRVERSION"}, |
---|
94 | {GAISLER_APB2PW, "APB2PW"}, |
---|
95 | {GAISLER_PW2APB, "PW2APB"}, |
---|
96 | {GAISLER_GRCAN, "GRCAN"}, |
---|
97 | {GAISLER_I2CSLV, "I2CSLV"}, |
---|
98 | {GAISLER_U16550, "U16550"}, |
---|
99 | {GAISLER_AHBMST_EM, "AHBMST_EM"}, |
---|
100 | {GAISLER_AHBSLV_EM, "AHBSLV_EM"}, |
---|
101 | {GAISLER_GRTESTMOD, "GRTESTMOD"}, |
---|
102 | {GAISLER_ASCS, "ASCS"}, |
---|
103 | {GAISLER_IPMVBCTRL, "IPMVBCTRL"}, |
---|
104 | {GAISLER_SPIMCTRL, "SPIMCTRL"}, |
---|
105 | {GAISLER_L4STAT, "L4STAT"}, |
---|
106 | {GAISLER_LEON4, "LEON4"}, |
---|
107 | {GAISLER_LEON4DSU, "LEON4DSU"}, |
---|
108 | {GAISLER_PWM, "PWM"}, |
---|
109 | {GAISLER_L2CACHE, "L2CACHE"}, |
---|
110 | {GAISLER_SDCTRL64, "SDCTRL64"}, |
---|
111 | {GAISLER_GR1553B, "GR1553B"}, |
---|
112 | {GAISLER_1553TST, "1553TST"}, |
---|
113 | {GAISLER_GRIOMMU, "GRIOMMU"}, |
---|
114 | {GAISLER_FTAHBRAM, "FTAHBRAM"}, |
---|
115 | {GAISLER_FTSRCTRL, "FTSRCTRL"}, |
---|
116 | {GAISLER_AHBSTAT, "AHBSTAT"}, |
---|
117 | {GAISLER_LEON3FT, "LEON3FT"}, |
---|
118 | {GAISLER_FTMCTRL, "FTMCTRL"}, |
---|
119 | {GAISLER_FTSDCTRL, "FTSDCTRL"}, |
---|
120 | {GAISLER_FTSRCTRL8, "FTSRCTRL8"}, |
---|
121 | {GAISLER_MEMSCRUB, "MEMSCRUB"}, |
---|
122 | {GAISLER_FTSDCTRL64, "FTSDCTRL64"}, |
---|
123 | {GAISLER_NANDFCTRL, "NANDFCTRL"}, |
---|
124 | {GAISLER_N2DLLCTRL, "N2DLLCTRL"}, |
---|
125 | {GAISLER_N2PLLCTRL, "N2PLLCTRL"}, |
---|
126 | {GAISLER_SPI2AHB, "SPI2AHB"}, |
---|
127 | {GAISLER_DDRSDMUX, "DDRSDMUX"}, |
---|
128 | {GAISLER_AHBFROM, "AHBFROM"}, |
---|
129 | {GAISLER_PCIEXP, "PCIEXP"}, |
---|
130 | {GAISLER_APBPS2, "APBPS2"}, |
---|
131 | {GAISLER_VGACTRL, "VGACTRL"}, |
---|
132 | {GAISLER_LOGAN, "LOGAN"}, |
---|
133 | {GAISLER_SVGACTRL, "SVGACTRL"}, |
---|
134 | {GAISLER_T1AHB, "T1AHB"}, |
---|
135 | {GAISLER_MP7WRAP, "MP7WRAP"}, |
---|
136 | {GAISLER_GRSYSMON, "GRSYSMON"}, |
---|
137 | {GAISLER_GRACECTRL, "GRACECTRL"}, |
---|
138 | {GAISLER_ATAHBSLV, "ATAHBSLV"}, |
---|
139 | {GAISLER_ATAHBMST, "ATAHBMST"}, |
---|
140 | {GAISLER_ATAPBSLV, "ATAPBSLV"}, |
---|
141 | {GAISLER_MIGDDR2, "MIGDDR2"}, |
---|
142 | {GAISLER_LCDCTRL, "LCDCTRL"}, |
---|
143 | {GAISLER_SWITCHOVER, "SWITCHOVER"}, |
---|
144 | {GAISLER_FIFOUART, "FIFOUART"}, |
---|
145 | {GAISLER_MUXCTRL, "MUXCTRL"}, |
---|
146 | {GAISLER_B1553BC, "B1553BC"}, |
---|
147 | {GAISLER_B1553RT, "B1553RT"}, |
---|
148 | {GAISLER_B1553BRM, "B1553BRM"}, |
---|
149 | {GAISLER_AES, "AES"}, |
---|
150 | {GAISLER_ECC, "ECC"}, |
---|
151 | {GAISLER_PCIF, "PCIF"}, |
---|
152 | {GAISLER_CLKMOD, "CLKMOD"}, |
---|
153 | {GAISLER_HAPSTRAK, "HAPSTRAK"}, |
---|
154 | {GAISLER_TEST_1X2, "TEST_1X2"}, |
---|
155 | {GAISLER_WILD2AHB, "WILD2AHB"}, |
---|
156 | {GAISLER_BIO1, "BIO1"}, |
---|
157 | {GAISLER_AESDMA, "AESDMA"}, |
---|
158 | {GAISLER_GRPCI2, "GRPCI2"}, |
---|
159 | {GAISLER_GRPCI2_DMA, "GRPCI2_DMA"}, |
---|
160 | {GAISLER_GRPCI2_TB, "GRPCI2_TB"}, |
---|
161 | {GAISLER_MMA, "MMA"}, |
---|
162 | {GAISLER_SATCAN, "SATCAN"}, |
---|
163 | {GAISLER_CANMUX, "CANMUX"}, |
---|
164 | {GAISLER_GRTMRX, "GRTMRX"}, |
---|
165 | {GAISLER_GRTCTX, "GRTCTX"}, |
---|
166 | {GAISLER_GRTMDESC, "GRTMDESC"}, |
---|
167 | {GAISLER_GRTMVC, "GRTMVC"}, |
---|
168 | {GAISLER_GEFFE, "GEFFE"}, |
---|
169 | {GAISLER_GPREG, "GPREG"}, |
---|
170 | {GAISLER_GRTMPAHB, "GRTMPAHB"}, |
---|
171 | {GAISLER_SPWCUC, "SPWCUC"}, |
---|
172 | {GAISLER_SPW2_DMA, "SPW2_DMA"}, |
---|
173 | {GAISLER_SPWROUTER, "SPWROUTER"}, |
---|
174 | {GAISLER_EDCLMST, "EDCLMST"}, |
---|
175 | {GAISLER_GRPWTX, "GRPWTX"}, |
---|
176 | {GAISLER_GRPWRX, "GRPWRX"}, |
---|
177 | {GAISLER_GPREGBANK, "GPREGBANK"}, |
---|
178 | {GAISLER_MIG_7SERIES, "MIG_7SERIES"}, |
---|
179 | {GAISLER_GRSPW2_SIST, "GRSPW2_SIST"}, |
---|
180 | {GAISLER_SGMII, "SGMII"}, |
---|
181 | {GAISLER_RGMII, "RGMII"}, |
---|
182 | {GAISLER_IRQGEN, "IRQGEN"}, |
---|
183 | {GAISLER_GRDMAC, "GRDMAC"}, |
---|
184 | {GAISLER_AHB2AVLA, "AHB2AVLA"}, |
---|
185 | {GAISLER_SPWTDP, "SPWTDP"}, |
---|
186 | {GAISLER_L3STAT, "L3STAT"}, |
---|
187 | {GAISLER_GR740THS, "GR740THS"}, |
---|
188 | {GAISLER_GRRM, "GRRM"}, |
---|
189 | {GAISLER_CMAP, "CMAP"}, |
---|
190 | {GAISLER_CPGEN, "CPGEN"}, |
---|
191 | {GAISLER_AMBAPROT, "AMBAPROT"}, |
---|
192 | {GAISLER_IGLOO2_BRIDGE, "IGLOO2_BRIDGE"}, |
---|
193 | {GAISLER_AHB2AXI, "AHB2AXI"}, |
---|
194 | {GAISLER_AXI2AHB, "AXI2AHB"}, |
---|
195 | {GAISLER_FDIR_RSTCTRL, "FDIR_RSTCTRL"}, |
---|
196 | {GAISLER_APB3MST, "APB3MST"}, |
---|
197 | {GAISLER_LRAM, "LRAM"}, |
---|
198 | {GAISLER_BOOTSEQ, "BOOTSEQ"}, |
---|
199 | {GAISLER_TCCOP, "TCCOP"}, |
---|
200 | {GAISLER_SPIMASTER, "SPIMASTER"}, |
---|
201 | {GAISLER_SPISLAVE, "SPISLAVE"}, |
---|
202 | {GAISLER_GRSRIO, "GRSRIO"}, |
---|
203 | {0, NULL} |
---|
204 | }; |
---|
205 | |
---|
206 | static ambapp_device_name PENDER_devices[] = |
---|
207 | { |
---|
208 | {0, NULL} |
---|
209 | }; |
---|
210 | |
---|
211 | static ambapp_device_name ESA_devices[] = |
---|
212 | { |
---|
213 | {ESA_LEON2, "LEON2"}, |
---|
214 | {ESA_LEON2APB, "LEON2APB"}, |
---|
215 | {ESA_IRQ, "IRQ"}, |
---|
216 | {ESA_TIMER, "TIMER"}, |
---|
217 | {ESA_UART, "UART"}, |
---|
218 | {ESA_CFG, "CFG"}, |
---|
219 | {ESA_IO, "IO"}, |
---|
220 | {ESA_MCTRL, "MCTRL"}, |
---|
221 | {ESA_PCIARB, "PCIARB"}, |
---|
222 | {ESA_HURRICANE, "HURRICANE"}, |
---|
223 | {ESA_SPW_RMAP, "SPW_RMAP"}, |
---|
224 | {ESA_AHBUART, "AHBUART"}, |
---|
225 | {ESA_SPWA, "SPWA"}, |
---|
226 | {ESA_BOSCHCAN, "BOSCHCAN"}, |
---|
227 | {ESA_IRQ2, "IRQ2"}, |
---|
228 | {ESA_AHBSTAT, "AHBSTAT"}, |
---|
229 | {ESA_WPROT, "WPROT"}, |
---|
230 | {ESA_WPROT2, "WPROT2"}, |
---|
231 | {ESA_PDEC3AMBA, "PDEC3AMBA"}, |
---|
232 | {ESA_PTME3AMBA, "PTME3AMBA"}, |
---|
233 | {0, NULL} |
---|
234 | }; |
---|
235 | |
---|
236 | static ambapp_device_name ASTRIUM_devices[] = |
---|
237 | { |
---|
238 | {0, NULL} |
---|
239 | }; |
---|
240 | |
---|
241 | static ambapp_device_name OPENCHIP_devices[] = |
---|
242 | { |
---|
243 | {OPENCHIP_APBGPIO, "APBGPIO"}, |
---|
244 | {OPENCHIP_APBI2C, "APBI2C"}, |
---|
245 | {OPENCHIP_APBSPI, "APBSPI"}, |
---|
246 | {OPENCHIP_APBCHARLCD, "APBCHARLCD"}, |
---|
247 | {OPENCHIP_APBPWM, "APBPWM"}, |
---|
248 | {OPENCHIP_APBPS2, "APBPS2"}, |
---|
249 | {OPENCHIP_APBMMCSD, "APBMMCSD"}, |
---|
250 | {OPENCHIP_APBNAND, "APBNAND"}, |
---|
251 | {OPENCHIP_APBLPC, "APBLPC"}, |
---|
252 | {OPENCHIP_APBCF, "APBCF"}, |
---|
253 | {OPENCHIP_APBSYSACE, "APBSYSACE"}, |
---|
254 | {OPENCHIP_APB1WIRE, "APB1WIRE"}, |
---|
255 | {OPENCHIP_APBJTAG, "APBJTAG"}, |
---|
256 | {OPENCHIP_APBSUI, "APBSUI"}, |
---|
257 | {0, NULL} |
---|
258 | }; |
---|
259 | |
---|
260 | static ambapp_device_name OPENCORES_devices[] = |
---|
261 | { |
---|
262 | {0, NULL} |
---|
263 | }; |
---|
264 | |
---|
265 | static ambapp_device_name CONTRIB_devices[] = |
---|
266 | { |
---|
267 | {CONTRIB_CORE1, "CORE1"}, |
---|
268 | {CONTRIB_CORE2, "CORE2"}, |
---|
269 | {0, NULL} |
---|
270 | }; |
---|
271 | |
---|
272 | static ambapp_device_name EONIC_devices[] = |
---|
273 | { |
---|
274 | {0, NULL} |
---|
275 | }; |
---|
276 | |
---|
277 | static ambapp_device_name RADIONOR_devices[] = |
---|
278 | { |
---|
279 | {0, NULL} |
---|
280 | }; |
---|
281 | |
---|
282 | static ambapp_device_name GLEICHMANN_devices[] = |
---|
283 | { |
---|
284 | {GLEICHMANN_CUSTOM, "CUSTOM"}, |
---|
285 | {GLEICHMANN_GEOLCD01, "GEOLCD01"}, |
---|
286 | {GLEICHMANN_DAC, "DAC"}, |
---|
287 | {GLEICHMANN_HPI, "HPI"}, |
---|
288 | {GLEICHMANN_SPI, "SPI"}, |
---|
289 | {GLEICHMANN_HIFC, "HIFC"}, |
---|
290 | {GLEICHMANN_ADCDAC, "ADCDAC"}, |
---|
291 | {GLEICHMANN_SPIOC, "SPIOC"}, |
---|
292 | {GLEICHMANN_AC97, "AC97"}, |
---|
293 | {0, NULL} |
---|
294 | }; |
---|
295 | |
---|
296 | static ambapp_device_name MENTA_devices[] = |
---|
297 | { |
---|
298 | {0, NULL} |
---|
299 | }; |
---|
300 | |
---|
301 | static ambapp_device_name SUN_devices[] = |
---|
302 | { |
---|
303 | {SUN_T1, "SUN_T1"}, |
---|
304 | {SUN_S1, "SUN_S1"}, |
---|
305 | {0, NULL} |
---|
306 | }; |
---|
307 | |
---|
308 | static ambapp_device_name MOVIDIA_devices[] = |
---|
309 | { |
---|
310 | {0, NULL} |
---|
311 | }; |
---|
312 | |
---|
313 | static ambapp_device_name ORBITA_devices[] = |
---|
314 | { |
---|
315 | {ORBITA_1553B, "1553B"}, |
---|
316 | {ORBITA_429, "429"}, |
---|
317 | {ORBITA_SPI, "SPI"}, |
---|
318 | {ORBITA_I2C, "I2C"}, |
---|
319 | {ORBITA_SMARTCARD, "SMARTCARD"}, |
---|
320 | {ORBITA_SDCARD, "SDCARD"}, |
---|
321 | {ORBITA_UART16550, "UART16550"}, |
---|
322 | {ORBITA_CRYPTO, "CRYPTO"}, |
---|
323 | {ORBITA_SYSIF, "SYSIF"}, |
---|
324 | {ORBITA_PIO, "PIO"}, |
---|
325 | {ORBITA_RTC, "RTC"}, |
---|
326 | {ORBITA_COLORLCD, "COLORLCD"}, |
---|
327 | {ORBITA_PCI, "PCI"}, |
---|
328 | {ORBITA_DSP, "DSP"}, |
---|
329 | {ORBITA_USBHOST, "USBHOST"}, |
---|
330 | {ORBITA_USBDEV, "USBDEV"}, |
---|
331 | {0, NULL} |
---|
332 | }; |
---|
333 | |
---|
334 | static ambapp_device_name SYNOPSYS_devices[] = |
---|
335 | { |
---|
336 | {0, NULL} |
---|
337 | }; |
---|
338 | |
---|
339 | static ambapp_device_name NASA_devices[] = |
---|
340 | { |
---|
341 | {NASA_EP32, "EP32"}, |
---|
342 | {0, NULL} |
---|
343 | }; |
---|
344 | |
---|
345 | static ambapp_device_name CAL_devices[] = |
---|
346 | { |
---|
347 | {CAL_DDRCTRL, "DDRCTRL"}, |
---|
348 | {0, NULL} |
---|
349 | }; |
---|
350 | |
---|
351 | static ambapp_device_name EMBEDDIT_devices[] = |
---|
352 | { |
---|
353 | {0, NULL} |
---|
354 | }; |
---|
355 | |
---|
356 | static ambapp_device_name CETON_devices[] = |
---|
357 | { |
---|
358 | {0, NULL} |
---|
359 | }; |
---|
360 | |
---|
361 | static ambapp_device_name ACTEL_devices[] = |
---|
362 | { |
---|
363 | {ACTEL_COREMP7, "COREMP7"}, |
---|
364 | {0, NULL} |
---|
365 | }; |
---|
366 | |
---|
367 | static ambapp_vendor_devnames vendors[] = |
---|
368 | { |
---|
369 | {VENDOR_GAISLER, "GAISLER", GAISLER_devices}, |
---|
370 | {VENDOR_PENDER, "PENDER", PENDER_devices}, |
---|
371 | {VENDOR_ESA, "ESA", ESA_devices}, |
---|
372 | {VENDOR_ASTRIUM, "ASTRIUM", ASTRIUM_devices}, |
---|
373 | {VENDOR_OPENCHIP, "OPENCHIP", OPENCHIP_devices}, |
---|
374 | {VENDOR_OPENCORES, "OPENCORES", OPENCORES_devices}, |
---|
375 | {VENDOR_CONTRIB, "CONTRIB", CONTRIB_devices}, |
---|
376 | {VENDOR_EONIC, "EONIC", EONIC_devices}, |
---|
377 | {VENDOR_RADIONOR, "RADIONOR", RADIONOR_devices}, |
---|
378 | {VENDOR_GLEICHMANN, "GLEICHMANN", GLEICHMANN_devices}, |
---|
379 | {VENDOR_MENTA, "MENTA", MENTA_devices}, |
---|
380 | {VENDOR_SUN, "SUN", SUN_devices}, |
---|
381 | {VENDOR_MOVIDIA, "MOVIDIA", MOVIDIA_devices}, |
---|
382 | {VENDOR_ORBITA, "ORBITA", ORBITA_devices}, |
---|
383 | {VENDOR_SYNOPSYS, "SYNOPSYS", SYNOPSYS_devices}, |
---|
384 | {VENDOR_NASA, "NASA", NASA_devices}, |
---|
385 | {VENDOR_CAL, "CAL", CAL_devices}, |
---|
386 | {VENDOR_EMBEDDIT, "EMBEDDIT", EMBEDDIT_devices}, |
---|
387 | {VENDOR_CETON, "CETON", CETON_devices}, |
---|
388 | {VENDOR_ACTEL, "ACTEL", ACTEL_devices}, |
---|
389 | {0, NULL, NULL} |
---|
390 | }; |
---|
391 | |
---|
392 | /*****************************************************************/ |
---|
393 | |
---|
394 | static char *ambapp_get_devname(ambapp_device_name *devs, int id) |
---|
395 | { |
---|
396 | while (devs->device_id > 0) { |
---|
397 | if (devs->device_id == id) |
---|
398 | return devs->name; |
---|
399 | devs++; |
---|
400 | } |
---|
401 | return NULL; |
---|
402 | } |
---|
403 | |
---|
404 | char *ambapp_device_id2str(int vendor, int id) |
---|
405 | { |
---|
406 | ambapp_vendor_devnames *ven = &vendors[0]; |
---|
407 | |
---|
408 | while (ven->vendor_id > 0) { |
---|
409 | if (ven->vendor_id == vendor) |
---|
410 | return ambapp_get_devname(ven->devices, id); |
---|
411 | ven++; |
---|
412 | } |
---|
413 | return NULL; |
---|
414 | } |
---|
415 | |
---|
416 | char *ambapp_vendor_id2str(int vendor) |
---|
417 | { |
---|
418 | ambapp_vendor_devnames *ven = &vendors[0]; |
---|
419 | |
---|
420 | while (ven->vendor_id > 0) { |
---|
421 | if (ven->vendor_id == vendor) |
---|
422 | return ven->name; |
---|
423 | ven++; |
---|
424 | } |
---|
425 | return NULL; |
---|
426 | } |
---|
427 | |
---|
428 | int ambapp_vendev_id2str(int vendor, int id, char *buf) |
---|
429 | { |
---|
430 | char *dstr, *vstr; |
---|
431 | |
---|
432 | *buf = '\0'; |
---|
433 | |
---|
434 | vstr = ambapp_vendor_id2str(vendor); |
---|
435 | if (vstr == NULL) |
---|
436 | return 0; |
---|
437 | |
---|
438 | dstr = ambapp_device_id2str(vendor, id); |
---|
439 | if (dstr == NULL) |
---|
440 | return 0; |
---|
441 | |
---|
442 | strcpy(buf, vstr); |
---|
443 | strcat(buf, "_"); |
---|
444 | strcat(buf, dstr); |
---|
445 | |
---|
446 | return strlen(buf); |
---|
447 | } |
---|