X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=server%2Factuator.c;h=50a27de69153ea4d4a484fc7b9924e49d455a9c8;hb=f5e2b07860f26bde42b9a9eb41ef68138ff2a379;hp=4df06bc828a02047674c358fe9277c057e5d36a2;hpb=466cbf5433adfc4fef7065164918201039159aff;p=matches%2FMCTX3420.git diff --git a/server/actuator.c b/server/actuator.c index 4df06bc..50a27de 100644 --- a/server/actuator.c +++ b/server/actuator.c @@ -6,7 +6,7 @@ #include "actuator.h" #include "options.h" // Files containing GPIO and PWM definitions -#include "gpio.h" +#include "bbb_pin.h" /** Array of Actuators (global to this file) initialised by Actuator_Init **/ @@ -14,7 +14,7 @@ static Actuator g_actuators[NUMACTUATORS]; /** Human readable names for the Actuators **/ const char * g_actuator_names[NUMACTUATORS] = { - "actuator_test0", "actuator_test1", "actuator_test2" + "actuator_test0", "gpio1_16", "EHRPWM0A_duty@60Hz" }; /** @@ -28,6 +28,11 @@ void Actuator_Init() Data_Init(&(g_actuators[i].data_file)); pthread_mutex_init(&(g_actuators[i].mutex), NULL); } + + // Initialise pins used + GPIO_Export(GPIO1_16); + PWM_Export(EHRPWM0A); + } /** @@ -192,35 +197,15 @@ void Actuator_SetValue(Actuator * a, double value) } 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); - } + GPIO_Set(GPIO1_16, (bool)(value)); 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%) - } - } - */ + static long freq = 16666666; // This is 60Hz + PWM_Set(EHRPWM0A, true, freq, value * freq); // Set the duty cycle break; + } } Log(LOGDEBUG, "Actuator %s set to %f", g_actuator_names[a->id], value); @@ -243,6 +228,7 @@ void Actuator_BeginResponse(FCGIContext * context, ActuatorId id, DataFormat for case JSON: FCGI_BeginJSON(context, STATUS_OK); FCGI_JSONLong("id", id); + FCGI_JSONPair("name", g_actuator_names[id]); break; default: FCGI_PrintRaw("Content-type: text/plain\r\n\r\n");