/* * COMPASS_LEDS.c * * Created on: Apr 3, 2021 * Author: Think */ #include "COMPASS_LEDS.h" bool COMPASS_LEDS_Init(COMPASS_LEDS *compassLeds) { compassLeds->southLed.Pin = GPIO_PIN_15; compassLeds->eastLed.Pin = GPIO_PIN_12; compassLeds->northLed.Pin = GPIO_PIN_13; compassLeds->westLed.Pin = GPIO_PIN_14; compassLeds->southLed.Mode = GPIO_MODE_OUTPUT_PP; compassLeds->eastLed.Mode = GPIO_MODE_OUTPUT_PP; compassLeds->northLed.Mode = GPIO_MODE_OUTPUT_PP; compassLeds->westLed.Mode = GPIO_MODE_OUTPUT_PP; compassLeds->southLed.Speed = GPIO_SPEED_LOW; compassLeds->eastLed.Speed = GPIO_SPEED_LOW; compassLeds->northLed.Speed = GPIO_SPEED_LOW; compassLeds->westLed.Speed = GPIO_SPEED_LOW; HAL_GPIO_Init(GPIOD, &compassLeds->southLed); HAL_GPIO_Init(GPIOD, &compassLeds->eastLed); HAL_GPIO_Init(GPIOD, &compassLeds->northLed); HAL_GPIO_Init(GPIOD, &compassLeds->westLed); HAL_GPIO_WritePin(GPIOD, compassLeds->southLed.Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, compassLeds->eastLed.Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, compassLeds->northLed.Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, compassLeds->westLed.Pin, GPIO_PIN_RESET); return true; } bool COMPASS_LEDS_Light(COMPASS_LEDS *compassLeds, Heading heading) { switch(heading) { case SOUTH: HAL_GPIO_WritePin(GPIOD, compassLeds->southLed.Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOD, compassLeds->eastLed.Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, compassLeds->northLed.Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, compassLeds->westLed.Pin, GPIO_PIN_RESET); break; case NORTH: HAL_GPIO_WritePin(GPIOD, compassLeds->southLed.Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, compassLeds->eastLed.Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, compassLeds->northLed.Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOD, compassLeds->westLed.Pin, GPIO_PIN_RESET); break; case EAST: HAL_GPIO_WritePin(GPIOD, compassLeds->southLed.Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, compassLeds->eastLed.Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOD, compassLeds->northLed.Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, compassLeds->westLed.Pin, GPIO_PIN_RESET); break; case WEST: HAL_GPIO_WritePin(GPIOD, compassLeds->southLed.Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, compassLeds->eastLed.Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, compassLeds->northLed.Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, compassLeds->westLed.Pin, GPIO_PIN_SET); break; default: HAL_GPIO_WritePin(GPIOD, compassLeds->southLed.Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, compassLeds->eastLed.Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, compassLeds->northLed.Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, compassLeds->westLed.Pin, GPIO_PIN_RESET); } return true; }