start work on EPR support
This commit is contained in:
parent
5e12e9a4a0
commit
f7f5a16d64
@ -39,6 +39,7 @@
|
||||
#define MAX_TIP_TEMP 500
|
||||
#define TURN_OFF_DELAY 2
|
||||
#define CYCLES_PER_MEASURE 2
|
||||
#define BOARD_MAX_VOLTAGE 28000
|
||||
|
||||
|
||||
#endif // _FUNCONFIG_H
|
||||
|
||||
@ -422,7 +422,7 @@ __attribute__((noreturn)) int main(void)
|
||||
u8g2_SetBitmapMode(u8g2, 1);
|
||||
u8g2_SetFontMode(u8g2, 1);
|
||||
u8g2_SetFont(u8g2, u8g2_font_5x8_tr);
|
||||
u8g2_DrawStr(u8g2, 0, 18, "negotiating...");
|
||||
u8g2_DrawStr(u8g2, x_off+0, y_off+7, "Negotiating...");
|
||||
u8g2_SendBuffer(u8g2);
|
||||
|
||||
// Init USBPD
|
||||
@ -437,7 +437,7 @@ __attribute__((noreturn)) int main(void)
|
||||
u8g2_SendBuffer(u8g2);
|
||||
Delay_Ms(5000);
|
||||
} else {
|
||||
pd_get_profile(&pd_profile, 100);
|
||||
pd_get_profile(&pd_profile, 60);
|
||||
|
||||
// TODO: let the user decide the power profile
|
||||
pd_profile.set_temp = 200;
|
||||
|
||||
35
fw/pd.c
35
fw/pd.c
@ -3,9 +3,14 @@
|
||||
#define USBPD_IMPLEMENTATION
|
||||
#include "usbpd.h"
|
||||
|
||||
#include "funconfig.h"
|
||||
#include "display.h"
|
||||
|
||||
#include "pd.h"
|
||||
|
||||
|
||||
extern u8g2_t *u8g2;
|
||||
|
||||
static size_t cap_count = 0;
|
||||
static USBPD_SPR_CapabilitiesMessage_t *capabilities = NULL;
|
||||
static USBPD_Result_e result;
|
||||
@ -35,7 +40,15 @@ bool pd_negotiate(USBPD_VCC_e vcc)
|
||||
if (now - start > Ticks_from_Ms(5000)) {
|
||||
break;
|
||||
}
|
||||
Delay_Ms(100);
|
||||
|
||||
u8g2_ClearBuffer(u8g2);
|
||||
u8g2_SetBitmapMode(u8g2, 1);
|
||||
u8g2_SetFontMode(u8g2, 1);
|
||||
u8g2_SetFont(u8g2, u8g2_font_5x8_tr);
|
||||
u8g2_DrawStr(u8g2, 0, 8+7, USBPD_StateToStr(USBPD_GetState()));
|
||||
u8g2_SendBuffer(u8g2);
|
||||
|
||||
Delay_Ms(1);
|
||||
}
|
||||
if (result != eUSBPD_OK) {
|
||||
return false;
|
||||
@ -78,12 +91,28 @@ bool pd_get_profile(struct pd_profile_t *profile, uint16_t min_power)
|
||||
// }
|
||||
break;
|
||||
case eUSBPD_PDO_AUGMENTED:
|
||||
// TODO: EPR
|
||||
switch (pdo->Header.AugmentedType) {
|
||||
case eUSBPD_APDO_SPR_PPS:
|
||||
// TODO: SPR_PPS
|
||||
break;
|
||||
case eUSBPD_APDO_SPR_AVS:
|
||||
// TODO: SPR AVS
|
||||
break;
|
||||
case eUSBPD_APDO_EPR_AVS:
|
||||
/* TODO: EPR AVS
|
||||
voltage = pdo->EPR_AVS.MaxVoltageIn100mV * 100;
|
||||
current = pdo->EPR_AVS.PeakCurrent * 1000;
|
||||
power = pdo->EPR_AVS.PDPIn1W;
|
||||
*/
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// Selects the first PDO that meets the minimum power requirement
|
||||
if (power >= min_power) {
|
||||
if (power >= min_power && voltage <= BOARD_MAX_VOLTAGE) {
|
||||
if (USBPD_SelectPDO(i, 0) != eUSBPD_OK) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user