1
0
forked from me/IronOS

Filter returned WFE

This commit is contained in:
Ben V. Brown
2020-06-16 21:25:28 +10:00
parent 2fd06887e8
commit 4c2fb11d32
8 changed files with 35 additions and 35 deletions

View File

@@ -8,7 +8,7 @@ bool FUSB302_present = false;
void power_probe() {
// If TS80 probe for QC
// If TS100 - noop
#ifdef defined(MODEL_TS80)+defined(MODEL_TS80P)>0
#if defined(MODEL_TS80)+defined(MODEL_TS80P)>0
startQC(systemSettings.voltageDiv);
seekQC((systemSettings.cutoutSetting) ? 120 : 90,
@@ -18,31 +18,27 @@ void power_probe() {
}
void power_check() {
#ifdef defined(MODEL_TS80)+defined(MODEL_TS80P)>0
#if defined(MODEL_TS80)+defined(MODEL_TS80P)>0
QC_resync();
#endif
}
uint8_t usb_pd_detect() {
#ifdef MODEL_TS80P
FUSB302_present = fusb302_detect();
if (FUSB302_present) {
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
return FUSB302_present;
#endif
return false;
}
uint8_t pd_irq_read() {
#ifdef MODEL_TS80P
if (FUSB302_present) {
return HAL_GPIO_ReadPin(INT_PD_GPIO_Port, INT_PD_Pin) == GPIO_PIN_SET ?
1 : 0;
}
return HAL_GPIO_ReadPin(INT_PD_GPIO_Port, INT_PD_Pin) == GPIO_PIN_SET ?
1 : 0;
#endif
return 0;
}

View File

@@ -37,11 +37,11 @@ ResetHandler::hardrst_state ResetHandler::hardrst_reset_layer() {
/* Reset the Protocol RX machine */
ProtocolReceive::notify( PDB_EVT_PRLRX_RESET);
taskYIELD();
osDelay(1);
/* Reset the Protocol TX machine */
ProtocolTransmit::notify(PDB_EVT_PRLTX_RESET);
taskYIELD();
osDelay(1);
/* Continue the process based on what event started the reset. */
if (evt & PDB_EVT_HARDRST_RESET) {

View File

@@ -91,6 +91,8 @@ void InterruptHandler::Thread(const void *arg) {
}
}
} else {
osDelay(1);
}
osDelay(1);
}

View File

@@ -278,7 +278,7 @@
#define PD_T_PS_TRANSITION (500)
#define PD_T_SENDER_RESPONSE (27)
#define PD_T_SINK_REQUEST (100)
#define PD_T_TYPEC_SINK_WAIT_CAP (465+100)
#define PD_T_TYPEC_SINK_WAIT_CAP (465)
#define PD_T_PD_DEBOUNCE (15)
/*

View File

@@ -54,8 +54,7 @@ void PolicyEngine::init() {
}
void PolicyEngine::notify(uint32_t notification) {
xTaskNotify(TaskHandle, notification,
eNotifyAction::eSetBits);
xTaskNotify(TaskHandle, notification, eNotifyAction::eSetBits);
}
void PolicyEngine::pe_task(const void *arg) {
@@ -242,6 +241,8 @@ PolicyEngine::policy_engine_state PolicyEngine::pe_sink_eval_cap() {
}
PolicyEngine::policy_engine_state PolicyEngine::pe_sink_select_cap() {
waitForEvent(
PDB_EVT_PE_TX_DONE | PDB_EVT_PE_TX_ERR | PDB_EVT_PE_RESET, 0);
/* Transmit the request */
ProtocolTransmit::pushMessage(&_last_dpm_request);
//Send indication that there is a message pending
@@ -785,7 +786,7 @@ bool PolicyEngine::heatingAllowed() {
uint32_t PolicyEngine::waitForEvent(uint32_t mask, uint32_t ticksToWait) {
uint32_t pulNotificationValue;
xTaskNotifyWait(0x00, mask, &pulNotificationValue, ticksToWait);
return pulNotificationValue;
return pulNotificationValue & mask;
}
bool PolicyEngine::isPD3_0() {

View File

@@ -98,9 +98,11 @@ ProtocolReceive::protocol_rx_state ProtocolReceive::protocol_rx_check_messageid(
/* Otherwise, there's either no stored ID or this message has an ID we
* haven't just seen. Transition to the Store_MessageID state. */
if (PD_MESSAGEID_GET(&tempMessage) == _rx_messageid) {
/*if (PD_MESSAGEID_GET(&tempMessage) == _rx_messageid) {
return PRLRxWaitPHY;
} else {
} else*/
{
return PRLRxStoreMessageID;
}
}

View File

@@ -254,16 +254,15 @@ void ProtocolTransmit::thread(const void *args) {
}
void ProtocolTransmit::notify(uint32_t notification) {
xTaskNotify(TaskHandle, notification,
eNotifyAction::eSetBits);
xTaskNotify(TaskHandle, notification, eNotifyAction::eSetBits);
}
void ProtocolTransmit::init() {
messagesWaiting = xQueueCreateStatic(PDB_MSG_POOL_SIZE,
sizeof(union pd_msg), ucQueueStorageArea, &xStaticQueue);
osThreadStaticDef(pd_txTask, thread,osPriorityAboveNormal, 0, TaskStackSize,
TaskBuffer, &TaskControlBlock);
osThreadStaticDef(pd_txTask, thread, PDB_PRIO_PRL, 0,
TaskStackSize, TaskBuffer, &TaskControlBlock);
TaskHandle = osThreadCreate(osThread(pd_txTask), NULL);
}
@@ -283,5 +282,5 @@ void ProtocolTransmit::getMessage() {
uint32_t ProtocolTransmit::waitForEvent(uint32_t mask, uint32_t ticksToWait) {
uint32_t pulNotificationValue;
xTaskNotifyWait(0x00, mask, &pulNotificationValue, ticksToWait);
return pulNotificationValue;
return pulNotificationValue & mask;
}

View File

@@ -46,14 +46,14 @@ int main(void) {
usb_pd_available = usb_pd_detect();
resetWatchdog();
settingsWereReset = restoreSettings(); // load the settings from flash
if (MMA8652FC::detect()) {
PCBVersion = 1;
MMA8652FC::initalize(); // this sets up the I2C registers
} else if (LIS2DH12::detect()) {
PCBVersion = 2;
// Setup the ST Accelerometer
LIS2DH12::initalize(); // startup the accelerometer
} else {
/*if (MMA8652FC::detect()) {
PCBVersion = 1;
MMA8652FC::initalize(); // this sets up the I2C registers
} else if (LIS2DH12::detect()) {
PCBVersion = 2;
// Setup the ST Accelerometer
LIS2DH12::initalize(); // startup the accelerometer
} else*/{
PCBVersion = 3;
systemSettings.SleepTime = 0;
systemSettings.ShutdownTime = 0; // No accel -> disable sleep