int process_command(int argc, char** argv) { int status = 0; if (strcmp(argv[1], "help") == 0) { print_help(); return 0; } else if (strcmp(argv[1], "version") == 0) { print_version(); return 0; } else if (strcmp(argv[1], "list") == 0) { print_busses(); return 0; } else if (strcmp(argv[1], "detect") == 0) { if (argc == 3) { int bus = strtol(argv[2], NULL, 0); i2c_detect_devices(bus); return 0; } else { print_command_error(); return 1; } } else if ((strcmp(argv[1], "get") == 0) || (strcmp(argv[1], "getrpt") == 0)) { if (argc == 5) { int interation = 0; mraa_boolean_t should_repeat = strcmp(argv[1], "getrpt") == 0; int bus = strtol(argv[2], NULL, 0); uint8_t device_address = strtol(argv[3], NULL, 0); uint8_t register_address = strtol(argv[4], NULL, 0); // fprintf(stdout, "Device %02X, Register = %02X\n", device_address, register_address); uint8_t data; do { if (i2c_get(bus, device_address, register_address, &data) == MRAA_SUCCESS) { if (should_repeat) fprintf(stdout, "%4d: ", interation); fprintf(stdout, "Register %#02X = %#02X\n", register_address, data); status = 0; } else { fprintf(stdout, "i2c get failed\n"); status = 1; } interation++; usleep(10000); } while (should_repeat && status == 0); } else { print_command_error(); status = 1; } return status; } else if ((strcmp(argv[1], "set") == 0)) { if (argc == 6) { int bus = strtol(argv[2], NULL, 0); uint8_t device_address = strtol(argv[3], NULL, 0); uint8_t register_address = strtol(argv[4], NULL, 0); uint8_t value = strtol(argv[5], NULL, 0); fprintf(stdout, "Device %02X, Register = %02X, Value = %02X\n", device_address, register_address, value); if (i2c_set(bus, device_address, register_address, value) != MRAA_SUCCESS) { fprintf(stdout, "i2c set failed\n"); return 0; } return 1; } else { print_command_error(); return 1; } } else { print_command_error(); return 1; } }
int process_command(int argc, char** argv) { if (strcmp(argv[1], "help") == 0) { print_help(); return 0; } else if (strcmp(argv[1], "version") == 0) { print_version(); return 0; } else if (strcmp(argv[1], "list") == 0) { print_busses(); return 0; } else if (strcmp(argv[1], "detect") == 0) { if (argc == 3) { int bus = strtol(argv[2], NULL, 0); i2c_detect_devices(bus); return 0; } else { print_command_error(); return 1; } } else if ((strcmp(argv[1], "get") == 0)) { if (argc == 5) { int bus = strtol(argv[2], NULL, 0); uint8_t device_address = strtol(argv[3], NULL, 0); uint8_t register_address = strtol(argv[4], NULL, 0); // fprintf(stdout, "Device %02X, Register = %02X\n", device_address, register_address); uint8_t data; if (i2c_get(bus, device_address, register_address, &data) == MRAA_SUCCESS) { fprintf(stdout, "Register %#02X = %#02X\n", register_address, data); return 0; } else { fprintf(stdout, "i2c get failed\n"); return 1; } } else { print_command_error(); return 1; } } else if ((strcmp(argv[1], "set") == 0)) { if (argc == 6) { int bus = strtol(argv[2], NULL, 0); uint8_t device_address = strtol(argv[3], NULL, 0); uint8_t register_address = strtol(argv[4], NULL, 0); uint8_t value = strtol(argv[5], NULL, 0); fprintf(stdout, "Device %02X, Register = %02X, Value = %02X\n", device_address, register_address, value); if (i2c_set(bus, device_address, register_address, value) != MRAA_SUCCESS) { fprintf(stdout, "i2c set failed\n"); return 0; } return 1; } else { print_command_error(); return 1; } } else { print_command_error(); return 1; } }