/**************************************************************************//** \brief HAL's event about KEY has changed state. ******************************************************************************/ static void bspKeysInterruptHandler(void) { uint8_t i; for (i = 0; i < BSP_BUTTONS_AMOUNT; i++) { if (bspButtons[i].readPin()) { if (PRESSED == bspButtons[i].action.currentState) { bspButtons[i].action.currentState = RELEASED; bspButtons[i].action.wasReleased = ACT_ON; bspPostTask(BSP_BUTTONS); } } else { if (RELEASED == bspButtons[i].action.currentState) { bspButtons[i].action.currentState = PRESSED; bspButtons[i].action.wasPressed = ACT_ON; bspPostTask(BSP_BUTTONS); } } } }
/**************************************************************************//** \brief BSP's event about KEY has changed state. ******************************************************************************/ void bspButtonsHandler(void) { if (buttonsAction.wasPressed0) { buttonsAction.wasPressed0 = 0; buttonsAction.waitReleased0 = 1; if (NULL != bspButtonPressHandle) bspButtonPressHandle(BSP_KEY0); } if (buttonsAction.waitReleased0) { if (BSP_readKEY0()) { buttonsAction.waitReleased0 = 0; buttonsAction.currentState0 = RELEASED; if (NULL != bspButtonReleaseHandle) bspButtonReleaseHandle(BSP_KEY0); HAL_EnableIrq(IRQ_5); } else { bspPostTask(BSP_BUTTONS); } } }
/**************************************************************************//** \brief HAL's event about KEY has changed state. ******************************************************************************/ void bspKey0InterruptHandler(void) { HAL_DisableIrq(IRQ_5); buttonsAction.currentState0 = PRESSED; buttonsAction.wasPressed0 = 1; bspPostTask(BSP_BUTTONS); }
/**************************************************************************//** \brief Reads data from battery sensor. \param[in] data - sensor data. \return BC_SUCCESS - always. ******************************************************************************/ result_t BSP_ReadBatteryData(void (*f)(int16_t data)) { readBatteryDataCallback = f; bspPostTask(BSP_BATTERY); return BC_SUCCESS; }
/**************************************************************************//** \brief Reads data from the light sensor. \param[in] result - the result of the requested operation. true - operation finished successfully, false - some error has occured. \param[in] data - sensor data. \return BC_SUCCESS - always. ******************************************************************************/ result_t BSP_ReadLightData(void (*f)(bool result, int16_t data)) { readLightDataCallback = f; bspPostTask(BSP_LIGHT); return BC_SUCCESS; }
/**************************************************************************//** \brief Reads data from the temperature sensor. \param[in] result - the result of the requested operation. true - operation finished successfully, false - some error has occured. \param[in] data - sensor data. \return BC_SUCCESS - always. ******************************************************************************/ result_t BSP_ReadTemperatureData(void (*f)(bool result, int16_t data)) { readTemperatureDataCallback = f; bspPostTask(BSP_TEMPERATURE); return BC_SUCCESS; }