Ejemplo n.º 1
0
bool SettingsSetActiveById(uint8_t Setting) {
    if ( (Setting >= SETTINGS_FIRST) && (Setting <= SETTINGS_LAST) ) {
        uint8_t SettingIdx = SETTING_TO_INDEX(Setting);

        /* Break potentially pending timeout task (manual timeout) */
        CommandLinePendingTaskBreak();

        if (SettingIdx != GlobalSettings.ActiveSettingIdx)
        {
            /* Store current memory contents permanently */
            MemoryStore();

            GlobalSettings.ActiveSettingIdx = SettingIdx;
            GlobalSettings.ActiveSettingPtr =
                    &GlobalSettings.Settings[SettingIdx];

            /* Settings have changed. Progress changes through system */
            ConfigurationSetById(GlobalSettings.ActiveSettingPtr->Configuration);
            LogSetModeById(GlobalSettings.ActiveSettingPtr->LogMode);

            /* Recall new memory contents */
            MemoryRecall();

            SETTING_UPDATE(GlobalSettings.ActiveSettingIdx);
            SETTING_UPDATE(GlobalSettings.ActiveSettingPtr);
        }

        /* Notify LED. blink according to current setting */
        LEDHook(LED_SETTING_CHANGE, LED_BLINK + SettingIdx);

        return true;
    } else {
        return false;
    }
}
Ejemplo n.º 2
0
void ButtonTick(void)
{
    static uint8_t LastButtonState = 0;
    uint8_t ThisButtonState = ~BUTTON_PORT.IN;
    uint8_t ThisButtonChange = ThisButtonState ^ LastButtonState;
    uint8_t ThisButtonPress = ThisButtonChange & ThisButtonState;
    LastButtonState = ThisButtonState;

    if ( ThisButtonPress & BUTTON_MASK ) {
        uint8_t UidBuffer[32];
        ButtonActionEnum ButtonAction = GlobalSettings.ActiveSettingPtr->ButtonAction;

        if (ButtonAction == BUTTON_ACTION_UID_RANDOM) {
            for (uint8_t i=0; i<ActiveConfiguration.UidSize; i++) {
                UidBuffer[i] = RandomGetByte();
            }

            ApplicationSetUid(UidBuffer);
        } else if (ButtonAction == BUTTON_ACTION_UID_LEFT_INCREMENT) {
            ApplicationGetUid(UidBuffer);
            bool Carry = 1;
            uint8_t i;

            for (i=0; i<ActiveConfiguration.UidSize; i++) {
                if (Carry) {
                    if (UidBuffer[i] == 0xFF) {
                        Carry = 1;
                    } else {
                        Carry = 0;
                    }

                    UidBuffer[i] = (UidBuffer[i] + 1) & 0xFF;
                }
            }

            ApplicationSetUid(UidBuffer);
        } else if (ButtonAction == BUTTON_ACTION_UID_RIGHT_INCREMENT) {
            ApplicationGetUid(UidBuffer);
            bool Carry = 1;
            uint8_t i = ActiveConfiguration.UidSize;

            while(i-- > 0) {
                if (Carry) {
                    if (UidBuffer[i] == 0xFF) {
                        Carry = 1;
                    } else {
                        Carry = 0;
                    }

                    UidBuffer[i] = (UidBuffer[i] + 1) & 0xFF;
                }
            }

            ApplicationSetUid(UidBuffer);
        } else if (ButtonAction == BUTTON_ACTION_UID_LEFT_DECREMENT) {
            ApplicationGetUid(UidBuffer);
            bool Carry = 1;
            uint8_t i;

            for (i=0; i<ActiveConfiguration.UidSize; i++) {
                if (Carry) {
                    if (UidBuffer[i] == 0x00) {
                        Carry = 1;
                    } else {
                        Carry = 0;
                    }

                    UidBuffer[i] = (UidBuffer[i] - 1) & 0xFF;
                }
            }

            ApplicationSetUid(UidBuffer);
        } else if (ButtonAction == BUTTON_ACTION_UID_RIGHT_DECREMENT) {
            ApplicationGetUid(UidBuffer);
            bool Carry = 1;
            uint8_t i = ActiveConfiguration.UidSize;

            while(i-- > 0) {
                if (Carry) {
                    if (UidBuffer[i] == 0x00) {
                        Carry = 1;
                    } else {
                        Carry = 0;
                    }

                    UidBuffer[i] = (UidBuffer[i] - 1) & 0xFF;
                }
            }

            ApplicationSetUid(UidBuffer);
        } else if (ButtonAction == BUTTON_ACTION_CYCLE_SETTINGS) {
        	SettingsCycle();
        } else if (ButtonAction == BUTTON_ACTION_STORE_MEM) {
        	MemoryStore();
        } else if (ButtonAction == BUTTON_ACTION_RECALL_MEM) {
        	MemoryRecall();
        }
    }
}