mraa-i2c: Added interactive mode.
Signed-off-by: Henry Bruce <henry.bruce@intel.com> Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
committed by
Brendan Le Foll
parent
308289497e
commit
b109a12dd1
@@ -193,28 +193,26 @@ void i2c_detect_devices(int bus)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char** argv)
|
process_command(int argc, char** argv)
|
||||||
{
|
{
|
||||||
mraa_set_log_level(7);
|
|
||||||
if (argc == 1) {
|
|
||||||
print_command_error();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (argc > 1) {
|
|
||||||
if (strcmp(argv[1], "help") == 0) {
|
if (strcmp(argv[1], "help") == 0) {
|
||||||
print_help();
|
print_help();
|
||||||
|
return 0;
|
||||||
} else if (strcmp(argv[1], "version") == 0) {
|
} else if (strcmp(argv[1], "version") == 0) {
|
||||||
print_version();
|
print_version();
|
||||||
|
return 0;
|
||||||
} else if (strcmp(argv[1], "list") == 0) {
|
} else if (strcmp(argv[1], "list") == 0) {
|
||||||
print_busses();
|
print_busses();
|
||||||
|
return 0;
|
||||||
} else if (strcmp(argv[1], "detect") == 0) {
|
} else if (strcmp(argv[1], "detect") == 0) {
|
||||||
if (argc == 3) {
|
if (argc == 3) {
|
||||||
int bus = strtol(argv[2], NULL, 0);
|
int bus = strtol(argv[2], NULL, 0);
|
||||||
i2c_detect_devices(bus);
|
i2c_detect_devices(bus);
|
||||||
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
print_command_error();
|
print_command_error();
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
} else if ((strcmp(argv[1], "get") == 0)) {
|
} else if ((strcmp(argv[1], "get") == 0)) {
|
||||||
if (argc == 5) {
|
if (argc == 5) {
|
||||||
@@ -225,11 +223,14 @@ main(int argc, char** argv)
|
|||||||
uint8_t data;
|
uint8_t data;
|
||||||
if (i2c_get(bus, device_address, register_address, &data) == MRAA_SUCCESS) {
|
if (i2c_get(bus, device_address, register_address, &data) == MRAA_SUCCESS) {
|
||||||
fprintf(stdout, "Register %#02X = %#02X\n", register_address, data);
|
fprintf(stdout, "Register %#02X = %#02X\n", register_address, data);
|
||||||
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
fprintf(stdout, "i2c get failed\n");
|
fprintf(stdout, "i2c get failed\n");
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print_command_error();
|
print_command_error();
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
} else if ((strcmp(argv[1], "set") == 0)) {
|
} else if ((strcmp(argv[1], "set") == 0)) {
|
||||||
if (argc == 6) {
|
if (argc == 6) {
|
||||||
@@ -240,13 +241,57 @@ main(int argc, char** argv)
|
|||||||
fprintf(stdout, "Device %02X, Register = %02X, Value = %02X\n", device_address, register_address, value);
|
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) {
|
if (i2c_set(bus, device_address, register_address, value) != MRAA_SUCCESS) {
|
||||||
fprintf(stdout, "i2c set failed\n");
|
fprintf(stdout, "i2c set failed\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
print_command_error();
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print_command_error();
|
print_command_error();
|
||||||
}
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return 0;
|
|
||||||
|
void
|
||||||
|
run_interactive_mode()
|
||||||
|
{
|
||||||
|
char command[80];
|
||||||
|
while (1) {
|
||||||
|
int i, argc = 1;
|
||||||
|
char **argv;
|
||||||
|
char *arg;
|
||||||
|
argv[0] = "mraa-i2c";
|
||||||
|
fprintf(stdout, "Command: ");
|
||||||
|
fgets(command, 80, stdin);
|
||||||
|
command[strlen(command) - 1] = 0;
|
||||||
|
if (strcmp(command, "q") == 0)
|
||||||
|
return;
|
||||||
|
char *str = strtok(command, " ");
|
||||||
|
while (str != NULL) {
|
||||||
|
// fprintf(stdout, "%s\n", str);
|
||||||
|
arg = malloc(strlen(str) + 1);
|
||||||
|
argv[argc++] = strcpy(arg, str);
|
||||||
|
str = strtok(NULL, " ");
|
||||||
|
}
|
||||||
|
process_command(argc, argv);
|
||||||
|
for (i=1; i<argc; ++i)
|
||||||
|
free(argv[i]);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
mraa_set_log_level(7);
|
||||||
|
if (argc == 1) {
|
||||||
|
run_interactive_mode();
|
||||||
|
return 0;
|
||||||
|
} else
|
||||||
|
return process_command(argc, argv);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user