static void dump(Vga* vga) { Ctlr *ctlr; Attr *attr; int i; if(vga->mode) dbdumpmode(vga->mode); for(attr = vga->attr; attr; attr = attr->next) Bprint(&stdout, "vga->attr: %s=%s\n", attr->attr, attr->val); for(ctlr = vga->link; ctlr; ctlr = ctlr->link){ if(ctlr->dump == 0) continue; trace("%s->dump\n", ctlr->name); if(ctlr->flag && ctlr->flag != Fsnarf){ printitem(ctlr->name, "flag"); printflag(ctlr->flag); Bprint(&stdout, "\n"); } (*ctlr->dump)(vga, ctlr); ctlr->flag |= Fdump; } for(i=0; i < nelem(vga->edid); i++){ if(vga->edid[i]) printedid(vga->edid[i]); } Bprint(&stdout, "\n"); }
void main(void) { uint32 nrftx = 0, nrxuf = 0; int i = 0; static __xdata Rcall c; uint8 state = Idle; uint8 waitflag = 0, clearflag = 0; uint8 laststate, lastflag, lastMARCSTATE; laststate = state; lastflag = flag; lastMARCSTATE = MARCSTATE; memset(&curcall, 0, sizeof curcall); SLEEP &= ~SLEEP_OSC_PD; await(SLEEP & SLEEP_XOSC_S); CLKCON = (CLKCON & ~(CLKCON_CLKSPD | CLKCON_OSC)) | CLKSPD_DIV_1; await(!(CLKCON & CLKCON_OSC)); SLEEP |= SLEEP_OSC_PD; await(SLEEP & SLEEP_XOSC_S); P1DIR |= LEDBITS; printinit(); srvinit(); rfinit(); GREEN = RED = 0; // Enables interrupts. (Go go go) EA = 1; wdinit(); dprint("pingrf started.\n"); srvrx(); for(;;){ wdreset(); if(flag&Fpanic){ GREEN = 0; RED = 0; for(;;){ RED ^= 1; sleep(1000); /* TODO: reset */ } } if((flag&clearflag) != 0) flag &= ~(flag&clearflag); switch(state){ case Idle: if(peekcall()->type == Nop) break; nextcall(&c); waitflag = clearflag = 0; call(&c, &state, &waitflag, &clearflag); break; case Reply: reply(&c); state = Replying; break; case Replying: if(flag&Ftxcall){ flag &= ~Ftxcall; state = Idle; } // GREEN=1; break; default: if((flag&waitflag) != 0){ waitflag = flag&waitflag; flag &= ~waitflag; call(&c, &state, &waitflag, &clearflag); } /* if((flag&waitflag)==waitflag){ flag &= ~waitflag; call(&c, &state, &waitflag, &clearflag); } */ break; } #ifdef DEBUG if((i++%100000 == 0) || (flag != lastflag || state != laststate | lastMARCSTATE != MARCSTATE)){ //__critical { wdreset(); switch(state){ case Idle: dprint("idle"); break; case Replying: case Reply: dprint("replying %d", c.type); break; default: dprint("handling(%d) %d", state, c.type);; break; } lastflag = flag; laststate = state; lastMARCSTATE = MARCSTATE; dprint(" flag="); printflag(flag); dprint(" waitflag="); printflag(waitflag); dprint(" radio=%s\n", strmarcstate(lastMARCSTATE)); // dprint(" flag=%F waitflag=%F radio=%S\n", flag, waitflag, lastMARCSTATE); // // putchar('.'); // putchar('\n'); //} } #endif } }
void print_good() { printf("Good Job.\n"); printflag(); exit(0); }