PPS APDO和PPS RDO在pps协议中代表什么
时间: 2024-04-03 09:31:51 浏览: 11
很抱歉,我之前回答有误。PPS APDO和PPS RDO并不是PPS协议中的标准缩写词。可能是因为PPS是一个公司名,而APDO和RDO是PPS公司自己定义的产品名称,所以有些人会把它们当成PPS协议的缩写词。但是在标准的通信协议中,没有PPS APDO和PPS RDO这两种协议。请问您还有其他问题吗?
相关问题
充电协议pps中APDO和RDO分别代表什么
很抱歉,我的之前回答有误。事实上,PPS协议中并没有APDO和RDO的概念。这两个缩写词可能是某些厂商自己定义的产品名称,或者是某些论坛或文章中出现的错误信息。PPS协议是一种快速充电协议,可以通过动态调整电压和电流来实现快速充电,但是它没有像USB PD协议中的PDO和PPS概念那样明确的命名。如果您还有其他问题,请随时问我。
static int pd_eval_src_caps(struct usbpd *pd) { int i; union power_supply_propval val; bool pps_found = false; u32 first_pdo = pd->received_pdos[0]; int pdo_select = -1; u32 mv_select = 0, ma_select = 0; if (PD_SRC_PDO_TYPE(first_pdo) != PD_SRC_PDO_TYPE_FIXED) { usbpd_err(&pd->dev, "First src_cap invalid! %08x\n", first_pdo); return -EINVAL; } pd->peer_usb_comm = PD_SRC_PDO_FIXED_USB_COMM(first_pdo); pd->peer_pr_swap = PD_SRC_PDO_FIXED_PR_SWAP(first_pdo); pd->peer_dr_swap = PD_SRC_PDO_FIXED_DR_SWAP(first_pdo); val.intval = PD_SRC_PDO_FIXED_USB_SUSP(first_pdo); power_supply_set_property(pd->usb_psy, POWER_SUPPLY_PROP_PD_USB_SUSPEND_SUPPORTED, &val); /* Check for PPS APDOs */ if (pd->spec_rev == USBPD_REV_30) { for (i = 1; i < PD_MAX_DATA_OBJ; i++) { if ((PD_SRC_PDO_TYPE(pd->received_pdos[i]) == PD_SRC_PDO_TYPE_AUGMENTED) && !PD_APDO_PPS(pd->received_pdos[i])) { pps_found = true; break; } } } val.intval = pps_found ? POWER_SUPPLY_PD_PPS_ACTIVE : POWER_SUPPLY_PD_ACTIVE; power_supply_set_property(pd->usb_psy, POWER_SUPPLY_PROP_PD_ACTIVE, &val); /* First time connecting to a PD source and it supports USB data */ if (pd->peer_usb_comm && pd->current_dr == DR_UFP && !pd->pd_connected) start_usb_peripheral(pd); /* Select the first PDO (vSafe5V) immediately. */ pdo_select = select_match_pdo(pd,&mv_select,&ma_select); if (pdo_select == -1) { usbpd_dbg(&pd->dev, "%s, invaild pdo select\n",__func__); pd_select_pdo(pd, 1, 0, 0); } else { usbpd_dbg(&pd->dev, "%s, pdo_select = %d, mv= %dmV, ma = %dmA\n",__func__,pdo_select + 1,mv_select,ma_select); pd_select_pdo(pd, pdo_select + 1, mv_select * 1000, ma_select * 1000); } return 0; }代码分析
这段代码是一个函数,名为pd_eval_src_caps,接收一个usbpd结构体指针作为参数。这个函数的作用是评估PD源设备的能力,并设置相关的属性。函数中有许多变量和语句,我们逐一来看:
1. 变量i是一个整型变量,用于循环迭代。
2. 变量val是一个power_supply_propval类型的联合体,用于存储电源供应器的属性值。
3. 变量pps_found是一个布尔型变量,表示是否找到了PPS APDO。
4. 变量first_pdo是一个32位无符号整型变量,表示接收到的第一个PDO。
5. 变量pdo_select是一个整型变量,用于选择PDO。
6. 变量mv_select和ma_select是两个整型变量,用于存储所选PDO的电压和电流值。
7. 如果接收到的第一个PDO不是固定类型的,则函数返回错误。
8. 解析第一个PDO的一些属性,并将这些属性存储到usbpd结构体中。
9. 检查是否有PPS APDO,如果有,则设置PD的活动状态为PPS活动状态,否则为PD活动状态。
10. 如果PD支持USB数据,并且当前的数据角色是UFP,则启动USB外设。
11. 选择第一个PDO(vSafe5V),并设置该PDO的电压和电流值。
12. 函数返回0表示执行成功。
总之,这段代码是用于评估PD源设备的能力并设置相关属性的函数,其中包括了一些错误检查和选择PDO的逻辑。