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; } }
void ArmEmulator::ApplyInterop( TrackInterop& ti ) { CLR_UINT32 mem; if(MemoryLoad( ti.m_pc, mem, DATATYPE_U4 ) && mem != c_InteropOpcode) { ti.m_op = mem; MemoryStore( ti.m_pc, c_InteropOpcode, DATATYPE_U4 ); } }
void ArmEmulator::RemoveInterop( CLR_UINT32 pc ) { AddressToHandlerMapIter it = m_callInterop.find( pc ); if(it != m_callInterop.end()) { TrackInterop ti = it->second; m_callInterop.erase( it ); if(ti.m_op != c_InteropOpcode) { MemoryStore( ti.m_pc, ti.m_op, DATATYPE_U4 ); } } }
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(); } } }