void save_scale(scale *s) { FILE *fd = fopen(s->o_file, "w+"); tab = 0; if (!fd) { ERROR("Cannot open %s for writing\n", s->o_file); } fprintf(fd, "#############################################\n# This scale has been generated by 42_scale #\n#############################################\n"); write_s(fd, "name", s->name.buf, 0); if (s->lang.val == LANG_EN) { write_s(fd, "lg", "en", 0); } else if (s->lang.val == LANG_FR) { write_s(fd, "lg", "fr", 0); } else if (s->lang.val == LANG_RU) { write_s(fd, "lg", "ru", 0); } fprintf(fd, "is_primary: true\n\n"); write_s(fd, "comment", s->comment.buf, 0); write_s(fd, "introduction_md", s->intro.buf, 1); write_s(fd, "disclaimer_md", s->disclaimer.buf, 1); write_s(fd, "guidelines_md", s->guidelines.buf, 1); write_i(fd, "correction_number", s->correction_n.val); write_i(fd, "duration", s->duration.val); fprintf(fd, "\n# **************************************************************************** #\n\n"); fprintf(fd, "sections:\n"); print_sections(s, fd); fclose(fd); }
void print_sections(scale *s, FILE *fd) { int position = 1, pos2; scale_sections *it; scale_questions *qt; scale_skills *sk; const char *skills[] = {"Adaptation & creativity", "Algorithms & AI", "Company experience", "DB & Data", "Functionnal programming", "Graphics", "Group & interpersonal", "Imperative programming", "Network & system administration", "Object-oriented programming", "Organization", "Parallel computing", "Rigor", "Security", "Technology integration", "Unix", "Web"}; for (it = s->sections; it; it = it->next) { fprintf(fd, "# BEGINNING OF SECTION %s #\n", it->name.buf); tab = 0; write_s(fd, "- name", it->name.buf, 0); tab = 2; write_i(fd, "position", position++); write_s(fd, "description", it->description.buf, 1); for (int i = 0; i < tab; fprintf(fd, " "), i++); fprintf(fd, "questions:\n"); pos2 = 1; for (qt = it->questions; qt; qt = qt->next) { fprintf(fd, " # Question %s #\n", qt->name.buf); tab = 2; write_s(fd, "- name", qt->name.buf, 0); tab = 4; write_i(fd, "position", pos2++); qt->guidelines.buf[qt->guidelines.len] = 0; write_s(fd, "guidelines", qt->guidelines.buf, 1); if (qt->rating.val == R_BOOL) { write_s(fd, "rating", "bool", 0); } else if (qt->rating.val == R_MULTI) { write_s(fd, "rating", "multi", 0); } if (qt->kind.val == R_STAND) { write_s(fd, "kind", "standard", 0); } else if (qt->kind.val == R_BONUS) { write_s(fd, "kind", "bonus", 0); } for (int i = 0; i < tab; fprintf(fd, " "), i++); fprintf(fd, "questions_skills:\n"); for (sk = qt->skills; sk; sk = sk->next) { write_i(fd, "- percentage", sk->percent.val); tab = 6; write_s(fd, "name", (char *)skills[sk->name.val], 0); tab = 4; } } fprintf(fd, "\n# END OF SECTION #\n\n"); } }
// Set page address 0~15 void Set_Page_Address(unsigned char add) { add+=32; add=0xb0|add; write_i(add); }
void Set_Column_Address(unsigned char add) { add+=32; write_i((0x10|(add>>4))); write_i((0x0f&add)); }
static void dump_page(pid_t pid, void *start) { debug_print("Dump page %p\n", start); char current_path[MAX_PATH]; snprintf(current_path, sizeof(current_path), "%s/%012lx.memdump", dump_path, (register_t)start); ptrace_putdata(pid, (long)tracer_buff->str_tmp, current_path, MAX_PATH); if (access(current_path, F_OK) != -1) return; int out = openat_i(pid, tracer_buff->str_tmp); write_i(pid, out, start, PAGESIZE); close_i(pid, out); }
void OLED_Init() { OLED_RESET_SetVal(0); Delay(10000); OLED_RESET_ClrVal(0); Delay(10000); OLED_RESET_SetVal(0); Delay(10000); write_i(0xAE); write_i(0x00); write_i(0x12); write_i(0x00); write_i(0xB0); write_i(0x81); write_i(0x4f); write_i(0xa1); write_i(0xa6); write_i(0xa8); write_i(0x1f); write_i(0xc8); write_i(0xd3); write_i(0x00); write_i(0xd5); write_i(0x80); write_i(0xd9); write_i(0x1f); write_i(0xda); write_i(0x12); write_i(0xdb); write_i(0x40); write_i(0x8d); write_i(0x14); // 0x10 = on, write_i(0xaf); Delay(10000); }