aboutsummaryrefslogtreecommitdiffstats
path: root/libmaple/usb/usb.h
blob: 66e820c373be80d71bac92570849c087d7909a5c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/* insert license */

#ifndef __USB_H
#define __USB_H


#include "usb_lib.h"
#include "libmaple.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef enum 
  {
    RESUME_EXTERNAL,
    RESUME_INTERNAL,
    RESUME_LATER,
    RESUME_WAIT,
    RESUME_START,
    RESUME_ON,
    RESUME_OFF,
    RESUME_ESOF
  } RESUME_STATE;

typedef enum 
  {
    UNCONNECTED,
    ATTACHED,
    POWERED,
    SUSPENDED,
    ADDRESSED,
    CONFIGURED
  } DEVICE_STATE;

  extern volatile uint32 bDeviceState;

  void setupUSB(void);
  void usbSuspend(void);
  void usbResumeInit(void);
  void usbResume(RESUME_STATE);
  
  RESULT usbPowerOn(void);
  RESULT usbPowerOff(void);
  
  void usbDsbISR(void);
  void usbEnbISR(void);

  /* overloaded ISR routine, this is the main usb ISR */
  void usb_lpIRQHandler(void);
  void usbWaitReset(void);

  /* blocking functions for send/receive */
  uint16 usbSendBytes(uint8* sendBuf,uint16 len);
  uint8 usbBytesAvailable(void);
  uint8 usbReceiveBytes(uint8* recvBuf, uint8 len);
  uint8 usbGetDTR(void);
  uint8 usbGetRTS(void);
  uint16 usbGetPending(void);

  void usbSendHello(void);


#ifdef __cplusplus
} // extern "C"
#endif

#endif //_USB_H