diff --git a/src/argb-colors.c b/src/argb-colors.c index ed58733..6ec48d9 100644 --- a/src/argb-colors.c +++ b/src/argb-colors.c @@ -20,7 +20,8 @@ #include "commands.c" #include "iousb.c" -enum synchronized_commands { SYNC_COLOR, SYNC_WAVE, SYNC_WAVE2, SYNC_OFF, SPEC_IMPULSE } +enum synchronized_commands { SYNC_COLOR, SYNC_WAVE, SYNC_WAVE2, SYNC_OFF, + SPEC_IMPULSE, SPEC_FLASH, SPEC_FLASH2, SPEC_CYCLE } synchronized_commands; struct separate_c{ @@ -58,7 +59,7 @@ void parse_color(char *color, unsigned int *red, unsigned int *green, unsigned i *red = *green = *blue = 0xff; } -int parse_brightness(char *brightness){ +int parse_brightness_intensity(char *brightness){ int ret = atoi(brightness); if (ret > 5) return 0; @@ -78,9 +79,15 @@ int prepare_sync(char* command){ sync_cmd = SYNC_OFF; else if (strcmp(command, "impulse") == 0) sync_cmd = SPEC_IMPULSE; + else if (strcmp(command, "flash") == 0) + sync_cmd = SPEC_FLASH; + else if (strcmp(command, "flash2") == 0) + sync_cmd = SPEC_FLASH2; + else if (strcmp(command, "cycle") == 0) + sync_cmd = SPEC_CYCLE; else{ printf("Invalid command \"%s\"\n" - "Allowed: color wave wave2 off\n", command); + "Allowed: color wave wave2 off. Plus aliases: impulse flash flash2 cycle\n", command); return -1; } return 0; @@ -139,7 +146,7 @@ int make_separate_commands_set(){ return 0; } -int sync_flow(unsigned int red, unsigned int green, unsigned int blue){ +int sync_flow(unsigned int red, unsigned int green, unsigned int blue, unsigned int brightness, unsigned int intensity){ switch (sync_cmd){ case SYNC_COLOR: return staticColorSync(red, green, blue); @@ -150,12 +157,24 @@ int sync_flow(unsigned int red, unsigned int green, unsigned int blue){ case SYNC_OFF: return turnOffBacklightSync(); case SPEC_IMPULSE: - make_separate_command(&s, 1, "impulse", red, green, blue, 4, 4); - make_separate_command(&s, 2, "impulse", red, green, blue, 4, 4); - make_separate_command(&s, 3, "impulse", red, green, blue, 4, 4); - make_separate_command(&s, 4, "impulse", red, green, blue, 4, 4); - make_separate_command(&s, 5, "impulse", red, green, blue, 4, 4); - make_separate_command(&s, 6, "impulse", red, green, blue, 4, 4); + for (int i = 1; i < 7; i++){ + make_separate_command(&s, i, "impulse", red, green, blue, brightness, intensity); + } + return runStaticCommand(s); + case SPEC_FLASH: + for (int i = 1; i < 7; i++){ + make_separate_command(&s, i, "flash", red, green, blue, brightness, intensity); + } + return runStaticCommand(s); + case SPEC_FLASH2: + for (int i = 1; i < 7; i++){ + make_separate_command(&s, i, "flash2", red, green, blue, brightness, intensity); + } + return runStaticCommand(s); + case SPEC_CYCLE: + for (int i = 1; i < 7; i++){ + make_separate_command(&s, i, "cycle", red, green, blue, brightness, intensity); + } return runStaticCommand(s); default: return -1; @@ -171,7 +190,7 @@ int main(int argc, char *argv[]) { arguments.c1 = arguments.c2 = arguments.c3 = arguments.c4 = arguments.c5 = arguments.c6 = arguments.color = "ff2f00"; arguments.i1 = arguments.i2 = arguments.i3 = arguments.i4 = - arguments.i5 = arguments.i6 = "4"; + arguments.i5 = arguments.i6 = arguments.intensity = "4"; arguments.b1 = arguments.b2 = arguments.b3 = arguments.b4 = arguments.b5 = arguments.b6 = arguments.brightness = "4"; arguments.z1 = arguments.z2 = arguments.z3 = @@ -187,9 +206,10 @@ int main(int argc, char *argv[]) { return -1; } - unsigned int red, green, blue, brightness; + unsigned int red, green, blue, brightness, intensity; parse_color(arguments.color, &red, &green, &blue); - brightness = parse_brightness(arguments.brightness); + brightness = parse_brightness_intensity(arguments.brightness); + intensity = parse_brightness_intensity(arguments.intensity); if (arguments.separate == 1){ sc.command1 = arguments.z1; @@ -206,19 +226,19 @@ int main(int argc, char *argv[]) { parse_color(arguments.c5, &sc.red5, &sc.green5, &sc.blue5); parse_color(arguments.c6, &sc.red6, &sc.green6, &sc.blue6); - sc.brightness1 = parse_brightness(arguments.b1); - sc.brightness2 = parse_brightness(arguments.b2); - sc.brightness3 = parse_brightness(arguments.b3); - sc.brightness4 = parse_brightness(arguments.b4); - sc.brightness5 = parse_brightness(arguments.b5); - sc.brightness6 = parse_brightness(arguments.b6); + sc.brightness1 = parse_brightness_intensity(arguments.b1); + sc.brightness2 = parse_brightness_intensity(arguments.b2); + sc.brightness3 = parse_brightness_intensity(arguments.b3); + sc.brightness4 = parse_brightness_intensity(arguments.b4); + sc.brightness5 = parse_brightness_intensity(arguments.b5); + sc.brightness6 = parse_brightness_intensity(arguments.b6); - sc.intensity1 = parse_brightness(arguments.i1); - sc.intensity2 = parse_brightness(arguments.i2); - sc.intensity3 = parse_brightness(arguments.i3); - sc.intensity4 = parse_brightness(arguments.i4); - sc.intensity5 = parse_brightness(arguments.i5); - sc.intensity6 = parse_brightness(arguments.i6); + sc.intensity1 = parse_brightness_intensity(arguments.i1); + sc.intensity2 = parse_brightness_intensity(arguments.i2); + sc.intensity3 = parse_brightness_intensity(arguments.i3); + sc.intensity4 = parse_brightness_intensity(arguments.i4); + sc.intensity5 = parse_brightness_intensity(arguments.i5); + sc.intensity6 = parse_brightness_intensity(arguments.i6); if (make_separate_commands_set(&sc)) return -1; @@ -251,7 +271,7 @@ int main(int argc, char *argv[]) { return -1; } } - else if (sync_flow(red, green, blue)){ // Sync & not-defined + else if (sync_flow(red, green, blue, brightness, intensity)){ // Sync & not-defined printf("Command transfer failure\n"); libusb_close(dev_handle); return -1; diff --git a/src/argb-colors.h b/src/argb-colors.h index 462c0f7..17dd1e3 100644 --- a/src/argb-colors.h +++ b/src/argb-colors.h @@ -25,11 +25,11 @@ Separate\n\ * flash2: color (-cN ...), brightness (-bN ...), frequency (-iN ...)\n\ * cycle: intensity (-iN ...), brightness (-bN ...)\n\n\ Zones description:\n\ - |‾‾|‾‾‾‾‾‾‾‾‾‾‾1| \n\ + |‾‾|‾‾‾‾‾‾‾‾‾‾‾4| \n\ | 6| |‾‾| |||| | \n\ | | ‾‾ |||| | \n\ |__| |‾‾‾| | \n\ - | |_4_| | \n\ + | |_1_| | \n\ |___2_3_5_______| \n"; static struct argp_option options[] = { @@ -38,6 +38,7 @@ static struct argp_option options[] = { {"color", 'c', "RGB_color", 0, "Color (000000..ffffff)" , 2}, {"brightness", 'b', "value", 0, "Brightness (0..4)" , 2}, + {"intensity", 'i', "value", 0, "Intensity (0..4)" , 2}, {"z1", Z1, "command", 0, "Command for zone 1", 3 }, {"z2", Z2, "command", 0, "Command for zone 2", 3 }, @@ -78,7 +79,7 @@ struct arguments{ int sync; int separate; char *color, - *brightness, + *brightness, *intensity, *z1, *z2, *z3, *z4, *z5, *z6, *c1, *c2, *c3, *c4, *c5, *c6, *i1, *i2, *i3, *i4, *i5, *i6, @@ -106,6 +107,9 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state){ case 'b': arguments->brightness = arg; break; + case 'i': + arguments->intensity = arg; + break; case 'v': verbose_output = 1; case Z1: diff --git a/src/commands.c b/src/commands.c index 759ef2a..8193fb1 100644 --- a/src/commands.c +++ b/src/commands.c @@ -198,7 +198,15 @@ int runStaticCommand(separate_commands_set c_set){ counter = 0; limit = 7; - + +#ifdef DEBUG + print_array(c_set.dir1, 64); + print_array(c_set.dir2, 64); + print_array(c_set.dir3, 64); + print_array(c_set.dir4, 64); + print_array(c_set.dir5, 64); + print_array(c_set.dir6, 64); +#endif if(64 != writeUsb(c_set.dir1)) return 1; diff --git a/src/device_setup.c b/src/device_setup.c index 757e069..7fc9a1a 100644 --- a/src/device_setup.c +++ b/src/device_setup.c @@ -19,7 +19,6 @@ int findDevice(libusb_device *dev){ } int configure_device(){ - libusb_context *context; int ret = libusb_init_context(&context, /*options=*/NULL, /*num_options=*/0); if (ret < 0){