Exemplo n.º 1
0
static void AppThread(void *arg) {
    chRegSetThreadName("App");
    uint32_t EvtMsk;
    bool PillConnected = false;
    while(true) {
        EvtMsk = chEvtWaitAny(ALL_EVENTS);
        // ==== Process dose ====
//        if(EvtMsk & EVTMSK_DOSE_INC) {
//            // Check if radio damage occured. Will return 1 if no.
//            uint32_t FDamage = Radio.Damage;
//            //if(FDamage != 1) Uart.Printf("Dmg=%u\r", FDamage);
//            Dose.Increase(FDamage, diUsual);
//            //Uart.Printf("Dz=%u; Dmg=%u\r", Dose.Get(), FDamage);
//        }

        // ==== Store dose ====
//        if(EvtMsk & EVTMSK_DOSE_STORE) {
//            //if(Dose.Save() != OK) Uart.Printf("EE Fail\r");   // DEBUG
//        }

        // ==== Check pill ====
        if(EvtMsk & EVTMSK_PILL_CHECK) {
            // Check if new connection occured
            if(PillMgr.CheckIfConnected(PILL_I2C_ADDR) == OK) {
                if(!PillConnected) {
                    PillConnected = true;
                    App.IPillHandler();
                }
            }
            else PillConnected = false;
        } // if EVTMSK_PILL_CHECK
    } // while 1
}