Exemple #1
0
/* Open the UART module */
cc_hndl uart_open(u32 module_id)
{
        struct uart_rtos_driver *rtos_drv = NULL;
        i32 retval;

        /* Check if the driver has already been loaded */
        rtos_drv = check_uart_rtosdrv_inuse(module_id);
        if(NULL == rtos_drv) {
                /* Driver not loaded, return error */
                goto exit;
        }

        if(rtos_drv->lock_obj) {
                RTOS_MUTEX_ACQUIRE(&rtos_drv->lock_obj);
        } else {
                /* Create the lock and sync objects */
                retval = RTOS_SEM_CREATE(&rtos_drv->sync_obj);
                if(retval < 0) {
                        goto exit1;
                }
                retval = RTOS_MUTEX_CREATE(&rtos_drv->lock_obj);
                if(retval < 0) {
                        goto exit2;
                }

                RTOS_MUTEX_ACQUIRE(&rtos_drv->lock_obj);
        }

        /* increment the reference count */
        rtos_drv->ref_cnt++;

        RTOS_MUTEX_RELEASE(&rtos_drv->lock_obj);

        return rtos_drv;

exit2:
        RTOS_MUTEX_DELETE(&rtos_drv->lock_obj);
exit1:
        RTOS_SEM_DELETE(&rtos_drv->sync_obj);

        rtos_drv->lock_obj = NULL;
        rtos_drv->sync_obj = NULL;
exit:
        return NULL;
}
Exemple #2
0
void
CLI_Configure(void)
{
#ifdef _USE_CLI_
    P4SEL |= BIT5 + BIT4;               /* P4.4,5 = USCI_A1 TXD/RXD */

    UCA1CTL1 |= UCSWRST;                /* Put state machine in reset */
    UCA1CTL0 = 0x00;
    UCA1CTL1 = UCSSEL__SMCLK + UCSWRST; /* Use SMCLK, keep RESET */
    UCA1BR0 = 0xD9;           /* 25MHz/115200= 217.01 =0xD9 (see User's Guide) */
    UCA1BR1 = 0x0;           /* 25MHz/9600= 2604 =0xA2C (see User's Guide) */

    UCA1MCTL = UCBRS_3 + UCBRF_0;       /* Modulation UCBRSx=3, UCBRFx=0 */

    UCA1CTL1 &= ~UCSWRST;               /* Initialize USCI state machine */

    /* Disable RX Interrupt on UART */
    UCA1IFG &= ~ (UCRXIFG | UCRXIFG);
    UCA1IE &= ~UCRXIE;
    RTOS_MUTEX_CREATE(&g_printLock);

    setHandler(&CLI_Put);
#endif
}