📄 c_armcomm.c
字号:
}
}
break;
case POWERUP_CHECK_RECHARGEABLE_VOLTAGE :
{
if (Rechargeable == TRUE)
{
if (dPowerConvert() < ARM_ON_MIN_COUNT)
{
if (StateTimer >= POWERUP_RECHARGE_TEST_TICK)
{
State = OFF;
}
}
else
{
State = ON;
}
}
else
{
State = ON;
}
}
break;
case ON :
{
CopyRightTimer = 0L;
State = ON_RUNNING;
}
break;
case ON_RUNNING :
{
// Read all inputs
dInputSelect(0);
dInputConvert(0);
dInputConvert(0);
dInputDeselect(0);
dInputSelect(1);
dInputConvert(1);
dInputConvert(1);
dInputDeselect(1);
dInputSelect(2);
dInputConvert(2);
dInputConvert(2);
dInputDeselect(2);
dInputSelect(3);
dInputConvert(3);
dInputConvert(3);
dInputDeselect(3);
// Update buttons
dButtonUpdate();
// Check for ARM communication
if (dArmCommCheck() == TRUE)
{
ArmTimer = 0;
ArmFucked = FALSE;
}
if (ArmTimer >= ON_ARM_TIMEOUT_TICK)
{
ArmFucked = TRUE;
}
else
{
ArmTimer++;
}
// Check for high voltage
dPowerSelect();
if (dPowerConvert() > ARM_ON_MAX_COUNT)
{
State = ON_HIGH_VOLTAGE;
}
// Control led
if (ArmFucked == TRUE)
{
if (StateTimer >= LED_TOGGLE_TICK)
{
StateTimer = 0;
if (LedState == TRUE)
{
LedState = FALSE;
}
else
{
LedState = TRUE;
}
}
}
else
{
LedState = TRUE;
}
if (LedState == FALSE)
{
dPowerDeselect();
}
// Check for SAMBA request
if (dPowerReadBoot() == TRUE)
{
State = SAMBA;
}
// Check for POWERDOWN request
if (dPowerReadOn() == FALSE)
{
State = POWERDOWN;
}
// Check for CopyRight valid
if (dArmCommCopyRight() != TRUE)
{
if (++CopyRightTimer >= COPYRIGHT_TICK)
{
State = POWERDOWN;
}
}
}
break;
case ON_HIGH_VOLTAGE :
{
dInputInit();
dPowerWriteOn(FALSE);
OverwriteFloat = TRUE;
ButtonTimer = CHECK_TEST_BUTTON_TICK;
State = ON_CHECK_BUTTON;
}
break;
case ON_CHECK_BUTTON :
{
dPowerSelect();
if (ButtonTimer)
{
dPowerDeselect();
if (dPowerConvert() >= TEST_BUTTON_VALUE)
{
ButtonTimer++;
if (ButtonTimer > (CHECK_TEST_BUTTON_TICK * 2))
{
dPowerSelect();
State = SAMBA;
}
}
else
{
ButtonTimer--;
}
}
else
{
if (dPowerConvert() <= ARM_ON_OK_COUNT)
{
State = RESET;
}
}
}
break;
case POWERDOWN :
{
State = POWERDOWN_DISABLE_AMP;
}
break;
case POWERDOWN_DISABLE_AMP :
{
if (!StateTimer)
{
dPowerDeselect();
}
if (StateTimer >= POWERUP_DISABLE_AMP_TICK)
{
State = POWERDOWN_TURN_ARM_OFF;
}
}
break;
case POWERDOWN_TURN_ARM_OFF :
{
if (!StateTimer)
{
dPowerWriteOn(FALSE);
}
if (StateTimer >= POWEROFF_TICK)
{
State = OFF;
}
}
break;
case OFF :
{
State = SLEEP;
}
break;
case SAMBA :
{
State = SAMBA_ACTIVATE;
}
break;
case SAMBA_ACTIVATE :
{
if (++StateTimer >= BUTTON_ACCEPT_TICK)
{
State = SAMBA_TURN_ARM_OFF_AND_WAIT;
}
}
break;
case SAMBA_TURN_ARM_OFF_AND_WAIT :
{
if (!StateTimer)
{
dPowerHigh();
dPowerDeselect();
dPowerWriteOn(FALSE);
}
if (++StateTimer >= SAMBA_POWEROFF_TICK)
{
State = SAMBA_TURN_ARM_ON_AND_WAIT;
}
}
break;
case SAMBA_TURN_ARM_ON_AND_WAIT :
{
if (!StateTimer)
{
dPowerWriteOn(TRUE);
}
if (++StateTimer >= SAMBA_BOOT_TICK)
{
State = SAMBA_TURN_ARM_OFF_FOR_RESET;
}
}
break;
case SAMBA_TURN_ARM_OFF_FOR_RESET :
{
if (!StateTimer)
{
dPowerWriteOn(FALSE);
dPowerFloat();
}
if (++StateTimer >= SAMBA_POWEROFF_TICK)
{
State = SAMBA_TURN_ARM_ON;
}
}
break;
case SAMBA_TURN_ARM_ON :
{
dPowerWriteOn(TRUE);
State = ON;
}
break;
case SLEEP :
{
Result = FALSE;
}
break;
}
}
// Update allways output
dOutputUpdate(OverwriteFloat);
return(Result);
}
void cArmCommExit(void)
{
dTimerExit();
dArmCommExit();
dButtonExit();
dInputExit();
dOutputExit();
dPowerExit();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -