Get BBB pin control working
[matches/MCTX3420.git] / server / actuator.c
index 4df06bc..50a27de 100644 (file)
@@ -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");

UCC git Repository :: git.ucc.asn.au