mirror of
https://github.com/No-Chicken/Power-Pico.git
synced 2026-04-03 13:02:36 +08:00
加入状态
This commit is contained in:
@@ -52,10 +52,12 @@ void handle_protocol_event(PD_protocol_event_t events)
|
|||||||
app_pd.get_src_cap_retry_count = 0;
|
app_pd.get_src_cap_retry_count = 0;
|
||||||
app_pd.wait_ps_rdy = 1;
|
app_pd.wait_ps_rdy = 1;
|
||||||
app_pd.time_wait_ps_rdy = clock_ms();
|
app_pd.time_wait_ps_rdy = clock_ms();
|
||||||
|
app_pd.state = PD_STATE_GET_CAPS; // 更新状态:已收到能力,可以请求了
|
||||||
}
|
}
|
||||||
if (events & PD_PROTOCOL_EVENT_REJECT) {
|
if (events & PD_PROTOCOL_EVENT_REJECT) {
|
||||||
if (app_pd.wait_ps_rdy) {
|
if (app_pd.wait_ps_rdy) {
|
||||||
app_pd.wait_ps_rdy = 0;
|
app_pd.wait_ps_rdy = 0;
|
||||||
|
app_pd.state = PD_STATE_FAILED; // 更新状态:请求被拒绝
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (events & PD_PROTOCOL_EVENT_PS_RDY) {
|
if (events & PD_PROTOCOL_EVENT_PS_RDY) {
|
||||||
@@ -75,10 +77,12 @@ void handle_protocol_event(PD_protocol_event_t events)
|
|||||||
app_pd.time_PPS_request = clock_ms();
|
app_pd.time_PPS_request = clock_ms();
|
||||||
status_power_ready(STATUS_POWER_PPS,
|
status_power_ready(STATUS_POWER_PPS,
|
||||||
PD_protocol_get_PPS_voltage(&app_pd.protocol), PD_protocol_get_PPS_current(&app_pd.protocol));
|
PD_protocol_get_PPS_voltage(&app_pd.protocol), PD_protocol_get_PPS_current(&app_pd.protocol));
|
||||||
|
app_pd.state = PD_STATE_SUCCESS_PPS; // 更新状态:成功协商到PPS
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
FUSB302_set_vbus_sense(&fusb302_dev, 1);
|
FUSB302_set_vbus_sense(&fusb302_dev, 1);
|
||||||
status_power_ready(STATUS_POWER_TYP, p.max_v, p.max_i);
|
status_power_ready(STATUS_POWER_TYP, p.max_v, p.max_i);
|
||||||
|
app_pd.state = PD_STATE_SUCCESS_FIXED; // 更新状态:协商到了一个固定电压
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -154,6 +158,7 @@ bool fusb302_timer(void)
|
|||||||
} else if (app_pd.send_request || (app_pd.status_power == STATUS_POWER_PPS && t - app_pd.time_PPS_request > PPS_REQUEST)) {
|
} else if (app_pd.send_request || (app_pd.status_power == STATUS_POWER_PPS && t - app_pd.time_PPS_request > PPS_REQUEST)) {
|
||||||
app_pd.wait_ps_rdy = 1;
|
app_pd.wait_ps_rdy = 1;
|
||||||
app_pd.send_request = 0;
|
app_pd.send_request = 0;
|
||||||
|
app_pd.state = PD_STATE_NEGOTIATING; // 更新状态:正在协商中
|
||||||
app_pd.time_PPS_request = t;
|
app_pd.time_PPS_request = t;
|
||||||
uint16_t header;
|
uint16_t header;
|
||||||
uint32_t obj[7];
|
uint32_t obj[7];
|
||||||
@@ -184,6 +189,7 @@ uint8_t fusb302_dev_init(void) {
|
|||||||
#endif
|
#endif
|
||||||
if (FUSB302_init(&fusb302_dev) == FUSB302_SUCCESS && FUSB302_get_ID(&fusb302_dev, 0, 0) == FUSB302_SUCCESS) {
|
if (FUSB302_init(&fusb302_dev) == FUSB302_SUCCESS && FUSB302_get_ID(&fusb302_dev, 0, 0) == FUSB302_SUCCESS) {
|
||||||
PD_protocol_init(&app_pd.protocol);
|
PD_protocol_init(&app_pd.protocol);
|
||||||
|
app_pd.state = PD_STATE_IDLE; // 初始状态
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
@@ -45,8 +45,20 @@ enum {
|
|||||||
};
|
};
|
||||||
typedef uint8_t PD_user_state_t;
|
typedef uint8_t PD_user_state_t;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
PD_STATE_IDLE, // 空闲状态
|
||||||
|
PD_STATE_NEGOTIATING, // 正在协商中 (已发送请求,等待PS_RDY)
|
||||||
|
PD_STATE_SUCCESS_PPS, // 成功协商到PPS模式
|
||||||
|
PD_STATE_SUCCESS_FIXED, // 成功协商到固定电压
|
||||||
|
PD_STATE_FAILED, // 协商失败 (收到Reject或超时)
|
||||||
|
PD_STATE_GET_CAPS // 刚刚收到能力列表,准备发起第一次请求
|
||||||
|
} App_PD_State_t;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
|
||||||
|
App_PD_State_t state;
|
||||||
|
|
||||||
PD_protocol_t protocol;
|
PD_protocol_t protocol;
|
||||||
|
|
||||||
// Power ready power
|
// Power ready power
|
||||||
|
|||||||
Reference in New Issue
Block a user