X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=server%2Fbbb_pin.c;h=4569578ecc7844fbba8d143be74fc450b2526e3d;hb=f677f4f422f9e4efd4cf83eea8ec271bb38f53d5;hp=39f6f1fe0226e0bc2c70767ae997e78a6f426880;hpb=e0f849d11ae14ee0637786b6663436aafff90254;p=matches%2FMCTX3420.git diff --git a/server/bbb_pin.c b/server/bbb_pin.c index 39f6f1f..4569578 100644 --- a/server/bbb_pin.c +++ b/server/bbb_pin.c @@ -61,7 +61,9 @@ static char g_buffer[BUFSIZ] = ""; void GPIO_Export(int pin) { if (pin < 0 || pin > GPIO_NUM_PINS) - Fatal("Invalid pin number %d", pin); + { + Abort("Invalid pin number %d", pin); + } @@ -69,7 +71,9 @@ void GPIO_Export(int pin) sprintf(g_buffer, "%s/export", GPIO_DEVICE_PATH); FILE * export = fopen(g_buffer, "w"); if (export == NULL) - Fatal("Couldn't open %s to export GPIO pin %d - %s", g_buffer, pin, strerror(errno)); + { + Abort("Couldn't open %s to export GPIO pin %d - %s", g_buffer, pin, strerror(errno)); + } fprintf(export, "%d", pin); fclose(export); @@ -78,14 +82,21 @@ void GPIO_Export(int pin) sprintf(g_buffer, "%s/gpio%d/direction", GPIO_DEVICE_PATH, pin); g_gpio[pin].fd_direction = open(g_buffer, O_RDWR); if (g_gpio[pin].fd_direction < 0) - Fatal("Couldn't open %s for GPIO pin %d - %s", g_buffer, pin, strerror(errno)); + { + Abort("Couldn't open %s for GPIO pin %d - %s", g_buffer, pin, strerror(errno)); + } // Setup value file descriptor sprintf(g_buffer, "%s/gpio%d/value", GPIO_DEVICE_PATH, pin); g_gpio[pin].fd_value = open(g_buffer, O_RDWR); if (g_gpio[pin].fd_value < 0) - Fatal("Couldn't open %s for GPIO pin %d - %s", g_buffer, pin, strerror(errno)); + { + Abort("Couldn't open %s for GPIO pin %d - %s", g_buffer, pin, strerror(errno)); + } + + Log(LOGDEBUG, "Exported GPIO%d", pin); + //sleep(1); } /** @@ -95,7 +106,9 @@ void GPIO_Unexport(int pin) { if (pin < 0 || pin > GPIO_NUM_PINS) - Fatal("Invalid pin number %d", pin); + { + Abort("Invalid pin number %d", pin); + } // Close file descriptors close(g_gpio[pin].fd_value); @@ -107,7 +120,9 @@ void GPIO_Unexport(int pin) sprintf(g_buffer, "%s/unexport", GPIO_DEVICE_PATH); FILE * export = fopen(g_buffer, "w"); if (export == NULL) - Fatal("Couldn't open %s to export GPIO pin %d - %s", g_buffer, pin, strerror(errno)); + { + Abort("Couldn't open %s to export GPIO pin %d - %s", g_buffer, pin, strerror(errno)); + } fprintf(export, "%d", pin); fclose(export); @@ -123,13 +138,17 @@ void GPIO_Unexport(int pin) void PWM_Export(int pin) { if (pin < 0 || pin > PWM_NUM_PINS) - Fatal("Invalid pin number %d", pin); + { + Abort("Invalid pin number %d", pin); + } // Export the pin sprintf(g_buffer, "%s/export", PWM_DEVICE_PATH); FILE * export = fopen(g_buffer, "w"); if (export == NULL) - Fatal("Couldn't open %s to export PWM pin %d - %s", g_buffer, pin, strerror(errno)); + { + Abort("Couldn't open %s to export PWM pin %d - %s", g_buffer, pin, strerror(errno)); + } fprintf(export, "%d\n", pin); fclose(export); @@ -138,22 +157,30 @@ void PWM_Export(int pin) sprintf(g_buffer, "%s/pwm%d/run", PWM_DEVICE_PATH, pin); g_pwm[pin].fd_run = open(g_buffer, O_WRONLY); if (g_pwm[pin].fd_run < 0) - Fatal("Couldn't open %s for PWM pin %d - %s", g_buffer, pin, strerror(errno)); + { + Abort("Couldn't open %s for PWM pin %d - %s", g_buffer, pin, strerror(errno)); + } sprintf(g_buffer, "%s/pwm%d/polarity",PWM_DEVICE_PATH, pin); g_pwm[pin].fd_polarity = open(g_buffer, O_WRONLY); if (g_pwm[pin].fd_polarity < 0) - Fatal("Couldn't open %s for PWM pin %d - %s", g_buffer, pin, strerror(errno)); + { + Abort("Couldn't open %s for PWM pin %d - %s", g_buffer, pin, strerror(errno)); + } sprintf(g_buffer, "%s/pwm%d/period_ns",PWM_DEVICE_PATH, pin); g_pwm[pin].file_period = fopen(g_buffer, "w"); if (g_pwm[pin].file_period == NULL) - Fatal("Couldn't open %s for PWM pin %d - %s", g_buffer, pin, strerror(errno)); + { + Abort("Couldn't open %s for PWM pin %d - %s", g_buffer, pin, strerror(errno)); + } sprintf(g_buffer, "%s/pwm%d/duty_ns",PWM_DEVICE_PATH, pin); g_pwm[pin].file_duty = fopen(g_buffer, "w"); if (g_pwm[pin].file_duty == NULL) - Fatal("Couldn't open %s for PWM pin %d - %s", g_buffer, pin, strerror(errno)); + { + Abort("Couldn't open %s for PWM pin %d - %s", g_buffer, pin, strerror(errno)); + } // Don't buffer the streams setbuf(g_pwm[pin].file_period, NULL); @@ -169,7 +196,9 @@ void PWM_Export(int pin) void PWM_Unexport(int pin) { if (pin < 0 || pin > PWM_NUM_PINS) - Fatal("Invalid pin number %d", pin); + { + Abort("Invalid pin number %d", pin); + } // Close the file descriptors close(g_pwm[pin].fd_polarity); @@ -181,7 +210,9 @@ void PWM_Unexport(int pin) sprintf(g_buffer, "%s/unexport", PWM_DEVICE_PATH); FILE * export = fopen(g_buffer, "w"); if (export == NULL) - Fatal("Couldn't open %s to unexport PWM pin %d - %s", g_buffer, pin, strerror(errno)); + { + Abort("Couldn't open %s to unexport PWM pin %d - %s", g_buffer, pin, strerror(errno)); + } fprintf(export, "%d", pin); fclose(export); @@ -201,7 +232,9 @@ void ADC_Export() sprintf(g_buffer, "%s/AIN%d", g_options.adc_device_path, i); g_adc[i].fd_value = open(g_buffer, O_RDONLY); if (g_adc[i].fd_value < 0) - Fatal("Couldn't open ADC %d device file %s - %s", i, g_buffer, strerror(errno)); + { + Abort("Couldn't open ADC %d device file %s - %s", i, g_buffer, strerror(errno)); + } //setbuf(g_adc[i].file_value, NULL); @@ -224,11 +257,15 @@ void ADC_Unexport() void GPIO_Set(int pin, bool value) { if (pwrite(g_gpio[pin].fd_direction, "out", 3, 0) != 3) - Fatal("Couldn't set GPIO %d direction - %s", pin, strerror(errno)); + { + Abort("Couldn't set GPIO %d direction - %s", pin, strerror(errno)); + } char c = '0' + (value); if (pwrite(g_gpio[pin].fd_value, &c, 1, 0) != 1) - Fatal("Couldn't read GPIO %d value - %s", pin, strerror(errno)); + { + Abort("Couldn't read GPIO %d value - %s", pin, strerror(errno)); + } } @@ -239,10 +276,10 @@ void GPIO_Set(int pin, bool value) bool GPIO_Read(int pin) { if (pwrite(g_gpio[pin].fd_direction, "in", 2, 0) != 2) - Fatal("Couldn't set GPIO %d direction - %s", pin, strerror(errno)); + Log(LOGERR,"Couldn't set GPIO %d direction - %s", pin, strerror(errno)); char c = '0'; if (pread(g_gpio[pin].fd_value, &c, 1, 0) != 1) - Fatal("Couldn't read GPIO %d value - %s", pin, strerror(errno)); + Log(LOGERR,"Couldn't read GPIO %d value - %s", pin, strerror(errno)); return (c == '1'); @@ -259,24 +296,31 @@ void PWM_Set(int pin, bool polarity, long period, long duty) { // Have to stop PWM before changing it if (pwrite(g_pwm[pin].fd_run, "0", 1, 0) != 1) - Fatal("Couldn't stop PWM %d - %s", pin, strerror(errno)); + { + Abort("Couldn't stop PWM %d - %s", pin, strerror(errno)); + } char c = '0' + polarity; if (pwrite(g_pwm[pin].fd_polarity, &c, 1, 0) != 1) - Fatal("Couldn't set PWM %d polarity - %s", pin, strerror(errno)); - + { + Abort("Couldn't set PWM %d polarity - %s", pin, strerror(errno)); + } rewind(g_pwm[pin].file_period); rewind(g_pwm[pin].file_duty); if (fprintf(g_pwm[pin].file_duty, "%lu", duty) == 0) - Fatal("Couldn't set duty cycle for PWM %d - %s", pin, strerror(errno)); - + { + Abort("Couldn't set duty cycle for PWM %d - %s", pin, strerror(errno)); + } if (fprintf(g_pwm[pin].file_period, "%lu", period) == 0) - Fatal("Couldn't set period for PWM %d - %s", pin, strerror(errno)); - + { + Abort("Couldn't set period for PWM %d - %s", pin, strerror(errno)); + } if (pwrite(g_pwm[pin].fd_run, "1", 1, 0) != 1) - Fatal("Couldn't start PWM %d - %s", pin, strerror(errno)); + { + Abort("Couldn't start PWM %d - %s", pin, strerror(errno)); + } } @@ -287,8 +331,9 @@ void PWM_Set(int pin, bool polarity, long period, long duty) void PWM_Stop(int pin) { if (pwrite(g_pwm[pin].fd_run, "0", 1, 0) != 1) - Fatal("Couldn't stop PWM %d - %s", pin, strerror(errno)); - + { + Abort("Couldn't stop PWM %d - %s", pin, strerror(errno)); + } } /**