aking0532 发表于 2015-1-11 19:13:04

8670 sink 源文件讨论2

每帖能发的字数太少,能不能给提提,2w字??
void LedsInit ( void )
{
      /*Set the callback handler for the task*/
    theSink.theLEDTask->task.handler = LedsMessageHandler ;
    static void LedsMessageHandler( Task task, MessageId id, Message message )
    {
      /*id首先来确定是不是DIM Update ,如果ID<DIM_MSG_BASE就是非DIM Update,
      然后ID用来确定使用哪个gActiveLEDS*/
      bool lOldState = LED_OFF ;
      uint16 lTime   = 0 ;
      LEDColour_t lColour ;   
   
      LEDActivity_t * lLED   = &theSink.theLEDTask->gActiveLEDS ;
      LEDPattern_t *lPattern = NULL ;
      bool lPatternComplete = FALSE ;
      
      if (id < DIM_MSG_BASE )
      {
      
          /*which pattern are we currently indicating for this LED pair*/
          /*这段是来选择哪种pattern显示,有gActiveLEDs里面的Type来决定*/
            if ( lLED->Type == IT_StateIndication)
            {
                /* this is a STATE indication */      
                lPattern = &theSink.theLEDTask->gStatePatterns[ lLED->Index] ;
            }
            else
            {   /*is an event indication*/
                lPattern = &theSink.theLEDTask->pEventPatterns [ lLED->Index ] ;
            }
      
            /* get which of the LEDs we are interested in for the pattern we are dealing with */
          /*      这个函数主要是取出使用哪个LED,首先检测LEDtask里面的gTheActiveFiltersH,
                gTheActiveFiltersL,如果有event使能就检测相应gEventFilters里面的colour是否是
                LED_COL_EITHER,如果不是就强制使用gEventFilters里定义的LED.*/
            lColour = LedsGetPatternColour ( lPattern ) ;


            /*get the state of the LED we are dealing with*/
          /*省略掉theSink.theLEDTask->后,
            实际上lOldState=gActiveLEDS->Index]->LED_A].OnOrOff
            或者是lOldState=gActiveLEDS->Index]->LED_A].OnOrOff */
            lOldState = theSink.theLEDTask->gActiveLEDS [ lPattern->LED_A ].OnOrOff ;
   
            LED_DEBUG(("LM : LED[%d] [%d] f[%d]of[%d]\n", id ,lOldState , lLED->NumFlashesComplete , lPattern->NumFlashes )) ;
            
            /*is LED currently off? */
            if (lOldState == LED_OFF)/*当前led关着*/
            {
                /* led is off so start the new pattern by turning LED on */
                lTime = LED_SCALE_ON_OFF_TIME(lPattern->OnTime) ;/* Ontime*10*倍数才是真正的时间,倍数在feature_config_type里定义 */
                /* #define LED_SCALE_ON_OFF_TIME(x) (uint16)((x * 10) << theSink.features.LedTimeMultiplier )*/


                LED_DEBUG(("LED: set ON time [%x]\n",lTime)) ;   
               
                /*Increment the number of flashes*/
                lLED->NumFlashesComplete++ ;/*NumFlashesComplete 应该是当前flash数的记录,估计是个递减的。*/
                  
                LED_DEBUG(("LED: Pair On\n")) ;
                LedsTurnOnLEDPair ( lPattern , lLED ) ;/*active pattern 俩个结构体都传递过来*/
            
            }


Fantasy 发表于 2015-1-12 16:05:32

太给力啦~~~

zx104700 发表于 2015-1-12 19:08:45

持续关注:lol:lol

mupro 发表于 2015-1-12 21:01:56

支持呀 字数不够,搞成Word上传就可以了
页: [1]
查看完整版本: 8670 sink 源文件讨论2