Ejemplo n.º 1
0
/*!
 * @brief Power manager user callback
 */
power_manager_error_code_t callback0(power_manager_notify_struct_t * notify,
                                     power_manager_callback_data_t * dataPtr)
{
    user_callback_data_t * userData = (user_callback_data_t*) dataPtr;
    power_manager_error_code_t ret = kPowerManagerError;
    volatile bool isLastByteTranmistComplete = false;

    switch (notify->notifyType)
    {
        case kPowerManagerNotifyBefore:
            userData->before.counter++;
            do
            {
                isLastByteTranmistComplete = UART_HAL_GetStatusFlag(BOARD_DEBUG_UART_BASEADDR,kUartTxComplete);
            } while (!isLastByteTranmistComplete);

            disable_unused_pins();
            ret = kPowerManagerSuccess;
            break;
        case kPowerManagerNotifyAfter:
            userData->after.counter++;
            enable_unused_pins();
            ret = kPowerManagerSuccess;
            break;
        default:
            userData->err++;
            break;
    }

    userData->lastType = notify->notifyType;

    return ret;
}
Ejemplo n.º 2
0
int serial_writable(serial_t *obj) {
    uint32_t uart_address[] = UART_BASE_ADDRS;
    if (UART_HAL_GetStatusFlag(uart_address[obj->index], kUartRxOverrun))
        UART_HAL_ClearStatusFlag(uart_address[obj->index], kUartRxOverrun);

    return UART_HAL_IsTxDataRegEmpty(uart_address[obj->index]);
}
Ejemplo n.º 3
0
/*!
 * @brief wait uart finished.
 *
 */
void wait_finish_uart(void)
{
    uint32_t bytesRemaining = 0;
    volatile bool isLastByteTranmistComplete = false;
    do
    {
        UART_DRV_GetTransmitStatus(BOARD_DEBUG_UART_INSTANCE, &bytesRemaining);
        isLastByteTranmistComplete = UART_HAL_GetStatusFlag(BOARD_DEBUG_UART_BASEADDR,kUartTxComplete);
    } while ((bytesRemaining != 0) || (!isLastByteTranmistComplete));
}
Ejemplo n.º 4
0
/*******************************************************************************
 * Callback function for Power Manager.
 ******************************************************************************/
power_manager_error_code_t powerManagerCallback(power_manager_notify_struct_t * notify,
                                     	 	 	power_manager_callback_data_t * dataPtr)
{
    power_manager_error_code_t ret = kPowerManagerError;
    volatile bool isLastByteTranmistComplete = false;

    switch (notify->notifyType)
    {
        case kPowerManagerNotifyBefore:
        	// Wait for any pending UART data to go out.
            do
            {
                isLastByteTranmistComplete = UART_HAL_GetStatusFlag(BOARD_DEBUG_UART_BASEADDR,
                													kUartTxComplete);
            } while (!isLastByteTranmistComplete);

            // Disable the UART pins.
            PORT_HAL_SetMuxMode(PORTE, 0u, kPortPinDisabled);
            PORT_HAL_SetMuxMode(PORTE, 1u, kPortPinDisabled);

            ret = kPowerManagerSuccess;
            break;

        case kPowerManagerNotifyAfter:

        	// Re-enable the UART pins.
        	PORT_HAL_SetMuxMode(PORTE, 0u, kPortMuxAlt3);
        	PORT_HAL_SetMuxMode(PORTE, 1u, kPortMuxAlt3);

            ret = kPowerManagerSuccess;
            break;

        default:
            break;
    }

    return ret;
}
Ejemplo n.º 5
0
void uart0_irq() {
    uart_irq(UART_HAL_IsTxDataRegEmpty(UART0_BASE), UART_HAL_IsRxDataRegFull(UART0_BASE), 0);
    if (UART_HAL_GetStatusFlag(UART0_BASE, kUartRxOverrun))
        UART_HAL_ClearStatusFlag(UART0_BASE, kUartRxOverrun);
}