This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Simpliciti是否可支持无线唤醒

Other Parts Discussed in Thread: SIMPLICITI

目前的协议栈低功耗只是建立在子节点自动进行低功耗模式,被MCU主动唤醒后进行数据上报。

我现在希望是能通过中心节点AP通过wor主动唤醒子节点ED。

如果不支持的话,我自己添加进去是否会有什么影响。目前在测试

  • 不支持WOR,你完全可以自己加。去掉simpliciTI网络层部分.

    附一个例子,供参考

  • 一直有个问题~ simpliciti协议栈SCB这个函数是怎么通过中断回调的~ 并没发现有执行回调的过程啊

  • 中断Mrfi_board.c 里BSP_ISR_FUNCTION( BSP_GpioPort1Isr, PORT1_VECTOR )

  • #ifdef MRFI_TIMER_ALWAYS_ACTIVE
    /**************************************************************************************************
     * @fn          MRFI_TimerISR
     *
     * @brief       Manages the timer interrupts.
     *              Everytime the timer overflows, this routine increments the
     *              remaining bytes in the MRFI_Time array.
     *              It also manages the 1 ms event counter sPending_ms_Events
     *              See the above macro for implementation
     *
     * @param       none
     *
     * @return      void (nothing)
     **************************************************************************************************
     */
    BSP_ISR_FUNCTION(Mrfi_TimerISR, BSP_TIMER_VECTOR)
    {
      {
        static union{ int32_t modulation; int8_t bytes[4]; };
        modulation += sTmrRateOffset;
        {
          uint16_t limit = bytes[3];
          limit += MRFI_ROLLOVER_LIMIT;
          BSP_TIMER_SET_OVERFLOW_VALUE( limit );
        }
        bytes[3] = 0; // clear upper byte
      }
    
      MRFI_Time++;
    
    #ifdef FREQUENCY_HOPPING
      if( sHopCount == 0 ) /* if ready to hop frequencies */
      {
        sHopCount = sHopRate;
        sHopNowSem = 1; /* indicate a frequency change is due */
    
        // manage the channel indexer in the isr so if a semaphore is missed,
        // the channel index is always up to date with the current channel
        sLogicalChannel++; // increment the channel index
    
        // check to see if the channel index is rolling over
        #if MRFI_NUM_LOGICAL_CHANS <= 255
          if( sLogicalChannel >= MRFI_NUM_LOGICAL_CHANS )
            sLogicalChannel = 0;
        #endif
    
      }
      else /* if not ready to hop */
        sHopCount--; /* decrement hop counter */
    
      if( sHopCount > FHSS_HOP_MARGIN + 2
          && sHopCount < MRFI_HOP_TIME_ms - 1 - FHSS_HOP_MARGIN )
        sTxValid = true;
      else
        sTxValid = false;
    #endif
    
      if( sOne_ms_event_hook != NULL ) /* if a 1 millisecond hook function exists */
        sOne_ms_event_hook( ); /* then call it */
    
      BSP_TIMER_CLEAR_OVERFLOW_FLAG( ); /* clear the event */
    
      return;
    }
    
    #endif
    

    这段代码协议栈并没有用到??

  • 找到了~ 感谢回复