static void put_start(struct pt3_i2cbuf *cbuf) { cmdbuf_add(cbuf, I_DATA_H); cmdbuf_add(cbuf, I_CLOCK_H); cmdbuf_add(cbuf, I_DATA_L); cmdbuf_add(cbuf, I_CLOCK_L); }
static void put_byte_write(struct pt3_i2cbuf *cbuf, u8 val) { u8 mask; for (mask = 0x80; mask > 0; mask >>= 1) cmdbuf_add(cbuf, (val & mask) ? I_DATA_H_NOP : I_DATA_L_NOP); cmdbuf_add(cbuf, I_DATA_H_ACK0); }
static void put_byte_read(struct pt3_i2cbuf *cbuf, u32 size) { int i, j; for (i = 0; i < size; i++) { for (j = 0; j < 8; j++) cmdbuf_add(cbuf, I_DATA_H_READ); cmdbuf_add(cbuf, (i == size - 1) ? I_DATA_H_NOP : I_DATA_L_NOP); } }
/* ================= engine_start ================= */ erbool engine_start (void) { init_time(); sys_get_time(); INIT(cvar); INIT(cmd); INIT(cmdbuf); cmd_register("quit", NULL, &quit_f, 0); cmd_register("echo", NULL, &echo_f, 0); INIT(fs); INIT(keyboard); cmdbuf_add("exec config.cfg\n", CMD_SRC_ENGINE); cmdbuf_frame(); INIT(mouse); INIT(image); INIT(video); INIT(gl); INIT(r); INIT(snd); INIT(g); cmdbuf_add("exec autoexec.cfg\n", CMD_SRC_ENGINE); cmdbuf_frame(); /* put sys args into cmdbuf (which begin with '+') once again (after all cmds like 'map' were registered) */ sys_arg_to_cmdbuf('+'); cmdbuf_frame(); return true; error: engine_stop(); return false; }
static void put_end(struct pt3_i2cbuf *cbuf) { cmdbuf_add(cbuf, I_END); if (cbuf->num_cmds % 2) cmdbuf_add(cbuf, I_END); }