// release the gpio for robot void release_robot_gpio(void) { gpioUnexport(OUT1); gpioUnexport(OUT2); gpioUnexport(OUT3); gpioUnexport(OUT4); gpioUnexport(ENGINE_LEFT); gpioUnexport(ENGINE_RIGHT); }
// Close GPIO module void MW_gpioTerminate(int32_T gpio) { GPIO_info *gpioInfoPtr = NULL; static int32_T numClosedGpio = 0; // Get GPIO information pointer and close the GPIO file descriptor gpioInfoPtr = MW_getGpioInfo(gpio); if (gpioInfoPtr == NULL) { return; } if (gpioClose(gpioInfoPtr->fd) < 0) { fprintf(stderr, "Error closing GPIO module.\n"); } if (gpioUnexport(gpio) < 0) { fprintf(stderr, "Error closing GPIO module.\n"); } numClosedGpio++; if ((numClosedGpio == numGpio) && !gpioInfo) { free(gpioInfo); } }