示例#1
0
void lclcmd(int ch)
{
 if (ch == 'd')			/* dump memory */
 {
  putx(' ');
  if (gethex())
  {
   unsigned char *p;

   p = (unsigned char *) (int) val;
   if (gethex())
   {
    newline();
    prtbuf(p,val);
   }
  }
 }
#if DBGMSG
 else if (ch == 'D')		/* dump dbg buffer */
 {
  newline();
  int empty = dbgemp;
  for (int i = 0; i < dbgcnt; i++)
  {
   P_DBGMSG p = &dbgdata[empty];
   float t = (float) p->time / 1000;
   printf("%8.3f %8s %8x %12d\n", t, p->str,
	  (unsigned int) p->val, (int) p->val);
   empty++;
   if (empty >= MAXDBGMSG)
    empty = 0;
   while (1)
   {
    if (pollBufChar() == 0)
     break;
   }
  }
  printf("z %d x %d\n", zLoc, xLoc);
 }
 else if (ch == 'E')		/* clear debug buffer */
 {
  clrDbgBuf();
 }
#endif
#if ENCTEST
 else if (ch == 'e')
 {
  printf(" counts ");
  fflush(stdout);
  if (getnum())
  {
   encInit();
   encRunCount = val;
   encStart(true);
  }
  else
  {
   printf(" stop[y] ");
   fflush(stdout);
   ch = getx();
   if (ch == 'y')
   {
    encStop();
   }
  }
 }
#endif
 else if (ch == 't')
 {
  putx(' ');
  if (getnum())
  {
   newline();
   int i;
   int j = 0;
   for (i = 0; i < val; i++)
   {
    LOAD(XLDZCTL, j);
    read1(XRDZCTL);
    int testVal = j & ((1 << (zCtl_size)) - 1);
    if (readval.i != testVal)
    {
     setSync();
     printf("%4d z testVal %8x readVal %8x\n",
	    i, (unsigned int) testVal, (unsigned int) readval.i);
     clrSync();
    }

    LOAD(XLDXCTL, j);
    read1(XRDXCTL);
    testVal = j & ((1 << (xCtl_size)) - 1);
    if (readval.i != testVal)
    {
     setSync();
     printf("%4d x testVal %8x readVal %8x\n",
	    i, (unsigned int) testVal, (unsigned int) readval.i);
     clrSync();
    }
    j += 1;
    while (pollBufChar() != 0)
     ;
   }
  }
 }
 else if (ch == 'q')
 {
  gpioInfo(GPIOA);
  usartInfo(USART1);
  usartInfo(USART2);
  usartInfo(USART6);
  putstr1("start remcmd\n");
 }
 else if (ch == 'r')		/* read memory */
 {
  putx(' ');
  if (gethex())
  {
   printf("%x",*(int16_t *) (int) val);
  }
 }
 else if (ch == 'w')		/* write memory */
 {
  putx(' ');
  if (gethex())
  {
   int16_t *p;
   p = (int16_t *) (int) val;
   printf(" %x ",*p);
   if (gethex())
   {
    *p = val;
   }
  }
 }
 else if (ch == 'a')		/* set command address */
 {
  putx(' ');
  if (getnum())
   addr = val;
 }
 else if (ch == 'g')		/* read spi data */
 {
  putx(' ');
  if (getnum())
  {
   addr = val;			/* save address */
   read1(addr);			/* read from device */
   printf("\nread addr %x val %8lx %10ld",addr,readval.i,readval.i);
  }
 }
 else if (ch == 'G')		/* read spi repeatedly */
 {
  putx(' ');
  if (getnum())			/* enter address */
  {
   addr = val;			/* save address */
   putx(' ');
   if (getnum())		/* enter number of tries */
   {
    newline();
    int16_t i = (int16_t) val;
    while (1)
    {
     read1(addr);		/* read from device */
     if (chRdy())		/* if character available */
     {
      ch = chRead();
      break;
     }
     if ((i != 0)
     &&  (--i <= 0))
      break;
    }
    printf("spiw0 %d spiw1 %d",spiw0,spiw1);
   }
  }
 }
 else if (ch == 's')		/* send val to address a */
 {
  printf(" addr ");
  fflush(stdout);
  if (getnum())			/* read address */
  {
   addr = val;
   printf(" data ");
   fflush(stdout);
   if (getnum())		/* read data */
   {
    printf("\nsending addr %x %10ld val %8lx",addr,val,val);
    LOAD(addr,val);
   }
  }
 }
 else if (ch == 'p')		/* set print flag */
 {
  putx(' ');
  if (getnum())
  {
   print = val;
  }
 }
 else if (ch == 'r')		/* reset */
 {
  LOAD(XLDZCTL,0);
  LOAD(XLDXCTL,0);
  LOAD(XLDTCTL,0);
  LOAD(XLDDCTL,0);
 }
 else if (ch == 'x')		/* move x rel */
 {
  putx(' ');
  if (getnum())
  {
   xMoveRel(val, XMOV);
  }
 }
 else if (ch == 'z')		/* move z rel */
 {
  putx(' ');
  if (getnum())
  {
   zMoveRel(val, XMOV);
  }
 }
 else if (ch == 'u')		/* send debug message */
 {
  putx(' ');
  if (getnum())
  {
   dbgmsg("test",val);
  }
 }
}
示例#2
0
int main(void)
{
  unsigned int num_bytes                             ;
  WDTCTL   = WDTPW + WDTHOLD                         ;
  Init_CLK()                                         ;
  Init_PSPI()                                        ;
 
  P9DIR   |= IrDA_OUT;
  P9OUT   &=~IrDA_OUT;
  
  MAIN_POWER_ON                                      ;
/*  
  for(;;){
  for(i=0;i<40;i++)
  {
  P9OUT   |= IrDA_OUT;
  __delay_cycles(20000);
  P9OUT   &=~IrDA_OUT;
  __delay_cycles(20000);  
  
  }
  __delay_cycles(5000000);
  }
  
*/  
  
/*  
  for(;;){
  for(j=0;j<40;j++){
  for(i=0;i<50;i++)
  {
  P9OUT   &=~IrDA_OUT;
  __delay_cycles(270);  
  P9OUT   |= IrDA_OUT;
  __delay_cycles(270);
  }
  __delay_cycles(20000);
  }
  __delay_cycles(5000000);
  }
*/  
  myNode.node.ip     = IP4_ADDR(103,1,168,192)       ;
  myNode.node.mask   = IP4_ADDR(0,255,255,255)       ;
  myNode.node.gate   = IP4_ADDR(1,1,168,192)         ;
  myNode.node.mac[0] = 0x00                          ;
  myNode.node.mac[1] = 0x60                          ;
  myNode.node.mac[2] = 0x97                          ;
  myNode.node.mac[3] = 0x48                          ;
  myNode.node.mac[4] = 0xF4                          ;
  myNode.node.mac[5] = 0xAB                          ;
  encInit()                                          ;
  nicSetMacAddress()                                 ;
  encPhyWrite(0x14,0x0470)                           ;
  arptab_init()                                      ;
  ENC_SLEEP() ;// TEST
  ENC_WAKEUP();// TEST
  
  while(1)
  {
    num_bytes = encPacketReceive(&rxdnetbuf);
    if(num_bytes > 0)
    {
      if(rxdnetbuf.etherframe.protocal==ARP_PACKET)    // 收到一个AR请求包
      {			
	if(rxdnetbuf.arpframe.operation==0x0100)
	  arp_answer()                               ; // ARP request,处理arp数据包
	else if(rxdnetbuf.arpframe.operation==0x0200)
	  arp_process()                              ; // ARP answer
      }
      else if(   (rxdnetbuf.etherframe.protocal == IP_PACKET)	// 收到一个IP包
	     && ((rxdnetbuf.ipframe.verandihl&0xf0) == 0x40)	// IP V4
             && (rxdnetbuf.ipframe.destip[0] == myNode.nodebytes.ipbytes[0])
	     && (rxdnetbuf.ipframe.destip[1] == myNode.nodebytes.ipbytes[1])
	     && (rxdnetbuf.ipframe.destip[2] == myNode.nodebytes.ipbytes[2])
             && (rxdnetbuf.ipframe.destip[3] == myNode.nodebytes.ipbytes[3]))	
      {
        arp_ip_mac()                                 ;
	if(rxdnetbuf.ipframe.protocal == 1)		//	ICMP
	{
          if(rxdnetbuf.icmpframe.type == 8)		//	ECHO
            ping_answer()                            ;
        }
        else if(rxdnetbuf.ipframe.protocal == 17)	//	UDP
        {
//          net_udp_rcv()                              ;
          _NOP();
//          Clear_UPD_Buf()                            ;
        }
/*        
	else if(rxdnetbuf.ipframe.protocal == 6)	//	TCP
          tcp_rcve(&rxdnetbuf)                       ;
        updatearptab()                               ;
*/        
      }
    }
  }
}