📄 wsn_router.c
字号:
break;
case E_STATE_READ_HUMID_RUNNING:
if ((u32AHI_DioReadInput() & HTS_DATA_DIO_BIT_MASK) == 0)
{
sTempHumiditySensor.eState = E_STATE_READ_TEMP_HUMID_COMPLETE;
}
break;
case E_STATE_READ_TEMP_HUMID_COMPLETE:
sTempHumiditySensor.u16HumidReading = u16HTSreadHumidityResult();
sTempHumiditySensor.eState = E_STATE_READ_TEMP_START;
break;
case E_STATE_READ_TEMP_START:
vHTSstartReadTemp();
sTempHumiditySensor.eState = E_STATE_READ_TEMP_HUMID_RUNNING;
break;
case E_STATE_READ_TEMP_HUMID_RUNNING:
if ((u32AHI_DioReadInput() & HTS_DATA_DIO_BIT_MASK) == 0)
{
sTempHumiditySensor.eState = E_STATE_READ_TEMP_COMPLETE;
}
break;
case E_STATE_READ_TEMP_COMPLETE:
sTempHumiditySensor.u16TempReading = u16HTSreadTempResult();
sTempHumiditySensor.eState = E_STATE_READ_TEMP_HUMID_READY;
break;
case E_STATE_READ_TEMP_HUMID_READY:
break;
default:
break;
}
}
/****************************************************************************
*
* NAME: vSendData
*
* DESCRIPTION:
*
* Transmit sensor data to coordinator.
*
****************************************************************************/
PRIVATE void vSendData(void)
{
AF_Transaction_s asTransaction[1];
asTransaction[0].u8SequenceNum = u8AfGetTransactionSequence(TRUE);
asTransaction[0].uFrame.sMsg.u8TransactionDataLen = 6;
asTransaction[0].uFrame.sMsg.au8TransactionData[0] = sBattSensor.u16Reading;
asTransaction[0].uFrame.sMsg.au8TransactionData[1] = sBattSensor.u16Reading >> 8;
asTransaction[0].uFrame.sMsg.au8TransactionData[2] = u16ADC2_Result;
asTransaction[0].uFrame.sMsg.au8TransactionData[3] = u16ADC2_Result >> 8;
asTransaction[0].uFrame.sMsg.au8TransactionData[4] = u16ADC3_Result;
asTransaction[0].uFrame.sMsg.au8TransactionData[5] = u16ADC3_Result >> 8;
(void)afdeDataRequest(APS_ADDRMODE_SHORT, /* Address type */
0x0000, /* Destination address */
WSN_DATA_SINK_ENDPOINT, /* destination endpoint */
WSN_DATA_SOURCE_ENDPOINT, /* Source endpoint */
WSN_PROFILE_ID, /* Profile ID */
WSN_CID_SENSOR_READINGS, /* Cluster ID */
AF_MSG, /* Frame type */
1, /* Transactions */
asTransaction, /* Transaction data */
APS_TXOPTION_NONE, /* Transmit options */
SUPPRESS_ROUTE_DISCOVERY, /* Route discovery mode */
0); /* Radius count */
}
/****************************************************************************/
/*** Functions called by the stack ***/
/****************************************************************************/
/****************************************************************************
*
* 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 u8LQI,
uint8 *pu8Payload,
uint8 u8PayloadLen)
{
}
/****************************************************************************
*
* NAME: JZA_pu8AfMsgObject
*
* DESCRIPTION:
* Called when a MSG transaction has been received with a matching endpoint.
* In this application no action is taken as no MSG transactions are expected.
*
* 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 bool_t JZA_bAfMsgObject(APS_Addrmode_e eAddrMode,
uint16 u16AddrSrc,
uint8 u8SrcEP,
uint8 u8LQI,
uint8 u8DstEP,
uint8 u8ClusterID,
uint8 *pu8ClusterIDRsp,
AF_Transaction_s *puTransactionInd,
AF_Transaction_s *puTransactionRsp)
{
return 0;
}
/****************************************************************************
*
* 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(APS_Addrmode_e eAddrMode,
uint16 u16AddrSrc,
uint8 u8SrcEP,
uint8 u8LQI,
uint8 u8DstEP,
uint8 u8ClusterID,
AF_Transaction_s *puTransactionInd)
{
}
/****************************************************************************
*
* 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 bool_t JZA_bAfKvpObject(APS_Addrmode_e eAddrMode,
uint16 u16AddrSrc,
uint8 u8SrcEP,
uint8 u8LQI,
uint8 u8DstEP,
uint8 u8ClusterId,
uint8 *pu8ClusterIDRsp,
AF_Transaction_s *puTransactionInd,
AF_Transaction_s *puTransactionRsp)
{
return KVP_SUCCESS;
}
/****************************************************************************
*
* 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_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)
{
}
/****************************************************************************
*
* NAME: JZA_vAppEventHandler
*
* DESCRIPTION:
* Called regularly by the task scheduler. This function reads the hardware
* event queue and processes the events therein. It is important that this
* function exits after a relatively short time so that the other tasks are
* not adversely affected.
*
****************************************************************************/
PUBLIC void JZA_vAppEventHandler(void)
{
uint8 u8Msg;
uint8 u8TimerId;
if (!bAppTimerStarted)
{
if (bNwkJoined)
{
bAppTimerStarted = TRUE;
(void)bBosCreateTimer(vAppTick, &u8Msg, 0, (APP_TICK_PERIOD_ms / 10), &u8TimerId);
}
}
}
/****************************************************************************
*
* NAME: JZA_boAppStart
*
* DESCRIPTION:
* Called by Zigbee stack during initialisation.
*
* RETURNS:
* TRUE
*
****************************************************************************/
PUBLIC bool_t JZA_boAppStart(void)
{
JZS_vStartStack();
return TRUE;
}
/****************************************************************************
*
* 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)
{
if (eEventId == JZS_EVENT_NWK_JOINED_AS_ROUTER)
{
bNwkJoined = TRUE;
}
}
/****************************************************************************/
/*** END OF FILE ***/
/****************************************************************************/
PRIVATE void vADCread(void)
{
uint8 i;
switch (u8ADC_channel)
{
case 1:
vAHI_AdcEnable(E_AHI_ADC_CONVERT_DISABLE,
E_AHI_AP_INPUT_RANGE_2,
E_AHI_ADC_SRC_ADC_1);
vAHI_AdcStartSample();
while(bAHI_AdcPoll() != 0x00);
u16ADC0_Result_temp[FILTER_COUNTER-1] = u16AHI_AdcRead();
for(i=0;i<FILTER_COUNTER-1;i++)u16ADC0_Result_temp[i]=u16ADC0_Result_temp[i+1];
u32ADC0_Result=u16ADC0_Result_temp[0];
for(i=1;i<FILTER_COUNTER;i++)u32ADC0_Result=u32ADC0_Result+u16ADC0_Result_temp[i];
u16ADC0_Result=u32ADC0_Result/FILTER_COUNTER;
u8ADC_channel++;
break;
case 2:
vAHI_AdcEnable(E_AHI_ADC_CONVERT_DISABLE,
E_AHI_AP_INPUT_RANGE_2,
E_AHI_ADC_SRC_ADC_2);
vAHI_AdcStartSample();
while(bAHI_AdcPoll() != 0x00);
u16ADC1_Result_temp[FILTER_COUNTER-1] = u16AHI_AdcRead();
for(i=0;i<FILTER_COUNTER-1;i++)u16ADC1_Result_temp[i]=u16ADC1_Result_temp[i+1];
u32ADC1_Result=u16ADC1_Result_temp[0];
for(i=1;i<FILTER_COUNTER;i++)u32ADC1_Result=u32ADC1_Result+u16ADC1_Result_temp[i];
u16ADC1_Result=u32ADC1_Result/FILTER_COUNTER;
u8ADC_channel++;
break;
case 3:
while(!bAHI_APRegulatorEnabled());
vAHI_AdcEnable(E_AHI_ADC_CONVERT_DISABLE,
E_AHI_AP_INPUT_RANGE_2,
E_AHI_ADC_SRC_ADC_3);
vAHI_AdcStartSample();
while(bAHI_AdcPoll() != 0x00);
u16ADC2_Result_temp[FILTER_COUNTER-1] = u16AHI_AdcRead();
for(i=0;i<FILTER_COUNTER-1;i++)u16ADC2_Result_temp[i]=u16ADC2_Result_temp[i+1];
u32ADC2_Result=u16ADC2_Result_temp[0];
for(i=1;i<FILTER_COUNTER;i++)u32ADC2_Result=u32ADC2_Result+u16ADC2_Result_temp[i];
u16ADC2_Result=u32ADC2_Result/FILTER_COUNTER;
u8ADC_channel++;
break;
case 4:
vAHI_AdcEnable(E_AHI_ADC_CONVERT_DISABLE,
E_AHI_AP_INPUT_RANGE_2,
E_AHI_ADC_SRC_ADC_4);
vAHI_AdcStartSample();
while(bAHI_AdcPoll() != 0x00);
u16ADC3_Result_temp[FILTER_COUNTER-1] = u16AHI_AdcRead();
for(i=0;i<FILTER_COUNTER-1;i++)u16ADC3_Result_temp[i]=u16ADC3_Result_temp[i+1];
u32ADC3_Result=u16ADC3_Result_temp[0];
for(i=1;i<FILTER_COUNTER;i++)u32ADC3_Result=u32ADC3_Result+u16ADC3_Result_temp[i];
u16ADC3_Result=u32ADC3_Result/FILTER_COUNTER;
u8ADC_channel=1;
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -