RT-USB-9AXIS-00
usbTransmission.c
1 /* ------------------------------------------------------------ *
2 File usbTransmission.c
3 
4 USBでの通信用関数群
5 * ------------------------------------------------------------ */
6 #include "type.h"
7 #include "LPC13xx.h"
8 #include "usbTransmission.h"
9 
10 //USB,CDC関連
11 #include "usb.h"
12 #include "usbcfg.h"
13 #include "usbhw.h"
14 #include "usbcore.h"
15 #include "cdc.h"
16 #include "cdcuser.h"
17 
18 //時間待ちタイマー
19 #include "SystemTickTimer.h"
20 #include "debug.h"
21 volatile static uint8_t flag_usb_config = 0; //USBの接続確認用フラグ 1:USB接続は確立済み 0:USB接続は未確立
22 
23 
24 /*----------------------------------------------------------------------------
25  Input void
26  Output void
27 
28  USBからデータを送る
29  *---------------------------------------------------------------------------*/
30 void VCOM_SendData(GETDAT_T dat)
31 {
32  if (dat.num!=0 && CDC_DepInEmpty)
33  { // 1 is empty so if empty
34  CDC_DepInEmpty = 0;
35  USB_WriteEP (CDC_DEP_IN, (unsigned char* )(&dat.d[0]), dat.num);
36  }
37 }
38 /*----------------------------------------------------------------------------
39  Input void
40  Output void
41 
42  VCOM_SendData()を呼んだ直後に呼ぶこと
43  *---------------------------------------------------------------------------*/
44 void VCOM_CheckState (void)
45 {
46  unsigned short temp;
47  volatile static unsigned short serialState;
48 
49  temp = CDC_GetSerialState();
50  if (serialState != temp)
51  {
52  serialState = temp;
53  CDC_NotificationIn(); // send SERIAL_STATE notification
54  }
55 }
56 /*----------------------------------------------------------------------------
57  Input void
58  Output 0:USBの接続を試みたがタイムアウト 1:USBの接続が確立
59 
60  USBのコンフィギュレーションが完了したら1を返す
61  usbTransmisson.h内のUSB_TIMEOUTでタイムアウト時間を設定
62  USBのコンフィギュレーションがUSB_TIMEOUTmsec以内終わらなければ
63  0を返す.
64  *---------------------------------------------------------------------------*/
65 uint8_t tryUSBConnect(void)
66 {
67  volatile uint16_t count = 0;
68  //PIO0_3ピンの状態 H:USBコネクタが接続されている L:USBコネクタが未接続
69  //USBコネクタが繋がれている場合のみUSB接続を試みる
70  if( ((LPC_GPIO0->DATA & 0x8)>>3))
71  {
72  USB_Connect(1);
73  while (!USB_Configuration){
74  wait1msec(1);
75  count ++;
76  if(count > 6000){
77  flag_usb_config = 0;
78  return 0;
79  };
80  };
81  flag_usb_config = 1;
82  return 1;
83  }
84  else
85  {
86  //USBコネクタが繋がっていないのでPIO0_6ピンをHIGHにする
87  LPC_GPIO0->DATA |= 0x0040;
88  flag_usb_config = 0;
89  return 0;
90  }
91 }
92 /*----------------------------------------------------------------------------
93  Input void
94  Output 0:USBの接続が未確立 1:USBの接続が確立
95 
96   USBの接続が確立しているかを返す
97  *---------------------------------------------------------------------------*/
98 uint8_t isUSBConfig(void)
99 {
100  return flag_usb_config;
101 }
102 
103 
104 /******************************************************************************
105 ** End Of File
106 ******************************************************************************/