📄 wsn_coordinator.c
字号:
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 + -