This is for http://mbed.org/forum/bugs-suggestions/topic/1074/

Dependencies:   mbed

main.cpp

Committer:
shintamainjp
Date:
2010-09-08
Revision:
0:49c0ef6111e6
Child:
1:70466efca68e

File content as of revision 0:49c0ef6111e6:

/**
 * Test program for a bug. (http://mbed.org/forum/bugs-suggestions/topic/1074/)
 *
 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
 * http://shinta.main.jp/
 */

#include "mbed.h"
#include "Semaphore.h"

Serial ser(USBTX, USBRX);
Ticker ticker;
BusOut led(LED4, LED3, LED2, LED1);
Semaphore sem;

char shared_resource;   // This is a shared resource for example.

#define LOCK() sem.take()
#define UNLOCK() sem.release()

/**
 * a ticker.
 */
void func_tick(void) {
    led = led + 1;
}

/**
 * A call back function for serial interrupt.
 */
void func_serial_interrupt(void) {
    LOCK();
    shared_resource = ser.getc();
    UNLOCK();
}

/**
 * Entry point.
 */
int main() {
    ticker.attach_us(&func_tick, 100 * 1000);
    ser.attach(&func_serial_interrupt);
    while(1) {
        /*
         * Hung up your mbed system if you hit keys on console for Serial.
         */
        LOCK();
        printf("0x%x\n", shared_resource);
        UNLOCK();
        wait_ms(100);
    }
}