Added some delay functions (untested)

This commit is contained in:
Markus Koch 2014-01-28 15:11:36 +01:00
parent 77818dde76
commit 766f788bf3
1 changed files with 41 additions and 0 deletions

View File

@ -8,6 +8,8 @@
#include "usbdrv.h"
#include "lib/prgKeyboard.h"
void delay_ms_wdreset(unsigned int ms);
static uchar reportBuffer[8] = {0,0,0,0,0,0,0,0}; /* buffer for HID reports */
static uchar idleRate; /* in 4 ms units */
static uchar newReport = 1; /* current report */
@ -310,6 +312,36 @@ void continueExecution() {
if ((keyType[oldKey-1] == KEYTYPE_TEXT) || keyAction == KEYACTION_DOWN) reportBuffer[0] &= ~(1 << (instr - 232)); // MOD-Keys (dis)
else reportBuffer[0] |= (1 << (instr - 232)); // MOD-Keys (en)
}
else if (instr >= 240 && instr <= 250) {
// Delay execution by a few ms
// Yeah I know the code is ugly, but I don't really care.
switch (instr) {
case 240:
delay_ms_wdreset(10);
break;
case 241:
delay_ms_wdreset(50);
break;
case 242:
delay_ms_wdreset(100);
break;
case 243:
delay_ms_wdreset(250);
break;
case 244:
delay_ms_wdreset(250);
delay_ms_wdreset(250);
break;
case 245:
delay_ms_wdreset(500);
delay_ms_wdreset(500);
delay_ms_wdreset(500);
delay_ms_wdreset(500);
break;
default:
break;
}
}
if (!flag_keyPress) memAddr++; // increase memory address
// Currently there's NO protection.The system could jump onto the next key
@ -317,6 +349,15 @@ void continueExecution() {
}
}
// MAX 255ms
void delay_ms_wdreset(unsigned int ms) {
int i;
for (i = 0; i < ms; i++) {
_delay_ms(1);
wdt_reset();
}
}
void detectKeyType() {
uint8_t keyId;
uint16_t x;