- case ACTUATOR_TEST0:
- {
- // Onboard LEDs test actuator
- FILE *led_handle = NULL; //code reference: http://learnbuildshare.wordpress.com/2013/05/19/beaglebone-black-controlling-user-leds-using-c/
- const char *led_format = "/sys/class/leds/beaglebone:green:usr%d/brightness";
- char buf[50];
- bool turn_on = value;
-
- for (int i = 0; i < 4; i++)
- {
- snprintf(buf, 50, led_format, i);
- if ((led_handle = fopen(buf, "w")) != NULL)
- {
- if (turn_on)
- fwrite("1", sizeof(char), 1, led_handle);
- else
- fwrite("0", sizeof(char), 1, led_handle);
- fclose(led_handle);
- }
- else
- Log(LOGDEBUG, "LED fopen failed: %s", strerror(errno));
- }
- }
- break;
- case ACTUATOR_TEST1:
- // GPIO pin digital actuator
- {
- // Quick actuator function for testing pins
- // GPIOPin can be passed as argument, but is just defined here for testing purposes
- // Modify this to only export on first run, only unexport on shutdown
- pinExport(60);
- pinDirection(60, 1);
- pinSet(value, 60);
- pinUnexport(60);
- }
- break;
- case ACTUATOR_TEST2:
- // PWM analogue actuator (currently generates one PWM signal with first PWM module)
- /*
- {
- if (pwminit == 0) { // If inactive, start the pwm module
- pwm_init();
- }
- if (pwmstart == 0) {
- pwm_start();
- pwm_set_period(FREQ); // Frequency is 50Hz defined in pwm header file
- }
- if(value >= 0 && value <= 1000) {
- double duty = value/1000 * 100; // Convert pressure to duty percentage
- pwm_set_duty((int)duty); // Set duty percentage for actuator (0-100%)
- }
- }
- */
- break;
+ //ARE YOU INSANE?
+ Log(LOGERR,"Insane value %lf for actuator %s", value, a->name);
+ return;
+ }
+ if (!(a->set(a->user_id, value)))
+ {
+ Fatal("Failed to set actuator %s to %lf", a->name, value);