Skip to content

Commit c196a2e

Browse files
committed
move code around
1 parent 98781bb commit c196a2e

File tree

1 file changed

+49
-45
lines changed

1 file changed

+49
-45
lines changed

src/class/cdc/cdc_host.c

Lines changed: 49 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1223,46 +1223,12 @@ static void cp210x_process_config(tuh_xfer_t* xfer) {
12231223

12241224
#if CFG_TUH_CDC_CH34X
12251225

1226-
enum {
1227-
CONFIG_CH34X_READ_VERSION = 0,
1228-
CONFIG_CH34X_SERIAL_INIT,
1229-
CONFIG_CH34X_SPECIAL_REG_WRITE,
1230-
CONFIG_CH34X_FLOW_CONTROL,
1231-
CONFIG_CH34X_MODEM_CONTROL,
1232-
CONFIG_CH34X_COMPLETE
1233-
};
1234-
12351226
static uint8_t ch34x_get_lcr(uint8_t stop_bits, uint8_t parity, uint8_t data_bits);
12361227
static uint16_t ch34x_get_divisor_prescaler(uint32_t baval);
12371228

1238-
static bool ch34x_open(uint8_t daddr, tusb_desc_interface_t const* itf_desc, uint16_t max_len) {
1239-
// CH34x Interface includes 1 vendor interface + 2 bulk + 1 interrupt endpoints
1240-
TU_VERIFY (itf_desc->bNumEndpoints == 3);
1241-
TU_VERIFY (sizeof(tusb_desc_interface_t) + 3 * sizeof(tusb_desc_endpoint_t) <= max_len);
1242-
1243-
cdch_interface_t* p_cdc = make_new_itf(daddr, itf_desc);
1244-
TU_VERIFY (p_cdc);
1245-
1246-
TU_LOG_DRV ("CH34x opened\r\n");
1247-
p_cdc->serial_drid = SERIAL_DRIVER_CH34X;
1248-
1249-
tusb_desc_endpoint_t const* desc_ep = (tusb_desc_endpoint_t const*) tu_desc_next(itf_desc);
1250-
1251-
// data endpoints expected to be in pairs
1252-
TU_ASSERT(open_ep_stream_pair(p_cdc, desc_ep));
1253-
desc_ep += 2;
1254-
1255-
// Interrupt endpoint: not used for now
1256-
TU_ASSERT(TUSB_DESC_ENDPOINT == tu_desc_type(desc_ep) &&
1257-
TUSB_XFER_INTERRUPT == desc_ep->bmAttributes.xfer);
1258-
TU_ASSERT(tuh_edpt_open(daddr, desc_ep));
1259-
p_cdc->ep_notif = desc_ep->bEndpointAddress;
1260-
1261-
return true;
1262-
}
1263-
1229+
//------------- control requestt -------------//
12641230
static bool ch34x_set_request(cdch_interface_t* p_cdc, uint8_t direction, uint8_t request, uint16_t value,
1265-
uint16_t index, uint8_t* buffer, uint16_t length, tuh_xfer_cb_t complete_cb, uintptr_t user_data) {
1231+
uint16_t index, uint8_t* buffer, uint16_t length, tuh_xfer_cb_t complete_cb, uintptr_t user_data) {
12661232
tusb_control_request_t const request_setup = {
12671233
.bmRequestType_bit = {
12681234
.recipient = TUSB_REQ_RCPT_DEVICE,
@@ -1318,6 +1284,17 @@ static bool ch34x_write_reg(cdch_interface_t* p_cdc, uint16_t reg, uint16_t reg_
13181284
// return ch34x_control_in ( p_cdc, CH34X_REQ_READ_REG, reg, 0, buffer, buffersize, complete_cb, user_data );
13191285
//}
13201286

1287+
static bool ch34x_write_reg_baudrate(cdch_interface_t* p_cdc, uint32_t baudrate,
1288+
tuh_xfer_cb_t complete_cb, uintptr_t user_data) {
1289+
uint16_t const div_ps = ch34x_get_divisor_prescaler(baudrate);
1290+
TU_VERIFY(div_ps != 0);
1291+
TU_ASSERT(ch34x_write_reg(p_cdc, CH34X_REG16_DIVISOR_PRESCALER, div_ps,
1292+
complete_cb, user_data));
1293+
return true;
1294+
}
1295+
1296+
//------------- Driver API -------------//
1297+
13211298
// internal control complete to update state such as line state, encoding
13221299
static void ch34x_control_complete(tuh_xfer_t* xfer) {
13231300
// CH34x only has 1 interface and use wIndex as payload and not for bInterfaceNumber
@@ -1339,15 +1316,6 @@ static bool ch34x_set_data_format(cdch_interface_t* p_cdc, uint8_t stop_bits, ui
13391316
return true;
13401317
}
13411318

1342-
static bool ch34x_write_reg_baudrate(cdch_interface_t* p_cdc, uint32_t baudrate,
1343-
tuh_xfer_cb_t complete_cb, uintptr_t user_data) {
1344-
uint16_t const div_ps = ch34x_get_divisor_prescaler(baudrate);
1345-
TU_VERIFY(div_ps != 0);
1346-
TU_ASSERT(ch34x_write_reg(p_cdc, CH34X_REG16_DIVISOR_PRESCALER, div_ps,
1347-
complete_cb, user_data));
1348-
return true;
1349-
}
1350-
13511319
static bool ch34x_set_baudrate(cdch_interface_t* p_cdc, uint32_t baudrate,
13521320
tuh_xfer_cb_t complete_cb, uintptr_t user_data) {
13531321
p_cdc->requested_line_coding.bit_rate = baudrate;
@@ -1432,6 +1400,42 @@ static bool ch34x_set_modem_ctrl(cdch_interface_t* p_cdc, uint16_t line_state,
14321400
return true;
14331401
}
14341402

1403+
//------------- Enumeration -------------//
1404+
enum {
1405+
CONFIG_CH34X_READ_VERSION = 0,
1406+
CONFIG_CH34X_SERIAL_INIT,
1407+
CONFIG_CH34X_SPECIAL_REG_WRITE,
1408+
CONFIG_CH34X_FLOW_CONTROL,
1409+
CONFIG_CH34X_MODEM_CONTROL,
1410+
CONFIG_CH34X_COMPLETE
1411+
};
1412+
1413+
static bool ch34x_open(uint8_t daddr, tusb_desc_interface_t const* itf_desc, uint16_t max_len) {
1414+
// CH34x Interface includes 1 vendor interface + 2 bulk + 1 interrupt endpoints
1415+
TU_VERIFY (itf_desc->bNumEndpoints == 3);
1416+
TU_VERIFY (sizeof(tusb_desc_interface_t) + 3 * sizeof(tusb_desc_endpoint_t) <= max_len);
1417+
1418+
cdch_interface_t* p_cdc = make_new_itf(daddr, itf_desc);
1419+
TU_VERIFY (p_cdc);
1420+
1421+
TU_LOG_DRV ("CH34x opened\r\n");
1422+
p_cdc->serial_drid = SERIAL_DRIVER_CH34X;
1423+
1424+
tusb_desc_endpoint_t const* desc_ep = (tusb_desc_endpoint_t const*) tu_desc_next(itf_desc);
1425+
1426+
// data endpoints expected to be in pairs
1427+
TU_ASSERT(open_ep_stream_pair(p_cdc, desc_ep));
1428+
desc_ep += 2;
1429+
1430+
// Interrupt endpoint: not used for now
1431+
TU_ASSERT(TUSB_DESC_ENDPOINT == tu_desc_type(desc_ep) &&
1432+
TUSB_XFER_INTERRUPT == desc_ep->bmAttributes.xfer);
1433+
TU_ASSERT(tuh_edpt_open(daddr, desc_ep));
1434+
p_cdc->ep_notif = desc_ep->bEndpointAddress;
1435+
1436+
return true;
1437+
}
1438+
14351439
static void ch34x_process_config(tuh_xfer_t* xfer) {
14361440
// CH34x only has 1 interface and use wIndex as payload and not for bInterfaceNumber
14371441
uint8_t const itf_num = 0;

0 commit comments

Comments
 (0)