diff --git a/PD_CPS8841H_33W.zip b/PD_CPS8841H_33W.zip new file mode 100644 index 0000000..cd611d2 Binary files /dev/null and b/PD_CPS8841H_33W.zip differ diff --git a/PD_CPS8841H_33W/code/app/src/app_porta.c b/PD_CPS8841H_33W/code/app/src/app_porta.c index 37f04d9..3557234 100644 --- a/PD_CPS8841H_33W/code/app/src/app_porta.c +++ b/PD_CPS8841H_33W/code/app/src/app_porta.c @@ -86,20 +86,12 @@ static void app_porta_detect_work(void) if(attached) { - // 需要判断当前C口走的是什么协议, 再去更新对应的能力. 更新typeC的src_cap - // pd_dpm_update_source_cap(&g_pd_port, &g_pd_port.pd_curr_config->src_cap_info[SRC_CAP_20W], SRC_CAP_20W); - // pd_restart_send_src_cap(&g_pd_port); - usba_plugin_detect_deinit(); usba_plugout_detect_init(); log_info("usba attached\n"); } else { - // 更新typeC的src_cap - // pd_dpm_update_source_cap(&g_pd_port, &g_pd_port.pd_curr_config->src_cap_info[SRC_CAP_30W], SRC_CAP_30W); - // pd_restart_send_src_cap(&g_pd_port); - usba_plugout_detect_deinit(); usba_plugin_detect_init(USBA_PLUGIN_DETECT_LEVEL_LOW); log_info("usba detached\n"); diff --git a/PD_CPS8841H_33W/code/app/src/app_spec.c b/PD_CPS8841H_33W/code/app/src/app_spec.c index 586ed75..16f679e 100644 --- a/PD_CPS8841H_33W/code/app/src/app_spec.c +++ b/PD_CPS8841H_33W/code/app/src/app_spec.c @@ -157,8 +157,8 @@ uint8_t system_init(void) drv_delay_ms(DELAY_5MS); - user_app.current_src_cap_idx = SRC_CAP_30W; - user_app.first_power_cnt = DELAY_10S; + pd_restart_send_src_cap(&g_pd_port, SRC_CAP_30W); + // user_app.first_power_cnt = DELAY_10S; return true; } diff --git a/PD_CPS8841H_33W/code/app/src/comm_event.c b/PD_CPS8841H_33W/code/app/src/comm_event.c index e16cba3..1f752b6 100644 --- a/PD_CPS8841H_33W/code/app/src/comm_event.c +++ b/PD_CPS8841H_33W/code/app/src/comm_event.c @@ -29,47 +29,50 @@ void ufcs_power_change_patch(uint16_t src_cap_idx) // 参数1: 需要更新多少到多少W的src_cap 参数2: 是否需要重新发送src_cap void updata_diff_protocol_cap(uint16_t src_cap_idx, bool send_src_cap) { - // 根据当前走的协议是什么,去更新对应的src_cap - if(dpdm_power_get_next_protocol() == PROTOCOL_UNKNOWN - || dpdm_power_get_next_protocol() == PROTOCOL_APPLE - || dpdm_power_get_next_protocol() == PROTOCOL_DCP - || dpdm_power_get_next_protocol() == PROTOCOL_QC_PRE - ) - { - return; - } - - log_info("%d %d %d\n", - user_app.current_src_cap_idx, - src_cap_idx, - dpdm_power_get_next_protocol()); - - user_app.current_src_cap_idx = src_cap_idx; - - switch(dpdm_power_get_next_protocol()) - { - case PROTOCOL_PD_FIX: - case PROTOCOL_PD_PPS: - pd_dpm_update_source_cap(&g_pd_port, &g_pd_port.pd_curr_config->src_cap_info[src_cap_idx], src_cap_idx); + pd_restart_send_src_cap(&g_pd_port, src_cap_idx); + /* + // 根据当前走的协议是什么,去更新对应的src_cap + if(dpdm_power_get_next_protocol() == PROTOCOL_UNKNOWN + || dpdm_power_get_next_protocol() == PROTOCOL_APPLE + || dpdm_power_get_next_protocol() == PROTOCOL_DCP + || dpdm_power_get_next_protocol() == PROTOCOL_QC_PRE + ) + { + return; + } + + // log_info("%d %d %d\n", + // user_app.current_src_cap_idx, + // src_cap_idx, + // dpdm_power_get_next_protocol()); + + switch(dpdm_power_get_next_protocol()) + { + case PROTOCOL_PD_FIX: + case PROTOCOL_PD_PPS: + log_info("%s %d\n", __func__, __LINE__); + + // pd_dpm_update_source_cap(&g_pd_port, &g_pd_port.pd_curr_config->src_cap_info[src_cap_idx], src_cap_idx); + + if(send_src_cap) + { + pd_restart_send_src_cap(&g_pd_port, src_cap_idx); + } - if(send_src_cap) - { - pd_restart_send_src_cap(&g_pd_port); - } + break; - break; + case PROTOCOL_SCP: + break; - case PROTOCOL_SCP: - break; + #if UFCS_DERATE_SUPPORT -#if UFCS_DERATE_SUPPORT - - case PROTOCOL_UFCS: - // 为了避免撞包问题, 按协议规定12ms内没收到包才发power_change - user_app.ufcs_need_send_power_change = true; - break; -#endif - } + case PROTOCOL_UFCS: + // 为了避免撞包问题, 按协议规定12ms内没收到包才发power_change + user_app.ufcs_need_send_power_change = true; + break; + #endif + } + */ } // 端口状态机 @@ -116,20 +119,20 @@ void port_status_run(void) if(user_app.ntc_triggered_dera) { - user_app.current_src_cap_idx = SRC_CAP_7W; + pd_restart_send_src_cap(&g_pd_port, SRC_CAP_7W); } else { - user_app.current_src_cap_idx = SRC_CAP_30W; + pd_restart_send_src_cap(&g_pd_port, SRC_CAP_30W); } #else - user_app.current_src_cap_idx = SRC_CAP_30W; + pd_restart_send_src_cap(&g_pd_port, SRC_CAP_30W); #endif // 什么都没接时, 也是用buck给A口供电来检查A口是否插入 buck_control(true); - drv_delay_ms(5); + drv_delay_ms(4); dpdm_power_a1_gate_enable(false); } else @@ -145,7 +148,7 @@ void port_status_run(void) port_process_status = port_exit_status; // 单C口时, 常开buck, 关闭gateA, 等A口有拉电流才反过来 buck_control(true); - drv_delay_ms(5); + drv_delay_ms(4); dpdm_power_a1_gate_enable(false); } else @@ -157,20 +160,15 @@ void port_status_run(void) if(user_app.ntc_triggered_dera && user_app.current_src_cap_idx != SRC_CAP_7W) { - updata_diff_protocol_cap(SRC_CAP_7W, true); + pd_restart_send_src_cap(&g_pd_port, SRC_CAP_7W); } else if(!user_app.ntc_triggered_dera && user_app.current_src_cap_idx != SRC_CAP_30W) { - updata_diff_protocol_cap(SRC_CAP_30W, true); + pd_restart_send_src_cap(&g_pd_port, SRC_CAP_30W); } #else - - if(user_app.current_src_cap_idx != SRC_CAP_30W) - { - updata_diff_protocol_cap(SRC_CAP_30W, true); - } - + pd_restart_send_src_cap(&g_pd_port, SRC_CAP_30W); #endif break; @@ -182,7 +180,7 @@ void port_status_run(void) // 单A口 dpdm_power_a1_gate_enable(true); - drv_delay_ms(5); + drv_delay_ms(4); buck_control(false); } else @@ -193,6 +191,21 @@ void port_status_run(void) break; case TYPEC_USBA_INSER: +#if NTC_ENABLE + + if(user_app.ntc_triggered_dera && user_app.current_src_cap_idx != SRC_CAP_7W) + { + pd_restart_send_src_cap(&g_pd_port, SRC_CAP_7W); + } + else if(!user_app.ntc_triggered_dera && user_app.current_src_cap_idx != SRC_CAP_20W) + { + pd_restart_send_src_cap(&g_pd_port, SRC_CAP_20W); + } + +#else + pd_restart_send_src_cap(&g_pd_port, SRC_CAP_20W); +#endif + if(port_process_status == port_enter_status) { port_process_status = port_exit_status; @@ -204,13 +217,13 @@ void port_status_run(void) comp_set_current(&g_powerout_info, CURRENT_5P5A); // 需要立刻设置 // 是否有可能电流环设置的没那么快, 一打开gateA就被拉挂了? 需要加个延迟等电流环设置完再开A? dpdm_power_a1_gate_enable(true); - drv_delay_ms(5); + drv_delay_ms(4); buck_control(false); } else { buck_control(true); - drv_delay_ms(5); + drv_delay_ms(4); dpdm_power_a1_gate_enable(false); } } @@ -222,7 +235,7 @@ void port_status_run(void) { // todo: 看看是否需要延迟个1ms等待buck完全开启再关gateA buck_control(true); - drv_delay_ms(5); + drv_delay_ms(4); dpdm_power_a1_gate_enable(false); } else if(g_powerout_info.set_vol < VOLTAGE_5P5V @@ -231,31 +244,11 @@ void port_status_run(void) { comp_set_current(&g_powerout_info, CURRENT_5P5A); // 需要立刻设置 dpdm_power_a1_gate_enable(true); - drv_delay_ms(5); + drv_delay_ms(4); buck_control(false); } } -#if NTC_ENABLE - - if(user_app.ntc_triggered_dera && user_app.current_src_cap_idx != SRC_CAP_7W) - { - updata_diff_protocol_cap(SRC_CAP_7W, true); - } - else if(!user_app.ntc_triggered_dera && user_app.current_src_cap_idx != SRC_CAP_20W) - { - updata_diff_protocol_cap(SRC_CAP_20W, true); - } - -#else - - if(user_app.current_src_cap_idx != SRC_CAP_20W) - { - updata_diff_protocol_cap(SRC_CAP_20W, true); - } - -#endif - break; } diff --git a/PD_CPS8841H_33W/code/app/src/main.c b/PD_CPS8841H_33W/code/app/src/main.c index 14488b1..387a868 100644 --- a/PD_CPS8841H_33W/code/app/src/main.c +++ b/PD_CPS8841H_33W/code/app/src/main.c @@ -119,7 +119,7 @@ static const periodic_work_entry_s app_works[] = #endif PERIODIC_WORK_ENTRY(1, 0, comm_event), PERIODIC_WORK_ENTRY(4, 3, app_port_a1_work), - PERIODIC_WORK_ENTRY(1024, 0, log_output), + // PERIODIC_WORK_ENTRY(1024, 0, log_output), }; static void app_periodic_work(void) diff --git a/PD_CPS8841H_33W/code/app/src/ntc.c b/PD_CPS8841H_33W/code/app/src/ntc.c index d89f574..e687652 100644 --- a/PD_CPS8841H_33W/code/app/src/ntc.c +++ b/PD_CPS8841H_33W/code/app/src/ntc.c @@ -26,7 +26,7 @@ void ntc_init(void) void ntc_run(void) { uint16_t ntc_val = 0; - static uint16_t ntc_derat_cnt = 0, ntc_recove_cnt = 0; + static uint8_t ntc_derat_cnt = 0, ntc_recove_cnt = 0; ntc_val = COMP_ADC_GET_RT1_VOL(); @@ -69,10 +69,7 @@ void ntc_run(void) || dpdm_power_get_next_protocol() == PROTOCOL_PD_PPS) { // 复位协议,屏蔽PD协议, DPDN恢复短接, 电压要降回5V - if(user_app.current_src_cap_idx != SRC_CAP_7W) - { - updata_diff_protocol_cap(SRC_CAP_7W, true); - } + pd_restart_send_src_cap(&g_pd_port, SRC_CAP_7W); } else { diff --git a/PD_CPS8841H_33W/code/component/src/comp_powerout.c b/PD_CPS8841H_33W/code/component/src/comp_powerout.c index 9b9d205..723a40d 100644 --- a/PD_CPS8841H_33W/code/component/src/comp_powerout.c +++ b/PD_CPS8841H_33W/code/component/src/comp_powerout.c @@ -63,11 +63,19 @@ void comp_powerout_default_set(comp_powerout_info_s *powerout_info) { pwr_request_s pwr_request = { - .request_cur = CURRENT_5P5A, + .request_cur = CURRENT_3P3A, .request_vol = VOLTAGE_5V, }; - // log_info("powr_def\n"); + // A + C同在时, CC设为5.5A + if(typec_is_attched() + && port_a1_is_attached() + && pwr_request.request_vol < VOLTAGE_5P5V) + { + pwr_request.request_cur = CURRENT_5P5A; + } + + log_info("powr_def, set_cur:%d\n", pwr_request.request_cur); powerout_info->set_vol = pwr_request.request_vol; powerout_info->set_current = pwr_request.request_cur; @@ -202,8 +210,6 @@ void comp_powerout_shutdown_machine(comp_powerout_info_s *powerout_info) { log_info("pwr_shut\n"); comp_powerout_default_set(powerout_info); - // comp_powerout_prl_set_viout(VOLTAGE_5V, CURRENT_3P3A); - powerout_info->power_state = PWR_RDY_CHECK; } @@ -242,7 +248,7 @@ void comp_powerout_transmit_machine(comp_powerout_info_s *powerout_info) if(powerout_info->set_vol > VOLTAGE_5V) { buck_control(true); - drv_delay_ms(5); + drv_delay_ms(4); dpdm_power_a1_gate_enable(false); } } @@ -355,35 +361,35 @@ void comp_powerout_ready_machine(comp_powerout_info_s *powerout_info) // 单C口且无协议时,电流设回正常的 3.3A // 单A口且无协议时,电流设回正常的 3.3A // 这个后续的时间暂时定为2秒 - if(user_app.first_power_cnt == 0) - { - if(typec_is_attched() - && !port_a1_is_attached() - ) - { - if(dpdm_power_get_next_protocol() == PROTOCOL_UNKNOWN - || dpdm_power_get_next_protocol() == PROTOCOL_APPLE - || dpdm_power_get_next_protocol() == PROTOCOL_DCP - || dpdm_power_get_next_protocol() == PROTOCOL_QC_PRE) - { - pwr_request.request_cur = CURRENT_3P4A; - } - } - - if(!typec_is_attched() - && port_a1_is_attached() - //&& (pwr_request.request_vol <= VOLTAGE_5P5V) - ) - { - if(dpdm_power_get_next_protocol() == PROTOCOL_UNKNOWN - || dpdm_power_get_next_protocol() == PROTOCOL_APPLE - || dpdm_power_get_next_protocol() == PROTOCOL_DCP - || dpdm_power_get_next_protocol() == PROTOCOL_QC_PRE) - { - pwr_request.request_cur = CURRENT_3P4A; - } - } - } + // if(user_app.first_power_cnt == 0) + // { + // if(typec_is_attched() + // && !port_a1_is_attached() + // ) + // { + // if(dpdm_power_get_next_protocol() == PROTOCOL_UNKNOWN + // || dpdm_power_get_next_protocol() == PROTOCOL_APPLE + // || dpdm_power_get_next_protocol() == PROTOCOL_DCP + // || dpdm_power_get_next_protocol() == PROTOCOL_QC_PRE) + // { + // pwr_request.request_cur = CURRENT_3P4A; + // } + // } + + // if(!typec_is_attched() + // && port_a1_is_attached() + // //&& (pwr_request.request_vol <= VOLTAGE_5P5V) + // ) + // { + // if(dpdm_power_get_next_protocol() == PROTOCOL_UNKNOWN + // || dpdm_power_get_next_protocol() == PROTOCOL_APPLE + // || dpdm_power_get_next_protocol() == PROTOCOL_DCP + // || dpdm_power_get_next_protocol() == PROTOCOL_QC_PRE) + // { + // pwr_request.request_cur = CURRENT_3P4A; + // } + // } + // } if((powerout_info->last_vol != pwr_request.request_vol) || @@ -440,6 +446,14 @@ void comp_powerout_open_nmos(void) goto end; } + // 开C口MOS前, 判断如果A口负载也在, 则把电流加大到5.5A + if(port_a1_is_attached() + && g_powerout_info.set_vol < VOLTAGE_5P5V) + { + comp_set_current(&g_powerout_info, CURRENT_5P5A); // 需要立刻设置 + drv_delay_ms(20); // 等待CC环设置完成 + } + g_powerout_info.powerout_flags.bf.gate_states = true; comp_port_nmos_ctrl(GATE_C, true); end: diff --git a/PD_CPS8841H_33W/code/component/src/comp_protocol_manager.c b/PD_CPS8841H_33W/code/component/src/comp_protocol_manager.c index ece37b4..f750a02 100644 --- a/PD_CPS8841H_33W/code/component/src/comp_protocol_manager.c +++ b/PD_CPS8841H_33W/code/component/src/comp_protocol_manager.c @@ -35,6 +35,16 @@ void buck_control(bool enable) void dpdm_power_a1_gate_enable(bool is_en) { log_info("GATEA:%d\n", is_en); + + // 开C口MOS前, 判断如果A口负载也在, 则把电流加大到5.5A + if(is_en + && typec_is_attched() + && g_powerout_info.set_vol < VOLTAGE_5P5V) + { + comp_set_current(&g_powerout_info, CURRENT_5P5A); // 需要立刻设置 + drv_delay_ms(20); // 等待CC环设置完成 + } + comp_port_nmos_ctrl(GATE_A, is_en); } diff --git a/PD_CPS8841H_33W/code/platform/protocol/pd_protocol/inc/pd_protocol.h b/PD_CPS8841H_33W/code/platform/protocol/pd_protocol/inc/pd_protocol.h index 1ea6acb..db8d3f3 100644 --- a/PD_CPS8841H_33W/code/platform/protocol/pd_protocol/inc/pd_protocol.h +++ b/PD_CPS8841H_33W/code/platform/protocol/pd_protocol/inc/pd_protocol.h @@ -121,8 +121,8 @@ typedef struct pd_port_s uint8_t pd_send_new_src_cap_enable; - uint8_t pd_new_src_pdo; - const pd_pdo_info_s *pd_old_src_pdo; + // uint8_t pd_new_src_pdo; + // const pd_pdo_info_s *pd_old_src_pdo; #if TYPEC_INSERT_DEBOUNCE_SUPPORT typec_inseret_deb_infos_s typec_inseret_deb_infos; diff --git a/PD_CPS8841H_33W/code/platform/protocol/pd_protocol/inc/pd_send_new_src_cap.h b/PD_CPS8841H_33W/code/platform/protocol/pd_protocol/inc/pd_send_new_src_cap.h index b66b9e1..03bc365 100644 --- a/PD_CPS8841H_33W/code/platform/protocol/pd_protocol/inc/pd_send_new_src_cap.h +++ b/PD_CPS8841H_33W/code/platform/protocol/pd_protocol/inc/pd_send_new_src_cap.h @@ -10,5 +10,5 @@ void pd_new_src_cap_update_work(pd_port_s *pd_port); void pd_dpm_update_source_cap(pd_port_s *pd_port, const pd_pdo_info_s *pdo, uint8_t src_cap_idx); -void pd_restart_send_src_cap(pd_port_s *pd_port); +void pd_restart_send_src_cap(pd_port_s *pd_port, uint8_t src_cap_idx); #endif diff --git a/PD_CPS8841H_33W/code/platform/protocol/pd_protocol/src/pd_send_new_src_cap.c b/PD_CPS8841H_33W/code/platform/protocol/pd_protocol/src/pd_send_new_src_cap.c index ed94e80..462165b 100644 --- a/PD_CPS8841H_33W/code/platform/protocol/pd_protocol/src/pd_send_new_src_cap.c +++ b/PD_CPS8841H_33W/code/platform/protocol/pd_protocol/src/pd_send_new_src_cap.c @@ -5,21 +5,28 @@ void pd_dpm_update_source_cap(pd_port_s *pd_port, const pd_pdo_info_s *pdo, uint { pd_param_s *pd_param = &pd_port->pd_prl_param; - pd_port->pd_new_src_pdo = src_cap_idx; + // pd_port->pd_new_src_pdo = src_cap_idx; log_info("updata src_cap:%d\n", src_cap_idx); + log_info("cnt:%d\n", pdo->pdo_cnt); pd_param->pd_assist.src_cap_send.pdo_cnt = pdo->pdo_cnt; memcpy(&pd_param->pd_assist.src_cap_send.pd_pdos[0].byte, &pdo->pdo0, 28); //src ext pd_param->pd_assist.pd_scedb.scedb_bits.src_pdp = pdo->src_pdp; - if(!pd_port->pd_send_new_src_cap_enable) - pd_port->pd_old_src_pdo = pdo; + // if(!pd_port->pd_send_new_src_cap_enable) + // pd_port->pd_old_src_pdo = pdo; } -void pd_restart_send_src_cap(pd_port_s *pd_port) +void pd_restart_send_src_cap(pd_port_s *pd_port, uint8_t src_cap_idx) { + if(user_app.current_src_cap_idx == src_cap_idx) + { + return; + } + pd_port->pd_send_new_src_cap_enable = true; + user_app.current_src_cap_idx = src_cap_idx; } @@ -45,15 +52,17 @@ void pd_new_src_cap_update_work(pd_port_s *pd_port) (pd_param->pd_pe_status.pe_status == PE_SRC_Startup) ) { + // log_info("%s %d\n", __func__, __LINE__); + log_info("send_cap:%d\n", user_app.current_src_cap_idx); pd_dpm_update_source_cap(pd_port, - &pd_port->pd_curr_config->src_cap_info[pd_port->pd_new_src_pdo], - pd_port->pd_new_src_pdo); + &pd_port->pd_curr_config->src_cap_info[user_app.current_src_cap_idx], + user_app.current_src_cap_idx); pd_port->pd_send_new_src_cap_enable = false; if(pd_param->pd_pe_status.pe_status != PE_SRC_Startup) { - log_info("send_cap:%d\n", pd_port->pd_send_new_src_cap_enable); + // log_info("send_cap:%d\n", user_app.current_src_cap_idx); pd_param->pd_flags.pd_process_flag.bits.ams_start_flag = (pd_param->pd_assist.pd_spec_rev == PD_VER); pd_param->pd_pe_status.pe_status = PE_SRC_Send_Capabilities; pd_param->pd_pe_status.pe_process_status = pd_entry_status; diff --git a/PD_CPS8841H_33W/code/platform/protocol/pd_protocol/src/pd_typec_detect_patch.c b/PD_CPS8841H_33W/code/platform/protocol/pd_protocol/src/pd_typec_detect_patch.c index 33477c4..cdde341 100644 --- a/PD_CPS8841H_33W/code/platform/protocol/pd_protocol/src/pd_typec_detect_patch.c +++ b/PD_CPS8841H_33W/code/platform/protocol/pd_protocol/src/pd_typec_detect_patch.c @@ -111,7 +111,7 @@ static void pd_update_typec_connect_sta(pd_port_s *pd_port) { typec_reset(pd_port); dpdm_reset(); - log_info("%s %d\n", __func__, __LINE__); + // log_info("%s %d\n", __func__, __LINE__); } if((pd_param->typec_status.typec_process_status == typec_enter_status) && diff --git a/PD_CPS8841H_33W/code/platform/protocol/qc_protocol/src/qc_protocol.c b/PD_CPS8841H_33W/code/platform/protocol/qc_protocol/src/qc_protocol.c index 7138ef0..2c0d442 100644 --- a/PD_CPS8841H_33W/code/platform/protocol/qc_protocol/src/qc_protocol.c +++ b/PD_CPS8841H_33W/code/platform/protocol/qc_protocol/src/qc_protocol.c @@ -67,12 +67,6 @@ void qc_voltage_request_work(qc_port_s *qc_port) { iset = CURRENT_3P4A; // A + C 且都在5V时, 在powerout里会把电流设为5.5A - - // 仅测试,单A口时,实际设置3.3A能出4A - // if(!typec_is_attched() && port_a1_is_attached()) - // { - // iset = CURRENT_3P3A - 400; - // } } else if(qc_param->qc_assist.request_vol == 9000) { diff --git a/PD_CPS8841H_33W/code/prl_portable/inc/pd.h b/PD_CPS8841H_33W/code/prl_portable/inc/pd.h index db0d621..b60404a 100644 --- a/PD_CPS8841H_33W/code/prl_portable/inc/pd.h +++ b/PD_CPS8841H_33W/code/prl_portable/inc/pd.h @@ -35,7 +35,7 @@ static inline void pd_port_typec_prl_handler(pd_port_s *pd_port) static inline void pd_port_restart_send_src_cap(pd_port_s *pd_port, const pd_pdo_info_s *new_src_pdo) { - pd_restart_send_src_cap(pd_port); + // pd_restart_send_src_cap(pd_port); } diff --git a/PD_CPS8841H_33W/code/prl_portable/src/pd.c b/PD_CPS8841H_33W/code/prl_portable/src/pd.c index f3d72c2..ab797cd 100644 --- a/PD_CPS8841H_33W/code/prl_portable/src/pd.c +++ b/PD_CPS8841H_33W/code/prl_portable/src/pd.c @@ -47,29 +47,36 @@ void pd_src_cap_msg_assemble_patch(pd_param_s *pd_param) uint16_t i; pdo_cnt = pd_param->pd_assist.src_cap_send.pdo_cnt; + // log_info("%s %d\n", __func__, __LINE__); + // log_info("pdo_cnt%d idx:%d\n", pdo_cnt, user_app.current_src_cap_idx); + + pd_dpm_update_source_cap(&g_pd_port, + &g_pd_port.pd_curr_config->src_cap_info[user_app.current_src_cap_idx], + user_app.current_src_cap_idx); + pd_src_cap_msg_assemble(pd_param); //find pps_pdo cnt - for(i = 0; i < pdo_cnt; i++) - { - if(pd_param->pd_assist.src_cap_send.pd_pdos[i].base.type == PD_PDO_TYPE_AUG && - pd_param->pd_assist.src_cap_send.pd_pdos[i].SRC_PPS_PDO_bits.Programmable_Pwr_Supply == PD_PDO_AUG_TYPE_SPR) - { - pps_cnt++; - } - } + // for(i = 0; i < pdo_cnt; i++) + // { + // if(pd_param->pd_assist.src_cap_send.pd_pdos[i].base.type == PD_PDO_TYPE_AUG && + // pd_param->pd_assist.src_cap_send.pd_pdos[i].SRC_PPS_PDO_bits.Programmable_Pwr_Supply == PD_PDO_AUG_TYPE_SPR) + // { + // pps_cnt++; + // } + // } - pdo_cnt -= (pd_param->pd_assist.pd_spec_rev == 1) ? pps_cnt : 0; + // pdo_cnt -= (pd_param->pd_assist.pd_spec_rev == 1) ? pps_cnt : 0; - uint8_t len; - pd_data_msg_header_assemble(Data_Source_Cap, pdo_cnt, &pd_param->pd_assist); + // uint8_t len; + // pd_data_msg_header_assemble(Data_Source_Cap, pdo_cnt, &pd_param->pd_assist); - len = pdo_cnt * 4; + // len = pdo_cnt * 4; - memcpy(&pd_param->pd_assist.pd_sent_pkt.pd_sent_buf[2], &pd_param->pd_assist.src_cap_send.pd_pdos[0].byte[0], len); + // memcpy(&pd_param->pd_assist.pd_sent_pkt.pd_sent_buf[2], &pd_param->pd_assist.src_cap_send.pd_pdos[0].byte[0], len); - pd_param->pd_assist.pd_sent_pkt.length = len + 2; - pd_param->pd_flags.pd_prl_flag.prl_packet_recived_from_pe = true; + // pd_param->pd_assist.pd_sent_pkt.length = len + 2; + // pd_param->pd_flags.pd_prl_flag.prl_packet_recived_from_pe = true; }