ANT 开发指南¶
1 概述¶
本文档将介绍ANT协议栈的使用以及功耗情况,以供开发者参阅。
3 协议栈介绍¶
协议栈支持多通道,最多同时开启5个通道,通道的开启需要先执行初始化函数,然后执行open函数,即可完成通道的开启。同时,我们需要注册一个事件的回调函数,用于协议栈向上层报告事件。事件的处理建议放在线程中完成,回调函数只做简单的操作,例如释放信号量等。这是因为回调函数是在中断中执行的,长时间占用中断会导致系统性能变差。
协议栈支持如下通道类型
Bidirectional Slave Channel
Bidirectional Master Channel
Shared Bidirectional Slave Channel
Shared Bidirectional Master Channel
Slave Receive Only Channel (diagnostic)
Master Transmit Only Channel (legacy)
协议栈仅支持如下数据类型
Broadcast Data
Acknowledged Data
4 API¶
ant_channel_init 函数实现了通道的初始化。通道初始化是通信的前提。
/**
* @brief Function for initializing the channel.
*
* @param channel_config Pointer to the channel configuration structure.
* @return uint8_t 0 SUCCESS, other FAIL.
*/
uint8_t ant_channel_init(ant_channel_config_t *channel_config);
ant_channel_open 函数实现了通道的开启,调用此函数后通道将开始发起通信。
/**
* @brief Function for open the channel.
*
* @param channel_num channel number.
* @return uint8_t 0 SUCCESS, other FAIL.
*/
uint8_t ant_channel_open(uint8_t channel_num);
ant_set_tx_power 函数实现了发射功率的设置。
/**
* @brief Function for Setting TX power.
*
* @param power power value.
*/
void ant_set_tx_power(int8_t power);
ant_broadcast_message_tx 函数实现了发送广播数据。
/**
* @brief Function for transmitting message with broadcast.
*
* @param channel_number channel number.
* @param data data of send.
* @param len data of length.
* @return uint8_t 0 SUCCESS, other FAIL.
*/
uint8_t ant_broadcast_message_tx(uint8_t channel_number, uint8_t *data, uint8_t len);
ant_acknowledge_message_tx 函数实现了发送确认数据。
/**
* @brief Function for transmitting message with acknowledge.
*
* @param channel_number channel number.
* @param data data of send.
* @param len data of length.
* @return uint8_t 0 SUCCESS, other FAIL.
*/
uint8_t ant_acknowledge_message_tx(uint8_t channel_number, uint8_t *data, uint8_t len);
ant_evt_handle_register 函数是回调注册函数,在系统初始时将利用此函数注册处理发送完成消息和接收消息的回调函数。
/**
* @brief Function for registering the event handler.
*
* @param evt Pointer to the event instance.
*/
void ant_evt_handle_register(panchip_ant_evt_observer_t *evt);
ant_get_channel_id 函数实现了获取当前通道的Channel ID。如果当前的通道时SLAVE时,我们在配对成功后就可以调用此函数来获取当前配对设备的Channel ID。
/**
* @brief Function for Getting the channel id of the specified channel.
*
* @param channel_num channel number.
* @param p_channel_config point to the channel struct.
*/
void ant_get_channel_id(uint8_t channel_num, ant_channel_config_t *p_channel_config);
ant_plus_key_set 函数实现了ANT+网络密钥的设置,此函数必须在通道打开前被调用。
/**
* @brief Function for set ant plus key.
*
* @param[in] network_number network number.
* @return uint8_t 0 SUCCESS, other FAIL.
*/
uint8_t ant_plus_key_set(uint8_t network_number);
ant_public_key_set 函数实现了公共网络密钥的设置,此函数必须在通道打开前被调用。
/**
* @brief Function for set ant public key.
*
* @param network_number network number.
* @return uint8_t 0 SUCCESS, other FAIL.
*/
uint8_t ant_public_key_set(uint8_t network_number);
5 ANT+开发流程¶
通常,开发一个ANT+的工程需要先建立一个自己的工程目录,可以把现有的ANT sample拷贝一份作为自己的工程目录。ANT+的sample放置在
samples_panchip/ant_plus
目录中。工程建好后,需要有profile支持,目前SDK提供了心率、踏频、功率、雷达四种profile,如果开发的设备不是这四种设备则需要自己开发一个profile,profile的开发详情请参照文档如何添加 ANT+ Profile进行。
profile建好之后,就可以在应用层添加自己的业务逻辑了。ANT+应用的使用请参照相关的sample文档进行。