⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wsn_coordinator.c

📁 ZIGBEE无线组网架构方案说明,主从方式祥述
💻 C
📖 第 1 页 / 共 2 页
字号:
    if (!bAppTimerStarted)
    {
        if (JZS_eStackState > JZS_STATE_JOINING)
        {
            bAppTimerStarted = TRUE;
            BOSCreateTimer(vToggleLed, 0, (APP_TICK_PERIOD_ms / 10), &u8TimerID);
        }
    }

    /* Check queue for hardware interrupts. Only process one per call */
    while (sHwEventQueue.u8WritePtr != sHwEventQueue.u8ReadPtr)
    {
        psHwIntData = &sHwEventQueue.asHwIntData[sHwEventQueue.u8ReadPtr];

        /* No hardware events expected, no handling required. Simply discard */

        sHwEventQueue.u8ReadPtr = (sHwEventQueue.u8ReadPtr + 1)
                                 & HW_INT_Q_PTR_MASK;
    }
}

/****************************************************************************
 *
 * NAME: JZA_vPeripheralEvent
 *
 * DESCRIPTION:
 * Called when a hardware event causes an interrupt. This function is called
 * from within the interrupt context so should be brief. In this case, the
 * information is placed on a simple FIFO queue to be processed later.
 *
 * PARAMETERS: Name          RW  Usage
 *             u32Device     R   Peripheral generating interrupt
 *             u32ItemBitmap R   Bitmap of interrupt sources within peripheral
 *
 ****************************************************************************/
PUBLIC void JZA_vPeripheralEvent(uint32 u32Device, uint32 u32ItemBitmap)
{
    tsHwIntData *psHwIntData;
    uint8        u8WriteNextPtr;

    /* Queue event for processing during JZA_vAppEventHandler call */

    u8WriteNextPtr = (sHwEventQueue.u8WritePtr + 1) & HW_INT_Q_PTR_MASK;

    if (u8WriteNextPtr != sHwEventQueue.u8ReadPtr)
    {
        /* There is space on queue */
        psHwIntData = &sHwEventQueue.asHwIntData[sHwEventQueue.u8WritePtr];
        psHwIntData->u32Device = u32Device;
        psHwIntData->u32ItemBitmap = u32ItemBitmap;

        sHwEventQueue.u8WritePtr = u8WriteNextPtr;
    }

    /* If no space on queue, interrupt is silently discarded */
}

/****************************************************************************
 *
 * NAME: JZA_vAppDefineTasks
 *
 * DESCRIPTION:
 * Called by Zigbee stack during initialisation to allow the application to
 * initialise any tasks that it requires. This application requires none.
 *
 * RETURNS:
 * void
 *
 ****************************************************************************/
PUBLIC void JZA_vAppDefineTasks(void)
{
}

/****************************************************************************
 *
 * NAME: JZA_boAppStart
 *
 * DESCRIPTION:
 * Called by Zigbee stack during initialisation. Sets up the profile
 * information and starts the networking activity
 *
 * RETURNS:
 * TRUE
 *
 ****************************************************************************/
PUBLIC BOOL JZA_boAppStart(void)
{
    uint8  u8DeviceVer = 0x00;
    uint8  u8Flags     = 0x00;
    uint8  u8EndPoint  = 0x40;
    uint16 u16DeviceId = 0x0000;

    uint8 u8InputClusterCnt      = 1;
    uint8 au8InputClusterList[]  = {WSN_CID_SENSOR_READINGS};
    uint8 u8OutputClusterCnt     = 0;
    uint8 au8OutputClusterList[] = {};

    (void)afmeAddSimpleDesc(u8EndPoint, WSN_PROFILE_ID, u16DeviceId,
                            u8DeviceVer, u8Flags, u8InputClusterCnt,
                            au8InputClusterList, u8OutputClusterCnt,
                            au8OutputClusterList);

    JZS_vStartStack();
    return TRUE;
}

/****************************************************************************
 *
 * NAME: JZA_eAfKvpObject
 *
 * DESCRIPTION:
 * Called when a KVP transaction has been received with a matching endpoint.
 *
 * PARAMETERS:      Name           RW  Usage
 *                  afSrcAddr      R   Address of sender device
 *                  u8DstEndpoint  R   Endpoint at receiver
 *                  pu8ClusterId   R   Pointer to cluster ID
 *                  eCommandTypeId R   KVP command type
 *                  u16AttributeId R   KVP attribute ID
 *                  pu8AfduLength  R   Pointer to length of data
 *                  pu8Afdu        R   Data array
 *
 * RETURNS:
 * AF_ERROR_CODE
 *
 ****************************************************************************/
PUBLIC AF_ERROR_CODE JZA_eAfKvpObject	 (AF_ADDRTYPE  		  afSrcAddr,
                                 		  uint8               u8DstEndpoint,
                                      	  uint8               u8SequenceNum,
                                 		  uint8              *pu8ClusterId,
                                 		  AF_COMMAND_TYPE_ID  eCommandTypeId,
                                 		  uint16              u16AttributeId,
                                 		  uint8              *pu8AfduLength,
                                 		  uint8              *pu8Afdu)
{
	return KVP_SUCCESS;
}

/****************************************************************************
 *
 * NAME: JZA_vAfKvpResponse
 *
 * DESCRIPTION:
 * Called after a KVP transaction with acknowledgement request, when the
 * acknowledgement arrives. In this application no action is taken as no
 * KVP transaction acknowledgements are expected.
 *
 * PARAMETERS:      Name                   RW  Usage
 *                  srcAddressMod          R   Address of sender device
 *                  transactionSequenceNum R   KVP transaction number
 *                  commandTypeIdentifier  R   KVP command type
 *                  dstEndPoint            R   Endpoint at receiver
 *                  clusterID              R   Cluster ID
 *                  attributeIdentifier    R   KVP attribute ID
 *                  errorCode              R   Result code
 *                  afduLength             R   Length of payload data
 *                  pAfdu                  R   Payload data array
 *
 ****************************************************************************/
PUBLIC void JZA_vAfKvpResponse(AF_ADDRTYPE         srcAddressMod,
                               UINT8               transactionSequenceNum,
                               AF_COMMAND_TYPE_ID  commandTypeIdentifier,
                               UINT8               dstEndPoint,
                               UINT8               clusterID,
                               UINT16              attributeIdentifier,
                               UINT8               errorCode,
                               UINT8               afduLength,
                               UINT8              *pAfdu )
{
}

/****************************************************************************
 *
 * NAME: JZA_pu8AfMsgObject
 *
 * DESCRIPTION:
 * Called when a MSG transaction has been received with a matching endpoint.
 *
 * PARAMETERS:      Name           RW  Usage
 *                  afSrcAddr      R   Address of sender device
 *                  dstEndPoint    R   Endpoint at receiver
 *                  clusterID      R   Pointer to cluster ID
 *                  afduLength     R   Pointer to length of data
 *                  pAfdu          R   Data array
 *
 * RETURNS:
 * NULL
 *
 ****************************************************************************/
PUBLIC UINT8 *JZA_pu8AfMsgObject(AF_ADDRTYPE afSrcAddr,
                                 UINT8       dstEndPoint,
                                 UINT8      *clusterID,
                                 UINT8      *afduLength,
                                 UINT8      *pAfdu)
{
	uint16 u16BattVoltage;
	uint16 u16Temperature;
	uint16 u16Humidity;

    if ((afSrcAddr.hAddrMode == DEV_16BIT_ADDR) && (dstEndPoint == 0x40))
    {
        if(*clusterID == WSN_CID_SENSOR_READINGS)
        {
            u16BattVoltage  = *(pAfdu + 1);
            u16BattVoltage  = u16BattVoltage << 8;
            u16BattVoltage |= *pAfdu;

            u16Temperature  = *(pAfdu + 3);
            u16Temperature  = u16Temperature << 8;
            u16Temperature |= *(pAfdu + 2);

            u16Humidity  = *(pAfdu + 5);
            u16Humidity  = u16Humidity << 8;
            u16Humidity |= *(pAfdu + 4);

            vTxSerialDataFrame(afSrcAddr.hAddress.shortAddress,
                               u16Humidity,
                               u16Temperature,
                               u16BattVoltage);
        }
    }
    return NULL;
}

/****************************************************************************
 *
 * NAME: JZA_vZdpResponse
 *
 * DESCRIPTION:
 * Called when a ZDP response frame has been received. In this application no
 * action is taken as no ZDP responses are anticipated.
 *
 * PARAMETERS:      Name           RW  Usage
 *                  u8Type         R   ZDP response type
 *                  pu8Payload     R   Payload buffer
 *                  u8PayloadLen   R   Length of payload
 *
 ****************************************************************************/
PUBLIC void JZA_vZdpResponse(uint8 u8Type, uint8 *pu8Payload, uint8 u8PayloadLen)
{
}

/****************************************************************************
 *
 * NAME: JZA_vStackEvent
 *
 * DESCRIPTION:
 * Called by Zigbee stack to pass an event up to the application.
 *
 * RETURNS:
 * TRUE
 *
 ****************************************************************************/
PUBLIC void JZA_vStackEvent(teJZS_EventIdentifier eEventId,
                            tuJZS_StackEvent *puStackEvent)
{
}

/****************************************************************************/
/***        END OF FILE                                                   ***/
/****************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -