int main(void) { char car_num_str[8] = "A23456"; int tail_num = 0; // "A23456" -> 6 enum day today; // 1-7 char last_char; int ret; printf("Please input your car number:\n"); scanf("%s", car_num_str); printf("car num is %s\n", car_num_str); /* get the last char of car number string */ last_char = get_last_char(car_num_str); printf("last char is %c\n", last_char); tail_num = last_char - '0'; //today = MONDAY; //today = FRIDAY; today = get_week_day(2013, 12, 31); printf("today is day %d\n", today); ret = is_restricted(tail_num, today); if (ret == 1) printf("restricted!\n"); else printf("NOT restricted!\n"); return 0; }
static char keyboard_cmd(enum DrawCmds cmd, struct guiKeyboard *keyboard, struct touch *coords) { char lastchar = keyboard->lastchar; struct guiBox box; const char * const *keys = array[keyboard->type]; u8 row, i; char ch = '\0'; for(row = 0; row < 4; row++) { const char *ptr = keys[row]; u8 first = get_first_char(ptr); u8 last = get_last_char(ptr); u8 num_chars = 1 + last - first; u16 x_off = (LCD_WIDTH - KEY_W1 * num_chars) / 2; u16 y_off = Y_OFFSET + KEY_H * row; for(i = 0; i < strlen(ptr); i++) { char c = ptr[i]; if (c == '\x09') { //CAPS _make_box(&box, 0, Y_OFFSET + KEY_H * 2, KEY_W2, KEY_H); } else if (c == '\x08') { //DEL _make_box(&box, LCD_WIDTH - KEY_W2 -1, Y_OFFSET + KEY_H * 2, KEY_W2, KEY_H); } else if (c == '\x01' || c == '\x02') { //change KB type _make_box(&box, 0, Y_OFFSET + KEY_H * 3, KEY_W3, KEY_H); } else if (c == '\x06') { //DONE _make_box(&box, LCD_WIDTH - KEY_W3 -1, Y_OFFSET + KEY_H * 3, KEY_W3, KEY_H); } else if (c == ' ') { //SPACE _make_box(&box, KEY_W3, Y_OFFSET + KEY_H * 3, LCD_WIDTH - 2 * KEY_W3 -1, KEY_H); } else { _make_box(&box, x_off + (i - first) * KEY_W1, y_off, KEY_W1, KEY_H); } if (cmd == KB_DRAW) { if ((c == '\x01' || c == '\x02') && (lastchar == '\x01' || lastchar == '\x02')) keyboard->lastchar = c; u8 pressed = c == keyboard->lastchar; kb_draw_key(&box, set_case(c, keyboard->flags & FLAG_CAPS), pressed); } else if (cmd == KB_RELEASE || cmd == KB_PRESS) { if(c == lastchar) { kb_draw_key(&box, set_case(c, keyboard->flags & FLAG_CAPS), cmd == KB_PRESS); return '\0'; } } else if(cmd == KB_COMPARE_AND_PRESS) { if (coords_in_box(&box, coords)) { kb_draw_key(&box, set_case(c, keyboard->flags & FLAG_CAPS), 1); ch = c; } else if(c == lastchar) { kb_draw_key(&box, set_case(c, keyboard->flags & FLAG_CAPS), 0); } } } } return ch; }
static inline bool synth_full(void) { return get_last_char() == 0x13; }