/* Helper for host command to dump controller registers */ void lb_hc_cmd_dump(struct ec_response_lightbar *out) { int i; uint8_t reg; BUILD_ASSERT(ARRAY_SIZE(dump_reglist) == ARRAY_SIZE(out->dump.vals)); for (i = 0; i < ARRAY_SIZE(dump_reglist); i++) { reg = dump_reglist[i]; out->dump.vals[i].reg = reg; out->dump.vals[i].ic0 = controller_read(0, reg); out->dump.vals[i].ic1 = controller_read(1, reg); } }
void *do_chld(void *arg) { int client_socket = (int) arg; // the socket to the server if we are the controller int backend_socket = -1; int len = 0; int flag = 1; printf("Child thread: Socket number = %d\n", client_socket); while (flag) { struct op_hdr get_hdr; /* Read the header*/ printf("\t\t\tfirst read\n"); READ_SOC(len, client_socket, &get_hdr, HDR_SIZE); printf("***HDR***: op: %d, p1: %d, p2: %d, p3: %d\n", get_hdr.op, get_hdr.p1, get_hdr.p2, get_hdr.p3); /* ACT */ switch (get_hdr.op) { case OP_OPEN: controller_open(&backend_socket, client_socket, get_hdr); break; case OP_READ: controller_read(&backend_socket, client_socket, get_hdr); break; case OP_WRITE: controller_write(&backend_socket, client_socket, get_hdr); break; case OP_SEEK: controller_seek(&backend_socket, client_socket, get_hdr); break; case OP_SCANDIR: controller_scandir(&backend_socket, client_socket, get_hdr); break; case OP_CLOSE: controller_close(&backend_socket, client_socket, get_hdr); break; case OP_END: flag = 0; WRITE_SOC(len, backend_socket, &get_hdr, HDR_SIZE); break; default: /* ERROR! */ /* Since we are the server, we dont know how to handle errors on the client */ get_hdr.op = -1; WRITE_SOC(len, client_socket, &get_hdr, HDR_SIZE); printf("Bad opcode: %d\n", get_hdr.op); break; } } printf("Child: Done Processing...\n"); /* close the socket and exit this thread */ close(client_socket); pthread_exit((void *)NULL); /* never reached */ return(NULL); }