/**************************************************************************************************
* 函数名称: receiveData
*
* 函数功能: 接收数据,并处理接收到的数据
*
* 入口参数: data_buffer - 接收数组的缓存
*
* Nb_bytes - 要接收的数据的个数
*
* 出口参数 :None
*
* 备 注:当接收到数据时, 该函数会被调用
**************************************************************************************************/
void receiveData(uint8_t* data_buffer, uint8_t Nb_bytes)
{
BSP_LED_Toggle(LED2);
resolve_rev_data(data_buffer); /* 算是接收到的数据 */
}
如果想发送数据,请调用以下函数|:
/**************************************************************************************************
* 函数名称: sendData
*
* 函数功能: 发送数据
*
* 入口参数: data_buffer - 发关数据缓冲数组
*
* Nb_bytes - 要发送的数据的个数
*
* 出口参数 : None
*
* 备 注 : None
**************************************************************************************************/
void sendData(uint8_t* data_buffer, uint8_t Nb_bytes)
{
if(BLE_Role == SERVER)
{
aci_gatt_update_char_value(sampleServHandle,TXCharHandle, 0, Nb_bytes, data_buffer);
}
else
{
aci_gatt_write_without_response(connection_handle, RX_HANDLE+1, Nb_bytes, data_buffer);
}
}
/**************************************************************************************************
* 函数名称 : Attribute_Modified_CB
*
* 函数功能 : 当参数有变化时,该函数会被调
*
* 入口参数 : handle - 连接句柄
*
* data_length - 改变的数据长度
*
* att_data - 数据缓存
*
* 出口参数 : None
*
* 备 注 :
**************************************************************************************************/
void Attribute_Modified_CB(uint16_t handle, uint8_t data_length, uint8_t *att_data)
{
if(handle == RXCharHandle + 1){
receiveData(att_data, data_length);
} else if (handle == TXCharHandle + 2) {
if(att_data[0] == 0x01)
notification_enabled = TRUE;
}
}
/**************************************************************************************************
* 函数名称 : GAP_ConnectionComplete_CB
*
* 函数功能 :当设备连接上以后,该函数会被回调
*
* 入口参数 : addr : 连接的设备的地址
*
* handle : 连接句柄
*
* 出口参数 : None
*
* 备 注 :
**************************************************************************************************/
void GAP_ConnectionComplete_CB(uint8_t addr[6], uint16_t handle)
{
connected = TRUE;
connection_handle = handle;
PRINTF("Connected to device:");
for(int i = 5; i > 0; i--)
{
PRINTF("%02X-", addr[i]);
}
PRINTF("%02Xn", addr[0]);
}
/**************************************************************************************************
* 函数名称 : GAP_DisconnectionComplete_CB
*
* 函数功能 : 当设备断开以后,该函数会被调用.
*
* 入口参数 : None
*
*出口参数 : None
*
* 备 注 :
**************************************************************************************************/
void GAP_DisconnectionComplete_CB(void)
{
connected = FALSE;
PRINTF("Disconnectedn");
/* 如果是主机,设置成重新连接 */
set_connectable = TRUE;
notification_enabled = FALSE;
/* 重新开始广播,用户也可以不让它广播 */
hci_le_set_advertise_enable(set_connectable);
}
/**************************************************************************************************
* 函数名称: receiveData
*
* 函数功能: 接收数据,并处理接收到的数据
*
* 入口参数: data_buffer - 接收数组的缓存
*
* Nb_bytes - 要接收的数据的个数
*
* 出口参数 :None
*
* 备 注:当接收到数据时, 该函数会被调用
**************************************************************************************************/
void receiveData(uint8_t* data_buffer, uint8_t Nb_bytes)
{
BSP_LED_Toggle(LED2);
resolve_rev_data(data_buffer); /* 算是接收到的数据 */
}
如果想发送数据,请调用以下函数|:
/**************************************************************************************************
* 函数名称: sendData
*
* 函数功能: 发送数据
*
* 入口参数: data_buffer - 发关数据缓冲数组
*
* Nb_bytes - 要发送的数据的个数
*
* 出口参数 : None
*
* 备 注 : None
**************************************************************************************************/
void sendData(uint8_t* data_buffer, uint8_t Nb_bytes)
{
if(BLE_Role == SERVER)
{
aci_gatt_update_char_value(sampleServHandle,TXCharHandle, 0, Nb_bytes, data_buffer);
}
else
{
aci_gatt_write_without_response(connection_handle, RX_HANDLE+1, Nb_bytes, data_buffer);
}
}
/**************************************************************************************************
* 函数名称 : Attribute_Modified_CB
*
* 函数功能 : 当参数有变化时,该函数会被调
*
* 入口参数 : handle - 连接句柄
*
* data_length - 改变的数据长度
*
* att_data - 数据缓存
*
* 出口参数 : None
*
* 备 注 :
**************************************************************************************************/
void Attribute_Modified_CB(uint16_t handle, uint8_t data_length, uint8_t *att_data)
{
if(handle == RXCharHandle + 1){
receiveData(att_data, data_length);
} else if (handle == TXCharHandle + 2) {
if(att_data[0] == 0x01)
notification_enabled = TRUE;
}
}
/**************************************************************************************************
* 函数名称 : GAP_ConnectionComplete_CB
*
* 函数功能 :当设备连接上以后,该函数会被回调
*
* 入口参数 : addr : 连接的设备的地址
*
* handle : 连接句柄
*
* 出口参数 : None
*
* 备 注 :
**************************************************************************************************/
void GAP_ConnectionComplete_CB(uint8_t addr[6], uint16_t handle)
{
connected = TRUE;
connection_handle = handle;
PRINTF("Connected to device:");
for(int i = 5; i > 0; i--)
{
PRINTF("%02X-", addr[i]);
}
PRINTF("%02Xn", addr[0]);
}
/**************************************************************************************************
* 函数名称 : GAP_DisconnectionComplete_CB
*
* 函数功能 : 当设备断开以后,该函数会被调用.
*
* 入口参数 : None
*
*出口参数 : None
*
* 备 注 :
**************************************************************************************************/
void GAP_DisconnectionComplete_CB(void)
{
connected = FALSE;
PRINTF("Disconnectedn");
/* 如果是主机,设置成重新连接 */
set_connectable = TRUE;
notification_enabled = FALSE;
/* 重新开始广播,用户也可以不让它广播 */
hci_le_set_advertise_enable(set_connectable);
}
举报