Esempio n. 1
0
int main() {
    int appFailureCode = 1;
    int sigError = -1;

    //Ready to catch signals
    sigset_t mask;
    sigemptyset(&mask);
    sigaddset(&mask, SIGUSR1);
    sigaddset(&mask, SIGUSR2);
    sigaddset(&mask, SIGINT);
    sigaddset(&mask, SIGTERM);
    if (sigprocmask(SIG_BLOCK, &mask, NULL) == -1) {
        sigError = errno;
    }

    initLog(false);

    Led redLed(24);
    redLed.on();

    try{
        if(sigError != -1){
            throw Error::system(sigError, "Unable to listen to signals: ");
        }

        Chapi chapi(mask, redLed);
        chapi.exec();
        appFailureCode = 0;
    }
    catch(Error &e){
        log(LOG_ERR, "%s", e.what());
        redLed.blinkNumber((e.getKind() == Error::configError) ? 2 : ((e.getKind() == Error::systemError) ? 3 : 4));
        loop();
    }
    catch(std::exception &e){
        log(LOG_ERR, "%s", e.what());
        redLed.blinkNumber(5);
        loop();
    }
    catch(char const*err) {
        log(LOG_ERR, "%s", err);
        redLed.blinkNumber(5);
        loop();
    }
    catch(...){
        log(LOG_ERR, "unknown error");
        redLed.blinkNumber(5);
        loop();
    }
    redLed.off();
    log(LOG_INFO, "chapi ended");
    return appFailureCode;
}
Esempio n. 2
0
void red_thread(void * arg)
{
//     Ar::Thread::sleep(1250);

    PwmOut redLed(LED_RED);
    redLed.period_ms(2);   // 500 Hz

//     Fader dutyCycle(0.035f);
    while (1)
    {
//         print_thread_ticks();

        int16_t a = g_z.receive();
        float dutyCycle = (float)(4096 - (a < 0 ? -a : a)) / 4096.0f;
        printf("z=%d\r\n", a);

        redLed = dutyCycle;

//         Ar::Thread::sleep(kLedFadeRate);
    }
}