Exemplo n.º 1
0
OSStatus MicoUartSend( mico_uart_t uart, const void* data, uint32_t size )
{
  if(uart_mapping[uart].uart == FUART){
#ifndef NO_MICO_RTOS
  mico_rtos_lock_mutex(&uart_interfaces[uart].tx_mutex);
#endif
    FuartSend( (uint8_t *)data, size);
#ifndef NO_MICO_RTOS    
    mico_rtos_unlock_mutex(&uart_interfaces[uart].tx_mutex);
#endif
    return kNoErr;
  }else if(uart_mapping[uart].uart == BUART){
#ifndef NO_MICO_RTOS
  mico_rtos_lock_mutex(&uart_interfaces[uart].tx_mutex);
#endif
    BuartSend( (uint8_t *)data, size);
  }else {
    return kUnsupportedErr;
  }

#ifndef NO_MICO_RTOS
  mico_rtos_get_semaphore( &uart_interfaces[ uart ].tx_complete, MICO_NEVER_TIMEOUT );
  mico_rtos_unlock_mutex(&uart_interfaces[uart].tx_mutex);
#else 
  while(uart_interfaces[ uart ].tx_complete == false);
  uart_interfaces[ uart ].tx_complete = false;
#endif
  return kNoErr;

}
Exemplo n.º 2
0
OSStatus platform_uart_transmit_bytes( platform_uart_driver_t* driver, const uint8_t* data_out, uint32_t size )
{
  if(driver->peripheral->uart == FUART){
#ifndef NO_MICO_RTOS
  mico_rtos_lock_mutex(&driver->tx_mutex);
#endif
    FuartSend( (uint8_t *)data_out, size);
#ifndef NO_MICO_RTOS    
    mico_rtos_unlock_mutex(&driver->tx_mutex);
#endif
    return kNoErr;
  }else if(driver->peripheral->uart == BUART){
#ifndef NO_MICO_RTOS
  mico_rtos_lock_mutex(&driver->tx_mutex);
#endif
    BuartSend( (uint8_t *)data_out, size);
  }else {
    return kUnsupportedErr;
  }

#ifndef NO_MICO_RTOS
  mico_rtos_get_semaphore( &driver->tx_complete, MICO_NEVER_TIMEOUT );
  mico_rtos_unlock_mutex( &driver->tx_mutex );
#else 
  while( driver->tx_complete == false );
  driver->tx_complete = false;
#endif
  return kNoErr;

}