?? sapi.c
字號:
{
osal_stop_timerEx(sapi_TaskID, ZB_ALLOW_BIND_TIMER);
if ( timeout == 0 )
{
afSetMatch(sapi_epDesc.simpleDesc->EndPoint, FALSE);
}
else
{
afSetMatch(sapi_epDesc.simpleDesc->EndPoint, TRUE);
if ( timeout != 0xFF )
{
if ( timeout > 64 )
{
timeout = 64;
}
osal_start_timerEx(sapi_TaskID, ZB_ALLOW_BIND_TIMER, timeout*1000);
}
}
return;
}
/******************************************************************************
* @fn zb_SendDataRequest
*
* @brief The zb_SendDataRequest function initiates transmission of data
* to a peer device
*
* @param destination - The destination of the data. The destination can
* be one of the following:
* - 16-Bit short address of device [0-0xfffD]
* - ZB_BROADCAST_ADDR sends the data to all devices
* in the network.
* - ZB_BINDING_ADDR sends the data to a previously
* bound device.
*
* commandId - The command ID to send with the message. If the
* ZB_BINDING_ADDR destination is used, this parameter
* also indicates the binding to use.
*
* len - The size of the pData buffer in bytes
* handle - A handle used to identify the send data request.
* txOptions - TRUE if requesting acknowledgement from the destination.
* radius - The max number of hops the packet can travel through
* before it is dropped.
*
* @return none
*/
void zb_SendDataRequest ( uint16 destination, uint16 commandId, uint8 len,
uint8 *pData, uint8 handle, uint8 txOptions, uint8 radius )
{
afStatus_t status;
afAddrType_t dstAddr;
txOptions |= AF_DISCV_ROUTE;
// Set the destination address
if (destination == ZB_BINDING_ADDR)
{
// Binding
dstAddr.addrMode = afAddrNotPresent;
}
else
{
// Use short address
dstAddr.addr.shortAddr = destination;
dstAddr.addrMode = afAddr16Bit;
if ( ADDR_NOT_BCAST != NLME_IsAddressBroadcast( destination ) )
{
txOptions &= ~AF_ACK_REQUEST;
}
}
// Set the endpoint
dstAddr.endPoint = sapi_epDesc.simpleDesc->EndPoint;
// Send the message
status = AF_DataRequest(&dstAddr, &sapi_epDesc, commandId, len,
pData, &handle, txOptions, radius);
if (status != afStatus_SUCCESS)
{
SAPI_SendCback( SAPICB_DATA_CNF, status, handle );
}
}
/******************************************************************************
* @fn zb_ReadConfiguration
*
* @brief The zb_ReadConfiguration function is used to get a
* Configuration Protperty from Nonvolatile memory.
*
* @param configId - The identifier for the configuration property
* len - The size of the pValue buffer in bytes
* pValue - A buffer to hold the configuration property
*
* @return none
*/
uint8 zb_ReadConfiguration( uint8 configId, uint8 len, void *pValue )
{
uint8 size;
size = (uint8)osal_nv_item_len( configId );
if ( size > len )
{
return ZFailure;
}
else
{
return( osal_nv_read(configId, 0, size, pValue) );
}
}
/******************************************************************************
* @fn zb_WriteConfiguration
*
* @brief The zb_WriteConfiguration function is used to write a
* Configuration Property to nonvolatile memory.
*
* @param configId - The identifier for the configuration property
* len - The size of the pValue buffer in bytes
* pValue - A buffer containing the new value of the
* configuration property
*
* @return none
*/
uint8 zb_WriteConfiguration( uint8 configId, uint8 len, void *pValue )
{
return( osal_nv_write(configId, 0, len, pValue) );
}
/******************************************************************************
* @fn zb_GetDeviceInfo
*
* @brief The zb_GetDeviceInfo function retrieves a Device Information
* Property.
*
* @param param - The identifier for the device information
* pValue - A buffer to hold the device information
*
* @return none
*/
void zb_GetDeviceInfo ( uint8 param, void *pValue )
{
switch(param)
{
case ZB_INFO_DEV_STATE:
osal_memcpy(pValue, &devState, sizeof(uint8));
break;
case ZB_INFO_IEEE_ADDR:
osal_memcpy(pValue, &aExtendedAddress, Z_EXTADDR_LEN);
break;
case ZB_INFO_SHORT_ADDR:
osal_memcpy(pValue, &_NIB.nwkDevAddress, sizeof(uint16));
break;
case ZB_INFO_PARENT_SHORT_ADDR:
osal_memcpy(pValue, &_NIB.nwkCoordAddress, sizeof(uint16));
break;
case ZB_INFO_PARENT_IEEE_ADDR:
osal_memcpy(pValue, &_NIB.nwkCoordExtAddress, Z_EXTADDR_LEN);
break;
case ZB_INFO_CHANNEL:
osal_memcpy(pValue, &_NIB.nwkLogicalChannel, sizeof(uint8));
break;
case ZB_INFO_PAN_ID:
osal_memcpy(pValue, &_NIB.nwkPanId, sizeof(uint16));
break;
case ZB_INFO_EXT_PAN_ID:
osal_memcpy(pValue, &_NIB.extendedPANID, Z_EXTADDR_LEN);
break;
}
}
/******************************************************************************
* @fn zb_FindDeviceRequest
*
* @brief The zb_FindDeviceRequest function is used to determine the
* short address for a device in the network. The device initiating
* a call to zb_FindDeviceRequest and the device being discovered
* must both be a member of the same network. When the search is
* complete, the zv_FindDeviceConfirm callback function is called.
*
* @param searchType - The type of search to perform. Can be one of following:
* ZB_IEEE_SEARCH - Search for 16-bit addr given IEEE addr.
* searchKey - Value to search on.
*
* @return none
*/
void zb_FindDeviceRequest( uint8 searchType, void *searchKey )
{
if (searchType == ZB_IEEE_SEARCH)
{
ZDP_NwkAddrReq((uint8*) searchKey, ZDP_ADDR_REQTYPE_SINGLE, 0, 0 );
}
}
/******************************************************************************
* @fn SAPI_StartConfirm
*
* @brief The SAPI_StartConfirm callback is called by the ZigBee stack
* after a start request operation completes
*
* @param status - The status of the start operation. Status of
* ZB_SUCCESS indicates the start operation completed
* successfully. Else the status is an error code.
*
* @return none
*/
void SAPI_StartConfirm( uint8 status )
{
#if defined ( MT_SAPI_CB_FUNC )
/* First check if MT has subscribed for this callback. If so , pass it as
a event to MonitorTest and return control to calling function after that */
if ( SAPICB_CHECK( SPI_CB_SAPI_START_CNF ) )
{
zb_MTCallbackStartConfirm( status );
}
else
#endif //MT_SAPI_CB_FUNC
{
zb_StartConfirm( status );
}
}
/******************************************************************************
* @fn SAPI_SendDataConfirm
*
* @brief The SAPI_SendDataConfirm callback function is called by the
* ZigBee after a send data operation completes
*
* @param handle - The handle identifying the data transmission.
* status - The status of the operation.
*
* @return none
*/
void SAPI_SendDataConfirm( uint8 handle, uint8 status )
{
#if defined ( MT_SAPI_CB_FUNC )
/* First check if MT has subscribed for this callback. If so , pass it as
a event to MonitorTest and return control to calling function after that */
if ( SAPICB_CHECK( SPI_CB_SAPI_SEND_DATA_CNF ) )
{
zb_MTCallbackSendDataConfirm( handle, status );
}
else
#endif //MT_SAPI_CB_FUNC
{
zb_SendDataConfirm( handle, status );
}
}
/******************************************************************************
* @fn SAPI_BindConfirm
*
* @brief The SAPI_BindConfirm callback is called by the ZigBee stack
* after a bind operation completes.
*
* @param commandId - The command ID of the binding being confirmed.
* status - The status of the bind operation.
* allowBind - TRUE if the bind operation was initiated by a call
* to zb_AllowBindRespones. FALSE if the operation
* was initiated by a call to ZB_BindDevice
*
* @return none
*/
void SAPI_BindConfirm( uint16 commandId, uint8 status )
{
#if defined ( MT_SAPI_CB_FUNC )
/* First check if MT has subscribed for this callback. If so , pass it as
a event to MonitorTest and return control to calling function after that */
if ( SAPICB_CHECK( SPI_CB_SAPI_BIND_CNF ) )
{
zb_MTCallbackBindConfirm( commandId, status );
}
else
#endif //MT_SAPI_CB_FUNC
{
zb_BindConfirm( commandId, status );
}
}
/******************************************************************************
* @fn SAPI_AllowBindConfirm
*
* @brief Indicates when another device attempted to bind to this device
*
* @param
*
* @return none
*/
void SAPI_AllowBindConfirm( uint16 source )
{
#if defined ( MT_SAPI_CB_FUNC )
/* First check if MT has subscribed for this callback. If so , pass it as
a event to MonitorTest and return control to calling function after that */
if ( SAPICB_CHECK( SPI_CB_SAPI_ALLOW_BIND_CNF ) )
{
zb_MTCallbackAllowBindConfirm( source );
}
else
#endif //MT_SAPI_CB_FUNC
{
zb_AllowBindConfirm( source );
}
}
/******************************************************************************
* @fn SAPI_FindDeviceConfirm
*
* @brief The SAPI_FindDeviceConfirm callback function is called by the
* ZigBee stack when a find device operation completes.
*
* @param searchType - The type of search that was performed.
* searchKey - Value that the search was executed on.
* result - The result of the search.
*
* @return none
*/
void SAPI_FindDeviceConfirm( uint8 searchType, uint8 *searchKey, uint8 *result )
{
#if defined ( MT_SAPI_CB_FUNC )
/* First check if MT has subscribed for this callback. If so , pass it as
a event to MonitorTest and return control to calling function after that */
if ( SAPICB_CHECK( SPI_CB_SAPI_FIND_DEV_CNF ) )
{
zb_MTCallbackFindDeviceConfirm( searchType, searchKey, result );
}
else
#endif //MT_SAPI_CB_FUNC
{
zb_FindDeviceConfirm( searchType, searchKey, result );
}
}
/******************************************************************************
* @fn SAPI_ReceiveDataIndication
*
* @brief The SAPI_ReceiveDataIndication callback function is called
* asynchronously by the ZigBee stack to notify the application
* when data is received from a peer device.
*
* @param source - The short address of the peer device that sent the data
* command - The commandId associated with the data
* len - The number of bytes in the pData parameter
* pData - The data sent by the peer device
*
* @return none
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -