38 #include "avrmalloc.h" 56 void usb_port_wr (
char *name, uint8_t val);
57 uint8_t usb_port_rd (
char *name);
65 static void usbi_add_addr (VDevice *vdev,
int addr,
char *name,
int rel_addr,
67 static uint8_t usb_intr_read (VDevice *dev,
int addr);
68 static void usb_intr_write (VDevice *dev,
int addr, uint8_t val);
69 static void usb_intr_reset (VDevice *dev);
70 static char *usb_intr_reg_name (VDevice *dev,
int addr);
80 uint8_t *data_ptr = (uint8_t *) data;
82 return (VDevice *)usb_intr_new (addr, name, (uint8_t) * data_ptr);
84 avr_error (
"Attempted USB interrupt create with NULL data pointer");
89 usb_intr_new (
int addr,
char *name, uint8_t func_mask)
109 usb_intr_reset, usbi_add_addr);
111 usb->func_mask = func_mask;
112 usbi_add_addr ((VDevice *)usb, addr, name, 0, NULL);
113 usb_intr_reset ((VDevice *)usb);
117 usbi_add_addr (VDevice *vdev,
int addr,
char *name,
int rel_addr,
void *data)
119 USBInter_T *usb = (USBInter_T *)vdev;
121 if (strncmp (
"UIER", name, 4) == 0)
123 usb->uier_addr = addr;
126 else if (strncmp (
"UIAR", name, 4) == 0)
128 usb->uiar_addr = addr;
131 else if (strncmp (
"UIMSK", name, 5) == 0)
133 usb->uimsk_addr = addr;
136 else if (strncmp (
"UISR", name, 4) == 0)
138 usb->uisr_addr = addr;
141 else if (strncmp (
"SPRSMSK", name, 7) == 0)
143 usb->sprsmsk_addr = addr;
146 else if (strncmp (
"SPRSIE", name, 6) == 0)
148 usb->sprsie_addr = addr;
151 else if (strncmp (
"SPRSR", name, 5) == 0)
153 usb->sprsr_addr = addr;
156 else if (strncmp (
"GLB_STATE", name, 9) == 0)
158 usb->glb_state_addr = addr;
161 else if (strncmp (
"FRM_NUM_L", name, 9) == 0)
163 usb->frm_num_l_addr = addr;
166 else if (strncmp (
"FRM_NUM_H", name, 9) == 0)
168 usb->frm_num_h_addr = addr;
173 avr_error (
"invalid USB Int register name: '%s' @ 0x%04x", name,
190 usb_intr_read (VDevice *dev,
int addr)
192 USBInter_T *usb = (USBInter_T *)dev;
194 if (addr == usb->uier_addr)
196 else if (addr == usb->uimsk_addr)
198 else if (addr == usb->uisr_addr)
200 usb_port_rd (usb_intr_reg_name ((VDevice *)usb, addr)));
201 else if (addr == usb->sprsie_addr)
202 return (usb->sprsie);
203 else if (addr == usb->sprsr_addr)
205 usb_port_rd (usb_intr_reg_name ((VDevice *)usb, addr)));
206 else if (addr == usb->glb_state_addr)
207 return (usb->glb_state);
208 else if (addr == usb->frm_num_l_addr)
209 return (usb->frm_num_l);
210 else if (addr == usb->frm_num_h_addr)
211 return (usb->frm_num_h);
212 else if (addr == usb->sprsmsk_addr)
213 return (usb->sprsmsk);
221 usb_intr_write (VDevice *dev,
int addr, uint8_t val)
223 USBInter_T *usb = (USBInter_T *)dev;
225 if (addr == usb->uier_addr)
227 else if (addr == usb->uimsk_addr)
229 else if (addr == usb->sprsmsk_addr)
230 (usb->sprsmsk = val);
231 else if (addr == usb->sprsie_addr)
233 else if (addr == usb->uiar_addr)
235 else if (addr == usb->glb_state_addr)
236 (usb->glb_state = val);
237 else if (addr == usb->frm_num_l_addr)
238 (usb->frm_num_l = val);
239 else if (addr == usb->frm_num_h_addr)
240 (usb->frm_num_h = val);
246 usb_intr_reset (VDevice *dev)
248 USBInter_T *usb = (USBInter_T *)dev;
255 usb_intr_reg_name (VDevice *dev,
int addr)
257 USBInter_T *usb = (USBInter_T *)dev;
259 if (addr == usb->uier_addr)
261 else if (addr == usb->uimsk_addr)
263 else if (addr == usb->uisr_addr)
265 else if (addr == usb->sprsie_addr)
267 else if (addr == usb->sprsr_addr)
269 else if (addr == usb->glb_state_addr)
270 return (
"GLB_STATE");
271 else if (addr == usb->frm_num_l_addr)
272 return (
"FRM_NUM_L");
273 else if (addr == usb->frm_num_h_addr)
274 return (
"FRM_NUM_H");
275 else if (addr == usb->sprsmsk_addr)
277 else if (addr == usb->uiar_addr)
291 static void usb_add_addr (VDevice *vdev,
int addr,
char *name,
int rel_addr,
293 static uint8_t usb_read (VDevice *dev,
int addr);
294 static void usb_write (VDevice *dev,
int addr, uint8_t val);
295 static void usb_reset (VDevice *dev);
296 static char *usb_reg_name (VDevice *dev,
int addr);
303 return (VDevice *)usb_new (addr, name);
307 usb_new (
int addr,
char *name)
329 usb_add_addr ((VDevice *)usb, addr, name, 0, NULL);
330 usb_reset ((VDevice *)usb);
334 usb_add_addr (VDevice *vdev,
int addr,
char *name,
int rel_addr,
void *data)
336 USB_T *usb = (USB_T *)vdev;
338 if (strncmp (
"FCAR5", name, 5) == 0)
339 usb->fcar5_addr = addr;
340 else if (strncmp (
"FCAR4", name, 5) == 0)
341 usb->fcar4_addr = addr;
342 else if (strncmp (
"FCAR3", name, 5) == 0)
343 usb->fcar3_addr = addr;
344 else if (strncmp (
"FCAR2", name, 5) == 0)
345 usb->fcar2_addr = addr;
346 else if (strncmp (
"FCAR1", name, 5) == 0)
347 usb->fcar1_addr = addr;
348 else if (strncmp (
"FCAR0", name, 5) == 0)
349 usb->fcar0_addr = addr;
350 else if (strncmp (
"HCAR0", name, 5) == 0)
351 usb->hcar0_addr = addr;
352 else if (strncmp (
"PSTATE1", name, 7) == 0)
353 usb->pstate1_addr = addr;
354 else if (strncmp (
"PSTATE2", name, 7) == 0)
355 usb->pstate2_addr = addr;
356 else if (strncmp (
"PSTATE3", name, 7) == 0)
357 usb->pstate3_addr = addr;
358 else if (strncmp (
"PSTATE4", name, 7) == 0)
359 usb->pstate4_addr = addr;
360 else if (strncmp (
"PSTATE5", name, 7) == 0)
361 usb->pstate5_addr = addr;
362 else if (strncmp (
"PSTATE6", name, 7) == 0)
363 usb->pstate6_addr = addr;
364 else if (strncmp (
"PSTATE7", name, 7) == 0)
365 usb->pstate7_addr = addr;
366 else if (strncmp (
"PSTATE8", name, 7) == 0)
367 usb->pstate8_addr = addr;
368 else if (strncmp (
"HPSCR1", name, 6) == 0)
369 usb->hpscr1_addr = addr;
370 else if (strncmp (
"HPSCR2", name, 6) == 0)
371 usb->hpscr2_addr = addr;
372 else if (strncmp (
"HPSCR3", name, 6) == 0)
373 usb->hpscr3_addr = addr;
374 else if (strncmp (
"HPSCR4", name, 6) == 0)
375 usb->hpscr4_addr = addr;
376 else if (strncmp (
"HPSCR5", name, 6) == 0)
377 usb->hpscr5_addr = addr;
378 else if (strncmp (
"HPSCR6", name, 6) == 0)
379 usb->hpscr6_addr = addr;
380 else if (strncmp (
"HPSCR7", name, 6) == 0)
381 usb->hpscr7_addr = addr;
382 else if (strncmp (
"HPSCR8", name, 6) == 0)
383 usb->hpscr8_addr = addr;
384 else if (strncmp (
"HPSTAT1", name, 7) == 0)
385 usb->hpstat1_addr = addr;
386 else if (strncmp (
"HPSTAT2", name, 7) == 0)
387 usb->hpstat2_addr = addr;
388 else if (strncmp (
"HPSTAT3", name, 7) == 0)
389 usb->hpstat3_addr = addr;
390 else if (strncmp (
"HPSTAT4", name, 7) == 0)
391 usb->hpstat4_addr = addr;
392 else if (strncmp (
"HPSTAT5", name, 7) == 0)
393 usb->hpstat5_addr = addr;
394 else if (strncmp (
"HPSTAT6", name, 7) == 0)
395 usb->hpstat6_addr = addr;
396 else if (strncmp (
"HPSTAT7", name, 7) == 0)
397 usb->hpstat7_addr = addr;
398 else if (strncmp (
"HPSTAT8", name, 7) == 0)
399 usb->hpstat8_addr = addr;
400 else if (strncmp (
"HPCON", name, 5) == 0)
401 usb->hpcon_addr = addr;
402 else if (strncmp (
"HSTR", name, 4) == 0)
403 usb->hstr_addr = addr;
404 else if (strncmp (
"FBYTE_CNT5", name, 10) == 0)
405 usb->fbyte_cnt5_addr = addr;
406 else if (strncmp (
"FBYTE_CNT4", name, 10) == 0)
407 usb->fbyte_cnt4_addr = addr;
408 else if (strncmp (
"FBYTE_CNT3", name, 10) == 0)
409 usb->fbyte_cnt3_addr = addr;
410 else if (strncmp (
"FBYTE_CNT2", name, 10) == 0)
411 usb->fbyte_cnt2_addr = addr;
412 else if (strncmp (
"FBYTE_CNT1", name, 10) == 0)
413 usb->fbyte_cnt1_addr = addr;
414 else if (strncmp (
"FBYTE_CNT0", name, 10) == 0)
415 usb->fbyte_cnt0_addr = addr;
416 else if (strncmp (
"HBYTE_CNT0", name, 10) == 0)
417 usb->hbyte_cnt0_addr = addr;
418 else if (strncmp (
"FDR5", name, 4) == 0)
419 usb->fdr5_addr = addr;
420 else if (strncmp (
"FDR4", name, 4) == 0)
421 usb->fdr4_addr = addr;
422 else if (strncmp (
"FDR3", name, 4) == 0)
423 usb->fdr3_addr = addr;
424 else if (strncmp (
"FDR2", name, 4) == 0)
425 usb->fdr2_addr = addr;
426 else if (strncmp (
"FDR1", name, 4) == 0)
427 usb->fdr1_addr = addr;
428 else if (strncmp (
"FDR0", name, 4) == 0)
429 usb->fdr0_addr = addr;
430 else if (strncmp (
"HDR0", name, 4) == 0)
431 usb->hdr0_addr = addr;
432 else if (strncmp (
"FCSR5", name, 5) == 0)
433 usb->fcsr5_addr = addr;
434 else if (strncmp (
"FCSR4", name, 5) == 0)
435 usb->fcsr4_addr = addr;
436 else if (strncmp (
"FCSR3", name, 5) == 0)
437 usb->fcsr3_addr = addr;
438 else if (strncmp (
"FCSR2", name, 5) == 0)
439 usb->fcsr2_addr = addr;
440 else if (strncmp (
"FCSR1", name, 5) == 0)
441 usb->fcsr1_addr = addr;
442 else if (strncmp (
"FCSR0", name, 5) == 0)
443 usb->fcsr0_addr = addr;
444 else if (strncmp (
"HCSR0", name, 5) == 0)
445 usb->hcsr0_addr = addr;
446 else if (strncmp (
"FENDP5_CNTR", name, 11) == 0)
447 usb->fendp5_cntr_addr = addr;
448 else if (strncmp (
"FENDP4_CNTR", name, 11) == 0)
449 usb->fendp4_cntr_addr = addr;
450 else if (strncmp (
"FENDP3_CNTR", name, 11) == 0)
451 usb->fendp3_cntr_addr = addr;
452 else if (strncmp (
"FENDP2_CNTR", name, 11) == 0)
453 usb->fendp2_cntr_addr = addr;
454 else if (strncmp (
"FENDP1_CNTR", name, 11) == 0)
455 usb->fendp1_cntr_addr = addr;
456 else if (strncmp (
"FENDP0_CNTR", name, 11) == 0)
457 usb->fendp0_cntr_addr = addr;
458 else if (strncmp (
"HENDP1_CNTR", name, 11) == 0)
459 usb->hendp1_cntr_addr = addr;
460 else if (strncmp (
"HENDP0_CNTR", name, 11) == 0)
461 usb->hendp0_cntr_addr = addr;
462 else if (strncmp (
"FADDR", name, 5) == 0)
463 usb->faddr_addr = addr;
464 else if (strncmp (
"HADDR", name, 5) == 0)
465 usb->haddr_addr = addr;
466 else if (strncmp (
"ISCR", name, 4) == 0)
467 usb->iscr_addr = addr;
468 else if (strncmp (
"UOVCER", name, 6) == 0)
469 usb->uovcer_addr = addr;
472 avr_error (
"invalid USB Int register name: '%s' @ 0x%04x", name,
489 usb_read (VDevice *dev,
int addr)
491 USB_T *usb = (USB_T *)dev;
493 if (addr == usb->uovcer_addr)
495 else if (addr == usb->haddr_addr)
497 else if (addr == usb->faddr_addr)
499 else if (addr == usb->hstr_addr)
501 else if (addr == usb->hpcon_addr)
503 else if (addr == usb->iscr_addr)
505 else if (addr == usb->fendp5_cntr_addr)
506 return usb->fendp5_cntr;
507 else if (addr == usb->fendp4_cntr_addr)
508 return usb->fendp4_cntr;
509 else if (addr == usb->fendp3_cntr_addr)
510 return usb->fendp3_cntr;
511 else if (addr == usb->fendp2_cntr_addr)
512 return usb->fendp2_cntr;
513 else if (addr == usb->fendp1_cntr_addr)
514 return usb->fendp1_cntr;
515 else if (addr == usb->fendp0_cntr_addr)
516 return usb->fendp0_cntr;
517 else if (addr == usb->hendp1_cntr_addr)
518 return usb->hendp1_cntr;
519 else if (addr == usb->hendp0_cntr_addr)
520 return usb->hendp0_cntr;
521 else if (addr == usb->fcsr5_addr)
522 return usb->fcsr5 = usb_port_rd (usb_reg_name ((VDevice *)usb, addr));
523 else if (addr == usb->fcsr4_addr)
524 return usb->fcsr4 = usb_port_rd (usb_reg_name ((VDevice *)usb, addr));
525 else if (addr == usb->fcsr3_addr)
526 return usb->fcsr3 = usb_port_rd (usb_reg_name ((VDevice *)usb, addr));
527 else if (addr == usb->fcsr2_addr)
528 return usb->fcsr2 = usb_port_rd (usb_reg_name ((VDevice *)usb, addr));
529 else if (addr == usb->fcsr1_addr)
530 return usb->fcsr1 = usb_port_rd (usb_reg_name ((VDevice *)usb, addr));
531 else if (addr == usb->fcsr0_addr)
533 usb->fcsr0 = usb_port_rd (usb_reg_name ((VDevice *)usb, addr));
534 if (usb->fcsr0 & RX_SETUP)
535 usb->fbyte_cnt0 = 10;
538 else if (addr == usb->hcsr0_addr)
540 usb->hcsr0 = usb_port_rd (usb_reg_name ((VDevice *)usb, addr));
541 if (usb->hcsr0 & RX_SETUP)
542 usb->hbyte_cnt0 = 10;
545 else if (addr == usb->fcar5_addr)
547 else if (addr == usb->fcar4_addr)
549 else if (addr == usb->fcar3_addr)
551 else if (addr == usb->fcar2_addr)
553 else if (addr == usb->fcar1_addr)
555 else if (addr == usb->fcar0_addr)
557 else if (addr == usb->hcar0_addr)
559 else if (addr == usb->hpstat1_addr)
561 else if (addr == usb->hpstat2_addr)
563 else if (addr == usb->hpstat3_addr)
565 else if (addr == usb->hpstat4_addr)
567 else if (addr == usb->hpstat5_addr)
569 else if (addr == usb->hpstat6_addr)
571 else if (addr == usb->hpstat7_addr)
573 else if (addr == usb->hpstat8_addr)
575 else if (addr == usb->pstate1_addr)
577 else if (addr == usb->pstate2_addr)
579 else if (addr == usb->pstate3_addr)
581 else if (addr == usb->pstate4_addr)
583 else if (addr == usb->pstate5_addr)
585 else if (addr == usb->pstate6_addr)
587 else if (addr == usb->pstate7_addr)
589 else if (addr == usb->pstate8_addr)
591 else if (addr == usb->hpscr1_addr)
593 else if (addr == usb->hpscr2_addr)
595 else if (addr == usb->hpscr3_addr)
597 else if (addr == usb->hpscr4_addr)
599 else if (addr == usb->hpscr5_addr)
601 else if (addr == usb->hpscr6_addr)
603 else if (addr == usb->hpscr7_addr)
605 else if (addr == usb->hpscr8_addr)
607 else if (addr == usb->fbyte_cnt5_addr)
608 return usb->fbyte_cnt5;
609 else if (addr == usb->fbyte_cnt4_addr)
610 return usb->fbyte_cnt4;
611 else if (addr == usb->fbyte_cnt3_addr)
612 return usb->fbyte_cnt3;
613 else if (addr == usb->fbyte_cnt2_addr)
614 return usb->fbyte_cnt2;
615 else if (addr == usb->fbyte_cnt1_addr)
616 return usb->fbyte_cnt1;
617 else if (addr == usb->fbyte_cnt0_addr)
618 return usb->fbyte_cnt0;
619 else if (addr == usb->hbyte_cnt0_addr)
620 return usb->hbyte_cnt0;
621 else if (addr == usb->fdr5_addr)
622 return usb->fdr5 = usb_port_rd (usb_reg_name ((VDevice *)usb, addr));
623 else if (addr == usb->fdr4_addr)
624 return usb->fdr4 = usb_port_rd (usb_reg_name ((VDevice *)usb, addr));
625 else if (addr == usb->fdr3_addr)
626 return usb->fdr3 = usb_port_rd (usb_reg_name ((VDevice *)usb, addr));
627 else if (addr == usb->fdr2_addr)
628 return usb->fdr2 = usb_port_rd (usb_reg_name ((VDevice *)usb, addr));
629 else if (addr == usb->fdr1_addr)
630 return usb->fdr1 = usb_port_rd (usb_reg_name ((VDevice *)usb, addr));
631 else if (addr == usb->fdr0_addr)
632 return usb->fdr0 = usb_port_rd (usb_reg_name ((VDevice *)usb, addr));
633 else if (addr == usb->hdr0_addr)
634 return usb->hdr0 = usb_port_rd (usb_reg_name ((VDevice *)usb, addr));
641 usb_write (VDevice *dev,
int addr, uint8_t val)
643 USB_T *usb = (USB_T *)dev;
645 if (addr == usb->uovcer_addr)
647 else if (addr == usb->haddr_addr)
649 else if (addr == usb->faddr_addr)
651 else if (addr == usb->hstr_addr)
653 else if (addr == usb->hpcon_addr)
655 else if (addr == usb->fendp5_cntr_addr)
656 usb->fendp5_cntr = val;
657 else if (addr == usb->fendp4_cntr_addr)
658 usb->fendp4_cntr = val;
659 else if (addr == usb->fendp3_cntr_addr)
660 usb->fendp3_cntr = val;
661 else if (addr == usb->fendp2_cntr_addr)
662 usb->fendp2_cntr = val;
663 else if (addr == usb->fendp1_cntr_addr)
664 usb->fendp1_cntr = val;
665 else if (addr == usb->fendp0_cntr_addr)
666 usb->fendp0_cntr = val;
667 else if (addr == usb->hendp1_cntr_addr)
668 usb->hendp1_cntr = val;
669 else if (addr == usb->hendp0_cntr_addr)
670 usb->hendp0_cntr = val;
671 else if (addr == usb->fcar5_addr)
675 (usb->fbyte_cnt5) = 0;
677 else if (addr == usb->fcar4_addr)
681 (usb->fbyte_cnt4) = 0;
683 else if (addr == usb->fcar3_addr)
687 (usb->fbyte_cnt3) = 0;
689 else if (addr == usb->fcar2_addr)
693 (usb->fbyte_cnt2) = 0;
695 else if (addr == usb->fcar1_addr)
699 (usb->fbyte_cnt1) = 0;
701 else if (addr == usb->fcar0_addr)
705 (usb->fbyte_cnt0) = 0;
707 else if (addr == usb->hcar0_addr)
711 (usb->hbyte_cnt0) = 0;
713 else if (addr == usb->fdr5_addr)
717 usb_port_wr (usb_reg_name ((VDevice *)usb, addr), val);
719 else if (addr == usb->fdr4_addr)
723 usb_port_wr (usb_reg_name ((VDevice *)usb, addr), val);
725 else if (addr == usb->fdr3_addr)
729 usb_port_wr (usb_reg_name ((VDevice *)usb, addr), val);
731 else if (addr == usb->fdr2_addr)
735 usb_port_wr (usb_reg_name ((VDevice *)usb, addr), val);
737 else if (addr == usb->fdr1_addr)
741 usb_port_wr (usb_reg_name ((VDevice *)usb, addr), val);
743 else if (addr == usb->fdr0_addr)
747 usb_port_wr (usb_reg_name ((VDevice *)usb, addr), val);
749 else if (addr == usb->hdr0_addr)
753 usb_port_wr (usb_reg_name ((VDevice *)usb, addr), val);
760 usb_reset (VDevice *dev)
762 USB_T *usb = (USB_T *)dev;
774 usb_reg_name (VDevice *dev,
int addr)
776 USB_T *usb = (USB_T *)dev;
778 if (addr == usb->fcar5_addr)
780 else if (addr == usb->fcar4_addr)
782 else if (addr == usb->fcar3_addr)
784 else if (addr == usb->fcar2_addr)
786 else if (addr == usb->fcar1_addr)
788 else if (addr == usb->fcar0_addr)
790 else if (addr == usb->hcar0_addr)
792 else if (addr == usb->pstate1_addr)
794 else if (addr == usb->pstate2_addr)
796 else if (addr == usb->pstate3_addr)
798 else if (addr == usb->pstate4_addr)
800 else if (addr == usb->pstate5_addr)
802 else if (addr == usb->pstate6_addr)
804 else if (addr == usb->pstate7_addr)
806 else if (addr == usb->pstate8_addr)
808 else if (addr == usb->hpscr1_addr)
810 else if (addr == usb->hpscr2_addr)
812 else if (addr == usb->hpscr3_addr)
814 else if (addr == usb->hpscr4_addr)
816 else if (addr == usb->hpscr5_addr)
818 else if (addr == usb->hpscr6_addr)
820 else if (addr == usb->hpscr7_addr)
822 else if (addr == usb->hpscr8_addr)
824 else if (addr == usb->hpstat1_addr)
826 else if (addr == usb->hpstat2_addr)
828 else if (addr == usb->hpstat3_addr)
830 else if (addr == usb->hpstat4_addr)
832 else if (addr == usb->hpstat5_addr)
834 else if (addr == usb->hpstat6_addr)
836 else if (addr == usb->hpstat7_addr)
838 else if (addr == usb->hpstat8_addr)
840 else if (addr == usb->hpcon_addr)
842 else if (addr == usb->hstr_addr)
844 else if (addr == usb->fbyte_cnt5_addr)
846 else if (addr == usb->fbyte_cnt4_addr)
848 else if (addr == usb->fbyte_cnt3_addr)
850 else if (addr == usb->fbyte_cnt2_addr)
852 else if (addr == usb->fbyte_cnt1_addr)
854 else if (addr == usb->fbyte_cnt0_addr)
856 else if (addr == usb->hbyte_cnt0_addr)
858 else if (addr == usb->fdr5_addr)
860 else if (addr == usb->fdr4_addr)
862 else if (addr == usb->fdr3_addr)
864 else if (addr == usb->fdr2_addr)
866 else if (addr == usb->fdr1_addr)
868 else if (addr == usb->fdr0_addr)
870 else if (addr == usb->hdr0_addr)
872 else if (addr == usb->fcsr5_addr)
874 else if (addr == usb->fcsr4_addr)
876 else if (addr == usb->fcsr3_addr)
878 else if (addr == usb->fcsr2_addr)
880 else if (addr == usb->fcsr1_addr)
882 else if (addr == usb->fcsr0_addr)
884 else if (addr == usb->hcsr0_addr)
886 else if (addr == usb->fendp5_cntr_addr)
887 return "FENDP5_CNTR";
888 else if (addr == usb->fendp4_cntr_addr)
889 return "FENDP4_CNTR";
890 else if (addr == usb->fendp3_cntr_addr)
891 return "FENDP3_CNTR";
892 else if (addr == usb->fendp2_cntr_addr)
893 return "FENDP2_CNTR";
894 else if (addr == usb->fendp1_cntr_addr)
895 return "FENDP1_CNTR";
896 else if (addr == usb->fendp0_cntr_addr)
897 return "FENDP0_CNTR";
898 else if (addr == usb->hendp1_cntr_addr)
899 return "HENDP1_CNTR";
900 else if (addr == usb->hendp0_cntr_addr)
901 return "HENDP0_CNTR";
902 else if (addr == usb->faddr_addr)
904 else if (addr == usb->haddr_addr)
906 else if (addr == usb->iscr_addr)
908 else if (addr == usb->uovcer_addr)
916 usb_port_rd (
char *name)
923 fprintf (stderr,
"\nEnter a byte of hex data to read into %s: ",
927 if (fgets (line,
sizeof (line), stdin) == NULL)
931 if (sscanf (line,
"%x\n", &data) != 1)
936 return (uint8_t) (data & 0xff);
940 usb_port_wr (
char *name, uint8_t val)
942 fprintf (stderr,
"wrote 0x%02x to %s\n", val, name);
#define avr_new(type, count)
Macro for allocating memory.
void usb_construct(USB_T *usb, int addr, char *name)
Constructor for new USB object.
void usb_intr_destroy(void *usb)
Destructor for usb interrupt object.
void vdev_destroy(void *dev)
Destructor for a VDevice.
VDevice * usbi_create(int addr, char *name, int rel_addr, void *data)
Allocate a new USB interrupt.
void usb_destroy(void *usb)
Destructor for USB object.
void vdev_construct(VDevice *dev, VDevFP_Read rd, VDevFP_Write wr, VDevFP_Reset reset, VDevFP_AddAddr add_addr)
Constructor for a VDevice.
VDevice * usb_create(int addr, char *name, int rel_addr, void *data)
Allocate a new USB structure.
#define avr_error(fmt, args...)
Print an error message to stderr and terminate program.
void usb_intr_construct(USBInter_T *usb, int addr, char *name, uint8_t func_mask)
Constructor for usb interrupt object.
void class_overload_destroy(AvrClass *klass, AvrClassFP_Destroy destroy)
Overload the default destroy method.