1 /****************************************************************************************************************************************** 2 * 文件名称: usbh_cdc_funct.c 3 * 功能说明: 4 * 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1 5 * 注意事项: 6 * 版本日期: V1.1.0 2020年11月3日 7 * 升级记录: 8 * 9 * 10 ******************************************************************************************************************************************* 11 * @attention 12 * 13 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 14 * REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 15 * FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 16 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN- 17 * -ECTION WITH THEIR PRODUCTS. 18 * 19 * COPYRIGHT 2012 Synwit Technology 20 *******************************************************************************************************************************************/ 21 #include "SWM341.h" 22 #include "usbh_core.h" 23 #include "usbh_cdc_core.h" 24 #include "usbh_cdc_funct.h" 25 26 27 /* wValue for SetControlLineState */ 28 #define CDC_RTS_ACTIVATE 0x0002 29 #define CDC_RTS_DEACTIVATE 0x0000 30 #define CDC_DTR_ACTIVATE 0x0001 31 #define CDC_DTR_DEACTIVATE 0x0000 32 33 34 CDC_LineCoding_t CDC_GetLineCode; 35 CDC_LineCoding_t CDC_SetLineCode; 36 37 38 /****************************************************************************************************************************************** 39 * 函数名称: USBH_CDC_GetLineCoding() 40 * 功能说明: 41 * 输 入: 无 42 * 输 出: 无 43 * 注意事项: 无 44 ******************************************************************************************************************************************/ USBH_CDC_GetLineCoding(USBH_Info_t * phost)45USBH_Status USBH_CDC_GetLineCoding(USBH_Info_t *phost) 46 { 47 phost->Ctrl.setup.bRequestType = USB_REQ_D2H | USB_REQ_CLASS | USB_REQ_TO_INTERFACE; 48 phost->Ctrl.setup.bRequest = CDC_GET_LINE_CODING; 49 phost->Ctrl.setup.wValue = 0; 50 phost->Ctrl.setup.wIndex = 0; 51 phost->Ctrl.setup.wLength = sizeof(CDC_LineCoding_t); 52 53 return USBH_CtrlTransfer(phost, (uint8_t *)&CDC_GetLineCode, sizeof(CDC_LineCoding_t)); 54 } 55 56 57 /****************************************************************************************************************************************** 58 * 函数名称: USBH_CDC_SetLineCoding() 59 * 功能说明: 60 * 输 入: 无 61 * 输 出: 无 62 * 注意事项: 无 63 ******************************************************************************************************************************************/ USBH_CDC_SetLineCoding(USBH_Info_t * phost)64USBH_Status USBH_CDC_SetLineCoding(USBH_Info_t *phost) 65 { 66 phost->Ctrl.setup.bRequestType = USB_REQ_H2D | USB_REQ_CLASS | USB_REQ_TO_INTERFACE; 67 phost->Ctrl.setup.bRequest = CDC_SET_LINE_CODING; 68 phost->Ctrl.setup.wValue = 0; 69 phost->Ctrl.setup.wIndex = 0; 70 phost->Ctrl.setup.wLength = sizeof(CDC_LineCoding_t); 71 72 return USBH_CtrlTransfer(phost, (uint8_t *)&CDC_SetLineCode , sizeof(CDC_LineCoding_t)); 73 } 74 75 76 /****************************************************************************************************************************************** 77 * 函数名称: USBH_CDC_SetControlLine() 78 * 功能说明: 79 * 输 入: 无 80 * 输 出: 无 81 * 注意事项: 无 82 ******************************************************************************************************************************************/ USBH_CDC_SetControlLine(USBH_Info_t * phost)83USBH_Status USBH_CDC_SetControlLine(USBH_Info_t *phost) 84 { 85 phost->Ctrl.setup.bRequestType = USB_REQ_H2D | USB_REQ_CLASS | USB_REQ_TO_INTERFACE; 86 phost->Ctrl.setup.bRequest = CDC_SET_CONTROL_LINE; 87 phost->Ctrl.setup.wValue = CDC_RTS_DEACTIVATE | CDC_DTR_DEACTIVATE; 88 phost->Ctrl.setup.wIndex = 0; 89 phost->Ctrl.setup.wLength = 0; 90 91 return USBH_CtrlTransfer(phost, 0 , 0); 92 } 93 94 95 /****************************************************************************************************************************************** 96 * 函数名称: USBH_CDC_IssueSetLineCoding() 97 * 功能说明: 98 * 输 入: 无 99 * 输 出: 无 100 * 注意事项: 无 101 ******************************************************************************************************************************************/ USBH_CDC_IssueSetLineCoding(USBH_Info_t * phost)102void USBH_CDC_IssueSetLineCoding(USBH_Info_t *phost) 103 { 104 USBH_CDC_Info.reqState = CDC_SET_LINE_CODING; 105 106 phost->StateBkp = phost->State; 107 phost->State = HOST_CLASS_REQUEST; 108 } 109 110 111 /****************************************************************************************************************************************** 112 * 函数名称: USBH_CDC_IssueGetLineCoding() 113 * 功能说明: 114 * 输 入: 无 115 * 输 出: 无 116 * 注意事项: 无 117 ******************************************************************************************************************************************/ USBH_CDC_IssueGetLineCoding(USBH_Info_t * phost)118void USBH_CDC_IssueGetLineCoding(USBH_Info_t *phost) 119 { 120 USBH_CDC_Info.reqState = CDC_GET_LINE_CODING; 121 122 phost->StateBkp = phost->State; 123 phost->State = HOST_CLASS_REQUEST; 124 } 125