Example #1
0
File: chess.c Project: Omer80/wimps
static void  programer(set s)
{  set  s1, s2; 
   if(setpower(s) > 1) 
   { 
      split(s,&s1,&s2);
      prgcode[ncode][0] = set_first(&s1,1);
      prgcode[ncode][1] = set_first(&s2,1);
      ncode++; 
      programer(s1); 
      programer(s2);
   } 
} 
Example #2
0
int main() {
  laseron = 0;
  led1=led2=led3=enable=0;
  int cnt = 0;
  pc.printf("Starting\n\r");
  pwm.period(1.0/PWMFREQ);
  setpower(pwr);
  while(1) {
    if (button) {
	setpower(pwr);
	pc.printf("Fire laser\n\r");
	enable = led3 = 1;
    	while (button) wait(0.01);
    	enable = led3 = 0;
	cnt = 0;
    }
    wait(0.01);
    if (cnt++ > 500) {
	cnt = 0;
    	led1 = !led1;
    }
  }
}
Example #3
0
static void
init(Hci *hp)
{
	Ctlr *ctlr;
	Dwcregs *r;
	uint n, rx, tx, ptx;

	ctlr = hp->aux;
	r = ctlr->regs;

	ctlr->nchan = 1 + ((r->ghwcfg2 & Num_host_chan) >> ONum_host_chan);
	ctlr->chanintr = malloc(ctlr->nchan * sizeof(Rendez));

	r->gahbcfg = 0;
	setpower(PowerUsb, 1);

	while((r->grstctl&Ahbidle) == 0)
		;
	greset(r, Csftrst);

	r->gusbcfg |= Force_host_mode;
	tsleep(&up->sleep, return0, 0, 25);
	r->gahbcfg |= Dmaenable;

	n = (r->ghwcfg3 & Dfifo_depth) >> ODfifo_depth;
	rx = 0x306;
	tx = 0x100;
	ptx = 0x200;
	r->grxfsiz = rx;
	r->gnptxfsiz = rx | tx<<ODepth;
	tsleep(&up->sleep, return0, 0, 1);
	r->hptxfsiz = (rx + tx) | ptx << ODepth;
	greset(r, Rxfflsh);
	r->grstctl = TXF_ALL;
	greset(r, Txfflsh);
	dprint("usbotg: FIFO depth %d sizes rx/nptx/ptx %8.8ux %8.8ux %8.8ux\n",
		n, r->grxfsiz, r->gnptxfsiz, r->hptxfsiz);

	r->hport0 = Prtpwr|Prtconndet|Prtenchng|Prtovrcurrchng;
	r->gintsts = ~0;
	r->gintmsk = Hcintr;
	r->gahbcfg |= Glblintrmsk;
}
Example #4
0
File: chess.c Project: Omer80/wimps
static void split(set s,set *ss1,set *ss2)
{  int  nsub;
   set   s1_, s2_,s1,s2;
   int  w, w_;
   int  i, j, l, cross, cross_,dim;
   int *nextelem;

   dim=1<<(setpower(s)-1);
   
   nextelem=m_alloc(dim*sizeof(int));

   for(l=set_first(&s,1),w=0,nsub=0;l; )
   {  int l1;
      w += vertinfo[l-1].weight;
      l1=set_first(&s,l+1);
      if(l1) 
      {
         nextelem[nsub]=l;
         for(i=1; i<=nsub; i++)  nextelem[nsub+i]=-nextelem[nsub-i]; 
         nsub = 2 * nsub + 1; 
      } 
      l=l1;
   } 
   
   
   l = nextelem[0]-1; 
   w -= 2 * vertinfo[l].weight; 
   s2=set_constr(l+1,_E);
   
   s1=set_aun(s,s2); 
   cross = 0; 
   for(j=0; j<vertinfo[l].vlnc; j++) if(set_in(vertinfo[l].link[j],s1))cross++; 
   s1_=s1; 
   s2_=s2; 
   w_ = w; cross_ = cross; 
   for (i = 1; i < nsub; i++)
   { 
      l = abs(nextelem[i])-1; 
      if (nextelem[i] > 0) 
      { 
         set_del1(&s1_,l+1);
         for (j = 0; j < vertinfo[l].vlnc; j++) 
         { int ll=vertinfo[l].link[j];
           if(set_in(ll,s1_)) (cross_)++; else if(set_in(ll,s2_)) (cross_)--; 
         }   
         set_add1(&s2_,l+1); 
         w_ -= 2 * vertinfo[l].weight;
      } 
      else 
      { 
         set_del1(&s2_,l+1); 
         for (j = 0; j < vertinfo[l].vlnc; j++) 
         { int ll=vertinfo[l].link[j];
           if(set_in(ll,s2_)) (cross_)++; else if(set_in(ll,s1_)) (cross_)--; 
         }
         set_add1(&s1_,l+1); 
         w_ += 2 * vertinfo[l].weight; 
      } 

      if (MEMORY_OPTIM) 
      { 
         if(abs(w_) < abs(w) || (abs(w_) == abs(w) && cross_ < cross)) 
         {  s1=s1_; s2=s2_; w = w_;  cross = cross_; } 
      } 
      else 
      { 
         if(cross_ < cross || (cross_ == cross && abs(w_) < abs(w)))
         {  s1=s1_; s2=s2_;  w = w_;  cross = cross_; } 
      } 
   }
   free(nextelem);
   *ss1=s1;
   *ss2=s2;
}