[Tinyos-beta-commits] CVS: tinyos-1.x/beta/platform/pxa27x PXA27XUSBClientM.nc, 1.3, 1.4

Josh jsherbach at users.sourceforge.net
Thu Sep 1 11:44:21 PDT 2005


Update of /cvsroot/tinyos/tinyos-1.x/beta/platform/pxa27x
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23641

Modified Files:
	PXA27XUSBClientM.nc 
Log Message:
single depth outqueue / single task

Index: PXA27XUSBClientM.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/beta/platform/pxa27x/PXA27XUSBClientM.nc,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** PXA27XUSBClientM.nc	19 Aug 2005 19:31:32 -0000	1.3
--- PXA27XUSBClientM.nc	1 Sep 2005 18:44:19 -0000	1.4
***************
*** 145,149 ****
    static uint32_t state = 0; /*State of the USB device: either 0, POWERED,
  			       DEFAULT, or CONFIGURED*/
!   static uint8_t init = 0, InTask = 0, OutTask = 0, OutPaused = 0;
    /*booleans to prevent multiple 
      initializations, excessive tasks
--- 145,149 ----
    static uint32_t state = 0; /*State of the USB device: either 0, POWERED,
  			       DEFAULT, or CONFIGURED*/
!   static uint8_t init = 0, InTask = 0;//, OutTask = 0, OutPaused = 0;
    /*booleans to prevent multiple 
      initializations, excessive tasks
***************
*** 226,230 ****
      DynQueue QueueTemp;
      USBdata InStateTemp;
! 
      atomic statetemp = state;
  #if DEBUG   
--- 226,230 ----
      DynQueue QueueTemp;
      USBdata InStateTemp;
!     
      atomic statetemp = state;
  #if DEBUG   
***************
*** 429,433 ****
     uint32_t data[2];
     uint8_t statetemp;
! 
     clearIn();
     atomic statetemp = state;
--- 429,433 ----
     uint32_t data[2];
     uint8_t statetemp;
!    
     clearIn();
     atomic statetemp = state;
***************
*** 438,442 ****
       
  #if DEBUG
!        if(statetemp != CONFIGURED)
         trace("hCS; data: %x %x \r\n", data[0], data[1]);
  #endif
--- 438,442 ----
       
  #if DEBUG
!      if(statetemp != CONFIGURED)
         trace("hCS; data: %x %x \r\n", data[0], data[1]);
  #endif
***************
*** 520,526 ****
     uint8_t statetemp, InTaskTemp;
     DynQueue QueueTemp;
! 
     atomic statetemp = state;
! 
     if(statetemp != CONFIGURED)
       return;
--- 520,526 ----
     uint8_t statetemp, InTaskTemp;
     DynQueue QueueTemp;
!    
     atomic statetemp = state;
!    
     if(statetemp != CONFIGURED)
       return;
***************
*** 580,584 ****
     uint8_t *buff;
     uint32_t temp;
!    uint8_t bufflen, OutPausedTemp, OutTaskTemp;
     
     for(i = 0; i < IMOTE_HID_TYPE_COUNT; i++)
--- 580,584 ----
     uint8_t *buff;
     uint32_t temp;
!    uint8_t bufflen;//, OutPausedTemp, OutTaskTemp;
     
     for(i = 0; i < IMOTE_HID_TYPE_COUNT; i++)
***************
*** 595,627 ****
     }
     DynQueue_enqueue(OutQueue, buff);
!    if(DynQueue_getLength(OutQueue) >= 20){
       atomic OutPaused = 1;
!    }
!    atomic OutPausedTemp = OutPaused;
!    if(OutPausedTemp == 0)
       atomic _PXAREG(OutStream[0].endpointDR - _udcdr0 + _udccsr0) |=
!        _UDC_bit(UDCCSRAX_PC);
! 
!    atomic OutTaskTemp = OutTask;
!    if(DynQueue_getLength(OutQueue) >= 1 && OutTaskTemp == 0){
       atomic OutTask = 1;
       post processOut();
!    }
   }
   
   task void processOut(){
     uint8_t *buff;
!    uint8_t type, valid = 0, OutPausedTemp;
     USBdata OutStreamTemp;
! 
  #if DEBUG
     trace("In processOut;\r\n");
  #endif
     
!    if(DynQueue_getLength(OutQueue) < 1)
!      return;
!    atomic OutTask = 1;
     buff = (uint8_t *)DynQueue_dequeue(OutQueue);
     
     atomic OutStream[0].endpointDR = _udcdrb;   
     type = *(buff + IMOTE_HID_TYPE);
--- 595,640 ----
     }
     DynQueue_enqueue(OutQueue, buff);
!    /*if(DynQueue_getLength(OutQueue) >= 20){
       atomic OutPaused = 1;
!      }
!      atomic OutPausedTemp = OutPaused;
!      if(OutPausedTemp == 0)
       atomic _PXAREG(OutStream[0].endpointDR - _udcdr0 + _udccsr0) |=
!      _UDC_bit(UDCCSRAX_PC);
!      
!      atomic OutTaskTemp = OutTask;
!      if(DynQueue_getLength(OutQueue) <= 1 && OutTaskTemp == 0){
       atomic OutTask = 1;
       post processOut();
!      }*/
!    post processOut();
   }
   
   task void processOut(){
     uint8_t *buff;
!    uint8_t type, valid = 0;//, OutPausedTemp;
     USBdata OutStreamTemp;
!    
  #if DEBUG
     trace("In processOut;\r\n");
  #endif
     
!    /*   if(DynQueue_getLength(OutQueue) < 1){
! 	atomic{
! 	OutTask = 0;
! 	OutPaused = 0;
! 	}
! 	return;
! 	}
! 	
! 	atomic OutTask = 1;*/
     buff = (uint8_t *)DynQueue_dequeue(OutQueue);
     
+    /*   if(DynQueue_getLength(OutQueue) <= 10 && OutPausedTemp == 1){
+ 	atomic OutPaused = 0;
+ 	_PXAREG(_udcdrb - _udcdr0 + _udccsr0) |= _UDC_bit(UDCCSRAX_PC);
+ 	}*/
+    
+    
     atomic OutStream[0].endpointDR = _udcdrb;   
     type = *(buff + IMOTE_HID_TYPE);
***************
*** 647,650 ****
--- 660,664 ----
         if(OutStreamTemp->src == NULL){
  	 DynQueue_push(OutQueue, buff);
+ 	 post processOut();
  	 return;
         }
***************
*** 667,670 ****
--- 681,685 ----
         if(OutStreamTemp->src == NULL){
  	 DynQueue_push(OutQueue, buff);
+ 	 post processOut();
  	 return;
         }
***************
*** 687,690 ****
--- 702,706 ----
         if(OutStreamTemp->src == NULL){
  	 DynQueue_push(OutQueue, buff);
+ 	 post processOut();
  	 return;
         }
***************
*** 702,705 ****
--- 718,723 ----
  	 free(buff);
  	 buff = NULL;
+ 	 _PXAREG(_udcdrb - _udcdr0 + _udccsr0) |= _UDC_bit(UDCCSRAX_PC);
+ 	 post processOut();
  	 return;
         }
***************
*** 712,715 ****
--- 730,734 ----
         if(OutStreamTemp->src == NULL && valid != 0){
  	 DynQueue_push(OutQueue, buff);
+ 	 post processOut();
  	 return;
         }
***************
*** 723,726 ****
--- 742,746 ----
  	 free(buff);
  	 buff = NULL;
+ 	 post processOut();
  	 return;
         }
***************
*** 734,737 ****
--- 754,758 ----
         if(OutStreamTemp->src == NULL){
  	 DynQueue_push(OutQueue, buff);
+ 	 post processOut();
  	 return;
         }
***************
*** 745,748 ****
--- 766,771 ----
  	 free(buff);
  	 buff = NULL;
+ 	 _PXAREG(_udcdrb - _udcdr0 + _udccsr0) |= _UDC_bit(UDCCSRAX_PC);
+ 	 post processOut();
  	 return;
         }
***************
*** 755,758 ****
--- 778,782 ----
         if(OutStreamTemp->src == NULL){
  	 DynQueue_push(OutQueue, buff);
+ 	 post processOut();
  	 return;
         }
***************
*** 777,792 ****
     free(buff);
     buff = NULL;
!    
!    atomic OutPausedTemp = OutPaused;
!    atomic OutTask = 0;
!    if(DynQueue_getLength(OutQueue) <= 10 && OutPausedTemp == 1){
!      atomic OutPaused = 0;
!      _PXAREG(_udcdrb - _udcdr0 + _udccsr0) |= _UDC_bit(UDCCSRAX_PC);
!    }
!    
!    if(DynQueue_getLength(OutQueue) >= 1){
       atomic OutTask = 1;
       post processOut();
!    }
   }
   
--- 801,812 ----
     free(buff);
     buff = NULL;
!    _PXAREG(_udcdrb - _udcdr0 + _udccsr0) |= _UDC_bit(UDCCSRAX_PC);
!    /*atomic OutPausedTemp = OutPaused;
!      atomic OutTask = 0;
!      
!      if(DynQueue_getLength(OutQueue) >= 1){
       atomic OutTask = 1;
       post processOut();
!      }*/
   }
   
***************
*** 814,818 ****
       return;
     }
! 
     if(InStateTemp->pindex <= InStateTemp->n)
       if(((InStateTemp->type >> IMOTE_HID_TYPE_L) & 0x3) == IMOTE_HID_TYPE_L_BYTE){
--- 834,838 ----
       return;
     }
!    
     if(InStateTemp->pindex <= InStateTemp->n)
       if(((InStateTemp->type >> IMOTE_HID_TYPE_L) & 0x3) == IMOTE_HID_TYPE_L_BYTE){
***************
*** 909,917 ****
     DynQueue QueueTemp;
     USBdata InStateTemp;
! 
     atomic QueueTemp = InQueue;
     if(DynQueue_getLength(QueueTemp) <= 0)
       return;
! 
     atomic InState = (USBdata)DynQueue_peek(QueueTemp);
     atomic InStateTemp = InState;
--- 929,937 ----
     DynQueue QueueTemp;
     USBdata InStateTemp;
!    
     atomic QueueTemp = InQueue;
     if(DynQueue_getLength(QueueTemp) <= 0)
       return;
!    
     atomic InState = (USBdata)DynQueue_peek(QueueTemp);
     atomic InStateTemp = InState;
***************
*** 953,957 ****
   void isAttached(){
     uint8_t statetemp;
! 
     if(call HPLUSBClientGPIO.checkConnection() == SUCCESS)
  #if DEBUG
--- 973,977 ----
   void isAttached(){
     uint8_t statetemp;
!    
     if(call HPLUSBClientGPIO.checkConnection() == SUCCESS)
  #if DEBUG
***************
*** 984,988 ****
     uint8_t InTaskTemp;
     DynQueue QueueTemp;
! 
  #if DEBUG
     trace("Sending device descriptor;\r\n");
--- 1004,1008 ----
     uint8_t InTaskTemp;
     DynQueue QueueTemp;
!    
  #if DEBUG
     trace("Sending device descriptor;\r\n");
***************
*** 1141,1145 ****
     uint8_t InTaskTemp;
     DynQueue QueueTemp;
! 
  #if DEBUG
     atomic QueueTemp = InQueue;
--- 1161,1165 ----
     uint8_t InTaskTemp;
     DynQueue QueueTemp;
!    
  #if DEBUG
     atomic QueueTemp = InQueue;
***************
*** 1238,1242 ****
  	 End->bmAttributes = 0x3;
  	 End->wMaxPacketSize = 0x40;
! 	 End->bInterval = 0x10;
  	 
  	 UDCCRA |= (1 << 25) | ((End->bEndpointAddress & 0xF) << 15) | ((End->bmAttributes & 0x3) << 13) | (((End->bEndpointAddress & _UDC_bit(USB_ENDPOINT_IN)) != 0) << 12) | (End->wMaxPacketSize << 2) | 1;
--- 1258,1262 ----
  	 End->bmAttributes = 0x3;
  	 End->wMaxPacketSize = 0x40;
! 	 End->bInterval = 0x01;
  	 
  	 UDCCRA |= (1 << 25) | ((End->bEndpointAddress & 0xF) << 15) | ((End->bmAttributes & 0x3) << 13) | (((End->bEndpointAddress & _UDC_bit(USB_ENDPOINT_IN)) != 0) << 12) | (End->wMaxPacketSize << 2) | 1;
***************
*** 1245,1249 ****
  	 End->bmAttributes = 0x3;
  	 End->wMaxPacketSize = 0x40;
! 	 End->bInterval = 0x10;
  	 
  	 UDCCRB |= (1 << 25) | ((End->bEndpointAddress & 0xF) << 15) | ((End->bmAttributes & 0x3) << 13) | (((End->bEndpointAddress & _UDC_bit(USB_ENDPOINT_IN)) != 0) << 12) | (End->wMaxPacketSize << 2) | 1;
--- 1265,1269 ----
  	 End->bmAttributes = 0x3;
  	 End->wMaxPacketSize = 0x40;
! 	 End->bInterval = 0x01;
  	 
  	 UDCCRB |= (1 << 25) | ((End->bEndpointAddress & 0xF) << 15) | ((End->bmAttributes & 0x3) << 13) | (((End->bEndpointAddress & _UDC_bit(USB_ENDPOINT_IN)) != 0) << 12) | (End->wMaxPacketSize << 2) | 1;
***************
*** 1366,1371 ****
     free(Device.oConfigurations);
     for(i = 0; i < STRINGS_USED + 1; i++){
-      if(i != 0)
-        Strings[i]->uMisc.bString;
       if(i == 3)//serial num, special freeing mentioned in writeStringDescriptor
         free(Strings[i]->uMisc.bString);
--- 1386,1389 ----
***************
*** 1412,1420 ****
         OutStream[i].n = 0;
         OutStream[i].len = 0;
-        OutPaused = 0;
       }
-      if(isFlagged(*(_udcdrb - _udcdr0 + _udccsr0), _UDC_bit(UDCCSRAX_PC)))
-        _PXAREG(_udcdrb - _udcdr0 + _udccsr0) |= _UDC_bit(UDCCSRAX_PC);
-      
     }
   }
--- 1430,1434 ----



More information about the Tinyos-beta-commits mailing list